From c22b2b8ccd93234db72de01155e02ee5e7f5baac Mon Sep 17 00:00:00 2001 From: Ugo Finnendahl Date: Mon, 14 Oct 2024 20:06:38 +0200 Subject: [PATCH] first version --- .editorconfig | 21 + .gitignore | 50 + .htaccess | 67 + README.md | 34 + assets/css/src/font.scss | 107 + assets/css/src/style.scss | 598 + assets/css/style.min.css | 1 + .../opensans/open-sans-v40-latin-300.woff2 | Bin 0 -> 18704 bytes .../open-sans-v40-latin-300italic.woff2 | Bin 0 -> 19332 bytes .../opensans/open-sans-v40-latin-500.woff2 | Bin 0 -> 18720 bytes .../open-sans-v40-latin-500italic.woff2 | Bin 0 -> 19332 bytes .../opensans/open-sans-v40-latin-600.woff2 | Bin 0 -> 18596 bytes .../open-sans-v40-latin-600italic.woff2 | Bin 0 -> 19328 bytes .../opensans/open-sans-v40-latin-700.woff2 | Bin 0 -> 18260 bytes .../open-sans-v40-latin-700italic.woff2 | Bin 0 -> 18860 bytes .../opensans/open-sans-v40-latin-800.woff2 | Bin 0 -> 18644 bytes .../open-sans-v40-latin-800italic.woff2 | Bin 0 -> 19056 bytes .../opensans/open-sans-v40-latin-italic.woff2 | Bin 0 -> 19280 bytes .../open-sans-v40-latin-regular.woff2 | Bin 0 -> 18668 bytes assets/img/YGDC.png | Bin 0 -> 548345 bytes assets/img/dart-board.svg | 21 + assets/img/dart.svg | 20 + assets/img/placeholder_person.png | Bin 0 -> 216568 bytes assets/img/watch.svg | 16 + assets/js/componentPromise.js | 105 + assets/js/components/dialog.js | 25 + assets/js/components/init.js | 22 + assets/js/components/inputElem.js | 17 + assets/js/components/list.js | 17 + assets/js/components/overlay.js | 14 + assets/js/components/plainElem.js | 16 + assets/js/components/playerElem.js | 23 + assets/js/components/playerselect.js | 29 + assets/js/components/squareElem.js | 22 + assets/js/handlers.js | 155 + assets/js/kirby.js | 152 + assets/js/stateMgr.js | 46 + assets/js/views/home.js | 229 + assets/js/views/xoi.js.bak | 499 + assets/js/views/xoi/logic.js | 463 + assets/js/views/xoi/main.js | 698 + assets/js/vue.esm-browser.js | 15444 ++++++++++++++++ assets/js/vueusecore.js | 8 + assets/js/websocket.js | 18 + composer.json | 40 + content/1_members/10_23/member.txt | 25 + ...atsapp-image-2024-02-26-at-22.54.05-3.jpeg | Bin 0 -> 296463 bytes ...pp-image-2024-02-26-at-22.54.05-3.jpeg.txt | 1 + content/1_members/11_8/member.txt | 25 + ...atsapp-image-2024-02-26-at-22.54.05-7.jpeg | Bin 0 -> 217653 bytes ...pp-image-2024-02-26-at-22.54.05-7.jpeg.txt | 1 + content/1_members/12_99/member.txt | 25 + ...atsapp-image-2024-02-26-at-22.54.05-1.jpeg | Bin 0 -> 305547 bytes ...pp-image-2024-02-26-at-22.54.05-1.jpeg.txt | 1 + content/1_members/13_9/member.txt | 25 + ...atsapp-image-2024-02-26-at-22.54.05-6.jpeg | Bin 0 -> 231922 bytes ...pp-image-2024-02-26-at-22.54.05-6.jpeg.txt | 1 + content/1_members/14_001/member.txt | 25 + content/1_members/15_14/member.txt | 25 + ...atsapp-image-2024-02-26-at-22.54.05-4.jpeg | Bin 0 -> 284102 bytes ...pp-image-2024-02-26-at-22.54.05-4.jpeg.txt | 1 + content/1_members/16_todo1/member.txt | 25 + content/1_members/17_51/member.txt | 25 + content/1_members/18_todo3/member.txt | 25 + content/1_members/19_4/member.txt | 25 + content/1_members/1_32/member.txt | 25 + content/1_members/20_7/member.txt | 25 + content/1_members/21_77/member.txt | 25 + content/1_members/22_285/member.txt | 25 + content/1_members/23_todo/member.txt | 25 + content/1_members/2_92/member.txt | 29 + ...atsapp-image-2024-02-26-at-22.54.05-2.jpeg | Bin 0 -> 259521 bytes ...pp-image-2024-02-26-at-22.54.05-2.jpeg.txt | 1 + content/1_members/3_45/member.txt | 25 + ...atsapp-image-2024-02-26-at-22.54.05-5.jpeg | Bin 0 -> 219412 bytes ...pp-image-2024-02-26-at-22.54.05-5.jpeg.txt | 1 + content/1_members/4_180/member.txt | 29 + ...atsapp-image-2024-02-26-at-22.54.05-8.jpeg | Bin 0 -> 227612 bytes ...pp-image-2024-02-26-at-22.54.05-8.jpeg.txt | 1 + content/1_members/5_57/member.txt | 25 + content/1_members/6_12/member.txt | 25 + content/1_members/7_26/member.txt | 25 + ...whatsapp-image-2024-02-26-at-22.54.05.jpeg | Bin 0 -> 983163 bytes ...sapp-image-2024-02-26-at-22.54.05.jpeg.txt | 1 + content/1_members/8_11/member.txt | 25 + content/1_members/9_13/member.txt | 25 + content/1_members/members.txt | 5 + .../1_summer-slam/54kd4kbk/xoi.txt | 52 + .../1_summer-slam/7nykca7i/xoi.txt | 52 + .../1_summer-slam/her1fj3r/xoi.txt | 52 + .../1_summer-slam/jm4ju7pi/xoi.txt | 52 + .../1_summer-slam/l0j8jkts/xoi.txt | 52 + .../1_summer-slam/lsng5wlg/xoi.txt | 52 + .../1_summer-slam/m7tb5bac/xoi.txt | 52 + .../1_summer-slam/mxkfs1yq/xoi.txt | 52 + .../1_summer-slam/osbkse46/xoi.txt | 52 + .../1_summer-slam/rtjuyvsv/xoi.txt | 52 + .../1_summer-slam/tournament.txt | 26 + .../1_summer-slam/z7nvffvf/xoi.txt | 52 + .../2_spring-break/13tntlfj/xoi.txt | 52 + .../2_spring-break/3flmnq6b/xoi.txt | 52 + .../2_spring-break/cbwvnzxm/xoi.txt | 52 + .../2_spring-break/cutywjod/xoi.txt | 52 + .../2_spring-break/kkchbr4a/xoi.txt | 52 + .../2_spring-break/ovcmf1c0/xoi.txt | 52 + .../2_spring-break/sbggpar6/xoi.txt | 52 + .../2_spring-break/tournament.txt | 24 + .../2_spring-break/utbpew7l/xoi.txt | 52 + .../2_spring-break/zxlkihnz/xoi.txt | 52 + .../1_season-2024/3_wm/1_1-runde/xoi.txt | 52 + .../1_season-2024/3_wm/2_2-runde/xoi.txt | 52 + .../1_season-2024/3_wm/3_3-runde/xoi.txt | 52 + .../1_season-2024/3_wm/tournament.txt | 18 + .../1_season-2024/4_liga/0tdcwlko/xoi.txt | 52 + .../1_season-2024/4_liga/1csevwpm/xoi.txt | 52 + .../1_season-2024/4_liga/5s62p5jp/xoi.txt | 52 + .../1_season-2024/4_liga/a4iulyd5/xoi.txt | 52 + .../1_season-2024/4_liga/a9z1tmvh/xoi.txt | 52 + .../1_season-2024/4_liga/anobo58l/xoi.txt | 52 + .../1_season-2024/4_liga/cqeaezmg/xoi.txt | 52 + .../1_season-2024/4_liga/eiwqlmue/xoi.txt | 52 + .../1_season-2024/4_liga/eqwdsia4/xoi.txt | 52 + .../1_season-2024/4_liga/gp3pj38u/xoi.txt | 52 + .../1_season-2024/4_liga/iat8cs7j/xoi.txt | 52 + .../1_season-2024/4_liga/ix1srhrk/xoi.txt | 52 + .../1_season-2024/4_liga/jajnvwbu/xoi.txt | 52 + .../1_season-2024/4_liga/kdcqpxs1/xoi.txt | 52 + .../1_season-2024/4_liga/lziuhybw/xoi.txt | 52 + .../1_season-2024/4_liga/mcjcgkbg/xoi.txt | 52 + .../1_season-2024/4_liga/ni9jxqdn/xoi.txt | 41 + .../1_season-2024/4_liga/olf1bjdm/xoi.txt | 52 + .../1_season-2024/4_liga/ovasmz7s/xoi.txt | 52 + .../1_season-2024/4_liga/sfln9xej/xoi.txt | 52 + .../1_season-2024/4_liga/sgl9kqvo/xoi.txt | 52 + .../1_season-2024/4_liga/tournament.txt | 41 + .../1_season-2024/4_liga/uslfpwja/xoi.txt | 52 + .../1_season-2024/4_liga/ut3juonn/xoi.txt | 52 + .../1_season-2024/4_liga/vmxmfxxs/xoi.txt | 52 + .../1_season-2024/4_liga/wksontke/xoi.txt | 52 + .../1_season-2024/4_liga/wuhzwter/xoi.txt | 52 + .../1_season-2024/4_liga/ypt4e90v/xoi.txt | 52 + .../1_season-2024/4_liga/zavij0ox/xoi.txt | 52 + content/2_seasons/1_season-2024/season.txt | 5 + content/2_seasons/seasons.txt | 5 + content/3_boards/boards.txt | 5 + content/error/error.txt | 5 + content/home/home.txt | 5 + content/site.txt | 1 + index.php | 5 + kirby/.editorconfig | 28 + kirby/CONTRIBUTING.md | 101 + kirby/LICENSE.md | 276 + kirby/README.md | 47 + kirby/SECURITY.md | 22 + kirby/assets/whoops.css | 83 + kirby/bootstrap.php | 36 + kirby/cacert.pem | 3534 ++++ kirby/composer.json | 113 + kirby/composer.lock | 1129 ++ kirby/config/aliases.php | 95 + kirby/config/api/authentication.php | 27 + kirby/config/api/collections.php | 78 + kirby/config/api/models.php | 21 + kirby/config/api/models/File.php | 119 + kirby/config/api/models/FileBlueprint.php | 17 + kirby/config/api/models/FileVersion.php | 59 + kirby/config/api/models/Language.php | 30 + kirby/config/api/models/License.php | 17 + kirby/config/api/models/Page.php | 96 + kirby/config/api/models/PageBlueprint.php | 20 + kirby/config/api/models/Role.php | 23 + kirby/config/api/models/Site.php | 52 + kirby/config/api/models/SiteBlueprint.php | 17 + kirby/config/api/models/System.php | 91 + kirby/config/api/models/Translation.php | 24 + kirby/config/api/models/User.php | 81 + kirby/config/api/models/UserBlueprint.php | 17 + kirby/config/api/routes.php | 29 + kirby/config/api/routes/auth.php | 116 + kirby/config/api/routes/files.php | 140 + kirby/config/api/routes/kql.php | 35 + kirby/config/api/routes/languages.php | 42 + kirby/config/api/routes/lock.php | 56 + kirby/config/api/routes/pages.php | 120 + kirby/config/api/routes/roles.php | 27 + kirby/config/api/routes/site.php | 102 + kirby/config/api/routes/system.php | 78 + kirby/config/api/routes/translations.php | 24 + kirby/config/api/routes/users.php | 211 + kirby/config/areas/account.php | 15 + kirby/config/areas/account/dialogs.php | 106 + kirby/config/areas/account/drawers.php | 19 + kirby/config/areas/account/dropdowns.php | 14 + kirby/config/areas/account/views.php | 32 + kirby/config/areas/fields/dialogs.php | 61 + kirby/config/areas/fields/drawers.php | 61 + kirby/config/areas/files/dialogs.php | 172 + kirby/config/areas/files/dropdowns.php | 9 + kirby/config/areas/installation.php | 40 + kirby/config/areas/lab.php | 11 + kirby/config/areas/lab/drawers.php | 30 + kirby/config/areas/lab/views.php | 138 + kirby/config/areas/languages.php | 13 + kirby/config/areas/languages/dialogs.php | 266 + kirby/config/areas/languages/views.php | 122 + kirby/config/areas/login.php | 44 + kirby/config/areas/logout.php | 21 + kirby/config/areas/search.php | 11 + kirby/config/areas/search/views.php | 17 + kirby/config/areas/site.php | 20 + kirby/config/areas/site/dialogs.php | 642 + kirby/config/areas/site/drawers.php | 33 + kirby/config/areas/site/dropdowns.php | 21 + kirby/config/areas/site/requests.php | 66 + kirby/config/areas/site/searches.php | 56 + kirby/config/areas/site/views.php | 27 + kirby/config/areas/system.php | 13 + kirby/config/areas/system/dialogs.php | 113 + kirby/config/areas/system/views.php | 100 + kirby/config/areas/users.php | 17 + kirby/config/areas/users/dialogs.php | 346 + kirby/config/areas/users/drawers.php | 18 + kirby/config/areas/users/dropdowns.php | 18 + kirby/config/areas/users/searches.php | 29 + kirby/config/areas/users/views.php | 70 + kirby/config/blocks/code/code.php | 2 + kirby/config/blocks/code/code.yml | 59 + kirby/config/blocks/gallery/gallery.php | 20 + kirby/config/blocks/gallery/gallery.yml | 40 + kirby/config/blocks/heading/heading.php | 2 + kirby/config/blocks/heading/heading.yml | 35 + kirby/config/blocks/image/image.php | 35 + kirby/config/blocks/image/image.yml | 60 + kirby/config/blocks/line/line.php | 1 + kirby/config/blocks/line/line.yml | 4 + kirby/config/blocks/list/list.php | 2 + kirby/config/blocks/list/list.yml | 8 + kirby/config/blocks/markdown/markdown.php | 2 + kirby/config/blocks/markdown/markdown.yml | 11 + kirby/config/blocks/quote/quote.php | 9 + kirby/config/blocks/quote/quote.yml | 17 + kirby/config/blocks/table/table.yml | 3 + kirby/config/blocks/text/text.php | 2 + kirby/config/blocks/text/text.yml | 9 + kirby/config/blocks/video/video.php | 13 + kirby/config/blocks/video/video.yml | 12 + kirby/config/components.php | 427 + kirby/config/fields/checkboxes.php | 61 + kirby/config/fields/color.php | 98 + kirby/config/fields/date.php | 154 + kirby/config/fields/email.php | 40 + kirby/config/fields/files.php | 141 + kirby/config/fields/gap.php | 5 + kirby/config/fields/headline.php | 19 + kirby/config/fields/hidden.php | 5 + kirby/config/fields/info.php | 43 + kirby/config/fields/line.php | 5 + kirby/config/fields/link.php | 156 + kirby/config/fields/list.php | 23 + kirby/config/fields/mixins/datetime.php | 35 + kirby/config/fields/mixins/filepicker.php | 14 + kirby/config/fields/mixins/layout.php | 21 + kirby/config/fields/mixins/min.php | 22 + kirby/config/fields/mixins/options.php | 47 + kirby/config/fields/mixins/pagepicker.php | 14 + kirby/config/fields/mixins/picker.php | 88 + kirby/config/fields/mixins/upload.php | 87 + kirby/config/fields/mixins/userpicker.php | 13 + kirby/config/fields/multiselect.php | 35 + kirby/config/fields/number.php | 48 + kirby/config/fields/object.php | 104 + kirby/config/fields/pages.php | 111 + kirby/config/fields/radio.php | 29 + kirby/config/fields/range.php | 24 + kirby/config/fields/select.php | 37 + kirby/config/fields/slug.php | 55 + kirby/config/fields/structure.php | 225 + kirby/config/fields/tags.php | 106 + kirby/config/fields/tel.php | 27 + kirby/config/fields/text.php | 109 + kirby/config/fields/textarea.php | 123 + kirby/config/fields/time.php | 126 + kirby/config/fields/toggle.php | 73 + kirby/config/fields/toggles.php | 41 + kirby/config/fields/url.php | 42 + kirby/config/fields/users.php | 107 + kirby/config/fields/writer.php | 93 + kirby/config/helpers.php | 690 + kirby/config/methods.php | 619 + kirby/config/presets/files.php | 27 + kirby/config/presets/page.php | 74 + kirby/config/presets/pages.php | 58 + kirby/config/routes.php | 195 + kirby/config/sections/fields.php | 62 + kirby/config/sections/files.php | 227 + kirby/config/sections/info.php | 37 + kirby/config/sections/mixins/details.php | 36 + kirby/config/sections/mixins/empty.php | 21 + kirby/config/sections/mixins/headline.php | 36 + kirby/config/sections/mixins/help.php | 23 + kirby/config/sections/mixins/layout.php | 129 + kirby/config/sections/mixins/max.php | 28 + kirby/config/sections/mixins/min.php | 21 + kirby/config/sections/mixins/pagination.php | 37 + kirby/config/sections/mixins/parent.php | 47 + kirby/config/sections/mixins/search.php | 19 + kirby/config/sections/mixins/sort.php | 57 + kirby/config/sections/pages.php | 302 + kirby/config/sections/stats.php | 67 + kirby/config/setup.php | 31 + kirby/config/tags.php | 321 + kirby/config/templates/emails/auth/login.php | 16 + .../templates/emails/auth/password-reset.php | 16 + .../parsedown-extra/ParsedownExtra.php | 637 + kirby/dependencies/parsedown/Parsedown.php | 1818 ++ kirby/dependencies/spyc/COPYING | 21 + kirby/dependencies/spyc/Spyc.php | 1196 ++ kirby/i18n/rules/LICENSE | 9 + kirby/i18n/rules/ar.json | 30 + kirby/i18n/rules/az.json | 16 + kirby/i18n/rules/bg.json | 65 + kirby/i18n/rules/cs.json | 20 + kirby/i18n/rules/da.json | 10 + kirby/i18n/rules/de.json | 9 + kirby/i18n/rules/el.json | 111 + kirby/i18n/rules/eo.json | 14 + kirby/i18n/rules/et.json | 14 + kirby/i18n/rules/fa.json | 36 + kirby/i18n/rules/fi.json | 6 + kirby/i18n/rules/fr.json | 34 + kirby/i18n/rules/hi.json | 66 + kirby/i18n/rules/hr.json | 12 + kirby/i18n/rules/hu.json | 20 + kirby/i18n/rules/hy.json | 79 + kirby/i18n/rules/is_IS.json | 22 + kirby/i18n/rules/it.json | 13 + kirby/i18n/rules/iu.json | 163 + kirby/i18n/rules/ja.json | 182 + kirby/i18n/rules/ka.json | 35 + kirby/i18n/rules/ko.json | 11174 +++++++++++ kirby/i18n/rules/lt.json | 20 + kirby/i18n/rules/lv.json | 18 + kirby/i18n/rules/mk.json | 64 + kirby/i18n/rules/my.json | 121 + kirby/i18n/rules/nb.json | 8 + kirby/i18n/rules/pl.json | 20 + kirby/i18n/rules/pt_BR.json | 187 + kirby/i18n/rules/ro.json | 16 + kirby/i18n/rules/ru.json | 68 + kirby/i18n/rules/sr.json | 72 + kirby/i18n/rules/sv_SE.json | 8 + kirby/i18n/rules/tr.json | 14 + kirby/i18n/rules/uk.json | 10 + kirby/i18n/rules/vi.json | 135 + kirby/i18n/rules/zh.json | 6937 +++++++ kirby/i18n/translations/bg.json | 722 + kirby/i18n/translations/ca.json | 722 + kirby/i18n/translations/cs.json | 722 + kirby/i18n/translations/da.json | 722 + kirby/i18n/translations/de.json | 722 + kirby/i18n/translations/el.json | 722 + kirby/i18n/translations/en.json | 722 + kirby/i18n/translations/eo.json | 722 + kirby/i18n/translations/es_419.json | 722 + kirby/i18n/translations/es_ES.json | 722 + kirby/i18n/translations/fa.json | 722 + kirby/i18n/translations/fi.json | 722 + kirby/i18n/translations/fr.json | 722 + kirby/i18n/translations/hu.json | 722 + kirby/i18n/translations/id.json | 722 + kirby/i18n/translations/is_IS.json | 722 + kirby/i18n/translations/it.json | 722 + kirby/i18n/translations/ko.json | 722 + kirby/i18n/translations/lt.json | 722 + kirby/i18n/translations/nb.json | 722 + kirby/i18n/translations/nl.json | 722 + kirby/i18n/translations/pl.json | 722 + kirby/i18n/translations/pt_BR.json | 722 + kirby/i18n/translations/pt_PT.json | 722 + kirby/i18n/translations/ro.json | 722 + kirby/i18n/translations/ru.json | 722 + kirby/i18n/translations/sk.json | 722 + kirby/i18n/translations/sv_SE.json | 722 + kirby/i18n/translations/tr.json | 722 + kirby/kirby.pub | 9 + kirby/package-lock.json | 6 + kirby/panel/dist/apple-touch-icon.png | Bin 0 -> 4115 bytes kirby/panel/dist/css/style.min.css | 1 + kirby/panel/dist/favicon.png | Bin 0 -> 539 bytes kirby/panel/dist/favicon.svg | 9 + kirby/panel/dist/img/icons.svg | 645 + kirby/panel/dist/js/Docs.min.js | 1 + kirby/panel/dist/js/DocsView.min.js | 1 + kirby/panel/dist/js/Highlight.min.js | 1 + kirby/panel/dist/js/IndexView.min.js | 1 + kirby/panel/dist/js/PlaygroundView.min.js | 1 + .../js/container-query-polyfill.modern.min.js | 1 + kirby/panel/dist/js/index.min.js | 1 + kirby/panel/dist/js/plugins.js | 91 + kirby/panel/dist/js/vendor.min.js | 16 + kirby/panel/dist/js/vue.min.js | 11 + kirby/panel/dist/js/vuedraggable.min.js | 7 + kirby/router.php | 14 + kirby/src/Api/Api.php | 730 + kirby/src/Api/Collection.php | 153 + kirby/src/Api/Model.php | 223 + kirby/src/Blueprint/Collection.php | 97 + kirby/src/Blueprint/Config.php | 75 + kirby/src/Blueprint/Extension.php | 65 + kirby/src/Blueprint/Factory.php | 119 + kirby/src/Blueprint/Node.php | 117 + kirby/src/Blueprint/NodeI18n.php | 44 + kirby/src/Blueprint/NodeIcon.php | 27 + kirby/src/Blueprint/NodeProperty.php | 27 + kirby/src/Blueprint/NodeString.php | 39 + kirby/src/Blueprint/NodeText.php | 30 + kirby/src/Cache/ApcuCache.php | 83 + kirby/src/Cache/Cache.php | 238 + kirby/src/Cache/FileCache.php | 227 + kirby/src/Cache/MemCached.php | 106 + kirby/src/Cache/MemoryCache.php | 77 + kirby/src/Cache/NullCache.php | 65 + kirby/src/Cache/Value.php | 137 + kirby/src/Cms/Api.php | 236 + kirby/src/Cms/App.php | 1710 ++ kirby/src/Cms/AppCaches.php | 131 + kirby/src/Cms/AppErrors.php | 216 + kirby/src/Cms/AppPlugins.php | 800 + kirby/src/Cms/AppTranslations.php | 202 + kirby/src/Cms/AppUsers.php | 134 + kirby/src/Cms/Auth.php | 928 + kirby/src/Cms/Auth/Challenge.php | 65 + kirby/src/Cms/Auth/EmailChallenge.php | 76 + kirby/src/Cms/Auth/Status.php | 160 + kirby/src/Cms/Auth/TotpChallenge.php | 65 + kirby/src/Cms/Block.php | 245 + kirby/src/Cms/BlockConverter.php | 285 + kirby/src/Cms/Blocks.php | 167 + kirby/src/Cms/Blueprint.php | 755 + kirby/src/Cms/Collection.php | 383 + kirby/src/Cms/Collections.php | 125 + kirby/src/Cms/ContentLock.php | 222 + kirby/src/Cms/ContentLocks.php | 210 + kirby/src/Cms/Core.php | 454 + kirby/src/Cms/Email.php | 240 + kirby/src/Cms/Event.php | 253 + kirby/src/Cms/Fieldset.php | 230 + kirby/src/Cms/Fieldsets.php | 113 + kirby/src/Cms/File.php | 717 + kirby/src/Cms/FileActions.php | 430 + kirby/src/Cms/FileBlueprint.php | 183 + kirby/src/Cms/FileModifications.php | 206 + kirby/src/Cms/FilePermissions.php | 26 + kirby/src/Cms/FilePicker.php | 74 + kirby/src/Cms/FileRules.php | 343 + kirby/src/Cms/FileVersion.php | 120 + kirby/src/Cms/Files.php | 176 + kirby/src/Cms/Find.php | 175 + kirby/src/Cms/HasChildren.php | 201 + kirby/src/Cms/HasFiles.php | 189 + kirby/src/Cms/HasMethods.php | 70 + kirby/src/Cms/HasSiblings.php | 153 + kirby/src/Cms/Helpers.php | 180 + kirby/src/Cms/Html.php | 164 + kirby/src/Cms/Ingredients.php | 82 + kirby/src/Cms/Item.php | 118 + kirby/src/Cms/Items.php | 100 + kirby/src/Cms/Language.php | 572 + kirby/src/Cms/LanguageRouter.php | 125 + kirby/src/Cms/LanguageRoutes.php | 156 + kirby/src/Cms/LanguageRules.php | 90 + kirby/src/Cms/LanguageVariable.php | 122 + kirby/src/Cms/Languages.php | 94 + kirby/src/Cms/Layout.php | 105 + kirby/src/Cms/LayoutColumn.php | 120 + kirby/src/Cms/LayoutColumns.php | 23 + kirby/src/Cms/Layouts.php | 120 + kirby/src/Cms/License.php | 523 + kirby/src/Cms/LicenseStatus.php | 127 + kirby/src/Cms/LicenseType.php | 111 + kirby/src/Cms/Loader.php | 217 + kirby/src/Cms/Media.php | 175 + kirby/src/Cms/Model.php | 117 + kirby/src/Cms/ModelPermissions.php | 116 + kirby/src/Cms/ModelWithContent.php | 822 + kirby/src/Cms/Nest.php | 49 + kirby/src/Cms/NestCollection.php | 28 + kirby/src/Cms/NestObject.php | 45 + kirby/src/Cms/Page.php | 1321 ++ kirby/src/Cms/PageActions.php | 989 + kirby/src/Cms/PageBlueprint.php | 193 + kirby/src/Cms/PagePermissions.php | 67 + kirby/src/Cms/PagePicker.php | 224 + kirby/src/Cms/PageRules.php | 518 + kirby/src/Cms/PageSiblings.php | 131 + kirby/src/Cms/Pages.php | 495 + kirby/src/Cms/Pagination.php | 166 + kirby/src/Cms/Permissions.php | 212 + kirby/src/Cms/Picker.php | 148 + kirby/src/Cms/Plugin.php | 327 + kirby/src/Cms/PluginAsset.php | 120 + kirby/src/Cms/PluginAssets.php | 184 + kirby/src/Cms/R.php | 23 + kirby/src/Cms/Responder.php | 406 + kirby/src/Cms/Response.php | 28 + kirby/src/Cms/Role.php | 149 + kirby/src/Cms/Roles.php | 140 + kirby/src/Cms/S.php | 23 + kirby/src/Cms/Search.php | 51 + kirby/src/Cms/Section.php | 86 + kirby/src/Cms/Site.php | 508 + kirby/src/Cms/SiteActions.php | 96 + kirby/src/Cms/SiteBlueprint.php | 56 + kirby/src/Cms/SitePermissions.php | 17 + kirby/src/Cms/SiteRules.php | 52 + kirby/src/Cms/Structure.php | 49 + kirby/src/Cms/StructureObject.php | 85 + kirby/src/Cms/System.php | 511 + kirby/src/Cms/System/UpdateStatus.php | 783 + kirby/src/Cms/Translation.php | 156 + kirby/src/Cms/Translations.php | 56 + kirby/src/Cms/Url.php | 63 + kirby/src/Cms/User.php | 765 + kirby/src/Cms/UserActions.php | 448 + kirby/src/Cms/UserBlueprint.php | 46 + kirby/src/Cms/UserPermissions.php | 51 + kirby/src/Cms/UserPicker.php | 67 + kirby/src/Cms/UserRules.php | 384 + kirby/src/Cms/Users.php | 159 + kirby/src/Cms/Visitor.php | 23 + kirby/src/Content/Content.php | 248 + kirby/src/Content/ContentStorage.php | 314 + kirby/src/Content/ContentStorageHandler.php | 96 + kirby/src/Content/ContentTranslation.php | 173 + kirby/src/Content/Field.php | 220 + .../PlainTextContentStorageHandler.php | 253 + kirby/src/Data/Data.php | 118 + kirby/src/Data/Handler.php | 54 + kirby/src/Data/Json.php | 54 + kirby/src/Data/PHP.php | 82 + kirby/src/Data/Txt.php | 130 + kirby/src/Data/Xml.php | 58 + kirby/src/Data/Yaml.php | 62 + kirby/src/Data/YamlSpyc.php | 43 + kirby/src/Data/YamlSymfony.php | 44 + kirby/src/Database/Database.php | 587 + kirby/src/Database/Db.php | 293 + kirby/src/Database/Query.php | 942 + kirby/src/Database/Sql.php | 879 + kirby/src/Database/Sql/Mysql.php | 56 + kirby/src/Database/Sql/Sqlite.php | 135 + kirby/src/Email/Body.php | 71 + kirby/src/Email/Email.php | 296 + kirby/src/Email/PHPMailer.php | 112 + kirby/src/Exception/AuthException.php | 21 + .../src/Exception/BadMethodCallException.php | 21 + kirby/src/Exception/DuplicateException.php | 21 + kirby/src/Exception/ErrorPageException.php | 21 + kirby/src/Exception/Exception.php | 207 + .../Exception/InvalidArgumentException.php | 21 + kirby/src/Exception/LogicException.php | 20 + kirby/src/Exception/NotFoundException.php | 20 + kirby/src/Exception/PermissionException.php | 21 + kirby/src/Field/FieldOptions.php | 108 + kirby/src/Filesystem/Asset.php | 118 + kirby/src/Filesystem/Dir.php | 605 + kirby/src/Filesystem/F.php | 931 + kirby/src/Filesystem/File.php | 557 + kirby/src/Filesystem/Filename.php | 258 + kirby/src/Filesystem/IsFile.php | 155 + kirby/src/Filesystem/Mime.php | 323 + kirby/src/Form/Field.php | 510 + kirby/src/Form/Field/BlocksField.php | 352 + kirby/src/Form/Field/LayoutField.php | 365 + kirby/src/Form/FieldClass.php | 646 + kirby/src/Form/Fields.php | 52 + kirby/src/Form/Form.php | 355 + kirby/src/Form/Mixin/EmptyState.php | 18 + kirby/src/Form/Mixin/Max.php | 18 + kirby/src/Form/Mixin/Min.php | 18 + kirby/src/Form/Validations.php | 272 + kirby/src/Http/Cookie.php | 234 + kirby/src/Http/Environment.php | 1009 + .../Http/Exceptions/NextRouteException.php | 16 + kirby/src/Http/Header.php | 313 + kirby/src/Http/Idn.php | 63 + kirby/src/Http/Params.php | 156 + kirby/src/Http/Path.php | 49 + kirby/src/Http/Query.php | 59 + kirby/src/Http/Remote.php | 361 + kirby/src/Http/Request.php | 426 + kirby/src/Http/Request/Auth.php | 48 + kirby/src/Http/Request/Auth/BasicAuth.php | 66 + kirby/src/Http/Request/Auth/BearerAuth.php | 33 + kirby/src/Http/Request/Auth/SessionAuth.php | 43 + kirby/src/Http/Request/Body.php | 115 + kirby/src/Http/Request/Data.php | 73 + kirby/src/Http/Request/Files.php | 63 + kirby/src/Http/Request/Query.php | 84 + kirby/src/Http/Response.php | 319 + kirby/src/Http/Route.php | 192 + kirby/src/Http/Router.php | 198 + kirby/src/Http/Uri.php | 514 + kirby/src/Http/Url.php | 249 + kirby/src/Http/Visitor.php | 229 + kirby/src/Image/Camera.php | 68 + kirby/src/Image/Darkroom.php | 141 + kirby/src/Image/Darkroom/GdLib.php | 130 + kirby/src/Image/Darkroom/ImageMagick.php | 239 + kirby/src/Image/Dimensions.php | 409 + kirby/src/Image/Exif.php | 200 + kirby/src/Image/Focus.php | 110 + kirby/src/Image/Image.php | 222 + kirby/src/Image/Location.php | 116 + kirby/src/Image/QrCode.php | 1603 ++ kirby/src/Option/Option.php | 64 + kirby/src/Option/Options.php | 57 + kirby/src/Option/OptionsApi.php | 148 + kirby/src/Option/OptionsProvider.php | 38 + kirby/src/Option/OptionsQuery.php | 184 + kirby/src/Panel/Assets.php | 298 + kirby/src/Panel/ChangesDialog.php | 71 + kirby/src/Panel/Dialog.php | 72 + kirby/src/Panel/Document.php | 72 + kirby/src/Panel/Drawer.php | 21 + kirby/src/Panel/Dropdown.php | 71 + kirby/src/Panel/Field.php | 292 + kirby/src/Panel/File.php | 493 + kirby/src/Panel/Home.php | 255 + kirby/src/Panel/Json.php | 84 + kirby/src/Panel/Lab/Category.php | 134 + kirby/src/Panel/Lab/Docs.php | 340 + kirby/src/Panel/Lab/Example.php | 271 + kirby/src/Panel/Lab/Snippet.php | 26 + kirby/src/Panel/Lab/Template.php | 34 + kirby/src/Panel/Menu.php | 221 + kirby/src/Panel/Model.php | 421 + kirby/src/Panel/Page.php | 369 + kirby/src/Panel/PageCreateDialog.php | 313 + kirby/src/Panel/Panel.php | 593 + kirby/src/Panel/Plugins.php | 139 + kirby/src/Panel/Redirect.php | 42 + kirby/src/Panel/Request.php | 24 + kirby/src/Panel/Search.php | 41 + kirby/src/Panel/Site.php | 91 + kirby/src/Panel/User.php | 271 + kirby/src/Panel/UserTotpDisableDialog.php | 114 + kirby/src/Panel/UserTotpEnableDialog.php | 95 + kirby/src/Panel/View.php | 384 + kirby/src/Parsley/Element.php | 159 + kirby/src/Parsley/Inline.php | 161 + kirby/src/Parsley/Parsley.php | 300 + kirby/src/Parsley/Schema.php | 53 + kirby/src/Parsley/Schema/Blocks.php | 371 + kirby/src/Parsley/Schema/Plain.php | 64 + kirby/src/Query/Argument.php | 117 + kirby/src/Query/Arguments.php | 59 + kirby/src/Query/Expression.php | 119 + kirby/src/Query/Query.php | 142 + kirby/src/Query/Segment.php | 182 + kirby/src/Query/Segments.php | 100 + kirby/src/Sane/DomHandler.php | 171 + kirby/src/Sane/Handler.php | 84 + kirby/src/Sane/Html.php | 126 + kirby/src/Sane/Sane.php | 211 + kirby/src/Sane/Svg.php | 501 + kirby/src/Sane/Svgz.php | 70 + kirby/src/Sane/Xml.php | 72 + kirby/src/Session/AutoSession.php | 168 + kirby/src/Session/FileSessionStore.php | 473 + kirby/src/Session/Session.php | 811 + kirby/src/Session/SessionData.php | 213 + kirby/src/Session/SessionStore.php | 103 + kirby/src/Session/Sessions.php | 261 + kirby/src/Template/Slot.php | 123 + kirby/src/Template/Slots.php | 54 + kirby/src/Template/Snippet.php | 308 + kirby/src/Template/Template.php | 216 + kirby/src/Text/KirbyTag.php | 240 + kirby/src/Text/KirbyTags.php | 63 + kirby/src/Text/Markdown.php | 70 + kirby/src/Text/SmartyPants.php | 119 + kirby/src/Toolkit/A.php | 968 + kirby/src/Toolkit/Collection.php | 1483 ++ kirby/src/Toolkit/Component.php | 278 + kirby/src/Toolkit/Config.php | 18 + kirby/src/Toolkit/Controller.php | 77 + kirby/src/Toolkit/Date.php | 528 + kirby/src/Toolkit/Dom.php | 934 + kirby/src/Toolkit/Escape.php | 140 + kirby/src/Toolkit/Facade.php | 30 + kirby/src/Toolkit/Html.php | 658 + kirby/src/Toolkit/I18n.php | 333 + kirby/src/Toolkit/Iterator.php | 153 + kirby/src/Toolkit/LazyValue.php | 48 + kirby/src/Toolkit/Locale.php | 185 + kirby/src/Toolkit/Obj.php | 105 + kirby/src/Toolkit/Pagination.php | 398 + kirby/src/Toolkit/Properties.php | 152 + kirby/src/Toolkit/Silo.php | 58 + kirby/src/Toolkit/Str.php | 1495 ++ kirby/src/Toolkit/SymmetricCrypto.php | 216 + kirby/src/Toolkit/Totp.php | 144 + kirby/src/Toolkit/Tpl.php | 50 + kirby/src/Toolkit/V.php | 629 + kirby/src/Toolkit/View.php | 107 + kirby/src/Toolkit/Xml.php | 439 + kirby/src/Uuid/BlockUuid.php | 39 + kirby/src/Uuid/FieldUuid.php | 131 + kirby/src/Uuid/FileUuid.php | 86 + kirby/src/Uuid/HasUuids.php | 37 + kirby/src/Uuid/Identifiable.php | 21 + kirby/src/Uuid/ModelUuid.php | 124 + kirby/src/Uuid/PageUuid.php | 57 + kirby/src/Uuid/SiteUuid.php | 79 + kirby/src/Uuid/StructureUuid.php | 39 + kirby/src/Uuid/Uri.php | 94 + kirby/src/Uuid/UserUuid.php | 63 + kirby/src/Uuid/Uuid.php | 400 + kirby/src/Uuid/Uuids.php | 122 + kirby/vendor/autoload.php | 25 + kirby/vendor/bin/yaml-lint | 119 + kirby/vendor/christian-riesen/base32/LICENSE | 19 + .../christian-riesen/base32/src/Base32.php | 168 + .../christian-riesen/base32/src/Base32Hex.php | 68 + kirby/vendor/claviska/simpleimage/LICENSE.md | 7 + .../vendor/claviska/simpleimage/composer.json | 26 + .../vendor/claviska/simpleimage/composer.lock | 209 + .../simpleimage/src/claviska/SimpleImage.php | 2385 +++ kirby/vendor/composer/ClassLoader.php | 579 + kirby/vendor/composer/InstalledVersions.php | 359 + kirby/vendor/composer/LICENSE | 21 + kirby/vendor/composer/autoload_classmap.php | 414 + kirby/vendor/composer/autoload_files.php | 16 + kirby/vendor/composer/autoload_namespaces.php | 11 + kirby/vendor/composer/autoload_psr4.php | 22 + kirby/vendor/composer/autoload_real.php | 48 + kirby/vendor/composer/autoload_static.php | 547 + kirby/vendor/composer/installed.json | 1148 ++ kirby/vendor/composer/installed.php | 179 + kirby/vendor/composer/semver/LICENSE | 19 + kirby/vendor/composer/semver/composer.json | 59 + .../composer/semver/phpstan-baseline.neon | 11 + .../vendor/composer/semver/src/Comparator.php | 113 + .../composer/semver/src/CompilingMatcher.php | 94 + .../composer/semver/src/Constraint/Bound.php | 122 + .../semver/src/Constraint/Constraint.php | 435 + .../src/Constraint/ConstraintInterface.php | 75 + .../src/Constraint/MatchAllConstraint.php | 85 + .../src/Constraint/MatchNoneConstraint.php | 83 + .../semver/src/Constraint/MultiConstraint.php | 325 + kirby/vendor/composer/semver/src/Interval.php | 98 + .../vendor/composer/semver/src/Intervals.php | 478 + kirby/vendor/composer/semver/src/Semver.php | 129 + .../composer/semver/src/VersionParser.php | 586 + kirby/vendor/filp/whoops/LICENSE.md | 19 + kirby/vendor/filp/whoops/composer.json | 45 + .../src/Whoops/Exception/ErrorException.php | 17 + .../whoops/src/Whoops/Exception/Formatter.php | 77 + .../whoops/src/Whoops/Exception/Frame.php | 311 + .../src/Whoops/Exception/FrameCollection.php | 219 + .../whoops/src/Whoops/Exception/Inspector.php | 341 + .../src/Whoops/Handler/CallbackHandler.php | 52 + .../whoops/src/Whoops/Handler/Handler.php | 95 + .../src/Whoops/Handler/HandlerInterface.php | 36 + .../Whoops/Handler/JsonResponseHandler.php | 90 + .../src/Whoops/Handler/PlainTextHandler.php | 359 + .../src/Whoops/Handler/PrettyPageHandler.php | 832 + .../src/Whoops/Handler/XmlResponseHandler.php | 108 + .../src/Whoops/Inspector/InspectorFactory.php | 21 + .../Inspector/InspectorFactoryInterface.php | 16 + .../Whoops/Inspector/InspectorInterface.php | 71 + .../whoops/src/Whoops/Resources/css/prism.css | 5 + .../src/Whoops/Resources/css/whoops.base.css | 560 + .../src/Whoops/Resources/js/clipboard.min.js | 7 + .../whoops/src/Whoops/Resources/js/prism.js | 8 + .../src/Whoops/Resources/js/whoops.base.js | 188 + .../src/Whoops/Resources/js/zepto.min.js | 2 + .../Resources/views/env_details.html.php | 42 + .../Resources/views/frame_code.html.php | 67 + .../Resources/views/frame_list.html.php | 17 + .../Resources/views/frames_container.html.php | 3 + .../views/frames_description.html.php | 14 + .../Whoops/Resources/views/header.html.php | 96 + .../Resources/views/header_outer.html.php | 3 + .../Whoops/Resources/views/layout.html.php | 34 + .../Resources/views/panel_details.html.php | 2 + .../views/panel_details_outer.html.php | 3 + .../Resources/views/panel_left.html.php | 4 + .../Resources/views/panel_left_outer.html.php | 3 + kirby/vendor/filp/whoops/src/Whoops/Run.php | 597 + .../filp/whoops/src/Whoops/RunInterface.php | 158 + .../src/Whoops/Util/HtmlDumperOutput.php | 36 + .../filp/whoops/src/Whoops/Util/Misc.php | 77 + .../whoops/src/Whoops/Util/SystemFacade.php | 144 + .../whoops/src/Whoops/Util/TemplateHelper.php | 349 + .../laminas/laminas-escaper/COPYRIGHT.md | 1 + .../vendor/laminas/laminas-escaper/LICENSE.md | 26 + .../laminas/laminas-escaper/composer.json | 68 + .../laminas/laminas-escaper/src/Escaper.php | 424 + .../src/Exception/ExceptionInterface.php | 11 + .../Exception/InvalidArgumentException.php | 13 + .../src/Exception/RuntimeException.php | 13 + kirby/vendor/league/color-extractor/LICENSE | 21 + .../league/color-extractor/composer.json | 40 + .../league/color-extractor/src/Color.php | 51 + .../color-extractor/src/ColorExtractor.php | 282 + .../league/color-extractor/src/Palette.php | 180 + .../vendor/michelf/php-smartypants/License.md | 36 + .../Michelf/SmartyPants.inc.php | 9 + .../php-smartypants/Michelf/SmartyPants.php | 560 + .../Michelf/SmartyPantsTypographer.inc.php | 10 + .../Michelf/SmartyPantsTypographer.php | 486 + .../michelf/php-smartypants/composer.json | 26 + kirby/vendor/phpmailer/phpmailer/LICENSE | 502 + .../vendor/phpmailer/phpmailer/composer.json | 79 + .../phpmailer/phpmailer/get_oauth_token.php | 182 + .../phpmailer/language/phpmailer.lang-af.php | 26 + .../phpmailer/language/phpmailer.lang-ar.php | 27 + .../phpmailer/language/phpmailer.lang-as.php | 35 + .../phpmailer/language/phpmailer.lang-az.php | 27 + .../phpmailer/language/phpmailer.lang-ba.php | 27 + .../phpmailer/language/phpmailer.lang-be.php | 27 + .../phpmailer/language/phpmailer.lang-bg.php | 27 + .../phpmailer/language/phpmailer.lang-bn.php | 35 + .../phpmailer/language/phpmailer.lang-ca.php | 27 + .../phpmailer/language/phpmailer.lang-cs.php | 28 + .../phpmailer/language/phpmailer.lang-da.php | 36 + .../phpmailer/language/phpmailer.lang-de.php | 28 + .../phpmailer/language/phpmailer.lang-el.php | 33 + .../phpmailer/language/phpmailer.lang-eo.php | 26 + .../phpmailer/language/phpmailer.lang-es.php | 31 + .../phpmailer/language/phpmailer.lang-et.php | 28 + .../phpmailer/language/phpmailer.lang-fa.php | 28 + .../phpmailer/language/phpmailer.lang-fi.php | 27 + .../phpmailer/language/phpmailer.lang-fo.php | 27 + .../phpmailer/language/phpmailer.lang-fr.php | 37 + .../phpmailer/language/phpmailer.lang-gl.php | 27 + .../phpmailer/language/phpmailer.lang-he.php | 27 + .../phpmailer/language/phpmailer.lang-hi.php | 35 + .../phpmailer/language/phpmailer.lang-hr.php | 27 + .../phpmailer/language/phpmailer.lang-hu.php | 27 + .../phpmailer/language/phpmailer.lang-hy.php | 27 + .../phpmailer/language/phpmailer.lang-id.php | 31 + .../phpmailer/language/phpmailer.lang-it.php | 28 + .../phpmailer/language/phpmailer.lang-ja.php | 29 + .../phpmailer/language/phpmailer.lang-ka.php | 27 + .../phpmailer/language/phpmailer.lang-ko.php | 27 + .../phpmailer/language/phpmailer.lang-lt.php | 27 + .../phpmailer/language/phpmailer.lang-lv.php | 27 + .../phpmailer/language/phpmailer.lang-mg.php | 27 + .../phpmailer/language/phpmailer.lang-mn.php | 27 + .../phpmailer/language/phpmailer.lang-ms.php | 27 + .../phpmailer/language/phpmailer.lang-nb.php | 33 + .../phpmailer/language/phpmailer.lang-nl.php | 34 + .../phpmailer/language/phpmailer.lang-pl.php | 33 + .../phpmailer/language/phpmailer.lang-pt.php | 27 + .../language/phpmailer.lang-pt_br.php | 38 + .../phpmailer/language/phpmailer.lang-ro.php | 33 + .../phpmailer/language/phpmailer.lang-ru.php | 28 + .../phpmailer/language/phpmailer.lang-si.php | 34 + .../phpmailer/language/phpmailer.lang-sk.php | 30 + .../phpmailer/language/phpmailer.lang-sl.php | 36 + .../phpmailer/language/phpmailer.lang-sr.php | 28 + .../language/phpmailer.lang-sr_latn.php | 28 + .../phpmailer/language/phpmailer.lang-sv.php | 27 + .../phpmailer/language/phpmailer.lang-tl.php | 28 + .../phpmailer/language/phpmailer.lang-tr.php | 31 + .../phpmailer/language/phpmailer.lang-uk.php | 28 + .../phpmailer/language/phpmailer.lang-vi.php | 27 + .../phpmailer/language/phpmailer.lang-zh.php | 29 + .../language/phpmailer.lang-zh_cn.php | 36 + .../phpmailer/src/DSNConfigurator.php | 245 + .../phpmailer/phpmailer/src/Exception.php | 40 + .../vendor/phpmailer/phpmailer/src/OAuth.php | 139 + .../phpmailer/src/OAuthTokenProvider.php | 44 + .../phpmailer/phpmailer/src/PHPMailer.php | 5252 ++++++ kirby/vendor/phpmailer/phpmailer/src/POP3.php | 467 + kirby/vendor/phpmailer/phpmailer/src/SMTP.php | 1497 ++ kirby/vendor/psr/log/LICENSE | 19 + kirby/vendor/psr/log/composer.json | 26 + kirby/vendor/psr/log/src/AbstractLogger.php | 15 + .../psr/log/src/InvalidArgumentException.php | 7 + kirby/vendor/psr/log/src/LogLevel.php | 18 + .../psr/log/src/LoggerAwareInterface.php | 18 + kirby/vendor/psr/log/src/LoggerAwareTrait.php | 26 + kirby/vendor/psr/log/src/LoggerInterface.php | 125 + kirby/vendor/psr/log/src/LoggerTrait.php | 142 + kirby/vendor/psr/log/src/NullLogger.php | 30 + .../symfony/deprecation-contracts/LICENSE | 19 + .../deprecation-contracts/composer.json | 35 + .../deprecation-contracts/function.php | 27 + kirby/vendor/symfony/polyfill-ctype/Ctype.php | 232 + kirby/vendor/symfony/polyfill-ctype/LICENSE | 19 + .../symfony/polyfill-ctype/bootstrap.php | 50 + .../symfony/polyfill-ctype/bootstrap80.php | 46 + .../symfony/polyfill-ctype/composer.json | 41 + .../vendor/symfony/polyfill-intl-idn/Idn.php | 923 + .../vendor/symfony/polyfill-intl-idn/Info.php | 23 + .../vendor/symfony/polyfill-intl-idn/LICENSE | 19 + .../Resources/unidata/DisallowedRanges.php | 384 + .../Resources/unidata/Regex.php | 33 + .../Resources/unidata/deviation.php | 8 + .../Resources/unidata/disallowed.php | 2638 +++ .../unidata/disallowed_STD3_mapped.php | 308 + .../unidata/disallowed_STD3_valid.php | 71 + .../Resources/unidata/ignored.php | 273 + .../Resources/unidata/mapped.php | 5778 ++++++ .../Resources/unidata/virama.php | 65 + .../symfony/polyfill-intl-idn/bootstrap.php | 145 + .../symfony/polyfill-intl-idn/bootstrap80.php | 125 + .../symfony/polyfill-intl-idn/composer.json | 44 + .../symfony/polyfill-intl-normalizer/LICENSE | 19 + .../polyfill-intl-normalizer/Normalizer.php | 310 + .../Resources/stubs/Normalizer.php | 17 + .../unidata/canonicalComposition.php | 945 + .../unidata/canonicalDecomposition.php | 2065 +++ .../Resources/unidata/combiningClass.php | 876 + .../unidata/compatibilityDecomposition.php | 3695 ++++ .../polyfill-intl-normalizer/bootstrap.php | 23 + .../polyfill-intl-normalizer/bootstrap80.php | 19 + .../polyfill-intl-normalizer/composer.json | 39 + .../vendor/symfony/polyfill-mbstring/LICENSE | 19 + .../symfony/polyfill-mbstring/Mbstring.php | 947 + .../Resources/unidata/caseFolding.php | 119 + .../Resources/unidata/lowerCase.php | 1397 ++ .../Resources/unidata/titleCaseRegexp.php | 5 + .../Resources/unidata/upperCase.php | 1489 ++ .../symfony/polyfill-mbstring/bootstrap.php | 151 + .../symfony/polyfill-mbstring/bootstrap80.php | 147 + .../symfony/polyfill-mbstring/composer.json | 41 + .../symfony/yaml/Command/LintCommand.php | 276 + kirby/vendor/symfony/yaml/Dumper.php | 178 + kirby/vendor/symfony/yaml/Escaper.php | 95 + .../symfony/yaml/Exception/DumpException.php | 21 + .../yaml/Exception/ExceptionInterface.php | 21 + .../symfony/yaml/Exception/ParseException.php | 132 + .../yaml/Exception/RuntimeException.php | 21 + kirby/vendor/symfony/yaml/Inline.php | 828 + kirby/vendor/symfony/yaml/LICENSE | 19 + kirby/vendor/symfony/yaml/Parser.php | 1249 ++ .../symfony/yaml/Resources/bin/yaml-lint | 49 + kirby/vendor/symfony/yaml/Tag/TaggedValue.php | 38 + kirby/vendor/symfony/yaml/Unescaper.php | 108 + kirby/vendor/symfony/yaml/Yaml.php | 97 + kirby/vendor/symfony/yaml/composer.json | 39 + kirby/views/browser.php | 21 + kirby/views/fatal.php | 11 + kirby/views/panel.php | 76 + kirby/views/php.php | 11 + kirby/views/snippets/footer.php | 2 + kirby/views/snippets/header.php | 42 + media/index.html | 0 site/accounts/index.html | 0 site/blueprints/files/default.yml | 12 + site/blueprints/pages/board.yml | 15 + site/blueprints/pages/boards.yml | 10 + site/blueprints/pages/default.yml | 21 + site/blueprints/pages/member.yml | 48 + site/blueprints/pages/members.yml | 12 + site/blueprints/pages/season.yml | 12 + site/blueprints/pages/seasons.yml | 12 + site/blueprints/pages/tournament.yml | 33 + site/blueprints/pages/xoi.yml | 89 + site/blueprints/site.yml | 5 + site/blueprints/users/api.yml | 0 site/cache/index.html | 0 site/config/config.php | 16 + site/controllers/home.php | 40 + site/controllers/xoi.php | 175 + site/models/season.php | 16 + site/models/seasons.php | 24 + site/models/tournament.php | 39 + site/models/xoi.php | 413 + site/plugins/jsonField/.editorconfig | 20 + site/plugins/jsonField/.gitattributes | 11 + site/plugins/jsonField/.gitignore | 14 + site/plugins/jsonField/LICENSE.md | 21 + site/plugins/jsonField/README.md | 117 + site/plugins/jsonField/SECURITY.md | 18 + site/plugins/jsonField/composer.json | 16 + site/plugins/jsonField/index.css | 2 + site/plugins/jsonField/index.js | 100 + site/plugins/jsonField/index.php | 15 + site/plugins/jsonField/package-lock.json | 6 + site/plugins/jsonField/package.json | 7 + .../jsonField/src/components/jsonField.vue | 46 + site/plugins/jsonField/src/index.js | 7 + .../.gitignore | 6 + .../LICENSE.md | 21 + .../README.md | 135 + .../composer.json | 32 + .../config.php | 56 + .../fields/CroppedImage.php | 168 + .../index.css | 9 + .../index.js | 14 + .../index.php | 3 + .../lib/ImageResize.php | 79 + .../package-lock.json | 9361 ++++++++++ .../package.json | 42 + .../src/fields/ImageCrop.vue | 110 + .../src/main.js | 8 + site/plugins/kql-2.1.0/LICENSE.md | 21 + site/plugins/kql-2.1.0/README.md | 987 + site/plugins/kql-2.1.0/composer.json | 73 + site/plugins/kql-2.1.0/extensions/aliases.php | 8 + site/plugins/kql-2.1.0/extensions/api.php | 25 + .../plugins/kql-2.1.0/extensions/autoload.php | 21 + site/plugins/kql-2.1.0/extensions/helpers.php | 11 + site/plugins/kql-2.1.0/index.php | 16 + site/plugins/kql-2.1.0/src/Kql/Help.php | 152 + .../plugins/kql-2.1.0/src/Kql/Interceptor.php | 295 + .../src/Kql/Interceptors/Cms/App.php | 39 + .../src/Kql/Interceptors/Cms/Block.php | 34 + .../src/Kql/Interceptors/Cms/Blocks.php | 24 + .../src/Kql/Interceptors/Cms/Blueprint.php | 72 + .../src/Kql/Interceptors/Cms/Collection.php | 49 + .../src/Kql/Interceptors/Cms/File.php | 71 + .../src/Kql/Interceptors/Cms/FileVersion.php | 8 + .../src/Kql/Interceptors/Cms/Files.php | 18 + .../src/Kql/Interceptors/Cms/Layout.php | 30 + .../src/Kql/Interceptors/Cms/LayoutColumn.php | 30 + .../Kql/Interceptors/Cms/LayoutColumns.php | 13 + .../src/Kql/Interceptors/Cms/Layouts.php | 13 + .../src/Kql/Interceptors/Cms/Model.php | 113 + .../src/Kql/Interceptors/Cms/Page.php | 68 + .../src/Kql/Interceptors/Cms/Pages.php | 34 + .../src/Kql/Interceptors/Cms/Role.php | 33 + .../src/Kql/Interceptors/Cms/Site.php | 36 + .../src/Kql/Interceptors/Cms/Structure.php | 13 + .../Kql/Interceptors/Cms/StructureObject.php | 20 + .../src/Kql/Interceptors/Cms/Translation.php | 35 + .../src/Kql/Interceptors/Cms/User.php | 35 + .../src/Kql/Interceptors/Cms/Users.php | 18 + .../src/Kql/Interceptors/Content/Content.php | 40 + .../src/Kql/Interceptors/Content/Field.php | 52 + .../src/Kql/Interceptors/Panel/Model.php | 30 + .../src/Kql/Interceptors/Toolkit/Obj.php | 24 + site/plugins/kql-2.1.0/src/Kql/Kql.php | 226 + site/plugins/kql-2.1.0/src/Kql/Query.php | 29 + site/plugins/thumb/index.php | 15 + site/sessions/index.html | 0 site/snippets/footer.php | 2 + site/snippets/header.php | 42 + site/templates/board.php | 12 + site/templates/default.php | 24 + site/templates/home.php | 35 + site/templates/xoi.php | 36 + sw.js | 72 + wsify_linux_amd64 | Bin 0 -> 10391460 bytes 1050 files changed, 224506 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 README.md create mode 100644 assets/css/src/font.scss create mode 100644 assets/css/src/style.scss create mode 100644 assets/css/style.min.css create mode 100644 assets/fonts/opensans/open-sans-v40-latin-300.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-300italic.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-500.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-500italic.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-600.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-600italic.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-700.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-700italic.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-800.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-800italic.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-italic.woff2 create mode 100644 assets/fonts/opensans/open-sans-v40-latin-regular.woff2 create mode 100644 assets/img/YGDC.png create mode 100644 assets/img/dart-board.svg create mode 100644 assets/img/dart.svg create mode 100644 assets/img/placeholder_person.png create mode 100644 assets/img/watch.svg create mode 100644 assets/js/componentPromise.js create mode 100644 assets/js/components/dialog.js create mode 100644 assets/js/components/init.js create mode 100644 assets/js/components/inputElem.js create mode 100644 assets/js/components/list.js create mode 100644 assets/js/components/overlay.js create mode 100644 assets/js/components/plainElem.js create mode 100644 assets/js/components/playerElem.js create mode 100644 assets/js/components/playerselect.js create mode 100644 assets/js/components/squareElem.js create mode 100644 assets/js/handlers.js create mode 100644 assets/js/kirby.js create mode 100644 assets/js/stateMgr.js create mode 100644 assets/js/views/home.js create mode 100644 assets/js/views/xoi.js.bak create mode 100644 assets/js/views/xoi/logic.js create mode 100644 assets/js/views/xoi/main.js create mode 100644 assets/js/vue.esm-browser.js create mode 100644 assets/js/vueusecore.js create mode 100644 assets/js/websocket.js create mode 100644 composer.json create mode 100644 content/1_members/10_23/member.txt create mode 100644 content/1_members/10_23/whatsapp-image-2024-02-26-at-22.54.05-3.jpeg create mode 100644 content/1_members/10_23/whatsapp-image-2024-02-26-at-22.54.05-3.jpeg.txt create mode 100644 content/1_members/11_8/member.txt create mode 100644 content/1_members/11_8/whatsapp-image-2024-02-26-at-22.54.05-7.jpeg create mode 100644 content/1_members/11_8/whatsapp-image-2024-02-26-at-22.54.05-7.jpeg.txt create mode 100644 content/1_members/12_99/member.txt create mode 100644 content/1_members/12_99/whatsapp-image-2024-02-26-at-22.54.05-1.jpeg create mode 100644 content/1_members/12_99/whatsapp-image-2024-02-26-at-22.54.05-1.jpeg.txt create mode 100644 content/1_members/13_9/member.txt create mode 100644 content/1_members/13_9/whatsapp-image-2024-02-26-at-22.54.05-6.jpeg create mode 100644 content/1_members/13_9/whatsapp-image-2024-02-26-at-22.54.05-6.jpeg.txt create mode 100644 content/1_members/14_001/member.txt create mode 100644 content/1_members/15_14/member.txt create mode 100644 content/1_members/15_14/whatsapp-image-2024-02-26-at-22.54.05-4.jpeg create mode 100644 content/1_members/15_14/whatsapp-image-2024-02-26-at-22.54.05-4.jpeg.txt create mode 100644 content/1_members/16_todo1/member.txt create mode 100644 content/1_members/17_51/member.txt create mode 100644 content/1_members/18_todo3/member.txt create mode 100644 content/1_members/19_4/member.txt create mode 100644 content/1_members/1_32/member.txt create mode 100644 content/1_members/20_7/member.txt create mode 100644 content/1_members/21_77/member.txt create mode 100644 content/1_members/22_285/member.txt create mode 100644 content/1_members/23_todo/member.txt create mode 100644 content/1_members/2_92/member.txt create mode 100644 content/1_members/2_92/whatsapp-image-2024-02-26-at-22.54.05-2.jpeg create mode 100644 content/1_members/2_92/whatsapp-image-2024-02-26-at-22.54.05-2.jpeg.txt create mode 100644 content/1_members/3_45/member.txt create mode 100644 content/1_members/3_45/whatsapp-image-2024-02-26-at-22.54.05-5.jpeg create mode 100644 content/1_members/3_45/whatsapp-image-2024-02-26-at-22.54.05-5.jpeg.txt create mode 100644 content/1_members/4_180/member.txt create mode 100644 content/1_members/4_180/whatsapp-image-2024-02-26-at-22.54.05-8.jpeg create mode 100644 content/1_members/4_180/whatsapp-image-2024-02-26-at-22.54.05-8.jpeg.txt create mode 100644 content/1_members/5_57/member.txt create mode 100644 content/1_members/6_12/member.txt create mode 100644 content/1_members/7_26/member.txt create mode 100644 content/1_members/7_26/whatsapp-image-2024-02-26-at-22.54.05.jpeg create mode 100644 content/1_members/7_26/whatsapp-image-2024-02-26-at-22.54.05.jpeg.txt create mode 100644 content/1_members/8_11/member.txt create mode 100644 content/1_members/9_13/member.txt create mode 100644 content/1_members/members.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/54kd4kbk/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/7nykca7i/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/her1fj3r/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/jm4ju7pi/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/l0j8jkts/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/lsng5wlg/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/m7tb5bac/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/mxkfs1yq/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/osbkse46/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/rtjuyvsv/xoi.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/tournament.txt create mode 100644 content/2_seasons/1_season-2024/1_summer-slam/z7nvffvf/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/13tntlfj/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/3flmnq6b/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/cbwvnzxm/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/cutywjod/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/kkchbr4a/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/ovcmf1c0/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/sbggpar6/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/tournament.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/utbpew7l/xoi.txt create mode 100644 content/2_seasons/1_season-2024/2_spring-break/zxlkihnz/xoi.txt create mode 100644 content/2_seasons/1_season-2024/3_wm/1_1-runde/xoi.txt create mode 100644 content/2_seasons/1_season-2024/3_wm/2_2-runde/xoi.txt create mode 100644 content/2_seasons/1_season-2024/3_wm/3_3-runde/xoi.txt create mode 100644 content/2_seasons/1_season-2024/3_wm/tournament.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/0tdcwlko/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/1csevwpm/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/5s62p5jp/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/a4iulyd5/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/a9z1tmvh/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/anobo58l/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/cqeaezmg/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/eiwqlmue/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/eqwdsia4/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/gp3pj38u/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/iat8cs7j/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/ix1srhrk/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/jajnvwbu/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/kdcqpxs1/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/lziuhybw/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/mcjcgkbg/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/ni9jxqdn/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/olf1bjdm/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/ovasmz7s/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/sfln9xej/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/sgl9kqvo/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/tournament.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/uslfpwja/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/ut3juonn/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/vmxmfxxs/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/wksontke/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/wuhzwter/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/ypt4e90v/xoi.txt create mode 100644 content/2_seasons/1_season-2024/4_liga/zavij0ox/xoi.txt create mode 100644 content/2_seasons/1_season-2024/season.txt create mode 100644 content/2_seasons/seasons.txt create mode 100644 content/3_boards/boards.txt create mode 100644 content/error/error.txt create mode 100644 content/home/home.txt create mode 100644 content/site.txt create mode 100644 index.php create mode 100644 kirby/.editorconfig create mode 100644 kirby/CONTRIBUTING.md create mode 100644 kirby/LICENSE.md create mode 100644 kirby/README.md create mode 100644 kirby/SECURITY.md create mode 100644 kirby/assets/whoops.css create mode 100644 kirby/bootstrap.php create mode 100644 kirby/cacert.pem create mode 100644 kirby/composer.json create mode 100644 kirby/composer.lock create mode 100644 kirby/config/aliases.php create mode 100644 kirby/config/api/authentication.php create mode 100644 kirby/config/api/collections.php create mode 100644 kirby/config/api/models.php create mode 100644 kirby/config/api/models/File.php create mode 100644 kirby/config/api/models/FileBlueprint.php create mode 100644 kirby/config/api/models/FileVersion.php create mode 100644 kirby/config/api/models/Language.php create mode 100644 kirby/config/api/models/License.php create mode 100644 kirby/config/api/models/Page.php create mode 100644 kirby/config/api/models/PageBlueprint.php create mode 100644 kirby/config/api/models/Role.php create mode 100644 kirby/config/api/models/Site.php create mode 100644 kirby/config/api/models/SiteBlueprint.php create mode 100644 kirby/config/api/models/System.php create mode 100644 kirby/config/api/models/Translation.php create mode 100644 kirby/config/api/models/User.php create mode 100644 kirby/config/api/models/UserBlueprint.php create mode 100644 kirby/config/api/routes.php create mode 100644 kirby/config/api/routes/auth.php create mode 100644 kirby/config/api/routes/files.php create mode 100644 kirby/config/api/routes/kql.php create mode 100644 kirby/config/api/routes/languages.php create mode 100644 kirby/config/api/routes/lock.php create mode 100644 kirby/config/api/routes/pages.php create mode 100644 kirby/config/api/routes/roles.php create mode 100644 kirby/config/api/routes/site.php create mode 100644 kirby/config/api/routes/system.php create mode 100644 kirby/config/api/routes/translations.php create mode 100644 kirby/config/api/routes/users.php create mode 100644 kirby/config/areas/account.php create mode 100644 kirby/config/areas/account/dialogs.php create mode 100644 kirby/config/areas/account/drawers.php create mode 100644 kirby/config/areas/account/dropdowns.php create mode 100644 kirby/config/areas/account/views.php create mode 100644 kirby/config/areas/fields/dialogs.php create mode 100644 kirby/config/areas/fields/drawers.php create mode 100644 kirby/config/areas/files/dialogs.php create mode 100644 kirby/config/areas/files/dropdowns.php create mode 100644 kirby/config/areas/installation.php create mode 100644 kirby/config/areas/lab.php create mode 100644 kirby/config/areas/lab/drawers.php create mode 100644 kirby/config/areas/lab/views.php create mode 100644 kirby/config/areas/languages.php create mode 100644 kirby/config/areas/languages/dialogs.php create mode 100644 kirby/config/areas/languages/views.php create mode 100644 kirby/config/areas/login.php create mode 100644 kirby/config/areas/logout.php create mode 100644 kirby/config/areas/search.php create mode 100644 kirby/config/areas/search/views.php create mode 100644 kirby/config/areas/site.php create mode 100644 kirby/config/areas/site/dialogs.php create mode 100644 kirby/config/areas/site/drawers.php create mode 100644 kirby/config/areas/site/dropdowns.php create mode 100644 kirby/config/areas/site/requests.php create mode 100644 kirby/config/areas/site/searches.php create mode 100644 kirby/config/areas/site/views.php create mode 100644 kirby/config/areas/system.php create mode 100644 kirby/config/areas/system/dialogs.php create mode 100644 kirby/config/areas/system/views.php create mode 100644 kirby/config/areas/users.php create mode 100644 kirby/config/areas/users/dialogs.php create mode 100644 kirby/config/areas/users/drawers.php create mode 100644 kirby/config/areas/users/dropdowns.php create mode 100644 kirby/config/areas/users/searches.php create mode 100644 kirby/config/areas/users/views.php create mode 100644 kirby/config/blocks/code/code.php create mode 100644 kirby/config/blocks/code/code.yml create mode 100644 kirby/config/blocks/gallery/gallery.php create mode 100644 kirby/config/blocks/gallery/gallery.yml create mode 100644 kirby/config/blocks/heading/heading.php create mode 100644 kirby/config/blocks/heading/heading.yml create mode 100644 kirby/config/blocks/image/image.php create mode 100644 kirby/config/blocks/image/image.yml create mode 100644 kirby/config/blocks/line/line.php create mode 100644 kirby/config/blocks/line/line.yml create mode 100644 kirby/config/blocks/list/list.php create mode 100644 kirby/config/blocks/list/list.yml create mode 100644 kirby/config/blocks/markdown/markdown.php create mode 100644 kirby/config/blocks/markdown/markdown.yml create mode 100644 kirby/config/blocks/quote/quote.php create mode 100644 kirby/config/blocks/quote/quote.yml create mode 100644 kirby/config/blocks/table/table.yml create mode 100644 kirby/config/blocks/text/text.php create mode 100644 kirby/config/blocks/text/text.yml create mode 100644 kirby/config/blocks/video/video.php create mode 100644 kirby/config/blocks/video/video.yml create mode 100644 kirby/config/components.php create mode 100644 kirby/config/fields/checkboxes.php create mode 100644 kirby/config/fields/color.php create mode 100644 kirby/config/fields/date.php create mode 100644 kirby/config/fields/email.php create mode 100644 kirby/config/fields/files.php create mode 100644 kirby/config/fields/gap.php create mode 100644 kirby/config/fields/headline.php create mode 100644 kirby/config/fields/hidden.php create mode 100644 kirby/config/fields/info.php create mode 100644 kirby/config/fields/line.php create mode 100644 kirby/config/fields/link.php create mode 100644 kirby/config/fields/list.php create mode 100644 kirby/config/fields/mixins/datetime.php create mode 100644 kirby/config/fields/mixins/filepicker.php create mode 100644 kirby/config/fields/mixins/layout.php create mode 100644 kirby/config/fields/mixins/min.php create mode 100644 kirby/config/fields/mixins/options.php create mode 100644 kirby/config/fields/mixins/pagepicker.php create mode 100644 kirby/config/fields/mixins/picker.php create mode 100644 kirby/config/fields/mixins/upload.php create mode 100644 kirby/config/fields/mixins/userpicker.php create mode 100644 kirby/config/fields/multiselect.php create mode 100644 kirby/config/fields/number.php create mode 100644 kirby/config/fields/object.php create mode 100644 kirby/config/fields/pages.php create mode 100644 kirby/config/fields/radio.php create mode 100644 kirby/config/fields/range.php create mode 100644 kirby/config/fields/select.php create mode 100644 kirby/config/fields/slug.php create mode 100644 kirby/config/fields/structure.php create mode 100644 kirby/config/fields/tags.php create mode 100644 kirby/config/fields/tel.php create mode 100644 kirby/config/fields/text.php create mode 100644 kirby/config/fields/textarea.php create mode 100644 kirby/config/fields/time.php create mode 100644 kirby/config/fields/toggle.php create mode 100644 kirby/config/fields/toggles.php create mode 100644 kirby/config/fields/url.php create mode 100644 kirby/config/fields/users.php create mode 100644 kirby/config/fields/writer.php create mode 100644 kirby/config/helpers.php create mode 100644 kirby/config/methods.php create mode 100644 kirby/config/presets/files.php create mode 100644 kirby/config/presets/page.php create mode 100644 kirby/config/presets/pages.php create mode 100644 kirby/config/routes.php create mode 100644 kirby/config/sections/fields.php create mode 100644 kirby/config/sections/files.php create mode 100644 kirby/config/sections/info.php create mode 100644 kirby/config/sections/mixins/details.php create mode 100644 kirby/config/sections/mixins/empty.php create mode 100644 kirby/config/sections/mixins/headline.php create mode 100644 kirby/config/sections/mixins/help.php create mode 100644 kirby/config/sections/mixins/layout.php create mode 100644 kirby/config/sections/mixins/max.php create mode 100644 kirby/config/sections/mixins/min.php create mode 100644 kirby/config/sections/mixins/pagination.php create mode 100644 kirby/config/sections/mixins/parent.php create mode 100644 kirby/config/sections/mixins/search.php create mode 100644 kirby/config/sections/mixins/sort.php create mode 100644 kirby/config/sections/pages.php create mode 100644 kirby/config/sections/stats.php create mode 100644 kirby/config/setup.php create mode 100644 kirby/config/tags.php create mode 100644 kirby/config/templates/emails/auth/login.php create mode 100644 kirby/config/templates/emails/auth/password-reset.php create mode 100644 kirby/dependencies/parsedown-extra/ParsedownExtra.php create mode 100644 kirby/dependencies/parsedown/Parsedown.php create mode 100644 kirby/dependencies/spyc/COPYING create mode 100644 kirby/dependencies/spyc/Spyc.php create mode 100644 kirby/i18n/rules/LICENSE create mode 100644 kirby/i18n/rules/ar.json create mode 100644 kirby/i18n/rules/az.json create mode 100644 kirby/i18n/rules/bg.json create mode 100644 kirby/i18n/rules/cs.json create mode 100644 kirby/i18n/rules/da.json create mode 100644 kirby/i18n/rules/de.json create mode 100644 kirby/i18n/rules/el.json create mode 100644 kirby/i18n/rules/eo.json create mode 100644 kirby/i18n/rules/et.json create mode 100644 kirby/i18n/rules/fa.json create mode 100644 kirby/i18n/rules/fi.json create mode 100644 kirby/i18n/rules/fr.json create mode 100644 kirby/i18n/rules/hi.json create mode 100644 kirby/i18n/rules/hr.json create mode 100644 kirby/i18n/rules/hu.json create mode 100644 kirby/i18n/rules/hy.json create mode 100644 kirby/i18n/rules/is_IS.json create mode 100644 kirby/i18n/rules/it.json create mode 100644 kirby/i18n/rules/iu.json create mode 100644 kirby/i18n/rules/ja.json create mode 100644 kirby/i18n/rules/ka.json create mode 100644 kirby/i18n/rules/ko.json create mode 100644 kirby/i18n/rules/lt.json create mode 100644 kirby/i18n/rules/lv.json create mode 100644 kirby/i18n/rules/mk.json create mode 100644 kirby/i18n/rules/my.json create mode 100644 kirby/i18n/rules/nb.json create mode 100644 kirby/i18n/rules/pl.json create mode 100644 kirby/i18n/rules/pt_BR.json create mode 100644 kirby/i18n/rules/ro.json create mode 100644 kirby/i18n/rules/ru.json create mode 100644 kirby/i18n/rules/sr.json create mode 100644 kirby/i18n/rules/sv_SE.json create mode 100644 kirby/i18n/rules/tr.json create mode 100644 kirby/i18n/rules/uk.json create mode 100644 kirby/i18n/rules/vi.json create mode 100644 kirby/i18n/rules/zh.json create mode 100644 kirby/i18n/translations/bg.json create mode 100644 kirby/i18n/translations/ca.json create mode 100644 kirby/i18n/translations/cs.json create mode 100644 kirby/i18n/translations/da.json create mode 100644 kirby/i18n/translations/de.json create mode 100644 kirby/i18n/translations/el.json create mode 100644 kirby/i18n/translations/en.json create mode 100644 kirby/i18n/translations/eo.json create mode 100644 kirby/i18n/translations/es_419.json create mode 100644 kirby/i18n/translations/es_ES.json create mode 100644 kirby/i18n/translations/fa.json create mode 100644 kirby/i18n/translations/fi.json create mode 100644 kirby/i18n/translations/fr.json create mode 100644 kirby/i18n/translations/hu.json create mode 100644 kirby/i18n/translations/id.json create mode 100644 kirby/i18n/translations/is_IS.json create mode 100644 kirby/i18n/translations/it.json create mode 100644 kirby/i18n/translations/ko.json create mode 100644 kirby/i18n/translations/lt.json create mode 100644 kirby/i18n/translations/nb.json create mode 100644 kirby/i18n/translations/nl.json create mode 100644 kirby/i18n/translations/pl.json create mode 100644 kirby/i18n/translations/pt_BR.json create mode 100644 kirby/i18n/translations/pt_PT.json create mode 100644 kirby/i18n/translations/ro.json create mode 100644 kirby/i18n/translations/ru.json create mode 100644 kirby/i18n/translations/sk.json create mode 100644 kirby/i18n/translations/sv_SE.json create mode 100644 kirby/i18n/translations/tr.json create mode 100644 kirby/kirby.pub create mode 100644 kirby/package-lock.json create mode 100644 kirby/panel/dist/apple-touch-icon.png create mode 100644 kirby/panel/dist/css/style.min.css create mode 100644 kirby/panel/dist/favicon.png create mode 100644 kirby/panel/dist/favicon.svg create mode 100644 kirby/panel/dist/img/icons.svg create mode 100644 kirby/panel/dist/js/Docs.min.js create mode 100644 kirby/panel/dist/js/DocsView.min.js create mode 100644 kirby/panel/dist/js/Highlight.min.js create mode 100644 kirby/panel/dist/js/IndexView.min.js create mode 100644 kirby/panel/dist/js/PlaygroundView.min.js create mode 100644 kirby/panel/dist/js/container-query-polyfill.modern.min.js create mode 100644 kirby/panel/dist/js/index.min.js create mode 100644 kirby/panel/dist/js/plugins.js create mode 100644 kirby/panel/dist/js/vendor.min.js create mode 100644 kirby/panel/dist/js/vue.min.js create mode 100644 kirby/panel/dist/js/vuedraggable.min.js create mode 100644 kirby/router.php create mode 100644 kirby/src/Api/Api.php create mode 100644 kirby/src/Api/Collection.php create mode 100644 kirby/src/Api/Model.php create mode 100644 kirby/src/Blueprint/Collection.php create mode 100644 kirby/src/Blueprint/Config.php create mode 100644 kirby/src/Blueprint/Extension.php create mode 100644 kirby/src/Blueprint/Factory.php create mode 100644 kirby/src/Blueprint/Node.php create mode 100644 kirby/src/Blueprint/NodeI18n.php create mode 100644 kirby/src/Blueprint/NodeIcon.php create mode 100644 kirby/src/Blueprint/NodeProperty.php create mode 100644 kirby/src/Blueprint/NodeString.php create mode 100644 kirby/src/Blueprint/NodeText.php create mode 100644 kirby/src/Cache/ApcuCache.php create mode 100644 kirby/src/Cache/Cache.php create mode 100644 kirby/src/Cache/FileCache.php create mode 100644 kirby/src/Cache/MemCached.php create mode 100644 kirby/src/Cache/MemoryCache.php create mode 100644 kirby/src/Cache/NullCache.php create mode 100644 kirby/src/Cache/Value.php create mode 100644 kirby/src/Cms/Api.php create mode 100644 kirby/src/Cms/App.php create mode 100644 kirby/src/Cms/AppCaches.php create mode 100644 kirby/src/Cms/AppErrors.php create mode 100644 kirby/src/Cms/AppPlugins.php create mode 100644 kirby/src/Cms/AppTranslations.php create mode 100644 kirby/src/Cms/AppUsers.php create mode 100644 kirby/src/Cms/Auth.php create mode 100644 kirby/src/Cms/Auth/Challenge.php create mode 100644 kirby/src/Cms/Auth/EmailChallenge.php create mode 100644 kirby/src/Cms/Auth/Status.php create mode 100644 kirby/src/Cms/Auth/TotpChallenge.php create mode 100644 kirby/src/Cms/Block.php create mode 100644 kirby/src/Cms/BlockConverter.php create mode 100644 kirby/src/Cms/Blocks.php create mode 100644 kirby/src/Cms/Blueprint.php create mode 100644 kirby/src/Cms/Collection.php create mode 100644 kirby/src/Cms/Collections.php create mode 100644 kirby/src/Cms/ContentLock.php create mode 100644 kirby/src/Cms/ContentLocks.php create mode 100644 kirby/src/Cms/Core.php create mode 100644 kirby/src/Cms/Email.php create mode 100644 kirby/src/Cms/Event.php create mode 100644 kirby/src/Cms/Fieldset.php create mode 100644 kirby/src/Cms/Fieldsets.php create mode 100644 kirby/src/Cms/File.php create mode 100644 kirby/src/Cms/FileActions.php create mode 100644 kirby/src/Cms/FileBlueprint.php create mode 100644 kirby/src/Cms/FileModifications.php create mode 100644 kirby/src/Cms/FilePermissions.php create mode 100644 kirby/src/Cms/FilePicker.php create mode 100644 kirby/src/Cms/FileRules.php create mode 100644 kirby/src/Cms/FileVersion.php create mode 100644 kirby/src/Cms/Files.php create mode 100644 kirby/src/Cms/Find.php create mode 100644 kirby/src/Cms/HasChildren.php create mode 100644 kirby/src/Cms/HasFiles.php create mode 100644 kirby/src/Cms/HasMethods.php create mode 100644 kirby/src/Cms/HasSiblings.php create mode 100644 kirby/src/Cms/Helpers.php create mode 100644 kirby/src/Cms/Html.php create mode 100644 kirby/src/Cms/Ingredients.php create mode 100644 kirby/src/Cms/Item.php create mode 100644 kirby/src/Cms/Items.php create mode 100644 kirby/src/Cms/Language.php create mode 100644 kirby/src/Cms/LanguageRouter.php create mode 100644 kirby/src/Cms/LanguageRoutes.php create mode 100644 kirby/src/Cms/LanguageRules.php create mode 100644 kirby/src/Cms/LanguageVariable.php create mode 100644 kirby/src/Cms/Languages.php create mode 100644 kirby/src/Cms/Layout.php create mode 100644 kirby/src/Cms/LayoutColumn.php create mode 100644 kirby/src/Cms/LayoutColumns.php create mode 100644 kirby/src/Cms/Layouts.php create mode 100644 kirby/src/Cms/License.php create mode 100644 kirby/src/Cms/LicenseStatus.php create mode 100644 kirby/src/Cms/LicenseType.php create mode 100644 kirby/src/Cms/Loader.php create mode 100644 kirby/src/Cms/Media.php create mode 100644 kirby/src/Cms/Model.php create mode 100644 kirby/src/Cms/ModelPermissions.php create mode 100644 kirby/src/Cms/ModelWithContent.php create mode 100644 kirby/src/Cms/Nest.php create mode 100644 kirby/src/Cms/NestCollection.php create mode 100644 kirby/src/Cms/NestObject.php create mode 100644 kirby/src/Cms/Page.php create mode 100644 kirby/src/Cms/PageActions.php create mode 100644 kirby/src/Cms/PageBlueprint.php create mode 100644 kirby/src/Cms/PagePermissions.php create mode 100644 kirby/src/Cms/PagePicker.php create mode 100644 kirby/src/Cms/PageRules.php create mode 100644 kirby/src/Cms/PageSiblings.php create mode 100644 kirby/src/Cms/Pages.php create mode 100644 kirby/src/Cms/Pagination.php create mode 100644 kirby/src/Cms/Permissions.php create mode 100644 kirby/src/Cms/Picker.php create mode 100644 kirby/src/Cms/Plugin.php create mode 100644 kirby/src/Cms/PluginAsset.php create mode 100644 kirby/src/Cms/PluginAssets.php create mode 100644 kirby/src/Cms/R.php create mode 100644 kirby/src/Cms/Responder.php create mode 100644 kirby/src/Cms/Response.php create mode 100644 kirby/src/Cms/Role.php create mode 100644 kirby/src/Cms/Roles.php create mode 100644 kirby/src/Cms/S.php create mode 100644 kirby/src/Cms/Search.php create mode 100644 kirby/src/Cms/Section.php create mode 100644 kirby/src/Cms/Site.php create mode 100644 kirby/src/Cms/SiteActions.php create mode 100644 kirby/src/Cms/SiteBlueprint.php create mode 100644 kirby/src/Cms/SitePermissions.php create mode 100644 kirby/src/Cms/SiteRules.php create mode 100644 kirby/src/Cms/Structure.php create mode 100644 kirby/src/Cms/StructureObject.php create mode 100644 kirby/src/Cms/System.php create mode 100644 kirby/src/Cms/System/UpdateStatus.php create mode 100644 kirby/src/Cms/Translation.php create mode 100644 kirby/src/Cms/Translations.php create mode 100644 kirby/src/Cms/Url.php create mode 100644 kirby/src/Cms/User.php create mode 100644 kirby/src/Cms/UserActions.php create mode 100644 kirby/src/Cms/UserBlueprint.php create mode 100644 kirby/src/Cms/UserPermissions.php create mode 100644 kirby/src/Cms/UserPicker.php create mode 100644 kirby/src/Cms/UserRules.php create mode 100644 kirby/src/Cms/Users.php create mode 100644 kirby/src/Cms/Visitor.php create mode 100644 kirby/src/Content/Content.php create mode 100644 kirby/src/Content/ContentStorage.php create mode 100644 kirby/src/Content/ContentStorageHandler.php create mode 100644 kirby/src/Content/ContentTranslation.php create mode 100644 kirby/src/Content/Field.php create mode 100644 kirby/src/Content/PlainTextContentStorageHandler.php create mode 100644 kirby/src/Data/Data.php create mode 100644 kirby/src/Data/Handler.php create mode 100644 kirby/src/Data/Json.php create mode 100644 kirby/src/Data/PHP.php create mode 100644 kirby/src/Data/Txt.php create mode 100644 kirby/src/Data/Xml.php create mode 100644 kirby/src/Data/Yaml.php create mode 100644 kirby/src/Data/YamlSpyc.php create mode 100644 kirby/src/Data/YamlSymfony.php create mode 100644 kirby/src/Database/Database.php create mode 100644 kirby/src/Database/Db.php create mode 100644 kirby/src/Database/Query.php create mode 100644 kirby/src/Database/Sql.php create mode 100644 kirby/src/Database/Sql/Mysql.php create mode 100644 kirby/src/Database/Sql/Sqlite.php create mode 100644 kirby/src/Email/Body.php create mode 100644 kirby/src/Email/Email.php create mode 100644 kirby/src/Email/PHPMailer.php create mode 100644 kirby/src/Exception/AuthException.php create mode 100644 kirby/src/Exception/BadMethodCallException.php create mode 100644 kirby/src/Exception/DuplicateException.php create mode 100644 kirby/src/Exception/ErrorPageException.php create mode 100644 kirby/src/Exception/Exception.php create mode 100644 kirby/src/Exception/InvalidArgumentException.php create mode 100644 kirby/src/Exception/LogicException.php create mode 100644 kirby/src/Exception/NotFoundException.php create mode 100644 kirby/src/Exception/PermissionException.php create mode 100644 kirby/src/Field/FieldOptions.php create mode 100644 kirby/src/Filesystem/Asset.php create mode 100644 kirby/src/Filesystem/Dir.php create mode 100644 kirby/src/Filesystem/F.php create mode 100644 kirby/src/Filesystem/File.php create mode 100644 kirby/src/Filesystem/Filename.php create mode 100644 kirby/src/Filesystem/IsFile.php create mode 100644 kirby/src/Filesystem/Mime.php create mode 100644 kirby/src/Form/Field.php create mode 100644 kirby/src/Form/Field/BlocksField.php create mode 100644 kirby/src/Form/Field/LayoutField.php create mode 100644 kirby/src/Form/FieldClass.php create mode 100644 kirby/src/Form/Fields.php create mode 100644 kirby/src/Form/Form.php create mode 100644 kirby/src/Form/Mixin/EmptyState.php create mode 100644 kirby/src/Form/Mixin/Max.php create mode 100644 kirby/src/Form/Mixin/Min.php create mode 100644 kirby/src/Form/Validations.php create mode 100644 kirby/src/Http/Cookie.php create mode 100644 kirby/src/Http/Environment.php create mode 100644 kirby/src/Http/Exceptions/NextRouteException.php create mode 100644 kirby/src/Http/Header.php create mode 100644 kirby/src/Http/Idn.php create mode 100644 kirby/src/Http/Params.php create mode 100644 kirby/src/Http/Path.php create mode 100644 kirby/src/Http/Query.php create mode 100644 kirby/src/Http/Remote.php create mode 100644 kirby/src/Http/Request.php create mode 100644 kirby/src/Http/Request/Auth.php create mode 100644 kirby/src/Http/Request/Auth/BasicAuth.php create mode 100644 kirby/src/Http/Request/Auth/BearerAuth.php create mode 100644 kirby/src/Http/Request/Auth/SessionAuth.php create mode 100644 kirby/src/Http/Request/Body.php create mode 100644 kirby/src/Http/Request/Data.php create mode 100644 kirby/src/Http/Request/Files.php create mode 100644 kirby/src/Http/Request/Query.php create mode 100644 kirby/src/Http/Response.php create mode 100644 kirby/src/Http/Route.php create mode 100644 kirby/src/Http/Router.php create mode 100644 kirby/src/Http/Uri.php create mode 100644 kirby/src/Http/Url.php create mode 100644 kirby/src/Http/Visitor.php create mode 100644 kirby/src/Image/Camera.php create mode 100644 kirby/src/Image/Darkroom.php create mode 100644 kirby/src/Image/Darkroom/GdLib.php create mode 100644 kirby/src/Image/Darkroom/ImageMagick.php create mode 100644 kirby/src/Image/Dimensions.php create mode 100644 kirby/src/Image/Exif.php create mode 100644 kirby/src/Image/Focus.php create mode 100644 kirby/src/Image/Image.php create mode 100644 kirby/src/Image/Location.php create mode 100644 kirby/src/Image/QrCode.php create mode 100644 kirby/src/Option/Option.php create mode 100644 kirby/src/Option/Options.php create mode 100644 kirby/src/Option/OptionsApi.php create mode 100644 kirby/src/Option/OptionsProvider.php create mode 100644 kirby/src/Option/OptionsQuery.php create mode 100644 kirby/src/Panel/Assets.php create mode 100644 kirby/src/Panel/ChangesDialog.php create mode 100644 kirby/src/Panel/Dialog.php create mode 100644 kirby/src/Panel/Document.php create mode 100644 kirby/src/Panel/Drawer.php create mode 100644 kirby/src/Panel/Dropdown.php create mode 100644 kirby/src/Panel/Field.php create mode 100644 kirby/src/Panel/File.php create mode 100644 kirby/src/Panel/Home.php create mode 100644 kirby/src/Panel/Json.php create mode 100644 kirby/src/Panel/Lab/Category.php create mode 100644 kirby/src/Panel/Lab/Docs.php create mode 100644 kirby/src/Panel/Lab/Example.php create mode 100644 kirby/src/Panel/Lab/Snippet.php create mode 100644 kirby/src/Panel/Lab/Template.php create mode 100644 kirby/src/Panel/Menu.php create mode 100644 kirby/src/Panel/Model.php create mode 100644 kirby/src/Panel/Page.php create mode 100644 kirby/src/Panel/PageCreateDialog.php create mode 100644 kirby/src/Panel/Panel.php create mode 100644 kirby/src/Panel/Plugins.php create mode 100644 kirby/src/Panel/Redirect.php create mode 100644 kirby/src/Panel/Request.php create mode 100644 kirby/src/Panel/Search.php create mode 100644 kirby/src/Panel/Site.php create mode 100644 kirby/src/Panel/User.php create mode 100644 kirby/src/Panel/UserTotpDisableDialog.php create mode 100644 kirby/src/Panel/UserTotpEnableDialog.php create mode 100644 kirby/src/Panel/View.php create mode 100644 kirby/src/Parsley/Element.php create mode 100644 kirby/src/Parsley/Inline.php create mode 100644 kirby/src/Parsley/Parsley.php create mode 100644 kirby/src/Parsley/Schema.php create mode 100644 kirby/src/Parsley/Schema/Blocks.php create mode 100644 kirby/src/Parsley/Schema/Plain.php create mode 100644 kirby/src/Query/Argument.php create mode 100644 kirby/src/Query/Arguments.php create mode 100644 kirby/src/Query/Expression.php create mode 100644 kirby/src/Query/Query.php create mode 100644 kirby/src/Query/Segment.php create mode 100644 kirby/src/Query/Segments.php create mode 100644 kirby/src/Sane/DomHandler.php create mode 100644 kirby/src/Sane/Handler.php create mode 100644 kirby/src/Sane/Html.php create mode 100644 kirby/src/Sane/Sane.php create mode 100644 kirby/src/Sane/Svg.php create mode 100644 kirby/src/Sane/Svgz.php create mode 100644 kirby/src/Sane/Xml.php create mode 100644 kirby/src/Session/AutoSession.php create mode 100644 kirby/src/Session/FileSessionStore.php create mode 100644 kirby/src/Session/Session.php create mode 100644 kirby/src/Session/SessionData.php create mode 100644 kirby/src/Session/SessionStore.php create mode 100644 kirby/src/Session/Sessions.php create mode 100644 kirby/src/Template/Slot.php create mode 100644 kirby/src/Template/Slots.php create mode 100644 kirby/src/Template/Snippet.php create mode 100644 kirby/src/Template/Template.php create mode 100644 kirby/src/Text/KirbyTag.php create mode 100644 kirby/src/Text/KirbyTags.php create mode 100644 kirby/src/Text/Markdown.php create mode 100644 kirby/src/Text/SmartyPants.php create mode 100644 kirby/src/Toolkit/A.php create mode 100644 kirby/src/Toolkit/Collection.php create mode 100644 kirby/src/Toolkit/Component.php create mode 100644 kirby/src/Toolkit/Config.php create mode 100644 kirby/src/Toolkit/Controller.php create mode 100644 kirby/src/Toolkit/Date.php create mode 100644 kirby/src/Toolkit/Dom.php create mode 100644 kirby/src/Toolkit/Escape.php create mode 100644 kirby/src/Toolkit/Facade.php create mode 100644 kirby/src/Toolkit/Html.php create mode 100644 kirby/src/Toolkit/I18n.php create mode 100644 kirby/src/Toolkit/Iterator.php create mode 100644 kirby/src/Toolkit/LazyValue.php create mode 100644 kirby/src/Toolkit/Locale.php create mode 100644 kirby/src/Toolkit/Obj.php create mode 100644 kirby/src/Toolkit/Pagination.php create mode 100644 kirby/src/Toolkit/Properties.php create mode 100644 kirby/src/Toolkit/Silo.php create mode 100644 kirby/src/Toolkit/Str.php create mode 100644 kirby/src/Toolkit/SymmetricCrypto.php create mode 100644 kirby/src/Toolkit/Totp.php create mode 100644 kirby/src/Toolkit/Tpl.php create mode 100644 kirby/src/Toolkit/V.php create mode 100644 kirby/src/Toolkit/View.php create mode 100644 kirby/src/Toolkit/Xml.php create mode 100644 kirby/src/Uuid/BlockUuid.php create mode 100644 kirby/src/Uuid/FieldUuid.php create mode 100644 kirby/src/Uuid/FileUuid.php create mode 100644 kirby/src/Uuid/HasUuids.php create mode 100644 kirby/src/Uuid/Identifiable.php create mode 100644 kirby/src/Uuid/ModelUuid.php create mode 100644 kirby/src/Uuid/PageUuid.php create mode 100644 kirby/src/Uuid/SiteUuid.php create mode 100644 kirby/src/Uuid/StructureUuid.php create mode 100644 kirby/src/Uuid/Uri.php create mode 100644 kirby/src/Uuid/UserUuid.php create mode 100644 kirby/src/Uuid/Uuid.php create mode 100644 kirby/src/Uuid/Uuids.php create mode 100644 kirby/vendor/autoload.php create mode 100755 kirby/vendor/bin/yaml-lint create mode 100644 kirby/vendor/christian-riesen/base32/LICENSE create mode 100644 kirby/vendor/christian-riesen/base32/src/Base32.php create mode 100644 kirby/vendor/christian-riesen/base32/src/Base32Hex.php create mode 100644 kirby/vendor/claviska/simpleimage/LICENSE.md create mode 100644 kirby/vendor/claviska/simpleimage/composer.json create mode 100644 kirby/vendor/claviska/simpleimage/composer.lock create mode 100644 kirby/vendor/claviska/simpleimage/src/claviska/SimpleImage.php create mode 100644 kirby/vendor/composer/ClassLoader.php create mode 100644 kirby/vendor/composer/InstalledVersions.php create mode 100644 kirby/vendor/composer/LICENSE create mode 100644 kirby/vendor/composer/autoload_classmap.php create mode 100644 kirby/vendor/composer/autoload_files.php create mode 100644 kirby/vendor/composer/autoload_namespaces.php create mode 100644 kirby/vendor/composer/autoload_psr4.php create mode 100644 kirby/vendor/composer/autoload_real.php create mode 100644 kirby/vendor/composer/autoload_static.php create mode 100644 kirby/vendor/composer/installed.json create mode 100644 kirby/vendor/composer/installed.php create mode 100644 kirby/vendor/composer/semver/LICENSE create mode 100644 kirby/vendor/composer/semver/composer.json create mode 100644 kirby/vendor/composer/semver/phpstan-baseline.neon create mode 100644 kirby/vendor/composer/semver/src/Comparator.php create mode 100644 kirby/vendor/composer/semver/src/CompilingMatcher.php create mode 100644 kirby/vendor/composer/semver/src/Constraint/Bound.php create mode 100644 kirby/vendor/composer/semver/src/Constraint/Constraint.php create mode 100644 kirby/vendor/composer/semver/src/Constraint/ConstraintInterface.php create mode 100644 kirby/vendor/composer/semver/src/Constraint/MatchAllConstraint.php create mode 100644 kirby/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php create mode 100644 kirby/vendor/composer/semver/src/Constraint/MultiConstraint.php create mode 100644 kirby/vendor/composer/semver/src/Interval.php create mode 100644 kirby/vendor/composer/semver/src/Intervals.php create mode 100644 kirby/vendor/composer/semver/src/Semver.php create mode 100644 kirby/vendor/composer/semver/src/VersionParser.php create mode 100644 kirby/vendor/filp/whoops/LICENSE.md create mode 100644 kirby/vendor/filp/whoops/composer.json create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Exception/ErrorException.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Exception/Formatter.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Exception/Frame.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Exception/Inspector.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/CallbackHandler.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/Handler.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/HandlerInterface.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/JsonResponseHandler.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Handler/XmlResponseHandler.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Inspector/InspectorFactory.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Inspector/InspectorFactoryInterface.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Inspector/InspectorInterface.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/css/prism.css create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/css/whoops.base.css create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/js/clipboard.min.js create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/js/prism.js create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/js/zepto.min.js create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/env_details.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/frame_code.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/frame_list.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/frames_container.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/frames_description.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/header.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/header_outer.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/layout.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details_outer.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left_outer.html.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Run.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/RunInterface.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Util/Misc.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php create mode 100644 kirby/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php create mode 100644 kirby/vendor/laminas/laminas-escaper/COPYRIGHT.md create mode 100644 kirby/vendor/laminas/laminas-escaper/LICENSE.md create mode 100644 kirby/vendor/laminas/laminas-escaper/composer.json create mode 100644 kirby/vendor/laminas/laminas-escaper/src/Escaper.php create mode 100644 kirby/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php create mode 100644 kirby/vendor/laminas/laminas-escaper/src/Exception/InvalidArgumentException.php create mode 100644 kirby/vendor/laminas/laminas-escaper/src/Exception/RuntimeException.php create mode 100644 kirby/vendor/league/color-extractor/LICENSE create mode 100644 kirby/vendor/league/color-extractor/composer.json create mode 100644 kirby/vendor/league/color-extractor/src/Color.php create mode 100644 kirby/vendor/league/color-extractor/src/ColorExtractor.php create mode 100644 kirby/vendor/league/color-extractor/src/Palette.php create mode 100644 kirby/vendor/michelf/php-smartypants/License.md create mode 100644 kirby/vendor/michelf/php-smartypants/Michelf/SmartyPants.inc.php create mode 100644 kirby/vendor/michelf/php-smartypants/Michelf/SmartyPants.php create mode 100644 kirby/vendor/michelf/php-smartypants/Michelf/SmartyPantsTypographer.inc.php create mode 100644 kirby/vendor/michelf/php-smartypants/Michelf/SmartyPantsTypographer.php create mode 100644 kirby/vendor/michelf/php-smartypants/composer.json create mode 100644 kirby/vendor/phpmailer/phpmailer/LICENSE create mode 100644 kirby/vendor/phpmailer/phpmailer/composer.json create mode 100644 kirby/vendor/phpmailer/phpmailer/get_oauth_token.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php create mode 100644 kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/DSNConfigurator.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/Exception.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/OAuth.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/POP3.php create mode 100644 kirby/vendor/phpmailer/phpmailer/src/SMTP.php create mode 100644 kirby/vendor/psr/log/LICENSE create mode 100644 kirby/vendor/psr/log/composer.json create mode 100644 kirby/vendor/psr/log/src/AbstractLogger.php create mode 100644 kirby/vendor/psr/log/src/InvalidArgumentException.php create mode 100644 kirby/vendor/psr/log/src/LogLevel.php create mode 100644 kirby/vendor/psr/log/src/LoggerAwareInterface.php create mode 100644 kirby/vendor/psr/log/src/LoggerAwareTrait.php create mode 100644 kirby/vendor/psr/log/src/LoggerInterface.php create mode 100644 kirby/vendor/psr/log/src/LoggerTrait.php create mode 100644 kirby/vendor/psr/log/src/NullLogger.php create mode 100644 kirby/vendor/symfony/deprecation-contracts/LICENSE create mode 100644 kirby/vendor/symfony/deprecation-contracts/composer.json create mode 100644 kirby/vendor/symfony/deprecation-contracts/function.php create mode 100644 kirby/vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 kirby/vendor/symfony/polyfill-ctype/LICENSE create mode 100644 kirby/vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 kirby/vendor/symfony/polyfill-ctype/bootstrap80.php create mode 100644 kirby/vendor/symfony/polyfill-ctype/composer.json create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Idn.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Info.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/LICENSE create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/bootstrap.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/bootstrap80.php create mode 100644 kirby/vendor/symfony/polyfill-intl-idn/composer.json create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/LICENSE create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/Normalizer.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/bootstrap.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php create mode 100644 kirby/vendor/symfony/polyfill-intl-normalizer/composer.json create mode 100644 kirby/vendor/symfony/polyfill-mbstring/LICENSE create mode 100644 kirby/vendor/symfony/polyfill-mbstring/Mbstring.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/bootstrap.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/bootstrap80.php create mode 100644 kirby/vendor/symfony/polyfill-mbstring/composer.json create mode 100644 kirby/vendor/symfony/yaml/Command/LintCommand.php create mode 100644 kirby/vendor/symfony/yaml/Dumper.php create mode 100644 kirby/vendor/symfony/yaml/Escaper.php create mode 100644 kirby/vendor/symfony/yaml/Exception/DumpException.php create mode 100644 kirby/vendor/symfony/yaml/Exception/ExceptionInterface.php create mode 100644 kirby/vendor/symfony/yaml/Exception/ParseException.php create mode 100644 kirby/vendor/symfony/yaml/Exception/RuntimeException.php create mode 100644 kirby/vendor/symfony/yaml/Inline.php create mode 100644 kirby/vendor/symfony/yaml/LICENSE create mode 100644 kirby/vendor/symfony/yaml/Parser.php create mode 100755 kirby/vendor/symfony/yaml/Resources/bin/yaml-lint create mode 100644 kirby/vendor/symfony/yaml/Tag/TaggedValue.php create mode 100644 kirby/vendor/symfony/yaml/Unescaper.php create mode 100644 kirby/vendor/symfony/yaml/Yaml.php create mode 100644 kirby/vendor/symfony/yaml/composer.json create mode 100644 kirby/views/browser.php create mode 100644 kirby/views/fatal.php create mode 100644 kirby/views/panel.php create mode 100644 kirby/views/php.php create mode 100644 kirby/views/snippets/footer.php create mode 100644 kirby/views/snippets/header.php create mode 100644 media/index.html create mode 100644 site/accounts/index.html create mode 100644 site/blueprints/files/default.yml create mode 100644 site/blueprints/pages/board.yml create mode 100644 site/blueprints/pages/boards.yml create mode 100644 site/blueprints/pages/default.yml create mode 100644 site/blueprints/pages/member.yml create mode 100644 site/blueprints/pages/members.yml create mode 100644 site/blueprints/pages/season.yml create mode 100644 site/blueprints/pages/seasons.yml create mode 100644 site/blueprints/pages/tournament.yml create mode 100644 site/blueprints/pages/xoi.yml create mode 100644 site/blueprints/site.yml create mode 100644 site/blueprints/users/api.yml create mode 100644 site/cache/index.html create mode 100644 site/config/config.php create mode 100644 site/controllers/home.php create mode 100644 site/controllers/xoi.php create mode 100644 site/models/season.php create mode 100644 site/models/seasons.php create mode 100644 site/models/tournament.php create mode 100644 site/models/xoi.php create mode 100644 site/plugins/jsonField/.editorconfig create mode 100644 site/plugins/jsonField/.gitattributes create mode 100644 site/plugins/jsonField/.gitignore create mode 100755 site/plugins/jsonField/LICENSE.md create mode 100755 site/plugins/jsonField/README.md create mode 100644 site/plugins/jsonField/SECURITY.md create mode 100755 site/plugins/jsonField/composer.json create mode 100644 site/plugins/jsonField/index.css create mode 100644 site/plugins/jsonField/index.js create mode 100755 site/plugins/jsonField/index.php create mode 100644 site/plugins/jsonField/package-lock.json create mode 100644 site/plugins/jsonField/package.json create mode 100755 site/plugins/jsonField/src/components/jsonField.vue create mode 100755 site/plugins/jsonField/src/index.js create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/.gitignore create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/LICENSE.md create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/README.md create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/composer.json create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/config.php create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/fields/CroppedImage.php create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/index.css create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/index.js create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/index.php create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/lib/ImageResize.php create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/package-lock.json create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/package.json create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/src/fields/ImageCrop.vue create mode 100644 site/plugins/kirby-plugin-image-crop-field-2.0.5/src/main.js create mode 100755 site/plugins/kql-2.1.0/LICENSE.md create mode 100755 site/plugins/kql-2.1.0/README.md create mode 100755 site/plugins/kql-2.1.0/composer.json create mode 100644 site/plugins/kql-2.1.0/extensions/aliases.php create mode 100644 site/plugins/kql-2.1.0/extensions/api.php create mode 100644 site/plugins/kql-2.1.0/extensions/autoload.php create mode 100644 site/plugins/kql-2.1.0/extensions/helpers.php create mode 100644 site/plugins/kql-2.1.0/index.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Help.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptor.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/App.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Block.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blocks.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blueprint.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Collection.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/File.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/FileVersion.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Files.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Layout.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumn.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumns.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Layouts.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Model.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Page.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Pages.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Role.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Site.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Structure.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/StructureObject.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Translation.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/User.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Users.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Content/Content.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Interceptors/Content/Field.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Panel/Model.php create mode 100755 site/plugins/kql-2.1.0/src/Kql/Interceptors/Toolkit/Obj.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Kql.php create mode 100644 site/plugins/kql-2.1.0/src/Kql/Query.php create mode 100644 site/plugins/thumb/index.php create mode 100644 site/sessions/index.html create mode 100644 site/snippets/footer.php create mode 100644 site/snippets/header.php create mode 100644 site/templates/board.php create mode 100644 site/templates/default.php create mode 100644 site/templates/home.php create mode 100644 site/templates/xoi.php create mode 100644 sw.js create mode 100755 wsify_linux_amd64 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..31cb096 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +[*.{css,scss,less,js,json,ts,sass,html,hbs,mustache,phtml,html.twig,md,yml}] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +indent_size = 4 +trim_trailing_whitespace = false + +[site/templates/**.php] +indent_size = 2 + +[site/snippets/**.php] +indent_size = 2 + +[package.json,.{babelrc,editorconfig,eslintrc,lintstagedrc,stylelintrc}] +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e371e8b --- /dev/null +++ b/.gitignore @@ -0,0 +1,50 @@ +# System files +# ------------ + +Icon +.DS_Store + +# Temporary files +# --------------- + +/media/* +!/media/index.html + +# Lock files +# --------------- + +.lock + +# Editors +# (sensitive workspace files) +# --------------------------- +*.sublime-workspace +/.vscode +/.idea + +# -------------SECURITY------------- +# NEVER publish these files via Git! +# -------------SECURITY------------- + +# Cache Files +# --------------- + +/site/cache/* +!/site/cache/index.html + +# Accounts +# --------------- + +/site/accounts/* +!/site/accounts/index.html + +# Sessions +# --------------- + +/site/sessions/* +!/site/sessions/index.html + +# License +# --------------- + +/site/config/.license diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..5fe5c71 --- /dev/null +++ b/.htaccess @@ -0,0 +1,67 @@ +# Kirby .htaccess +# revision 2023-07-22 + +# rewrite rules + + +# enable awesome urls. i.e.: +# http://yourdomain.com/about-us/team +RewriteEngine on + +# make sure to set the RewriteBase correctly +# if you are running the site in a subfolder; +# otherwise links or the entire site will break. +# +# If your homepage is http://yourdomain.com/mysite, +# set the RewriteBase to: +# +# RewriteBase /mysite + +# In some environments it's necessary to +# set the RewriteBase to: +# +# RewriteBase / + +# block files and folders beginning with a dot, such as .git +# except for the .well-known folder, which is used for Let's Encrypt and security.txt +RewriteRule (^|/)\.(?!well-known\/) index.php [L] + +# block all files in the content folder from being accessed directly +RewriteRule ^content/(.*) index.php [L] + +# block all files in the site folder from being accessed directly +RewriteRule ^site/(.*) index.php [L] + +# block direct access to Kirby and the Panel sources +RewriteRule ^kirby/(.*) index.php [L] + +# make site links work +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^(.*) index.php [L] + + + +# pass the Authorization header to PHP +SetEnvIf Authorization "(.+)" HTTP_AUTHORIZATION=$1 + +# compress text file responses + +AddOutputFilterByType DEFLATE text/plain +AddOutputFilterByType DEFLATE text/html +AddOutputFilterByType DEFLATE text/css +AddOutputFilterByType DEFLATE text/javascript +AddOutputFilterByType DEFLATE application/json +AddOutputFilterByType DEFLATE application/javascript +AddOutputFilterByType DEFLATE application/x-javascript + + +# set security headers in all responses + + +# serve files as plain text if the actual content type is not known +# (hardens against attacks from malicious file uploads) +Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}" +Header set X-Content-Type-Options "nosniff" + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..17e99f5 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ + + + +**Kirby: the CMS that adapts to any project, loved by developers and editors alike.** +The Plainkit is a minimal Kirby setup with the basics you need to start a project from scratch. It is the ideal choice if you are already familiar with Kirby and want to start step-by-step. + +You can learn more about Kirby at [getkirby.com](https://getkirby.com). + +### Try Kirby for free +You can try Kirby and the Plainkit on your local machine or on a test server as long as you need to make sure it is the right tool for your next project. … and when you’re convinced, [buy your license](https://getkirby.com/buy). + +### Get going +Read our guide on [how to get started with Kirby](https://getkirby.com/docs/guide/quickstart). + +You can [download the latest version](https://github.com/getkirby/plainkit/archive/main.zip) of the Plainkit. +If you are familiar with Git, you can clone Kirby's Plainkit repository from Github. + + git clone https://github.com/getkirby/plainkit.git + +## What's Kirby? +- **[getkirby.com](https://getkirby.com)** – Get to know the CMS. +- **[Try it](https://getkirby.com/try)** – Take a test ride with our online demo. Or download one of our kits to get started. +- **[Documentation](https://getkirby.com/docs/guide)** – Read the official guide, reference and cookbook recipes. +- **[Issues](https://github.com/getkirby/kirby/issues)** – Report bugs and other problems. +- **[Feedback](https://feedback.getkirby.com)** – You have an idea for Kirby? Share it. +- **[Forum](https://forum.getkirby.com)** – Whenever you get stuck, don't hesitate to reach out for questions and support. +- **[Discord](https://chat.getkirby.com)** – Hang out and meet the community. +- **[Mastodon](https://mastodon.social/@getkirby)** – Spread the word. +- **[Instagram](https://www.instagram.com/getkirby/)** – Share your creations: #madewithkirby. + +--- + +© 2009-2022 Bastian Allgeier +[getkirby.com](https://getkirby.com) · [License agreement](https://getkirby.com/license) diff --git a/assets/css/src/font.scss b/assets/css/src/font.scss new file mode 100644 index 0000000..736f42f --- /dev/null +++ b/assets/css/src/font.scss @@ -0,0 +1,107 @@ +/* open-sans-300 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: url('../fonts/opensans/open-sans-v40-latin-300.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-300italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: url('../fonts/opensans/open-sans-v40-latin-300italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-regular - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/opensans/open-sans-v40-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: url('../fonts/opensans/open-sans-v40-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-500 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 500; + src: url('../fonts/opensans/open-sans-v40-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-500italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 500; + src: url('../fonts/opensans/open-sans-v40-latin-500italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-600 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: url('../fonts/opensans/open-sans-v40-latin-600.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-600italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: url('../fonts/opensans/open-sans-v40-latin-600italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-700 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: url('../fonts/opensans/open-sans-v40-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-700italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: url('../fonts/opensans/open-sans-v40-latin-700italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-800 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: url('../fonts/opensans/open-sans-v40-latin-800.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* open-sans-800italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 800; + src: url('../fonts/opensans/open-sans-v40-latin-800italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} diff --git a/assets/css/src/style.scss b/assets/css/src/style.scss new file mode 100644 index 0000000..9ca8214 --- /dev/null +++ b/assets/css/src/style.scss @@ -0,0 +1,598 @@ +//////////////////////////////////////////////////////////////////////////////// +// SCSS +//////////////////////////////////////////////////////////////////////////////// + +$border: 0.5vh; +$orange: orange; +$shadow: 0.2rem 0.2rem 0.4rem #000; +$text-shadow: 0.1rem 0.1rem 0.2rem rgba(0,0,0,0.8); +$bg: #214d1d; +$darker: rgba(0,0,0,0.3); +$bgcolor: #2f6f2a; +$line: 0.2rem; + +@mixin border { + border-radius: 0.25em; + border: 0.3em black solid; +} + +@mixin button { + @include border; + cursor: pointer; + background-color: $darker; +} + +@mixin button-text{ + color: white; + font-weight: bold; + padding: 0.3em 0.5em; + text-align: center; + display: flex; + align-items: flex-end; + text-shadow: $shadow; + font-family: "Open Sans"; +} +//////////////////////////////////////////////////////////////////////////////// +// Meyerweb Reset +//////////////////////////////////////////////////////////////////////////////// + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + // line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +//////////////////////////////////////////////////////////////////////////////// +// General +//////////////////////////////////////////////////////////////////////////////// + +@import "./font"; + +*{ + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root{ + font-size: Min(1.111111111vw, 1.481481481vh); +} + +body{ + margin: 0; + font-family: "Open Sans"; + background-color: black; + // background-color: $bgcolor; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + color: white; + display: flex; + flex-direction: column; + overflow: hidden; +} + +input{ + font-family: "Open Sans"; +} + +main{ + border-left: 0.2rem solid black; + border-right: 0.2rem solid black; + height: 67.5rem; /* 1080"px" */ + width: 90rem; /* 1440"px" */ + background-color: $bgcolor; + display: flex; + flex-direction: column; +} + +h1,h2,h3,h4,h5,h6{ + font-weight: bold; +} +.game .body{ + height:48rem; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Simple class defs +//////////////////////////////////////////////////////////////////////////////// + +.center{ + display: flex; + justify-content: center; +} + +.hidden{ + display: none !important; +} + +.label{ + font-size: 1.8em; + padding: 0.3em 0; + font-weight: bold; + display: block; +} + +//////////////////////////////////////////////////////////////////////////////// +// Content +//////////////////////////////////////////////////////////////////////////////// + +.overlay{ + @include border; + position: absolute; + top: 50%; + left: 50%; + z-index: 1000; + transform: translate(-50%,-50%); + width: 45rem; + max-height: 60rem; + overflow-y: auto; + &::-webkit-scrollbar { + width: 0; /* Safari and Chrome */ + } + background-color: $bgcolor; + padding: 2em 1.7em; +} + +.dialog{ + flex-grow: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: auto; + h2{ + font-size: 2.4em; + margin-bottom: 0.5em; + text-shadow: $shadow; + } + p{ + font-size: 1.4em; + margin-bottom: 1em; + text-shadow: $shadow; + } +} + +body.home{ + header{ + display: flex; + justify-content: center; + align-items: center; + height: 42%; + &>img{ + display: block; + width: 50%; + height: auto; + } + } + h1{ + text-align: center; + color: white; + font-size: 2.6rem; + text-shadow: $shadow; + } + .menu{ + flex-grow: 1; + display: flex; + align-items: center; + padding-bottom: 7.5rem; + + .mainmenu{ + width: 100%; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + h1{ + margin-bottom: 1em; + } + } + + } +} + + +nav.list{ + display: flex; + justify-content: center; + flex-grow: 1; + + &.horizontal{ + flex-direction: row; + justify-content: space-evenly; + & > *+*{ + margin-left: 1em; + } + } + &.vertical{ + flex-direction: column; + & > *+*{ + margin-top: 1em; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Elements +//////////////////////////////////////////////////////////////////////////////// + + +.element{ + @include border; + border-width: 0.3rem; + background-color: $bg; + cursor: pointer; + + &:focus, &:hover{ + outline: none; + border-color: $orange; + } + + &.input{ + font-size: 2em; + padding: 0.3em; + background-color: white; + color: black; + display: block; + width: 100%; + } + + &.player{ + display: flex; + justify-content: flex-start; + align-items: center; + padding: 0.7em; + + h2{ + font-size: 1.3em; + } + + &>*{ + margin-right: 1em; + } + + img{ + height: 3em; + aspect-ratio: 1/1; + object-position: top; + object-fit: cover; + } + } + + &.plain{ + @include button-text; + padding: 1rem 2rem; + justify-content: center; + align-items: center; + box-shadow: 0.25rem 0.25rem 1rem rgba(0,0,0, 0.3); + font-size: 1.6em; + &:hover,&:focus{ + background-color: rgba(0, 0, 0, 0.2); + border-color: $orange; + outline: none; + } + &.back{ + background-color: #5E716A; + } + &.new{ + background-color: darken($bg, 5%); + } + } + &.player { + height: 4.5em; + } + &.square{ + font-size: 1rem; + width: 20em; + height: 20em; + padding: 2.5em 1.25em; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background-color: $bg; + box-shadow: 0.25em 0.25em 1em rgba(0,0,0, 0.3); + cursor: pointer; + h2{ + @include button-text; + font-size: 2em; + padding: 0.6em 0 0 0; + } + &:hover,&:focus{ + background-color: rgba(0, 0, 0, 0.2); + border-color: $orange; + outline: none; + } + .icon{ + width: 65%; + height: auto; + svg{ + width: 100%; + aspect-ratio: 1/1; + object-fit: cover; + fill: white; + filter: drop-shadow($shadow); + } + img{ + width: 100%; + aspect-ratio: 1/1; + object-fit: cover; + object-position: top; + filter: drop-shadow($shadow); + } + } + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Game Setup +//////////////////////////////////////////////////////////////////////////////// + +body.xoi{ + main{ + display: flex; + justify-content: center; + .gamesetup{ + width: 65%; + margin: 0 auto; + h1{ + font-size: 3em; + text-align: center; + margin-bottom: 0.5em; + } + .menu{ + & > * { + margin-bottom: 1.3em; + } + } + } + .playerselect{ + & > h2{ + font-size: 1.8em; + margin-bottom: 0.7em; + text-align: center; + } + } + } + main .xoi{ + display: grid; + height: 100%; + grid-template-columns: 3fr 3fr 2fr 3fr 3fr; + grid-template-rows: 11.5rem 52rem 4rem; + grid-template-areas: + "player1 toGo1 score toGo2 player2" + "player1 game game game player2" + "navi navi navi navi navi" + ; + background-color: black; + + .bigToGo{ + margin: $line; + background-color: white; + border: 0.7rem solid black; + color: black; + font-weight: bold; + font-size: 7.5em; + display: flex; + justify-content: center; + align-items: center; + &.active{ + border-color: $orange; + } + &.one{ + grid-area: toGo1; + } + &.two{ + grid-area: toGo2; + } + } + .score{ + margin: $line 0; + grid-area: score; + color: white; + text-shadow: $text-shadow; + background-color: $bgcolor; + display: flex; + flex-direction: column; + justify-content: space-evenly; + &>div{ + /*sets and legs*/ + display: flex; + justify-content: space-evenly; + align-items: center; + h2,h3{ + margin:0; + text-align: center; + font-size: 1.3rem; + } + h3{ + font-size: 1.1rem; + } + &>h2{ + font-size: 3.2rem; + } + h2:nth-child(2){ + order:10; + } + } + } + .player{ + background-color: $bgcolor; + margin-bottom: $line/2; + + &.player1{ + grid-area: player1; + } + &.player2{ + grid-area: player2; + } + img{ + width: 100%; + aspect-ratio: 35/45; + object-fit: cover; + } + h2, h3{ + text-align: center; + margin: 0.2em; + text-shadow: $text-shadow; + } + h2{ + font-size: 1.8em; + } + h3{ + font-size: 1.2em; + } + .stats{ + display: grid; + grid-template-columns: auto 1fr 1fr 1fr; + grid-auto-rows: auto; + margin: 1em 0.6em; + text-shadow: $text-shadow; + + .row{ + display: contents; + font-size: 1.4em; + &.header{ + font-weight: bold; + } + :nth-child(2), :nth-child(3), :nth-child(4){ + text-align: center; + } + } + } + } + .game{ + grid-area: game; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 4.72727272rem 47.272727273rem; + &>div{ + display: grid; + grid-template-columns: 4fr 4fr 2fr 4fr 4fr; + grid-auto-rows: 4.72727272rem; + overflow-y: scroll; + grid-auto-flow: dense; + height: 100%; + &::-webkit-scrollbar { + width: 0; /* Safari and Chrome */ + } + &>div{ + font-size: 2rem; + text-align: center; + background: white; + color: black; + margin: 0 0 $line $line; + width: calc(100% - $line); + height: calc(100% - $line); + border: 0.15em transparent solid; + display: flex; + justify-content: center; + align-items: center; + &.headding{ + background-color: $bgcolor; + color: white; + text-shadow: $text-shadow; + } + &.rounds{ + grid-column: 3; + background-color: $bgcolor; + color: white; + text-shadow: $text-shadow; + } + &.player1.points{ + grid-column: 1; + } + &.player1.toGo{ + grid-column: 2; + font-size: 1.6rem; + } + &.player2.points{ + grid-column: 4; + } + &.player2.toGo{ + grid-column: 5; + margin-right: $line; + // width: calc(100% - 2*$line); + // height: calc(100% - $line); + font-size: 1.6rem; + } + &.input{ + padding: 0; + border: 0.15em orange solid; + input{ + text-align: center; + box-sizing: border-box; + font-family: inherit; + padding: 0.1em; + border: none; + width: 100%; + height: 100%; + font-size: 1em; + &:focus{ + outline: none; + } + } + } + } + &>div.headding{ + &.rounds{ + font-size: 1.4rem; + } + } + } + } + .nav{ + grid-area: navi; + background-color: $bgcolor; + margin-top: $line/2; + display: flex; + justify-content: space-evenly; + align-items: center; + span{ + font-size: 2em; + } + } + } +} diff --git a/assets/css/style.min.css b/assets/css/style.min.css new file mode 100644 index 0000000..b852581 --- /dev/null +++ b/assets/css/style.min.css @@ -0,0 +1 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}@font-face{font-display:swap;font-family:'Open Sans';font-style:normal;font-weight:300;src:url("../fonts/opensans/open-sans-v40-latin-300.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:italic;font-weight:300;src:url("../fonts/opensans/open-sans-v40-latin-300italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:normal;font-weight:400;src:url("../fonts/opensans/open-sans-v40-latin-regular.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:italic;font-weight:400;src:url("../fonts/opensans/open-sans-v40-latin-italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:normal;font-weight:500;src:url("../fonts/opensans/open-sans-v40-latin-500.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:italic;font-weight:500;src:url("../fonts/opensans/open-sans-v40-latin-500italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:normal;font-weight:600;src:url("../fonts/opensans/open-sans-v40-latin-600.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:italic;font-weight:600;src:url("../fonts/opensans/open-sans-v40-latin-600italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:normal;font-weight:700;src:url("../fonts/opensans/open-sans-v40-latin-700.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:italic;font-weight:700;src:url("../fonts/opensans/open-sans-v40-latin-700italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:normal;font-weight:800;src:url("../fonts/opensans/open-sans-v40-latin-800.woff2") format("woff2")}@font-face{font-display:swap;font-family:'Open Sans';font-style:italic;font-weight:800;src:url("../fonts/opensans/open-sans-v40-latin-800italic.woff2") format("woff2")}*{box-sizing:border-box;margin:0;padding:0}:root{font-size:Min(1.11111vw, 1.48148vh)}body{margin:0;font-family:"Open Sans";background-color:black;display:flex;justify-content:center;align-items:center;height:100vh;color:white;display:flex;flex-direction:column;overflow:hidden}input{font-family:"Open Sans"}main{border-left:0.2rem solid black;border-right:0.2rem solid black;height:67.5rem;width:90rem;background-color:#2f6f2a;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:bold}.game .body{height:48rem}.center{display:flex;justify-content:center}.hidden{display:none !important}.label{font-size:1.8em;padding:0.3em 0;font-weight:bold;display:block}.overlay{border-radius:0.25em;border:0.3em black solid;position:absolute;top:50%;left:50%;z-index:1000;transform:translate(-50%, -50%);width:45rem;max-height:60rem;overflow-y:auto;background-color:#2f6f2a;padding:2em 1.7em}.overlay::-webkit-scrollbar{width:0}.dialog{flex-grow:1;display:flex;flex-direction:column;justify-content:center;align-items:center;width:auto}.dialog h2{font-size:2.4em;margin-bottom:0.5em;text-shadow:0.2rem 0.2rem 0.4rem #000}.dialog p{font-size:1.4em;margin-bottom:1em;text-shadow:0.2rem 0.2rem 0.4rem #000}body.home header{display:flex;justify-content:center;align-items:center;height:42%}body.home header>img{display:block;width:50%;height:auto}body.home h1{text-align:center;color:white;font-size:2.6rem;text-shadow:0.2rem 0.2rem 0.4rem #000}body.home .menu{flex-grow:1;display:flex;align-items:center;padding-bottom:7.5rem}body.home .menu .mainmenu{width:100%;display:flex;align-items:center;flex-direction:column;justify-content:center}body.home .menu .mainmenu h1{margin-bottom:1em}nav.list{display:flex;justify-content:center;flex-grow:1}nav.list.horizontal{flex-direction:row;justify-content:space-evenly}nav.list.horizontal>*+*{margin-left:1em}nav.list.vertical{flex-direction:column}nav.list.vertical>*+*{margin-top:1em}.element{border-radius:0.25em;border:0.3em black solid;border-width:0.3rem;background-color:#214d1d;cursor:pointer}.element:focus,.element:hover{outline:none;border-color:orange}.element.input{font-size:2em;padding:0.3em;background-color:white;color:black;display:block;width:100%}.element.player{display:flex;justify-content:flex-start;align-items:center;padding:0.7em}.element.player h2{font-size:1.3em}.element.player>*{margin-right:1em}.element.player img{height:3em;aspect-ratio:1/1;object-position:top;object-fit:cover}.element.plain{color:white;font-weight:bold;padding:0.3em 0.5em;text-align:center;display:flex;align-items:flex-end;text-shadow:0.2rem 0.2rem 0.4rem #000;font-family:"Open Sans";padding:1rem 2rem;justify-content:center;align-items:center;box-shadow:0.25rem 0.25rem 1rem rgba(0,0,0,0.3);font-size:1.6em}.element.plain:hover,.element.plain:focus{background-color:rgba(0,0,0,0.2);border-color:orange;outline:none}.element.plain.back{background-color:#5E716A}.element.plain.new{background-color:#193a16}.element.player{height:4.5em}.element.square{font-size:1rem;width:20em;height:20em;padding:2.5em 1.25em;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#214d1d;box-shadow:0.25em 0.25em 1em rgba(0,0,0,0.3);cursor:pointer}.element.square h2{color:white;font-weight:bold;padding:0.3em 0.5em;text-align:center;display:flex;align-items:flex-end;text-shadow:0.2rem 0.2rem 0.4rem #000;font-family:"Open Sans";font-size:2em;padding:0.6em 0 0 0}.element.square:hover,.element.square:focus{background-color:rgba(0,0,0,0.2);border-color:orange;outline:none}.element.square .icon{width:65%;height:auto}.element.square .icon svg{width:100%;aspect-ratio:1/1;object-fit:cover;fill:white;filter:drop-shadow(0.2rem 0.2rem 0.4rem #000)}.element.square .icon img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;filter:drop-shadow(0.2rem 0.2rem 0.4rem #000)}body.xoi main{display:flex;justify-content:center}body.xoi main .gamesetup{width:65%;margin:0 auto}body.xoi main .gamesetup h1{font-size:3em;text-align:center;margin-bottom:0.5em}body.xoi main .gamesetup .menu>*{margin-bottom:1.3em}body.xoi main .playerselect>h2{font-size:1.8em;margin-bottom:0.7em;text-align:center}body.xoi main .xoi{display:grid;height:100%;grid-template-columns:3fr 3fr 2fr 3fr 3fr;grid-template-rows:11.5rem 52rem 4rem;grid-template-areas:"player1 toGo1 score toGo2 player2" "player1 game game game player2" "navi navi navi navi navi";background-color:black}body.xoi main .xoi .bigToGo{margin:.2rem;background-color:white;border:0.7rem solid black;color:black;font-weight:bold;font-size:7.5em;display:flex;justify-content:center;align-items:center}body.xoi main .xoi .bigToGo.active{border-color:orange}body.xoi main .xoi .bigToGo.one{grid-area:toGo1}body.xoi main .xoi .bigToGo.two{grid-area:toGo2}body.xoi main .xoi .score{margin:.2rem 0;grid-area:score;color:white;text-shadow:0.1rem 0.1rem 0.2rem rgba(0,0,0,0.8);background-color:#2f6f2a;display:flex;flex-direction:column;justify-content:space-evenly}body.xoi main .xoi .score>div{display:flex;justify-content:space-evenly;align-items:center}body.xoi main .xoi .score>div h2,body.xoi main .xoi .score>div h3{margin:0;text-align:center;font-size:1.3rem}body.xoi main .xoi .score>div h3{font-size:1.1rem}body.xoi main .xoi .score>div>h2{font-size:3.2rem}body.xoi main .xoi .score>div h2:nth-child(2){order:10}body.xoi main .xoi .player{background-color:#2f6f2a;margin-bottom:.1rem}body.xoi main .xoi .player.player1{grid-area:player1}body.xoi main .xoi .player.player2{grid-area:player2}body.xoi main .xoi .player img{width:100%;aspect-ratio:35/45;object-fit:cover}body.xoi main .xoi .player h2,body.xoi main .xoi .player h3{text-align:center;margin:0.2em;text-shadow:0.1rem 0.1rem 0.2rem rgba(0,0,0,0.8)}body.xoi main .xoi .player h2{font-size:1.8em}body.xoi main .xoi .player h3{font-size:1.2em}body.xoi main .xoi .player .stats{display:grid;grid-template-columns:auto 1fr 1fr 1fr;grid-auto-rows:auto;margin:1em 0.6em;text-shadow:0.1rem 0.1rem 0.2rem rgba(0,0,0,0.8)}body.xoi main .xoi .player .stats .row{display:contents;font-size:1.4em}body.xoi main .xoi .player .stats .row.header{font-weight:bold}body.xoi main .xoi .player .stats .row :nth-child(2),body.xoi main .xoi .player .stats .row :nth-child(3),body.xoi main .xoi .player .stats .row :nth-child(4){text-align:center}body.xoi main .xoi .game{grid-area:game;display:grid;grid-template-columns:1fr;grid-template-rows:4.72727272rem 47.272727273rem}body.xoi main .xoi .game>div{display:grid;grid-template-columns:4fr 4fr 2fr 4fr 4fr;grid-auto-rows:4.72727272rem;overflow-y:scroll;grid-auto-flow:dense;height:100%}body.xoi main .xoi .game>div::-webkit-scrollbar{width:0}body.xoi main .xoi .game>div>div{font-size:2rem;text-align:center;background:white;color:black;margin:0 0 .2rem .2rem;width:calc(100% - $line);height:calc(100% - $line);border:0.15em transparent solid;display:flex;justify-content:center;align-items:center}body.xoi main .xoi .game>div>div.headding{background-color:#2f6f2a;color:white;text-shadow:0.1rem 0.1rem 0.2rem rgba(0,0,0,0.8)}body.xoi main .xoi .game>div>div.rounds{grid-column:3;background-color:#2f6f2a;color:white;text-shadow:0.1rem 0.1rem 0.2rem rgba(0,0,0,0.8)}body.xoi main .xoi .game>div>div.player1.points{grid-column:1}body.xoi main .xoi .game>div>div.player1.toGo{grid-column:2;font-size:1.6rem}body.xoi main .xoi .game>div>div.player2.points{grid-column:4}body.xoi main .xoi .game>div>div.player2.toGo{grid-column:5;margin-right:.2rem;font-size:1.6rem}body.xoi main .xoi .game>div>div.input{padding:0;border:0.15em orange solid}body.xoi main .xoi .game>div>div.input input{text-align:center;box-sizing:border-box;font-family:inherit;padding:0.1em;border:none;width:100%;height:100%;font-size:1em}body.xoi main .xoi .game>div>div.input input:focus{outline:none}body.xoi main .xoi .game>div>div.headding.rounds{font-size:1.4rem}body.xoi main .xoi .nav{grid-area:navi;background-color:#2f6f2a;margin-top:.1rem;display:flex;justify-content:space-evenly;align-items:center}body.xoi main .xoi .nav span{font-size:2em} diff --git a/assets/fonts/opensans/open-sans-v40-latin-300.woff2 b/assets/fonts/opensans/open-sans-v40-latin-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e000fcb88e52fe53dc506ba380ceb1a3addbd5e1 GIT binary patch literal 18704 zcmV)BK*PUxPew8T0RR9107(!45&!@I0E;L907#_(0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-300italic.woff2 b/assets/fonts/opensans/open-sans-v40-latin-300italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5167821bce5ebda25916dfec7390a023f4c7603d GIT binary patch literal 19332 zcmV)2K+L~)Pew8T0RR91084}b5&!@I0FTrF081JG0RR9100000000000000000000 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 D&5%sh literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-500.woff2 b/assets/fonts/opensans/open-sans-v40-latin-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a35be30df89cce1d9284d9acf69e21a8a2dbc303 GIT binary patch literal 18720 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 P{Iv49n3dPgm3jgILNb37 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-500italic.woff2 b/assets/fonts/opensans/open-sans-v40-latin-500italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..039e72f3c42b7253974f76bb8cc05a1e741ba6b6 GIT binary patch literal 19332 zcmV)2K+L~)Pew8T0RR91084}b5&!@I0FRsi081MH0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-600italic.woff2 b/assets/fonts/opensans/open-sans-v40-latin-600italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bd6a4d19d2c950a2e380a54aca5fe8e7366049e9 GIT binary patch literal 19328 zcmV)CK*GOwPew8T0RR91084-X5&!@I0FRsi0817C0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-700.woff2 b/assets/fonts/opensans/open-sans-v40-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7e3b8b0da7910367ea534a0546929cc36fb7b8f3 GIT binary patch literal 18260 zcmV(}K+wN;Pew8T0RR9107p~+5&!@I0E*lI07mHm0RR9100000000000000000000 z0000Qd>fBK9ENBHU_Vn-K~!1*f-neydDUbqj3 zURQ$N4;g|< zmN;|3g`U--h75(uB~zLD!(+XY~3^+@g1P9bBZbQ$x)@ z$%eF1eS0F4owRuXYKUi)#!T3NO5~u4knJ} zF0K*N!4D?HQ<$u&{oM4UzKhHXM79KxsK1;!@ZahPjeU~KgWuXe-bpgEC1M4H3V>zV zk_A*KWZ6}yo-YdoZ`X&%)879{Gs5YRK^>Gy*-6Z)2gn1kO;NF#GeD=PXrow&(S(Fj zB?=-)h>8gY1}3^$3w0It+7&AoF3Pzt+I@cg&4sJxq3_=J&g|^I6b)LU{djF$(W*!^ zAR+$kf93M$u0EG!P|$yy`np2Hq8Un3!IU+V2`}g7h#Uc5+b7<=y4SlCScaqyvGQH1 zzyX@{o&!_@7Z_b27sn1G(C-E`j_EM<`=7Q-^%C}-%`$w|4>faDn;l>ekYU(TuR$8R zy2!*KerL&(u{SiuK7QM4>8n3D#4S!VnReRZa$PPQv(@(n6onPgP1~5R*zAc(d{My3 z-*Dpa1a!~{g6pcL1G&5t^;2eV+5S$oy$+l zDW)mlA?DVMGR#NgX8Z?|c5emYzG}~?1wsFV){lo89;g(>vXO02e_X(!3I}++ct-tu zQ_c1-mMgB}5K8HYi;yFwqLLh9EE{mkgBU(I+xD1D>s$P_I#D+Dku1V+OO6B<}4=j(V-N2-Z$u6 zL?msbEtQ-gnS^2?5+logubDugc5c;Xj&nRD(8xW%&hKSu?jK>315&n>Dt?p@Eg6Im zGK>{+(R;6JkZtut=2dW|4Ki}zD%m?+Lj@}AjT%wdL2Td}b6)uDcYpZPU+;~GAA&Ad z$*^{^Y$n=KNBgOZ4lzDD#jL1oM|78?;>Fg8@x}+?qhC+a&;I`05wM;}eCA4b#;II@ z*TrwS8sK%)DhdH!w_myC0I$b4Z85-${D8pnSAd2dUpF{E6~Y=|2O`Hn$FA8{ZcINm zIEGAU2Q5l*(aR>{fpB~U@ZttM+s*!?sy3w6EomD64H*6HAIA_5rsAG4+u!yp-`^z9 zyf;I%)xKw(;8ZVm!w*ZSe}pM%$^NWg#cQq7&NWgnx(R)d#S5?LOe7@;&#Hi z!FnuQU-nO;QncUF)uT7`s$SYvJ*%ho#2($FdRT{dpYGnByM4D&lugylpa1*A>&VgY zJa6a5ar`^gp^d9obhS0sXp2?3B0iIhPq{7k%W)PswN9}jDD#JXVe{-&KFx=DH?KqM za-PeRaMzLCpSyA_2XcM>nU%RLJF+$P*(6wet zF+mK+KyiiYiC^}`-re^i9(QWoiQ7G_tghbMF+DX-)rB}y6Qv!uL(})hju@#LQ@M7lp`pe)!sy^5-5z_Z11W#qf_gDz*TAq0MfKxx*maS zQcS(HL-btLi@>QjzjPOM$|m(iNsZoyRJ-jK7Y74tSxuZmoXSJDk#}XXPc9b1r`?1Hc3Hz)NG&nm+TOX>P%BhTE;O1PQsc3YDVqVgl{!L;>+enQ>Ew;Hg zAinu@&&bBXmIEmH0B+89xGq<4=V=i~D1C>@^=64?c^ykPFS88qC`M(1Bu(rCZpk

#y4osjET*tg6^U0sZir2G43M__c#`g`)LgxRJiT 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 z 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 XA)6D01vdDu_PM#Q&W$ViJOBUy&ees~ literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-700italic.woff2 b/assets/fonts/opensans/open-sans-v40-latin-700italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2c96334c4cde0e43c2cd29036da75b2402794937 GIT binary patch literal 18860 zcmV)5K*_&%Pew8T0RR91075&!@I0FML!07*dr0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-800.woff2 b/assets/fonts/opensans/open-sans-v40-latin-800.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cf651145951b0ef4cb1ca4437b42fe8c9f31e4d8 GIT binary patch literal 18644 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-800italic.woff2 b/assets/fonts/opensans/open-sans-v40-latin-800italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..17bc073467bdc3d3cf8ce9147527e5168948db4c GIT binary patch literal 19056 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/opensans/open-sans-v40-latin-italic.woff2 b/assets/fonts/opensans/open-sans-v40-latin-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..84ee1979dcb4f04a47397fc88612ddb1850bb906 GIT binary patch literal 19280 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 PU3zbBiqFQyt^oi5TvQ8C literal 0 HcmV?d00001 diff --git a/assets/img/YGDC.png b/assets/img/YGDC.png new file mode 100644 index 0000000000000000000000000000000000000000..afd91906580f699f6360d0db54481ede855a073d GIT binary patch literal 548345 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

3VoF5HaPL*5KcP-q+CQ@>1uC<^ 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

XQ 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 z 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

kpPYJvl3;Fx1Va^2TI@vr!OW{==OL@_M= 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Ð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 tq$Ph1q + + + + + + + diff --git a/assets/img/dart.svg b/assets/img/dart.svg new file mode 100644 index 0000000..458fc07 --- /dev/null +++ b/assets/img/dart.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/assets/img/placeholder_person.png b/assets/img/placeholder_person.png new file mode 100644 index 0000000000000000000000000000000000000000..e7bdbefd2fb2b16ba52802312f822a1b69d587f4 GIT binary patch literal 216568 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 M07*qoM6N<$g6k=5NdN!< literal 0 HcmV?d00001 diff --git a/assets/img/watch.svg b/assets/img/watch.svg new file mode 100644 index 0000000..7033f33 --- /dev/null +++ b/assets/img/watch.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/assets/js/componentPromise.js b/assets/js/componentPromise.js new file mode 100644 index 0000000..30cdcc6 --- /dev/null +++ b/assets/js/componentPromise.js @@ -0,0 +1,105 @@ + +const html = (v) => { return v[0] }; + +export const renderer = { + props: ['stack'], + setup(props) { + + }, + template: html` + + + + ` +} + +function reGet(stack) { + return safePromise(new Promise(function(resolve, reject) { + const lastState = stack[stack.length-1]; + lastState[lastState.length-1].resolve = resolve; + lastState[lastState.length-1].reject = reject; + })); +} + +export function popLastElem(stack) { + const elem = stack[stack.length-1].pop(); + if (stack[stack.length-1].length == 0) { + stack.pop(); + } + return elem; +} + +function safePromise(promise) { + return promise.then(data => [ data, undefined ]).catch(error => [ null, error != undefined ? error : -1 ]); +} + +export function overlayAndGet(component, properties, stack, reGetFlag=false) { + if (reGetFlag) return reGet(stack); + properties["stack"] = stack; + return safePromise(new Promise(function(resolve, reject) { + stack.push([{ + "component": component, + "properties": properties, + "resolve": resolve, + "reject": reject + }]) + })); +} + +export function replaceAndGet(component, properties, stack, reGetFlag=false) { + if (reGetFlag) return reGet(stack); + properties["stack"] = stack; + return safePromise(new Promise(function(resolve, reject) { + stack[stack.length-1].push({ + "component": component, + "properties": properties, + "resolve": resolve, + "reject": reject + }) + })); +} + + +export async function overlayAndPop(component, properties, stack){ + const ret = await overlayAndGet(component, properties, stack); + popLastElem(stack); + return ret; +} + +export async function replaceAndPop(component, properties, stack){ + const ret = await replaceAndGet(component, properties, stack); + popLastElem(stack); + return ret; +} + + +export const powerStateMachine = async (stateMachine, stack, initState=0, initInput=undefined) => { + let stateHistory = [initState]; + let resultHistory = [initInput]; + let reGet = false; + let newState, newResult; + while (stateHistory[stateHistory.length-1] != undefined) { + const state = stateHistory[stateHistory.length-1]; + const result = resultHistory[resultHistory.length-1]; + [newState, newResult] = await stateMachine[state](result, reGet); + if (newState == -1){ + reGet = true; + stateHistory.pop(); + resultHistory.pop(); + if (newResult != undefined) { + resultHistory[resultHistory.length-1] = newResult; + } + } else if (newState == state){ + reGet = true; + resultHistory[resultHistory.length-1] = newResult; + } else if (newState == undefined) { + return newResult; + } else { + reGet = false; + stateHistory.push(newState); + resultHistory.push(newResult); + } + } +} diff --git a/assets/js/components/dialog.js b/assets/js/components/dialog.js new file mode 100644 index 0000000..569e43d --- /dev/null +++ b/assets/js/components/dialog.js @@ -0,0 +1,25 @@ +import { ref, computed } from "vue"; +import { getId } from "../handlers.js"; +import { handleActive, ArrowVerticalKeyHandler, ArrowHorizontalKeyHandler, NumberKeyHandler } from "../handlers.js"; + +const html = (v) => { return v[0] }; + +export default { + props: ['active', 'title', 'text', 'buttons', "withshortkey", "stack"], + setup(props, { emit }) { + const handlers = [ArrowHorizontalKeyHandler]; + if (props.withshortkey) { + handlers.push(NumberKeyHandler); + } + handleActive(props, handlers); + const elements = computed(() => props.buttons.map((i) => { i.onClick = () => emit('resolve', i.result ); return i; }) ); + return { elements } + }, + template: html` +

+ ` +} diff --git a/assets/js/components/init.js b/assets/js/components/init.js new file mode 100644 index 0000000..dd4e3bc --- /dev/null +++ b/assets/js/components/init.js @@ -0,0 +1,22 @@ +import list from "./list.js"; + +import playerElem from "./playerElem.js"; +import plainElem from "./plainElem.js"; +import squareElem from "./squareElem.js"; +import inputElem from "./inputElem.js"; + +import playerselect from "./playerselect.js"; +// import overlay from "./overlay.js"; +import dialog from "./dialog.js"; + +export default (app) => { + app.component("d-list", list); + + app.component("d-playerElem", playerElem); + app.component("d-plainElem", plainElem); + app.component("d-squareElem", squareElem); + app.component("d-inputElem", inputElem); + + app.component("d-playerselect", playerselect); + app.component("d-dialog", dialog); +} diff --git a/assets/js/components/inputElem.js b/assets/js/components/inputElem.js new file mode 100644 index 0000000..790361a --- /dev/null +++ b/assets/js/components/inputElem.js @@ -0,0 +1,17 @@ +import { onMounted, ref, computed, watch, nextTick } from "vue"; + +const html = (v) => { return v[0] }; + +export default { + props: ['modelValue'], + setup(props) { + + return { window } + }, + template: html` + + ` +} diff --git a/assets/js/components/list.js b/assets/js/components/list.js new file mode 100644 index 0000000..e5589ad --- /dev/null +++ b/assets/js/components/list.js @@ -0,0 +1,17 @@ +import { ref, computed } from "vue"; +import { getId } from "../handlers.js"; + +const html = (v) => { return v[0] }; + +export default { + props: ['elements', 'type', "withshortkey"], + setup(props) { + return { } + }, + template: html` + + ` +} diff --git a/assets/js/components/overlay.js b/assets/js/components/overlay.js new file mode 100644 index 0000000..683e4fd --- /dev/null +++ b/assets/js/components/overlay.js @@ -0,0 +1,14 @@ +const html = (v) => { return v[0] }; + +// Not needed anymore +export default { + props: ['component', "props", "active", "stack"], + setup(props) { + return { } + }, + template: html` +
+ +
+ ` +} diff --git a/assets/js/components/plainElem.js b/assets/js/components/plainElem.js new file mode 100644 index 0000000..c50787a --- /dev/null +++ b/assets/js/components/plainElem.js @@ -0,0 +1,16 @@ +import { computed, ref } from "vue"; +import { getId } from "../handlers.js"; + +const html = (v) => { return v[0] }; + +export default { + props: ['text', 'withshortkey', 'autofocus'], + setup(props) { + const el = ref(null); + const suffix = computed(() => props.withshortkey ? ` (${getId(el.value)})`: ""); + return { suffix, el } + }, + template: html` +
{{ text }}{{ suffix }}
+ ` +} diff --git a/assets/js/components/playerElem.js b/assets/js/components/playerElem.js new file mode 100644 index 0000000..10a037e --- /dev/null +++ b/assets/js/components/playerElem.js @@ -0,0 +1,23 @@ +import { onMounted, ref, computed, watch, nextTick } from "vue"; + +const html = (v) => { return v[0] }; + +export default { + props: ['player', 'id'], + setup(props) { + return { } + }, + template: html` +
+ + +
+ ` +} diff --git a/assets/js/components/playerselect.js b/assets/js/components/playerselect.js new file mode 100644 index 0000000..627ed0f --- /dev/null +++ b/assets/js/components/playerselect.js @@ -0,0 +1,29 @@ +import { nextTick, reactive, ref, computed, onMounted, onUnmounted } from "vue"; +import { handleActive, ArrowVerticalKeyHandler, ArrowHorizontalKeyHandler, NumberKeyHandler } from "../handlers.js"; + +const html = (v) => { return v[0] }; + +export default { + props: ['players', 'stack', 'active', 'input'], + setup(props, context) { + handleActive(props, [ArrowVerticalKeyHandler]); + const children = computed(() => { + return props.players.map((p) => { + return { + component: "d-playerElem", + props: {"player": p}, + onClick: () => { + context.emit('resolve', p); + } + } + }) + }); + return { children } + }, + template: html` +
+ + +
+ ` +} diff --git a/assets/js/components/squareElem.js b/assets/js/components/squareElem.js new file mode 100644 index 0000000..982c088 --- /dev/null +++ b/assets/js/components/squareElem.js @@ -0,0 +1,22 @@ +import { computed, ref } from "vue"; +import { getId } from "../handlers.js"; + +const html = (v) => { return v[0] }; + +export default { + props: ["icon", "text", "withshortkey"], + setup(props) { + const el = ref(null); + const suffix = computed(() => props.withshortkey ? ` (${getId(el.value)})`: ""); + return { suffix, el } + }, + template: html` +
+
+ + +
+

{{ text }}{{ suffix }}

+
+ ` +} diff --git a/assets/js/handlers.js b/assets/js/handlers.js new file mode 100644 index 0000000..423de92 --- /dev/null +++ b/assets/js/handlers.js @@ -0,0 +1,155 @@ +import { ref, watch, nextTick, onBeforeUnmount } from 'vue'; +import { state } from "./stateMgr.js"; + +function getNumberFromKeyEvent(event) { + if (event.keyCode >= 96 && event.keyCode <= 105) { + return event.keyCode - 96; + } else if (event.keyCode >= 48 && event.keyCode <= 57) { + return event.keyCode - 48; + } + return null; +} +export const ArrowHorizontalKeyHandler = (event) => { + if (event.key == "ArrowRight") { + const idx = state.sortedElements.indexOf(String(state.activeIndex)); + state.activeIndex = state.sortedElements[(idx+1)%state.sortedElements.length]; + } else if (event.key == "ArrowLeft") { + const idx = state.sortedElements.indexOf(String(state.activeIndex)) + state.activeIndex = state.sortedElements[(idx+state.sortedElements.length-1)%state.sortedElements.length]; + } +} +export const ArrowVerticalKeyHandler = (event) => { + if (event.key == "ArrowDown") { + const idx = state.sortedElements.indexOf(String(state.activeIndex)) + state.activeIndex = state.sortedElements[(idx+1)%state.sortedElements.length]; + event.preventDefault(); + } else if (event.key == "ArrowUp") { + const idx = state.sortedElements.indexOf(String(state.activeIndex)) + state.activeIndex = state.sortedElements[(idx+state.sortedElements.length-1)%state.sortedElements.length]; + event.preventDefault(); + } +} +export const NumberKeyHandler = (event) => { + let i; + if ((i = getNumberFromKeyEvent(event)) != null) { + if (state.elements[i] != undefined) { + event.stopPropagation(); + event.preventDefault(); + state.activeIndex = i; + state.elements[i].focus(); + state.elements[i].click(); + } + } +} + + +export const EnterHandler = (event) => { + if (event.key == "Enter"){ + if (state.hasOwnProperty("activeElement") && state.activeElement) { + event.stopPropagation(); + if (state.activeElement.tagName != "BUTTON"){ + event.preventDefault(); + } + state.activeElement.click(); + } + } +} + + +export const handleActive = (props, keydownHandlers) => { + const ownCopy = keydownHandlers.map((f) => (e) => f(e)); + const currActive = ref(1); + state.activeIndex = 1; + const handle = () => { + if (props.active){ + state.activeIndex = currActive.value; + for (var i = 0; i < keydownHandlers.length; i++) { + document.addEventListener("keydown", ownCopy[i]); + } + } else { + currActive.value = state.activeIndex; + for (var i = 0; i < ownCopy.length; i++) { + document.removeEventListener("keydown", ownCopy[i]); + } + } + } + onBeforeUnmount(() => { + // Cleanup + for (var i = 0; i < ownCopy.length; i++) { + document.removeEventListener("keydown", ownCopy[i]); + } + }); + watch(() => props.active, handle); + handle(); +} + +export const vAutofocus = { + mounted(el, binding, vnode, prevVnode) { + if (binding.value == undefined || binding.value) { + state.activeIndex = getId(el); + } + } +} + +export function getId(el) { + for (var key in state.elements) { + if (state.elements[key] == el){ + return key; + } + } +} + + + +const add = (el) => { + const focus = () => { + if (state.activeElement !== el) { + state.activeIndex = val; + state.activeElement = el; + } + } + + const blur = (e) => { + if (e.relatedTarget === null) { + state.activeElement = undefined; + state.activeIndex = undefined; + } + } + let val; + if (el.dataset["tabindex"]) { + val = el.dataset["tabindex"]; + } else { + val = Object.keys(state.elements).length+1; + } + el.tabIndex = val; + state.elements[val] = el; + el.addEventListener("focus", focus); + el.addEventListener("blur", blur); + el.blurcb = blur; + el.focuscb = focus; +}; + +const remove = (el) => { + delete el.removeAttribute("tabindex"); + delete state.elements[getId(el)] + // el.removeEventListener("blur", el.blurfn); + // el.removeEventListener("focus", el.focusfn); +} + +export const vIndex = { + updated(el, binding, vnode, prevVnode) { + if (binding.oldValue != binding.value){ + if (binding.oldValue) { + remove(el); + } else { + add(el); + } + } + }, + mounted(el, binding, vnode, prevVnode) { + add(el); + }, + beforeUnmount(el, binding, vnode, prevVnode) { + remove(el); + } +} diff --git a/assets/js/kirby.js b/assets/js/kirby.js new file mode 100644 index 0000000..051225d --- /dev/null +++ b/assets/js/kirby.js @@ -0,0 +1,152 @@ +import { ref, reactive, watch, computed } from "vue"; + + +function isIterable(obj) { + // checks for null and undefined + if (obj == null) { + return false; + } + return typeof obj[Symbol.iterator] === 'function'; +} + +export async function homeAction(options = {}) { + return await ( await fetch("/", { + method: "POST", + headers: { + Accept: "application/json", + }, + body: JSON.stringify(options), + })).json(); +} + +export async function getQuery(query, options = {}) { + return (await ( await fetch("/api/query", { + method: "POST", + headers: { + Accept: "application/json", + // completely unsafe + // Authorization: "Basic "+btoa("api@api.de:H]RcScp];76!-PB") + }, + body: JSON.stringify({ + query: query, + ...options + }), + })).json()).result; +} + + +async function getKirby(endpoint) { + return (await (await fetch("/api"+endpoint, { + method: "GET", + headers: { + // completely unsafe + Authorization: "Basic "+btoa("api@api.de:H]RcScp];76!-PB") + } + })).json()).data; + // .catch(error => { + // console.log("Error:", error); + // }); +} + +export async function setKirby(endpoint, data) { + const response = await fetch(`/${endpoint}`, { + method: "POST", + cache: "no-cache", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + action: "update", + data: data + }), + }); + const ret = await response.json(); + return ret; +} + +function updateContent(endpoint, data) { + return fetch("/api"+endpoint, { + method: "PATCH", + headers: { + // "X-CSRF" : g_csrf, + // completely unsafe + "Authorization": "Basic "+btoa("api@api.de:H]RcScp];76!-PB") + }, + body: JSON.stringify(data) + }) + .then(response => response.json()) + .then(response => { + // console.log(response.data); + }) + .catch(error => { + console.log("Error:", error); + }); +} + + +export const convertToPages = async (obj) => { + for(var key in obj){ + if (obj[key].hasOwnProperty("link")) { + obj[key] = await kirbyPage(obj[key].link); + } else if (Array.isArray(obj[key]) || typeof obj[key] === 'object' ) { + obj[key] = convertToPages(obj[key]); + } + } + return obj; +} + + +export const kirbyPage = async (endpoint) => { + if (!endpoint.startsWith("/pages/")){ + endpoint = "/pages/"+endpoint.replaceAll("/","+"); + } + + let patch = false; + const page = new Proxy(reactive({}), { + async set(target, key, value) { + if(value.hasOwnProperty("uuid") && value.uuid.startsWith("page://")){ + value = await kirbyPage(value.link); + } + if (Array.isArray(value) || typeof value === 'object' ) { + for(var i in value){ + if (value[i].hasOwnProperty("uuid") && value[i].uuid.startsWith("page://")) { + value[i] = await kirbyPage(value[i].link); + } + } + } + target[key] = value; + if (patch) { + const data = {}; + if (value.isPage) { + data[key] = "page://"+value.uuid; + } else if (Array.isArray(value) || typeof value === 'object' ) { + data[key] = []; + for (var i in value) { + if (value[i].isPage) { + data[key].push("page://"+value[i].uuid); + } else { + data[key].push(value[i]); + } + } + } else { + data[key] = value; + } + updateContent(endpoint, data); + } + return true; + }, + get(target, prop, receiver) { + if (prop == "isPage") { + return true; + } + return target[prop]; + } + } + ); + const lastData = ref({}); + const kData = await getKirby(endpoint); + Object.assign(page, kData.content); + + patch = true; + return page; +} diff --git a/assets/js/stateMgr.js b/assets/js/stateMgr.js new file mode 100644 index 0000000..446f7c3 --- /dev/null +++ b/assets/js/stateMgr.js @@ -0,0 +1,46 @@ +import { reactive, nextTick, watch, computed } from "vue"; + +export const state = reactive({ + _activeIndex: undefined, + get activeIndex(){ + return state._activeIndex; + }, + set activeIndex(val){ + // if (val === state._activeIndex) return; + state._activeIndex = val; + if (val === undefined) return; + state._activeElement = document.querySelector(`[tabindex="${val}"]`); + nextTick(() => { + nextTick(() => { + state._activeElement?.focus(); + }) + }) + }, + _activeElement: undefined, + get activeElement(){ + return state._activeElement; + }, + set activeElement(val){ + // if (val === state._activeElement) return; + state._activeElement = val; + if (val === undefined) return; + state.activeIndex = val.tabIndex; + }, + elements: {}, + sortedElements: computed(() => Object.keys(state.elements)), + init: true, + back: [], + backActive: [] +}); + +watch(() => state.sortedElements, () => { + if (state._activeIndex !== undefined && state.sortedElements.length > 0){ + state.activeIndex = state._activeIndex; + } +}) + +watch(() => state.activeIndex, () => { + if (state.activeIndex === undefined && state.sortedElements.length > 0){ + state.activeIndex = state.sortedElements[0]; + } +}) diff --git a/assets/js/views/home.js b/assets/js/views/home.js new file mode 100644 index 0000000..d791f66 --- /dev/null +++ b/assets/js/views/home.js @@ -0,0 +1,229 @@ +import { nextTick, watch, reactive, ref, computed, onMounted, onUnmounted } from "vue"; +import { getQuery, homeAction } from "../kirby.js"; +import { handleActive, ArrowVerticalKeyHandler, ArrowHorizontalKeyHandler, NumberKeyHandler } from "../handlers.js"; +import { overlayAndGet, powerStateMachine, popLastElem } from "../componentPromise.js"; + +const html = (v) => { return v[0] }; + + +//////////////////////////////////////////////////////////////////////////////// +// Components +//////////////////////////////////////////////////////////////////////////////// + +export const selectMode = { + props: ['active', 'stack'], + setup(props, { emit }) { + handleActive(props, [NumberKeyHandler, ArrowHorizontalKeyHandler]); + + const children = reactive([ + { + // component: "d-squareElem", + // props:{ + // text: "Create Game", + // icon: "/assets/img/dart-board.svg", + // }, + // onClick: () => { + // emit("resolve", "create"); + // } + // }, { + component: "d-squareElem", + props:{ + text: "Play Game", + icon: "/assets/img/dart.svg", + }, + onClick: () => { + emit("resolve", "play"); + } + } + ]); + const canvas = ref([]); + return { children } + }, + template: html` + + ` +} + + +export const selectTournament = { + props: ['tournaments', 'active', 'stack'], + setup(props, { emit }) { + handleActive(props, [NumberKeyHandler, ArrowVerticalKeyHandler]); + + const children = computed(() => { + const items = []; + for (let i in props.tournaments){ + const tournament = props.tournaments[i]; + items.push({ + component: "d-plainElem", + props: { + text: tournament.title, + }, + onClick: () => { + emit("resolve", tournament.id); + } + }) + } + items.push({ + component: "d-plainElem", + props: { + text: "Back", + class: "back" + }, + onClick: () => { + emit("reject"); + } + }); + return items; + }); + return { children } + }, + template: html` + + ` +} + + +export const selectGame = { + props: ['games', 'active', 'stack'], + setup(props, { emit }) { + handleActive(props, [NumberKeyHandler, ArrowVerticalKeyHandler]); + + const children = computed(() => { + const items = []; + items.push({ + component: "d-plainElem", + props: { + text: "Create Game", + class: "new" + }, + onClick: () => { + emit("resolve", "create"); + } + }); + for (let i in props.games){ + const game = props.games[i]; + items.push({ + component: "d-plainElem", + props: { + text: game.player[0]?.forename + " vs. " + game.player[1]?.forename, + }, + onClick: () => { + emit("resolve", game.id); + } + }) + } + items.push({ + component: "d-plainElem", + props: { + text: "Back", + class: "back" + }, + onClick: () => { + emit("reject"); + } + }); + return items; + }); + return { children } + }, + template: html` + + ` +} + + +//////////////////////////////////////////////////////////////////////////////// +// State Machine +//////////////////////////////////////////////////////////////////////////////// + +const stateMachine = (stack) => { + return { + 0: async (input, reGet) => { + const [result, error] = await overlayAndGet("d-selectMode", { }, stack, reGet); + if (error != undefined) { + return [0, error]; + } + if (result == "play") { + return [1, result]; + } + if (result == "create") { + // TODO: + return [1, result]; + } + }, + 1: async (input, reGet) => { + const tournaments = await getQuery("site.find('seasons').getRunningTournaments", { + select: { + title: "page.title", + id: "page.id", + } + }); + const [result, error] = await overlayAndGet("d-selectTournament", { "tournaments": tournaments}, stack, reGet); + if (error != undefined) { + popLastElem(stack); + return [-1, error]; + } + return [2, result]; + }, + 2: async (input, reGet) => { + const games = await getQuery(`site.find('${input}').getRunningGames`, { + select: { + title: "page.title", + id: "page.id", + uuid: "page.uuid", + player: { + query: "page.players.toPages", + select:{ + forename: "page.forename" + } + } + } + }); + const [result, error] = await overlayAndGet("d-selectGame", {"games": games}, stack, reGet); + if (error != undefined) { + popLastElem(stack); + return [-1, error]; + } + if (result == "create") { + // Create Game and redirect + const ret = await homeAction({ + "action": "createGame", + "tournament": input + }) + if (ret.status == "ok") { + window.setTimeout(() => { + window.location.href = ret.url; + return false; + },1); + } + return [undefined, undefined]; + } + window.setTimeout(() => { + window.location.href = result; + return false; + },1); + return [undefined, undefined]; + } + }; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Exports +//////////////////////////////////////////////////////////////////////////////// + +export const homeHandler = async (stack) => { + const sm = stateMachine(stack); + powerStateMachine(sm, stack); +} + +export const initHomeView = (app) => { + app.component("d-selectMode", selectMode).component("d-selectTournament", selectTournament).component('d-selectGame', selectGame) +} diff --git a/assets/js/views/xoi.js.bak b/assets/js/views/xoi.js.bak new file mode 100644 index 0000000..87236b8 --- /dev/null +++ b/assets/js/views/xoi.js.bak @@ -0,0 +1,499 @@ +import { nextTick, reactive, ref, computed, onMounted, onUnmounted } from "vue"; +import { state } from "../stateMgr.js"; +import { getQuery } from "../kirby.js"; +import { initSubState, ArrowVerticalKeyHandler, ArrowHorizontalKeyHandler, NumberKeyHandler } from "../handlers.js"; + + +const html = (v) => { return v[0] }; + +function initView(view){ + const back = state.view; + state.back.push(() => { state.view = back }); + state.backActive.push(state.activeIndex); + state.view = view; +} + +const togo = { + props: ['togo'], + setup(props) { + + return { } + }, + template: html` +
{{ togo }}
+ ` +} + +const game = { + props: ['players', 'currentleg', 'max', 'sendvisit', 'modelValue', 'overlay'], + setup(props, context) { + const length = computed(() => props.currentleg?.visits.length ); + const visits = computed(() => props.currentleg? props.currentleg.visits:undefined ); + const loop = computed(() => Math.max(length.value?length.value+(length.value?length.value%2:0):0,18) ); + const getPlayerVisits = (uuid) => { + const vs = visits.value.filter((v) => v.player == uuid); + if (vs.length < 9) { + for (var i = vs.length; i < 9; i++) { + vs.push({ "sum": "", "toGo":["",""]}) + } + } else if (vs.length*2 < visits.value.length) { + + vs.push({ "sum": "", "toGo":["",""]}); + } + return vs; + } + const check_remove = (event) => { + if (!event.repeat && event.target.value.length < 1) { + context.emit('removeLastVisit', event.target); + } + } + const setup = ref(false); + const setupEnter = () => { + setup.value = true; + } + const confirmEnter = (evt) => { + if (setup.value) { + context.emit('sendvisit', evt.target) + } + setup.value = false; + } + return { length, visits, loop, getPlayerVisits, check_remove, confirmEnter, setupEnter } + }, + template: html` +
+
+
Points
+
ToGo
+
Round
+
Points
+
ToGo
+
+
+
+
{{ max }}
+
0
+
+
{{ max }}
+ +
+
+ ` +} + +const overlay = { + props: ['data'], + setup(props, context) { + const keyhandler = (event) => { + ArrowHorizontalKeyHandler(event); + NumberKeyHandler(event); + if (event.key == "Escape") { + context.emit("closeOverlay") + } + } + return { keyhandler } + }, + template: html` +
+
+

{{ data.title }}

+

{{ data.text }}

+
+ +
+
+
+ ` +} + +const score = { + props: ['page', 'justlegs', 'currentset', 'currentleg'], + setup(props) { + return { } + }, + template: html` +
+
+

{{ currentset?.points[idx] }}

+
+

Best of {{ page?.sets }}

+

Sets

+
+
+
+

{{ currentleg?.points[idx] }}

+
+

Best of {{ page?.legs }}

+

Legs

+
+
+
+ ` +} + +const player = { + props: ['player', 'stats', "id"], + setup(props) { + const current_set = computed( () => props.stats?.sets[props.stats.sets.length-1]); + const current_leg = computed( () => current_set.value?.legs[current_set.value.legs.length-1]); + const getAverage = (avg) => { + return avg && avg[1] != 0 ? ((3*avg[0])/avg[1]).toFixed(1) : "-"; + } + const getCheckout = (checkout) => { + return checkout && checkout[1] != 0 ? Math.round(1000*checkout[0]/checkout[1])/10 : "- " + } + const getMax = (checkouts) => { + if (checkouts && checkouts.length != 0) { + return Math.max(...checkouts); + } + return "-" + } + return { current_set, current_leg, getAverage, getCheckout, getMax } + }, + template: html` +
+ +

{{ player?.forename }} {{ player?.surname }}

+

{{ player?.nickname }}

+
+
+
Stat
Match
Leg
+
+
+
Average:
{{ getAverage(stats?.stats[id].average) }}
{{ getAverage(current_leg?.stats[id].average) }}
+
+
+
First 9:
{{ getAverage(stats?.stats[id].first9) }}
{{ getAverage(current_leg?.stats[id].first9) }}
+
+
+
60+:
{{ stats?.stats[id]["60+"] }}
{{ current_leg?.stats[id]["60+"] }}
+
+
+
100+:
{{ stats?.stats[id]["100+"] }}
{{ current_leg?.stats[id]["100+"] }}
+
+
+
140+:
{{ stats?.stats[id]["140+"] }}
{{ current_leg?.stats[id]["140+"] }}
+
+
+
180:
{{ stats?.stats[id]["180"] }}
{{ current_leg?.stats[id]["180"] }}
+
+
+
Checkouts:
{{ getCheckout(stats?.stats[id].checkouts) }}%
+
+
+
Best Checkout:
{{ getMax(stats?.stats[id].checkoutPoints) }}
+
+
+
+ ` +} + + +export const xoi = { + components: { + "d-togo": togo, + "d-score": score, + "d-game": game, + "d-player": player, + "d-overlay": overlay + }, + setup(props, context) { + let page = ref(); + const updateGame = (reset) => { + getQuery(`site.find('${state.id}')`, { + select: { + title: "page.title", + id: "page.id", + modus: "page.max", + game: "page.rounds.parseJSON", + stats: "page.stats.parseJSON", + sets: "page.sets", + legs: "page.legs", + players: { + query: "page.players.toPages", + select:{ + forename: "page.forename", + surname: "page.surname", + nickname: "page.nickname", + uuid: "page.uuid", + img: "page.pic.toFile?.url" + } + } + } + }).then((res) => { + page.value = res; + if (reset != undefined) { + current_input.value = reset; + } + if (res.stats.winner){ + console.log(res.stats); + let winner = "Draw"; + if (res.players[0].uuid == res.stats.winner){ + winner = res.players[0].forename; + } else if (res.players[1].uuid == res.stats.winner) { + winner = res.players[1].forename; + } + overlay.value = { + "title": "Game Ended", + "text": `The winner is ${winner}`, + "buttons": [] + }; + } + }); + }; + updateGame(); + + let game = computed(() => page.value ? page.value.game: undefined) + let current_set = computed(() => { + if (game.value != undefined) { + return game.value.sets[game.value.sets.length-1] + } + return undefined; + }) + let current_leg = computed(() => { + if (current_set.value != undefined) { + return current_set.value.legs[current_set.value.legs.length-1] + } + return undefined; + }) + let current_toGo = computed(() => { + if (current_leg.value != undefined) { + if (current_leg.value.visits.length < 2) { + return [page.value.modus, page.value.modus] + } else { + + return current_leg.value.visits[current_leg.value.visits.length-2].toGo; + } + } + return [0,0]; + }) + let current_set_points = computed(() => { + if (current_set.value != undefined) { + return current_set.value.points; + } + return undefined; + }); + let current_leg_points = computed(() => { + if (current_leg.value != undefined) { + return current_leg.value.points; + } + return undefined; + }); + let current_player = computed(() => { + if (current_leg.value != undefined) { + const len = current_leg.value.visits.length; + return current_leg.value.visits[len-1].player == page.value.players[1].uuid; + } + return undefined; + }); + const current_input = ref(""); + const overlay = ref(); + return { page, state, game, current_set, current_leg, current_toGo, current_set_points, current_leg_points, current_player, updateGame, current_input, overlay } + }, + methods: { + async removeLastVisit(){ + let last = this.current_leg.visits.length-2 >= 0 ? this.current_leg.visits[this.current_leg.visits.length-2].throws : [""]; + last = last.join(","); + const response = await fetch(`/${state.id}`, { + method: "POST", + cache: "no-cache", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + "action": "deleteLastThrow", + "visit": true, + }), + }); + const ret = await response.json(); + if (ret.status == "ok"){ + this.updateGame(last); + } else { + console.log(ret); + } + }, + sum(tr){ + const val = tr.trim();; + if (val == "") { + return 0; + } + if (val == "SB"){ + return 25; + } + if (val == "DB"){ + return 50; + } + if (val[0] == "S" || val[0] == "O" || val[0] == "I"){ + return parseFloat(val.substring(1)); + } + if (val[0] == "D"){ + return 2*parseFloat(val.substring(1)); + } + if (val[0] == "T"){ + return 3*parseFloat(val.substring(1)); + } + if (val[0] == "M"){ + return 0; + } else { + // TODO: Check for Na + return parseFloat(val); + } + }, + verify(sum){ + if (this.current_toGo[this.current_player*1]-sum == 0){ + return 0; + } else if (sum > 180 || [179, 178, 176, 175, 173, 172, 169, 166, 163].indexOf(sum) > -1) { + return -1 + } else if (this.current_toGo[this.current_player*1]-sum <= 50) { + return 1 + } + }, + openOverlay(overlay){ + this.overlay = overlay; + }, + closeOverlay(){ + this.overlay = undefined; + }, + checkout_question(throws){ + const buttons = []; + for (var i = 1; i <= 3; i++) { + const x = i; + buttons.push({ + "type": "input", + "props" : { + "type": "button", + "value": `${x} (${x})` + }, + "onClick": () => { + this.closeOverlay(); + this.checkouttries_question(throws, x, false); + } + }) + } + this.openOverlay({ + "title": "Congratulations!", + "text": `How many darts did you need?` , + "buttons": buttons + }); + }, + checkouttries_question(throws, numDarts, zero=true){ + const buttons = []; + for (var i = 1; i <= numDarts; i++) { + const x = i; + buttons.push({ + "type": "input", + "props" : { + "type": "button", + "value": `${x} (${x})` + }, + "autofocus": (i==1 && !zero), + "onClick": () => { + this.closeOverlay(); + this.send_visit(throws, numDarts, x) + } + }) + } + if (zero) { + buttons.push({ + "type": "input", + "props" : { + "type": "button", + "value": `0 (${numDarts+1})` + }, + "autofocus": true, + "onClick": () => { + this.closeOverlay(); + this.send_visit(throws, numDarts, 0) + } + }) + } + this.openOverlay({ + "title": "Checkout Tries", + "text": `How many tries on a Checkout?` , + "buttons": buttons + }); + }, + async send_visit(throws, numDarts=3, checkoutTries=0){ + const response = await fetch(`/${state.id}`, { + method: "POST", + cache: "no-cache", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + "action": "addThrows", + "throws": throws.value.split(","), + "checkoutTries": checkoutTries, + "numDarts": numDarts, + "done": true + }), + }); + const ret = await response.json(); + if (ret.status == "ok"){ + this.updateGame(""); + } else { + console.log(ret); + } + }, + async preprocess_visit(throws){ + const tr = throws.value.split(","); + let sum = 0; + tr.forEach((t, i) => { + sum += this.sum(t); + }); + const res = this.verify(sum); + if (res == 0){ + // Ask for num Darts + this.checkout_question(throws); + return; + } else if (res == 1){ + // Ask for checkoutTries + this.checkouttries_question(throws, 3); + return; + } else if (res == -1){ + this.openOverlay({ + "title": "Impossible", + "text": `A score of ${sum} is not possible`, + "buttons": [{ + "type": "input", + "props" : { + "type": "button", + "value": "ok" + }, + "onClick" : this.closeOverlay + }] + }); + return; + } + this.send_visit(throws); + } + }, + template: html` +
+ + + + + + + + +
+ ` +} + +export const initXoiView = (app) => { + app.component('d-xoi', xoi) +} diff --git a/assets/js/views/xoi/logic.js b/assets/js/views/xoi/logic.js new file mode 100644 index 0000000..59b4a2b --- /dev/null +++ b/assets/js/views/xoi/logic.js @@ -0,0 +1,463 @@ +import { computed } from "vue"; + +function setPoints(page, set){ + let points = [0, 0]; // need to get updated for more player + let ret; + const m = page.game.sets.length-1; + for (const i in page.game.sets) { + const set = page.game.sets[i]; + const points = legPoints(page, set, set.legs[set.legs.length-1]); + const winner = getWinner(points, page.legs); + if (winner > -1) + points[winner] += 1; + else + return points; + + if (set == set){ + return points; + } + } + return points; +} + +function legPoints(page, set, leg){ + let points = [0, 0]; // need to get updated for more player + let ret; + const m = set.legs.length-1; + for (const i in set.legs) { + const l = set.legs[i]; + if (l.visits[l.visits.length-1].toGo === undefined) { + return points; + } + if (l.visits[l.visits.length-1].toGo[0] == 0) + points[0] += 1; + else if (l.visits[l.visits.length-1].toGo[1] == 0) + points[1] += 1; + if (l == leg){ + return points; + } + } + return points; +} + +export const getFinalWinner = (page) => { + const points = setPoints(page, page.sets[page.sets.length-1]); + return getWinner(points, page.sets); +}; + +export function getGameProps(page, current_set, current_leg) { + const ret = {}; + + if (current_set === undefined) { + current_set = computed(() => { + if (page.game != undefined) { + return page.game.sets[page.game.sets.length - 1] + } + return undefined; + }); + } + ret.current_set = current_set; + + + if (current_leg === undefined) { + current_leg = computed(() => { + + if (current_set.value != undefined) { + return current_set.value.legs[current_set.value.legs.length - 1] + } + return undefined; + }); + } + ret.current_leg = current_leg; + + const current_toGo = computed(() => { + if (current_leg.value != undefined) { + if (current_leg.value.visits.length < 2) { + return [page.modus, page.modus] + } else { + const end = current_leg.value.visits[current_leg.value.visits.length - 1].toGo; + if (end) return end; + return current_leg.value.visits[current_leg.value.visits.length - 2].toGo; + } + } + return [0, 0]; // need to get updated for more player + }); + ret.current_toGo = current_toGo; + + + + const current_set_points = computed(() => { + if (current_set.value != undefined) { + return setPoints(page, current_set.value); + } + return undefined; + }); + ret.current_set_points = current_set_points; + + + const current_leg_points = computed(() => { + if (current_set.value != undefined || current_leg.value != undefined) { + return legPoints(page, current_set.value, current_leg.value); + } + return undefined; + }); + ret.current_leg_points = current_leg_points; + + + const current_player = computed(() => { + if (current_leg.value != undefined) { + const len = current_leg.value.visits.length; + return current_leg.value.visits[len - 1].player == page.players[1].uuid; + } + return undefined; + }); + ret.current_player = current_player; + + const getVal = (tr) => { + const val = tr.trim(); + if (val == "") { + return 0; + } + if (val == "SB") { + return 25; + } + if (val == "DB") { + return 50; + } + if (val[0] == "S" || val[0] == "O" || val[0] == "I") { + return parseFloat(val.substring(1)); + } + if (val[0] == "D") { + return 2 * parseFloat(val.substring(1)); + } + if (val[0] == "T") { + return 3 * parseFloat(val.substring(1)); + } + if (val[0] == "M") { + return 0; + } else { + // TODO: Check for Na + return parseFloat(val); + } + } + const verifySum = (sum) => { + if (sum > 180 || [179, 178, 176, 175, 173, 172, 169, 166, 163].indexOf(sum) > -1) { + return -1; + } else if (current_toGo.value[current_player.value * 1] - sum < 0) { + return -2; + } if (current_toGo.value[current_player.value * 1] - sum == 0) { + // bogey numbers + if (page.out == "Double" && (sum > 170 || [169, 168, 166, 165, 163, 162, 159].indexOf(sum) > -1)) { + return -1; + } + return 0; + } else if (current_toGo.value[current_player.value * 1] - sum <= 50) { + return 1; + } + return 2; + } + const checkVisit = (throws) => { + const tr = throws.split(","); + let sum = 0; + tr.forEach((t, i) => { + sum += getVal(t); + }); + const res = verifySum(sum); + return [res, sum]; + } + ret.checkVisit = checkVisit; + + return ret; +} + +function newPlayerStats(player) { + return { + player: player.uuid, + average: [0, 0], + first9: [0, 0], + checkouts: [0, 0], + checkoutPoints: [], + "60+": 0, + "100+": 0, + "140+": 0, + "180": 0 + }; +} + +function addNewSetStats(stats, players) { + stats["sets"].push(newStats(players)); + stats["sets"][0]["legs"] = []; + return stats; +} + +function addNewLegStats(stats, players) { + stats["sets"].at(-1)["legs"].push(newStats(players)); + return stats; +} + +function newStats(players) { + const stats = { + stats: [] + } + players.forEach((player, i) => { + const n = newPlayerStats(player); + stats.stats.push(n); + }); + return stats; +} + +export function initStats(page) { + const stats = newStats(page.players); + stats.sets = []; + addNewSetStats(stats, page.players); + addNewLegStats(stats, page.players); + page.stats = stats; +} + +function newVisit(playerUUID, round) { + return { + player: playerUUID, + throws: [], + visit: round, + checkoutTries: 0, + numDarts: 0, + }; +} + +export function initGame(page) { + page.game = { + sets: [{ + points: new Array(page.players.length).fill(0), + legs: [{ + points: new Array(page.players.length).fill(0), + visits: [newVisit(page.players[0].uuid, 1)] + }] + }] + } +} + +function updateStats(page, visit){ + const playerUUIDs = page.players.map((p) => p.uuid); + const k = playerUUIDs.indexOf(visit.player); + + const todos = [page.stats["stats"][k]]; + todos.push(page.stats["sets"].at(-1)["stats"][k]); + todos.push(page.stats["sets"].at(-1)["legs"].at(-1)["stats"][k]); + + todos.forEach((value, i) => { + todos[i]["average"][0] += visit["sum"]; + todos[i]["average"][1] += visit["numDarts"]; + if (visit["visit"] < 4) { + todos[i]["first9"][0] += visit["sum"]; + todos[i]["first9"][1] += visit["numDarts"]; + } + if (visit["toGo"][k] == 0) { + todos[i]["checkouts"][0] += 1; + todos[i]["checkoutPoints"].push(visit["sum"]); + } + todos[i]["checkouts"][1] += visit["checkoutTries"]; + if (visit["sum"] == 180) { + todos[i]["180"] += 1; + } else if (visit["sum"] >= 140) { + todos[i]["140+"] += 1; + } else if (visit["sum"] >= 100) { + todos[i]["100+"] += 1; + } else if (visit["sum"] >= 60) { + todos[i]["60+"] += 1; + } + }); +} + +function getWinner(points, mode) { + const sorted = [...points].map((e,i) => [e,i]).sort((a, b) => b[0] - a[0]); + const k = points.length; + const sum = points.reduce((a,c) => a+c, 0); + if (sum < mode && sorted[0][0] <= mode/k){ + // not over yet + return -1; + } + if (sorted[0][0] == sorted[1][0]){ + // Draw + return -2; + } + // winner id + return sorted[0][1]; +} + +export const formatDate = (d) => { + return `${d.getFullYear()}-${(d.getMonth()+1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')} ${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`; +}; + +function addNewSet(page, points){ + const playerUUIDs = page.players.map((p) => p.uuid); + const set = page.game.sets[page.game.sets.length-1]; + const leg = set.legs[set.legs.length-1]; + const k = playerUUIDs.indexOf(set.legs[0].visits[0].player); + const p = playerUUIDs[(k+1)%playerUUIDs.length]; + page.game.sets.push({ + // points: [...points], + legs: [{ + points: Array(playerUUIDs.length).fill(0), + visits: [newVisit(p, 1)] + }] + }); +} + +function addNewLeg(page){ + const playerUUIDs = page.players.map((p) => p.uuid); + const set = page.game.sets[page.game.sets.length-1]; + const leg = set.legs[set.legs.length-1]; + const k = playerUUIDs.indexOf(leg.visits[0].player); + const p = playerUUIDs[(k+1)%playerUUIDs.length]; + page.game.sets[page.game.sets.length-1].legs.push({ + // points: [...points], + visits: [newVisit(p, 1)] + }); +} + +function clearLastVisit(page){ + const set = page.game.sets[page.game.sets.length-1]; + const leg = set.legs[set.legs.length-1]; + const visit = leg.visits[leg.visits.length-1]; + const ret = visit["throws"]; + visit["throws"] = []; + visit["checkoutTries"] = 0; + visit["numDarts"] = 0; + delete visit["sum"]; + delete visit["toGo"]; + return ret; +} + +export function recalcStats(page){ + const set = page.game.sets[page.game.sets.length-1]; + // const leg = set.legs[set.legs.length-1]; + // const visit = leg.visits[leg.visits.length-1]; + initStats(page); + const lastset = page.game["sets"].length-1; + page.game["sets"].forEach((set, i) => { + const lastleg = set.legs.length-1; + set.legs.forEach((leg, j) => { + const lastvisit = leg["visits"].length-1; + leg.visits.forEach((visit, k) => { + if (!(k == lastvisit && j == lastleg && i == lastset)) { + updateStats(page, visit); + } + if (k == lastvisit && j != lastleg) { + addNewLegStats(page.stats, page.players); + } + }); + if (j == lastleg && i != lastset) { + addNewSetStats(page.stats, page.players); + } + }); + }); +} + +export function removeLastVisit(page){ + const set = page.game.sets[page.game.sets.length-1]; + const leg = set.legs[set.legs.length-1]; + const visit = leg.visits[leg.visits.length-1]; + + // delete last visit. + leg["visits"].pop(); + if (leg["visits"].length == 0){ + set["legs"].pop(); + if (set["legs"].length == 0){ + page.game["sets"].pop(); + if (page.game["sets"].length == 0){ + initGame(page); + return; + } + } + } + // clearLastVisit + const ret = clearLastVisit(page); + recalcStats(page); + return ret; +} + +export function storeVisit(page, throws, sum, numDarts, tries) { + const set = page.game.sets[page.game.sets.length-1]; + const leg = set.legs[set.legs.length-1]; + const visit = leg.visits[leg.visits.length-1]; + + visit["numDarts"] = numDarts; + visit["throws"] = throws; + visit["checkoutTries"] = tries; + visit["sum"] = sum + + const playerUUIDs = page.players.map((p) => p.uuid); + const k = playerUUIDs.indexOf(visit["player"]); + let toGo; + if (leg["visits"].length-2 < 0) { + toGo = Array(playerUUIDs.length).fill(page.modus); + } else { + toGo = [...leg["visits"][leg["visits"].length-2]["toGo"]]; + } + const rest = toGo[k] - visit["sum"]; + if (rest < 0 || (page.out == "Double" && rest == 1)) { + visit["sum"] = 0; + } else { + toGo[k] = rest; + } + visit["toGo"] = toGo; + // update stats + updateStats(page, visit); + + let update = []; + if (rest != 0) { + // Normal case...next players turn + const nextPlayer = playerUUIDs[(k+1)%playerUUIDs.length]; + const nVisit = newVisit(nextPlayer, visit["visit"]+1*(leg.visits[0]["player"] == nextPlayer)); + leg.visits.push(nVisit); + } + else { + // rest == 0 leg finished + const newlegp = legPoints(page, set, leg); + let winner = getWinner(newlegp, page.legs); + if (winner == -1) { + // new Leg + addNewLeg(page); + addNewLegStats(page.stats, page.players); + } else { + // new set? + const newsetp = setPoints(page, set); + winner = getWinner(newsetp, page.sets); + if (winner == -1) { + // new Set + addNewSet(page); + addNewSetStats(page.stats, page.players); + addNewLegStats(page.stats, page.players); + } else { + // ask for continue or game over + if (winner == -2) { + page.stats["winner"] = "DRAW"; + } else { + page.stats["winner"] = visit["player"]; + } + + page.enddate = formatDate(new Date(Date.now())); + return [newsetp, newlegp]; + } + } + } + return false; +} + +export function endGame(page){ + // const set = page.game.sets[page.game.sets.length-1]; + // const leg = set.legs[set.legs.length-1]; + // const visit = leg.visits[leg.visits.length-1]; + // const winner = getWinner(newsetp, page.sets); + // set["points"] = newsetp; + // leg["points"] = newlegp; +} + +export function extension(page){ + const set = page.game.sets[page.game.sets.length-1]; + const leg = set.legs[set.legs.length-1]; + // leg["points"] = newlegp; + // new Leg + addNewLeg(page); + addNewLegStats(page.stats, page.players); +} diff --git a/assets/js/views/xoi/main.js b/assets/js/views/xoi/main.js new file mode 100644 index 0000000..5b255b9 --- /dev/null +++ b/assets/js/views/xoi/main.js @@ -0,0 +1,698 @@ +import { nextTick, watch, reactive, ref, computed, onMounted, onUnmounted } from "vue"; +import { getQuery, setKirby } from "../../kirby.js"; +import { state } from "../../stateMgr.js"; +import { handleActive, ArrowVerticalKeyHandler, ArrowHorizontalKeyHandler, NumberKeyHandler } from "../../handlers.js"; +import { overlayAndGet, powerStateMachine, overlayAndPop, popLastElem } from "../../componentPromise.js"; + +import { getGameProps, initGame, initStats, storeVisit, formatDate, removeLastVisit, extension, getFinalWinner } from "./logic.js"; + +const html = (v) => { return v[0] }; + +//////////////////////////////////////////////////////////////////////////////// +// Components +//////////////////////////////////////////////////////////////////////////////// + +const pregame = { + props: ['page','active', 'stack'], + setup(props, context) { + handleActive(props, [ArrowVerticalKeyHandler]); + + const selectPlayer = async (i) => { + if (props.active) { + const [result, error] = await overlayAndPop("d-playerselect", { players: props.page.participants, class:"overlay"}, props.stack); + if (error === undefined) { + props.page.players[i] = result; + } + } + } + + return { selectPlayer } + }, + template: html` + + ` +} + +export const bullselect = { + props: ['players','active', 'stack'], + setup(props, { emit }) { + handleActive(props, [ArrowHorizontalKeyHandler, NumberKeyHandler]); + + const children = computed(() => { + const items = []; + for (let i in props.players){ + const player = props.players[i]; + items.push({ + component: "d-squareElem", + props: { + text: player.forename + " " + player.surname, + icon: player.img ? player.img : '/assets/img/placeholder_person.png' + }, + onClick: () => { + emit("resolve", player); + } + }) + } + return items; + }); + + return { children } + }, + template: html` +
+

Who won bull?

+ +
+ ` +} + + + +const score = { + props: ['page', 'justlegs', 'current_set_points', 'current_leg_points'], + setup(props) { + return { } + }, + template: html` +
+
+

{{ current_set_points[idx] }}

+
+

Best of {{ page.sets }}

+

Sets

+
+
+
+

{{ current_leg_points[idx] }}

+
+

Best of {{ page.legs }}

+

Legs

+
+
+
+ ` +} + +const player = { + props: ['page', 'id', 'current_stat'], + setup(props) { + const addStats = (stat1, stat2) => { + return { + average: [stat1.average[0]+stat2.average[0], stat1.average[1]+stat2.average[1]], + first9: [stat1.first9[0]+stat2.first9[0], stat1.first9[1]+stat2.first9[1]], + "60+": stat1["60+"]+stat2["60+"], + "100+": stat1["100+"]+stat2["100+"], + "140+": stat1["140+"]+stat2["140+"], + "180": stat1["180"]+stat2["180"], + "checkouts": [stat1.checkouts[0]+stat2.checkouts[0], stat1.checkouts[1]+stat2.checkouts[1]], + "checkoutPoints": [...stat1.checkoutPoints, ...stat2.checkoutPoints] + } + } + const inspect = !!props.page.enddate; + const tourStats = computed(() => { + if (props.page.tournamentStats.length != 2){ + return [ + props.page.stats.stats[0], + props.page.stats.stats[1] + ]; + } + if (inspect) { + return [ + props.page.tournamentStats[0], + props.page.tournamentStats[1] + ]; + } + return [ + addStats(props.page.tournamentStats[0], props.page.stats.stats[0]), + addStats(props.page.tournamentStats[1], props.page.stats.stats[1]) + ]; + }); + const getAverage = (avg) => { + return avg && avg[1] != 0 ? ((3*avg[0])/avg[1]).toFixed(1) : "-"; + } + const getCheckout = (checkout) => { + return checkout && checkout[1] != 0 ? Math.round(1000*checkout[0]/checkout[1])/10 : "- " + } + const getMax = (checkouts) => { + if (checkouts && checkouts.length != 0) { + return Math.max(...checkouts); + } + return "-" + } + const player = computed(() => props.page.players[props.id]) + return { tourStats, getAverage, getCheckout, getMax, player } + }, + template: html` +
+ +

{{ player.forename }} {{ player.surname }}

+

{{ player.nickname }}

+
+
+
Stat
Tnm
Match
Leg
+
+
+
Avg:
+ {{ getAverage(tourStats[id].average) }} +
+ {{ getAverage(page.stats.stats[id].average) }} +
+ {{ getAverage(current_stat.stats[id].average) }} +
+
+
+
First 9:
+ {{ getAverage(tourStats[id].first9) }} +
+ {{ getAverage(page.stats.stats[id].first9) }} +
+ {{ getAverage(current_stat.stats[id].first9) }} +
+
+
+
60+:
{{ tourStats[id]["60+"] }}
{{ page.stats.stats[id]["60+"] }}
{{ current_stat.stats[id]["60+"] }}
+
+
+
100+:
{{ tourStats[id]["100+"] }}
{{ page.stats.stats[id]["100+"] }}
{{ current_stat.stats[id]["100+"] }}
+
+
+
140+:
{{ tourStats[id]["140+"] }}
{{ page.stats.stats[id]["140+"] }}
{{ current_stat.stats[id]["140+"] }}
+
+
+
180:
{{ tourStats[id]["180"] }}
{{ page.stats.stats[id]["180"] }}
{{ current_stat.stats[id]["180"] }}
+
+
+
Ch. %:
{{ getCheckout(tourStats[id].checkouts) }}%
{{ getCheckout(page.stats.stats[id].checkouts) }}%
+
+
+
Best Ch.:
{{ getMax(tourStats[id].checkoutPoints) }}
{{ getMax(page.stats.stats[id].checkoutPoints) }}
+
+
+
+ ` +} + + +const game = { + props: ['active', 'stack', 'players','current_leg', 'max'], + setup(props, context) { + const visits = computed(() => props.current_leg ? props.current_leg.visits:undefined ); + const getPlayerVisits = (uuid) => { + const vs = visits.value.filter((v) => v.player == uuid); + if (vs.length < 9) { + for (var i = vs.length; i < 9; i++) { + vs.push({ "sum": "", "toGo":["",""]}) + } + } else if (vs.length*2 < visits.value.length) { + + vs.push({ "sum": "", "toGo":["",""]}); + } + return vs; + } + return { getPlayerVisits } + }, + template: html` +
+
+
Points
+
ToGo
+
Round
+
Points
+
ToGo
+
+
+
+
{{ max }}
+
0
+
+
{{ max }}
+ +
+
+ ` +} + +const gameinput = { + props: ['input','active', 'stack'], + setup(props, context) { + handleActive(props, []); + const check_remove = (event) => { + if (!event.repeat && event.target.value.length < 1) { + event.preventDefault(); + context.emit('reject', -2); + } + } + const keyhandler = (e) => { + if (e.key == "F1" || e.keyCode == 112) { + e.preventDefault(); + context.emit('resolve', "60"); + } else if (e.key == "F2" || e.keyCode == 113) { + e.preventDefault(); + context.emit('resolve', "45"); + } else if (e.key == "F3" || e.keyCode == 114) { + e.preventDefault(); + context.emit('resolve', "41"); + } else if (e.key == "F4" || e.keyCode == 115) { + e.preventDefault(); + context.emit('resolve', "26"); + } + + } + return { check_remove, keyhandler } + }, + template: html` + + ` +} + + +const xoi = { + props: ['page', 'active', 'stack', 'inspect'], + components: { + "d-player": player, + "d-score": score, + "d-game": game + }, + setup(props, context) { + const gamestack = reactive([]); + const inspectstack = reactive([]); + let current_set, current_leg; + const set_id = ref(props.page.game.sets.length - 1); + const leg_id = ref(props.page.game.sets[set_id.value].legs.length - 1); + let current_stat; + if (props.inspect) { + current_set = computed(() => props.page.game.sets[set_id.value]); + current_leg = computed(() => current_set.value.legs[leg_id.value]); + current_stat = computed( () => props.page.stats?.sets[set_id.value].legs[leg_id.value]); + } + const computedProps = getGameProps(props.page, current_set, current_leg); + if (!props.inspect) { + current_stat = computed( () => props.page.stats?.sets[props.page.stats.sets.length-1].legs[computedProps.current_set.value.legs.length-1]); + } + + const mounted = onMounted(async () => { + if (props.inspect) { + } else { + const winner = await gameHandler(gamestack, props.stack, props.page, computedProps) + context.emit('resolve', winner); + } + }) + return { ...computedProps, set_id, leg_id, gamestack, inspectstack, current_stat } + }, + template: html` +
+
{{ current_toGo[0] }}
+ +
{{ current_toGo[1] }}
+ + + + + + + +
+ ` +} + +//////////////////////////////////////////////////////////////////////////////// +// Dialogs +//////////////////////////////////////////////////////////////////////////////// + +const numDartsDialog = () => { + const buttons = []; + for (var i = 1; i <= 3; i++) { + buttons.push({ + "component": "d-plainElem", + "props" : { + "text": `${i}` + }, + "result" : i + }) + } + return { + "withshortkey": true, + "title": "Congratulations!", + "text": `How many darts did you need?`, + "buttons": buttons + }; +} + +const numCheckoutTriesDialog = (numDarts, start=1) => { + const buttons = []; + for (var i = start; i <= numDarts; i++) { + buttons.push({ + "component": "d-plainElem", + "props" : { + "text": `${i}`, + "autofocus": i == 0, + "data-tabindex": i + }, + "result" : i + }) + } + return { + "withshortkey": true, + "title": "Checkout Tries", + "text": `How many tries on a Checkout?` , + "buttons": buttons + }; +} + +const impossibleDialog = (sum) => { + return { + "withshortkey": true, + "title": "Impossible", + "text": `A score of ${sum} is not possible`, + "buttons": [{ + "component": "d-plainElem", + "props" : { + "text": "ok" + }, + "result" : "ok" + }]} +} + +const gameOverDialog = (winner, points) => { + return { + "withshortkey": true, + "title": `Game Over`, + "text": `${winner != "DRAW" ? "The winner is": ""} ${winner} with ${points[0]}-${points[1]}`, + "buttons": [ + { + "component": "d-plainElem", + "props" : { + "text": "End Game" + }, + "result" : "end" + },{ + "component": "d-plainElem", + "props" : { + "text": "Continue" + }, + "result" : "continue" + }] + } +} + +//////////////////////////////////////////////////////////////////////////////// +// API +//////////////////////////////////////////////////////////////////////////////// + +function getGame(id){ + return getQuery(`site.find('${id}')`, { + select: { + title: "page.title", + id: "page.id", + modus: "page.max.toInt", + out: "page.out", + game: "page.rounds.parseJSON", + stats: "page.stats.parseJSON", + sets: "page.sets.toInt", + legs: "page.legs.toInt", + startdate: "page.Startdate", + enddate: "page.Enddate", + tournamentStats: "page.tournamentStats", + participants: { + query: "page.parent.participants.toPages.sortBy('forename')", + select:{ + forename: "page.forename", + surname: "page.surname", + nickname: "page.nickname", + uuid: "page.uuid", + img: "page.pic.toFile?.url" + } + }, + players: { + query: "page.players.toPages", + select:{ + forename: "page.forename", + surname: "page.surname", + nickname: "page.nickname", + uuid: "page.uuid", + img: "page.pic.toFile?.thumbnail(350).url" + } + } + } + }) +} + +function savePregame(page){ + return setKirby(page.id, { + sets: page.sets, + legs: page.legs, + players: page.players.map((p) => p.uuid), + startdate: page.startdate, + rounds: page.game ? JSON.stringify(page.game) : "", + stats: page.stats ? JSON.stringify(page.stats) : "" + }); +} + +function saveGame(page){ + return setKirby(page.id, { + rounds: page.game ? JSON.stringify(page.game) : "", + stats: page.stats ? JSON.stringify(page.stats) : "", + enddate: page.enddate, + }); +} + + +//////////////////////////////////////////////////////////////////////////////// +// State Machine +//////////////////////////////////////////////////////////////////////////////// + +// Checkout Pipeline +const checkoutPipeline = (stack) => { + return { + 0: async (sum, reGet) => { + // Ask for num Darts + const [numDarts, error] = await overlayAndGet("d-dialog", numDartsDialog(), stack, reGet); + if (error != undefined) { + popLastElem(stack); + return [undefined, [-1, -1]]; + } + return [1, [numDarts, 1]]; + }, + 1: async ([numDarts, start], reGet) => { + // Ask for checkoutTries + if (numDarts <= start) { + // Store with one checkout try + popLastElem(stack); + return [undefined, [1, 1]]; + } + const [tries, error] = await overlayAndPop("d-dialog", numCheckoutTriesDialog(numDarts, start), stack); + if (error != undefined) { + if (start == 0) { + return [undefined, [-1, -1]]; + } + return [-1, undefined]; + } + if (start == 1) { + popLastElem(stack); + } + return [undefined, [numDarts, tries]]; + } + }; +}; + + +// Game State Machine +const gameStateMachine = (gamestack, stack, page, computedProps) => { + return { + 0: async (input, reGet) => { + // Dispatcher + if (page.stats.winner){ + return [undefined, page.stats.winner]; + } + // Check for Game State + return [1, undefined]; + }, + 1: async (input, reGet) => { + // Normal Game Loop + // Get Game Input + const [visit, error] = await overlayAndPop("d-gameinput", { input: input }, gamestack); + // back/delete last throw + if (error != undefined) { + const val = removeLastVisit(page); + saveGame(page); + if (val == undefined) return [1, val]; + return [1, val.join(",")]; + } + + // Validate throw + let numDarts, tries; + const [ret, sum] = computedProps.checkVisit(visit); + if (ret == -1) { + // Impossible + const [_, error] = await overlayAndPop("d-dialog", impossibleDialog(sum), stack); + return [1, visit]; + } else if (ret == -2) { + // Bust TODO + const [_, error] = await overlayAndPop("d-dialog", impossibleDialog(sum), stack); + return [1, visit]; + } else if (ret == 2) { + // Normal + storeVisit(page, visit.split(","), sum, 3, 0); + saveGame(page); + return [1, undefined] + } + // checkout: + if (ret == 0) { + // Checkout: Ask for num Darts + [numDarts, tries] = await powerStateMachine(checkoutPipeline(stack), stack, /*initState=*/0, /*initInput=*/sum); + } else if (ret == 1) { + // <=50: Ask for checkout tries + [numDarts, tries] = await powerStateMachine(checkoutPipeline(stack), stack, /*initState=*/1, /*initInput=*/[3,0]); + } + + if (numDarts == -1) { + // Error/Back + return [1, visit]; + } else { + const points = storeVisit(page, visit.split(","), sum, numDarts, tries); + if (points){ + // Game Over + const winner = getFinalWinner(page); + let name = "DRAW" + if (winner != -2){ + name = page.players[winner].forename; + } + const [answer, error] = await overlayAndPop("d-dialog", gameOverDialog(name, points[1]), stack); + if (answer == "end") { + saveGame(page); + return [undefined, page.stats.winner]; + } else { + extension(page); + saveGame(page); + } + } else { + saveGame(page); + } + return [1, undefined]; + } + }, + }; +} + +export const gameHandler = async (gamestack, stack, page, computedProps) => { + const sm = gameStateMachine(gamestack, stack, page, computedProps); + return powerStateMachine(sm, gamestack); +} + + +// General State Machine +const stateMachine = (stack, page) => { + return { + 0: async (input, reGet) => { + // Dispatcher + // Check Game State: + if (page.players.length != 2 || page.startdate === undefined || page.startdate === ""){ + // Pre Game + return [1, page]; + } else if (page.enddate === undefined || page.enddate === ""){ + if (page.game === "" || page.game === undefined || page.game === null) { + // Who won Bull? + return [2, page]; + } else { + // In Game + return [3, page]; + } + } else { + // Post Game + return [4, undefined]; + } + }, + 1: async (page, reGet) => { + // Pre Game + const [result, error] = await overlayAndPop("d-pregame", { page: page}, stack); + if (error != undefined) { + var re = /^https?:\/\/[^/]+/i; + window.setTimeout(() => { + window.location.href = re.exec(window.location.href)[0]; + return false; + },1); + return [undefined, undefined]; + } + page.startdate = formatDate(new Date(Date.now())); + // Update game in database + const ret = await savePregame(page); + if (ret.status != "ok") { + console.error("Error save page:", ret.status, ret.error); + } + return [0, page]; + }, + 2: async (page, reGet) => { + // Ask for Bull + const [result, error] = await overlayAndPop("d-bullselect", { players: page.players}, stack); + if (error != undefined) { + return [1, page]; + } + // reorderPlayer + if (result !== page.players[0]){ + page.players = [page.players[1], page.players[0]]; + } + // Setup Game + initGame(page); + initStats(page); + const ret = await savePregame(page); + return [3, page]; + }, + 3: async (page, reGet) => { + // In Game + const [result, error] = await overlayAndPop("d-xoi", { page: page, inspect: false }, stack); + return [4, result]; + }, + 4: async (winnerUUID, reGet) => { + const [res, e] = await overlayAndPop("d-xoi", { page: page, inspect: true }, stack); + var re = /^https?:\/\/[^/]+/i; + window.setTimeout(() => { + window.location.href = re.exec(window.location.href)[0]; + return false; + },1); + return [4, res]; + } + }; +} + + +//////////////////////////////////////////////////////////////////////////////// +// Exports +//////////////////////////////////////////////////////////////////////////////// + +export const initXoiView = (app) => { + app.component('d-pregame', pregame).component('d-xoi', xoi).component('d-bullselect', bullselect).component('d-gameinput', gameinput) +} + +export const xoiHandler = async (stack, id) => { + const page = reactive(await getGame(id)); + const sm = stateMachine(stack, page); + await powerStateMachine(sm, stack); +} diff --git a/assets/js/vue.esm-browser.js b/assets/js/vue.esm-browser.js new file mode 100644 index 0000000..9f4aecc --- /dev/null +++ b/assets/js/vue.esm-browser.js @@ -0,0 +1,15444 @@ +function makeMap(str, expectsLowerCase) { + const map = /* @__PURE__ */ Object.create(null); + const list = str.split(","); + for (let i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const onRE = /^on[^a-z]/; +const isOn = (key) => onRE.test(key); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `HYDRATE_EVENTS`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +function includeBooleanAttr(value) { + return !!value || value === ""; +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { + entries[`${key} =>`] = val2; + return entries; + }, {}) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()] + }; + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; + +function warn$1(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$1(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else { + warn$1( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +const createDep = (effects) => { + const dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; +}; +const wasTracked = (dep) => (dep.w & trackOpBit) > 0; +const newTracked = (dep) => (dep.n & trackOpBit) > 0; +const initDepMarkers = ({ deps }) => { + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; + } + } +}; +const finalizeDepMarkers = (effect) => { + const { deps } = effect; + if (deps.length) { + let ptr = 0; + for (let i = 0; i < deps.length; i++) { + const dep = deps[i]; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect); + } else { + deps[ptr++] = dep; + } + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } + deps.length = ptr; + } +}; + +const targetMap = /* @__PURE__ */ new WeakMap(); +let effectTrackDepth = 0; +let trackOpBit = 1; +const maxMarkerBits = 30; +let activeEffect; +const ITERATE_KEY = Symbol("iterate" ); +const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); +class ReactiveEffect { + constructor(fn, scheduler = null, scope) { + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this.parent = void 0; + recordEffectScope(this, scope); + } + run() { + if (!this.active) { + return this.fn(); + } + let parent = activeEffect; + let lastShouldTrack = shouldTrack; + while (parent) { + if (parent === this) { + return; + } + parent = parent.parent; + } + try { + this.parent = activeEffect; + activeEffect = this; + shouldTrack = true; + trackOpBit = 1 << ++effectTrackDepth; + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); + } else { + cleanupEffect(this); + } + return this.fn(); + } finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); + } + trackOpBit = 1 << --effectTrackDepth; + activeEffect = this.parent; + shouldTrack = lastShouldTrack; + this.parent = void 0; + if (this.deferStop) { + this.stop(); + } + } + } + stop() { + if (activeEffect === this) { + this.deferStop = true; + } else if (this.active) { + cleanupEffect(this); + if (this.onStop) { + this.onStop(); + } + this.active = false; + } + } +} +function cleanupEffect(effect2) { + const { deps } = effect2; + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].delete(effect2); + } + deps.length = 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep()); + } + const eventInfo = { effect: activeEffect, target, type, key } ; + trackEffects(dep, eventInfo); + } +} +function trackEffects(dep, debuggerEventExtraInfo) { + let shouldTrack2 = false; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; + shouldTrack2 = !wasTracked(dep); + } + } else { + shouldTrack2 = !dep.has(activeEffect); + } + if (shouldTrack2) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + if (activeEffect.onTrack) { + activeEffect.onTrack( + extend( + { + effect: activeEffect + }, + debuggerEventExtraInfo + ) + ); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ; + if (deps.length === 1) { + if (deps[0]) { + { + triggerEffects(deps[0], eventInfo); + } + } + } else { + const effects = []; + for (const dep of deps) { + if (dep) { + effects.push(...dep); + } + } + { + triggerEffects(createDep(effects), eventInfo); + } + } +} +function triggerEffects(dep, debuggerEventExtraInfo) { + const effects = isArray(dep) ? dep : [...dep]; + for (const effect2 of effects) { + if (effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } + for (const effect2 of effects) { + if (!effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } +} +function triggerEffect(effect2, debuggerEventExtraInfo) { + if (effect2 !== activeEffect || effect2.allowRecurse) { + if (effect2.onTrigger) { + effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + if (effect2.scheduler) { + effect2.scheduler(); + } else { + effect2.run(); + } + } +} +function getDepFromReactive(object, key) { + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + const res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _shallow = false) { + this._isReadonly = _isReadonly; + this._shallow = _shallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, shallow = this._shallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { + return target; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(shallow = false) { + super(false, shallow); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { + return false; + } + if (!this._shallow) { + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(shallow = false) { + super(true, shallow); + } + set(target, key) { + { + warn$1( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$1( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( + true +); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly = false, isShallow = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly = false) { + target = target["__v_raw"]; + !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly, isShallow) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + console.warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = /* @__PURE__ */ createInstrumentations(); +function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly; + } else if (key === "__v_isReadonly") { + return isReadonly; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + console.warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + console.warn(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return isReactive(value) || isReadonly(value); +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + def(value, "__v_skip", true); + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +function trackRefValue(ref2) { + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + { + trackEffects(ref2.dep || (ref2.dep = createDep()), { + target: ref2, + type: "get", + key: "value" + }); + } + } +} +function triggerRefValue(ref2, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + { + triggerEffects(dep, { + target: ref2, + type: "set", + key: "value", + newValue: newVal + }); + } + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, newVal); + } + } +} +function triggerRef(ref2) { + triggerRefValue(ref2, ref2.value ); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get, set } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + console.warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this._dirty = true; + this.effect = new ReactiveEffect(getter, () => { + if (!this._dirty) { + this._dirty = true; + triggerRefValue(this); + } + }); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly; + } + get value() { + const self = toRaw(this); + trackRefValue(self); + if (self._dirty || !self._cacheable) { + self._dirty = false; + self._value = self.effect.run(); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } +} +function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + console.warn("Write operation failed: computed value is readonly"); + } ; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn(msg, ...args) { + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" +}; +function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +let isFlushing = false; +let isFlushPending = false; +const queue = []; +let flushIndex = 0; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)]; + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? Infinity : job.id; +const comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + warn( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.` + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Set(); +{ + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools) { + devtools.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook(hook, target) { + var _a, _b; + devtools = hook; + if (devtools) { + devtools.enabled = true; + buffer.forEach(({ event, args }) => devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( + "component:added" /* COMPONENT_ADDED */ +); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:start" /* PERFORMANCE_START */ +); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:end" /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(event)}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + result = normalizeVNode( + render.call( + proxyToUse, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + props, + true ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + props, + null + /* we know it doesn't need it */ + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren); + if (!childRoot) { + return [vnode, void 0]; + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent && parent.subTree === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + /* do not include inferred name to avoid breaking existing code */ + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} + +const isSuspense = (type) => type.__isSuspense; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else { + suspense.pendingId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + suspense.pendingId++; + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + isSVG, + container, + hiddenContainer, + anchor, + deps: 0, + pendingId: 0, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: true, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move(pendingBranch, container2, anchor2, 0); + queuePostFlushCb(effects); + } + }; + } + let { anchor: anchor2 } = suspense; + if (activeBranch) { + anchor2 = next(activeBranch); + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor2, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + isSVG2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + isSVG, + optimized + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + document.createElement("div"), + null, + isSVG, + slotScopeIds, + optimized, + rendererInternals, + true + /* hydrating */ + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = vnode.el = branch.el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; +} + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "post" }) + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "sync" }) + ); +} +const INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) { + var _a; + if (!cb) { + if (immediate !== void 0) { + warn( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => source; + deep = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return traverse(s); + } else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (instance && instance.isUnmounted) { + return; + } + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4); + }; + }; + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect = new ReactiveEffect(getter, scheduler); + { + effect.onTrack = onTrack; + effect.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect.run.bind(effect), + instance && instance.suspense + ); + } else { + effect.run(); + } + const unwatch = () => { + effect.stop(); + if (instance && instance.scope) { + remove(instance.scope.effects, effect); + } + }; + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } else { + unsetCurrentInstance(); + } + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, seen) { + if (!isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (isRef(value)) { + traverse(value.value, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], seen); + } + } + return value; +} + +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey$1 = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === void 0) { + prevTransitionKey = key; + } else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in") { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey$1] = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey$1] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey$1]) { + el[enterCbKey$1]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode; +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + /* do not throw in dev if user provided error component */ + ); + }; + if (suspensible && instance.suspense || false) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + isSVG, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); + warn( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook("bu"); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook("bum"); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook("sp"); +const onRenderTriggered = createHook( + "rtg" +); +const onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance, "get", key); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn(`Cannot mutate '; + } + + /** + * Includes an SVG file by absolute or + * relative file path. + * @since 3.7.0 + */ + public static function svg(string|File $file): string|false + { + // support for Kirby's file objects + if ( + $file instanceof File && + $file->extension() === 'svg' + ) { + return $file->read(); + } + + if (is_string($file) === false) { + return false; + } + + $extension = F::extension($file); + + // check for valid svg files + if ($extension !== 'svg') { + return false; + } + + // try to convert relative paths to absolute + if (file_exists($file) === false) { + $root = App::instance()->root(); + $file = realpath($root . '/' . $file); + } + + return F::read($file); + } +} diff --git a/kirby/src/Cms/Ingredients.php b/kirby/src/Cms/Ingredients.php new file mode 100644 index 0000000..f9c1c59 --- /dev/null +++ b/kirby/src/Cms/Ingredients.php @@ -0,0 +1,82 @@ +urls()` and `$kirby->roots()` objects. + * Those are configured in `kirby/config/urls.php` + * and `kirby/config/roots.php` + * + * @package Kirby Cms + * @author Bastian Allgeier + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Ingredients +{ + /** + * @var array + */ + protected $ingredients = []; + + /** + * Creates a new ingredient collection + */ + public function __construct(array $ingredients) + { + $this->ingredients = $ingredients; + } + + /** + * Magic getter for single ingredients + */ + public function __call(string $method, array $args = null): mixed + { + return $this->ingredients[$method] ?? null; + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->ingredients; + } + + /** + * Get a single ingredient by key + */ + public function __get(string $key) + { + return $this->ingredients[$key] ?? null; + } + + /** + * Resolves all ingredient callbacks + * and creates a plain array + * @internal + */ + public static function bake(array $ingredients): static + { + foreach ($ingredients as $name => $ingredient) { + if ($ingredient instanceof Closure) { + $ingredients[$name] = $ingredient($ingredients); + } + } + + return new static($ingredients); + } + + /** + * Returns all ingredients as plain array + */ + public function toArray(): array + { + return $this->ingredients; + } +} diff --git a/kirby/src/Cms/Item.php b/kirby/src/Cms/Item.php new file mode 100644 index 0000000..86dd85a --- /dev/null +++ b/kirby/src/Cms/Item.php @@ -0,0 +1,118 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Item +{ + use HasSiblings; + + public const ITEMS_CLASS = Items::class; + + protected Field|null $field; + + protected string $id; + protected array $params; + protected ModelWithContent $parent; + protected Items $siblings; + + /** + * Creates a new item + */ + public function __construct(array $params = []) + { + $class = static::ITEMS_CLASS; + $this->id = $params['id'] ?? Str::uuid(); + $this->params = $params; + $this->field = $params['field'] ?? null; + $this->parent = $params['parent'] ?? App::instance()->site(); + $this->siblings = $params['siblings'] ?? new $class(); + } + + /** + * Static Item factory + */ + public static function factory(array $params): static + { + return new static($params); + } + + /** + * Returns the parent field if known + */ + public function field(): Field|null + { + return $this->field; + } + + /** + * Returns the unique item id (UUID v4) + */ + public function id(): string + { + return $this->id; + } + + /** + * Compares the item to another one + */ + public function is(Item $item): bool + { + return $this->id() === $item->id(); + } + + /** + * Returns the Kirby instance + */ + public function kirby(): App + { + return $this->parent()->kirby(); + } + + /** + * Returns the parent model + */ + public function parent(): ModelWithContent + { + return $this->parent; + } + + /** + * Returns the sibling collection + * This is required by the HasSiblings trait + * + * @psalm-return self::ITEMS_CLASS + */ + protected function siblingsCollection(): Items + { + return $this->siblings; + } + + /** + * Converts the item to an array + */ + public function toArray(): array + { + return [ + 'id' => $this->id(), + ]; + } +} diff --git a/kirby/src/Cms/Items.php b/kirby/src/Cms/Items.php new file mode 100644 index 0000000..97f8104 --- /dev/null +++ b/kirby/src/Cms/Items.php @@ -0,0 +1,100 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Items extends Collection +{ + public const ITEM_CLASS = Item::class; + + protected Field|null $field; + + /** + * All registered items methods + */ + public static array $methods = []; + + protected array $options; + + /** + * @var \Kirby\Cms\ModelWithContent + */ + protected $parent; + + public function __construct($objects = [], array $options = []) + { + $this->options = $options; + $this->parent = $options['parent'] ?? App::instance()->site(); + $this->field = $options['field'] ?? null; + + parent::__construct($objects, $this->parent); + } + + /** + * Creates a new item collection from a + * an array of item props + */ + public static function factory( + array $items = null, + array $params = [] + ): static { + if (empty($items) === true || is_array($items) === false) { + return new static(); + } + + if (is_array($params) === false) { + throw new InvalidArgumentException('Invalid item options'); + } + + // create a new collection of blocks + $collection = new static([], $params); + + foreach ($items as $item) { + if (is_array($item) === false) { + throw new InvalidArgumentException('Invalid data for ' . static::ITEM_CLASS); + } + + // inject properties from the parent + $item['field'] = $collection->field(); + $item['options'] = $params['options'] ?? []; + $item['parent'] = $collection->parent(); + $item['siblings'] = $collection; + $item['params'] = $item; + + $class = static::ITEM_CLASS; + $item = $class::factory($item); + $collection->append($item->id(), $item); + } + + return $collection; + } + + /** + * Returns the parent field if known + */ + public function field(): Field|null + { + return $this->field; + } + + /** + * Convert the items to an array + */ + public function toArray(Closure $map = null): array + { + return array_values(parent::toArray($map)); + } +} diff --git a/kirby/src/Cms/Language.php b/kirby/src/Cms/Language.php new file mode 100644 index 0000000..5921867 --- /dev/null +++ b/kirby/src/Cms/Language.php @@ -0,0 +1,572 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Language +{ + use HasSiblings; + + /** + * The parent Kirby instance + */ + public static App|null $kirby; + + protected string $code; + protected bool $default; + protected string $direction; + protected array $locale; + protected string $name; + protected array $slugs; + protected array $smartypants; + protected array $translations; + protected string|null $url; + + /** + * Creates a new language object + */ + public function __construct(array $props) + { + if (isset($props['code']) === false) { + throw new InvalidArgumentException('The property "code" is required'); + } + + static::$kirby = $props['kirby'] ?? null; + $this->code = trim($props['code']); + $this->default = ($props['default'] ?? false) === true; + $this->direction = ($props['direction'] ?? null) === 'rtl' ? 'rtl' : 'ltr'; + $this->name = trim($props['name'] ?? $this->code); + $this->slugs = $props['slugs'] ?? []; + $this->smartypants = $props['smartypants'] ?? []; + $this->translations = $props['translations'] ?? []; + $this->url = $props['url'] ?? null; + + if ($locale = $props['locale'] ?? null) { + $this->locale = Locale::normalize($locale); + } else { + $this->locale = [LC_ALL => $this->code]; + } + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Returns the language code + * when the language is converted to a string + */ + public function __toString(): string + { + return $this->code(); + } + + /** + * Returns the base Url for the language + * without the path or other cruft + */ + public function baseUrl(): string + { + $kirbyUrl = $this->kirby()->url(); + $languageUrl = $this->url(); + + if (empty($this->url)) { + return $kirbyUrl; + } + + if (Str::startsWith($languageUrl, $kirbyUrl) === true) { + return $kirbyUrl; + } + + return Url::base($languageUrl) ?? $kirbyUrl; + } + + /** + * Creates an instance with the same + * initial properties. + */ + public function clone(array $props = []): static + { + return new static(array_replace_recursive([ + 'code' => $this->code, + 'default' => $this->default, + 'direction' => $this->direction, + 'locale' => $this->locale, + 'name' => $this->name, + 'slugs' => $this->slugs, + 'smartypants' => $this->smartypants, + 'translations' => $this->translations, + 'url' => $this->url, + ], $props)); + } + + /** + * Returns the language code/id. + * The language code is used in + * text file names as appendix. + */ + public function code(): string + { + return $this->code; + } + + /** + * Creates a new language object + * @internal + */ + public static function create(array $props): static + { + $props['code'] = Str::slug($props['code'] ?? null); + $kirby = App::instance(); + $languages = $kirby->languages(); + + // make the first language the default language + if ($languages->count() === 0) { + $props['default'] = true; + } + + $language = new static($props); + + // trigger before hook + $kirby->trigger( + 'language.create:before', + [ + 'input' => $props, + 'language' => $language + ] + ); + + // validate the new language + LanguageRules::create($language); + + $language->save(); + + if ($languages->count() === 0) { + foreach ($kirby->models() as $model) { + $model->storage()->convertLanguage( + 'default', + $language->code() + ); + } + } + + // update the main languages collection in the app instance + $kirby->languages(false)->append($language->code(), $language); + + // trigger after hook + $kirby->trigger( + 'language.create:after', + [ + 'input' => $props, + 'language' => $language + ] + ); + + return $language; + } + + /** + * Delete the current language and + * all its translation files + * @internal + * + * @throws \Kirby\Exception\Exception + */ + public function delete(): bool + { + $kirby = App::instance(); + $code = $this->code(); + + if ($this->isDeletable() === false) { + throw new Exception('The language cannot be deleted'); + } + + // trigger before hook + $kirby->trigger('language.delete:before', [ + 'language' => $this + ]); + + if (F::remove($this->root()) !== true) { + throw new Exception('The language could not be deleted'); + } + + foreach ($kirby->models() as $model) { + if ($this->isLast() === true) { + $model->storage()->convertLanguage($code, 'default'); + } else { + $model->storage()->deleteLanguage($code); + } + } + + // get the original language collection and remove the current language + $kirby->languages(false)->remove($code); + + // trigger after hook + $kirby->trigger('language.delete:after', [ + 'language' => $this + ]); + + return true; + } + + /** + * Reading direction of this language + */ + public function direction(): string + { + return $this->direction; + } + + /** + * Check if the language file exists + */ + public function exists(): bool + { + return file_exists($this->root()); + } + + /** + * Checks if this is the default language + * for the site. + */ + public function isDefault(): bool + { + return $this->default; + } + + /** + * Checks if the language can be deleted + */ + public function isDeletable(): bool + { + // the default language can only be deleted if it's the last + if ($this->isDefault() === true && $this->isLast() === false) { + return false; + } + + return true; + } + + /** + * Checks if this is the last language + */ + public function isLast(): bool + { + return App::instance()->languages()->count() === 1; + } + + /** + * The id is required for collections + * to work properly. The code is used as id + */ + public function id(): string + { + return $this->code; + } + + /** + * Returns the parent Kirby instance + */ + public function kirby(): App + { + return static::$kirby ??= App::instance(); + } + + /** + * Loads the language rules for provided locale code + */ + public static function loadRules(string $code): array + { + $kirby = App::instance(); + $code = Str::contains($code, '.') ? Str::before($code, '.') : $code; + $file = $kirby->root('i18n:rules') . '/' . $code . '.json'; + + if (F::exists($file) === false) { + $file = $kirby->root('i18n:rules') . '/' . Str::before($code, '_') . '.json'; + } + + try { + return Data::read($file); + } catch (\Exception) { + return []; + } + } + + /** + * Returns the PHP locale setting array + * + * @param int $category If passed, returns the locale for the specified category (e.g. LC_ALL) as string + */ + public function locale(int $category = null): array|string|null + { + if ($category !== null) { + return $this->locale[$category] ?? $this->locale[LC_ALL] ?? null; + } + + return $this->locale; + } + + /** + * Returns the human-readable name + * of the language + */ + public function name(): string + { + return $this->name; + } + + /** + * Returns the URL path for the language + */ + public function path(): string + { + if ($this->url === null) { + return $this->code; + } + + return Url::path($this->url); + } + + /** + * Returns the routing pattern for the language + */ + public function pattern(): string + { + $path = $this->path(); + + if (empty($path) === true) { + return '(:all)'; + } + + return $path . '/(:all?)'; + } + + /** + * Returns the absolute path to the language file + */ + public function root(): string + { + return App::instance()->root('languages') . '/' . $this->code() . '.php'; + } + + /** + * Returns the LanguageRouter instance + * which is used to handle language specific + * routes. + */ + public function router(): LanguageRouter + { + return new LanguageRouter($this); + } + + /** + * Get slug rules for language + * @internal + */ + public function rules(): array + { + $code = $this->locale(LC_CTYPE); + $data = static::loadRules($code); + return array_merge($data, $this->slugs()); + } + + /** + * Saves the language settings in the languages folder + * @internal + * + * @return $this + */ + public function save(): static + { + try { + $existingData = Data::read($this->root()); + } catch (Throwable) { + $existingData = []; + } + + $props = [ + 'code' => $this->code(), + 'default' => $this->isDefault(), + 'direction' => $this->direction(), + 'locale' => Locale::export($this->locale()), + 'name' => $this->name(), + 'translations' => $this->translations(), + 'url' => $this->url, + ]; + + $data = array_merge($existingData, $props); + + ksort($data); + + Data::write($this->root(), $data); + + return $this; + } + + /** + * Private siblings collector + */ + protected function siblingsCollection(): Collection + { + return App::instance()->languages(); + } + + /** + * Returns the custom slug rules for this language + */ + public function slugs(): array + { + return $this->slugs; + } + + /** + * Returns the custom SmartyPants options for this language + */ + public function smartypants(): array + { + return $this->smartypants; + } + + /** + * Returns the most important + * properties as array + */ + public function toArray(): array + { + return [ + 'code' => $this->code(), + 'default' => $this->isDefault(), + 'direction' => $this->direction(), + 'locale' => $this->locale(), + 'name' => $this->name(), + 'rules' => $this->rules(), + 'url' => $this->url() + ]; + } + + /** + * Returns the translation strings for this language + */ + public function translations(): array + { + return $this->translations; + } + + /** + * Returns the absolute Url for the language + */ + public function url(): string + { + $url = $this->url; + $url ??= '/' . $this->code; + return Url::makeAbsolute($url, $this->kirby()->url()); + } + + /** + * Update language properties and save them + * @internal + */ + public function update(array $props = null): static + { + // don't change the language code + unset($props['code']); + + // make sure the slug is nice and clean + $props['slug'] = Str::slug($props['slug'] ?? null); + + $kirby = App::instance(); + $updated = $this->clone($props); + + if (isset($props['translations']) === true) { + $updated->translations = $props['translations']; + } + + // validate the updated language + LanguageRules::update($updated); + + // trigger before hook + $kirby->trigger('language.update:before', [ + 'language' => $this, + 'input' => $props + ]); + + // if language just got promoted to be the new default language… + if ($this->isDefault() === false && $updated->isDefault() === true) { + // convert the current default to a non-default language + $previous = $kirby->defaultLanguage()?->clone(['default' => false])->save(); + $kirby->languages(false)->set($previous->code(), $previous); + + foreach ($kirby->models() as $model) { + $model->storage()->touchLanguage($this); + } + } + + // if language was the default language and got demoted… + if ( + $this->isDefault() === true && + $updated->isDefault() === false && + $kirby->defaultLanguage()->code() === $this->code() + ) { + // ensure another language has already been set as default + throw new LogicException('Please select another language to be the primary language'); + } + + $language = $updated->save(); + + // make sure the language is also updated in the languages collection + $kirby->languages(false)->set($language->code(), $language); + + // trigger after hook + $kirby->trigger('language.update:after', [ + 'newLanguage' => $language, + 'oldLanguage' => $this, + 'input' => $props + ]); + + return $language; + } + + /** + * Returns a language variable object + * for the key in the translations array + */ + public function variable(string $key, bool $decode = false): LanguageVariable + { + // allows decoding if base64-url encoded url is sent + // for compatibility of different environments + if ($decode === true) { + $key = rawurldecode(base64_decode($key)); + } + + return new LanguageVariable($this, $key); + } +} diff --git a/kirby/src/Cms/LanguageRouter.php b/kirby/src/Cms/LanguageRouter.php new file mode 100644 index 0000000..bca5daf --- /dev/null +++ b/kirby/src/Cms/LanguageRouter.php @@ -0,0 +1,125 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class LanguageRouter +{ + protected Router $router; + + /** + * Creates a new language router instance + * for the given language + */ + public function __construct( + protected Language $language + ) { + } + + /** + * Fetches all scoped routes for the + * current language from the Kirby instance + * + * @throws \Kirby\Exception\NotFoundException + */ + public function routes(): array + { + $language = $this->language; + $kirby = $language->kirby(); + $routes = $kirby->routes(); + + // only keep the scoped language routes + $routes = array_values(array_filter($routes, function ($route) use ($language) { + // no language scope + if (empty($route['language']) === true) { + return false; + } + + // wildcard + if ($route['language'] === '*') { + return true; + } + + // get all applicable languages + $languages = Str::split(strtolower($route['language']), '|'); + + // validate the language + return in_array($language->code(), $languages) === true; + })); + + // add the page-scope if necessary + foreach ($routes as $index => $route) { + if ($pageId = ($route['page'] ?? null)) { + if ($page = $kirby->page($pageId)) { + // convert string patterns to arrays + $patterns = A::wrap($route['pattern']); + + // prefix all patterns with the page slug + $patterns = A::map( + $patterns, + fn ($pattern) => $page->uri($language) . '/' . $pattern + ); + + // re-inject the pattern and the full page object + $routes[$index]['pattern'] = $patterns; + $routes[$index]['page'] = $page; + } else { + throw new NotFoundException('The page "' . $pageId . '" does not exist'); + } + } + } + + return $routes; + } + + /** + * Wrapper around the Router::call method + * that injects the Language instance and + * if needed also the Page as arguments. + */ + public function call(string|null $path = null): mixed + { + $language = $this->language; + $kirby = $language->kirby(); + $this->router ??= new Router($this->routes()); + + try { + return $this->router->call($path, $kirby->request()->method(), function ($route) use ($kirby, $language) { + $kirby->setCurrentTranslation($language); + $kirby->setCurrentLanguage($language); + + if ($page = $route->page()) { + return $route->action()->call( + $route, + $language, + $page, + ...$route->arguments() + ); + } + + return $route->action()->call( + $route, + $language, + ...$route->arguments() + ); + }); + } catch (Exception) { + return $kirby->resolve($path, $language->code()); + } + } +} diff --git a/kirby/src/Cms/LanguageRoutes.php b/kirby/src/Cms/LanguageRoutes.php new file mode 100644 index 0000000..68bdf42 --- /dev/null +++ b/kirby/src/Cms/LanguageRoutes.php @@ -0,0 +1,156 @@ +url(); + + foreach ($kirby->languages() as $language) { + // ignore languages with a different base url + if ($language->baseurl() !== $baseurl) { + continue; + } + + $routes[] = [ + 'pattern' => $language->pattern(), + 'method' => 'ALL', + 'env' => 'site', + 'action' => function ($path = null) use ($language) { + $result = $language->router()->call($path); + + // explicitly test for null as $result can + // contain falsy values that should still be returned + if ($result !== null) { + return $result; + } + + // jump through to the fallback if nothing + // can be found for this language + /** @var \Kirby\Http\Route $this */ + $this->next(); + } + ]; + } + + $routes[] = static::fallback($kirby); + + return $routes; + } + + + /** + * Create the fallback route + * for unprefixed default language URLs. + */ + public static function fallback(App $kirby): array + { + return [ + 'pattern' => '(:all)', + 'method' => 'ALL', + 'env' => 'site', + 'action' => function (string $path) use ($kirby) { + // check for content representations or files + $extension = F::extension($path); + + // try to redirect prefixed pages + if ( + empty($extension) === true && + $page = $kirby->page($path) + ) { + $url = $kirby->request()->url([ + 'query' => null, + 'params' => null, + 'fragment' => null + ]); + + if ($url->toString() !== $page->url()) { + // redirect to translated page directly if translation + // is exists and languages detect is enabled + $lang = $kirby->detectedLanguage()->code(); + + if ( + $kirby->option('languages.detect') === true && + $page->translation($lang)->exists() === true + ) { + return $kirby + ->response() + ->redirect($page->url($lang)); + } + + return $kirby + ->response() + ->redirect($page->url()); + } + } + + return $kirby->language()->router()->call($path); + } + ]; + } + + /** + * Create the multi-language home page route + */ + public static function home(App $kirby): array + { + // Multi-language home + return [ + 'pattern' => '', + 'method' => 'ALL', + 'env' => 'site', + 'action' => function () use ($kirby) { + // find all languages with the same base url as the current installation + $languages = $kirby->languages()->filter( + 'baseurl', + $kirby->url() + ); + + // if there's no language with a matching base url, + // redirect to the default language + if ($languages->count() === 0) { + return $kirby + ->response() + ->redirect($kirby->defaultLanguage()->url()); + } + + // if there's just one language, + // we take that to render the home page + if ($languages->count() === 1) { + $currentLanguage = $languages->first(); + } else { + $currentLanguage = $kirby->defaultLanguage(); + } + + // language detection on the home page with / as URL + if ($kirby->url() !== $currentLanguage->url()) { + if ($kirby->option('languages.detect') === true) { + return $kirby + ->response() + ->redirect($kirby->detectedLanguage()->url()); + } + + return $kirby + ->response() + ->redirect($currentLanguage->url()); + } + + // render the home page of the current language + return $currentLanguage->router()->call(); + } + ]; + } +} diff --git a/kirby/src/Cms/LanguageRules.php b/kirby/src/Cms/LanguageRules.php new file mode 100644 index 0000000..6263b90 --- /dev/null +++ b/kirby/src/Cms/LanguageRules.php @@ -0,0 +1,90 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class LanguageRules +{ + /** + * Validates if the language can be created + * + * @throws \Kirby\Exception\DuplicateException If the language already exists + */ + public static function create(Language $language): bool + { + static::validLanguageCode($language); + static::validLanguageName($language); + + if ($language->exists() === true) { + throw new DuplicateException([ + 'key' => 'language.duplicate', + 'data' => [ + 'code' => $language->code() + ] + ]); + } + + return true; + } + + /** + * Validates if the language can be updated + */ + public static function update(Language $language) + { + static::validLanguageCode($language); + static::validLanguageName($language); + } + + /** + * Validates if the language code is formatted correctly + * + * @throws \Kirby\Exception\InvalidArgumentException If the language code is not valid + */ + public static function validLanguageCode(Language $language): bool + { + if (Str::length($language->code()) < 2) { + throw new InvalidArgumentException([ + 'key' => 'language.code', + 'data' => [ + 'code' => $language->code(), + 'name' => $language->name() + ] + ]); + } + + return true; + } + + /** + * Validates if the language name is formatted correctly + * + * @throws \Kirby\Exception\InvalidArgumentException If the language name is invalid + */ + public static function validLanguageName(Language $language): bool + { + if (Str::length($language->name()) < 1) { + throw new InvalidArgumentException([ + 'key' => 'language.name', + 'data' => [ + 'code' => $language->code(), + 'name' => $language->name() + ] + ]); + } + + return true; + } +} diff --git a/kirby/src/Cms/LanguageVariable.php b/kirby/src/Cms/LanguageVariable.php new file mode 100644 index 0000000..b26336e --- /dev/null +++ b/kirby/src/Cms/LanguageVariable.php @@ -0,0 +1,122 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class LanguageVariable +{ + protected App $kirby; + + public function __construct( + protected Language $language, + protected string $key + ) { + $this->kirby = App::instance(); + } + + /** + * Creates a new language variable. This will + * be added to the default language first and + * can then be translated in other languages. + */ + public static function create( + string $key, + string|null $value = null + ): static { + if (is_numeric($key) === true) { + throw new InvalidArgumentException('The variable key must not be numeric'); + } + + if (empty($key) === true) { + throw new InvalidArgumentException('The variable needs a valid key'); + } + + $kirby = App::instance(); + $language = $kirby->defaultLanguage(); + $translations = $language->translations(); + + if ($kirby->translation()->get($key) !== null) { + if (isset($translations[$key]) === true) { + throw new DuplicateException('The variable already exists'); + } + + throw new DuplicateException('The variable is part of the core translation and cannot be overwritten'); + } + + $translations[$key] = trim($value ?? ''); + + $language->update(['translations' => $translations]); + + return $language->variable($key); + } + + /** + * Deletes a language variable from the translations array. + * This will go through all language files and delete the + * key from all translation arrays to keep them clean. + */ + public function delete(): bool + { + // go through all languages and remove the variable + foreach ($this->kirby->languages() as $language) { + $variables = $language->translations(); + + unset($variables[$this->key]); + + $language->update(['translations' => $variables]); + } + + return true; + } + + /** + * Checks if a language variable exists in the default language + */ + public function exists(): bool + { + $language = $this->kirby->defaultLanguage(); + return isset($language->translations()[$this->key]) === true; + } + + /** + * Returns the unique key for the variable + */ + public function key(): string + { + return $this->key; + } + + /** + * Sets a new value for the language variable + */ + public function update(string $value): static + { + $translations = $this->language->translations(); + $translations[$this->key] = $value; + + $language = $this->language->update(['translations' => $translations]); + + return $language->variable($this->key); + } + + /** + * Returns the value if the variable has been translated. + */ + public function value(): string|null + { + return $this->language->translations()[$this->key] ?? null; + } +} diff --git a/kirby/src/Cms/Languages.php b/kirby/src/Cms/Languages.php new file mode 100644 index 0000000..ba631b9 --- /dev/null +++ b/kirby/src/Cms/Languages.php @@ -0,0 +1,94 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Languages extends Collection +{ + /** + * All registered languages methods + */ + public static array $methods = []; + + /** + * Creates a new collection with the given language objects + * + * @param null $parent + * @throws \Kirby\Exception\DuplicateException + */ + public function __construct( + array $objects = [], + $parent = null + ) { + $defaults = array_filter( + $objects, + fn ($language) => $language->isDefault() === true + ); + + if (count($defaults) > 1) { + throw new DuplicateException('You cannot have multiple default languages. Please check your language config files.'); + } + + parent::__construct($objects, null); + } + + /** + * Returns all language codes as array + */ + public function codes(): array + { + return App::instance()->multilang() ? $this->keys() : ['default']; + } + + /** + * Creates a new language with the given props + * @internal + */ + public function create(array $props): Language + { + return Language::create($props); + } + + /** + * Returns the default language + */ + public function default(): Language|null + { + return $this->findBy('isDefault', true) ?? $this->first(); + } + + /** + * Convert all defined languages to a collection + * @internal + */ + public static function load(): static + { + $languages = []; + $files = glob(App::instance()->root('languages') . '/*.php'); + + foreach ($files as $file) { + $props = F::load($file, allowOutput: false); + + if (is_array($props) === true) { + // inject the language code from the filename + // if it does not exist + $props['code'] ??= F::name($file); + + $languages[] = new Language($props); + } + } + + return new static($languages); + } +} diff --git a/kirby/src/Cms/Layout.php b/kirby/src/Cms/Layout.php new file mode 100644 index 0000000..c6920fd --- /dev/null +++ b/kirby/src/Cms/Layout.php @@ -0,0 +1,105 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Layout extends Item +{ + use HasMethods; + + public const ITEMS_CLASS = Layouts::class; + + protected Content $attrs; + protected LayoutColumns $columns; + + /** + * Proxy for attrs + */ + public function __call(string $method, array $args = []): mixed + { + // layout methods + if ($this->hasMethod($method) === true) { + return $this->callMethod($method, $args); + } + + return $this->attrs()->get($method); + } + + /** + * Creates a new Layout object + */ + public function __construct(array $params = []) + { + parent::__construct($params); + + $this->columns = LayoutColumns::factory($params['columns'] ?? [], [ + 'field' => $this->field, + 'parent' => $this->parent + ]); + + // create the attrs object + $this->attrs = new Content($params['attrs'] ?? [], $this->parent); + } + + /** + * Returns the attrs object + */ + public function attrs(): Content + { + return $this->attrs; + } + + /** + * Returns the columns in this layout + */ + public function columns(): LayoutColumns + { + return $this->columns; + } + + /** + * Checks if the layout is empty + * @since 3.5.2 + */ + public function isEmpty(): bool + { + return $this + ->columns() + ->filter('isEmpty', false) + ->count() === 0; + } + + /** + * Checks if the layout is not empty + * @since 3.5.2 + */ + public function isNotEmpty(): bool + { + return $this->isEmpty() === false; + } + + /** + * The result is being sent to the editor + * via the API in the panel + */ + public function toArray(): array + { + return [ + 'attrs' => $this->attrs()->toArray(), + 'columns' => $this->columns()->toArray(), + 'id' => $this->id(), + ]; + } +} diff --git a/kirby/src/Cms/LayoutColumn.php b/kirby/src/Cms/LayoutColumn.php new file mode 100644 index 0000000..11d61d7 --- /dev/null +++ b/kirby/src/Cms/LayoutColumn.php @@ -0,0 +1,120 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class LayoutColumn extends Item +{ + use HasMethods; + + public const ITEMS_CLASS = LayoutColumns::class; + + protected Blocks $blocks; + protected string $width; + + /** + * Creates a new LayoutColumn object + */ + public function __construct(array $params = []) + { + parent::__construct($params); + + $this->blocks = Blocks::factory($params['blocks'] ?? [], [ + 'field' => $this->field, + 'parent' => $this->parent + ]); + + $this->width = $params['width'] ?? '1/1'; + } + + /** + * Magic getter function + */ + public function __call(string $method, mixed $args): mixed + { + // layout column methods + if ($this->hasMethod($method) === true) { + return $this->callMethod($method, $args); + } + } + + /** + * Returns the blocks collection + * + * @param bool $includeHidden Sets whether to include hidden blocks + */ + public function blocks(bool $includeHidden = false): Blocks + { + if ($includeHidden === false) { + return $this->blocks->filter('isHidden', false); + } + + return $this->blocks; + } + + /** + * Checks if the column is empty + * @since 3.5.2 + */ + public function isEmpty(): bool + { + return $this + ->blocks() + ->filter('isHidden', false) + ->count() === 0; + } + + /** + * Checks if the column is not empty + * @since 3.5.2 + */ + public function isNotEmpty(): bool + { + return $this->isEmpty() === false; + } + + /** + * Returns the number of columns this column spans + */ + public function span(int $columns = 12): int + { + $fraction = Str::split($this->width, '/'); + $a = $fraction[0] ?? 1; + $b = $fraction[1] ?? 1; + + return $columns * $a / $b; + } + + /** + * The result is being sent to the editor + * via the API in the panel + */ + public function toArray(): array + { + return [ + 'blocks' => $this->blocks(true)->toArray(), + 'id' => $this->id(), + 'width' => $this->width(), + ]; + } + + /** + * Returns the width of the column + */ + public function width(): string + { + return $this->width; + } +} diff --git a/kirby/src/Cms/LayoutColumns.php b/kirby/src/Cms/LayoutColumns.php new file mode 100644 index 0000000..195e39e --- /dev/null +++ b/kirby/src/Cms/LayoutColumns.php @@ -0,0 +1,23 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class LayoutColumns extends Items +{ + public const ITEM_CLASS = LayoutColumn::class; + + /** + * All registered layout columns methods + */ + public static array $methods = []; +} diff --git a/kirby/src/Cms/Layouts.php b/kirby/src/Cms/Layouts.php new file mode 100644 index 0000000..1888680 --- /dev/null +++ b/kirby/src/Cms/Layouts.php @@ -0,0 +1,120 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Layouts extends Items +{ + public const ITEM_CLASS = Layout::class; + + /** + * All registered layouts methods + */ + public static array $methods = []; + + public static function factory( + array $items = null, + array $params = [] + ): static { + // convert single layout to layouts array + if ( + isset($items['columns']) === true || + isset($items['id']) === true + ) { + $items = [$items]; + } + + $first = $items[0] ?? []; + + // if there are no wrapping layouts for blocks yet … + if ( + isset($first['content']) === true || + isset($first['type']) === true + ) { + $items = [ + [ + 'id' => Str::uuid(), + 'columns' => [ + [ + 'width' => '1/1', + 'blocks' => $items + ] + ] + ] + ]; + } + + return parent::factory($items, $params); + } + + /** + * Checks if a given block type exists in the layouts collection + * @since 3.6.0 + */ + public function hasBlockType(string $type): bool + { + return $this->toBlocks()->hasType($type); + } + + /** + * Parse layouts data + */ + public static function parse(array|string|null $input): array + { + if ( + empty($input) === false && + is_array($input) === false + ) { + try { + $input = Json::decode((string)$input); + } catch (Throwable) { + return []; + } + } + + if (empty($input) === true) { + return []; + } + + return $input; + } + + /** + * Converts layouts to blocks + * @since 3.6.0 + * + * @param bool $includeHidden Sets whether to include hidden blocks + */ + public function toBlocks(bool $includeHidden = false): Blocks + { + $blocks = []; + + if ($this->isNotEmpty() === true) { + foreach ($this->data() as $layout) { + foreach ($layout->columns() as $column) { + foreach ($column->blocks($includeHidden) as $block) { + $blocks[] = $block->toArray(); + } + } + } + } + + return Blocks::factory($blocks, [ + 'field' => $this->field, + 'parent' => $this->parent + ]); + } +} diff --git a/kirby/src/Cms/License.php b/kirby/src/Cms/License.php new file mode 100644 index 0000000..efd2e3d --- /dev/null +++ b/kirby/src/Cms/License.php @@ -0,0 +1,523 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class License +{ + protected const HISTORY = [ + '3' => '2019-02-05', + '4' => '2023-11-28' + ]; + + protected const SALT = 'kwAHMLyLPBnHEskzH9pPbJsBxQhKXZnX'; + + // cache + protected LicenseStatus $status; + protected LicenseType $type; + + public function __construct( + protected string|null $activation = null, + protected string|null $code = null, + protected string|null $domain = null, + protected string|null $email = null, + protected string|null $order = null, + protected string|null $date = null, + protected string|null $signature = null, + ) { + // normalize the email address + $this->email = $this->email === null ? null : $this->normalizeEmail($this->email); + } + + /** + * Returns the activation date if available + */ + public function activation(string|IntlDateFormatter|null $format = null): int|string|null + { + return $this->activation !== null ? Str::date(strtotime($this->activation), $format) : null; + } + + /** + * Returns the license code if available + */ + public function code(bool $obfuscated = false): string|null + { + if ($this->code !== null && $obfuscated === true) { + return Str::substr($this->code, 0, 10) . str_repeat('X', 22); + } + + return $this->code; + } + + /** + * Content for the license file + */ + public function content(): array + { + return [ + 'activation' => $this->activation, + 'code' => $this->code, + 'date' => $this->date, + 'domain' => $this->domain, + 'email' => $this->email, + 'order' => $this->order, + 'signature' => $this->signature, + ]; + } + + /** + * Returns the purchase date if available + */ + public function date(string|IntlDateFormatter|null $format = null): int|string|null + { + return $this->date !== null ? Str::date(strtotime($this->date), $format) : null; + } + + /** + * Returns the activation domain if available + */ + public function domain(): string|null + { + return $this->domain; + } + + /** + * Returns the activation email if available + */ + public function email(): string|null + { + return $this->email; + } + + /** + * Validates the email address of the license + */ + public function hasValidEmailAddress(): bool + { + return V::email($this->email) === true; + } + + /** + * Hub address + */ + public static function hub(): string + { + return App::instance()->option('hub', 'https://hub.getkirby.com'); + } + + /** + * Checks for all required components of a valid license + */ + public function isComplete(): bool + { + if ( + $this->code !== null && + $this->date !== null && + $this->domain !== null && + $this->email !== null && + $this->order !== null && + $this->signature !== null && + $this->hasValidEmailAddress() === true && + $this->type() !== LicenseType::Invalid + ) { + return true; + } + + return false; + } + + /** + * The license is still valid for the currently + * installed version, but it passed the 3 year period. + */ + public function isInactive(): bool + { + return $this->renewal() < time(); + } + + /** + * Checks for licenses beyond their 3 year period + */ + public function isLegacy(): bool + { + if ($this->type() === LicenseType::Legacy) { + return true; + } + + // without an activation date, the license + // renewal cannot be evaluated and the license + // has to be marked as expired + if ($this->activation === null) { + return true; + } + + // get release date of current major version + $major = Str::before(App::instance()->version(), '.'); + $release = strtotime(static::HISTORY[$major] ?? ''); + + // if there's no matching version in the history + // rather throw an exception to avoid further issues + // @codeCoverageIgnoreStart + if ($release === false) { + throw new InvalidArgumentException('The version for your license could not be found'); + } + // @codeCoverageIgnoreEnd + + // If the renewal date is older than the version launch + // date, the license is expired + return $this->renewal() < $release; + } + + /** + * Runs multiple checks to find out if the license is + * installed and verifiable + */ + public function isMissing(): bool + { + return + $this->isComplete() === false || + $this->isOnCorrectDomain() === false || + $this->isSigned() === false; + } + + /** + * Checks if the license is on the correct domain + */ + public function isOnCorrectDomain(): bool + { + if ($this->domain === null) { + return false; + } + + // compare domains + if ($this->normalizeDomain(App::instance()->system()->indexUrl()) !== $this->normalizeDomain($this->domain)) { + return false; + } + + return true; + } + + /** + * Compares the signature with all ingredients + */ + public function isSigned(): bool + { + if ($this->signature === null) { + return false; + } + + // get the public key + $pubKey = F::read(App::instance()->root('kirby') . '/kirby.pub'); + + // verify the license signature + $data = json_encode($this->signatureData()); + $signature = hex2bin($this->signature); + + return openssl_verify($data, $signature, $pubKey, 'RSA-SHA256') === 1; + } + + /** + * Returns a reliable label for the license type + */ + public function label(): string + { + if ($this->status() === LicenseStatus::Missing) { + return LicenseType::Invalid->label(); + } + + return $this->type()->label(); + } + + /** + * Prepares the email address to be make sure it + * does not have trailing spaces and is lowercase. + */ + protected function normalizeEmail(string $email): string + { + return Str::lower(trim($email)); + } + + /** + * Prepares the domain to be comparable + */ + protected function normalizeDomain(string $domain): string + { + // remove common "testing" subdomains as well as www. + // to ensure that installations of the same site have + // the same license URL; only for installations at /, + // subdirectory installations are difficult to normalize + if (Str::contains($domain, '/') === false) { + if (Str::startsWith($domain, 'www.')) { + return substr($domain, 4); + } + + if (Str::startsWith($domain, 'dev.')) { + return substr($domain, 4); + } + + if (Str::startsWith($domain, 'test.')) { + return substr($domain, 5); + } + + if (Str::startsWith($domain, 'staging.')) { + return substr($domain, 8); + } + } + + return $domain; + } + + /** + * Returns the order id if available + */ + public function order(): string|null + { + return $this->order; + } + + /** + * Support the old license file dataset + * from older licenses + */ + public static function polyfill(array $license): array + { + return [ + 'activation' => $license['activation'] ?? null, + 'code' => $license['code'] ?? $license['license'] ?? null, + 'date' => $license['date'] ?? null, + 'domain' => $license['domain'] ?? null, + 'email' => $license['email'] ?? null, + 'order' => $license['order'] ?? null, + 'signature' => $license['signature'] ?? null, + ]; + } + + /** + * Reads the license file in the config folder + * and creates a new license instance for it. + */ + public static function read(): static + { + try { + $license = Json::read(App::instance()->root('license')); + } catch (Throwable) { + return new static(); + } + + return new static(...static::polyfill($license)); + } + + /** + * Sends a request to the hub to register the license + */ + public function register(): static + { + if ($this->type() === LicenseType::Invalid) { + throw new InvalidArgumentException(['key' => 'license.format']); + } + + if ($this->hasValidEmailAddress() === false) { + throw new InvalidArgumentException(['key' => 'license.email']); + } + + if ($this->domain === null) { + throw new InvalidArgumentException(['key' => 'license.domain']); + } + + // @codeCoverageIgnoreStart + $response = $this->request('register', [ + 'license' => $this->code, + 'email' => $this->email, + 'domain' => $this->domain + ]); + + return $this->update($response); + // @codeCoverageIgnoreEnd + } + + /** + * Returns the renewal date + */ + public function renewal(string|IntlDateFormatter|null $format = null): int|string|null + { + if ($this->activation === null) { + return null; + } + + $time = strtotime('+3 years', $this->activation()); + return Str::date($time, $format); + } + + /** + * Sends a hub request + */ + public function request(string $path, array $data): array + { + // @codeCoverageIgnoreStart + $response = Remote::get(static::hub() . '/' . $path, [ + 'data' => $data + ]); + + // handle request errors + if ($response->code() !== 200) { + $message = $response->json()['message'] ?? 'The request failed'; + + throw new LogicException($message, $response->code()); + } + + return $response->json(); + // @codeCoverageIgnoreEnd + } + + /** + * Saves the license in the config folder + */ + public function save(): bool + { + if ($this->status() !== LicenseStatus::Active) { + throw new InvalidArgumentException([ + 'key' => 'license.verification' + ]); + } + + // where to store the license file + $file = App::instance()->root('license'); + + // save the license information + return Json::write($file, $this->content()); + } + + /** + * Returns the signature if available + */ + public function signature(): string|null + { + return $this->signature; + } + + /** + * Creates the signature data array to compare + * with the signature in ::isSigned + */ + public function signatureData(): array + { + if ($this->type() === LicenseType::Legacy) { + return [ + 'license' => $this->code, + 'order' => $this->order, + 'email' => hash('sha256', $this->email . static::SALT), + 'domain' => $this->domain, + 'date' => $this->date, + ]; + } + + return [ + 'activation' => $this->activation, + 'code' => $this->code, + 'date' => $this->date, + 'domain' => $this->domain, + 'email' => hash('sha256', $this->email . static::SALT), + 'order' => $this->order, + ]; + } + + /** + * Returns the license status as string + * This is used to build the proper UI elements + * for the license activation + */ + public function status(): LicenseStatus + { + return $this->status ??= match (true) { + $this->isMissing() === true => LicenseStatus::Missing, + $this->isLegacy() === true => LicenseStatus::Legacy, + $this->isInactive() === true => LicenseStatus::Inactive, + default => LicenseStatus::Active + }; + } + + /** + * Detects the license type if the license key is available + */ + public function type(): LicenseType + { + return $this->type ??= LicenseType::detect($this->code); + } + + /** + * Updates the license file + */ + public function update(array $data): static + { + // decode the response + $data = static::polyfill($data); + + $this->activation = $data['activation']; + $this->code = $data['code']; + $this->date = $data['date']; + $this->order = $data['order']; + $this->signature = $data['signature']; + + // clear the caches + unset($this->status, $this->type); + + // save the new state of the license + $this->save(); + + return $this; + } + + /** + * Sends an upgrade request to the hub in order + * to either redirect to the upgrade form or + * sync the new license state + * + * @codeCoverageIgnore + */ + public function upgrade(): array + { + $response = $this->request('upgrade', [ + 'domain' => $this->domain, + 'email' => $this->email, + 'license' => $this->code, + ]); + + // the license still needs an upgrade + if (empty($response['url']) === false) { + // validate the redirect URL + if (Str::startsWith($response['url'], static::hub()) === false) { + throw new Exception('We couldn’t redirect you to the Hub'); + } + + return [ + 'status' => 'upgrade', + 'url' => $response['url'] + ]; + } + + // the license has already been upgraded + // and can now be replaced + $this->update($response); + + return [ + 'status' => 'complete', + ]; + } +} diff --git a/kirby/src/Cms/LicenseStatus.php b/kirby/src/Cms/LicenseStatus.php new file mode 100644 index 0000000..51ae5da --- /dev/null +++ b/kirby/src/Cms/LicenseStatus.php @@ -0,0 +1,127 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + * + * @codeCoverageIgnore + */ +enum LicenseStatus: string +{ + /** + * The license is valid and active + */ + case Active = 'active'; + + /** + * Only used for the demo instance + */ + case Demo = 'demo'; + + /** + * The included updates period of + * the license is over. + */ + case Inactive = 'inactive'; + + /** + * The installation has an old + * license (v1, v2, v3) + */ + case Legacy = 'legacy'; + + /** + * The installation has no license or + * the license cannot be validated + */ + case Missing = 'missing'; + + /** + * Returns the dialog according to the status + */ + public function dialog(): string + { + return match ($this) { + static::Missing => 'registration', + default => 'license' + }; + } + + /** + * Returns the icon according to the status. + * The icon is used for the system view and + * in the license dialog. + */ + public function icon(): string + { + return match ($this) { + static::Missing => 'key', + static::Legacy => 'alert', + static::Inactive => 'clock', + static::Active => 'check', + static::Demo => 'preview', + }; + } + + /** + * The info text is shown in the license dialog + * in the status row. + */ + public function info(string|null $end = null): string + { + return I18n::template('license.status.' . $this->value . '.info', ['date' => $end]); + } + + /** + * Label for the system view + */ + public function label(): string + { + return I18n::translate('license.status.' . $this->value . '.label'); + } + + /** + * Checks if the license can be renewed + * The license dialog will show the renew + * button in this case and redirect to the hub + */ + public function renewable(): bool + { + return match ($this) { + static::Demo => false, + static::Active => false, + default => true + }; + } + + /** + * Returns the theme according to the status + * The theme is used for the label in the system + * view and the status icon in the license dialog. + */ + public function theme(): string + { + return match ($this) { + static::Missing => 'love', + static::Legacy => 'negative', + static::Inactive => 'notice', + static::Active => 'positive', + static::Demo => 'notice', + }; + } + + /** + * Returns the status as string value + */ + public function value(): string + { + return $this->value; + } +} diff --git a/kirby/src/Cms/LicenseType.php b/kirby/src/Cms/LicenseType.php new file mode 100644 index 0000000..6a9fea7 --- /dev/null +++ b/kirby/src/Cms/LicenseType.php @@ -0,0 +1,111 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + * + * @codeCoverageIgnore + */ +enum LicenseType: string +{ + /** + * New basic licenses + */ + case Basic = 'basic'; + + /** + * New enterprise licenses + */ + case Enterprise = 'enterprise'; + + /** + * Invalid license codes + */ + case Invalid = 'invalid'; + + /** + * Old Kirby 3 licenses + */ + case Legacy = 'legacy'; + + /** + * Detects the correct LicenseType based on the code + */ + public static function detect(string|null $code): static + { + return match (true) { + static::Basic->isValidCode($code) => static::Basic, + static::Enterprise->isValidCode($code) => static::Enterprise, + static::Legacy->isValidCode($code) => static::Legacy, + default => static::Invalid + }; + } + + /** + * Checks for a valid license code + * by prefix and length. This is just a + * rough validation. + */ + public function isValidCode(string|null $code): bool + { + return + $code !== null && + Str::length($code) === $this->length() && + Str::startsWith($code, $this->prefix()) === true; + } + + /** + * The expected lengths of the license code + */ + public function length(): int + { + return match ($this) { + static::Basic => 38, + static::Enterprise => 38, + static::Legacy => 39, + static::Invalid => 0, + }; + } + + /** + * A human-readable license type label + */ + public function label(): string + { + return match ($this) { + static::Basic => 'Kirby Basic', + static::Enterprise => 'Kirby Enterprise', + static::Legacy => 'Kirby 3', + static::Invalid => I18n::translate('license.unregistered.label'), + }; + } + + /** + * The expected prefix for the license code + */ + public function prefix(): string|null + { + return match ($this) { + static::Basic => 'K-BAS-', + static::Enterprise => 'K-ENT-', + static::Legacy => 'K3-PRO-', + static::Invalid => null, + }; + } + + /** + * Returns the enum value + */ + public function value(): string + { + return $this->value; + } +} diff --git a/kirby/src/Cms/Loader.php b/kirby/src/Cms/Loader.php new file mode 100644 index 0000000..6e71878 --- /dev/null +++ b/kirby/src/Cms/Loader.php @@ -0,0 +1,217 @@ +load()` and the + * `$kirby->core()->load()` methods. + * + * With `$kirby->load()` you get access to core parts + * that might be overwritten by plugins. + * + * With `$kirby->core()->load()` you get access to + * untouched core parts. This is useful if you want to + * reuse or fall back to core features in your plugins. + * + * @package Kirby Cms + * @author Bastian Allgeier + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Loader +{ + /** + * @var \Kirby\Cms\App + */ + protected $kirby; + + /** + * @var bool + */ + protected $withPlugins; + + /** + * @param \Kirby\Cms\App $kirby + * @param bool $withPlugins + */ + public function __construct(App $kirby, bool $withPlugins = true) + { + $this->kirby = $kirby; + $this->withPlugins = $withPlugins; + } + + /** + * Loads the area definition + */ + public function area(string $name): array|null + { + return $this->areas()[$name] ?? null; + } + + /** + * Loads all areas and makes sure that plugins + * are injected properly + */ + public function areas(): array + { + $areas = []; + $extensions = $this->withPlugins === true ? $this->kirby->extensions('areas') : []; + + // load core areas and extend them with elements + // from plugins if they exist + foreach ($this->kirby->core()->areas() as $id => $area) { + $area = $this->resolveArea($area); + + if (isset($extensions[$id]) === true) { + foreach ($extensions[$id] as $areaExtension) { + $extension = $this->resolveArea($areaExtension); + $area = array_replace_recursive($area, $extension); + } + + unset($extensions[$id]); + } + + $areas[$id] = $area; + } + + // add additional areas from plugins + foreach ($extensions as $id => $areaExtensions) { + foreach ($areaExtensions as $areaExtension) { + $areas[$id] = $this->resolve($areaExtension); + } + } + + return $areas; + } + + /** + * Loads a core component closure + */ + public function component(string $name): Closure|null + { + return $this->extension('components', $name); + } + + /** + * Loads all core component closures + */ + public function components(): array + { + return $this->extensions('components'); + } + + /** + * Loads a particular extension + */ + public function extension(string $type, string $name): mixed + { + return $this->extensions($type)[$name] ?? null; + } + + /** + * Loads all defined extensions + */ + public function extensions(string $type): array + { + return $this->withPlugins === false ? $this->kirby->core()->$type() : $this->kirby->extensions($type); + } + + /** + * The resolver takes a string, array or closure. + * + * 1.) a string is supposed to be a path to an existing file. + * The file will either be included when it's a PHP file and + * the array contents will be read. Or it will be parsed with + * the Data class to read yml or json data into an array + * + * 2.) arrays are untouched and returned + * + * 3.) closures will be called and the Kirby instance will be + * passed as first argument + */ + public function resolve(mixed $item): mixed + { + if (is_string($item) === true) { + $item = match (F::extension($item)) { + 'php' => F::load($item, allowOutput: false), + default => Data::read($item) + }; + } + + if (is_callable($item) === true) { + $item = $item($this->kirby); + } + + return $item; + } + + /** + * Calls `static::resolve()` on all items + * in the given array + */ + public function resolveAll(array $items): array + { + $result = []; + + foreach ($items as $key => $value) { + $result[$key] = $this->resolve($value); + } + + return $result; + } + + /** + * Areas need a bit of special treatment + * when they are being loaded + */ + public function resolveArea(string|array|Closure $area): array + { + $area = $this->resolve($area); + $dropdowns = $area['dropdowns'] ?? []; + + // convert closure dropdowns to an array definition + // otherwise they cannot be merged properly later + foreach ($dropdowns as $key => $dropdown) { + if ($dropdown instanceof Closure) { + $area['dropdowns'][$key] = [ + 'options' => $dropdown + ]; + } + } + + return $area; + } + + /** + * Loads a particular section definition + */ + public function section(string $name): array|null + { + return $this->resolve($this->extension('sections', $name)); + } + + /** + * Loads all section defintions + */ + public function sections(): array + { + return $this->resolveAll($this->extensions('sections')); + } + + /** + * Returns the status flag, which shows + * if plugins are loaded as well. + */ + public function withPlugins(): bool + { + return $this->withPlugins; + } +} diff --git a/kirby/src/Cms/Media.php b/kirby/src/Cms/Media.php new file mode 100644 index 0000000..ec44de9 --- /dev/null +++ b/kirby/src/Cms/Media.php @@ -0,0 +1,175 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Media +{ + /** + * Tries to find a file by model and filename + * and to copy it to the media folder. + */ + public static function link( + Page|Site|User $model = null, + string $hash, + string $filename + ): Response|false { + if ($model === null) { + return false; + } + + // fix issues with spaces in filenames + $filename = urldecode($filename); + + // try to find a file by model and filename + // this should work for all original files + if ($file = $model->file($filename)) { + // check if the request contained an outdated media hash + if ($file->mediaHash() !== $hash) { + // if at least the token was correct, redirect + if (Str::startsWith($hash, $file->mediaToken() . '-') === true) { + return Response::redirect($file->mediaUrl(), 307); + } + + // don't leak the correct token, render the error page + return false; + } + + // send the file to the browser + return Response::file($file->publish()->mediaRoot()); + } + + // try to generate a thumb for the file + return static::thumb($model, $hash, $filename); + } + + /** + * Copy the file to the final media folder location + */ + public static function publish(File $file, string $dest): bool + { + // never publish risky files (e.g. HTML, PHP or Apache config files) + FileRules::validFile($file, false); + + $src = $file->root(); + $version = dirname($dest); + $directory = dirname($version); + + // unpublish all files except stuff in the version folder + Media::unpublish($directory, $file, $version); + + // copy/overwrite the file to the dest folder + return F::copy($src, $dest, true); + } + + /** + * Tries to find a job file for the + * given filename and then calls the thumb + * component to create a thumbnail accordingly + */ + public static function thumb( + File|Page|Site|User|string $model, + string $hash, + string $filename + ): Response|false { + $kirby = App::instance(); + + $root = match (true) { + // assets + is_string($model) + => $kirby->root('media') . '/assets/' . $model . '/' . $hash, + // parent files for file model that already included hash + $model instanceof File + => dirname($model->mediaRoot()), + // model files + default + => $model->mediaRoot() . '/' . $hash + }; + + $thumb = $root . '/' . $filename; + $job = $root . '/.jobs/' . $filename . '.json'; + + try { + $options = Data::read($job); + } catch (Throwable) { + // send a customized error message to make clearer what happened here + throw new NotFoundException('The thumbnail configuration could not be found'); + } + + if (empty($options['filename']) === true) { + throw new InvalidArgumentException('Incomplete thumbnail configuration'); + } + + try { + // find the correct source file depending on the model + // this adds support for custom assets + $source = match (true) { + is_string($model) === true + => $kirby->root('index') . '/' . $model . '/' . $options['filename'], + default + => $model->file($options['filename'])->root() + }; + + // generate the thumbnail and save it in the media folder + $kirby->thumb($source, $thumb, $options); + + // remove the job file once the thumbnail has been created + F::remove($job); + + // read the file and send it to the browser + return Response::file($thumb); + } catch (Throwable $e) { + // remove potentially broken thumbnails + F::remove($thumb); + throw $e; + } + } + + /** + * Deletes all versions of the given file + * within the parent directory + */ + public static function unpublish( + string $directory, + File $file, + string|null $ignore = null + ): bool { + if (is_dir($directory) === false) { + return true; + } + + // get both old and new versions (pre and post Kirby 3.4.0) + $versions = array_merge( + glob($directory . '/' . crc32($file->filename()) . '-*', GLOB_ONLYDIR), + glob($directory . '/' . $file->mediaToken() . '-*', GLOB_ONLYDIR) + ); + + // delete all versions of the file + foreach ($versions as $version) { + if ($version === $ignore) { + continue; + } + + Dir::remove($version); + } + + return true; + } +} diff --git a/kirby/src/Cms/Model.php b/kirby/src/Cms/Model.php new file mode 100644 index 0000000..b7010d3 --- /dev/null +++ b/kirby/src/Cms/Model.php @@ -0,0 +1,117 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class Model +{ + use Properties; + + /** + * Each model must define a CLASS_ALIAS + * which will be used in template queries. + * The CLASS_ALIAS is a short human-readable + * version of the class name. I.e. page. + */ + public const CLASS_ALIAS = null; + + /** + * The parent Kirby instance + * + * @var \Kirby\Cms\App + */ + public static $kirby; + + /** + * The parent site instance + * + * @var \Kirby\Cms\Site + */ + protected $site; + + /** + * Makes it possible to convert the entire model + * to a string. Mostly useful for debugging + * + * @return string + */ + public function __toString(): string + { + return $this->id(); + } + + /** + * Each model must return a unique id + * + * @return string|null + */ + public function id() + { + return null; + } + + /** + * Returns the parent Kirby instance + * + * @return \Kirby\Cms\App + */ + public function kirby() + { + return static::$kirby ??= App::instance(); + } + + /** + * Returns the parent Site instance + * + * @return \Kirby\Cms\Site + */ + public function site() + { + return $this->site ??= $this->kirby()->site(); + } + + /** + * Setter for the parent Kirby object + * + * @param \Kirby\Cms\App|null $kirby + * @return $this + */ + protected function setKirby(App $kirby = null) + { + static::$kirby = $kirby; + return $this; + } + + /** + * Setter for the parent site object + * + * @internal + * @param \Kirby\Cms\Site|null $site + * @return $this + */ + public function setSite(Site $site = null) + { + $this->site = $site; + return $this; + } + + /** + * Convert the model to a simple array + * + * @return array + */ + public function toArray(): array + { + return $this->propertiesToArray(); + } +} diff --git a/kirby/src/Cms/ModelPermissions.php b/kirby/src/Cms/ModelPermissions.php new file mode 100644 index 0000000..0b8cb56 --- /dev/null +++ b/kirby/src/Cms/ModelPermissions.php @@ -0,0 +1,116 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class ModelPermissions +{ + protected string $category; + protected ModelWithContent $model; + protected array $options; + protected Permissions $permissions; + protected User $user; + + public function __construct(ModelWithContent $model) + { + $this->model = $model; + $this->options = $model->blueprint()->options(); + $this->user = $model->kirby()->user() ?? User::nobody(); + $this->permissions = $this->user->role()->permissions(); + } + + public function __call(string $method, array $arguments = []): bool + { + return $this->can($method); + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + public function can(string $action): bool + { + $user = $this->user->id(); + $role = $this->user->role()->id(); + + // users with the `nobody` role can do nothing + // that needs a permission check + if ($role === 'nobody') { + return false; + } + + // check for a custom `can` method + // which would take priority over any other + // role-based permission rules + if ( + method_exists($this, 'can' . $action) === true && + $this->{'can' . $action}() === false + ) { + return false; + } + + // the almighty `kirby` user can do anything + if ($user === 'kirby' && $role === 'admin') { + return true; + } + + // evaluate the blueprint options block + if (isset($this->options[$action]) === true) { + $options = $this->options[$action]; + + if ($options === false) { + return false; + } + + if ($options === true) { + return true; + } + + if ( + is_array($options) === true && + A::isAssociative($options) === true + ) { + if (isset($options[$role]) === true) { + return $options[$role]; + } + + if (isset($options['*']) === true) { + return $options['*']; + } + } + } + + return $this->permissions->for($this->category, $action); + } + + public function cannot(string $action): bool + { + return $this->can($action) === false; + } + + public function toArray(): array + { + $array = []; + + foreach ($this->options as $key => $value) { + $array[$key] = $this->can($key); + } + + return $array; + } +} diff --git a/kirby/src/Cms/ModelWithContent.php b/kirby/src/Cms/ModelWithContent.php new file mode 100644 index 0000000..6737393 --- /dev/null +++ b/kirby/src/Cms/ModelWithContent.php @@ -0,0 +1,822 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class ModelWithContent implements Identifiable +{ + /** + * Each model must define a CLASS_ALIAS + * which will be used in template queries. + * The CLASS_ALIAS is a short human-readable + * version of the class name, i.e. page. + */ + public const CLASS_ALIAS = null; + + /** + * Cached array of valid blueprints + * that could be used for the model + */ + public array|null $blueprints = null; + + public Content|null $content; + public static App $kirby; + protected Site|null $site; + protected ContentStorage $storage; + public Collection|null $translations; + + /** + * Store values used to initilaize object + */ + protected array $propertyData = []; + + public function __construct(array $props = []) + { + $this->site = $props['site'] ?? null; + + $this->setContent($props['content'] ?? null); + $this->setTranslations($props['translations'] ?? null); + + $this->propertyData = $props; + } + + /** + * Returns the blueprint of the model + */ + abstract public function blueprint(): Blueprint; + + /** + * Returns an array with all blueprints that are available + */ + public function blueprints(string $inSection = null): array + { + // helper function + $toBlueprints = function (array $sections): array { + $blueprints = []; + + foreach ($sections as $section) { + if ($section === null) { + continue; + } + + foreach ((array)$section->blueprints() as $blueprint) { + $blueprints[$blueprint['name']] = $blueprint; + } + } + + return array_values($blueprints); + }; + + $blueprint = $this->blueprint(); + + // no caching for when collecting for specific section + if ($inSection !== null) { + return $toBlueprints([$blueprint->section($inSection)]); + } + + return $this->blueprints ??= $toBlueprints($blueprint->sections()); + } + + /** + * Creates a new instance with the same + * initial properties + * + * @todo eventually refactor without need of propertyData + */ + public function clone(array $props = []): static + { + return new static(array_replace_recursive($this->propertyData, $props)); + } + + /** + * Executes any given model action + */ + abstract protected function commit( + string $action, + array $arguments, + Closure $callback + ): mixed; + + /** + * Returns the content + * + * @throws \Kirby\Exception\InvalidArgumentException If the language for the given code does not exist + */ + public function content(string|null $languageCode = null): Content + { + // single language support + if ($this->kirby()->multilang() === false) { + if ($this->content instanceof Content) { + return $this->content; + } + + // don't normalize field keys (already handled by the `Data` class) + return $this->content = new Content($this->readContent(), $this, false); + } + + // get the targeted language + $language = $this->kirby()->language($languageCode); + + // stop if the language does not exist + if ($language === null) { + throw new InvalidArgumentException('Invalid language: ' . $languageCode); + } + + // only fetch from cache for the current language + if ($languageCode === null && $this->content instanceof Content) { + return $this->content; + } + + // get the translation by code + $translation = $this->translation($language->code()); + + // don't normalize field keys (already handled by the `ContentTranslation` class) + $content = new Content($translation->content(), $this, false); + + // only store the content for the current language + if ($languageCode === null) { + $this->content = $content; + } + + return $content; + } + + /** + * Returns the absolute path to the content file; + * NOTE: only supports the published content file + * (use `$model->storage()->contentFile()` for other versions) + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + * + * @throws \Kirby\Exception\InvalidArgumentException If the language for the given code does not exist + */ + public function contentFile( + string $languageCode = null, + bool $force = false + ): string { + Helpers::deprecated('The internal $model->contentFile() method has been deprecated. You can use $model->storage()->contentFile() instead, however please note that this method is also internal and may be removed in the future.', 'model-content-file'); + + return $this->storage()->contentFile( + $this->storage()->defaultVersion(), + $languageCode, + $force + ); + } + + /** + * Returns an array with all content files; + * NOTE: only supports the published content file + * (use `$model->storage()->contentFiles()` for other versions) + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + public function contentFiles(): array + { + Helpers::deprecated('The internal $model->contentFiles() method has been deprecated. You can use $model->storage()->contentFiles() instead, however please note that this method is also internal and may be removed in the future.', 'model-content-file'); + + return $this->storage()->contentFiles( + $this->storage()->defaultVersion() + ); + } + + /** + * Prepares the content that should be written + * to the text file + * @internal + */ + public function contentFileData( + array $data, + string $languageCode = null + ): array { + return $data; + } + + /** + * Returns the absolute path to the + * folder in which the content file is + * located + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + public function contentFileDirectory(): string|null + { + Helpers::deprecated('The internal $model->contentFileDirectory() method has been deprecated. Please let us know via a GitHub issue if you need this method and tell us your use case.', 'model-content-file'); + return $this->root(); + } + + /** + * Returns the extension of the content file + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + public function contentFileExtension(): string + { + Helpers::deprecated('The internal $model->contentFileName() method has been deprecated. Please let us know via a GitHub issue if you need this method and tell us your use case.', 'model-content-file'); + return $this->kirby()->contentExtension(); + } + + /** + * Needs to be declared by the final model + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + abstract public function contentFileName(): string; + + /** + * Converts model to new blueprint + * incl. its content for all translations + */ + protected function convertTo(string $blueprint): static + { + // first close object with new blueprint as template + $new = $this->clone(['template' => $blueprint]); + + // temporary compatibility change (TODO: also convert changes) + $identifier = $this->storage()->defaultVersion(); + + // for multilang, we go through all translations and + // covnert the content for each of them, remove the content file + // to rewrite it with converted content afterwards + if ($this->kirby()->multilang() === true) { + $translations = []; + + foreach ($this->kirby()->languages()->codes() as $code) { + if ($this->translation($code)?->exists() === true) { + $content = $this->content($code)->convertTo($blueprint); + + // delete the old text file + $this->storage()->delete( + $identifier, + $code + ); + + // save to re-create the translation content file + // with the converted/updated content + $new->save($content, $code); + } + + $translations[] = [ + 'code' => $code, + 'content' => $content ?? null + ]; + } + + // cloning the object with the new translations content ensures + // that `propertyData` prop does not hold any old translations + // content that could surface on subsequent cloning + return $new->clone(['translations' => $translations]); + } + + // for single language setups, we do the same, + // just once for the main content + $content = $this->content()->convertTo($blueprint); + + // delete the old text file + $this->storage()->delete($identifier, 'default'); + + return $new->save($content); + } + + /** + * Decrement a given field value + */ + public function decrement( + string $field, + int $by = 1, + int $min = 0 + ): static { + $value = (int)$this->content()->get($field)->value() - $by; + + if ($value < $min) { + $value = $min; + } + + return $this->update([$field => $value]); + } + + /** + * Returns all content validation errors + */ + public function errors(): array + { + $errors = []; + + foreach ($this->blueprint()->sections() as $section) { + $errors = array_merge($errors, $section->errors()); + } + + return $errors; + } + + /** + * Creates a clone and fetches all + * lazy-loaded getters to get a full copy + */ + public function hardcopy(): static + { + $clone = $this->clone(); + + foreach (get_object_vars($clone) as $name => $default) { + if (method_exists($clone, $name) === true) { + $clone->$name(); + } + } + + return $clone; + } + + /** + * Each model must return a unique id + */ + public function id(): string|null + { + return null; + } + + /** + * Increment a given field value + */ + public function increment( + string $field, + int $by = 1, + int $max = null + ): static { + $value = (int)$this->content()->get($field)->value() + $by; + + if ($max && $value > $max) { + $value = $max; + } + + return $this->update([$field => $value]); + } + + /** + * Checks if the model is locked for the current user + */ + public function isLocked(): bool + { + $lock = $this->lock(); + return $lock && $lock->isLocked() === true; + } + + /** + * Checks if the data has any errors + */ + public function isValid(): bool + { + return Form::for($this)->isValid() === true; + } + + /** + * Returns the parent Kirby instance + */ + public function kirby(): App + { + return static::$kirby ??= App::instance(); + } + + /** + * Returns the lock object for this model + * + * Only if a content directory exists, + * virtual pages will need to overwrite this method + */ + public function lock(): ContentLock|null + { + $dir = $this->root(); + + if ($this::CLASS_ALIAS === 'file') { + $dir = dirname($dir); + } + + if ( + $this->kirby()->option('content.locking', true) && + is_string($dir) === true && + file_exists($dir) === true + ) { + return new ContentLock($this); + } + + return null; + } + + /** + * Returns the panel info of the model + * @since 3.6.0 + */ + abstract public function panel(): Model; + + /** + * Must return the permissions object for the model + */ + abstract public function permissions(): ModelPermissions; + + /** + * Clean internal caches + * + * @return $this + */ + public function purge(): static + { + $this->blueprints = null; + $this->content = null; + $this->translations = null; + + return $this; + } + + /** + * Creates a string query, starting from the model + * @internal + */ + public function query( + string $query = null, + string $expect = null + ): mixed { + if ($query === null) { + return null; + } + + try { + $result = Str::query($query, [ + 'kirby' => $this->kirby(), + 'site' => $this instanceof Site ? $this : $this->site(), + 'model' => $this, + static::CLASS_ALIAS => $this + ]); + } catch (Throwable) { + return null; + } + + if ($expect !== null && $result instanceof $expect === false) { + return null; + } + + return $result; + } + + /** + * Read the content from the content file + * @internal + */ + public function readContent(string $languageCode = null): array + { + try { + return $this->storage()->read( + $this->storage()->defaultVersion(), + $languageCode + ); + } catch (NotFoundException) { + // only if the content file really does not exist, it's ok + // to return empty content. Otherwise this could lead to + // content loss in case of file reading issues + return []; + } + } + + /** + * Returns the absolute path to the model + */ + abstract public function root(): string|null; + + /** + * Stores the content on disk + * @internal + */ + public function save( + array|null $data = null, + string|null $languageCode = null, + bool $overwrite = false + ): static { + if ($this->kirby()->multilang() === true) { + return $this->saveTranslation($data, $languageCode, $overwrite); + } + + return $this->saveContent($data, $overwrite); + } + + /** + * Save the single language content + */ + protected function saveContent( + array $data = null, + bool $overwrite = false + ): static { + // create a clone to avoid modifying the original + $clone = $this->clone(); + + // merge the new data with the existing content + $clone->content()->update($data, $overwrite); + + // send the full content array to the writer + $clone->writeContent($clone->content()->toArray()); + + return $clone; + } + + /** + * Save a translation + * + * @throws \Kirby\Exception\InvalidArgumentException If the language for the given code does not exist + */ + protected function saveTranslation( + array $data = null, + string $languageCode = null, + bool $overwrite = false + ): static { + // create a clone to not touch the original + $clone = $this->clone(); + + // fetch the matching translation and update all the strings + $translation = $clone->translation($languageCode); + + if ($translation === null) { + throw new InvalidArgumentException('Invalid language: ' . $languageCode); + } + + // get the content to store + $content = $translation->update($data, $overwrite)->content(); + $kirby = $this->kirby(); + $languageCode = $kirby->languageCode($languageCode); + + // remove all untranslatable fields + if ($languageCode !== $kirby->defaultLanguage()->code()) { + foreach ($this->blueprint()->fields() as $field) { + if (($field['translate'] ?? true) === false) { + $content[strtolower($field['name'])] = null; + } + } + + // remove UUID for non-default languages + if (Uuids::enabled() === true && isset($content['uuid']) === true) { + $content['uuid'] = null; + } + + // merge the translation with the new data + $translation->update($content, true); + } + + // send the full translation array to the writer + $clone->writeContent($translation->content(), $languageCode); + + // reset the content object + $clone->content = null; + + // return the updated model + return $clone; + } + + /** + * Sets the Content object + * + * @return $this + */ + protected function setContent(array $content = null): static + { + if ($content !== null) { + $content = new Content($content, $this); + } + + $this->content = $content; + return $this; + } + + /** + * Create the translations collection from an array + * + * @return $this + */ + protected function setTranslations(array $translations = null): static + { + if ($translations !== null) { + $this->translations = new Collection(); + + foreach ($translations as $props) { + $props['parent'] = $this; + $translation = new ContentTranslation($props); + $this->translations->data[$translation->code()] = $translation; + } + } else { + $this->translations = null; + } + + return $this; + } + + /** + * Returns the parent Site instance + */ + public function site(): Site + { + return $this->site ??= $this->kirby()->site(); + } + + /** + * Returns the content storage handler + * @internal + */ + public function storage(): ContentStorage + { + return $this->storage ??= new ContentStorage( + model: $this, + handler: PlainTextContentStorageHandler::class + ); + } + + /** + * Convert the model to a simple array + */ + public function toArray(): array + { + return [ + 'content' => $this->content()->toArray(), + 'translations' => $this->translations()->toArray() + ]; + } + + /** + * String template builder with automatic HTML escaping + * @since 3.6.0 + * + * @param string|null $template Template string or `null` to use the model ID + * @param string|null $fallback Fallback for tokens in the template that cannot be replaced + * (`null` to keep the original token) + */ + public function toSafeString( + string $template = null, + array $data = [], + string|null $fallback = '' + ): string { + return $this->toString($template, $data, $fallback, 'safeTemplate'); + } + + /** + * String template builder + * + * @param string|null $template Template string or `null` to use the model ID + * @param string|null $fallback Fallback for tokens in the template that cannot be replaced + * (`null` to keep the original token) + * @param string $handler For internal use + */ + public function toString( + string $template = null, + array $data = [], + string|null $fallback = '', + string $handler = 'template' + ): string { + if ($template === null) { + return $this->id() ?? ''; + } + + if ($handler !== 'template' && $handler !== 'safeTemplate') { + throw new InvalidArgumentException('Invalid toString handler'); // @codeCoverageIgnore + } + + $result = Str::$handler($template, array_replace([ + 'kirby' => $this->kirby(), + 'site' => $this instanceof Site ? $this : $this->site(), + 'model' => $this, + static::CLASS_ALIAS => $this, + ], $data), ['fallback' => $fallback]); + + return $result; + } + + /** + * Makes it possible to convert the entire model + * to a string. Mostly useful for debugging + */ + public function __toString(): string + { + return $this->id(); + } + + /** + * Returns a single translation by language code + * If no code is specified the current translation is returned + */ + public function translation( + string $languageCode = null + ): ContentTranslation|null { + if ($language = $this->kirby()->language($languageCode)) { + return $this->translations()->find($language->code()); + } + + return null; + } + + /** + * Returns the translations collection + */ + public function translations(): Collection + { + if ($this->translations !== null) { + return $this->translations; + } + + $this->translations = new Collection(); + + foreach ($this->kirby()->languages() as $language) { + $translation = new ContentTranslation([ + 'parent' => $this, + 'code' => $language->code(), + ]); + + $this->translations->data[$translation->code()] = $translation; + } + + return $this->translations; + } + + /** + * Updates the model data + * + * @throws \Kirby\Exception\InvalidArgumentException If the input array contains invalid values + */ + public function update( + array $input = null, + string $languageCode = null, + bool $validate = false + ): static { + $form = Form::for($this, [ + 'ignoreDisabled' => $validate === false, + 'input' => $input, + 'language' => $languageCode, + ]); + + // validate the input + if ($validate === true && $form->isInvalid() === true) { + throw new InvalidArgumentException([ + 'fallback' => 'Invalid form with errors', + 'details' => $form->errors() + ]); + } + + $arguments = [static::CLASS_ALIAS => $this, 'values' => $form->data(), 'strings' => $form->strings(), 'languageCode' => $languageCode]; + return $this->commit('update', $arguments, function ($model, $values, $strings, $languageCode) { + return $model->save($strings, $languageCode, true); + }); + } + + /** + * Returns the model's UUID + * @since 3.8.0 + */ + public function uuid(): Uuid|null + { + return Uuid::for($this); + } + + /** + * Low level data writer method + * to store the given data on disk or anywhere else + * @internal + */ + public function writeContent(array $data, string $languageCode = null): bool + { + $data = $this->contentFileData($data, $languageCode); + $id = $this->storage()->defaultVersion(); + + try { + // we can only update if the version already exists + $this->storage()->update($id, $languageCode, $data); + } catch (NotFoundException) { + // otherwise create a new version + $this->storage()->create($id, $languageCode, $data); + } + + return true; + } +} diff --git a/kirby/src/Cms/Nest.php b/kirby/src/Cms/Nest.php new file mode 100644 index 0000000..0f8521d --- /dev/null +++ b/kirby/src/Cms/Nest.php @@ -0,0 +1,49 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Nest +{ + public static function create( + $data, + object|null $parent = null + ): NestCollection|NestObject|Field { + if (is_scalar($data) === true) { + return new Field($parent, $data, $data); + } + + $result = []; + + foreach ($data as $key => $value) { + if (is_array($value) === true) { + $result[$key] = static::create($value, $parent); + } elseif (is_scalar($value) === true) { + $result[$key] = new Field($parent, $key, $value); + } + } + + $key = key($data); + + if ($key === null || is_int($key) === true) { + return new NestCollection($result); + } + + return new NestObject($result); + } +} diff --git a/kirby/src/Cms/NestCollection.php b/kirby/src/Cms/NestCollection.php new file mode 100644 index 0000000..129668d --- /dev/null +++ b/kirby/src/Cms/NestCollection.php @@ -0,0 +1,28 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class NestCollection extends BaseCollection +{ + /** + * Converts all objects in the collection + * to an array. This can also take a callback + * function to further modify the array result. + */ + public function toArray(Closure $map = null): array + { + return parent::toArray($map ?? fn ($object) => $object->toArray()); + } +} diff --git a/kirby/src/Cms/NestObject.php b/kirby/src/Cms/NestObject.php new file mode 100644 index 0000000..2466023 --- /dev/null +++ b/kirby/src/Cms/NestObject.php @@ -0,0 +1,45 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class NestObject extends Obj +{ + /** + * Converts the object to an array + */ + public function toArray(): array + { + $result = []; + + foreach ((array)$this as $key => $value) { + if ($value instanceof Field) { + $result[$key] = $value->value(); + continue; + } + + if ( + is_object($value) === true && + method_exists($value, 'toArray') + ) { + $result[$key] = $value->toArray(); + continue; + } + + $result[$key] = $value; + } + + return $result; + } +} diff --git a/kirby/src/Cms/Page.php b/kirby/src/Cms/Page.php new file mode 100644 index 0000000..3fab7b3 --- /dev/null +++ b/kirby/src/Cms/Page.php @@ -0,0 +1,1321 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Page extends ModelWithContent +{ + use HasChildren; + use HasFiles; + use HasMethods; + use HasSiblings; + use PageActions; + use PageSiblings; + + public const CLASS_ALIAS = 'page'; + + /** + * All registered page methods + * @todo Remove when support for PHP 8.2 is dropped + */ + public static array $methods = []; + + /** + * Registry with all Page models + */ + public static array $models = []; + + /** + * The PageBlueprint object + */ + protected PageBlueprint|null $blueprint = null; + + /** + * Nesting level + */ + protected int $depth; + + /** + * Sorting number + slug + */ + protected string|null $dirname; + + /** + * Path of dirnames + */ + protected string|null $diruri = null; + + /** + * Draft status flag + */ + protected bool $isDraft; + + /** + * The Page id + */ + protected string|null $id = null; + + /** + * The template, that should be loaded + * if it exists + */ + protected Template|null $intendedTemplate = null; + + protected array|null $inventory = null; + + /** + * The sorting number + */ + protected int|null $num; + + /** + * The parent page + */ + protected Page|null $parent; + + /** + * Absolute path to the page directory + */ + protected string|null $root; + + /** + * The URL-appendix aka slug + */ + protected string $slug; + + /** + * The intended page template + */ + protected Template|null $template = null; + + /** + * The page url + */ + protected string|null $url; + + /** + * Creates a new page object + */ + public function __construct(array $props) + { + if (isset($props['slug']) === false) { + throw new InvalidArgumentException('The page slug is required'); + } + + parent::__construct($props); + + $this->slug = $props['slug']; + // Sets the dirname manually, which works + // more reliable in connection with the inventory + // than computing the dirname afterwards + $this->dirname = $props['dirname'] ?? null; + $this->isDraft = $props['isDraft'] ?? false; + $this->num = $props['num'] ?? null; + $this->parent = $props['parent'] ?? null; + $this->root = $props['root'] ?? null; + + $this->setBlueprint($props['blueprint'] ?? null); + $this->setChildren($props['children'] ?? null); + $this->setDrafts($props['drafts'] ?? null); + $this->setFiles($props['files'] ?? null); + $this->setTemplate($props['template'] ?? null); + $this->setUrl($props['url'] ?? null); + } + + /** + * Magic caller + */ + public function __call(string $method, array $arguments = []): mixed + { + // public property access + if (isset($this->$method) === true) { + return $this->$method; + } + + // page methods + if ($this->hasMethod($method)) { + return $this->callMethod($method, $arguments); + } + + // return page content otherwise + return $this->content()->get($method); + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return array_merge($this->toArray(), [ + 'content' => $this->content(), + 'children' => $this->children(), + 'siblings' => $this->siblings(), + 'translations' => $this->translations(), + 'files' => $this->files(), + ]); + } + + /** + * Returns the url to the api endpoint + * @internal + */ + public function apiUrl(bool $relative = false): string + { + if ($relative === true) { + return 'pages/' . $this->panel()->id(); + } + + return $this->kirby()->url('api') . '/pages/' . $this->panel()->id(); + } + + /** + * Returns the blueprint object + */ + public function blueprint(): PageBlueprint + { + return $this->blueprint ??= PageBlueprint::factory( + 'pages/' . $this->intendedTemplate(), + 'pages/default', + $this + ); + } + + /** + * Returns an array with all blueprints that are available for the page + */ + public function blueprints(string|null $inSection = null): array + { + if ($inSection !== null) { + return $this->blueprint()->section($inSection)->blueprints(); + } + + if ($this->blueprints !== null) { + return $this->blueprints; + } + + $blueprints = []; + $templates = $this->blueprint()->changeTemplate() ?? $this->blueprint()->options()['changeTemplate'] ?? []; + $currentTemplate = $this->intendedTemplate()->name(); + + if (is_array($templates) === false) { + $templates = []; + } + + // add the current template to the array if it's not already there + if (in_array($currentTemplate, $templates) === false) { + array_unshift($templates, $currentTemplate); + } + + // make sure every template is only included once + $templates = array_unique($templates); + + foreach ($templates as $template) { + try { + $props = Blueprint::load('pages/' . $template); + + $blueprints[] = [ + 'name' => basename($props['name']), + 'title' => $props['title'], + ]; + } catch (Exception) { + // skip invalid blueprints + } + } + + return $this->blueprints = array_values($blueprints); + } + + /** + * Builds the cache id for the page + */ + protected function cacheId(string $contentType): string + { + $cacheId = [$this->id()]; + + if ($this->kirby()->multilang() === true) { + $cacheId[] = $this->kirby()->language()->code(); + } + + $cacheId[] = $contentType; + + return implode('.', $cacheId); + } + + /** + * Prepares the content for the write method + * @internal + */ + public function contentFileData( + array $data, + string|null $languageCode = null + ): array { + return A::prepend($data, [ + 'title' => $data['title'] ?? null, + 'slug' => $data['slug'] ?? null + ]); + } + + /** + * Returns the content text file + * which is found by the inventory method + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + public function contentFileName(string|null $languageCode = null): string + { + Helpers::deprecated('The internal $model->contentFileName() method has been deprecated. Please let us know via a GitHub issue if you need this method and tell us your use case.', 'model-content-file'); + return $this->intendedTemplate()->name(); + } + + /** + * Call the page controller + * @internal + * + * @throws \Kirby\Exception\InvalidArgumentException If the controller returns invalid objects for `kirby`, `site`, `pages` or `page` + */ + public function controller( + array $data = [], + string $contentType = 'html' + ): array { + // create the template data + $data = array_merge($data, [ + 'kirby' => $kirby = $this->kirby(), + 'site' => $site = $this->site(), + 'pages' => new LazyValue(fn () => $site->children()), + 'page' => new LazyValue(fn () => $site->visit($this)) + ]); + + // call the template controller if there's one. + $controllerData = $kirby->controller( + $this->template()->name(), + $data, + $contentType + ); + + // merge controller data with original data safely + // to provide original data to template even if + // it wasn't returned by the controller explicitly + if (empty($controllerData) === false) { + $classes = [ + 'kirby' => App::class, + 'site' => Site::class, + 'pages' => Pages::class, + 'page' => Page::class + ]; + + foreach ($controllerData as $key => $value) { + $data[$key] = match (true) { + // original data wasn't overwritten + array_key_exists($key, $classes) === false => $value, + // original data was overwritten, but matches expected type + $value instanceof $classes[$key] => $value, + // throw error if data was overwritten with wrong type + default => throw new InvalidArgumentException('The returned variable "' . $key . '" from the controller "' . $this->template()->name() . '" is not of the required type "' . $classes[$key] . '"') + }; + } + } + + // unwrap remaining lazy values in data + // (happens if the controller didn't override an original lazy Kirby object) + $data = LazyValue::unwrap($data); + + return $data; + } + + /** + * Returns a number indicating how deep the page + * is nested within the content folder + */ + public function depth(): int + { + return $this->depth ??= (substr_count($this->id(), '/') + 1); + } + + /** + * Sorting number + Slug + */ + public function dirname(): string + { + if ($this->dirname !== null) { + return $this->dirname; + } + + if ($this->num() !== null) { + return $this->dirname = $this->num() . Dir::$numSeparator . $this->uid(); + } + + return $this->dirname = $this->uid(); + } + + /** + * Sorting number + Slug + */ + public function diruri(): string + { + if (is_string($this->diruri) === true) { + return $this->diruri; + } + + if ($this->isDraft() === true) { + $dirname = '_drafts/' . $this->dirname(); + } else { + $dirname = $this->dirname(); + } + + if ($parent = $this->parent()) { + return $this->diruri = $parent->diruri() . '/' . $dirname; + } + + return $this->diruri = $dirname; + } + + /** + * Checks if the page exists on disk + */ + public function exists(): bool + { + return is_dir($this->root()) === true; + } + + /** + * Constructs a Page object and also + * takes page models into account. + * @internal + */ + public static function factory($props): static + { + return static::model($props['model'] ?? 'default', $props); + } + + /** + * Redirects to this page, + * wrapper for the `go()` helper + * + * @since 3.4.0 + * + * @param array $options Options for `Kirby\Http\Uri` to create URL parts + * @param int $code HTTP status code + */ + public function go(array $options = [], int $code = 302): void + { + Response::go($this->url($options), $code); + } + + /** + * Checks if the intended template + * for the page exists. + */ + public function hasTemplate(): bool + { + return $this->intendedTemplate() === $this->template(); + } + + /** + * Returns the Page Id + */ + public function id(): string + { + if ($this->id !== null) { + return $this->id; + } + + // set the id, depending on the parent + if ($parent = $this->parent()) { + return $this->id = $parent->id() . '/' . $this->uid(); + } + + return $this->id = $this->uid(); + } + + /** + * Returns the template that should be + * loaded if it exists. + */ + public function intendedTemplate(): Template + { + if ($this->intendedTemplate !== null) { + return $this->intendedTemplate; + } + + return $this->setTemplate($this->inventory()['template'])->intendedTemplate(); + } + + /** + * Returns the inventory of files + * children and content files + * @internal + */ + public function inventory(): array + { + if ($this->inventory !== null) { + return $this->inventory; + } + + $kirby = $this->kirby(); + + return $this->inventory = Dir::inventory( + $this->root(), + $kirby->contentExtension(), + $kirby->contentIgnore(), + $kirby->multilang() + ); + } + + /** + * Compares the current object with the given page object + * + * @param \Kirby\Cms\Page|string $page + */ + public function is($page): bool + { + if ($page instanceof self === false) { + if (is_string($page) === false) { + return false; + } + + $page = $this->kirby()->page($page); + } + + if ($page instanceof self === false) { + return false; + } + + return $this->id() === $page->id(); + } + + /** + * Checks if the page is accessible that accessible and listable. + * This permission depends on the `read` option until v5 + */ + public function isAccessible(): bool + { + // TODO: remove this check when `read` option deprecated in v5 + if ($this->isReadable() === false) { + return false; + } + + static $accessible = []; + + $template = $this->intendedTemplate()->name(); + + return $accessible[$template] ??= $this->permissions()->can('access'); + } + + /** + * Checks if the page is the current page + */ + public function isActive(): bool + { + return $this->site()->page()?->is($this) === true; + } + + /** + * Checks if the page is a direct or indirect ancestor + * of the given $page object + */ + public function isAncestorOf(Page $child): bool + { + return $child->parents()->has($this->id()) === true; + } + + /** + * Checks if the page can be cached in the + * pages cache. This will also check if one + * of the ignore rules from the config kick in. + */ + public function isCacheable(): bool + { + $kirby = $this->kirby(); + $cache = $kirby->cache('pages'); + $options = $cache->options(); + $ignore = $options['ignore'] ?? null; + + // the pages cache is switched off + if (($options['active'] ?? false) === false) { + return false; + } + + // inspect the current request + $request = $kirby->request(); + + // disable the pages cache for any request types but GET or HEAD + if (in_array($request->method(), ['GET', 'HEAD']) === false) { + return false; + } + + // disable the pages cache when there's request data + if (empty($request->data()) === false) { + return false; + } + + // disable the pages cache when there are any params + if ($request->params()->isNotEmpty()) { + return false; + } + + // check for a custom ignore rule + if ($ignore instanceof Closure) { + if ($ignore($this) === true) { + return false; + } + } + + // ignore pages by id + if (is_array($ignore) === true) { + if (in_array($this->id(), $ignore) === true) { + return false; + } + } + + return true; + } + + /** + * Checks if the page is a child of the given page + * + * @param \Kirby\Cms\Page|string $parent + */ + public function isChildOf($parent): bool + { + return $this->parent()?->is($parent) ?? false; + } + + /** + * Checks if the page is a descendant of the given page + * + * @param \Kirby\Cms\Page|string $parent + */ + public function isDescendantOf($parent): bool + { + if (is_string($parent) === true) { + $parent = $this->site()->find($parent); + } + + if (!$parent) { + return false; + } + + return $this->parents()->has($parent->id()) === true; + } + + /** + * Checks if the page is a descendant of the currently active page + */ + public function isDescendantOfActive(): bool + { + if ($active = $this->site()->page()) { + return $this->isDescendantOf($active); + } + + return false; + } + + /** + * Checks if the current page is a draft + */ + public function isDraft(): bool + { + return $this->isDraft; + } + + /** + * Checks if the page is the error page + */ + public function isErrorPage(): bool + { + return $this->id() === $this->site()->errorPageId(); + } + + /** + * Checks if the page is the home page + */ + public function isHomePage(): bool + { + return $this->id() === $this->site()->homePageId(); + } + + /** + * It's often required to check for the + * home and error page to stop certain + * actions. That's why there's a shortcut. + */ + public function isHomeOrErrorPage(): bool + { + return $this->isHomePage() === true || $this->isErrorPage() === true; + } + + /** + * Check if the page can be listable by the current user + * This permission depends on the `read` option until v5 + */ + public function isListable(): bool + { + // TODO: remove this check when `read` option deprecated in v5 + if ($this->isReadable() === false) { + return false; + } + + // not accessible also means not listable + if ($this->isAccessible() === false) { + return false; + } + + static $listable = []; + + $template = $this->intendedTemplate()->name(); + + return $listable[$template] ??= $this->permissions()->can('list'); + } + + /** + * Checks if the page has a sorting number + */ + public function isListed(): bool + { + return $this->isPublished() && $this->num() !== null; + } + + public function isMovableTo(Page|Site $parent): bool + { + try { + return PageRules::move($this, $parent); + } catch (Throwable) { + return false; + } + } + + /** + * Checks if the page is open. + * Open pages are either the current one + * or descendants of the current one. + */ + public function isOpen(): bool + { + if ($this->isActive() === true) { + return true; + } + + if ($this->site()->page()?->parents()->has($this->id()) === true) { + return true; + } + + return false; + } + + /** + * Checks if the page is not a draft. + */ + public function isPublished(): bool + { + return $this->isDraft() === false; + } + + /** + * Check if the page can be read by the current user + * @todo Deprecate `read` option in v5 and make the necessary changes for `access` and `list` options. + */ + public function isReadable(): bool + { + static $readable = []; + + $template = $this->intendedTemplate()->name(); + + return $readable[$template] ??= $this->permissions()->can('read'); + } + + /** + * Checks if the page is sortable + */ + public function isSortable(): bool + { + return $this->permissions()->can('sort'); + } + + /** + * Checks if the page has no sorting number + */ + public function isUnlisted(): bool + { + return $this->isPublished() && $this->num() === null; + } + + /** + * Checks if the page access is verified. + * This is only used for drafts so far. + * @internal + */ + public function isVerified(string $token = null): bool + { + if ( + $this->isPublished() === true && + $this->parents()->findBy('status', 'draft') === null + ) { + return true; + } + + if ($token === null) { + return false; + } + + return $this->token() === $token; + } + + /** + * Returns the root to the media folder for the page + * @internal + */ + public function mediaRoot(): string + { + return $this->kirby()->root('media') . '/pages/' . $this->id(); + } + + /** + * The page's base URL for any files + * @internal + */ + public function mediaUrl(): string + { + return $this->kirby()->url('media') . '/pages/' . $this->id(); + } + + /** + * Creates a page model if it has been registered + * @internal + */ + public static function model(string $name, array $props = []): static + { + $class = static::$models[$name] ?? null; + $class ??= static::$models['default'] ?? null; + + if ($class !== null) { + $object = new $class($props); + + if ($object instanceof self) { + return $object; + } + } + + return new static($props); + } + + /** + * Returns the last modification date of the page + */ + public function modified( + string|null $format = null, + string|null $handler = null, + string|null $languageCode = null + ): int|string|false|null { + $identifier = $this->isDraft() === true ? 'changes' : 'published'; + + $modified = $this->storage()->modified( + $identifier, + $languageCode + ); + + if ($modified === null) { + return null; + } + + return Str::date($modified, $format, $handler); + } + + /** + * Returns the sorting number + */ + public function num(): int|null + { + return $this->num; + } + + /** + * Returns the panel info object + */ + public function panel(): Panel + { + return new Panel($this); + } + + /** + * Returns the parent Page object + */ + public function parent(): Page|null + { + return $this->parent; + } + + /** + * Returns the parent id, if a parent exists + * @internal + */ + public function parentId(): string|null + { + return $this->parent()?->id(); + } + + /** + * Returns the parent model, + * which can either be another Page + * or the Site + * @internal + */ + public function parentModel(): Page|Site + { + return $this->parent() ?? $this->site(); + } + + /** + * Returns a list of all parents and their parents recursively + */ + public function parents(): Pages + { + $parents = new Pages(); + $page = $this->parent(); + + while ($page !== null) { + $parents->append($page->id(), $page); + $page = $page->parent(); + } + + return $parents; + } + + /** + * Return the permanent URL to the page using its UUID + * @since 3.8.0 + */ + public function permalink(): string|null + { + return $this->uuid()?->url(); + } + + /** + * Returns the permissions object for this page + */ + public function permissions(): PagePermissions + { + return new PagePermissions($this); + } + + /** + * Draft preview Url + * @internal + */ + public function previewUrl(): string|null + { + $preview = $this->blueprint()->preview(); + + if ($preview === false) { + return null; + } + + $url = match ($preview) { + true => $this->url(), + default => $preview + }; + + if ($this->isDraft() === true) { + $uri = new Uri($url); + $uri->query->token = $this->token(); + + $url = $uri->toString(); + } + + return $url; + } + + /** + * Renders the page with the given data. + * + * An optional content type can be passed to + * render a content representation instead of + * the default template. + * + * @param string $contentType + * @throws \Kirby\Exception\NotFoundException If the default template cannot be found + */ + public function render(array $data = [], $contentType = 'html'): string + { + $kirby = $this->kirby(); + $cache = $cacheId = $html = null; + + // try to get the page from cache + if (empty($data) === true && $this->isCacheable() === true) { + $cache = $kirby->cache('pages'); + $cacheId = $this->cacheId($contentType); + $result = $cache->get($cacheId); + $html = $result['html'] ?? null; + $response = $result['response'] ?? []; + $usesAuth = $result['usesAuth'] ?? false; + $usesCookies = $result['usesCookies'] ?? []; + + // if the request contains dynamic data that the cached response + // relied on, don't use the cache to allow dynamic code to run + if (Responder::isPrivate($usesAuth, $usesCookies) === true) { + $html = null; + } + + // reconstruct the response configuration + if (empty($html) === false && empty($response) === false) { + $kirby->response()->fromArray($response); + } + } + + // fetch the page regularly + if ($html === null) { + if ($contentType === 'html') { + $template = $this->template(); + } else { + $template = $this->representation($contentType); + } + + if ($template->exists() === false) { + throw new NotFoundException([ + 'key' => 'template.default.notFound' + ]); + } + + $kirby->data = $this->controller($data, $contentType); + + // trigger before hook and apply for `data` + $kirby->data = $kirby->apply('page.render:before', [ + 'contentType' => $contentType, + 'data' => $kirby->data, + 'page' => $this + ], 'data'); + + // render the page + $html = $template->render($kirby->data); + + // trigger after hook and apply for `html` + $html = $kirby->apply('page.render:after', [ + 'contentType' => $contentType, + 'data' => $kirby->data, + 'html' => $html, + 'page' => $this + ], 'html'); + + // cache the result + $response = $kirby->response(); + if ($cache !== null && $response->cache() === true) { + $cache->set($cacheId, [ + 'html' => $html, + 'response' => $response->toArray(), + 'usesAuth' => $response->usesAuth(), + 'usesCookies' => $response->usesCookies(), + ], $response->expires() ?? 0); + } + } + + return $html; + } + + /** + * @internal + * @throws \Kirby\Exception\NotFoundException If the content representation cannot be found + */ + public function representation(mixed $type): Template + { + $kirby = $this->kirby(); + $template = $this->template(); + $representation = $kirby->template($template->name(), $type); + + if ($representation->exists() === true) { + return $representation; + } + + throw new NotFoundException('The content representation cannot be found'); + } + + /** + * Returns the absolute root to the page directory + * No matter if it exists or not. + */ + public function root(): string + { + return $this->root ??= $this->kirby()->root('content') . '/' . $this->diruri(); + } + + /** + * Returns the PageRules class instance + * which is being used in various methods + * to check for valid actions and input. + */ + protected function rules(): PageRules + { + return new PageRules(); + } + + /** + * Search all pages within the current page + */ + public function search(string|null $query = null, string|array $params = []): Pages + { + return $this->index()->search($query, $params); + } + + /** + * Sets the Blueprint object + * + * @return $this + */ + protected function setBlueprint(array $blueprint = null): static + { + if ($blueprint !== null) { + $blueprint['model'] = $this; + $this->blueprint = new PageBlueprint($blueprint); + } + + return $this; + } + + /** + * Sets the intended template + * + * @return $this + */ + protected function setTemplate(string $template = null): static + { + if ($template !== null) { + $this->intendedTemplate = $this->kirby()->template($template); + } + + return $this; + } + + /** + * Sets the Url + * + * @return $this + */ + protected function setUrl(string $url = null): static + { + if (is_string($url) === true) { + $url = rtrim($url, '/'); + } + + $this->url = $url; + return $this; + } + + /** + * Returns the slug of the page + */ + public function slug(string $languageCode = null): string + { + if ($this->kirby()->multilang() === true) { + $languageCode ??= $this->kirby()->languageCode(); + $defaultLanguageCode = $this->kirby()->defaultLanguage()->code(); + + if ( + $languageCode !== $defaultLanguageCode && + $translation = $this->translations()->find($languageCode) + ) { + return $translation->slug() ?? $this->slug; + } + } + + return $this->slug; + } + + /** + * Returns the page status, which + * can be `draft`, `listed` or `unlisted` + */ + public function status(): string + { + if ($this->isDraft() === true) { + return 'draft'; + } + + if ($this->isUnlisted() === true) { + return 'unlisted'; + } + + return 'listed'; + } + + /** + * Returns the final template + */ + public function template(): Template + { + if ($this->template !== null) { + return $this->template; + } + + $intended = $this->intendedTemplate(); + + if ($intended->exists() === true) { + return $this->template = $intended; + } + + return $this->template = $this->kirby()->template('default'); + } + + /** + * Returns the title field or the slug as fallback + */ + public function title(): Field + { + return $this->content()->get('title')->or($this->slug()); + } + + /** + * Converts the most important + * properties to array + */ + public function toArray(): array + { + return array_merge(parent::toArray(), [ + 'children' => $this->children()->keys(), + 'files' => $this->files()->keys(), + 'id' => $this->id(), + 'mediaUrl' => $this->mediaUrl(), + 'mediaRoot' => $this->mediaRoot(), + 'num' => $this->num(), + 'parent' => $this->parent()?->id(), + 'slug' => $this->slug(), + 'template' => $this->template(), + 'uid' => $this->uid(), + 'uri' => $this->uri(), + 'url' => $this->url() + ]); + } + + /** + * Returns a verification token, which + * is used for the draft authentication + */ + protected function token(): string + { + return $this->kirby()->contentToken( + $this, + $this->id() . $this->template() + ); + } + + /** + * Returns the UID of the page. + * The UID is basically the same as the + * slug, but stays the same on + * multi-language sites. Whereas the slug + * can be translated. + * + * @see self::slug() + */ + public function uid(): string + { + return $this->slug; + } + + /** + * The uri is the same as the id, except + * that it will be translated in multi-language setups + */ + public function uri(string $languageCode = null): string + { + // set the id, depending on the parent + if ($parent = $this->parent()) { + return $parent->uri($languageCode) . '/' . $this->slug($languageCode); + } + + return $this->slug($languageCode); + } + + /** + * Returns the Url + * + * @param array|string|null $options + */ + public function url($options = null): string + { + if ($this->kirby()->multilang() === true) { + if (is_string($options) === true) { + return $this->urlForLanguage($options); + } + + return $this->urlForLanguage(null, $options); + } + + if ($options !== null) { + return Url::to($this->url(), $options); + } + + if (is_string($this->url) === true) { + return $this->url; + } + + if ($this->isHomePage() === true) { + return $this->url = $this->site()->url(); + } + + if ($parent = $this->parent()) { + if ($parent->isHomePage() === true) { + return $this->url = $this->kirby()->url('base') . '/' . $parent->uid() . '/' . $this->uid(); + } + + return $this->url = $this->parent()->url() . '/' . $this->uid(); + } + + return $this->url = $this->kirby()->url('base') . '/' . $this->uid(); + } + + /** + * Builds the Url for a specific language + * + * @internal + * @param string|null $language + */ + public function urlForLanguage( + $language = null, + array $options = null + ): string { + if ($options !== null) { + return Url::to($this->urlForLanguage($language), $options); + } + + if ($this->isHomePage() === true) { + return $this->url = $this->site()->urlForLanguage($language); + } + + if ($parent = $this->parent()) { + if ($parent->isHomePage() === true) { + return $this->url = $this->site()->urlForLanguage($language) . '/' . $parent->slug($language) . '/' . $this->slug($language); + } + + return $this->url = $this->parent()->urlForLanguage($language) . '/' . $this->slug($language); + } + + return $this->url = $this->site()->urlForLanguage($language) . '/' . $this->slug($language); + } +} diff --git a/kirby/src/Cms/PageActions.php b/kirby/src/Cms/PageActions.php new file mode 100644 index 0000000..e1a71c0 --- /dev/null +++ b/kirby/src/Cms/PageActions.php @@ -0,0 +1,989 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +trait PageActions +{ + /** + * Adapts necessary modifications which page uuid, page slug and files uuid + * of copy objects for single or multilang environments + * @internal + */ + protected function adaptCopy(Page $copy, bool $files = false, bool $children = false): Page + { + if ($this->kirby()->multilang() === true) { + foreach ($this->kirby()->languages() as $language) { + // overwrite with new UUID for the page and files + // for default language (remove old, add new) + if ( + Uuids::enabled() === true && + $language->isDefault() === true + ) { + $copy = $copy->save(['uuid' => Uuid::generate()], $language->code()); + + // regenerate UUIDs of page files + if ($files !== false) { + foreach ($copy->files() as $file) { + $file->save(['uuid' => Uuid::generate()], $language->code()); + } + } + + // regenerate UUIDs of all page children + if ($children !== false) { + foreach ($copy->index(true) as $child) { + // always adapt files of subpages as they are currently always copied; + // but don't adapt children because we already operate on the index + $this->adaptCopy($child, true); + } + } + } + + // remove all translated slugs + if ( + $language->isDefault() === false && + $copy->translation($language)->exists() === true + ) { + $copy = $copy->save(['slug' => null], $language->code()); + } + } + + return $copy; + } + + // overwrite with new UUID for the page and files (remove old, add new) + if (Uuids::enabled() === true) { + $copy = $copy->save(['uuid' => Uuid::generate()]); + + // regenerate UUIDs of page files + if ($files !== false) { + foreach ($copy->files() as $file) { + $file->save(['uuid' => Uuid::generate()]); + } + } + + // regenerate UUIDs of all page children + if ($children !== false) { + foreach ($copy->index(true) as $child) { + // always adapt files of subpages as they are currently always copied; + // but don't adapt children because we already operate on the index + $this->adaptCopy($child, true); + } + } + } + + return $copy; + } + + /** + * Changes the sorting number. + * The sorting number must already be correct + * when the method is called. + * This only affects this page, + * siblings will not be resorted. + * + * @return $this|static + * @throws \Kirby\Exception\LogicException If a draft is being sorted or the directory cannot be moved + */ + public function changeNum(int|null $num = null): static + { + if ($this->isDraft() === true) { + throw new LogicException('Drafts cannot change their sorting number'); + } + + // don't run the action if everything stayed the same + if ($this->num() === $num) { + return $this; + } + + return $this->commit('changeNum', ['page' => $this, 'num' => $num], function ($oldPage, $num) { + $newPage = $oldPage->clone([ + 'num' => $num, + 'dirname' => null, + 'root' => null + ]); + + // actually move the page on disk + if ($oldPage->exists() === true) { + if (Dir::move($oldPage->root(), $newPage->root()) === true) { + // Updates the root path of the old page with the root path + // of the moved new page to use fly actions on old page in loop + $oldPage->root = $newPage->root(); + } else { + throw new LogicException('The page directory cannot be moved'); + } + } + + // overwrite the child in the parent page + static::updateParentCollections($newPage, 'set'); + + return $newPage; + }); + } + + /** + * Changes the slug/uid of the page + * + * @return $this|static + * @throws \Kirby\Exception\LogicException If the directory cannot be moved + */ + public function changeSlug( + string $slug, + string|null $languageCode = null + ): static { + // always sanitize the slug + $slug = Str::slug($slug); + + // in multi-language installations the slug for the non-default + // languages is stored in the text file. The changeSlugForLanguage + // method takes care of that. + if ($this->kirby()->language($languageCode)?->isDefault() === false) { + return $this->changeSlugForLanguage($slug, $languageCode); + } + + // if the slug stays exactly the same, + // nothing needs to be done. + if ($slug === $this->slug()) { + return $this; + } + + $arguments = ['page' => $this, 'slug' => $slug, 'languageCode' => null]; + return $this->commit('changeSlug', $arguments, function ($oldPage, $slug) { + $newPage = $oldPage->clone([ + 'slug' => $slug, + 'dirname' => null, + 'root' => null + ]); + + // clear UUID cache recursively (for children and files as well) + $oldPage->uuid()?->clear(true); + + if ($oldPage->exists() === true) { + // remove the lock of the old page + $oldPage->lock()?->remove(); + + // actually move stuff on disk + if (Dir::move($oldPage->root(), $newPage->root()) !== true) { + throw new LogicException('The page directory cannot be moved'); + } + + // remove from the siblings + static::updateParentCollections($oldPage, 'remove'); + + Dir::remove($oldPage->mediaRoot()); + } + + // overwrite the new page in the parent collection + static::updateParentCollections($newPage, 'set'); + + return $newPage; + }); + } + + /** + * Change the slug for a specific language + * + * @throws \Kirby\Exception\NotFoundException If the language for the given language code cannot be found + * @throws \Kirby\Exception\InvalidArgumentException If the slug for the default language is being changed + */ + protected function changeSlugForLanguage( + string $slug, + string|null $languageCode = null + ): static { + $language = $this->kirby()->language($languageCode); + + if (!$language) { + throw new NotFoundException('The language: "' . $languageCode . '" does not exist'); + } + + if ($language->isDefault() === true) { + throw new InvalidArgumentException('Use the changeSlug method to change the slug for the default language'); + } + + $arguments = ['page' => $this, 'slug' => $slug, 'languageCode' => $language->code()]; + return $this->commit('changeSlug', $arguments, function ($page, $slug, $languageCode) { + // remove the slug if it's the same as the folder name + if ($slug === $page->uid()) { + $slug = null; + } + + $newPage = $page->save(['slug' => $slug], $languageCode); + + // overwrite the updated page in the parent collection + static::updateParentCollections($newPage, 'set'); + + return $newPage; + }); + } + + /** + * Change the status of the current page + * to either draft, listed or unlisted. + * If changing to `listed`, you can pass a position for the + * page in the siblings collection. Siblings will be resorted. + * + * @param string $status "draft", "listed" or "unlisted" + * @param int|null $position Optional sorting number + * @throws \Kirby\Exception\InvalidArgumentException If an invalid status is being passed + */ + public function changeStatus(string $status, int|null $position = null): static + { + return match ($status) { + 'draft' => $this->changeStatusToDraft(), + 'listed' => $this->changeStatusToListed($position), + 'unlisted' => $this->changeStatusToUnlisted(), + default => throw new InvalidArgumentException('Invalid status: ' . $status) + }; + } + + protected function changeStatusToDraft(): static + { + $arguments = ['page' => $this, 'status' => 'draft', 'position' => null]; + $page = $this->commit( + 'changeStatus', + $arguments, + fn ($page) => $page->unpublish() + ); + + return $page; + } + + /** + * @return $this|static + */ + protected function changeStatusToListed(int|null $position = null): static + { + // create a sorting number for the page + $num = $this->createNum($position); + + // don't sort if not necessary + if ($this->status() === 'listed' && $num === $this->num()) { + return $this; + } + + $arguments = ['page' => $this, 'status' => 'listed', 'position' => $num]; + $page = $this->commit('changeStatus', $arguments, function ($page, $status, $position) { + return $page->publish()->changeNum($position); + }); + + if ($this->blueprint()->num() === 'default') { + $page->resortSiblingsAfterListing($num); + } + + return $page; + } + + /** + * @return $this|static + */ + protected function changeStatusToUnlisted(): static + { + if ($this->status() === 'unlisted') { + return $this; + } + + $arguments = ['page' => $this, 'status' => 'unlisted', 'position' => null]; + $page = $this->commit('changeStatus', $arguments, function ($page) { + return $page->publish()->changeNum(null); + }); + + $this->resortSiblingsAfterUnlisting(); + + return $page; + } + + /** + * Change the position of the page in its siblings + * collection. Siblings will be resorted. If the page + * status isn't yet `listed`, it will be changed to it. + * + * @return $this|static + */ + public function changeSort(int|null $position = null): static + { + return $this->changeStatus('listed', $position); + } + + /** + * Changes the page template + * + * @return $this|static + * @throws \Kirby\Exception\LogicException If the textfile cannot be renamed/moved + */ + public function changeTemplate(string $template): static + { + if ($template === $this->intendedTemplate()->name()) { + return $this; + } + + return $this->commit('changeTemplate', ['page' => $this, 'template' => $template], function ($oldPage, $template) { + // convert for new template/blueprint + $page = $oldPage->convertTo($template); + + // update the parent collection + static::updateParentCollections($page, 'set'); + + return $page; + }); + } + + /** + * Change the page title + */ + public function changeTitle( + string $title, + string|null $languageCode = null + ): static { + $arguments = ['page' => $this, 'title' => $title, 'languageCode' => $languageCode]; + return $this->commit('changeTitle', $arguments, function ($page, $title, $languageCode) { + $page = $page->save(['title' => $title], $languageCode); + + // flush the parent cache to get children and drafts right + static::updateParentCollections($page, 'set'); + + return $page; + }); + } + + /** + * Commits a page action, by following these steps + * + * 1. checks the action rules + * 2. sends the before hook + * 3. commits the store action + * 4. sends the after hook + * 5. returns the result + */ + protected function commit( + string $action, + array $arguments, + Closure $callback + ): mixed { + $old = $this->hardcopy(); + $kirby = $this->kirby(); + $argumentValues = array_values($arguments); + + $this->rules()->$action(...$argumentValues); + $kirby->trigger('page.' . $action . ':before', $arguments); + + $result = $callback(...$argumentValues); + + if ($action === 'create') { + $argumentsAfter = ['page' => $result]; + } elseif ($action === 'duplicate') { + $argumentsAfter = ['duplicatePage' => $result, 'originalPage' => $old]; + } elseif ($action === 'delete') { + $argumentsAfter = ['status' => $result, 'page' => $old]; + } else { + $argumentsAfter = ['newPage' => $result, 'oldPage' => $old]; + } + $kirby->trigger('page.' . $action . ':after', $argumentsAfter); + + $kirby->cache('pages')->flush(); + return $result; + } + + /** + * Copies the page to a new parent + * + * @throws \Kirby\Exception\DuplicateException If the page already exists + */ + public function copy(array $options = []): static + { + $slug = $options['slug'] ?? $this->slug(); + $isDraft = $options['isDraft'] ?? $this->isDraft(); + $parent = $options['parent'] ?? null; + $parentModel = $options['parent'] ?? $this->site(); + $num = $options['num'] ?? null; + $children = $options['children'] ?? false; + $files = $options['files'] ?? false; + + // clean up the slug + $slug = Str::slug($slug); + + if ($parentModel->findPageOrDraft($slug)) { + throw new DuplicateException([ + 'key' => 'page.duplicate', + 'data' => [ + 'slug' => $slug + ] + ]); + } + + $tmp = new static([ + 'isDraft' => $isDraft, + 'num' => $num, + 'parent' => $parent, + 'slug' => $slug, + ]); + + $ignore = [ + $this->kirby()->locks()->file($this) + ]; + + // don't copy files + if ($files === false) { + foreach ($this->files() as $file) { + $ignore[] = $file->root(); + + // append all content files + array_push($ignore, ...$file->storage()->contentFiles('published')); + array_push($ignore, ...$file->storage()->contentFiles('changes')); + } + } + + Dir::copy($this->root(), $tmp->root(), $children, $ignore); + + $copy = $parentModel->clone()->findPageOrDraft($slug); + + // normalize copy object + $copy = $this->adaptCopy($copy, $files, $children); + + // add copy to siblings + static::updateParentCollections($copy, 'append', $parentModel); + + return $copy; + } + + /** + * Creates and stores a new page + */ + public static function create(array $props): Page + { + // clean up the slug + $props['slug'] = Str::slug($props['slug'] ?? $props['content']['title'] ?? null); + $props['template'] = $props['model'] = strtolower($props['template'] ?? 'default'); + $props['isDraft'] ??= $props['draft'] ?? true; + + // make sure that a UUID gets generated and + // added to content right away + $props['content'] ??= []; + + if (Uuids::enabled() === true) { + $props['content']['uuid'] ??= Uuid::generate(); + } + + // create a temporary page object + $page = Page::factory($props); + + // always create pages in the default language + if ($page->kirby()->multilang() === true) { + $languageCode = $page->kirby()->defaultLanguage()->code(); + } else { + $languageCode = null; + } + + // create a form for the page + // use always default language to fill form with default values + $form = Form::for( + $page, + [ + 'language' => $languageCode, + 'values' => $props['content'] + ] + ); + + // inject the content + $page = $page->clone(['content' => $form->strings(true)]); + + // run the hooks and creation action + $page = $page->commit( + 'create', + [ + 'page' => $page, + 'input' => $props + ], + function ($page, $props) use ($languageCode) { + // write the content file + $page = $page->save($page->content()->toArray(), $languageCode); + + // flush the parent cache to get children and drafts right + static::updateParentCollections($page, 'append'); + + return $page; + } + ); + + // publish the new page if a number is given + if (isset($props['num']) === true) { + $page = $page->changeStatus('listed', $props['num']); + } + + return $page; + } + + /** + * Creates a child of the current page + */ + public function createChild(array $props): Page + { + $props = array_merge($props, [ + 'url' => null, + 'num' => null, + 'parent' => $this, + 'site' => $this->site(), + ]); + + $modelClass = Page::$models[$props['template'] ?? null] ?? Page::class; + return $modelClass::create($props); + } + + /** + * Create the sorting number for the page + * depending on the blueprint settings + */ + public function createNum(int $num = null): int + { + $mode = $this->blueprint()->num(); + + switch ($mode) { + case 'zero': + return 0; + case 'date': + case 'datetime': + // the $format needs to produce only digits, + // so it can be converted to integer below + $format = $mode === 'date' ? 'Ymd' : 'YmdHi'; + $lang = $this->kirby()->defaultLanguage() ?? null; + $field = $this->content($lang)->get('date'); + $date = $field->isEmpty() ? 'now' : $field; + return (int)date($format, strtotime($date)); + case 'default': + + $max = $this + ->parentModel() + ->children() + ->listed() + ->merge($this) + ->count(); + + // default positioning at the end + $num ??= $max; + + // avoid zeros or negative numbers + if ($num < 1) { + return 1; + } + + // avoid higher numbers than possible + if ($num > $max) { + return $max; + } + + return $num; + default: + // get instance with default language + $app = $this->kirby()->clone([], false); + $app->setCurrentLanguage(); + + $template = Str::template($mode, [ + 'kirby' => $app, + 'page' => $app->page($this->id()), + 'site' => $app->site(), + ], ['fallback' => '']); + + return (int)$template; + } + } + + /** + * Deletes the page + */ + public function delete(bool $force = false): bool + { + return $this->commit('delete', ['page' => $this, 'force' => $force], function ($page, $force) { + // clear UUID cache + $page->uuid()?->clear(); + + // delete all files individually + foreach ($page->files() as $file) { + $file->delete(); + } + + // delete all children individually + foreach ($page->children() as $child) { + $child->delete(true); + } + + // actually remove the page from disc + if ($page->exists() === true) { + // delete all public media files + Dir::remove($page->mediaRoot()); + + // delete the content folder for this page + Dir::remove($page->root()); + + // if the page is a draft and the _drafts folder + // is now empty. clean it up. + if ($page->isDraft() === true) { + $draftsDir = dirname($page->root()); + + if (Dir::isEmpty($draftsDir) === true) { + Dir::remove($draftsDir); + } + } + } + + static::updateParentCollections($page, 'remove'); + + if ($page->isDraft() === false) { + $page->resortSiblingsAfterUnlisting(); + } + + return true; + }); + } + + /** + * Duplicates the page with the given + * slug and optionally copies all files + */ + public function duplicate(string|null $slug = null, array $options = []): static + { + // create the slug for the duplicate + $slug = Str::slug($slug ?? $this->slug() . '-' . Str::slug(I18n::translate('page.duplicate.appendix'))); + + $arguments = [ + 'originalPage' => $this, + 'input' => $slug, + 'options' => $options + ]; + + return $this->commit('duplicate', $arguments, function ($page, $slug, $options) { + $page = $this->copy([ + 'parent' => $this->parent(), + 'slug' => $slug, + 'isDraft' => true, + 'files' => $options['files'] ?? false, + 'children' => $options['children'] ?? false, + ]); + + if (isset($options['title']) === true) { + $page = $page->changeTitle($options['title']); + } + + return $page; + }); + } + + /** + * Moves the page to a new parent if the + * new parent accepts the page type + */ + public function move(Site|Page $parent): Page + { + // nothing to move + if ($this->parentModel()->is($parent) === true) { + return $this; + } + + $arguments = [ + 'page' => $this, + 'parent' => $parent + ]; + + return $this->commit('move', $arguments, function ($page, $parent) { + // remove the uuid cache for this page + $page->uuid()?->clear(true); + + // move drafts into the drafts folder of the parent + if ($page->isDraft() === true) { + $newRoot = $parent->root() . '/_drafts/' . $page->dirname(); + } else { + $newRoot = $parent->root() . '/' . $page->dirname(); + } + + // try to move the page directory on disk + if (Dir::move($page->root(), $newRoot) !== true) { + throw new LogicException([ + 'key' => 'page.move.directory' + ]); + } + + // flush all collection caches to be sure that + // the new child is included afterwards + $parent->purge(); + + // double-check if the new child can actually be found + if (!$newPage = $parent->childrenAndDrafts()->find($page->slug())) { + throw new LogicException([ + 'key' => 'page.move.notFound' + ]); + } + + return $newPage; + }); + } + + /** + * @return $this|static + * @throws \Kirby\Exception\LogicException If the folder cannot be moved + */ + public function publish(): static + { + if ($this->isDraft() === false) { + return $this; + } + + $page = $this->clone([ + 'isDraft' => false, + 'root' => null + ]); + + // actually do it on disk + if ($this->exists() === true) { + if (Dir::move($this->root(), $page->root()) !== true) { + throw new LogicException('The draft folder cannot be moved'); + } + + // Get the draft folder and check if there are any other drafts + // left. Otherwise delete it. + $draftDir = dirname($this->root()); + + if (Dir::isEmpty($draftDir) === true) { + Dir::remove($draftDir); + } + } + + // remove the page from the parent drafts and add it to children + $parentModel = $page->parentModel(); + $parentModel->drafts()->remove($page); + $parentModel->children()->append($page->id(), $page); + + // update the childrenAndDrafts() cache if it is initialized + if ($parentModel->childrenAndDrafts !== null) { + $parentModel->childrenAndDrafts()->set($page->id(), $page); + } + + return $page; + } + + /** + * Clean internal caches + * + * @return $this + */ + public function purge(): static + { + parent::purge(); + + $this->blueprint = null; + $this->children = null; + $this->childrenAndDrafts = null; + $this->drafts = null; + $this->files = null; + $this->inventory = null; + + return $this; + } + + /** + * @throws \Kirby\Exception\LogicException If the page is not included in the siblings collection + */ + protected function resortSiblingsAfterListing(int $position = null): bool + { + // get all siblings including the current page + $siblings = $this + ->parentModel() + ->children() + ->listed() + ->append($this) + ->filter(fn ($page) => $page->blueprint()->num() === 'default'); + + // get a non-associative array of ids + $keys = $siblings->keys(); + $index = array_search($this->id(), $keys); + + // if the page is not included in the siblings something went wrong + if ($index === false) { + throw new LogicException('The page is not included in the sorting index'); + } + + if ($position > count($keys)) { + $position = count($keys); + } + + // move the current page number in the array of keys + // subtract 1 from the num and the position, because of the + // zero-based array keys + $sorted = A::move($keys, $index, $position - 1); + + foreach ($sorted as $key => $id) { + if ($id === $this->id()) { + continue; + } + + $siblings->get($id)?->changeNum($key + 1); + } + + $parent = $this->parentModel(); + $parent->children = $parent->children()->sort('num', 'asc'); + $parent->childrenAndDrafts = null; + + return true; + } + + /** + * @internal + */ + public function resortSiblingsAfterUnlisting(): bool + { + $index = 0; + $parent = $this->parentModel(); + $siblings = $parent + ->children() + ->listed() + ->not($this) + ->filter(fn ($page) => $page->blueprint()->num() === 'default'); + + if ($siblings->count() > 0) { + foreach ($siblings as $sibling) { + $index++; + $sibling->changeNum($index); + } + + $parent->children = $siblings->sort('num', 'asc'); + $parent->childrenAndDrafts = null; + } + + return true; + } + + /** + * Stores the content on disk + * @internal + */ + public function save( + array|null $data = null, + string|null $languageCode = null, + bool $overwrite = false + ): static { + $page = parent::save($data, $languageCode, $overwrite); + + // overwrite the updated page in the parent collection + static::updateParentCollections($page, 'set'); + + return $page; + } + + /** + * Convert a page from listed or + * unlisted to draft. + * + * @return $this|static + * @throws \Kirby\Exception\LogicException If the folder cannot be moved + */ + public function unpublish(): static + { + if ($this->isDraft() === true) { + return $this; + } + + $page = $this->clone([ + 'isDraft' => true, + 'num' => null, + 'dirname' => null, + 'root' => null + ]); + + // actually do it on disk + if ($this->exists() === true) { + if (Dir::move($this->root(), $page->root()) !== true) { + throw new LogicException('The page folder cannot be moved to drafts'); + } + } + + // remove the page from the parent children and add it to drafts + $parentModel = $page->parentModel(); + $parentModel->children()->remove($page); + $parentModel->drafts()->append($page->id(), $page); + + // update the childrenAndDrafts() cache if it is initialized + if ($parentModel->childrenAndDrafts !== null) { + $parentModel->childrenAndDrafts()->set($page->id(), $page); + } + + $page->resortSiblingsAfterUnlisting(); + + return $page; + } + + /** + * Updates the page data + */ + public function update( + array|null $input = null, + string|null $languageCode = null, + bool $validate = false + ): static { + if ($this->isDraft() === true) { + $validate = false; + } + + $page = parent::update($input, $languageCode, $validate); + + // if num is created from page content, update num on content update + if ( + $page->isListed() === true && + in_array($page->blueprint()->num(), ['zero', 'default']) === false + ) { + $page = $page->changeNum($page->createNum()); + } + + // overwrite the updated page in the parent collection + static::updateParentCollections($page, 'set'); + + return $page; + } + + /** + * Updates parent collections with the new page object + * after a page action + * + * @param \Kirby\Cms\Page $page + * @param string $method Method to call on the parent collections + * @param \Kirby\Cms\Page|null $parentMdel + */ + protected static function updateParentCollections( + $page, + string $method, + $parentModel = null + ): void { + $parentModel ??= $page->parentModel(); + + // method arguments depending on the called method + $args = $method === 'remove' ? [$page] : [$page->id(), $page]; + + if ($page->isDraft() === true) { + $parentModel->drafts()->$method(...$args); + } else { + $parentModel->children()->$method(...$args); + } + + // update the childrenAndDrafts() cache if it is initialized + if ($parentModel->childrenAndDrafts !== null) { + $parentModel->childrenAndDrafts()->$method(...$args); + } + } +} diff --git a/kirby/src/Cms/PageBlueprint.php b/kirby/src/Cms/PageBlueprint.php new file mode 100644 index 0000000..79be695 --- /dev/null +++ b/kirby/src/Cms/PageBlueprint.php @@ -0,0 +1,193 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PageBlueprint extends Blueprint +{ + /** + * Creates a new page blueprint object + * with the given props + */ + public function __construct(array $props) + { + parent::__construct($props); + + // normalize all available page options + $this->props['options'] = $this->normalizeOptions( + $this->props['options'] ?? true, + // defaults + [ + 'access' => null, + 'changeSlug' => null, + 'changeStatus' => null, + 'changeTemplate' => null, + 'changeTitle' => null, + 'create' => null, + 'delete' => null, + 'duplicate' => null, + 'list' => null, + 'move' => null, + 'preview' => null, + 'read' => null, + 'sort' => null, + 'update' => null, + ], + // aliases (from v2) + [ + 'status' => 'changeStatus', + 'template' => 'changeTemplate', + 'title' => 'changeTitle', + 'url' => 'changeSlug', + ] + ); + + // normalize the ordering number + $this->props['num'] = $this->normalizeNum($this->props['num'] ?? 'default'); + + // normalize the available status array + $this->props['status'] = $this->normalizeStatus($this->props['status'] ?? null); + } + + /** + * Returns the page numbering mode + */ + public function num(): string + { + return $this->props['num']; + } + + /** + * Normalizes the ordering number + * + * @param mixed $num + */ + protected function normalizeNum($num): string + { + $aliases = [ + '0' => 'zero', + 'sort' => 'default', + ]; + + return $aliases[$num] ?? $num; + } + + /** + * Normalizes the available status options for the page + * + * @param mixed $status + */ + protected function normalizeStatus($status): array + { + $defaults = [ + 'draft' => [ + 'label' => $this->i18n('page.status.draft'), + 'text' => $this->i18n('page.status.draft.description'), + ], + 'unlisted' => [ + 'label' => $this->i18n('page.status.unlisted'), + 'text' => $this->i18n('page.status.unlisted.description'), + ], + 'listed' => [ + 'label' => $this->i18n('page.status.listed'), + 'text' => $this->i18n('page.status.listed.description'), + ] + ]; + + // use the defaults, when the status is not defined + if (empty($status) === true) { + $status = $defaults; + } + + // extend the status definition + $status = $this->extend($status); + + // clean up and translate each status + foreach ($status as $key => $options) { + // skip invalid status definitions + if (in_array($key, ['draft', 'listed', 'unlisted']) === false || $options === false) { + unset($status[$key]); + continue; + } + + if ($options === true) { + $status[$key] = $defaults[$key]; + continue; + } + + // convert everything to a simple array + if (is_array($options) === false) { + $status[$key] = [ + 'label' => $options, + 'text' => null + ]; + } + + // always make sure to have a proper label + if (empty($status[$key]['label']) === true) { + $status[$key]['label'] = $defaults[$key]['label']; + } + + // also make sure to have the text field set + $status[$key]['text'] ??= null; + + // translate text and label if necessary + $status[$key]['label'] = $this->i18n($status[$key]['label'], $status[$key]['label']); + $status[$key]['text'] = $this->i18n($status[$key]['text'], $status[$key]['text']); + } + + // the draft status is required + if (isset($status['draft']) === false) { + $status = ['draft' => $defaults['draft']] + $status; + } + + // remove the draft status for the home and error pages + if ($this->model->isHomeOrErrorPage() === true) { + unset($status['draft']); + } + + return $status; + } + + /** + * Returns the options object + * that handles page options and permissions + */ + public function options(): array + { + return $this->props['options']; + } + + /** + * Returns the preview settings + * The preview setting controls the "Open" + * button in the panel and redirects it to a + * different URL if necessary. + */ + public function preview(): string|bool + { + $preview = $this->props['options']['preview'] ?? true; + + if (is_string($preview) === true) { + return $this->model->toString($preview); + } + + return $preview; + } + + /** + * Returns the status array + */ + public function status(): array + { + return $this->props['status']; + } +} diff --git a/kirby/src/Cms/PagePermissions.php b/kirby/src/Cms/PagePermissions.php new file mode 100644 index 0000000..b4ca118 --- /dev/null +++ b/kirby/src/Cms/PagePermissions.php @@ -0,0 +1,67 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PagePermissions extends ModelPermissions +{ + protected string $category = 'pages'; + + protected function canChangeSlug(): bool + { + return $this->model->isHomeOrErrorPage() !== true; + } + + protected function canChangeStatus(): bool + { + return $this->model->isErrorPage() !== true; + } + + protected function canChangeTemplate(): bool + { + if ($this->model->isErrorPage() === true) { + return false; + } + + if (count($this->model->blueprints()) <= 1) { + return false; + } + + return true; + } + + protected function canDelete(): bool + { + return $this->model->isHomeOrErrorPage() !== true; + } + + protected function canMove(): bool + { + return $this->model->isHomeOrErrorPage() !== true; + } + + protected function canSort(): bool + { + if ($this->model->isErrorPage() === true) { + return false; + } + + if ($this->model->isListed() !== true) { + return false; + } + + if ($this->model->blueprint()->num() !== 'default') { + return false; + } + + return true; + } +} diff --git a/kirby/src/Cms/PagePicker.php b/kirby/src/Cms/PagePicker.php new file mode 100644 index 0000000..f84cc55 --- /dev/null +++ b/kirby/src/Cms/PagePicker.php @@ -0,0 +1,224 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PagePicker extends Picker +{ + // TODO: null only due to our Properties setters, + // remove once our implementation is better + protected Pages|null $items = null; + protected Pages|null $itemsForQuery = null; + protected Page|Site|null $parent; + + /** + * Extends the basic defaults + */ + public function defaults(): array + { + return array_merge(parent::defaults(), [ + // Page ID of the selected parent. Used to navigate + 'parent' => null, + // enable/disable subpage navigation + 'subpages' => true, + ]); + } + + /** + * Returns the parent model object that + * is currently selected in the page picker. + * It normally starts at the site, but can + * also be any subpage. When a query is given + * and subpage navigation is deactivated, + * there will be no model available at all. + */ + public function model(): Page|Site|null + { + // no subpages navigation = no model + if ($this->options['subpages'] === false) { + return null; + } + + // the model for queries is a bit more tricky to find + if (empty($this->options['query']) === false) { + return $this->modelForQuery(); + } + + return $this->parent(); + } + + /** + * Returns a model object for the given + * query, depending on the parent and subpages + * options. + */ + public function modelForQuery(): Page|Site|null + { + if ($this->options['subpages'] === true && empty($this->options['parent']) === false) { + return $this->parent(); + } + + return $this->items()?->parent(); + } + + /** + * Returns basic information about the + * parent model that is currently selected + * in the page picker. + */ + public function modelToArray(Page|Site $model = null): array|null + { + if ($model === null) { + return null; + } + + // the selected model is the site. there's nothing above + if ($model instanceof Site) { + return [ + 'id' => null, + 'parent' => null, + 'title' => $model->title()->value() + ]; + } + + // the top-most page has been reached + // the missing id indicates that there's nothing above + if ($model->id() === $this->start()->id()) { + return [ + 'id' => null, + 'parent' => null, + 'title' => $model->title()->value() + ]; + } + + // the model is a regular page + return [ + 'id' => $model->id(), + 'parent' => $model->parentModel()->id(), + 'title' => $model->title()->value() + ]; + } + + /** + * Search all pages for the picker + */ + public function items(): Pages|null + { + // cache + if ($this->items !== null) { + return $this->items; + } + + // no query? simple parent-based search for pages + if (empty($this->options['query']) === true) { + $items = $this->itemsForParent(); + + // when subpage navigation is enabled, a parent + // might be passed in addition to the query. + // The parent then takes priority. + } elseif ($this->options['subpages'] === true && empty($this->options['parent']) === false) { + $items = $this->itemsForParent(); + + // search by query + } else { + $items = $this->itemsForQuery(); + } + + // filter protected and hidden pages + $items = $items->filter('isListable', true); + + // search + $items = $this->search($items); + + // paginate the result + return $this->items = $this->paginate($items); + } + + /** + * Search for pages by parent + */ + public function itemsForParent(): Pages + { + return $this->parent()->children(); + } + + /** + * Search for pages by query string + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function itemsForQuery(): Pages + { + // cache + if ($this->itemsForQuery !== null) { + return $this->itemsForQuery; + } + + $model = $this->options['model']; + $items = $model->query($this->options['query']); + + // help mitigate some typical query usage issues + // by converting site and page objects to proper + // pages by returning their children + $items = match (true) { + $items instanceof Site, + $items instanceof Page => $items->children(), + $items instanceof Pages => $items, + + default => throw new InvalidArgumentException('Your query must return a set of pages') + }; + + return $this->itemsForQuery = $items; + } + + /** + * Returns the parent model. + * The model will be used to fetch + * subpages unless there's a specific + * query to find pages instead. + */ + public function parent(): Page|Site + { + return $this->parent ??= $this->kirby->page($this->options['parent']) ?? $this->site; + } + + /** + * Calculates the top-most model (page or site) + * that can be accessed when navigating + * through pages. + */ + public function start(): Page|Site + { + if (empty($this->options['query']) === false) { + return $this->itemsForQuery()?->parent() ?? $this->site; + } + + return $this->site; + } + + /** + * Returns an associative array + * with all information for the picker. + * This will be passed directly to the API. + */ + public function toArray(): array + { + $array = parent::toArray(); + $array['model'] = $this->modelToArray($this->model()); + + return $array; + } +} diff --git a/kirby/src/Cms/PageRules.php b/kirby/src/Cms/PageRules.php new file mode 100644 index 0000000..b981058 --- /dev/null +++ b/kirby/src/Cms/PageRules.php @@ -0,0 +1,518 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PageRules +{ + /** + * Validates if the sorting number of the page can be changed + * + * @throws \Kirby\Exception\InvalidArgumentException If the given number is invalid + */ + public static function changeNum(Page $page, int $num = null): bool + { + if ($num !== null && $num < 0) { + throw new InvalidArgumentException(['key' => 'page.num.invalid']); + } + + return true; + } + + /** + * Validates if the slug for the page can be changed + * + * @throws \Kirby\Exception\DuplicateException If a page with this slug already exists + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the slug + */ + public static function changeSlug(Page $page, string $slug): bool + { + if ($page->permissions()->changeSlug() !== true) { + throw new PermissionException([ + 'key' => 'page.changeSlug.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + self::validateSlugLength($slug); + self::validateSlugProtectedPaths($page, $slug); + + $siblings = $page->parentModel()->children(); + $drafts = $page->parentModel()->drafts(); + + if ($siblings->find($slug)?->is($page) === false) { + throw new DuplicateException([ + 'key' => 'page.duplicate', + 'data' => [ + 'slug' => $slug + ] + ]); + } + + if ($drafts->find($slug)?->is($page) === false) { + throw new DuplicateException([ + 'key' => 'page.draft.duplicate', + 'data' => [ + 'slug' => $slug + ] + ]); + } + + return true; + } + + /** + * Validates if the status for the page can be changed + * + * @throws \Kirby\Exception\InvalidArgumentException If the given status is invalid + */ + public static function changeStatus( + Page $page, + string $status, + int $position = null + ): bool { + if (isset($page->blueprint()->status()[$status]) === false) { + throw new InvalidArgumentException(['key' => 'page.status.invalid']); + } + + return match ($status) { + 'draft' => static::changeStatusToDraft($page), + 'listed' => static::changeStatusToListed($page, $position), + 'unlisted' => static::changeStatusToUnlisted($page), + default => throw new InvalidArgumentException(['key' => 'page.status.invalid']) + }; + } + + /** + * Validates if a page can be converted to a draft + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the status or the page cannot be converted to a draft + */ + public static function changeStatusToDraft(Page $page): bool + { + if ($page->permissions()->changeStatus() !== true) { + throw new PermissionException([ + 'key' => 'page.changeStatus.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + if ($page->isHomeOrErrorPage() === true) { + throw new PermissionException([ + 'key' => 'page.changeStatus.toDraft.invalid', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + return true; + } + + /** + * Validates if the status of a page can be changed to listed + * + * @throws \Kirby\Exception\InvalidArgumentException If the given position is invalid + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the status or the status for the page cannot be changed by any user + */ + public static function changeStatusToListed(Page $page, int $position): bool + { + // no need to check for status changing permissions, + // instead we need to check for sorting permissions + if ($page->isListed() === true) { + if ($page->isSortable() !== true) { + throw new PermissionException([ + 'key' => 'page.sort.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + return true; + } + + static::publish($page); + + if ($position !== null && $position < 0) { + throw new InvalidArgumentException(['key' => 'page.num.invalid']); + } + + return true; + } + + /** + * Validates if the status of a page can be changed to unlisted + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the status + */ + public static function changeStatusToUnlisted(Page $page) + { + static::publish($page); + + return true; + } + + /** + * Validates if the template of the page can be changed + * + * @throws \Kirby\Exception\LogicException If the template of the page cannot be changed at all + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the template + */ + public static function changeTemplate(Page $page, string $template): bool + { + if ($page->permissions()->changeTemplate() !== true) { + throw new PermissionException([ + 'key' => 'page.changeTemplate.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + $blueprints = $page->blueprints(); + + if ( + count($blueprints) <= 1 || + in_array($template, array_column($blueprints, 'name')) === false + ) { + throw new LogicException([ + 'key' => 'page.changeTemplate.invalid', + 'data' => ['slug' => $page->slug()] + ]); + } + + return true; + } + + /** + * Validates if the title of the page can be changed + * + * @throws \Kirby\Exception\InvalidArgumentException If the new title is empty + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the title + */ + public static function changeTitle(Page $page, string $title): bool + { + if ($page->permissions()->changeTitle() !== true) { + throw new PermissionException([ + 'key' => 'page.changeTitle.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + static::validateTitleLength($title); + + return true; + } + + /** + * Validates if the page can be created + * + * @throws \Kirby\Exception\DuplicateException If the same page or a draft already exists + * @throws \Kirby\Exception\InvalidArgumentException If the slug is invalid + * @throws \Kirby\Exception\PermissionException If the user is not allowed to create this page + */ + public static function create(Page $page): bool + { + if ($page->permissions()->create() !== true) { + throw new PermissionException([ + 'key' => 'page.create.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + self::validateSlugLength($page->slug()); + self::validateSlugProtectedPaths($page, $page->slug()); + + if ($page->exists() === true) { + throw new DuplicateException([ + 'key' => 'page.draft.duplicate', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + $siblings = $page->parentModel()->children(); + $drafts = $page->parentModel()->drafts(); + $slug = $page->slug(); + + if ($siblings->find($slug)) { + throw new DuplicateException([ + 'key' => 'page.duplicate', + 'data' => ['slug' => $slug] + ]); + } + + if ($drafts->find($slug)) { + throw new DuplicateException([ + 'key' => 'page.draft.duplicate', + 'data' => ['slug' => $slug] + ]); + } + + return true; + } + + /** + * Validates if the page can be deleted + * + * @throws \Kirby\Exception\LogicException If the page has children and should not be force-deleted + * @throws \Kirby\Exception\PermissionException If the user is not allowed to delete the page + */ + public static function delete(Page $page, bool $force = false): bool + { + if ($page->permissions()->delete() !== true) { + throw new PermissionException([ + 'key' => 'page.delete.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + if (($page->hasChildren() === true || $page->hasDrafts() === true) && $force === false) { + throw new LogicException(['key' => 'page.delete.hasChildren']); + } + + return true; + } + + /** + * Validates if the page can be duplicated + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to duplicate the page + */ + public static function duplicate( + Page $page, + string $slug, + array $options = [] + ): bool { + if ($page->permissions()->duplicate() !== true) { + throw new PermissionException([ + 'key' => 'page.duplicate.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + self::validateSlugLength($slug); + + return true; + } + + /** + * Check if the page can be moved + * to the given parent + */ + public static function move(Page $page, Site|Page $parent): bool + { + // if nothing changes, there's no need for checks + if ($parent->is($page->parent()) === true) { + return true; + } + + if ($page->permissions()->move() !== true) { + throw new PermissionException([ + 'key' => 'page.move.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + // the page cannot be moved into itself + if ($parent instanceof Page && ($page->is($parent) === true || $page->isAncestorOf($parent) === true)) { + throw new LogicException([ + 'key' => 'page.move.ancestor', + ]); + } + + // check for duplicates + if ($parent->childrenAndDrafts()->find($page->slug())) { + throw new DuplicateException([ + 'key' => 'page.move.duplicate', + 'data' => [ + 'slug' => $page->slug(), + ] + ]); + } + + $allowed = []; + + // collect all allowed subpage templates + foreach ($parent->blueprint()->sections() as $section) { + // only take pages sections into consideration + if ($section->type() !== 'pages') { + continue; + } + + // only consider page sections that list pages + // of the targeted new parent page + if ($section->parent() !== $parent) { + continue; + } + + // go through all allowed blueprints and + // add the name to the allow list + foreach ($section->blueprints() as $blueprint) { + $allowed[] = $blueprint['name']; + } + } + + // check if the template of this page is allowed as subpage type + if (in_array($page->intendedTemplate()->name(), $allowed) === false) { + throw new PermissionException([ + 'key' => 'page.move.template', + 'data' => [ + 'template' => $page->intendedTemplate()->name(), + 'parent' => $parent->id() ?? '/', + ] + ]); + } + + return true; + } + + /** + * Check if the page can be published + * (status change from draft to listed or unlisted) + */ + public static function publish(Page $page): bool + { + if ($page->permissions()->changeStatus() !== true) { + throw new PermissionException([ + 'key' => 'page.changeStatus.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + if ($page->isDraft() === true && empty($page->errors()) === false) { + throw new PermissionException([ + 'key' => 'page.changeStatus.incomplete', + 'details' => $page->errors() + ]); + } + + return true; + } + + /** + * Validates if the page can be updated + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to update the page + */ + public static function update(Page $page, array $content = []): bool + { + if ($page->permissions()->update() !== true) { + throw new PermissionException([ + 'key' => 'page.update.permission', + 'data' => [ + 'slug' => $page->slug() + ] + ]); + } + + return true; + } + + /** + * Ensures that the slug is not empty and doesn't exceed the maximum length + * to make sure that the directory name will be accepted by the filesystem + * + * @throws \Kirby\Exception\InvalidArgumentException If the slug is empty or too long + */ + public static function validateSlugLength(string $slug): void + { + $slugLength = Str::length($slug); + + if ($slugLength === 0) { + throw new InvalidArgumentException([ + 'key' => 'page.slug.invalid', + ]); + } + + if ($slugsMaxlength = App::instance()->option('slugs.maxlength', 255)) { + $maxlength = (int)$slugsMaxlength; + + if ($slugLength > $maxlength) { + throw new InvalidArgumentException([ + 'key' => 'page.slug.maxlength', + 'data' => [ + 'length' => $maxlength + ] + ]); + } + } + } + + + /** + * Ensure that a top-level page path does not start with one of + * the reserved URL paths, e.g. for API or the Panel + * + * @throws \Kirby\Exception\InvalidArgumentException If the page ID starts as one of the disallowed paths + */ + protected static function validateSlugProtectedPaths( + Page $page, + string $slug + ): void { + if ($page->parent() === null) { + $paths = A::map( + ['api', 'assets', 'media', 'panel'], + fn ($url) => $page->kirby()->url($url, true)->path()->toString() + ); + + $index = array_search($slug, $paths); + + if ($index !== false) { + throw new InvalidArgumentException([ + 'key' => 'page.changeSlug.reserved', + 'data' => [ + 'path' => $paths[$index] + ] + ]); + } + } + } + + /** + * Ensures that the page title is not empty + * + * @throws \Kirby\Exception\InvalidArgumentException If the title is empty + */ + public static function validateTitleLength(string $title): void + { + if (Str::length($title) === 0) { + throw new InvalidArgumentException([ + 'key' => 'page.changeTitle.empty', + ]); + } + } +} diff --git a/kirby/src/Cms/PageSiblings.php b/kirby/src/Cms/PageSiblings.php new file mode 100644 index 0000000..04f9f63 --- /dev/null +++ b/kirby/src/Cms/PageSiblings.php @@ -0,0 +1,131 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +trait PageSiblings +{ + /** + * Checks if there's a next listed + * page in the siblings collection + * + * @param \Kirby\Cms\Collection|null $collection + */ + public function hasNextListed($collection = null): bool + { + return $this->nextListed($collection) !== null; + } + + /** + * Checks if there's a next unlisted + * page in the siblings collection + * + * @param \Kirby\Cms\Collection|null $collection + */ + public function hasNextUnlisted($collection = null): bool + { + return $this->nextUnlisted($collection) !== null; + } + + /** + * Checks if there's a previous listed + * page in the siblings collection + * + * @param \Kirby\Cms\Collection|null $collection + */ + public function hasPrevListed($collection = null): bool + { + return $this->prevListed($collection) !== null; + } + + /** + * Checks if there's a previous unlisted + * page in the siblings collection + * + * @param \Kirby\Cms\Collection|null $collection + */ + public function hasPrevUnlisted($collection = null): bool + { + return $this->prevUnlisted($collection) !== null; + } + + /** + * Returns the next listed page if it exists + * + * @param \Kirby\Cms\Collection|null $collection + * + * @return \Kirby\Cms\Page|null + */ + public function nextListed($collection = null) + { + return $this->nextAll($collection)->listed()->first(); + } + + /** + * Returns the next unlisted page if it exists + * + * @param \Kirby\Cms\Collection|null $collection + * + * @return \Kirby\Cms\Page|null + */ + public function nextUnlisted($collection = null) + { + return $this->nextAll($collection)->unlisted()->first(); + } + + /** + * Returns the previous listed page + * + * @param \Kirby\Cms\Collection|null $collection + * + * @return \Kirby\Cms\Page|null + */ + public function prevListed($collection = null) + { + return $this->prevAll($collection)->listed()->last(); + } + + /** + * Returns the previous unlisted page + * + * @param \Kirby\Cms\Collection|null $collection + * + * @return \Kirby\Cms\Page|null + */ + public function prevUnlisted($collection = null) + { + return $this->prevAll($collection)->unlisted()->last(); + } + + /** + * Private siblings collector + * + * @return \Kirby\Cms\Collection + */ + protected function siblingsCollection() + { + if ($this->isDraft() === true) { + return $this->parentModel()->drafts(); + } + + return $this->parentModel()->children(); + } + + /** + * Returns siblings with the same template + * + * @return \Kirby\Cms\Pages + */ + public function templateSiblings(bool $self = true) + { + return $this->siblings($self)->filter('intendedTemplate', $this->intendedTemplate()->name()); + } +} diff --git a/kirby/src/Cms/Pages.php b/kirby/src/Cms/Pages.php new file mode 100644 index 0000000..95ccfc5 --- /dev/null +++ b/kirby/src/Cms/Pages.php @@ -0,0 +1,495 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Pages extends Collection +{ + use HasUuids; + + /** + * Cache for the index only listed and unlisted pages + * + * @var \Kirby\Cms\Pages|null + */ + protected $index = null; + + /** + * Cache for the index all statuses also including drafts + * + * @var \Kirby\Cms\Pages|null + */ + protected $indexWithDrafts = null; + + /** + * All registered pages methods + */ + public static array $methods = []; + + /** + * Adds a single page or + * an entire second collection to the + * current collection + * + * @param \Kirby\Cms\Pages|\Kirby\Cms\Page|string $object + * @return $this + * @throws \Kirby\Exception\InvalidArgumentException When no `Page` or `Pages` object or an ID of an existing page is passed + */ + public function add($object): static + { + $site = App::instance()->site(); + + // add a pages collection + if ($object instanceof self) { + $this->data = array_merge($this->data, $object->data); + + // add a page by id + } elseif ( + is_string($object) === true && + $page = $site->find($object) + ) { + $this->__set($page->id(), $page); + + // add a page object + } elseif ($object instanceof Page) { + $this->__set($object->id(), $object); + + // give a useful error message on invalid input; + // silently ignore "empty" values for compatibility with existing setups + } elseif (in_array($object, [null, false, true], true) !== true) { + throw new InvalidArgumentException('You must pass a Pages or Page object or an ID of an existing page to the Pages collection'); + } + + return $this; + } + + /** + * Returns all audio files of all children + */ + public function audio(): Files + { + return $this->files()->filter('type', 'audio'); + } + + /** + * Returns all children for each page in the array + */ + public function children(): Pages + { + $children = new Pages([]); + + foreach ($this->data as $page) { + foreach ($page->children() as $childKey => $child) { + $children->data[$childKey] = $child; + } + } + + return $children; + } + + /** + * Returns all code files of all children + */ + public function code(): Files + { + return $this->files()->filter('type', 'code'); + } + + /** + * Returns all documents of all children + */ + public function documents(): Files + { + return $this->files()->filter('type', 'document'); + } + + /** + * Fetch all drafts for all pages in the collection + */ + public function drafts(): Pages + { + $drafts = new Pages([]); + + foreach ($this->data as $page) { + foreach ($page->drafts() as $draftKey => $draft) { + $drafts->data[$draftKey] = $draft; + } + } + + return $drafts; + } + + /** + * Creates a pages collection from an array of props + */ + public static function factory( + array $pages, + Page|Site $model = null, + bool $draft = null + ): static { + $model ??= App::instance()->site(); + $children = new static([], $model); + $kirby = $model->kirby(); + + if ($model instanceof Page) { + $parent = $model; + $site = $model->site(); + } else { + $parent = null; + $site = $model; + } + + foreach ($pages as $props) { + $props['kirby'] = $kirby; + $props['parent'] = $parent; + $props['site'] = $site; + $props['isDraft'] = $draft ?? $props['isDraft'] ?? $props['draft'] ?? false; + + $page = Page::factory($props); + + $children->data[$page->id()] = $page; + } + + return $children; + } + + /** + * Returns all files of all children + */ + public function files(): Files + { + $files = new Files([], $this->parent); + + foreach ($this->data as $page) { + foreach ($page->files() as $fileKey => $file) { + $files->data[$fileKey] = $file; + } + } + + return $files; + } + + /** + * Finds a page by its ID or URI + * @internal Use `$pages->find()` instead + */ + public function findByKey(string|null $key = null): Page|null + { + if ($key === null) { + return null; + } + + if ($page = $this->findByUuid($key, 'page')) { + return $page; + } + + // remove trailing or leading slashes + $key = trim($key, '/'); + + // strip extensions from the id + if (strpos($key, '.') !== false) { + $info = pathinfo($key); + + if ($info['dirname'] !== '.') { + $key = $info['dirname'] . '/' . $info['filename']; + } else { + $key = $info['filename']; + } + } + + // try the obvious way + if ($page = $this->get($key)) { + return $page; + } + + $kirby = App::instance(); + $multiLang = $kirby->multilang(); + + // try to find the page by its (translated) URI + // by stepping through the page tree + $start = $this->parent instanceof Page ? $this->parent->id() : ''; + if ($page = $this->findByKeyRecursive($key, $start, $multiLang)) { + return $page; + } + + // for secondary languages, try the full translated URI + // (for collections without parent that won't have a result above) + if ( + $multiLang === true && + $kirby->language()->isDefault() === false && + $page = $this->findBy('uri', $key) + ) { + return $page; + } + + return null; + } + + /** + * Finds a child or child of a child recursively + * + * @return mixed + */ + protected function findByKeyRecursive( + string $id, + string $startAt = null, + bool $multiLang = false + ) { + $path = explode('/', $id); + $item = null; + $query = $startAt; + + foreach ($path as $key) { + $collection = $item?->children() ?? $this; + $query = ltrim($query . '/' . $key, '/'); + $item = $collection->get($query) ?? null; + + if ( + $item === null && + $multiLang === true && + App::instance()->language()->isDefault() === false + ) { + if (count($path) > 1 || $collection->parent()) { + // either the desired path is definitely not a slug, + // or collection is the children of another collection + $item = $collection->findBy('slug', $key); + } else { + // desired path _could_ be a slug or a "top level" uri + $item = $collection->findBy('uri', $key); + } + } + + if ($item === null) { + return null; + } + } + + return $item; + } + + /** + * Finds the currently open page + */ + public function findOpen(): Page|null + { + return $this->findBy('isOpen', true); + } + + /** + * Custom getter that is able to find + * extension pages + * + * @param string $key + * @param mixed $default + * @return \Kirby\Cms\Page|null + */ + public function get($key, $default = null) + { + if ($key === null) { + return null; + } + + if ($item = parent::get($key)) { + return $item; + } + + return App::instance()->extension('pages', $key); + } + + /** + * Returns all images of all children + */ + public function images(): Files + { + return $this->files()->filter('type', 'image'); + } + + /** + * Create a recursive flat index of all + * pages and subpages, etc. + * + * @return \Kirby\Cms\Pages + */ + public function index(bool $drafts = false) + { + // get object property by cache mode + $index = $drafts === true ? $this->indexWithDrafts : $this->index; + + if ($index instanceof self) { + return $index; + } + + $index = new Pages([]); + + foreach ($this->data as $pageKey => $page) { + $index->data[$pageKey] = $page; + $pageIndex = $page->index($drafts); + + if ($pageIndex) { + foreach ($pageIndex as $childKey => $child) { + $index->data[$childKey] = $child; + } + } + } + + if ($drafts === true) { + return $this->indexWithDrafts = $index; + } + + return $this->index = $index; + } + + /** + * Returns all listed pages in the collection + */ + public function listed(): static + { + return $this->filter('isListed', '==', true); + } + + /** + * Returns all unlisted pages in the collection + */ + public function unlisted(): static + { + return $this->filter('isUnlisted', '==', true); + } + + /** + * Include all given items in the collection + * + * @param mixed ...$args + * @return $this|static + */ + public function merge(...$args) + { + // merge multiple arguments at once + if (count($args) > 1) { + $collection = clone $this; + foreach ($args as $arg) { + $collection = $collection->merge($arg); + } + return $collection; + } + + // merge all parent drafts + if ($args[0] === 'drafts') { + if ($parent = $this->parent()) { + return $this->merge($parent->drafts()); + } + + return $this; + } + + // merge an entire collection + if ($args[0] instanceof self) { + $collection = clone $this; + $collection->data = array_merge($collection->data, $args[0]->data); + return $collection; + } + + // append a single page + if ($args[0] instanceof Page) { + $collection = clone $this; + return $collection->set($args[0]->id(), $args[0]); + } + + // merge an array + if (is_array($args[0]) === true) { + $collection = clone $this; + foreach ($args[0] as $arg) { + $collection = $collection->merge($arg); + } + return $collection; + } + + if (is_string($args[0]) === true) { + return $this->merge(App::instance()->site()->find($args[0])); + } + + return $this; + } + + /** + * Filter all pages by excluding the given template + * @since 3.3.0 + * + * @param string|array $templates + * @return \Kirby\Cms\Pages + */ + public function notTemplate($templates) + { + if (empty($templates) === true) { + return $this; + } + + if (is_array($templates) === false) { + $templates = [$templates]; + } + + return $this->filter(function ($page) use ($templates) { + return !in_array($page->intendedTemplate()->name(), $templates); + }); + } + + /** + * Returns an array with all page numbers + */ + public function nums(): array + { + return $this->pluck('num'); + } + + // Returns all listed and unlisted pages in the collection + public function published(): static + { + return $this->filter('isDraft', '==', false); + } + + /** + * Filter all pages by the given template + * + * @param string|array $templates + * @return \Kirby\Cms\Pages + */ + public function template($templates) + { + if (empty($templates) === true) { + return $this; + } + + if (is_array($templates) === false) { + $templates = [$templates]; + } + + return $this->filter(function ($page) use ($templates) { + return in_array($page->intendedTemplate()->name(), $templates); + }); + } + + /** + * Returns all video files of all children + */ + public function videos(): Files + { + return $this->files()->filter('type', 'video'); + } +} diff --git a/kirby/src/Cms/Pagination.php b/kirby/src/Cms/Pagination.php new file mode 100644 index 0000000..fdefddd --- /dev/null +++ b/kirby/src/Cms/Pagination.php @@ -0,0 +1,166 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Pagination extends BasePagination +{ + /** + * Pagination method (param, query, none) + * + * @var string + */ + protected $method; + + /** + * The base URL + * + * @var string + */ + protected $url; + + /** + * Variable name for query strings + * + * @var string + */ + protected $variable; + + /** + * Creates the pagination object. As a new + * property you can now pass the base Url. + * That Url must be the Url of the first + * page of the collection without additional + * pagination information/query parameters in it. + * + * ```php + * $pagination = new Pagination([ + * 'page' => 1, + * 'limit' => 10, + * 'total' => 120, + * 'method' => 'query', + * 'variable' => 'p', + * 'url' => new Uri('https://getkirby.com/blog') + * ]); + * ``` + */ + public function __construct(array $params = []) + { + $kirby = App::instance(); + $config = $kirby->option('pagination', []); + $request = $kirby->request(); + + $params['limit'] ??= $config['limit'] ?? 20; + $params['method'] ??= $config['method'] ?? 'param'; + $params['variable'] ??= $config['variable'] ?? 'page'; + + if (empty($params['url']) === true) { + $params['url'] = new Uri($kirby->url('current'), [ + 'params' => $request->params(), + 'query' => $request->query()->toArray(), + ]); + } + + if ($params['method'] === 'query') { + $params['page'] ??= $params['url']->query()->get($params['variable']); + } elseif ($params['method'] === 'param') { + $params['page'] ??= $params['url']->params()->get($params['variable']); + } + + parent::__construct($params); + + $this->method = $params['method']; + $this->url = $params['url']; + $this->variable = $params['variable']; + } + + /** + * Returns the Url for the first page + */ + public function firstPageUrl(): string|null + { + return $this->pageUrl(1); + } + + /** + * Returns the Url for the last page + */ + public function lastPageUrl(): string|null + { + return $this->pageUrl($this->lastPage()); + } + + /** + * Returns the Url for the next page. + * Returns null if there's no next page. + */ + public function nextPageUrl(): string|null + { + if ($page = $this->nextPage()) { + return $this->pageUrl($page); + } + + return null; + } + + /** + * Returns the URL of the current page. + * If the `$page` variable is set, the URL + * for that page will be returned. + */ + public function pageUrl(int $page = null): string|null + { + if ($page === null) { + return $this->pageUrl($this->page()); + } + + $url = clone $this->url; + $variable = $this->variable; + + if ($this->hasPage($page) === false) { + return null; + } + + $pageValue = $page === 1 ? null : $page; + + if ($this->method === 'query') { + $url->query->$variable = $pageValue; + } elseif ($this->method === 'param') { + $url->params->$variable = $pageValue; + } else { + return null; + } + + return $url->toString(); + } + + /** + * Returns the Url for the previous page. + * Returns null if there's no previous page. + */ + public function prevPageUrl(): string|null + { + if ($page = $this->prevPage()) { + return $this->pageUrl($page); + } + + return null; + } +} diff --git a/kirby/src/Cms/Permissions.php b/kirby/src/Cms/Permissions.php new file mode 100644 index 0000000..20ba4ea --- /dev/null +++ b/kirby/src/Cms/Permissions.php @@ -0,0 +1,212 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Permissions +{ + public static array $extendedActions = []; + + protected array $actions = [ + 'access' => [ + 'account' => true, + 'languages' => true, + 'panel' => true, + 'site' => true, + 'system' => true, + 'users' => true, + ], + 'files' => [ + 'access' => true, + 'changeName' => true, + 'changeTemplate' => true, + 'create' => true, + 'delete' => true, + 'list' => true, + 'read' => true, + 'replace' => true, + 'update' => true + ], + 'languages' => [ + 'create' => true, + 'delete' => true + ], + 'pages' => [ + 'access' => true, + 'changeSlug' => true, + 'changeStatus' => true, + 'changeTemplate' => true, + 'changeTitle' => true, + 'create' => true, + 'delete' => true, + 'duplicate' => true, + 'list' => true, + 'move' => true, + 'preview' => true, + 'read' => true, + 'sort' => true, + 'update' => true + ], + 'site' => [ + 'changeTitle' => true, + 'update' => true + ], + 'users' => [ + 'changeEmail' => true, + 'changeLanguage' => true, + 'changeName' => true, + 'changePassword' => true, + 'changeRole' => true, + 'create' => true, + 'delete' => true, + 'update' => true + ], + 'user' => [ + 'changeEmail' => true, + 'changeLanguage' => true, + 'changeName' => true, + 'changePassword' => true, + 'changeRole' => true, + 'delete' => true, + 'update' => true + ] + ]; + + /** + * Permissions constructor + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function __construct(array|bool|null $settings = []) + { + // dynamically register the extended actions + foreach (static::$extendedActions as $key => $actions) { + if (isset($this->actions[$key]) === true) { + throw new InvalidArgumentException('The action ' . $key . ' is already a core action'); + } + + $this->actions[$key] = $actions; + } + + if (is_array($settings) === true) { + return $this->setCategories($settings); + } + + if (is_bool($settings) === true) { + return $this->setAll($settings); + } + } + + public function for(string $category = null, string $action = null): bool + { + if ($action === null) { + if ($this->hasCategory($category) === false) { + return false; + } + + return $this->actions[$category]; + } + + if ($this->hasAction($category, $action) === false) { + return false; + } + + return $this->actions[$category][$action]; + } + + protected function hasAction(string $category, string $action): bool + { + return + $this->hasCategory($category) === true && + array_key_exists($action, $this->actions[$category]) === true; + } + + protected function hasCategory(string $category): bool + { + return array_key_exists($category, $this->actions) === true; + } + + /** + * @return $this + */ + protected function setAction( + string $category, + string $action, + $setting + ): static { + // wildcard to overwrite the entire category + if ($action === '*') { + return $this->setCategory($category, $setting); + } + + $this->actions[$category][$action] = $setting; + + return $this; + } + + /** + * @return $this + */ + protected function setAll(bool $setting): static + { + foreach ($this->actions as $categoryName => $actions) { + $this->setCategory($categoryName, $setting); + } + + return $this; + } + + /** + * @return $this + */ + protected function setCategories(array $settings): static + { + foreach ($settings as $categoryName => $categoryActions) { + if (is_bool($categoryActions) === true) { + $this->setCategory($categoryName, $categoryActions); + } + + if (is_array($categoryActions) === true) { + foreach ($categoryActions as $actionName => $actionSetting) { + $this->setAction($categoryName, $actionName, $actionSetting); + } + } + } + + return $this; + } + + /** + * @return $this + * @throws \Kirby\Exception\InvalidArgumentException + */ + protected function setCategory(string $category, bool $setting): static + { + if ($this->hasCategory($category) === false) { + throw new InvalidArgumentException('Invalid permissions category'); + } + + foreach ($this->actions[$category] as $actionName => $actionSetting) { + $this->actions[$category][$actionName] = $setting; + } + + return $this; + } + + public function toArray(): array + { + return $this->actions; + } +} diff --git a/kirby/src/Cms/Picker.php b/kirby/src/Cms/Picker.php new file mode 100644 index 0000000..da4b7a5 --- /dev/null +++ b/kirby/src/Cms/Picker.php @@ -0,0 +1,148 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class Picker +{ + protected App $kirby; + protected array $options; + protected Site $site; + + /** + * Creates a new Picker instance + */ + public function __construct(array $params = []) + { + $this->options = array_merge($this->defaults(), $params); + $this->kirby = $this->options['model']->kirby(); + $this->site = $this->kirby->site(); + } + + /** + * Return the array of default values + */ + protected function defaults(): array + { + // default params + return [ + // image settings (ratio, cover, etc.) + 'image' => [], + // query template for the info field + 'info' => false, + // listing style: list, cards, cardlets + 'layout' => 'list', + // number of users displayed per pagination page + 'limit' => 20, + // optional mapping function for the result array + 'map' => null, + // the reference model + 'model' => App::instance()->site(), + // current page when paginating + 'page' => 1, + // a query string to fetch specific items + 'query' => null, + // search query + 'search' => null, + // query template for the text field + 'text' => null + ]; + } + + /** + * Fetches all items for the picker + */ + abstract public function items(): Collection|null; + + /** + * Converts all given items to an associative + * array that is already optimized for the + * panel picker component. + */ + public function itemsToArray(Collection $items = null): array + { + if ($items === null) { + return []; + } + + $result = []; + + foreach ($items as $index => $item) { + if (empty($this->options['map']) === false) { + $result[] = $this->options['map']($item); + } else { + $result[] = $item->panel()->pickerData([ + 'image' => $this->options['image'], + 'info' => $this->options['info'], + 'layout' => $this->options['layout'], + 'model' => $this->options['model'], + 'text' => $this->options['text'], + ]); + } + } + + return $result; + } + + /** + * Apply pagination to the collection + * of items according to the options. + */ + public function paginate(Collection $items): Collection + { + return $items->paginate([ + 'limit' => $this->options['limit'], + 'page' => $this->options['page'] + ]); + } + + /** + * Return the most relevant pagination + * info as array + */ + public function paginationToArray(Pagination $pagination): array + { + return [ + 'limit' => $pagination->limit(), + 'page' => $pagination->page(), + 'total' => $pagination->total() + ]; + } + + /** + * Search through the collection of items + * if not deactivate in the options + */ + public function search(Collection $items): Collection + { + if (empty($this->options['search']) === false) { + return $items->search($this->options['search']); + } + + return $items; + } + + /** + * Returns an associative array + * with all information for the picker. + * This will be passed directly to the API. + */ + public function toArray(): array + { + $items = $this->items(); + + return [ + 'data' => $this->itemsToArray($items), + 'pagination' => $this->paginationToArray($items->pagination()), + ]; + } +} diff --git a/kirby/src/Cms/Plugin.php b/kirby/src/Cms/Plugin.php new file mode 100644 index 0000000..5a69ccf --- /dev/null +++ b/kirby/src/Cms/Plugin.php @@ -0,0 +1,327 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Plugin +{ + protected PluginAssets $assets; + protected array $extends; + protected string $name; + protected string $root; + + // caches + protected array|null $info = null; + protected UpdateStatus|null $updateStatus = null; + + /** + * @param string $name Plugin name within Kirby (`vendor/plugin`) + * @param array $extends Associative array of plugin extensions + * + * @throws \Kirby\Exception\InvalidArgumentException If the plugin name has an invalid format + */ + public function __construct(string $name, array $extends = []) + { + static::validateName($name); + + $this->name = $name; + $this->extends = $extends; + $this->root = $extends['root'] ?? dirname(debug_backtrace()[0]['file']); + $this->info = empty($extends['info']) === false && is_array($extends['info']) ? $extends['info'] : null; + + unset($this->extends['root'], $this->extends['info']); + } + + /** + * Allows access to any composer.json field by method call + */ + public function __call(string $key, array $arguments = null): mixed + { + return $this->info()[$key] ?? null; + } + + /** + * Returns the plugin asset object for a specific asset + */ + public function asset(string $path): PluginAsset|null + { + return $this->assets()->get($path); + } + + /** + * Returns the plugin assets collection + */ + public function assets(): PluginAssets + { + return $this->assets ??= PluginAssets::factory($this); + } + + /** + * Returns the array with author information + * from the composer.json file + */ + public function authors(): array + { + return $this->info()['authors'] ?? []; + } + + /** + * Returns a comma-separated list with all author names + */ + public function authorsNames(): string + { + $names = []; + + foreach ($this->authors() as $author) { + $names[] = $author['name'] ?? null; + } + + return implode(', ', array_filter($names)); + } + + /** + * Returns the associative array of extensions the plugin bundles + */ + public function extends(): array + { + return $this->extends; + } + + /** + * Returns the unique ID for the plugin + * (alias for the plugin name) + */ + public function id(): string + { + return $this->name(); + } + + /** + * Returns the raw data from composer.json + */ + public function info(): array + { + if (is_array($this->info) === true) { + return $this->info; + } + + try { + $info = Data::read($this->manifest()); + } catch (Exception) { + // there is no manifest file or it is invalid + $info = []; + } + + return $this->info = $info; + } + + /** + * Current $kirby instance + */ + public function kirby(): App + { + return App::instance(); + } + + /** + * Returns the link to the plugin homepage + */ + public function link(): string|null + { + $info = $this->info(); + $homepage = $info['homepage'] ?? null; + $docs = $info['support']['docs'] ?? null; + $source = $info['support']['source'] ?? null; + + $link = $homepage ?? $docs ?? $source; + + return V::url($link) ? $link : null; + } + + /** + * Returns the path to the plugin's composer.json + */ + public function manifest(): string + { + return $this->root() . '/composer.json'; + } + + /** + * Returns the root where plugin assets are copied to + */ + public function mediaRoot(): string + { + return App::instance()->root('media') . '/plugins/' . $this->name(); + } + + /** + * Returns the base URL for plugin assets + */ + public function mediaUrl(): string + { + return App::instance()->url('media') . '/plugins/' . $this->name(); + } + + /** + * Returns the plugin name (`vendor/plugin`) + */ + public function name(): string + { + return $this->name; + } + + /** + * Returns a Kirby option value for this plugin + */ + public function option(string $key) + { + return $this->kirby()->option($this->prefix() . '.' . $key); + } + + /** + * Returns the option prefix (`vendor.plugin`) + */ + public function prefix(): string + { + return str_replace('/', '.', $this->name()); + } + + /** + * Returns the root where the plugin files are stored + */ + public function root(): string + { + return $this->root; + } + + /** + * Returns all available plugin metadata + */ + public function toArray(): array + { + return [ + 'authors' => $this->authors(), + 'description' => $this->description(), + 'name' => $this->name(), + 'license' => $this->license(), + 'link' => $this->link(), + 'root' => $this->root(), + 'version' => $this->version() + ]; + } + + /** + * Returns the update status object unless the + * update check has been disabled for the plugin + * @since 3.8.0 + * + * @param array|null $data Custom override for the getkirby.com update data + */ + public function updateStatus(array|null $data = null): UpdateStatus|null + { + if ($this->updateStatus !== null) { + return $this->updateStatus; + } + + $kirby = $this->kirby(); + $option = $kirby->option('updates.plugins'); + + // specific configuration per plugin + if (is_array($option) === true) { + // filter all option values by glob match + $option = A::filter( + $option, + fn ($value, $key) => fnmatch($key, $this->name()) === true + ); + + // sort the matches by key length (with longest key first) + $keys = array_map('strlen', array_keys($option)); + array_multisort($keys, SORT_DESC, $option); + + if (count($option) > 0) { + // use the first and therefore longest key (= most specific match) + $option = reset($option); + } else { + // fallback to the default option value + $option = true; + } + } + + $option ??= $kirby->option('updates') ?? true; + + if ($option !== true) { + return null; + } + + return $this->updateStatus = new UpdateStatus($this, false, $data); + } + + /** + * Checks if the name follows the required pattern + * and throws an exception if not + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function validateName(string $name): void + { + if (preg_match('!^[a-z0-9-]+\/[a-z0-9-]+$!i', $name) !== 1) { + throw new InvalidArgumentException('The plugin name must follow the format "a-z0-9-/a-z0-9-"'); + } + } + + /** + * Returns the normalized version number + * from the composer.json file + */ + public function version(): string|null + { + $composerName = $this->info()['name'] ?? null; + $version = $this->info()['version'] ?? null; + + try { + // if plugin doesn't have version key in composer.json file + // try to get version from "vendor/composer/installed.php" + $version ??= InstalledVersions::getPrettyVersion($composerName); + } catch (Throwable) { + return null; + } + + if ( + is_string($version) !== true || + $version === '' || + Str::endsWith($version, '+no-version-set') + ) { + return null; + } + + // normalize the version number to be without leading `v` + $version = ltrim($version, 'vV'); + + // ensure that the version number now starts with a digit + if (preg_match('/^[0-9]/', $version) !== 1) { + return null; + } + + return $version; + } +} diff --git a/kirby/src/Cms/PluginAsset.php b/kirby/src/Cms/PluginAsset.php new file mode 100644 index 0000000..f5f7f69 --- /dev/null +++ b/kirby/src/Cms/PluginAsset.php @@ -0,0 +1,120 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PluginAsset +{ + public function __construct( + protected string $path, + protected string $root, + protected Plugin $plugin + ) { + } + + public function extension(): string + { + return F::extension($this->path()); + } + + public function filename(): string + { + return F::filename($this->path()); + } + + /** + * Create a unique media hash + */ + public function mediaHash(): string + { + return crc32($this->filename()) . '-' . $this->modified(); + } + + /** + * Absolute path to the asset file in the media folder + */ + public function mediaRoot(): string + { + return $this->plugin()->mediaRoot() . '/' . $this->mediaHash() . '/' . $this->path(); + } + + /** + * Public accessible url path for the asset + */ + public function mediaUrl(): string + { + return $this->plugin()->mediaUrl() . '/' . $this->mediaHash() . '/' . $this->path(); + } + + /** + * Timestamp when asset file was last modified + */ + public function modified(): int|false + { + return F::modified($this->root()); + } + + public function path(): string + { + return $this->path; + } + + public function plugin(): Plugin + { + return $this->plugin; + } + + /** + * Publishes the asset file to the plugin's media folder + * by creating a symlink + */ + public function publish(): void + { + F::link($this->root(), $this->mediaRoot(), 'symlink'); + } + + /** + * @internal + * @since 4.0.0 + * @deprecated 4.0.0 + * @codeCoverageIgnore + */ + public function publishAt(string $path): void + { + $media = $this->plugin()->mediaRoot() . '/' . $path; + F::link($this->root(), $media, 'symlink'); + } + + public function root(): string + { + return $this->root; + } + + /** + * @see ::mediaUrl + */ + public function url(): string + { + return $this->mediaUrl(); + } + + /** + * @see ::url + */ + public function __toString(): string + { + return $this->url(); + } +} diff --git a/kirby/src/Cms/PluginAssets.php b/kirby/src/Cms/PluginAssets.php new file mode 100644 index 0000000..45c415f --- /dev/null +++ b/kirby/src/Cms/PluginAssets.php @@ -0,0 +1,184 @@ + + * @author Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PluginAssets extends Collection +{ + /** + * Clean old/deprecated assets on every resolve + */ + public static function clean(string $pluginName): void + { + if ($plugin = App::instance()->plugin($pluginName)) { + $media = $plugin->mediaRoot(); + $assets = $plugin->assets(); + + // get all media files + $files = Dir::index($media, true); + + // get all active assets' paths from the plugin + $active = $assets->values( + function ($asset) { + $path = $asset->mediaHash() . '/' . $asset->path(); + $paths = []; + $parts = explode('/', $path); + + // collect all path segments + // (e.g. foo/, foo/bar/, foo/bar/baz.css) for the asset + for ($i = 1, $max = count($parts); $i <= $max; $i++) { + $paths[] = implode('/', array_slice($parts, 0, $i)); + + // TODO: remove when media hash is enforced as mandatory + $paths[] = implode('/', array_slice($parts, 1, $i)); + } + + return $paths; + } + ); + + // flatten the array and remove duplicates + $active = array_unique(array_merge(...array_values($active))); + + // get outdated media files by comparing all + // files in the media folder against the set of asset paths + $stale = array_diff($files, $active); + + foreach ($stale as $file) { + $root = $media . '/' . $file; + + if (is_file($root) === true) { + F::remove($root); + } else { + Dir::remove($root); + } + } + } + } + + /** + * Filters assets collection by CSS files + */ + public function css(): static + { + return $this->filter(fn ($asset) => $asset->extension() === 'css'); + } + + /** + * Creates a new collection for the plugin's assets + * by considering the plugin's `asset` extension + * (and `assets` directory as fallback) + */ + public static function factory(Plugin $plugin): static + { + // get assets defined in the plugin extension + if ($assets = $plugin->extends()['assets'] ?? null) { + if ($assets instanceof Closure) { + $assets = $assets(); + } + + // normalize array: use relative path as + // key when no key is defined + foreach ($assets as $key => $root) { + if (is_int($key) === true) { + unset($assets[$key]); + $path = Str::after($root, $plugin->root() . '/'); + $assets[$path] = $root; + } + } + } + + // fallback: if no assets are defined in the plugin extension, + // use all files in the plugin's `assets` directory + if ($assets === null) { + $assets = []; + $root = $plugin->root() . '/assets'; + + foreach (Dir::index($root, true) as $path) { + if (is_file($root . '/' . $path) === true) { + $assets[$path] = $root . '/' . $path; + } + } + } + + $collection = new static([], $plugin); + + foreach ($assets as $path => $root) { + $collection->data[$path] = new PluginAsset($path, $root, $plugin); + } + + return $collection; + } + + /** + * Filters assets collection by JavaScript files + */ + public function js(): static + { + return $this->filter(fn ($asset) => $asset->extension() === 'js'); + } + + public function plugin(): Plugin + { + return $this->parent; + } + + /** + * Create a symlink for a plugin asset and + * return the public URL + */ + public static function resolve( + string $pluginName, + string $hash, + string $path + ): Response|null { + if ($plugin = App::instance()->plugin($pluginName)) { + // do some spring cleaning for older files + static::clean($pluginName); + + // @codeCoverageIgnoreStart + // TODO: deprecated media URL without hash + if (empty($hash) === true) { + $asset = $plugin->asset($path); + $asset->publishAt($path); + return Response::file($asset->root()); + } + + // TODO: deprecated media URL with hash (but path) + if ($asset = $plugin->asset($hash . '/' . $path)) { + $asset->publishAt($hash . '/' . $path); + return Response::file($asset->root()); + } + // @codeCoverageIgnoreEnd + + if ($asset = $plugin->asset($path)) { + if ($asset->mediaHash() === $hash) { + // create a symlink if possible + $asset->publish(); + + // return the file response + return Response::file($asset->root()); + } + } + } + + return null; + } +} diff --git a/kirby/src/Cms/R.php b/kirby/src/Cms/R.php new file mode 100644 index 0000000..312fc2b --- /dev/null +++ b/kirby/src/Cms/R.php @@ -0,0 +1,23 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class R extends Facade +{ + public static function instance(): Request + { + return App::instance()->request(); + } +} diff --git a/kirby/src/Cms/Responder.php b/kirby/src/Cms/Responder.php new file mode 100644 index 0000000..e99ce56 --- /dev/null +++ b/kirby/src/Cms/Responder.php @@ -0,0 +1,406 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Responder +{ + /** + * Timestamp when the response expires + * in Kirby's cache + */ + protected int|null $expires = null; + + /** + * HTTP status code + */ + protected int|null $code = null; + + /** + * Response body + */ + protected string|null $body = null; + + /** + * Flag that defines whether the current + * response can be cached by Kirby's cache + */ + protected bool $cache = true; + + /** + * HTTP headers + */ + protected array $headers = []; + + /** + * Content type + */ + protected string|null $type = null; + + /** + * Flag that defines whether the current + * response uses the HTTP `Authorization` + * request header + */ + protected bool $usesAuth = false; + + /** + * List of cookie names the response + * relies on + */ + protected array $usesCookies = []; + + /** + * Creates and sends the response + */ + public function __toString(): string + { + return (string)$this->send(); + } + + /** + * Setter and getter for the response body + * + * @return $this|string|null + */ + public function body(string $body = null): static|string|null + { + if ($body === null) { + return $this->body; + } + + $this->body = $body; + return $this; + } + + /** + * Setter and getter for the flag that defines + * whether the current response can be cached + * by Kirby's cache + * @since 3.5.5 + * + * @return bool|$this + */ + public function cache(bool|null $cache = null): bool|static + { + if ($cache === null) { + // never ever cache private responses + if (static::isPrivate($this->usesAuth(), $this->usesCookies()) === true) { + return false; + } + + return $this->cache; + } + + $this->cache = $cache; + return $this; + } + + /** + * Setter and getter for the flag that defines + * whether the current response uses the HTTP + * `Authorization` request header + * @since 3.7.0 + * + * @return bool|$this + */ + public function usesAuth(bool|null $usesAuth = null): bool|static + { + if ($usesAuth === null) { + return $this->usesAuth; + } + + $this->usesAuth = $usesAuth; + return $this; + } + + /** + * Setter for a cookie name that is + * used by the response + * @since 3.7.0 + */ + public function usesCookie(string $name): void + { + // only add unique names + if (in_array($name, $this->usesCookies) === false) { + $this->usesCookies[] = $name; + } + } + + /** + * Setter and getter for the list of cookie + * names the response relies on + * @since 3.7.0 + * + * @return array|$this + */ + public function usesCookies(array|null $usesCookies = null) + { + if ($usesCookies === null) { + return $this->usesCookies; + } + + $this->usesCookies = $usesCookies; + return $this; + } + + /** + * Setter and getter for the cache expiry + * timestamp for Kirby's cache + * @since 3.5.5 + * + * @param int|string|null $expires Timestamp, number of minutes or time string to parse + * @param bool $override If `true`, the already defined timestamp will be overridden + * @return int|null|$this + */ + public function expires($expires = null, bool $override = false) + { + // getter + if ($expires === null && $override === false) { + return $this->expires; + } + + // explicit un-setter + if ($expires === null) { + $this->expires = null; + return $this; + } + + // normalize the value to an integer timestamp + if (is_int($expires) === true && $expires < 1000000000) { + // number of minutes + $expires = time() + ($expires * 60); + } elseif (is_int($expires) !== true) { + // time string + $parsedExpires = strtotime($expires); + + if (is_int($parsedExpires) !== true) { + throw new InvalidArgumentException('Invalid time string "' . $expires . '"'); + } + + $expires = $parsedExpires; + } + + // by default only ever *reduce* the cache expiry time + if ( + $override === true || + $this->expires === null || + $expires < $this->expires + ) { + $this->expires = $expires; + } + + return $this; + } + + /** + * Setter and getter for the status code + * + * @return int|$this + */ + public function code(int $code = null) + { + if ($code === null) { + return $this->code; + } + + $this->code = $code; + return $this; + } + + /** + * Construct response from an array + */ + public function fromArray(array $response): void + { + $this->body($response['body'] ?? null); + $this->cache($response['cache'] ?? null); + $this->code($response['code'] ?? null); + $this->expires($response['expires'] ?? null); + $this->headers($response['headers'] ?? null); + $this->type($response['type'] ?? null); + $this->usesAuth($response['usesAuth'] ?? null); + $this->usesCookies($response['usesCookies'] ?? null); + } + + /** + * Setter and getter for a single header + * + * @param string|false|null $value + * @param bool $lazy If `true`, an existing header value is not overridden + * @return string|$this + */ + public function header(string $key, $value = null, bool $lazy = false) + { + if ($value === null) { + return $this->headers()[$key] ?? null; + } + + if ($value === false) { + unset($this->headers[$key]); + return $this; + } + + if ($lazy === true && isset($this->headers[$key]) === true) { + return $this; + } + + $this->headers[$key] = $value; + return $this; + } + + /** + * Setter and getter for all headers + * + * @return array|$this + */ + public function headers(array $headers = null) + { + if ($headers === null) { + $injectedHeaders = []; + + if (static::isPrivate($this->usesAuth(), $this->usesCookies()) === true) { + // never ever cache private responses + $injectedHeaders['Cache-Control'] = 'no-store, private'; + } else { + // the response is public, but it may + // vary based on request headers + $vary = []; + + if ($this->usesAuth() === true) { + $vary[] = 'Authorization'; + } + + if ($this->usesCookies() !== []) { + $vary[] = 'Cookie'; + } + + if ($vary !== []) { + $injectedHeaders['Vary'] = implode(', ', $vary); + } + } + + // lazily inject (never override custom headers) + return array_merge($injectedHeaders, $this->headers); + } + + $this->headers = $headers; + return $this; + } + + /** + * Shortcut to configure a json response + * + * @return string|$this + */ + public function json(array $json = null) + { + if ($json !== null) { + $this->body(json_encode($json)); + } + + return $this->type('application/json'); + } + + /** + * Shortcut to create a redirect response + * + * @return $this + */ + public function redirect( + string|null $location = null, + int|null $code = null + ) { + $location = Url::to($location ?? '/'); + $location = Url::unIdn($location); + + return $this + ->header('Location', (string)$location) + ->code($code ?? 302); + } + + /** + * Creates and returns the response object from the config + */ + public function send(string $body = null): Response + { + if ($body !== null) { + $this->body($body); + } + + return new Response($this->toArray()); + } + + /** + * Converts the response configuration + * to an array + */ + public function toArray(): array + { + // the `cache`, `expires`, `usesAuth` and `usesCookies` + // values are explicitly *not* serialized as they are + // volatile and not to be exported + return [ + 'body' => $this->body(), + 'code' => $this->code(), + 'headers' => $this->headers(), + 'type' => $this->type(), + ]; + } + + /** + * Setter and getter for the content type + * + * @return string|$this + */ + public function type(string $type = null) + { + if ($type === null) { + return $this->type; + } + + if (Str::contains($type, '/') === false) { + $type = Mime::fromExtension($type); + } + + $this->type = $type; + return $this; + } + + /** + * Checks whether the response needs to be exempted from + * all caches due to using dynamic data based on auth + * and/or cookies; the request data only matters if it + * is actually used/relied on by the response + * @since 3.7.0 + * @internal + */ + public static function isPrivate(bool $usesAuth, array $usesCookies): bool + { + $kirby = App::instance(); + + if ($usesAuth === true && $kirby->request()->hasAuth() === true) { + return true; + } + + foreach ($usesCookies as $cookie) { + if (isset($_COOKIE[$cookie]) === true) { + return true; + } + } + + return false; + } +} diff --git a/kirby/src/Cms/Response.php b/kirby/src/Cms/Response.php new file mode 100644 index 0000000..5a21bc6 --- /dev/null +++ b/kirby/src/Cms/Response.php @@ -0,0 +1,28 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Response extends \Kirby\Http\Response +{ + /** + * Adjusted redirect creation which + * parses locations with the Url::to method + * first. + */ + public static function redirect( + string $location = '/', + int $code = 302 + ): static { + return parent::redirect(Url::to($location), $code); + } +} diff --git a/kirby/src/Cms/Role.php b/kirby/src/Cms/Role.php new file mode 100644 index 0000000..3579b62 --- /dev/null +++ b/kirby/src/Cms/Role.php @@ -0,0 +1,149 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Role +{ + protected string|null $description; + protected string $name; + protected Permissions $permissions; + protected string|null $title; + + public function __construct(array $props) + { + $this->name = $props['name']; + $this->permissions = new Permissions($props['permissions'] ?? null); + $title = $props['title'] ?? null; + $this->title = I18n::translate($title) ?? $title; + $description = $props['description'] ?? null; + $this->description = I18n::translate($description) ?? $description; + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + public function __toString(): string + { + return $this->name(); + } + + public static function admin(array $inject = []): static + { + try { + return static::load('admin'); + } catch (Exception) { + return static::factory(static::defaults()['admin'], $inject); + } + } + + protected static function defaults(): array + { + return [ + 'admin' => [ + 'name' => 'admin', + 'description' => I18n::translate('role.admin.description'), + 'title' => I18n::translate('role.admin.title'), + 'permissions' => true, + ], + 'nobody' => [ + 'name' => 'nobody', + 'description' => I18n::translate('role.nobody.description'), + 'title' => I18n::translate('role.nobody.title'), + 'permissions' => false, + ] + ]; + } + + public function description(): string|null + { + return $this->description; + } + + public static function factory(array $props, array $inject = []): static + { + return new static($props + $inject); + } + + public function id(): string + { + return $this->name(); + } + + public function isAdmin(): bool + { + return $this->name() === 'admin'; + } + + public function isNobody(): bool + { + return $this->name() === 'nobody'; + } + + public static function load(string $file, array $inject = []): static + { + $data = Data::read($file); + $data['name'] = F::name($file); + + return static::factory($data, $inject); + } + + public function name(): string + { + return $this->name; + } + + public static function nobody(array $inject = []): static + { + try { + return static::load('nobody'); + } catch (Exception) { + return static::factory(static::defaults()['nobody'], $inject); + } + } + + public function permissions(): Permissions + { + return $this->permissions; + } + + public function title(): string + { + return $this->title ??= ucfirst($this->name()); + } + + /** + * Converts the most important role + * properties to an array + */ + public function toArray(): array + { + return [ + 'description' => $this->description(), + 'id' => $this->id(), + 'name' => $this->name(), + 'permissions' => $this->permissions()->toArray(), + 'title' => $this->title(), + ]; + } +} diff --git a/kirby/src/Cms/Roles.php b/kirby/src/Cms/Roles.php new file mode 100644 index 0000000..11be6c9 --- /dev/null +++ b/kirby/src/Cms/Roles.php @@ -0,0 +1,140 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Roles extends Collection +{ + /** + * All registered roles methods + */ + public static array $methods = []; + + /** + * Returns a filtered list of all + * roles that can be created by the + * current user + * + * @return $this|static + * @throws \Exception + */ + public function canBeChanged(): static + { + if (App::instance()->user()) { + return $this->filter(function ($role) { + $newUser = new User([ + 'email' => 'test@getkirby.com', + 'role' => $role->id() + ]); + + return $newUser->permissions()->can('changeRole'); + }); + } + + return $this; + } + + /** + * Returns a filtered list of all + * roles that can be created by the + * current user + * + * @return $this|static + * @throws \Exception + */ + public function canBeCreated(): static + { + if (App::instance()->user()) { + return $this->filter(function ($role) { + $newUser = new User([ + 'email' => 'test@getkirby.com', + 'role' => $role->id() + ]); + + return $newUser->permissions()->can('create'); + }); + } + + return $this; + } + + public static function factory(array $roles, array $inject = []): static + { + $collection = new static(); + + // read all user blueprints + foreach ($roles as $props) { + $role = Role::factory($props, $inject); + $collection->set($role->id(), $role); + } + + // always include the admin role + if ($collection->find('admin') === null) { + $collection->set('admin', Role::admin()); + } + + // return the collection sorted by name + return $collection->sort('name', 'asc'); + } + + public static function load(string $root = null, array $inject = []): static + { + $kirby = App::instance(); + $roles = new static(); + + // load roles from plugins + foreach ($kirby->extensions('blueprints') as $blueprintName => $blueprint) { + if (substr($blueprintName, 0, 6) !== 'users/') { + continue; + } + + // callback option can be return array or blueprint file path + if (is_callable($blueprint) === true) { + $blueprint = $blueprint($kirby); + } + + if (is_array($blueprint) === true) { + $role = Role::factory($blueprint, $inject); + } else { + $role = Role::load($blueprint, $inject); + } + + $roles->set($role->id(), $role); + } + + // load roles from directory + if ($root !== null) { + foreach (glob($root . '/*.yml') as $file) { + $filename = basename($file); + + if ($filename === 'default.yml') { + continue; + } + + $role = Role::load($file, $inject); + $roles->set($role->id(), $role); + } + } + + // always include the admin role + if ($roles->find('admin') === null) { + $roles->set('admin', Role::admin($inject)); + } + + // return the collection sorted by name + return $roles->sort('name', 'asc'); + } +} diff --git a/kirby/src/Cms/S.php b/kirby/src/Cms/S.php new file mode 100644 index 0000000..260ee30 --- /dev/null +++ b/kirby/src/Cms/S.php @@ -0,0 +1,23 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class S extends Facade +{ + public static function instance(): Session + { + return App::instance()->session(); + } +} diff --git a/kirby/src/Cms/Search.php b/kirby/src/Cms/Search.php new file mode 100644 index 0000000..14add5c --- /dev/null +++ b/kirby/src/Cms/Search.php @@ -0,0 +1,51 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Search +{ + public static function files( + string $query = null, + array $params = [] + ): Files { + return App::instance()->site()->index()->files()->search($query, $params); + } + + /** + * Native search method to search for anything within the collection + */ + public static function collection( + Collection $collection, + string|null $query = null, + string|array $params = [] + ): Collection { + $kirby = App::instance(); + return ($kirby->component('search'))($kirby, $collection, $query, $params); + } + + public static function pages( + string $query = null, + array $params = [] + ): Pages { + return App::instance()->site()->index()->search($query, $params); + } + + public static function users( + string $query = null, + array $params = [] + ): Users { + return App::instance()->users()->search($query, $params); + } +} diff --git a/kirby/src/Cms/Section.php b/kirby/src/Cms/Section.php new file mode 100644 index 0000000..56402be --- /dev/null +++ b/kirby/src/Cms/Section.php @@ -0,0 +1,86 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Section extends Component +{ + /** + * Registry for all component mixins + */ + public static array $mixins = []; + + /** + * Registry for all component types + */ + public static array $types = []; + + /** + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function __construct(string $type, array $attrs = []) + { + if (isset($attrs['model']) === false) { + throw new InvalidArgumentException('Undefined section model'); + } + + if ($attrs['model'] instanceof ModelWithContent === false) { + throw new InvalidArgumentException('Invalid section model'); + } + + // use the type as fallback for the name + $attrs['name'] ??= $type; + $attrs['type'] = $type; + + parent::__construct($type, $attrs); + } + + public function errors(): array + { + if (array_key_exists('errors', $this->methods) === true) { + return $this->methods['errors']->call($this); + } + + return $this->errors ?? []; + } + + public function kirby(): App + { + return $this->model()->kirby(); + } + + public function model(): ModelWithContent + { + return $this->model; + } + + public function toArray(): array + { + $array = parent::toArray(); + + unset($array['model']); + + return $array; + } + + public function toResponse(): array + { + return array_merge([ + 'status' => 'ok', + 'code' => 200, + 'name' => $this->name, + 'type' => $this->type + ], $this->toArray()); + } +} diff --git a/kirby/src/Cms/Site.php b/kirby/src/Cms/Site.php new file mode 100644 index 0000000..cab166d --- /dev/null +++ b/kirby/src/Cms/Site.php @@ -0,0 +1,508 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Site extends ModelWithContent +{ + use HasChildren; + use HasFiles; + use HasMethods; + use SiteActions; + + public const CLASS_ALIAS = 'site'; + + /** + * The SiteBlueprint object + */ + protected SiteBlueprint|null $blueprint = null; + + /** + * The error page object + */ + protected Page|null $errorPage = null; + + /** + * The id of the error page, which is + * fetched in the errorPage method + */ + protected string $errorPageId; + + /** + * The home page object + */ + protected Page|null $homePage = null; + + /** + * The id of the home page, which is + * fetched in the errorPage method + */ + protected string $homePageId; + + /** + * Cache for the inventory array + */ + protected array|null $inventory = null; + + /** + * The current page object + */ + protected Page|null $page; + + /** + * The absolute path to the site directory + */ + protected string $root; + + /** + * The page url + */ + protected string|null $url; + + /** + * Creates a new Site object + */ + public function __construct(array $props = []) + { + parent::__construct($props); + + $this->errorPageId = $props['errorPageId'] ?? 'error'; + $this->homePageId = $props['homePageId'] ?? 'home'; + $this->page = $props['page'] ?? null; + $this->url = $props['url'] ?? null; + + $this->setBlueprint($props['blueprint'] ?? null); + $this->setChildren($props['children'] ?? null); + $this->setDrafts($props['drafts'] ?? null); + $this->setFiles($props['files'] ?? null); + } + + /** + * Modified getter to also return fields + * from the content + */ + public function __call(string $method, array $arguments = []): mixed + { + // public property access + if (isset($this->$method) === true) { + return $this->$method; + } + + // site methods + if ($this->hasMethod($method)) { + return $this->callMethod($method, $arguments); + } + + // return site content otherwise + return $this->content()->get($method); + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return array_merge($this->toArray(), [ + 'content' => $this->content(), + 'children' => $this->children(), + 'files' => $this->files(), + ]); + } + + /** + * Makes it possible to convert the site model + * to a string. Mostly useful for debugging. + */ + public function __toString(): string + { + return $this->url(); + } + + /** + * Returns the url to the api endpoint + * @internal + */ + public function apiUrl(bool $relative = false): string + { + if ($relative === true) { + return 'site'; + } + + return $this->kirby()->url('api') . '/site'; + } + + /** + * Returns the blueprint object + */ + public function blueprint(): SiteBlueprint + { + if ($this->blueprint instanceof SiteBlueprint) { + return $this->blueprint; + } + + return $this->blueprint = SiteBlueprint::factory('site', null, $this); + } + + /** + * Builds a breadcrumb collection + */ + public function breadcrumb(): Pages + { + // get all parents and flip the order + $crumb = $this->page()->parents()->flip(); + + // add the home page + $crumb->prepend($this->homePage()->id(), $this->homePage()); + + // add the active page + $crumb->append($this->page()->id(), $this->page()); + + return $crumb; + } + + /** + * Prepares the content for the write method + * @internal + */ + public function contentFileData( + array $data, + string|null $languageCode = null + ): array { + return A::prepend($data, ['title' => $data['title'] ?? null]); + } + + /** + * Filename for the content file + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + public function contentFileName(): string + { + Helpers::deprecated('The internal $model->contentFileName() method has been deprecated. Please let us know via a GitHub issue if you need this method and tell us your use case.', 'model-content-file'); + return 'site'; + } + + /** + * Returns the error page object + */ + public function errorPage(): Page|null + { + return $this->errorPage ??= $this->find($this->errorPageId()); + } + + /** + * Returns the global error page id + * @internal + */ + public function errorPageId(): string + { + return $this->errorPageId ?? 'error'; + } + + /** + * Checks if the site exists on disk + */ + public function exists(): bool + { + return is_dir($this->root()) === true; + } + + /** + * Returns the home page object + */ + public function homePage(): Page|null + { + return $this->homePage ??= $this->find($this->homePageId()); + } + + /** + * Returns the global home page id + * @internal + */ + public function homePageId(): string + { + return $this->homePageId ?? 'home'; + } + + /** + * Creates an inventory of all files + * and children in the site directory + * @internal + */ + public function inventory(): array + { + if ($this->inventory !== null) { + return $this->inventory; + } + + $kirby = $this->kirby(); + + return $this->inventory = Dir::inventory( + $this->root(), + $kirby->contentExtension(), + $kirby->contentIgnore(), + $kirby->multilang() + ); + } + + /** + * Compares the current object with the given site object + * + * @param mixed $site + */ + public function is($site): bool + { + if ($site instanceof self === false) { + return false; + } + + return $this === $site; + } + + /** + * Returns the root to the media folder for the site + * @internal + */ + public function mediaRoot(): string + { + return $this->kirby()->root('media') . '/site'; + } + + /** + * The site's base url for any files + * @internal + */ + public function mediaUrl(): string + { + return $this->kirby()->url('media') . '/site'; + } + + /** + * Gets the last modification date of all pages + * in the content folder. + */ + public function modified( + string|null $format = null, + string|null $handler = null + ): int|string { + return Dir::modified($this->root(), $format, $handler); + } + + /** + * Returns the current page if `$path` + * is not specified. Otherwise it will try + * to find a page by the given path. + * + * If no current page is set with the page + * prop, the home page will be returned if + * it can be found. (see `Site::homePage()`) + * + * @param string|null $path omit for current page, + * otherwise e.g. `notes/across-the-ocean` + */ + public function page(string|null $path = null): Page|null + { + if ($path !== null) { + return $this->find($path); + } + + if ($this->page instanceof Page) { + return $this->page; + } + + try { + return $this->page = $this->homePage(); + } catch (LogicException) { + return $this->page = null; + } + } + + /** + * Alias for `Site::children()` + */ + public function pages(): Pages + { + return $this->children(); + } + + /** + * Returns the panel info object + */ + public function panel(): Panel + { + return new Panel($this); + } + + /** + * Returns the permissions object for this site + */ + public function permissions(): SitePermissions + { + return new SitePermissions($this); + } + + /** + * Preview Url + * @internal + */ + public function previewUrl(): string|null + { + $preview = $this->blueprint()->preview(); + + if ($preview === false) { + return null; + } + + if ($preview === true) { + $url = $this->url(); + } else { + $url = $preview; + } + + return $url; + } + + /** + * Returns the absolute path to the content directory + */ + public function root(): string + { + return $this->root ??= $this->kirby()->root('content'); + } + + /** + * Returns the SiteRules class instance + * which is being used in various methods + * to check for valid actions and input. + */ + protected function rules(): SiteRules + { + return new SiteRules(); + } + + /** + * Search all pages in the site + */ + public function search(string|null $query = null, string|array $params = []): Pages + { + return $this->index()->search($query, $params); + } + + /** + * Sets the Blueprint object + * + * @return $this + */ + protected function setBlueprint(array|null $blueprint = null): static + { + if ($blueprint !== null) { + $blueprint['model'] = $this; + $this->blueprint = new SiteBlueprint($blueprint); + } + + return $this; + } + + /** + * Converts the most important site + * properties to an array + */ + public function toArray(): array + { + return array_merge(parent::toArray(), [ + 'children' => $this->children()->keys(), + 'errorPage' => $this->errorPage()?->id() ?? false, + 'files' => $this->files()->keys(), + 'homePage' => $this->homePage()?->id() ?? false, + 'page' => $this->page()?->id() ?? false, + 'title' => $this->title()->value(), + 'url' => $this->url(), + ]); + } + + /** + * Returns the Url + */ + public function url(string|null $language = null): string + { + if ($language !== null || $this->kirby()->multilang() === true) { + return $this->urlForLanguage($language); + } + + return $this->url ?? $this->kirby()->url(); + } + + /** + * Returns the translated url + * @internal + */ + public function urlForLanguage( + string|null $languageCode = null, + array|null $options = null + ): string { + if ($language = $this->kirby()->language($languageCode)) { + return $language->url(); + } + + return $this->kirby()->url(); + } + + /** + * Sets the current page by + * id or page object and + * returns the current page + * @internal + */ + public function visit( + string|Page $page, + string|null $languageCode = null + ): Page { + if ($languageCode !== null) { + $this->kirby()->setCurrentTranslation($languageCode); + $this->kirby()->setCurrentLanguage($languageCode); + } + + // convert ids to a Page object + if (is_string($page) === true) { + $page = $this->find($page); + } + + // handle invalid pages + if ($page instanceof Page === false) { + throw new InvalidArgumentException('Invalid page object'); + } + + // set and return the current active page + return $this->page = $page; + } + + /** + * Checks if any content of the site has been + * modified after the given unix timestamp + * This is mainly used to auto-update the cache + */ + public function wasModifiedAfter(int $time): bool + { + return Dir::wasModifiedAfter($this->root(), $time); + } +} diff --git a/kirby/src/Cms/SiteActions.php b/kirby/src/Cms/SiteActions.php new file mode 100644 index 0000000..8f86eb4 --- /dev/null +++ b/kirby/src/Cms/SiteActions.php @@ -0,0 +1,96 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +trait SiteActions +{ + /** + * Commits a site action, by following these steps + * + * 1. checks the action rules + * 2. sends the before hook + * 3. commits the store action + * 4. sends the after hook + * 5. returns the result + */ + protected function commit( + string $action, + array $arguments, + Closure $callback + ): mixed { + $old = $this->hardcopy(); + $kirby = $this->kirby(); + $argumentValues = array_values($arguments); + + $this->rules()->$action(...$argumentValues); + $kirby->trigger('site.' . $action . ':before', $arguments); + + $result = $callback(...$argumentValues); + + $kirby->trigger('site.' . $action . ':after', ['newSite' => $result, 'oldSite' => $old]); + + $kirby->cache('pages')->flush(); + return $result; + } + + /** + * Change the site title + */ + public function changeTitle( + string $title, + string $languageCode = null + ): static { + $site = $this; + $title = trim($title); + $arguments = compact('site', 'title', 'languageCode'); + + return $this->commit('changeTitle', $arguments, function ($site, $title, $languageCode) { + return $site->save(['title' => $title], $languageCode); + }); + } + + /** + * Creates a main page + */ + public function createChild(array $props): Page + { + $props = array_merge($props, [ + 'url' => null, + 'num' => null, + 'parent' => null, + 'site' => $this, + ]); + + return Page::create($props); + } + + /** + * Clean internal caches + * + * @return $this + */ + public function purge(): static + { + parent::purge(); + + $this->blueprint = null; + $this->children = null; + $this->childrenAndDrafts = null; + $this->drafts = null; + $this->files = null; + $this->inventory = null; + + return $this; + } +} diff --git a/kirby/src/Cms/SiteBlueprint.php b/kirby/src/Cms/SiteBlueprint.php new file mode 100644 index 0000000..5f8b751 --- /dev/null +++ b/kirby/src/Cms/SiteBlueprint.php @@ -0,0 +1,56 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class SiteBlueprint extends Blueprint +{ + /** + * Creates a new page blueprint object + * with the given props + */ + public function __construct(array $props) + { + parent::__construct($props); + + // normalize all available page options + $this->props['options'] = $this->normalizeOptions( + $this->props['options'] ?? true, + // defaults + [ + 'changeTitle' => null, + 'update' => null, + ], + // aliases + [ + 'title' => 'changeTitle', + ] + ); + } + + /** + * Returns the preview settings + * The preview setting controls the "Open" + * button in the panel and redirects it to a + * different URL if necessary. + */ + public function preview(): string|bool + { + $preview = $this->props['options']['preview'] ?? true; + + if (is_string($preview) === true) { + return $this->model->toString($preview); + } + + return $preview; + } +} diff --git a/kirby/src/Cms/SitePermissions.php b/kirby/src/Cms/SitePermissions.php new file mode 100644 index 0000000..8e58415 --- /dev/null +++ b/kirby/src/Cms/SitePermissions.php @@ -0,0 +1,17 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class SitePermissions extends ModelPermissions +{ + protected string $category = 'site'; +} diff --git a/kirby/src/Cms/SiteRules.php b/kirby/src/Cms/SiteRules.php new file mode 100644 index 0000000..08da997 --- /dev/null +++ b/kirby/src/Cms/SiteRules.php @@ -0,0 +1,52 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class SiteRules +{ + /** + * Validates if the site title can be changed + * + * @throws \Kirby\Exception\InvalidArgumentException If the title is empty + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the title + */ + public static function changeTitle(Site $site, string $title): bool + { + if ($site->permissions()->changeTitle() !== true) { + throw new PermissionException(['key' => 'site.changeTitle.permission']); + } + + if (Str::length($title) === 0) { + throw new InvalidArgumentException(['key' => 'site.changeTitle.empty']); + } + + return true; + } + + /** + * Validates if the site can be updated + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to update the site + */ + public static function update(Site $site, array $content = []): bool + { + if ($site->permissions()->update() !== true) { + throw new PermissionException(['key' => 'site.update.permission']); + } + + return true; + } +} diff --git a/kirby/src/Cms/Structure.php b/kirby/src/Cms/Structure.php new file mode 100644 index 0000000..9721869 --- /dev/null +++ b/kirby/src/Cms/Structure.php @@ -0,0 +1,49 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Structure extends Items +{ + public const ITEM_CLASS = StructureObject::class; + + /** + * All registered structure methods + */ + public static array $methods = []; + + /** + * Creates a new structure collection from a + * an array of item props + */ + public static function factory( + array $items = null, + array $params = [] + ): static { + // Bake-in index as ID for all items + // TODO: remove when adding UUID supports to Structures + if (is_array($items) === true) { + $items = array_map(function ($item, $index) { + if (is_array($item) === true) { + $item['id'] ??= $index; + } + return $item; + }, $items, array_keys($items)); + } + + return parent::factory($items, $params); + } +} diff --git a/kirby/src/Cms/StructureObject.php b/kirby/src/Cms/StructureObject.php new file mode 100644 index 0000000..9806b7d --- /dev/null +++ b/kirby/src/Cms/StructureObject.php @@ -0,0 +1,85 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class StructureObject extends Item +{ + use HasMethods; + + public const ITEMS_CLASS = Structure::class; + + protected Content $content; + + /** + * Creates a new StructureObject with the given props + */ + public function __construct(array $params = []) + { + parent::__construct($params); + + $this->content = new Content( + $params['content'] ?? $params['params'] ?? [], + $this->parent + ); + } + + /** + * Modified getter to also return fields + * from the object's content + */ + public function __call(string $method, array $args = []): mixed + { + // structure object methods + if ($this->hasMethod($method) === true) { + return $this->callMethod($method, $args); + } + + // public property access + if (isset($this->$method) === true) { + return $this->$method; + } + + return $this->content()->get($method); + } + + /** + * Returns the content + */ + public function content(): Content + { + return $this->content; + } + + /** + * Converts all fields in the object to a + * plain associative array. The id is + * injected from the parent into the array + * to make sure it's always present and + * not overloaded by the content. + */ + public function toArray(): array + { + return array_merge( + $this->content()->toArray(), + parent::toArray() + ); + } +} diff --git a/kirby/src/Cms/System.php b/kirby/src/Cms/System.php new file mode 100644 index 0000000..472c756 --- /dev/null +++ b/kirby/src/Cms/System.php @@ -0,0 +1,511 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class System +{ + // cache + protected License|null $license = null; + protected UpdateStatus|null $updateStatus = null; + + public function __construct(protected App $app) + { + // try to create all folders that could be missing + $this->init(); + } + + /** + * Check for a writable accounts folder + */ + public function accounts(): bool + { + return is_writable($this->app->root('accounts')) === true; + } + + /** + * Check for a writable content folder + */ + public function content(): bool + { + return is_writable($this->app->root('content')) === true; + } + + /** + * Check for an existing curl extension + */ + public function curl(): bool + { + return extension_loaded('curl') === true; + } + + /** + * Returns the URL to the file within a system folder + * if the file is located in the document + * root. Otherwise it will return null. + * + * @param string $folder 'git', 'content', 'site', 'kirby' + */ + public function exposedFileUrl(string $folder): string|null + { + if (!$url = $this->folderUrl($folder)) { + return null; + } + + switch ($folder) { + case 'content': + return $url . '/' . basename($this->app->site()->storage()->contentFile( + 'published', + 'default' + )); + case 'git': + return $url . '/config'; + case 'kirby': + return $url . '/composer.json'; + case 'site': + $root = $this->app->root('site'); + $files = glob($root . '/blueprints/*.yml'); + + if (empty($files) === true) { + $files = glob($root . '/templates/*.*'); + } + + if (empty($files) === true) { + $files = glob($root . '/snippets/*.*'); + } + + if (empty($files) === true || empty($files[0]) === true) { + return $url; + } + + $file = $files[0]; + $file = basename(dirname($file)) . '/' . basename($file); + + return $url . '/' . $file; + default: + return null; + } + } + + /** + * Returns the URL to a system folder + * if the folder is located in the document + * root. Otherwise it will return null. + * + * @param string $folder 'git', 'content', 'site', 'kirby' + */ + public function folderUrl(string $folder): string|null + { + $index = $this->app->root('index'); + $root = match ($folder) { + 'git' => $index . '/.git', + default => $this->app->root($folder) + }; + + if ( + $root === null || + is_dir($root) === false || + is_dir($index) === false + ) { + return null; + } + + $root = realpath($root); + $index = realpath($index); + + // windows + $root = str_replace('\\', '/', $root); + $index = str_replace('\\', '/', $index); + + // the folder is not within the document root? + if (Str::startsWith($root, $index) === false) { + return null; + } + + // get the path after the document root + $path = trim(Str::after($root, $index), '/'); + + // build the absolute URL to the folder + return Url::to($path); + } + + /** + * Returns the app's human-readable + * index URL without scheme + */ + public function indexUrl(): string + { + return $this->app->url('index', true) + ->setScheme(null) + ->setSlash(false) + ->toString(); + } + + /** + * Create the most important folders + * if they don't exist yet + * + * @throws \Kirby\Exception\PermissionException + */ + public function init(): void + { + // init /site/accounts + try { + Dir::make($this->app->root('accounts')); + } catch (Throwable) { + throw new PermissionException('The accounts directory could not be created'); + } + + // init /site/sessions + try { + Dir::make($this->app->root('sessions')); + } catch (Throwable) { + throw new PermissionException('The sessions directory could not be created'); + } + + // init /content + try { + Dir::make($this->app->root('content')); + } catch (Throwable) { + throw new PermissionException('The content directory could not be created'); + } + + // init /media + try { + Dir::make($this->app->root('media')); + } catch (Throwable) { + throw new PermissionException('The media directory could not be created'); + } + } + + /** + * Check if the Panel has 2FA activated + */ + public function is2FA(): bool + { + return ($this->loginMethods()['password']['2fa'] ?? null) === true; + } + + /** + * Check if the Panel has 2FA with TOTP activated + */ + public function is2FAWithTOTP(): bool + { + return + $this->is2FA() === true && + in_array('totp', $this->app->auth()->enabledChallenges()) === true; + } + + /** + * Check if the Panel is installable. + * On a public server the panel.install + * option must be explicitly set to true + * to get the installer up and running. + */ + public function isInstallable(): bool + { + return + $this->isLocal() === true || + $this->app->option('panel.install', false) === true; + } + + /** + * Check if Kirby is already installed + */ + public function isInstalled(): bool + { + return $this->app->users()->count() > 0; + } + + /** + * Check if this is a local installation + */ + public function isLocal(): bool + { + return $this->app->environment()->isLocal(); + } + + /** + * Check if all tests pass + */ + public function isOk(): bool + { + return in_array(false, array_values($this->status()), true) === false; + } + + /** + * Loads the license file and returns + * the license information if available + */ + public function license(): License + { + return $this->license ??= License::read(); + } + + /** + * Returns the configured UI modes for the login form + * with their respective options + * + * @throws \Kirby\Exception\InvalidArgumentException If the configuration is invalid + * (only in debug mode) + */ + public function loginMethods(): array + { + $default = ['password' => []]; + $methods = A::wrap($this->app->option('auth.methods', $default)); + + // normalize the syntax variants + $normalized = []; + $uses2fa = false; + foreach ($methods as $key => $value) { + if (is_int($key) === true) { + // ['password'] + $normalized[$value] = []; + } elseif ($value === true) { + // ['password' => true] + $normalized[$key] = []; + } else { + // ['password' => [...]] + $normalized[$key] = $value; + + if (isset($value['2fa']) === true && $value['2fa'] === true) { + $uses2fa = true; + } + } + } + + // 2FA must not be circumvented by code-based modes + foreach (['code', 'password-reset'] as $method) { + if ($uses2fa === true && isset($normalized[$method]) === true) { + unset($normalized[$method]); + + if ($this->app->option('debug') === true) { + $message = 'The "' . $method . '" login method cannot be enabled when 2FA is required'; + throw new InvalidArgumentException($message); + } + } + } + + // only one code-based mode can be active at once + if ( + isset($normalized['code']) === true && + isset($normalized['password-reset']) === true + ) { + unset($normalized['code']); + + if ($this->app->option('debug') === true) { + $message = 'The "code" and "password-reset" login methods cannot be enabled together'; + throw new InvalidArgumentException($message); + } + } + + return $normalized; + } + + /** + * Check for an existing mbstring extension + */ + public function mbString(): bool + { + return extension_loaded('mbstring') === true; + } + + /** + * Check for a writable media folder + */ + public function media(): bool + { + return is_writable($this->app->root('media')) === true; + } + + /** + * Check for a valid PHP version + */ + public function php(): bool + { + return + version_compare(PHP_VERSION, '8.1.0', '>=') === true && + version_compare(PHP_VERSION, '8.4.0', '<') === true; + } + + /** + * Returns a sorted collection of all + * installed plugins + */ + public function plugins(): Collection + { + $plugins = new Collection($this->app->plugins()); + return $plugins->sortBy('name', 'asc'); + } + + /** + * Validates the license key + * and adds it to the .license file in the config + * folder if possible. + * + * @throws \Kirby\Exception\Exception + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function register(string $license = null, string $email = null): bool + { + $license = new License( + code: $license, + domain: $this->indexUrl(), + email: $email, + ); + + $this->license = $license->register(); + return true; + } + + /** + * Check for a valid server environment + */ + public function server(): bool + { + return $this->serverSoftware() !== null; + } + + /** + * Returns the detected server software + */ + public function serverSoftware(): string|null + { + $servers = $this->app->option('servers', [ + 'apache', + 'caddy', + 'litespeed', + 'nginx', + 'php' + ]); + + $software = $this->app->environment()->get('SERVER_SOFTWARE', ''); + + preg_match('!(' . implode('|', A::wrap($servers)) . ')!i', $software, $matches); + + return $matches[0] ?? null; + } + + /** + * Check for a writable sessions folder + */ + public function sessions(): bool + { + return is_writable($this->app->root('sessions')) === true; + } + + /** + * Get an status array of all checks + */ + public function status(): array + { + return [ + 'accounts' => $this->accounts(), + 'content' => $this->content(), + 'curl' => $this->curl(), + 'sessions' => $this->sessions(), + 'mbstring' => $this->mbstring(), + 'media' => $this->media(), + 'php' => $this->php(), + 'server' => $this->server(), + ]; + } + + /** + * Returns the site's title as defined in the + * content file or `site.yml` blueprint + * @since 3.6.0 + */ + public function title(): string + { + $site = $this->app->site(); + + if ($site->title()->isNotEmpty() === true) { + return $site->title()->value(); + } + + return $site->blueprint()->title(); + } + + public function toArray(): array + { + return $this->status(); + } + + /** + * Returns the update status object unless + * the update check for Kirby has been disabled + * @since 3.8.0 + * + * @param array|null $data Custom override for the getkirby.com update data + */ + public function updateStatus(array|null $data = null): UpdateStatus|null + { + if ($this->updateStatus !== null) { + return $this->updateStatus; + } + + $kirby = $this->app; + $option = + $kirby->option('updates.kirby') ?? + $kirby->option('updates', true); + + if ($option === false) { + return null; + } + + return $this->updateStatus = new UpdateStatus( + $kirby, + $option === 'security', + $data + ); + } + + /** + * Upgrade to the new folder separator + */ + public static function upgradeContent(string $root): void + { + $index = Dir::read($root); + + foreach ($index as $dir) { + $oldRoot = $root . '/' . $dir; + $newRoot = preg_replace('!\/([0-9]+)\-!', '/$1_', $oldRoot); + + if (is_dir($oldRoot) === true) { + Dir::move($oldRoot, $newRoot); + static::upgradeContent($newRoot); + } + } + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } +} diff --git a/kirby/src/Cms/System/UpdateStatus.php b/kirby/src/Cms/System/UpdateStatus.php new file mode 100644 index 0000000..0daa25b --- /dev/null +++ b/kirby/src/Cms/System/UpdateStatus.php @@ -0,0 +1,783 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UpdateStatus +{ + /** + * Host to request the update data from + */ + public static string $host = 'https://assets.getkirby.com'; + + /** + * Marker that stores whether a previous remote + * request timed out + */ + protected static bool $timedOut = false; + + // props set in constructor + protected App $app; + protected string|null $currentVersion; + protected array|null $data; + protected string|null $pluginName; + protected bool $securityOnly; + + // props updated throughout the class + protected array $exceptions = []; + protected bool|null $noVulns = null; + + // caches + protected array $messages; + protected array $targetData; + protected array|bool $versionEntry; + protected array $vulnerabilities; + + /** + * @param array|null $data Custom override for the getkirby.com update data + */ + public function __construct( + App|Plugin $package, + bool $securityOnly = false, + array|null $data = null + ) { + if ($package instanceof App) { + $this->app = $package; + $this->pluginName = null; + } else { + $this->app = $package->kirby(); + $this->pluginName = $package->name(); + } + + $this->securityOnly = $securityOnly; + $this->currentVersion = $package->version(); + + $this->data = $data ?? $this->loadData(); + } + + /** + * Returns the currently installed version + */ + public function currentVersion(): string|null + { + return $this->currentVersion; + } + + /** + * Returns the list of exception objects that were + * collected during data fetching and processing + */ + public function exceptions(): array + { + return $this->exceptions; + } + + /** + * Returns the list of exception message strings that + * were collected during data fetching and processing + */ + public function exceptionMessages(): array + { + return array_map(fn ($e) => $e->getMessage(), $this->exceptions()); + } + + /** + * Returns the Panel icon for the status value + * + * @return string 'check'|'alert'|'info' + */ + public function icon(): string + { + return match ($this->status()) { + 'up-to-date', 'not-vulnerable' => 'check', + 'security-update', 'security-upgrade' => 'alert', + 'update', 'upgrade' => 'info', + default => 'question' + }; + } + + /** + * Returns the human-readable and translated label + * for the update status + */ + public function label(): string + { + return I18n::template( + 'system.updateStatus.' . $this->status(), + '?', + ['version' => $this->targetVersion() ?? '?'] + ); + } + + /** + * Returns the latest available version + */ + public function latestVersion(): string|null + { + return $this->data['latest'] ?? null; + } + + /** + * Returns all security messages unless no data + * is available + */ + public function messages(): array|null + { + if (isset($this->messages) === true) { + return $this->messages; + } + + if ( + $this->data === null || + $this->currentVersion === null || + $this->currentVersion === '' + ) { + return null; + } + + $type = $this->pluginName ? 'plugin' : 'kirby'; + + // collect all matching custom messages + $filters = [ + 'kirby' => $this->app->version(), + 'php' => phpversion() + ]; + + if ($type === 'plugin') { + $filters['plugin'] = $this->currentVersion; + } + + $messages = $this->filterArrayByVersion( + $this->data['messages'] ?? [], + $filters, + 'while filtering messages' + ); + + // add a message for each vulnerability + // the current version is affected by + foreach ($this->vulnerabilities() as $vulnerability) { + if ($type === 'plugin') { + $vulnerability['plugin'] = $this->pluginName; + } + + $messages[] = [ + 'text' => I18n::template( + 'system.issues.vulnerability.' . $type, + null, + $vulnerability + ), + 'link' => $vulnerability['link'] ?? null, + 'icon' => 'bug' + ]; + } + + // add special message for end-of-life versions + $versionEntry = $this->versionEntry(); + if (($versionEntry['status'] ?? null) === 'end-of-life') { + $messages[] = [ + 'text' => match ($type) { + 'plugin' => I18n::template( + 'system.issues.eol.plugin', + null, + ['plugin' => $this->pluginName] + ), + default => I18n::translate('system.issues.eol.kirby') + }, + 'link' => $versionEntry['status-link'] ?? 'https://getkirby.com/security/end-of-life', + 'icon' => 'bell' + ]; + } + + // add special message for end-of-life PHP versions + $phpMajor = PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION; + $phpEol = $this->data['php'][$phpMajor] ?? null; + if (is_string($phpEol) === true && $eolTime = strtotime($phpEol)) { + // the timestamp is available and valid, now check if it is in the past + if ($eolTime < time()) { + $messages[] = [ + 'text' => I18n::template('system.issues.eol.php', null, ['release' => $phpMajor]), + 'link' => 'https://getkirby.com/security/php-end-of-life', + 'icon' => 'bell' + ]; + } + } + + return $this->messages = $messages; + } + + /** + * Returns the raw status value + * + * @return string 'up-to-date'|'not-vulnerable'|'security-update'| + * 'security-upgrade'|'update'|'upgrade'|'unreleased'|'error' + */ + public function status(): string + { + return $this->targetData()['status']; + } + + /** + * Version that is suggested for the update/upgrade + */ + public function targetVersion(): string|null + { + return $this->targetData()['version']; + } + + /** + * Returns the Panel theme for the status value + * + * @return string 'positive'|'negative'|'info'|'notice' + */ + public function theme(): string + { + return match ($this->status()) { + 'up-to-date', 'not-vulnerable' => 'positive', + 'security-update', 'security-upgrade' => 'negative', + 'update', 'upgrade' => 'info', + default => 'notice' + }; + } + + /** + * Returns the most important human-readable + * status information as array + */ + public function toArray(): array + { + return [ + 'currentVersion' => $this->currentVersion() ?? '?', + 'icon' => $this->icon(), + 'label' => $this->label(), + 'latestVersion' => $this->latestVersion() ?? '?', + 'pluginName' => $this->pluginName, + 'theme' => $this->theme(), + 'url' => $this->url(), + ]; + } + + /** + * URL of the target version with fallback + * to the URL of the current version; + * `null` is returned if no URL is known + */ + public function url(): string|null + { + return $this->targetData()['url']; + } + + /** + * Returns all vulnerabilities the current version + * is affected by unless no data is available + */ + public function vulnerabilities(): array|null + { + if (isset($this->vulnerabilities) === true) { + return $this->vulnerabilities; + } + + if ( + $this->data === null || + $this->currentVersion === null || + $this->currentVersion === '' + ) { + return null; + } + + // shortcut for versions without vulnerabilities + $this->versionEntry(); + if ($this->noVulns === true) { + return $this->vulnerabilities = []; + } + + // unstable releases are released before their respective + // stable release and would not be matched by the constraints, + // but they will likely also contain the same vulnerabilities; + // so we strip off any non-numeric version modifiers from the end + preg_match('/^([0-9.]+)/', $this->currentVersion, $matches); + $currentVersion = $matches[1]; + + $vulnerabilities = $this->filterArrayByVersion( + $this->data['incidents'] ?? [], + ['affected' => $currentVersion], + 'while filtering incidents' + ); + + // sort the vulnerabilities by severity (with critical first) + $severities = array_map( + fn ($vulnerability) => match ($vulnerability['severity'] ?? null) { + 'critical' => 4, + 'high' => 3, + 'medium' => 2, + 'low' => 1, + default => 0 + }, + $vulnerabilities + ); + array_multisort($severities, SORT_DESC, $vulnerabilities); + + return $this->vulnerabilities = $vulnerabilities; + } + + /** + * Compares a version against a Composer version constraint + * and returns whether the constraint is satisfied + * + * @param string $reason Suffix for error messages + */ + protected function checkConstraint(string $version, string $constraint, string $reason): bool + { + try { + return Semver::satisfies($version, $constraint); + } catch (Exception $e) { + $package = $this->packageName(); + $message = 'Error comparing version constraint for ' . $package . ' ' . $reason . ': ' . $e->getMessage(); + + $exception = new KirbyException([ + 'fallback' => $message, + 'previous' => $e + ]); + $this->exceptions[] = $exception; + + return false; + } + } + + /** + * Filters a two-level array with one or multiple version constraints + * for each value by one or multiple version filters; + * values that don't contain the filter keys are removed + * + * @param array $array Array that contains associative arrays + * @param array $filters Associative array `field => version` + * @param string $reason Suffix for error messages + */ + protected function filterArrayByVersion(array $array, array $filters, string $reason): array + { + return array_filter($array, function ($item) use ($filters, $reason): bool { + foreach ($filters as $key => $version) { + if (isset($item[$key]) !== true) { + $package = $this->packageName(); + $this->exceptions[] = new KirbyException('Missing constraint ' . $key . ' for ' . $package . ' ' . $reason); + + return false; + } + + if ($this->checkConstraint($version, $item[$key], $reason) !== true) { + return false; + } + } + + return true; + }); + } + + /** + * Finds the minimum possible security update + * to fix all known vulnerabilities + * + * @return string|null Version number of the update or + * `null` if no free update is possible + */ + protected function findMinimumSecurityUpdate(): string|null + { + $versionEntry = $this->versionEntry(); + if ($versionEntry === null || isset($versionEntry['latest']) !== true) { + return null; // @codeCoverageIgnore + } + + $affected = $this->vulnerabilities(); + $incidents = $this->data['incidents'] ?? []; + $maxVersion = $versionEntry['latest']; + + // increase the target version number until there are no vulnerabilities + $version = $this->currentVersion; + $iterations = 0; + while (empty($affected) === false) { + // protect against infinite loops if the + // input data is contradicting itself + $iterations++; + if ($iterations > 10) { + return null; + } + + // if we arrived at the `$maxVersion` but still haven't found + // a version without vulnerabilities, we cannot suggest a version + if ($version === $maxVersion) { + return null; + } + + // find the minimum version that fixes all affected vulnerabilities + foreach ($affected as $incident) { + $incidentVersion = null; + foreach (Str::split($incident['fixed'], ',') as $fixed) { + // skip versions of other major releases + if ( + version_compare($fixed, $this->currentVersion, '<') === true || + version_compare($fixed, $maxVersion, '>') === true + ) { + continue; + } + + // find the minimum version that fixes this specific vulnerability + if ( + $incidentVersion === null || + version_compare($fixed, $incidentVersion, '<') === true + ) { + $incidentVersion = $fixed; + } + } + + // verify that we found at least one possible version; + // otherwise try the `$maxVersion` as a last chance before + // concluding at the top that we cannot solve the task + $incidentVersion ??= $maxVersion; + + // we need a version that fixes all vulnerabilities, so use the + // "largest of the smallest" fixed versions + if (version_compare($incidentVersion, $version, '>') === true) { + $version = $incidentVersion; + } + } + + // run another loop to verify that the suggested version + // doesn't have any known vulnerabilities on its own + $affected = $this->filterArrayByVersion( + $incidents, + ['affected' => $version], + 'while filtering incidents' + ); + } + + return $version; + } + + /** + * Loads the getkirby.com update data + * from cache or via HTTP + */ + protected function loadData(): array|null + { + // try to get the data from cache + $cache = $this->app->cache('updates'); + $key = ( + $this->pluginName ? + 'plugins/' . $this->pluginName : + 'security' + ); + + // try to return from cache; + // invalidate the cache after updates + $data = $cache->get($key); + if ( + is_array($data) === true && + $data['_version'] === $this->currentVersion + ) { + return $data; + } + + // exception message (on previous request error) + if (is_string($data) === true) { + // restore the exception to make it visible when debugging + $this->exceptions[] = new KirbyException($data); + + return null; + } + + // before we request the data, ensure we have a writable cache; + // this reduces strain on the CDN from repeated requests + if ($cache->enabled() === false) { + $this->exceptions[] = new KirbyException('Cannot check for updates without a working "updates" cache'); + + return null; + } + + // first catch every exception; + // we collect it below for debugging + try { + if (static::$timedOut === true) { + throw new Exception('Previous remote request timed out'); // @codeCoverageIgnore + } + + $response = Remote::get( + static::$host . '/' . $key . '.json', + ['timeout' => 2] + ); + + // allow status code HTTP 200 or 0 (e.g. for the file:// protocol) + if (in_array($response->code(), [0, 200], true) !== true) { + throw new Exception('HTTP error ' . $response->code()); // @codeCoverageIgnore + } + + $data = $response->json(); + + if (is_array($data) !== true) { + throw new Exception('Invalid JSON data'); + } + } catch (Exception $e) { + $package = $this->packageName(); + $message = 'Could not load update data for ' . $package . ': ' . $e->getMessage(); + + $exception = new KirbyException([ + 'fallback' => $message, + 'previous' => $e + ]); + $this->exceptions[] = $exception; + + // if the request timed out, prevent additional + // requests for other packages (e.g. plugins) + // to avoid long Panel hangs + if ($e->getCode() === 28) { + static::$timedOut = true; // @codeCoverageIgnore + } elseif (static::$timedOut === false) { + // different error than timeout; + // prevent additional requests in the + // next three days (e.g. if a plugin + // does not have a page on getkirby.com) + // by caching the exception message + // instead of the data array + $cache->set($key, $exception->getMessage(), 3 * 24 * 60); + } + + return null; + } + + // also cache the current version to + // invalidate the cache after updates + // (ensures that the update status is + // fresh directly after the update to + // avoid confusion with outdated info) + $data['_version'] = $this->currentVersion; + + // cache the retrieved data for three days + $cache->set($key, $data, 3 * 24 * 60); + + return $data; + } + + /** + * Returns the human-readable package name for error messages + */ + protected function packageName(): string + { + return $this->pluginName ? 'plugin ' . $this->pluginName : 'Kirby'; + } + + /** + * Performs the update check and returns data for the + * target version (with fallback and error handling) + */ + protected function targetData(): array + { + if (isset($this->targetData) === true) { + return $this->targetData; + } + + // check if we have valid data to compare to + $versionEntry = $this->versionEntry(); + if ($versionEntry === null) { + $version = $this->currentVersion ?? $this->data['latest'] ?? null; + + return $this->targetData = [ + 'status' => 'error', + 'url' => $version ? $this->urlFor($version, 'changes') : null, + 'version' => null + ]; + } + + // check if the current version is the latest available + if (($versionEntry['status'] ?? null) === 'latest') { + return $this->targetData = [ + 'status' => 'up-to-date', + 'url' => $this->urlFor($this->currentVersion, 'changes'), + 'version' => null + ]; + } + + // check if the current version is unreleased + if (($versionEntry['status'] ?? null) === 'unreleased') { + return $this->targetData = [ + 'status' => 'unreleased', + 'url' => null, + 'version' => null + ]; + } + + // check if the installation is vulnerable; + // minimum possible security fixes are preferred + // over all other updates and upgrades + if (count($this->vulnerabilities()) > 0) { + $update = $this->findMinimumSecurityUpdate(); + + if ($update !== null) { + // a free security update was found + return $this->targetData = [ + 'status' => 'security-update', + 'url' => $this->urlFor($update, 'changes'), + 'version' => $update + ]; + } + + // only a paid security upgrade is possible + return $this->targetData = [ + 'status' => 'security-upgrade', + 'url' => $this->urlFor($this->currentVersion, 'upgrade'), + 'version' => $this->data['latest'] ?? null + ]; + } + + // check if the user limited update checking to security updates + if ($this->securityOnly === true) { + return $this->targetData = [ + 'status' => 'not-vulnerable', + 'url' => $this->urlFor($this->currentVersion, 'changes'), + 'version' => null + ]; + } + + // check if free updates are possible from the current version + $latest = $versionEntry['latest'] ?? null; + if (is_string($latest) === true && $latest !== $this->currentVersion) { + return $this->targetData = [ + 'status' => 'update', + 'url' => $this->urlFor($latest, 'changes'), + 'version' => $latest + ]; + } + + // no free update is possible, but we are not on the latest version, + // so the overall latest version must be an upgrade + return $this->targetData = [ + 'status' => 'upgrade', + 'url' => $this->urlFor($this->currentVersion, 'upgrade'), + 'version' => $this->data['latest'] ?? null + ]; + } + + /** + * Returns the URL for a specific version and purpose + */ + protected function urlFor(string $version, string $purpose): string|null + { + if ($this->data === null) { + return null; + } + + // find the first matching entry + $url = null; + foreach ($this->data['urls'] ?? [] as $constraint => $entry) { + // filter out every entry that does not match the version + if ($this->checkConstraint($version, $constraint, 'while finding URL') !== true) { + continue; + } + + // we found a result + $url = $entry[$purpose] ?? null; + if ($url !== null) { + break; + } + } + + if ($url === null) { + $package = $this->packageName(); + $message = 'No matching URL found for ' . $package . '@' . $version; + + $this->exceptions[] = new KirbyException($message); + + return null; + } + + // insert the URL template placeholders + return Str::template($url, [ + 'current' => $this->currentVersion, + 'version' => $version + ]); + } + + /** + * Extracts the first matching version entry from + * the data array unless no data is available + */ + protected function versionEntry(): array|null + { + if (isset($this->versionEntry) === true) { + // no version entry found on last call + if ($this->versionEntry === false) { + return null; + } + + return $this->versionEntry; + } + + if ( + $this->data === null || + $this->currentVersion === null || + $this->currentVersion === '' + ) { + return null; + } + + // special check for unreleased versions + $latest = $this->data['latest'] ?? null; + if ( + $latest !== null && + version_compare($this->currentVersion, $latest, '>') === true + ) { + return [ + 'status' => 'unreleased' + ]; + } + + $versionEntry = null; + foreach ($this->data['versions'] ?? [] as $constraint => $entry) { + // filter out every entry that does not match the current version + if ($this->checkConstraint($this->currentVersion, $constraint, 'while finding version entry') !== true) { + continue; + } + + if (($entry['status'] ?? null) === 'no-vulnerabilities') { + $this->noVulns = true; + + // use the next matching version entry with + // more specific update information + continue; + } + + if (($entry['status'] ?? null) === 'latest') { + $this->noVulns = true; + } + + // we found a result + $versionEntry = $entry; + break; + } + + if ($versionEntry === null) { + $package = $this->packageName(); + $message = 'No matching version entry found for ' . $package . '@' . $this->currentVersion; + + $this->exceptions[] = new KirbyException($message); + } + + $this->versionEntry = $versionEntry ?? false; + return $versionEntry; + } +} diff --git a/kirby/src/Cms/Translation.php b/kirby/src/Cms/Translation.php new file mode 100644 index 0000000..680f212 --- /dev/null +++ b/kirby/src/Cms/Translation.php @@ -0,0 +1,156 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Translation +{ + public function __construct( + protected string $code, + protected array $data + ) { + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Returns the translation author + */ + public function author(): string + { + return $this->get('translation.author', 'Kirby'); + } + + /** + * Returns the official translation code + */ + public function code(): string + { + return $this->code; + } + + /** + * Returns an array with all + * translation strings + */ + public function data(): array + { + return $this->data; + } + + /** + * Returns the translation data and merges + * it with the data from the default translation + */ + public function dataWithFallback(): array + { + if ($this->code === 'en') { + return $this->data; + } + + // get the fallback array + $fallback = App::instance()->translation('en')->data(); + + return array_merge($fallback, $this->data); + } + + /** + * Returns the writing direction + * (ltr or rtl) + */ + public function direction(): string + { + return $this->get('translation.direction', 'ltr'); + } + + /** + * Returns a single translation + * string by key + */ + public function get(string $key, string $default = null): string|null + { + return $this->data[$key] ?? $default; + } + + /** + * Returns the translation id, + * which is also the code + */ + public function id(): string + { + return $this->code; + } + + /** + * Loads the translation from the + * json file in Kirby's translations folder + */ + public static function load( + string $code, + string $root, + array $inject = [] + ): static { + try { + $data = array_merge(Data::read($root), $inject); + } catch (Exception) { + $data = []; + } + + return new static($code, $data); + } + + /** + * Returns the PHP locale of the translation + */ + public function locale(): string + { + $default = $this->code; + if (Str::contains($default, '_') !== true) { + $default .= '_' . strtoupper($this->code); + } + + return $this->get('translation.locale', $default); + } + + /** + * Returns the human-readable translation name. + */ + public function name(): string + { + return $this->get('translation.name', $this->code); + } + + /** + * Converts the most important + * properties to an array + */ + public function toArray(): array + { + return [ + 'code' => $this->code(), + 'data' => $this->data(), + 'name' => $this->name(), + 'author' => $this->author(), + ]; + } +} diff --git a/kirby/src/Cms/Translations.php b/kirby/src/Cms/Translations.php new file mode 100644 index 0000000..40c0b55 --- /dev/null +++ b/kirby/src/Cms/Translations.php @@ -0,0 +1,56 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Translations extends Collection +{ + /** + * All registered translations methods + */ + public static array $methods = []; + + public static function factory(array $translations): static + { + $collection = new static(); + + foreach ($translations as $code => $props) { + $translation = new Translation($code, $props); + $collection->data[$translation->code()] = $translation; + } + + return $collection; + } + + public static function load(string $root, array $inject = []): static + { + $collection = new static(); + + foreach (Dir::read($root) as $filename) { + if (F::extension($filename) !== 'json') { + continue; + } + + $locale = F::name($filename); + $translation = Translation::load($locale, $root . '/' . $filename, $inject[$locale] ?? []); + + $collection->data[$locale] = $translation; + } + + return $collection; + } +} diff --git a/kirby/src/Cms/Url.php b/kirby/src/Cms/Url.php new file mode 100644 index 0000000..bb44139 --- /dev/null +++ b/kirby/src/Cms/Url.php @@ -0,0 +1,63 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Url extends BaseUrl +{ + public static string|null $home = null; + + /** + * Returns the Url to the homepage + */ + public static function home(): string + { + return App::instance()->url(); + } + + /** + * Creates an absolute Url to a template asset if it exists. + * This is used in the `css()` and `js()` helpers + */ + public static function toTemplateAsset( + string $assetPath, + string $extension + ): string|null { + $kirby = App::instance(); + $page = $kirby->site()->page(); + $path = $assetPath . '/' . $page->template() . '.' . $extension; + $file = $kirby->root('assets') . '/' . $path; + $url = $kirby->url('assets') . '/' . $path; + + return file_exists($file) === true ? $url : null; + } + + /** + * Smart resolver for internal and external urls + * + * @param array|string|null $options Either an array of options for the Uri class or a language string + */ + public static function to( + string|null $path = null, + array|string|null $options = null + ): string { + $kirby = App::instance(); + return ($kirby->component('url'))($kirby, $path, $options); + } +} diff --git a/kirby/src/Cms/User.php b/kirby/src/Cms/User.php new file mode 100644 index 0000000..ce5fbb0 --- /dev/null +++ b/kirby/src/Cms/User.php @@ -0,0 +1,765 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class User extends ModelWithContent +{ + use HasFiles; + use HasMethods; + use HasSiblings; + use UserActions; + + public const CLASS_ALIAS = 'user'; + + /** + * All registered user methods + * @todo Remove when support for PHP 8.2 is dropped + */ + public static array $methods = []; + + /** + * Registry with all User models + */ + public static array $models = []; + + protected UserBlueprint|null $blueprint = null; + protected array $credentials; + protected string|null $email; + protected string $hash; + protected string $id; + protected array|null $inventory = null; + protected string|null $language; + protected Field|string|null $name; + protected string|null $password; + protected Role|string|null $role; + + /** + * Creates a new User object + */ + public function __construct(array $props) + { + // helper function to easily edit values (if not null) + // before assigning them to their properties + $set = function (string $key, Closure $callback) use ($props) { + if ($value = $props[$key] ?? null) { + $value = $callback($value); + } + + return $value; + }; + + // if no ID passed, generate one; + // do so before calling parent constructor + // so it also gets stored in propertyData prop + $props['id'] ??= $this->createId(); + + parent::__construct($props); + + $this->id = $props['id']; + $this->email = $set('email', fn ($email) => Str::lower(trim($email))); + $this->language = $set('language', fn ($language) => trim($language)); + $this->name = $set('name', fn ($name) => trim(strip_tags($name))); + $this->password = $props['password'] ?? null; + $this->role = $set('role', fn ($role) => Str::lower(trim($role))); + + $this->setBlueprint($props['blueprint'] ?? null); + $this->setFiles($props['files'] ?? null); + } + + /** + * Modified getter to also return fields + * from the content + */ + public function __call(string $method, array $arguments = []): mixed + { + // public property access + if (isset($this->$method) === true) { + return $this->$method; + } + + // user methods + if ($this->hasMethod($method)) { + return $this->callMethod($method, $arguments); + } + + // return site content otherwise + return $this->content()->get($method); + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return array_merge($this->toArray(), [ + 'avatar' => $this->avatar(), + 'content' => $this->content(), + 'role' => $this->role() + ]); + } + + /** + * Returns the url to the api endpoint + * @internal + */ + public function apiUrl(bool $relative = false): string + { + if ($relative === true) { + return 'users/' . $this->id(); + } + + return $this->kirby()->url('api') . '/users/' . $this->id(); + } + + /** + * Returns the File object for the avatar or null + */ + public function avatar(): File|null + { + return $this->files()->template('avatar')->first(); + } + + /** + * Returns the UserBlueprint object + */ + public function blueprint(): UserBlueprint + { + try { + return $this->blueprint ??= UserBlueprint::factory('users/' . $this->role(), 'users/default', $this); + } catch (Exception) { + return $this->blueprint ??= new UserBlueprint([ + 'model' => $this, + 'name' => 'default', + 'title' => 'Default', + ]); + } + } + + /** + * Prepares the content for the write method + * @internal + * @param string $languageCode|null Not used so far + */ + public function contentFileData( + array $data, + string|null $languageCode = null + ): array { + // remove stuff that has nothing to do in the text files + unset( + $data['email'], + $data['language'], + $data['name'], + $data['password'], + $data['role'] + ); + + return $data; + } + + /** + * Filename for the content file + * + * @internal + * @deprecated 4.0.0 + * @todo Remove in v5 + * @codeCoverageIgnore + */ + public function contentFileName(): string + { + Helpers::deprecated('The internal $model->contentFileName() method has been deprecated. Please let us know via a GitHub issue if you need this method and tell us your use case.', 'model-content-file'); + return 'user'; + } + + protected function credentials(): array + { + return $this->credentials ??= $this->readCredentials(); + } + + /** + * Returns the user email address + */ + public function email(): string|null + { + return $this->email ??= $this->credentials()['email'] ?? null; + } + + /** + * Checks if the user exists + */ + public function exists(): bool + { + return $this->storage()->exists( + 'published', + 'default' + ); + } + + /** + * Constructs a User object and also + * takes User models into account. + * @internal + */ + public static function factory(mixed $props): static + { + if (empty($props['model']) === false) { + return static::model($props['model'], $props); + } + + return new static($props); + } + + /** + * Hashes the user's password unless it is `null`, + * which will leave it as `null` + * @internal + */ + public static function hashPassword( + #[SensitiveParameter] + string $password = null + ): string|null { + if ($password !== null) { + $password = password_hash($password, PASSWORD_DEFAULT); + } + + return $password; + } + + /** + * Returns the user id + */ + public function id(): string + { + return $this->id; + } + + /** + * Returns the inventory of files + * children and content files + */ + public function inventory(): array + { + if ($this->inventory !== null) { + return $this->inventory; + } + + $kirby = $this->kirby(); + + return $this->inventory = Dir::inventory( + $this->root(), + $kirby->contentExtension(), + $kirby->contentIgnore(), + $kirby->multilang() + ); + } + + /** + * Compares the current object with the given user object + */ + public function is(User $user = null): bool + { + if ($user === null) { + return false; + } + + return $this->id() === $user->id(); + } + + /** + * Checks if this user has the admin role + */ + public function isAdmin(): bool + { + return $this->role()->id() === 'admin'; + } + + /** + * Checks if the current user is the virtual + * Kirby user + */ + public function isKirby(): bool + { + return $this->isAdmin() && $this->id() === 'kirby'; + } + + /** + * Checks if the current user is this user + */ + public function isLoggedIn(): bool + { + return $this->is($this->kirby()->user()); + } + + /** + * Checks if the user is the last one + * with the admin role + */ + public function isLastAdmin(): bool + { + return + $this->role()->isAdmin() === true && + $this->kirby()->users()->filter('role', 'admin')->count() <= 1; + } + + /** + * Checks if the user is the last user + */ + public function isLastUser(): bool + { + return $this->kirby()->users()->count() === 1; + } + + /** + * Checks if the current user is the virtual + * Nobody user + */ + public function isNobody(): bool + { + return $this->role()->id() === 'nobody' && $this->id() === 'nobody'; + } + + /** + * Returns the user language + */ + public function language(): string + { + return $this->language ??= + $this->credentials()['language'] ?? + $this->kirby()->panelLanguage(); + } + + /** + * Logs the user in + * + * @param \Kirby\Session\Session|array|null $session Session options or session object to set the user in + */ + public function login( + #[SensitiveParameter] + string $password, + $session = null + ): bool { + $this->validatePassword($password); + $this->loginPasswordless($session); + + return true; + } + + /** + * Logs the user in without checking the password + * + * @param \Kirby\Session\Session|array|null $session Session options or session object to set the user in + */ + public function loginPasswordless( + Session|array|null $session = null + ): void { + if ($this->id() === 'kirby') { + throw new PermissionException('The almighty user "kirby" cannot be used for login, only for raising permissions in code via `$kirby->impersonate()`'); + } + + $kirby = $this->kirby(); + $session = $this->sessionFromOptions($session); + + $kirby->trigger( + 'user.login:before', + ['user' => $this, 'session' => $session] + ); + + $session->regenerateToken(); // privilege change + $session->data()->set('kirby.userId', $this->id()); + + if ($this->passwordTimestamp() !== null) { + $session->data()->set('kirby.loginTimestamp', time()); + } + + $kirby->auth()->setUser($this); + + $kirby->trigger( + 'user.login:after', + ['user' => $this, 'session' => $session] + ); + } + + /** + * Logs the user out + * + * @param \Kirby\Session\Session|array|null $session Session options or session object to unset the user in + */ + public function logout(Session|array|null $session = null): void + { + $kirby = $this->kirby(); + $session = $this->sessionFromOptions($session); + + $kirby->trigger('user.logout:before', ['user' => $this, 'session' => $session]); + + // remove the user from the session for future requests + $session->data()->remove('kirby.userId'); + $session->data()->remove('kirby.loginTimestamp'); + + // clear the cached user object from the app state of the current request + $this->kirby()->auth()->flush(); + + if ($session->data()->get() === []) { + // session is now empty, we might as well destroy it + $session->destroy(); + + $kirby->trigger('user.logout:after', ['user' => $this, 'session' => null]); + } else { + // privilege change + $session->regenerateToken(); + + $kirby->trigger('user.logout:after', ['user' => $this, 'session' => $session]); + } + } + + /** + * Returns the root to the media folder for the user + * @internal + */ + public function mediaRoot(): string + { + return $this->kirby()->root('media') . '/users/' . $this->id(); + } + + /** + * Returns the media url for the user object + * @internal + */ + public function mediaUrl(): string + { + return $this->kirby()->url('media') . '/users/' . $this->id(); + } + + /** + * Creates a user model if it has been registered + * @internal + */ + public static function model(string $name, array $props = []): static + { + if ($class = (static::$models[$name] ?? null)) { + $object = new $class($props); + + if ($object instanceof self) { + return $object; + } + } + + return new static($props); + } + + /** + * Returns the last modification date of the user + */ + public function modified( + string $format = 'U', + string|null $handler = null, + string|null $languageCode = null + ): int|string|false { + $modifiedContent = $this->storage()->modified('published', $languageCode); + $modifiedIndex = F::modified($this->root() . '/index.php'); + $modifiedTotal = max([$modifiedContent, $modifiedIndex]); + + return Str::date($modifiedTotal, $format, $handler); + } + + /** + * Returns the user's name + */ + public function name(): Field + { + if (is_string($this->name) === true) { + return new Field($this, 'name', $this->name); + } + + return $this->name ??= new Field($this, 'name', $this->credentials()['name'] ?? null); + } + + /** + * Returns the user's name or, + * if empty, the email address + */ + public function nameOrEmail(): Field + { + $name = $this->name(); + return $name->isNotEmpty() ? $name : new Field($this, 'email', $this->email()); + } + + /** + * Create a dummy nobody + * @internal + */ + public static function nobody(): static + { + return new static([ + 'email' => 'nobody@getkirby.com', + 'role' => 'nobody' + ]); + } + + /** + * Returns the panel info object + */ + public function panel(): Panel + { + return new Panel($this); + } + + /** + * Returns the encrypted user password + */ + public function password(): string|null + { + return $this->password ??= $this->readPassword(); + } + + /** + * Returns the timestamp when the password + * was last changed + */ + public function passwordTimestamp(): int|null + { + $file = $this->secretsFile(); + + // ensure we have the latest information + // to prevent cache attacks + clearstatcache(); + + // user does not have a password + if (is_file($file) === false) { + return null; + } + + return filemtime($file); + } + + public function permissions(): UserPermissions + { + return new UserPermissions($this); + } + + /** + * Returns the user role + */ + public function role(): Role + { + if ($this->role instanceof Role) { + return $this->role; + } + + $name = $this->role ?? $this->credentials()['role'] ?? 'visitor'; + + return $this->role = $this->kirby()->roles()->find($name) ?? Role::nobody(); + } + + /** + * Returns all available roles + * for this user, that can be selected + * by the authenticated user + */ + public function roles(): Roles + { + $kirby = $this->kirby(); + $roles = $kirby->roles(); + + // a collection with just the one role of the user + $myRole = $roles->filter('id', $this->role()->id()); + + // if there's an authenticated user … + // admin users can select pretty much any role + if ($kirby->user()?->isAdmin() === true) { + // except if the user is the last admin + if ($this->isLastAdmin() === true) { + // in which case they have to stay admin + return $myRole; + } + + // return all roles for mighty admins + return $roles; + } + + // any other user can only keep their role + return $myRole; + } + + /** + * The absolute path to the user directory + */ + public function root(): string + { + return $this->kirby()->root('accounts') . '/' . $this->id(); + } + + /** + * Returns the UserRules class to + * validate any important action. + */ + protected function rules(): UserRules + { + return new UserRules(); + } + + /** + * Reads a specific secret from the user secrets file on disk + * @since 4.0.0 + */ + public function secret(string $key): mixed + { + return $this->readSecrets()[$key] ?? null; + } + + /** + * Sets the Blueprint object + * + * @return $this + */ + protected function setBlueprint(array $blueprint = null): static + { + if ($blueprint !== null) { + $blueprint['model'] = $this; + $this->blueprint = new UserBlueprint($blueprint); + } + + return $this; + } + + /** + * Converts session options into a session object + * + * @param \Kirby\Session\Session|array $session Session options or session object to unset the user in + */ + protected function sessionFromOptions(Session|array|null $session): Session + { + // use passed session options or session object if set + if (is_array($session) === true) { + $session = $this->kirby()->session($session); + } elseif ($session instanceof Session === false) { + $session = $this->kirby()->session(['detect' => true]); + } + + return $session; + } + + /** + * Returns the parent Users collection + */ + protected function siblingsCollection(): Users + { + return $this->kirby()->users(); + } + + /** + * Converts the most important user properties + * to an array + */ + public function toArray(): array + { + return array_merge(parent::toArray(), [ + 'avatar' => $this->avatar()?->toArray(), + 'email' => $this->email(), + 'id' => $this->id(), + 'language' => $this->language(), + 'role' => $this->role()->name(), + 'username' => $this->username() + ]); + } + + /** + * String template builder + * + * @param string|null $fallback Fallback for tokens in the template that cannot be replaced + * (`null` to keep the original token) + */ + public function toString( + string $template = null, + array $data = [], + string|null $fallback = '', + string $handler = 'template' + ): string { + $template ??= $this->email(); + return parent::toString($template, $data, $fallback, $handler); + } + + /** + * Returns the username + * which is the given name or the email + * as a fallback + */ + public function username(): string|null + { + return $this->name()->or($this->email())->value(); + } + + /** + * Compares the given password with the stored one + * + * @throws \Kirby\Exception\NotFoundException If the user has no password + * @throws \Kirby\Exception\InvalidArgumentException If the entered password is not valid + * or does not match the user password + */ + public function validatePassword( + #[SensitiveParameter] + string $password = null + ): bool { + if (empty($this->password()) === true) { + throw new NotFoundException(['key' => 'user.password.undefined']); + } + + // `UserRules` enforces a minimum length of 8 characters, + // so everything below that is a typo + if (Str::length($password) < 8) { + throw new InvalidArgumentException(['key' => 'user.password.invalid']); + } + + // too long passwords can cause DoS attacks + if (Str::length($password) > 1000) { + throw new InvalidArgumentException(['key' => 'user.password.excessive']); + } + + if (password_verify($password, $this->password()) !== true) { + throw new InvalidArgumentException(['key' => 'user.password.wrong', 'httpCode' => 401]); + } + + return true; + } + + /** + * @deprecated 4.0.0 Use `->secretsFile()` instead + * @codeCoverageIgnore + */ + protected function passwordFile(): string + { + return $this->secretsFile(); + } + + /** + * Returns the path to the file containing + * all user secrets, including the password + * @since 4.0.0 + */ + protected function secretsFile(): string + { + return $this->root() . '/.htpasswd'; + } +} diff --git a/kirby/src/Cms/UserActions.php b/kirby/src/Cms/UserActions.php new file mode 100644 index 0000000..728acc1 --- /dev/null +++ b/kirby/src/Cms/UserActions.php @@ -0,0 +1,448 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +trait UserActions +{ + /** + * Changes the user email address + */ + public function changeEmail(string $email): static + { + $email = trim($email); + + return $this->commit('changeEmail', ['user' => $this, 'email' => Idn::decodeEmail($email)], function ($user, $email) { + $user = $user->clone([ + 'email' => $email + ]); + + $user->updateCredentials([ + 'email' => $email + ]); + + // update the users collection + $user->kirby()->users()->set($user->id(), $user); + + return $user; + }); + } + + /** + * Changes the user language + */ + public function changeLanguage(string $language): static + { + return $this->commit('changeLanguage', ['user' => $this, 'language' => $language], function ($user, $language) { + $user = $user->clone([ + 'language' => $language, + ]); + + $user->updateCredentials([ + 'language' => $language + ]); + + // update the users collection + $user->kirby()->users()->set($user->id(), $user); + + return $user; + }); + } + + /** + * Changes the screen name of the user + */ + public function changeName(string $name): static + { + $name = trim($name); + + return $this->commit('changeName', ['user' => $this, 'name' => $name], function ($user, $name) { + $user = $user->clone([ + 'name' => $name + ]); + + $user->updateCredentials([ + 'name' => $name + ]); + + // update the users collection + $user->kirby()->users()->set($user->id(), $user); + + return $user; + }); + } + + /** + * Changes the user password + */ + public function changePassword( + #[SensitiveParameter] + string $password + ): static { + return $this->commit('changePassword', ['user' => $this, 'password' => $password], function ($user, $password) { + $user = $user->clone([ + 'password' => $password = User::hashPassword($password) + ]); + + $user->writePassword($password); + + // update the users collection + $user->kirby()->users()->set($user->id(), $user); + + // keep the user logged in to the current browser + // if they changed their own password + // (regenerate the session token, update the login timestamp) + if ($user->isLoggedIn() === true) { + $user->loginPasswordless(); + } + + return $user; + }); + } + + /** + * Changes the user role + */ + public function changeRole(string $role): static + { + return $this->commit('changeRole', ['user' => $this, 'role' => $role], function ($user, $role) { + $user = $user->clone([ + 'role' => $role, + ]); + + $user->updateCredentials([ + 'role' => $role + ]); + + // update the users collection + $user->kirby()->users()->set($user->id(), $user); + + return $user; + }); + } + + /** + * Changes the user's TOTP secret + * @since 4.0.0 + */ + public function changeTotp( + #[SensitiveParameter] + string|null $secret + ): static { + return $this->commit('changeTotp', ['user' => $this, 'secret' => $secret], function ($user, $secret) { + $this->writeSecret('totp', $secret); + + // keep the user logged in to the current browser + // if they changed their own TOTP secret + // (regenerate the session token, update the login timestamp) + if ($user->isLoggedIn() === true) { + $user->loginPasswordless(); + } + + return $user; + }); + } + + /** + * Commits a user action, by following these steps + * + * 1. checks the action rules + * 2. sends the before hook + * 3. commits the action + * 4. sends the after hook + * 5. returns the result + * + * @throws \Kirby\Exception\PermissionException + */ + protected function commit( + string $action, + array $arguments, + Closure $callback + ): mixed { + if ($this->isKirby() === true) { + throw new PermissionException('The Kirby user cannot be changed'); + } + + $old = $this->hardcopy(); + $kirby = $this->kirby(); + $argumentValues = array_values($arguments); + + $this->rules()->$action(...$argumentValues); + $kirby->trigger('user.' . $action . ':before', $arguments); + + $result = $callback(...$argumentValues); + + $argumentsAfter = match ($action) { + 'create' => ['user' => $result], + 'delete' => ['status' => $result, 'user' => $old], + default => ['newUser' => $result, 'oldUser' => $old] + }; + + $kirby->trigger('user.' . $action . ':after', $argumentsAfter); + + $kirby->cache('pages')->flush(); + return $result; + } + + /** + * Creates a new User from the given props and returns a new User object + */ + public static function create(array $props = null): User + { + $data = $props; + + if (isset($props['email']) === true) { + $data['email'] = Idn::decodeEmail($props['email']); + } + + if (isset($props['password']) === true) { + $data['password'] = User::hashPassword($props['password']); + } + + $props['role'] = $props['model'] = strtolower($props['role'] ?? 'default'); + + $user = User::factory($data); + + // create a form for the user + $form = Form::for($user, [ + 'values' => $props['content'] ?? [] + ]); + + // inject the content + $user = $user->clone(['content' => $form->strings(true)]); + + // run the hook + return $user->commit('create', ['user' => $user, 'input' => $props], function ($user, $props) { + $user->writeCredentials([ + 'email' => $user->email(), + 'language' => $user->language(), + 'name' => $user->name()->value(), + 'role' => $user->role()->id(), + ]); + + $user->writePassword($user->password()); + + // always create users in the default language + if ($user->kirby()->multilang() === true) { + $languageCode = $user->kirby()->defaultLanguage()->code(); + } else { + $languageCode = null; + } + + // add the user to users collection + $user->kirby()->users()->add($user); + + // write the user data + return $user->save($user->content()->toArray(), $languageCode); + }); + } + + /** + * Returns a random user id + */ + public function createId(): string + { + $length = 8; + + do { + try { + $id = Str::random($length); + if (UserRules::validId($this, $id) === true) { + return $id; + } + + // we can't really test for a random match + // @codeCoverageIgnoreStart + } catch (Throwable) { + $length++; + } + } while (true); + // @codeCoverageIgnoreEnd + } + + /** + * Deletes the user + * + * @throws \Kirby\Exception\LogicException + */ + public function delete(): bool + { + return $this->commit('delete', ['user' => $this], function ($user) { + if ($user->exists() === false) { + return true; + } + + // delete all public assets for this user + Dir::remove($user->mediaRoot()); + + // delete the user directory + if (Dir::remove($user->root()) !== true) { + throw new LogicException('The user directory for "' . $user->email() . '" could not be deleted'); + } + + // remove the user from users collection + $user->kirby()->users()->remove($user); + + return true; + }); + } + + /** + * Read the account information from disk + */ + protected function readCredentials(): array + { + $path = $this->root() . '/index.php'; + + if (is_file($path) === true) { + $credentials = F::load($path, allowOutput: false); + + return is_array($credentials) === false ? [] : $credentials; + } + + return []; + } + + /** + * Reads the user password from disk + */ + protected function readPassword(): string|false + { + return $this->secret('password') ?? false; + } + + /** + * Reads the secrets from the user secrets file on disk + * @since 4.0.0 + */ + protected function readSecrets(): array + { + $file = $this->secretsFile(); + $secrets = []; + + if (is_file($file) === true) { + $lines = explode("\n", file_get_contents($file)); + + if (isset($lines[1]) === true) { + $secrets = Json::decode($lines[1]); + } + + $secrets['password'] = $lines[0]; + } + + // an empty password hash means that no password was set + if (($secrets['password'] ?? null) === '') { + unset($secrets['password']); + } + + return $secrets; + } + + /** + * Updates the user data + */ + public function update( + array $input = null, + string $languageCode = null, + bool $validate = false + ): static { + $user = parent::update($input, $languageCode, $validate); + + // set auth user data only if the current user is this user + if ($user->isLoggedIn() === true) { + $this->kirby()->auth()->setUser($user); + } + + // update the users collection + $user->kirby()->users()->set($user->id(), $user); + + return $user; + } + + /** + * This always merges the existing credentials + * with the given input. + */ + protected function updateCredentials(array $credentials): bool + { + // normalize the email address + if (isset($credentials['email']) === true) { + $credentials['email'] = Str::lower(trim($credentials['email'])); + } + + return $this->writeCredentials(array_merge($this->credentials(), $credentials)); + } + + /** + * Writes the account information to disk + */ + protected function writeCredentials(array $credentials): bool + { + return Data::write($this->root() . '/index.php', $credentials); + } + + /** + * Writes the password to disk + */ + protected function writePassword( + #[SensitiveParameter] + string $password = null + ): bool { + return $this->writeSecret('password', $password); + } + + /** + * Writes a specific secret to the user secrets file on disk; + * `password` is the first line, the rest is stored as JSON + * @since 4.0.0 + */ + protected function writeSecret( + string $key, + #[SensitiveParameter] + mixed $secret + ): bool { + $secrets = $this->readSecrets(); + + if ($secret === null) { + unset($secrets[$key]); + } else { + $secrets[$key] = $secret; + } + + // first line is always the password + $lines = $secrets['password'] ?? ''; + + // everything else is for the second line + $secondLine = Json::encode( + A::without($secrets, 'password') + ); + + if ($secondLine !== '[]') { + $lines .= "\n" . $secondLine; + } + + return F::write($this->secretsFile(), $lines); + } +} diff --git a/kirby/src/Cms/UserBlueprint.php b/kirby/src/Cms/UserBlueprint.php new file mode 100644 index 0000000..d44d852 --- /dev/null +++ b/kirby/src/Cms/UserBlueprint.php @@ -0,0 +1,46 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UserBlueprint extends Blueprint +{ + /** + * UserBlueprint constructor. + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function __construct(array $props) + { + // normalize and translate the description + $props['description'] = $this->i18n($props['description'] ?? null); + + // register the other props + parent::__construct($props); + + // normalize all available page options + $this->props['options'] = $this->normalizeOptions( + $this->props['options'] ?? true, + // defaults + [ + 'create' => null, + 'changeEmail' => null, + 'changeLanguage' => null, + 'changeName' => null, + 'changePassword' => null, + 'changeRole' => null, + 'delete' => null, + 'update' => null, + ] + ); + } +} diff --git a/kirby/src/Cms/UserPermissions.php b/kirby/src/Cms/UserPermissions.php new file mode 100644 index 0000000..62cd662 --- /dev/null +++ b/kirby/src/Cms/UserPermissions.php @@ -0,0 +1,51 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UserPermissions extends ModelPermissions +{ + protected string $category = 'users'; + + public function __construct(User $model) + { + parent::__construct($model); + + // change the scope of the permissions, + // when the current user is this user + $this->category = $this->user?->is($model) ? 'user' : 'users'; + } + + protected function canChangeRole(): bool + { + return $this->model->roles()->count() > 1; + } + + protected function canCreate(): bool + { + // the admin can always create new users + if ($this->user->isAdmin() === true) { + return true; + } + + // users who are not admins cannot create admins + if ($this->model->isAdmin() === true) { + return false; + } + + return true; + } + + protected function canDelete(): bool + { + return $this->model->isLastAdmin() !== true; + } +} diff --git a/kirby/src/Cms/UserPicker.php b/kirby/src/Cms/UserPicker.php new file mode 100644 index 0000000..0e9ab3e --- /dev/null +++ b/kirby/src/Cms/UserPicker.php @@ -0,0 +1,67 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UserPicker extends Picker +{ + /** + * Extends the basic defaults + */ + public function defaults(): array + { + $defaults = parent::defaults(); + $defaults['text'] = '{{ user.username }}'; + + return $defaults; + } + + /** + * Search all users for the picker + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function items(): Users|null + { + $model = $this->options['model']; + + // find the right default query + $query = match (true) { + empty($this->options['query']) === false + => $this->options['query'], + $model instanceof User + => 'user.siblings', + default + => 'kirby.users' + }; + + // fetch all users for the picker + $users = $model->query($query); + + // catch invalid data + if ($users instanceof Users === false) { + throw new InvalidArgumentException('Your query must return a set of users'); + } + + // search + $users = $this->search($users); + + // sort + $users = $users->sort('username', 'asc'); + + // paginate + return $this->paginate($users); + } +} diff --git a/kirby/src/Cms/UserRules.php b/kirby/src/Cms/UserRules.php new file mode 100644 index 0000000..cf32665 --- /dev/null +++ b/kirby/src/Cms/UserRules.php @@ -0,0 +1,384 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UserRules +{ + /** + * Validates if the email address can be changed + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the address + */ + public static function changeEmail(User $user, string $email): bool + { + if ($user->permissions()->changeEmail() !== true) { + throw new PermissionException([ + 'key' => 'user.changeEmail.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return static::validEmail($user, $email); + } + + /** + * Validates if the language can be changed + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the language + */ + public static function changeLanguage(User $user, string $language): bool + { + if ($user->permissions()->changeLanguage() !== true) { + throw new PermissionException([ + 'key' => 'user.changeLanguage.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return static::validLanguage($user, $language); + } + + /** + * Validates if the name can be changed + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the name + */ + public static function changeName(User $user, string $name): bool + { + if ($user->permissions()->changeName() !== true) { + throw new PermissionException([ + 'key' => 'user.changeName.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return true; + } + + /** + * Validates if the password can be changed + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the password + */ + public static function changePassword( + User $user, + #[SensitiveParameter] + string $password + ): bool { + if ($user->permissions()->changePassword() !== true) { + throw new PermissionException([ + 'key' => 'user.changePassword.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return static::validPassword($user, $password); + } + + /** + * Validates if the role can be changed + * + * @throws \Kirby\Exception\LogicException If the user is the last admin + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the role + */ + public static function changeRole(User $user, string $role): bool + { + // protect admin from role changes by non-admin + if ( + $user->kirby()->user()->isAdmin() === false && + $user->isAdmin() === true + ) { + throw new PermissionException([ + 'key' => 'user.changeRole.permission', + 'data' => ['name' => $user->username()] + ]); + } + + // prevent non-admins making a user to admin + if ( + $user->kirby()->user()->isAdmin() === false && + $role === 'admin' + ) { + throw new PermissionException([ + 'key' => 'user.changeRole.toAdmin' + ]); + } + + static::validRole($user, $role); + + if ($role !== 'admin' && $user->isLastAdmin() === true) { + throw new LogicException([ + 'key' => 'user.changeRole.lastAdmin', + 'data' => ['name' => $user->username()] + ]); + } + + if ($user->permissions()->changeRole() !== true) { + throw new PermissionException([ + 'key' => 'user.changeRole.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return true; + } + + /** + * Validates if the TOTP can be changed + * @since 4.0.0 + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to change the password + */ + public static function changeTotp( + User $user, + #[SensitiveParameter] + string|null $secret + ): bool { + $currentUser = $user->kirby()->user(); + + if ( + $currentUser->is($user) === false && + $currentUser->isAdmin() === false + ) { + throw new PermissionException('You cannot change the time-based code for ' . $user->email()); + } + + // safety check to avoid accidental insecure secrets; + // throws an exception for secrets of the wrong length + if ($secret !== null) { + new Totp($secret); + } + + return true; + } + + /** + * Validates if the user can be created + * + * @throws \Kirby\Exception\PermissionException If the user is not allowed to create a new user + */ + public static function create(User $user, array $props = []): bool + { + static::validId($user, $user->id()); + static::validEmail($user, $user->email(), true); + static::validLanguage($user, $user->language()); + + // the first user must have a password + if ($user->kirby()->users()->count() === 0 && empty($props['password'])) { + // trigger invalid password error + static::validPassword($user, ' '); + } + + if (empty($props['password']) === false) { + static::validPassword($user, $props['password']); + } + + // get the current user if it exists + $currentUser = $user->kirby()->user(); + + // admins are allowed everything + if ($currentUser?->isAdmin() === true) { + return true; + } + + // only admins are allowed to add admins + $role = $props['role'] ?? null; + + if ($role === 'admin' && $currentUser?->isAdmin() === false) { + throw new PermissionException([ + 'key' => 'user.create.permission' + ]); + } + + // check user permissions (if not on install) + if ( + $user->kirby()->users()->count() > 0 && + $user->permissions()->create() !== true + ) { + throw new PermissionException([ + 'key' => 'user.create.permission' + ]); + } + + return true; + } + + /** + * Validates if the user can be deleted + * + * @throws \Kirby\Exception\LogicException If this is the last user or last admin, which cannot be deleted + * @throws \Kirby\Exception\PermissionException If the user is not allowed to delete this user + */ + public static function delete(User $user): bool + { + if ($user->isLastAdmin() === true) { + throw new LogicException(['key' => 'user.delete.lastAdmin']); + } + + if ($user->isLastUser() === true) { + throw new LogicException([ + 'key' => 'user.delete.lastUser' + ]); + } + + if ($user->permissions()->delete() !== true) { + throw new PermissionException([ + 'key' => 'user.delete.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return true; + } + + /** + * Validates if the user can be updated + * + * @throws \Kirby\Exception\PermissionException If the user it not allowed to update this user + */ + public static function update( + User $user, + array $values = [], + array $strings = [] + ): bool { + if ($user->permissions()->update() !== true) { + throw new PermissionException([ + 'key' => 'user.update.permission', + 'data' => ['name' => $user->username()] + ]); + } + + return true; + } + + /** + * Validates an email address + * + * @throws \Kirby\Exception\DuplicateException If the email address already exists + * @throws \Kirby\Exception\InvalidArgumentException If the email address is invalid + */ + public static function validEmail( + User $user, + string $email, + bool $strict = false + ): bool { + if (V::email($email ?? null) === false) { + throw new InvalidArgumentException([ + 'key' => 'user.email.invalid', + ]); + } + + if ($strict === true) { + $duplicate = $user->kirby()->users()->find($email); + } else { + $duplicate = $user->kirby()->users()->not($user)->find($email); + } + + if ($duplicate) { + throw new DuplicateException([ + 'key' => 'user.duplicate', + 'data' => ['email' => $email] + ]); + } + + return true; + } + + /** + * Validates a user id + * + * @throws \Kirby\Exception\DuplicateException If the user already exists + */ + public static function validId(User $user, string $id): bool + { + if (in_array($id, ['account', 'kirby', 'nobody']) === true) { + throw new InvalidArgumentException('"' . $id . '" is a reserved word and cannot be used as user id'); + } + + if ($user->kirby()->users()->find($id)) { + throw new DuplicateException('A user with this id exists'); + } + + return true; + } + + /** + * Validates a user language code + * + * @throws \Kirby\Exception\InvalidArgumentException If the language does not exist + */ + public static function validLanguage(User $user, string $language): bool + { + if (in_array($language, $user->kirby()->translations()->keys(), true) === false) { + throw new InvalidArgumentException([ + 'key' => 'user.language.invalid', + ]); + } + + return true; + } + + /** + * Validates a password + * + * @throws \Kirby\Exception\InvalidArgumentException If the password is too short + */ + public static function validPassword( + User $user, + #[SensitiveParameter] + string $password + ): bool { + // too short passwords are ineffective + if (Str::length($password ?? null) < 8) { + throw new InvalidArgumentException([ + 'key' => 'user.password.invalid', + ]); + } + + // too long passwords can cause DoS attacks + // and are therefore blocked in the auth system + // (blocked here as well to avoid passwords + // that cannot be used to log in) + if (Str::length($password ?? null) > 1000) { + throw new InvalidArgumentException([ + 'key' => 'user.password.excessive', + ]); + } + + return true; + } + + /** + * Validates a user role + * + * @throws \Kirby\Exception\InvalidArgumentException If the user role does not exist + */ + public static function validRole(User $user, string $role): bool + { + if ($user->kirby()->roles()->find($role) instanceof Role) { + return true; + } + + throw new InvalidArgumentException([ + 'key' => 'user.role.invalid', + ]); + } +} diff --git a/kirby/src/Cms/Users.php b/kirby/src/Cms/Users.php new file mode 100644 index 0000000..df2f6c3 --- /dev/null +++ b/kirby/src/Cms/Users.php @@ -0,0 +1,159 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Users extends Collection +{ + use HasUuids; + + /** + * All registered users methods + */ + public static array $methods = []; + + public function create(array $data): User + { + return User::create($data); + } + + /** + * Adds a single user or + * an entire second collection to the + * current collection + * + * @param \Kirby\Cms\Users|\Kirby\Cms\User|string $object + * @return $this + * @throws \Kirby\Exception\InvalidArgumentException When no `User` or `Users` object or an ID of an existing user is passed + */ + public function add($object): static + { + // add a users collection + if ($object instanceof self) { + $this->data = array_merge($this->data, $object->data); + + // add a user by id + } elseif ( + is_string($object) === true && + $user = App::instance()->user($object) + ) { + $this->__set($user->id(), $user); + + // add a user object + } elseif ($object instanceof User) { + $this->__set($object->id(), $object); + + // give a useful error message on invalid input; + // silently ignore "empty" values for compatibility with existing setups + } elseif (in_array($object, [null, false, true], true) !== true) { + throw new InvalidArgumentException('You must pass a Users or User object or an ID of an existing user to the Users collection'); + } + + return $this; + } + + /** + * Takes an array of user props and creates a nice + * and clean user collection from it + */ + public static function factory(array $users, array $inject = []): static + { + $collection = new static(); + + // read all user blueprints + foreach ($users as $props) { + $user = User::factory($props + $inject); + $collection->set($user->id(), $user); + } + + return $collection; + } + + /** + * Returns all files of all users + */ + public function files(): Files + { + $files = new Files([], $this->parent); + + foreach ($this->data as $user) { + foreach ($user->files() as $fileKey => $file) { + $files->data[$fileKey] = $file; + } + } + + return $files; + } + + /** + * Finds a user in the collection by ID or email address + * @internal Use `$users->find()` instead + */ + public function findByKey(string $key): User|null + { + if ($user = $this->findByUuid($key, 'user')) { + return $user; + } + + if (Str::contains($key, '@') === true) { + return parent::findBy('email', Str::lower($key)); + } + + return parent::findByKey($key); + } + + /** + * Loads a user from disk by passing the absolute path (root) + */ + public static function load(string $root, array $inject = []): static + { + $users = new static(); + + foreach (Dir::read($root) as $userDirectory) { + if (is_dir($root . '/' . $userDirectory) === false) { + continue; + } + + // get role information + $path = $root . '/' . $userDirectory . '/index.php'; + if (is_file($path) === true) { + $credentials = F::load($path, allowOutput: false); + } + + // create user model based on role + $user = User::factory([ + 'id' => $userDirectory, + 'model' => $credentials['role'] ?? null + ] + $inject); + + $users->set($user->id(), $user); + } + + return $users; + } + + /** + * Shortcut for `$users->filter('role', 'admin')` + */ + public function role(string $role): static + { + return $this->filter('role', $role); + } +} diff --git a/kirby/src/Cms/Visitor.php b/kirby/src/Cms/Visitor.php new file mode 100644 index 0000000..511eb8e --- /dev/null +++ b/kirby/src/Cms/Visitor.php @@ -0,0 +1,23 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Visitor extends Facade +{ + public static function instance(): BaseVisitor + { + return App::instance()->visitor(); + } +} diff --git a/kirby/src/Content/Content.php b/kirby/src/Content/Content.php new file mode 100644 index 0000000..978c8d2 --- /dev/null +++ b/kirby/src/Content/Content.php @@ -0,0 +1,248 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Content +{ + /** + * The raw data array + */ + protected array $data = []; + + /** + * Cached field objects + * Once a field is being fetched + * it is added to this array for + * later reuse + */ + protected array $fields = []; + + /** + * A potential parent object. + * Not necessarily needed. Especially + * for testing, but field methods might + * need it. + */ + protected ModelWithContent|null $parent; + + /** + * Magic getter for content fields + */ + public function __call(string $name, array $arguments = []): Field + { + return $this->get($name); + } + + /** + * Creates a new Content object + * + * @param bool $normalize Set to `false` if the input field keys are already lowercase + */ + public function __construct( + array $data = [], + ModelWithContent $parent = null, + bool $normalize = true + ) { + if ($normalize === true) { + $data = array_change_key_case($data, CASE_LOWER); + } + + $this->data = $data; + $this->parent = $parent; + } + + /** + * Same as `self::data()` to improve + * `var_dump` output + * @codeCoverageIgnore + * + * @see self::data() + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Converts the content to a new blueprint + */ + public function convertTo(string $to): array + { + // prepare data + $data = []; + $content = $this; + + // blueprints + $old = $this->parent->blueprint(); + $subfolder = dirname($old->name()); + $new = Blueprint::factory( + $subfolder . '/' . $to, + $subfolder . '/default', + $this->parent + ); + + // forms + $oldForm = new Form([ + 'fields' => $old->fields(), + 'model' => $this->parent + ]); + $newForm = new Form([ + 'fields' => $new->fields(), + 'model' => $this->parent + ]); + + // fields + $oldFields = $oldForm->fields(); + $newFields = $newForm->fields(); + + // go through all fields of new template + foreach ($newFields as $newField) { + $name = $newField->name(); + $oldField = $oldFields->get($name); + + // field name and type matches with old template + if ($oldField?->type() === $newField->type()) { + $data[$name] = $content->get($name)->value(); + } else { + $data[$name] = $newField->default(); + } + } + + // preserve existing fields + return array_merge($this->data, $data); + } + + /** + * Returns the raw data array + */ + public function data(): array + { + return $this->data; + } + + /** + * Returns all registered field objects + */ + public function fields(): array + { + foreach ($this->data as $key => $value) { + $this->get($key); + } + return $this->fields; + } + + /** + * Returns either a single field object + * or all registered fields + */ + public function get(string $key = null): Field|array + { + if ($key === null) { + return $this->fields(); + } + + $key = strtolower($key); + + return $this->fields[$key] ??= new Field( + $this->parent, + $key, + $this->data()[$key] ?? null + ); + } + + /** + * Checks if a content field is set + */ + public function has(string $key): bool + { + return isset($this->data[strtolower($key)]) === true; + } + + /** + * Returns all field keys + */ + public function keys(): array + { + return array_keys($this->data()); + } + + /** + * Returns a clone of the content object + * without the fields, specified by the + * passed key(s) + */ + public function not(string ...$keys): static + { + $copy = clone $this; + $copy->fields = []; + + foreach ($keys as $key) { + unset($copy->data[strtolower($key)]); + } + + return $copy; + } + + /** + * Returns the parent + * Site, Page, File or User object + */ + public function parent(): ModelWithContent|null + { + return $this->parent; + } + + /** + * Set the parent model + * + * @return $this + */ + public function setParent(ModelWithContent $parent): static + { + $this->parent = $parent; + return $this; + } + + /** + * Returns the raw data array + * + * @see self::data() + */ + public function toArray(): array + { + return $this->data(); + } + + /** + * Updates the content and returns + * a cloned object + * + * @return $this + */ + public function update( + array $content = null, + bool $overwrite = false + ): static { + $content = array_change_key_case((array)$content, CASE_LOWER); + $this->data = $overwrite === true ? $content : array_merge($this->data, $content); + + // clear cache of Field objects + $this->fields = []; + + return $this; + } +} diff --git a/kirby/src/Content/ContentStorage.php b/kirby/src/Content/ContentStorage.php new file mode 100644 index 0000000..23eab40 --- /dev/null +++ b/kirby/src/Content/ContentStorage.php @@ -0,0 +1,314 @@ + + * @author Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class ContentStorage +{ + protected ContentStorageHandler $handler; + + public function __construct( + protected ModelWithContent $model, + string $handler = PlainTextContentStorageHandler::class + ) { + $this->handler = new $handler($model); + } + + /** + * Magic caller for handler methods + */ + public function __call(string $name, array $args): mixed + { + return $this->handler->$name(...$args); + } + + /** + * Returns generator for all existing versions-languages combinations + * + * @return Generator + * @todo 4.0.0 consider more descpritive name + */ + public function all(): Generator + { + foreach ($this->model->kirby()->languages()->codes() as $lang) { + foreach ($this->dynamicVersions() as $version) { + if ($this->exists($version, $lang) === true) { + yield $version => $lang; + } + } + } + } + + /** + * Returns the absolute path to the content file + * @internal eventually should only exists in PlainTextContentStorage, + * when not relying anymore on language helper + * + * @param string $lang Code `'default'` in a single-lang installation + * + * @throws \Kirby\Exception\LogicException If the model type doesn't have a known content filename + */ + public function contentFile( + string $version, + string $lang, + bool $force = false + ): string { + $lang = $this->language($lang, $force); + return $this->handler->contentFile($version, $lang); + } + + /** + * Adapts all versions when converting languages + * @internal + */ + public function convertLanguage(string $from, string $to): void + { + $from = $this->language($from, true); + $to = $this->language($to, true); + + foreach ($this->dynamicVersions() as $version) { + $this->handler->move($version, $from, $version, $to); + } + } + + /** + * Creates a new version + * + * @param string|null $lang Code `'default'` in a single-lang installation + * @param array $fields Content fields + */ + public function create( + string $versionType, + string|null $lang, + array $fields + ): void { + $lang = $this->language($lang); + $this->handler->create($versionType, $lang, $fields); + } + + /** + * Returns the default version identifier for the model + * @internal + */ + public function defaultVersion(): string + { + if ( + $this->model instanceof Page === true && + $this->model->isDraft() === true + ) { + return 'changes'; + } + + return 'published'; + } + + /** + * Deletes an existing version in an idempotent way if it was already deleted + * + * @param string $lang Code `'default'` in a single-lang installation + */ + public function delete( + string $version, + string|null $lang = null, + bool $force = false + ): void { + $lang = $this->language($lang, $force); + $this->handler->delete($version, $lang); + } + + /** + * Deletes all versions when deleting a language + * @internal + */ + public function deleteLanguage(string|null $lang): void + { + $lang = $this->language($lang, true); + + foreach ($this->dynamicVersions() as $version) { + $this->handler->delete($version, $lang); + } + } + + /** + * Returns all versions availalbe for the model that can be updated + * @internal + */ + public function dynamicVersions(): array + { + $versions = ['changes']; + + if ( + $this->model instanceof Page === false || + $this->model->isDraft() === false + ) { + $versions[] = 'published'; + } + + return $versions; + } + + /** + * Checks if a version exists + * + * @param string|null $lang Code `'default'` in a single-lang installation; + * checks for "any language" if not provided + */ + public function exists( + string $version, + string|null $lang + ): bool { + if ($lang !== null) { + $lang = $this->language($lang); + } + + return $this->handler->exists($version, $lang); + } + + /** + * Returns the modification timestamp of a version + * if it exists + * + * @param string $lang Code `'default'` in a single-lang installation + */ + public function modified( + string $version, + string|null $lang = null + ): int|null { + $lang = $this->language($lang); + return $this->handler->modified($version, $lang); + } + + /** + * Returns the stored content fields + * + * @param string $lang Code `'default'` in a single-lang installation + * @return array + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function read( + string $version, + string|null $lang = null + ): array { + $lang = $this->language($lang); + $this->ensureExistingVersion($version, $lang); + return $this->handler->read($version, $lang); + } + + /** + * Updates the modification timestamp of an existing version + * + * @param string $lang Code `'default'` in a single-lang installation + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function touch( + string $version, + string|null $lang = null + ): void { + $lang = $this->language($lang); + $this->ensureExistingVersion($version, $lang); + $this->handler->touch($version, $lang); + } + + /** + * Touches all versions of a language + * @internal + */ + public function touchLanguage(string|null $lang): void + { + $lang = $this->language($lang, true); + + foreach ($this->dynamicVersions() as $version) { + if ($this->exists($version, $lang) === true) { + $this->handler->touch($version, $lang); + } + } + } + + /** + * Updates the content fields of an existing version + * + * @param string $lang Code `'default'` in a single-lang installation + * @param array $fields Content fields + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function update( + string $version, + string|null $lang = null, + array $fields = [] + ): void { + $lang = $this->language($lang); + $this->ensureExistingVersion($version, $lang); + $this->handler->update($version, $lang, $fields); + } + + /** + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + protected function ensureExistingVersion( + string $version, + string $lang + ): void { + if ($this->exists($version, $lang) !== true) { + throw new NotFoundException('Version "' . $version . ' (' . $lang . ')" does not already exist'); + } + } + + /** + * Converts a "user-facing" language code to a "raw" language code to be + * used for storage + * + * @param bool $force If set to `true`, the language code is not validated + * @return string Language code + */ + protected function language( + string|null $languageCode = null, + bool $force = false + ): string { + // in force mode, use the provided language code even in single-lang for + // compatibility with the previous behavior in `$model->contentFile()` + if ($force === true) { + return $languageCode ?? 'default'; + } + + // in multi-lang, … + if ($this->model->kirby()->multilang() === true) { + // look up the actual language object if possible + $language = $this->model->kirby()->language($languageCode); + + // validate the language code + if ($language === null) { + throw new InvalidArgumentException('Invalid language: ' . $languageCode); + } + + return $language->code(); + } + + // otherwise use hardcoded "default" code for single lang + return 'default'; + } +} diff --git a/kirby/src/Content/ContentStorageHandler.php b/kirby/src/Content/ContentStorageHandler.php new file mode 100644 index 0000000..6f39d11 --- /dev/null +++ b/kirby/src/Content/ContentStorageHandler.php @@ -0,0 +1,96 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +interface ContentStorageHandler +{ + public function __construct(ModelWithContent $model); + + /** + * Creates a new version + * + * @param string $lang Code `'default'` in a single-lang installation + * @param array $fields Content fields + */ + public function create(string $versionType, string $lang, array $fields): void; + + /** + * Deletes an existing version in an idempotent way if it was already deleted + * + * @param string $lang Code `'default'` in a single-lang installation + */ + public function delete(string $version, string $lang): void; + + /** + * Checks if a version exists + * + * @param string|null $lang Code `'default'` in a single-lang installation; + * checks for "any language" if not provided + */ + public function exists(string $version, string|null $lang): bool; + + /** + * Returns the modification timestamp of a version if it exists + * + * @param string $lang Code `'default'` in a single-lang installation + */ + public function modified(string $version, string $lang): int|null; + + /** + * Moves content from one version-language combination to another + * + * @param string $fromLang Code `'default'` in a single-lang installation + * @param string $toLang Code `'default'` in a single-lang installation + */ + public function move( + string $fromVersion, + string $fromLang, + string $toVersion, + string $toLang + ): void; + + /** + * Returns the stored content fields + * + * @param string $lang Code `'default'` in a single-lang installation + * @return array + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function read(string $version, string $lang): array; + + /** + * Updates the modification timestamp of an existing version + * + * @param string $lang Code `'default'` in a single-lang installation + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function touch(string $version, string $lang): void; + + /** + * Updates the content fields of an existing version + * + * @param string $lang Code `'default'` in a single-lang installation + * @param array $fields Content fields + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function update(string $version, string $lang, array $fields): void; +} diff --git a/kirby/src/Content/ContentTranslation.php b/kirby/src/Content/ContentTranslation.php new file mode 100644 index 0000000..c04ec32 --- /dev/null +++ b/kirby/src/Content/ContentTranslation.php @@ -0,0 +1,173 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class ContentTranslation +{ + protected string $code; + protected array|null $content; + protected string $contentFile; + protected ModelWithContent $parent; + protected string|null $slug; + + /** + * Creates a new translation object + */ + public function __construct(array $props) + { + $this->code = $props['code']; + $this->parent = $props['parent']; + $this->slug = $props['slug'] ?? null; + + if ($content = $props['content'] ?? null) { + $this->content = array_change_key_case($content); + } else { + $this->content = null; + } + } + + /** + * Improve `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Returns the language code of the + * translation + */ + public function code(): string + { + return $this->code; + } + + /** + * Returns the translation content + * as plain array + */ + public function content(): array + { + $parent = $this->parent(); + $content = $this->content ??= $parent->readContent($this->code()); + + // merge with the default content + if ( + $this->isDefault() === false && + $defaultLanguage = $parent->kirby()->defaultLanguage() + ) { + $content = array_merge( + $parent->translation($defaultLanguage->code())?->content() ?? [], + $content + ); + } + + return $content; + } + + /** + * Absolute path to the translation content file + */ + public function contentFile(): string + { + // temporary compatibility change (TODO: take this from the parent `ModelVersion` object) + $identifier = $this->parent::CLASS_ALIAS === 'page' && $this->parent->isDraft() === true ? + 'changes' : + 'published'; + + return $this->contentFile = $this->parent->storage()->contentFile( + $identifier, + $this->code, + true + ); + } + + /** + * Checks if the translation file exists + */ + public function exists(): bool + { + return + empty($this->content) === false || + file_exists($this->contentFile()) === true; + } + + /** + * Returns the translation code as id + */ + public function id(): string + { + return $this->code(); + } + + /** + * Checks if the this is the default translation + * of the model + */ + public function isDefault(): bool + { + return $this->code() === $this->parent->kirby()->defaultLanguage()?->code(); + } + + /** + * Returns the parent page, file or site object + */ + public function parent(): ModelWithContent + { + return $this->parent; + } + + /** + * Returns the custom translation slug + */ + public function slug(): string|null + { + return $this->slug ??= ($this->content()['slug'] ?? null); + } + + /** + * Merge the old and new data + * + * @return $this + */ + public function update(array $data = null, bool $overwrite = false): static + { + $data = array_change_key_case((array)$data); + + $this->content = match ($overwrite) { + true => $data, + default => array_merge($this->content(), $data) + }; + + return $this; + } + + /** + * Converts the most important translation + * props to an array + */ + public function toArray(): array + { + return [ + 'code' => $this->code(), + 'content' => $this->content(), + 'exists' => $this->exists(), + 'slug' => $this->slug(), + ]; + } +} diff --git a/kirby/src/Content/Field.php b/kirby/src/Content/Field.php new file mode 100644 index 0000000..0082063 --- /dev/null +++ b/kirby/src/Content/Field.php @@ -0,0 +1,220 @@ +myField()->lower(); + * ``` + * + * @package Kirby Content + * @author Bastian Allgeier + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Field +{ + /** + * Field method aliases + */ + public static array $aliases = []; + + /** + * The field name + */ + protected string $key; + + /** + * Registered field methods + */ + public static array $methods = []; + + /** + * The parent object if available. + * This will be the page, site, user or file + * to which the content belongs + */ + protected ModelWithContent|null $parent; + + /** + * The value of the field + */ + public mixed $value; + + /** + * Creates a new field object + */ + public function __construct( + ModelWithContent|null $parent, + string $key, + mixed $value + ) { + $this->key = $key; + $this->value = $value; + $this->parent = $parent; + } + + /** + * Magic caller for field methods + */ + public function __call(string $method, array $arguments = []): mixed + { + $method = strtolower($method); + + if (isset(static::$methods[$method]) === true) { + return (static::$methods[$method])(clone $this, ...$arguments); + } + + if (isset(static::$aliases[$method]) === true) { + $method = strtolower(static::$aliases[$method]); + + if (isset(static::$methods[$method]) === true) { + return (static::$methods[$method])(clone $this, ...$arguments); + } + } + + return $this; + } + + /** + * Simplifies the var_dump result + * @codeCoverageIgnore + * + * @see Field::toArray + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Makes it possible to simply echo + * or stringify the entire object + * + * @see Field::toString + */ + public function __toString(): string + { + return $this->toString(); + } + + /** + * Checks if the field exists in the content data array + */ + public function exists(): bool + { + return $this->parent->content()->has($this->key); + } + + /** + * Checks if the field content is empty + */ + public function isEmpty(): bool + { + return + empty($this->value) === true && + in_array($this->value, [0, '0', false], true) === false; + } + + /** + * Checks if the field content is not empty + */ + public function isNotEmpty(): bool + { + return $this->isEmpty() === false; + } + + /** + * Returns the name of the field + */ + public function key(): string + { + return $this->key; + } + + /** + * @see Field::parent() + */ + public function model(): ModelWithContent|null + { + return $this->parent; + } + + /** + * Provides a fallback if the field value is empty + * + * @return $this|static + */ + public function or(mixed $fallback = null): static + { + if ($this->isNotEmpty()) { + return $this; + } + + if ($fallback instanceof self) { + return $fallback; + } + + $field = clone $this; + $field->value = $fallback; + return $field; + } + + /** + * Returns the parent object of the field + */ + public function parent(): ModelWithContent|null + { + return $this->parent; + } + + /** + * Converts the Field object to an array + */ + public function toArray(): array + { + return [$this->key => $this->value]; + } + + /** + * Returns the field value as string + */ + public function toString(): string + { + return (string)$this->value; + } + + /** + * Returns the field content. If a new value is passed, + * the modified field will be returned. Otherwise it + * will return the field value. + */ + public function value(string|Closure $value = null): mixed + { + if ($value === null) { + return $this->value; + } + + if ($value instanceof Closure) { + $value = $value->call($this, $this->value); + } + + $clone = clone $this; + $clone->value = (string)$value; + + return $clone; + } +} diff --git a/kirby/src/Content/PlainTextContentStorageHandler.php b/kirby/src/Content/PlainTextContentStorageHandler.php new file mode 100644 index 0000000..756816a --- /dev/null +++ b/kirby/src/Content/PlainTextContentStorageHandler.php @@ -0,0 +1,253 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PlainTextContentStorageHandler implements ContentStorageHandler +{ + public function __construct(protected ModelWithContent $model) + { + } + + /** + * Creates a new version + * + * @param string $lang Code `'default'` in a single-lang installation + * @param array $fields Content fields + */ + public function create(string $versionType, string $lang, array $fields): void + { + $success = Data::write($this->contentFile($versionType, $lang), $fields); + + // @codeCoverageIgnoreStart + if ($success !== true) { + throw new Exception('Could not write new content file'); + } + // @codeCoverageIgnoreEnd + } + + /** + * Deletes an existing version in an idempotent way if it was already deleted + * + * @param string $lang Code `'default'` in a single-lang installation + */ + public function delete(string $version, string $lang): void + { + $contentFile = $this->contentFile($version, $lang); + $success = F::unlink($contentFile); + + // @codeCoverageIgnoreStart + if ($success !== true) { + throw new Exception('Could not delete content file'); + } + // @codeCoverageIgnoreEnd + + // clean up empty directories + $contentDir = dirname($contentFile); + if ( + Dir::exists($contentDir) === true && + Dir::isEmpty($contentDir) === true + ) { + $success = rmdir($contentDir); + + // @codeCoverageIgnoreStart + if ($success !== true) { + throw new Exception('Could not delete empty content directory'); + } + // @codeCoverageIgnoreEnd + } + } + + /** + * Checks if a version exists + * + * @param string|null $lang Code `'default'` in a single-lang installation; + * checks for "any language" if not provided + */ + public function exists(string $version, string|null $lang): bool + { + if ($lang === null) { + foreach ($this->contentFiles($version) as $file) { + if (is_file($file) === true) { + return true; + } + } + + return false; + } + + return is_file($this->contentFile($version, $lang)) === true; + } + + /** + * Returns the modification timestamp of a version + * if it exists + * + * @param string $lang Code `'default'` in a single-lang installation + */ + public function modified(string $version, string $lang): int|null + { + $modified = F::modified($this->contentFile($version, $lang)); + + if (is_int($modified) === true) { + return $modified; + } + + return null; + } + + /** + * Returns the stored content fields + * + * @param string $lang Code `'default'` in a single-lang installation + * @return array + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function read(string $version, string $lang): array + { + return Data::read($this->contentFile($version, $lang)); + } + + /** + * Updates the modification timestamp of an existing version + * + * @param string $lang Code `'default'` in a single-lang installation + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function touch(string $version, string $lang): void + { + $success = touch($this->contentFile($version, $lang)); + + // @codeCoverageIgnoreStart + if ($success !== true) { + throw new Exception('Could not touch existing content file'); + } + // @codeCoverageIgnoreEnd + } + + /** + * Updates the content fields of an existing version + * + * @param string $lang Code `'default'` in a single-lang installation + * @param array $fields Content fields + * + * @throws \Kirby\Exception\NotFoundException If the version does not exist + */ + public function update(string $version, string $lang, array $fields): void + { + $success = Data::write($this->contentFile($version, $lang), $fields); + + // @codeCoverageIgnoreStart + if ($success !== true) { + throw new Exception('Could not write existing content file'); + } + // @codeCoverageIgnoreEnd + } + + /** + * Returns the absolute path to the content file + * @internal To be made `protected` when the CMS core no longer relies on it + * + * @param string $lang Code `'default'` in a single-lang installation + * + * @throws \Kirby\Exception\LogicException If the model type doesn't have a known content filename + */ + public function contentFile(string $version, string $lang): string + { + if (in_array($version, ['published', 'changes']) !== true) { + throw new InvalidArgumentException('Invalid version identifier "' . $version . '"'); + } + + $extension = $this->model->kirby()->contentExtension(); + $directory = $this->model->root(); + + $directory = match ($this->model::CLASS_ALIAS) { + 'file' => dirname($this->model->root()), + default => $this->model->root() + }; + + $filename = match ($this->model::CLASS_ALIAS) { + 'file' => $this->model->filename(), + 'page' => $this->model->intendedTemplate()->name(), + 'site', + 'user' => $this->model::CLASS_ALIAS, + // @codeCoverageIgnoreStart + default => throw new LogicException('Cannot determine content filename for model type "' . $this->model::CLASS_ALIAS . '"') + // @codeCoverageIgnoreEnd + }; + + if ($this->model::CLASS_ALIAS === 'page' && $this->model->isDraft() === true) { + // changes versions don't need anything extra + // (drafts already have the `_drafts` prefix in their root), + // but a published version is not possible + if ($version === 'published') { + throw new LogicException('Drafts cannot have a published content file'); + } + } elseif ($version === 'changes') { + // other model type or published page that has a changes subfolder + $directory .= '/_changes'; + } + + if ($lang !== 'default') { + return $directory . '/' . $filename . '.' . $lang . '.' . $extension; + } + + return $directory . '/' . $filename . '.' . $extension; + } + + /** + * Returns an array with content files of all languages + * @internal To be made `protected` when the CMS core no longer relies on it + */ + public function contentFiles(string $version): array + { + if ($this->model->kirby()->multilang() === true) { + return $this->model->kirby()->languages()->values( + fn ($lang) => $this->contentFile($version, $lang) + ); + } + + return [ + $this->contentFile($version, 'default') + ]; + } + + /** + * Moves content from one version-language combination to another + * + * @param string $fromLang Code `'default'` in a single-lang installation + * @param string $toLang Code `'default'` in a single-lang installation + */ + public function move( + string $fromVersion, + string $fromLang, + string $toVersion, + string $toLang + ): void { + F::move( + $this->contentFile($fromVersion, $fromLang), + $this->contentFile($toVersion, $toLang) + ); + } +} diff --git a/kirby/src/Data/Data.php b/kirby/src/Data/Data.php new file mode 100644 index 0000000..b6a1cb6 --- /dev/null +++ b/kirby/src/Data/Data.php @@ -0,0 +1,118 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Data +{ + /** + * Handler Type Aliases + */ + public static array $aliases = [ + 'md' => 'txt', + 'mdown' => 'txt', + 'rss' => 'xml', + 'yml' => 'yaml', + ]; + + /** + * All registered handlers + */ + public static array $handlers = [ + 'json' => Json::class, + 'php' => PHP::class, + 'txt' => Txt::class, + 'xml' => Xml::class, + 'yaml' => Yaml::class + ]; + + /** + * Handler getter + */ + public static function handler(string $type): Handler + { + // normalize the type + $type = strtolower($type); + + // find a handler or alias + $handler = static::$handlers[$type] ?? null; + + if ($alias = static::$aliases[$type] ?? null) { + $handler ??= static::$handlers[$alias] ?? null; + } + + if ($handler === null || class_exists($handler) === false) { + throw new Exception('Missing handler for type: "' . $type . '"'); + } + + $handler = new $handler(); + + if ($handler instanceof Handler === false) { + throw new Exception('Handler for type: "' . $type . '" needs to extend Kirby\\Data\\Handler'); + } + + return $handler; + } + + /** + * Decodes data with the specified handler + */ + public static function decode($string, string $type): array + { + return static::handler($type)->decode($string); + } + + /** + * Encodes data with the specified handler + */ + public static function encode($data, string $type): string + { + return static::handler($type)->encode($data); + } + + /** + * Reads data from a file; + * the data handler is automatically chosen by + * the extension if not specified + */ + public static function read(string $file, string|null $type = null): array + { + $type ??= F::extension($file); + $handler = static::handler($type); + return $handler->read($file); + } + + /** + * Writes data to a file; + * the data handler is automatically chosen by + * the extension if not specified + */ + public static function write( + string $file, + $data = [], + string|null $type = null + ): bool { + $type ??= F::extension($file); + $handler = static::handler($type); + return $handler->write($file, $data); + } +} diff --git a/kirby/src/Data/Handler.php b/kirby/src/Data/Handler.php new file mode 100644 index 0000000..95dbad3 --- /dev/null +++ b/kirby/src/Data/Handler.php @@ -0,0 +1,54 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +abstract class Handler +{ + /** + * Parses an encoded string and returns a multi-dimensional array + * + * @throws \Exception if the file can't be parsed + */ + abstract public static function decode($string): array; + + /** + * Converts an array to an encoded string + */ + abstract public static function encode($data): string; + + /** + * Reads data from a file + */ + public static function read(string $file): array + { + $contents = F::read($file); + + if ($contents === false) { + throw new Exception('The file "' . $file . '" does not exist or cannot be read'); + } + + return static::decode($contents); + } + + /** + * Writes data to a file + */ + public static function write(string $file, $data = []): bool + { + return F::write($file, static::encode($data)); + } +} diff --git a/kirby/src/Data/Json.php b/kirby/src/Data/Json.php new file mode 100644 index 0000000..35fa867 --- /dev/null +++ b/kirby/src/Data/Json.php @@ -0,0 +1,54 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Json extends Handler +{ + /** + * Converts an array to an encoded JSON string + */ + public static function encode($data): string + { + return json_encode( + $data, + JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE + ); + } + + /** + * Parses an encoded JSON string and returns a multi-dimensional array + */ + public static function decode($string): array + { + if ($string === null || $string === '') { + return []; + } + + if (is_array($string) === true) { + return $string; + } + + if (is_string($string) === false) { + throw new InvalidArgumentException('Invalid JSON data; please pass a string'); + } + + $result = json_decode($string, true); + + if (is_array($result) === true) { + return $result; + } + + throw new InvalidArgumentException('JSON string is invalid'); + } +} diff --git a/kirby/src/Data/PHP.php b/kirby/src/Data/PHP.php new file mode 100644 index 0000000..b22d38a --- /dev/null +++ b/kirby/src/Data/PHP.php @@ -0,0 +1,82 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class PHP extends Handler +{ + /** + * Converts an array to PHP file content + * + * @param string $indent For internal use only + */ + public static function encode($data, string $indent = ''): string + { + switch (gettype($data)) { + case 'array': + $indexed = array_keys($data) === range(0, count($data) - 1); + $array = []; + + foreach ($data as $key => $value) { + $array[] = "$indent " . ($indexed ? '' : static::encode($key) . ' => ') . static::encode($value, "$indent "); + } + + return "[\n" . implode(",\n", $array) . "\n" . $indent . ']'; + case 'boolean': + return $data ? 'true' : 'false'; + case 'integer': + case 'double': + return (string)$data; + default: + return var_export($data, true); + } + } + + /** + * PHP strings shouldn't be decoded manually + */ + public static function decode($string): array + { + throw new BadMethodCallException('The PHP::decode() method is not implemented'); + } + + /** + * Reads data from a file + */ + public static function read(string $file): array + { + if (is_file($file) !== true) { + throw new Exception('The file "' . $file . '" does not exist'); + } + + return (array)F::load($file, [], allowOutput: false); + } + + /** + * Creates a PHP file with the given data + */ + public static function write(string $file, $data = []): bool + { + $php = static::encode($data); + $php = " + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Txt extends Handler +{ + /** + * Converts an array to an encoded Kirby txt string + */ + public static function encode($data): string + { + $result = []; + + foreach (A::wrap($data) as $key => $value) { + if (empty($key) === true || $value === null) { + continue; + } + + $key = Str::ucfirst(Str::slug($key)); + $value = static::encodeValue($value); + $result[$key] = static::encodeResult($key, $value); + } + + return implode("\n\n----\n\n", $result); + } + + /** + * Helper for converting the value + */ + protected static function encodeValue(array|string|float $value): string + { + // avoid problems with arrays + if (is_array($value) === true) { + $value = Data::encode($value, 'yaml'); + // avoid problems with localized floats + } elseif (is_float($value) === true) { + $value = Str::float($value); + } + + // escape accidental dividers within a field + $value = preg_replace('!(?<=\n|^)----!', '\\----', $value); + + return $value; + } + + /** + * Helper for converting the key and value to the result string + */ + protected static function encodeResult(string $key, string $value): string + { + $value = trim($value); + $result = $key . ':'; + + // multi-line content + $result .= match (preg_match('!\R!', $value)) { + 1 => "\n\n", + default => ' ', + }; + + $result .= $value; + + return $result; + } + + /** + * Parses a Kirby txt string and returns a multi-dimensional array + */ + public static function decode($string): array + { + if ($string === null || $string === '') { + return []; + } + + if (is_array($string) === true) { + return $string; + } + + if (is_string($string) === false) { + throw new InvalidArgumentException('Invalid TXT data; please pass a string'); + } + + // remove Unicode BOM at the beginning of the file + if (Str::startsWith($string, "\xEF\xBB\xBF") === true) { + $string = substr($string, 3); + } + + // explode all fields by the line separator + $fields = preg_split('!\n----\s*\n*!', $string); + + // start the data array + $data = []; + + // loop through all fields and add them to the content + foreach ($fields as $field) { + if ($pos = strpos($field, ':')) { + $key = strtolower(trim(substr($field, 0, $pos))); + $key = str_replace(['-', ' '], '_', $key); + + // Don't add fields with empty keys + if (empty($key) === true) { + continue; + } + + $value = trim(substr($field, $pos + 1)); + + // unescape escaped dividers within a field + $data[$key] = preg_replace( + '!(?<=\n|^)\\\\----!', + '----', + $value + ); + } + } + + return $data; + } +} diff --git a/kirby/src/Data/Xml.php b/kirby/src/Data/Xml.php new file mode 100644 index 0000000..68fa511 --- /dev/null +++ b/kirby/src/Data/Xml.php @@ -0,0 +1,58 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Xml extends Handler +{ + /** + * Converts an array to an encoded XML string + */ + public static function encode($data): string + { + return XmlConverter::create($data, 'data'); + } + + /** + * Parses an encoded XML string and returns a multi-dimensional array + */ + public static function decode($string): array + { + if ($string === null || $string === '') { + return []; + } + + if (is_array($string) === true) { + return $string; + } + + if (is_string($string) === false) { + throw new InvalidArgumentException('Invalid XML data; please pass a string'); + } + + $result = XmlConverter::parse($string); + + if (is_array($result) === true) { + // remove the root's name if it is the default to ensure that + // the decoded data is the same as the input to the encode() method + if ($result['@name'] === 'data') { + unset($result['@name']); + } + + return $result; + } + + throw new InvalidArgumentException('XML string is invalid'); + } +} diff --git a/kirby/src/Data/Yaml.php b/kirby/src/Data/Yaml.php new file mode 100644 index 0000000..efa9c9c --- /dev/null +++ b/kirby/src/Data/Yaml.php @@ -0,0 +1,62 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Yaml extends Handler +{ + /** + * Converts an array to an encoded YAML string + */ + public static function encode($data): string + { + return match (static::handler()) { + 'symfony' => YamlSymfony::encode($data), + default => YamlSpyc::encode($data), + }; + } + + /** + * Parses an encoded YAML string and returns a multi-dimensional array + */ + public static function decode($string): array + { + if ($string === null || $string === '') { + return []; + } + + if (is_array($string) === true) { + return $string; + } + + if (is_string($string) === false) { + throw new InvalidArgumentException('Invalid YAML data; please pass a string'); + } + + return match (static::handler()) { + 'symfony' => YamlSymfony::decode($string), + default => YamlSpyc::decode($string) + }; + } + + /** + * Returns which YAML parser (`spyc` or `symfony`) + * is configured to be used + * @internal + */ + public static function handler(): string + { + return App::instance(null, true)?->option('yaml.handler') ?? 'spyc'; + } +} diff --git a/kirby/src/Data/YamlSpyc.php b/kirby/src/Data/YamlSpyc.php new file mode 100644 index 0000000..a00e92d --- /dev/null +++ b/kirby/src/Data/YamlSpyc.php @@ -0,0 +1,43 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class YamlSpyc +{ + /** + * Converts an array to an encoded YAML string + */ + public static function encode($data): string + { + // $data, $indent, $wordwrap, $no_opening_dashes + return Spyc::YAMLDump($data, false, false, true); + } + + /** + * Parses an encoded YAML string and returns a multi-dimensional array + */ + public static function decode($string): array + { + $result = Spyc::YAMLLoadString($string); + + if (is_array($result) === true) { + return $result; + } + + // apparently Spyc always returns an array, even for invalid YAML syntax + // so this Exception should currently never be thrown + throw new InvalidArgumentException('The YAML data cannot be parsed'); // @codeCoverageIgnore + } +} diff --git a/kirby/src/Data/YamlSymfony.php b/kirby/src/Data/YamlSymfony.php new file mode 100644 index 0000000..013a0d0 --- /dev/null +++ b/kirby/src/Data/YamlSymfony.php @@ -0,0 +1,44 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class YamlSymfony +{ + /** + * Converts an array to an encoded YAML string + */ + public static function encode($data): string + { + $kirby = App::instance(null, true); + + return Symfony::dump( + $data, + $kirby?->option('yaml.params.inline') ?? 9999, + $kirby?->option('yaml.params.indent') ?? 2, + Symfony::DUMP_MULTI_LINE_LITERAL_BLOCK | Symfony::DUMP_EMPTY_ARRAY_AS_SEQUENCE + ); + } + + /** + * Parses an encoded YAML string and returns a multi-dimensional array + */ + public static function decode($string): array + { + $result = Symfony::parse($string); + $result = A::wrap($result); + return $result; + } +} diff --git a/kirby/src/Database/Database.php b/kirby/src/Database/Database.php new file mode 100644 index 0000000..1284017 --- /dev/null +++ b/kirby/src/Database/Database.php @@ -0,0 +1,587 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Database +{ + /** + * The number of affected rows for the last query + */ + protected int|null $affected = null; + + /** + * Whitelist for column names + */ + protected array $columnWhitelist = []; + + /** + * The established connection + */ + protected PDO|null $connection = null; + + /** + * A global array of started connections + */ + public static array $connections = []; + + /** + * Database name + */ + protected string $database; + + protected string $dsn; + + /** + * Set to true to throw exceptions on failed queries + */ + protected bool $fail = false; + + /** + * The connection id + */ + protected string $id; + + /** + * The last error + */ + protected Throwable|null $lastError = null; + + /** + * The last insert id + */ + protected int|null $lastId = null; + + /** + * The last query + */ + protected string $lastQuery; + + /** + * The last result set + */ + protected $lastResult; + + /** + * Optional prefix for table names + */ + protected string|null $prefix = null; + + /** + * The PDO query statement + */ + protected PDOStatement|null $statement = null; + + /** + * List of existing tables in the database + */ + protected array|null $tables = null; + + /** + * An array with all queries which are being made + */ + protected array $trace = []; + + /** + * The database type (mysql, sqlite) + */ + protected string $type; + + public static array $types = []; + + /** + * Creates a new Database instance + */ + public function __construct(array $params = []) + { + $this->connect($params); + } + + /** + * Returns one of the started instances + */ + public static function instance(string|null $id = null): static|null + { + if ($id === null) { + return A::last(static::$connections); + } + + return static::$connections[$id] ?? null; + } + + /** + * Returns all started instances + */ + public static function instances(): array + { + return static::$connections; + } + + /** + * Connects to a database + * + * @param array|null $params This can either be a config key or an array of parameters for the connection + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function connect(array|null $params = null): PDO|null + { + $defaults = [ + 'database' => null, + 'type' => 'mysql', + 'prefix' => null, + 'user' => null, + 'password' => null, + 'id' => uniqid() + ]; + + $options = array_merge($defaults, $params); + + // store the database information + $this->database = $options['database']; + $this->type = $options['type']; + $this->prefix = $options['prefix']; + $this->id = $options['id']; + + if (isset(static::$types[$this->type]) === false) { + throw new InvalidArgumentException('Invalid database type: ' . $this->type); + } + + // fetch the dsn and store it + $this->dsn = (static::$types[$this->type]['dsn'])($options); + + // try to connect + $this->connection = new PDO($this->dsn, $options['user'], $options['password']); + $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + + // TODO: behavior without this attribute would be preferrable + // (actual types instead of all strings) but would be a breaking change + if ($this->type === 'sqlite') { + $this->connection->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); + } + + // store the connection + static::$connections[$this->id] = $this; + + // return the connection + return $this->connection; + } + + /** + * Returns the currently active connection + */ + public function connection(): PDO|null + { + return $this->connection; + } + + /** + * Sets the exception mode + * + * @return $this + */ + public function fail(bool $fail = true): static + { + $this->fail = $fail; + return $this; + } + + /** + * Returns the used database type + */ + public function type(): string + { + return $this->type; + } + + /** + * Returns the used table name prefix + */ + public function prefix(): string|null + { + return $this->prefix; + } + + /** + * Escapes a value to be used for a safe query + * NOTE: Prepared statements using bound parameters are more secure and solid + */ + public function escape(string $value): string + { + return substr($this->connection()->quote($value), 1, -1); + } + + /** + * Adds a value to the db trace and also + * returns the entire trace if nothing is specified + */ + public function trace(array|null $data = null): array + { + // return the full trace + if ($data === null) { + return $this->trace; + } + + // add a new entry to the trace + $this->trace[] = $data; + + return $this->trace; + } + + /** + * Returns the number of affected rows for the last query + */ + public function affected(): int|null + { + return $this->affected; + } + + /** + * Returns the last id if available + */ + public function lastId(): int|null + { + return $this->lastId; + } + + /** + * Returns the last query + */ + public function lastQuery(): string|null + { + return $this->lastQuery; + } + + /** + * Returns the last set of results + */ + public function lastResult() + { + return $this->lastResult; + } + + /** + * Returns the last db error + */ + public function lastError(): Throwable|null + { + return $this->lastError; + } + + /** + * Returns the name of the database + */ + public function name(): string|null + { + return $this->database; + } + + /** + * Private method to execute database queries. + * This is used by the query() and execute() methods + */ + protected function hit(string $query, array $bindings = []): bool + { + // try to prepare and execute the sql + try { + $this->statement = $this->connection->prepare($query); + $this->statement->execute($bindings); + + $this->affected = $this->statement->rowCount(); + $this->lastId = Str::startsWith($query, 'insert ', true) ? $this->connection->lastInsertId() : null; + $this->lastError = null; + + // store the final sql to add it to the trace later + $this->lastQuery = $this->statement->queryString; + } catch (Throwable $e) { + // store the error + $this->affected = 0; + $this->lastError = $e; + $this->lastId = null; + $this->lastQuery = $query; + + // only throw the extension if failing is allowed + if ($this->fail === true) { + throw $e; + } + } + + // add a new entry to the singleton trace array + $this->trace([ + 'query' => $this->lastQuery, + 'bindings' => $bindings, + 'error' => $this->lastError + ]); + + // return true or false on success or failure + return $this->lastError === null; + } + + /** + * Executes a sql query, which is expected to return a set of results + */ + public function query( + string $query, + array $bindings = [], + array $params = [] + ) { + $defaults = [ + 'flag' => null, + 'method' => 'fetchAll', + 'fetch' => Obj::class, + 'iterator' => Collection::class, + ]; + + $options = array_merge($defaults, $params); + + if ($this->hit($query, $bindings) === false) { + return false; + } + + // define the default flag for the fetch method + if ( + $options['fetch'] instanceof Closure || + $options['fetch'] === 'array' + ) { + $flags = PDO::FETCH_ASSOC; + } else { + $flags = PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE; + } + + // add optional flags + if (empty($options['flag']) === false) { + $flags |= $options['flag']; + } + + // set the fetch mode + if ( + $options['fetch'] instanceof Closure || + $options['fetch'] === 'array' + ) { + $this->statement->setFetchMode($flags); + } else { + $this->statement->setFetchMode($flags, $options['fetch']); + } + + // fetch that stuff + $results = $this->statement->{$options['method']}(); + + // apply the fetch closure to all results if given + if ($options['fetch'] instanceof Closure) { + if ($options['method'] === 'fetchAll') { + // fetching multiple records + foreach ($results as $key => $result) { + $results[$key] = $options['fetch']($result, $key); + } + } elseif ($options['method'] === 'fetch' && $results !== false) { + // fetching a single record + $results = $options['fetch']($results, null); + } + } + + if ($options['iterator'] === 'array') { + return $this->lastResult = $results; + } + + return $this->lastResult = new $options['iterator']($results); + } + + /** + * Executes a sql query, which is expected + * to not return a set of results + */ + public function execute(string $query, array $bindings = []): bool + { + return $this->lastResult = $this->hit($query, $bindings); + } + + /** + * Returns the correct Sql generator instance + * for the type of database + */ + public function sql(): Sql + { + $className = static::$types[$this->type]['sql'] ?? 'Sql'; + return new $className($this); + } + + /** + * Sets the current table, which should be queried. Returns a + * Query object, which can be used to build a full query + * for that table + */ + public function table(string $table): Query + { + return new Query($this, $this->prefix() . $table); + } + + /** + * Checks if a table exists in the current database + */ + public function validateTable(string $table): bool + { + if ($this->tables === null) { + // Get the list of tables from the database + $sql = $this->sql()->tables(); + $results = $this->query($sql['query'], $sql['bindings']); + + if ($results) { + $this->tables = $results->pluck('name'); + } else { + return false; + } + } + + return in_array($table, $this->tables) === true; + } + + /** + * Checks if a column exists in a specified table + */ + public function validateColumn(string $table, string $column): bool + { + if (isset($this->columnWhitelist[$table]) === false) { + if ($this->validateTable($table) === false) { + $this->columnWhitelist[$table] = []; + return false; + } + + // Get the column whitelist from the database + $sql = $this->sql()->columns($table); + $results = $this->query($sql['query'], $sql['bindings']); + + if ($results) { + $this->columnWhitelist[$table] = $results->pluck('name'); + } else { + return false; + } + } + + return in_array($column, $this->columnWhitelist[$table]) === true; + } + + /** + * Creates a new table + */ + public function createTable(string $table, array $columns = []): bool + { + $sql = $this->sql()->createTable($table, $columns); + $queries = Str::split($sql['query'], ';'); + + foreach ($queries as $query) { + $query = trim($query); + + if ($this->execute($query, $sql['bindings']) === false) { + return false; + } + } + + // update cache + if (in_array($table, $this->tables ?? []) !== true) { + $this->tables[] = $table; + } + + return true; + } + + /** + * Drops a table + */ + public function dropTable(string $table): bool + { + $sql = $this->sql()->dropTable($table); + if ($this->execute($sql['query'], $sql['bindings']) !== true) { + return false; + } + + // update cache + $key = array_search($table, $this->tables ?? []); + if ($key !== false) { + unset($this->tables[$key]); + } + + return true; + } + + /** + * Magic way to start queries for tables by + * using a method named like the table. + * I.e. $db->users()->all() + */ + public function __call(string $method, mixed $arguments = null): Query + { + return $this->table($method); + } +} + +/** + * MySQL database connector + */ +Database::$types['mysql'] = [ + 'sql' => Mysql::class, + 'dsn' => function (array $params): string { + if (isset($params['host']) === false && isset($params['socket']) === false) { + throw new InvalidArgumentException('The mysql connection requires either a "host" or a "socket" parameter'); + } + + if (isset($params['database']) === false) { + throw new InvalidArgumentException('The mysql connection requires a "database" parameter'); + } + + $parts = []; + + if (empty($params['host']) === false) { + $parts[] = 'host=' . $params['host']; + } + + if (empty($params['port']) === false) { + $parts[] = 'port=' . $params['port']; + } + + if (empty($params['socket']) === false) { + $parts[] = 'unix_socket=' . $params['socket']; + } + + if (empty($params['database']) === false) { + $parts[] = 'dbname=' . $params['database']; + } + + $parts[] = 'charset=' . ($params['charset'] ?? 'utf8'); + + return 'mysql:' . implode(';', $parts); + } +]; + +/** + * SQLite database connector + */ +Database::$types['sqlite'] = [ + 'sql' => Sqlite::class, + 'dsn' => function (array $params): string { + if (isset($params['database']) === false) { + throw new InvalidArgumentException('The sqlite connection requires a "database" parameter'); + } + + return 'sqlite:' . $params['database']; + } +]; diff --git a/kirby/src/Database/Db.php b/kirby/src/Database/Db.php new file mode 100644 index 0000000..3b4648d --- /dev/null +++ b/kirby/src/Database/Db.php @@ -0,0 +1,293 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Db +{ + /** + * Query shortcuts + */ + public static array $queries = []; + + /** + * The singleton Database object + */ + public static Database|null $connection = null; + + /** + * (Re)connect the database + * + * @param array|null $params Pass `[]` to use the default params from the config, + * don't pass any argument to get the current connection + */ + public static function connect(array|null $params = null): Database + { + if ($params === null && static::$connection !== null) { + return static::$connection; + } + + // try to connect with the default + // connection settings if no params are set + $params ??= [ + 'type' => Config::get('db.type', 'mysql'), + 'host' => Config::get('db.host', 'localhost'), + 'user' => Config::get('db.user', 'root'), + 'password' => Config::get('db.password', ''), + 'database' => Config::get('db.database', ''), + 'prefix' => Config::get('db.prefix', ''), + 'port' => Config::get('db.port', '') + ]; + + return static::$connection = new Database($params); + } + + /** + * Returns the current database connection + */ + public static function connection(): Database|null + { + return static::$connection; + } + + /** + * Sets the current table which should be queried. Returns a + * Query object, which can be used to build a full query for + * that table. + */ + public static function table(string $table): Query + { + $db = static::connect(); + return $db->table($table); + } + + /** + * Executes a raw SQL query which expects a set of results + */ + public static function query(string $query, array $bindings = [], array $params = []) + { + $db = static::connect(); + return $db->query($query, $bindings, $params); + } + + /** + * Executes a raw SQL query which expects + * no set of results (i.e. update, insert, delete) + */ + public static function execute(string $query, array $bindings = []): bool + { + $db = static::connect(); + return $db->execute($query, $bindings); + } + + /** + * Magic calls for other static Db methods are + * redirected to either a predefined query or + * the respective method of the Database object + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function __callStatic(string $method, $arguments) + { + if (isset(static::$queries[$method])) { + return (static::$queries[$method])(...$arguments); + } + + if ( + static::$connection !== null && + method_exists(static::$connection, $method) === true + ) { + return call_user_func_array([static::$connection, $method], $arguments); + } + + throw new InvalidArgumentException('Invalid static Db method: ' . $method); + } +} + +// @codeCoverageIgnoreStart + +/** + * Shortcut for SELECT clauses + * + * @param string $table The name of the table which should be queried + * @param mixed $columns Either a string with columns or an array of column names + * @param mixed $where The WHERE clause; can be a string or an array + */ +Db::$queries['select'] = function ( + string $table, + $columns = '*', + $where = null, + string|null $order = null, + int $offset = 0, + int|null $limit = null +) { + return Db::table($table) + ->select($columns) + ->where($where) + ->order($order) + ->offset($offset) + ->limit($limit) + ->all(); +}; + +/** + * Shortcut for selecting a single row in a table + * + * @param string $table The name of the table which should be queried + * @param mixed $columns Either a string with columns or an array of column names + * @param mixed $where The WHERE clause; can be a string or an array + */ +Db::$queries['first'] = Db::$queries['row'] = Db::$queries['one'] = function ( + string $table, + $columns = '*', + $where = null, + string|null $order = null +) { + return Db::table($table) + ->select($columns) + ->where($where) + ->order($order) + ->first(); +}; + +/** + * Returns only values from a single column + * + * @param string $table The name of the table which should be queried + * @param string $column The name of the column to select from + * @param mixed $where The WHERE clause; can be a string or an array + */ +Db::$queries['column'] = function ( + string $table, + string $column, + $where = null, + string|null $order = null, + int $offset = 0, + int|null $limit = null +) { + return Db::table($table) + ->where($where) + ->order($order) + ->offset($offset) + ->limit($limit) + ->column($column); +}; + +/** + * Shortcut for inserting a new row into a table + * + * @param string $table The name of the table which should be queried + * @param array $values An array of values which should be inserted + * @return mixed Returns the last inserted id on success or false + */ +Db::$queries['insert'] = function (string $table, array $values): mixed { + return Db::table($table)->insert($values); +}; + +/** + * Shortcut for updating a row in a table + * + * @param string $table The name of the table which should be queried + * @param array $values An array of values which should be inserted + * @param mixed $where An optional WHERE clause + */ +Db::$queries['update'] = function ( + string $table, + array $values, + $where = null +): bool { + return Db::table($table)->where($where)->update($values); +}; + +/** + * Shortcut for deleting rows in a table + * + * @param string $table The name of the table which should be queried + * @param mixed $where An optional WHERE clause + */ +Db::$queries['delete'] = function (string $table, $where = null): bool { + return Db::table($table)->where($where)->delete(); +}; + +/** + * Shortcut for counting rows in a table + * + * @param string $table The name of the table which should be queried + * @param mixed $where An optional WHERE clause + */ +Db::$queries['count'] = function (string $table, mixed $where = null): int { + return Db::table($table)->where($where)->count(); +}; + +/** + * Shortcut for calculating the minimum value in a column + * + * @param string $table The name of the table which should be queried + * @param string $column The name of the column of which the minimum should be calculated + * @param mixed $where An optional WHERE clause + */ +Db::$queries['min'] = function ( + string $table, + string $column, + $where = null +): float { + return Db::table($table)->where($where)->min($column); +}; + +/** + * Shortcut for calculating the maximum value in a column + * + * @param string $table The name of the table which should be queried + * @param string $column The name of the column of which the maximum should be calculated + * @param mixed $where An optional WHERE clause + */ +Db::$queries['max'] = function ( + string $table, + string $column, + $where = null +): float { + return Db::table($table)->where($where)->max($column); +}; + +/** + * Shortcut for calculating the average value in a column + * + * @param string $table The name of the table which should be queried + * @param string $column The name of the column of which the average should be calculated + * @param mixed $where An optional WHERE clause + */ +Db::$queries['avg'] = function ( + string $table, + string $column, + $where = null +): float { + return Db::table($table)->where($where)->avg($column); +}; + +/** + * Shortcut for calculating the sum of all values in a column + * + * @param string $table The name of the table which should be queried + * @param string $column The name of the column of which the sum should be calculated + * @param mixed $where An optional WHERE clause + */ +Db::$queries['sum'] = function ( + string $table, + string $column, + $where = null +): float { + return Db::table($table)->where($where)->sum($column); +}; + +// @codeCoverageIgnoreEnd diff --git a/kirby/src/Database/Query.php b/kirby/src/Database/Query.php new file mode 100644 index 0000000..f3acd71 --- /dev/null +++ b/kirby/src/Database/Query.php @@ -0,0 +1,942 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Query +{ + public const ERROR_INVALID_QUERY_METHOD = 0; + + /** + * Parent Database object + */ + protected Database|null $database = null; + + /** + * The object which should be fetched for each row + * or function to call for each row + */ + protected string|Closure $fetch = Obj::class; + + /** + * The iterator class, which should be used for result sets + */ + protected string $iterator = Collection::class; + + /** + * An array of bindings for the final query + */ + protected array $bindings = []; + + /** + * The table name + */ + protected string $table; + + /** + * The name of the primary key column + */ + protected string $primaryKeyName = 'id'; + + /** + * An array with additional join parameters + */ + protected array|null $join = null; + + /** + * A list of columns, which should be selected + */ + protected array|string|null $select = null; + + /** + * Boolean for distinct select clauses + */ + protected bool|null $distinct = null; + + /** + * Boolean for if exceptions should be thrown on failing queries + */ + protected bool $fail = false; + + /** + * A list of values for update and insert clauses + */ + protected array|null $values = null; + + /** + * WHERE clause + */ + protected $where = null; + + /** + * GROUP BY clause + */ + protected string|null $group = null; + + /** + * HAVING clause + */ + protected $having = null; + + /** + * ORDER BY clause + */ + protected $order = null; + + /** + * The offset, which should be applied to the select query + */ + protected int $offset = 0; + + /** + * The limit, which should be applied to the select query + */ + protected int|null $limit = null; + + /** + * Boolean to enable query debugging + */ + protected bool $debug = false; + + /** + * Constructor + * + * @param \Kirby\Database\Database $database Database object + * @param string $table Optional name of the table, which should be queried + */ + public function __construct(Database $database, string $table) + { + $this->database = $database; + $this->table($table); + } + + /** + * Reset the query class after each db hit + */ + protected function reset(): void + { + $this->bindings = []; + $this->join = null; + $this->select = null; + $this->distinct = null; + $this->fail = false; + $this->values = null; + $this->where = null; + $this->group = null; + $this->having = null; + $this->order = null; + $this->offset = 0; + $this->limit = null; + $this->debug = false; + } + + /** + * Enables query debugging. + * If enabled, the query will return an array with all important info about + * the query instead of actually executing the query and returning results + * + * @return $this + */ + public function debug(bool $debug = true): static + { + $this->debug = $debug; + return $this; + } + + /** + * Enables distinct select clauses. + * + * @return $this + */ + public function distinct(bool $distinct = true): static + { + $this->distinct = $distinct; + return $this; + } + + /** + * Enables failing queries. + * If enabled queries will no longer fail silently but throw an exception + * + * @return $this + */ + public function fail(bool $fail = true): static + { + $this->fail = $fail; + return $this; + } + + /** + * Sets the object class, which should be fetched; + * set this to `'array'` to get a simple array instead of an object; + * pass a function that receives the `$data` and the `$key` to generate arbitrary data structures + * + * @return $this + */ + public function fetch(string|callable|Closure $fetch): static + { + if (is_callable($fetch) === true) { + $fetch = Closure::fromCallable($fetch); + } + + $this->fetch = $fetch; + return $this; + } + + /** + * Sets the iterator class, which should be used for multiple results + * Set this to array to get a simple array instead of an iterator object + * + * @return $this + */ + public function iterator(string $iterator): static + { + $this->iterator = $iterator; + return $this; + } + + /** + * Sets the name of the table, which should be queried + * + * @return $this + * @throws \Kirby\Exception\InvalidArgumentException if the table does not exist + */ + public function table(string $table): static + { + if ($this->database->validateTable($table) === false) { + throw new InvalidArgumentException('Invalid table: ' . $table); + } + + $this->table = $table; + return $this; + } + + /** + * Sets the name of the primary key column + * + * @return $this + */ + public function primaryKeyName(string $primaryKeyName): static + { + $this->primaryKeyName = $primaryKeyName; + return $this; + } + + /** + * Sets the columns, which should be selected from the table + * By default all columns will be selected + * + * @param array|string|null $select Pass either a string of columns or an array + * @return $this + */ + public function select(array|string|null $select): static + { + $this->select = $select; + return $this; + } + + /** + * Adds a new join clause to the query + * + * @param string $table Name of the table, which should be joined + * @param string $on The on clause for this join + * @param string $type The join type. Uses an inner join by default + * @return $this + */ + public function join( + string $table, + string $on, + string $type = 'JOIN' + ): static { + $join = [ + 'table' => $table, + 'on' => $on, + 'type' => $type + ]; + + $this->join[] = $join; + return $this; + } + + /** + * Shortcut for creating a left join clause + * + * @param string $table Name of the table, which should be joined + * @param string $on The on clause for this join + * @return $this + */ + public function leftJoin(string $table, string $on): static + { + return $this->join($table, $on, 'left join'); + } + + /** + * Shortcut for creating a right join clause + * + * @param string $table Name of the table, which should be joined + * @param string $on The on clause for this join + * @return $this + */ + public function rightJoin(string $table, string $on): static + { + return $this->join($table, $on, 'right join'); + } + + /** + * Shortcut for creating an inner join clause + * + * @param string $table Name of the table, which should be joined + * @param string $on The on clause for this join + * @return $this + */ + public function innerJoin($table, $on): static + { + return $this->join($table, $on, 'inner join'); + } + + /** + * Sets the values which should be used for the update or insert clause + * + * @param mixed $values Can either be a string or an array of values + * @return $this + */ + public function values($values = []): static + { + if ($values !== null) { + $this->values = $values; + } + return $this; + } + + /** + * Attaches additional bindings to the query. + * Also can be used as getter for all attached bindings + * by not passing an argument. + * + * @return array|$this + * @psalm-return ($bindings is array ? $this : array) + */ + public function bindings(array|null $bindings = null): array|static + { + if (is_array($bindings) === true) { + $this->bindings = array_merge($this->bindings, $bindings); + return $this; + } + + return $this->bindings; + } + + /** + * Attaches an additional where clause + * + * All available ways to add where clauses + * + * ->where('username like "myuser"'); (args: 1) + * ->where(['username' => 'myuser']); (args: 1) + * ->where(function($where) { $where->where('id', '=', 1) }) (args: 1) + * ->where('username like ?', 'myuser') (args: 2) + * ->where('username', 'like', 'myuser'); (args: 3) + * + * @return $this + */ + public function where(...$args): static + { + $this->where = $this->filterQuery($args, $this->where); + return $this; + } + + /** + * Shortcut to attach a where clause with an OR operator. + * Check out the where() method docs for additional info. + * + * @return $this + */ + public function orWhere(...$args): static + { + $this->where = $this->filterQuery($args, $this->where, 'OR'); + return $this; + } + + /** + * Shortcut to attach a where clause with an AND operator. + * Check out the where() method docs for additional info. + * + * @return $this + */ + public function andWhere(...$args): static + { + $this->where = $this->filterQuery($args, $this->where, 'AND'); + return $this; + } + + /** + * Attaches a group by clause + * + * @return $this + */ + public function group(string|null $group = null): static + { + $this->group = $group; + return $this; + } + + /** + * Attaches an additional having clause + * + * All available ways to add having clauses + * + * ->having('username like "myuser"'); (args: 1) + * ->having(['username' => 'myuser']); (args: 1) + * ->having(function($having) { $having->having('id', '=', 1) }) (args: 1) + * ->having('username like ?', 'myuser') (args: 2) + * ->having('username', 'like', 'myuser'); (args: 3) + * + * @return $this + */ + public function having(...$args): static + { + $this->having = $this->filterQuery($args, $this->having); + return $this; + } + + /** + * Attaches an order clause + * + * @param string|null $order + * @return $this + */ + public function order(string $order = null) + { + $this->order = $order; + return $this; + } + + /** + * Sets the offset for select clauses + * + * @return $this + */ + public function offset(int $offset): static + { + $this->offset = $offset; + return $this; + } + + /** + * Sets the limit for select clauses + * + * @return $this + */ + public function limit(int|null $limit = null): static + { + $this->limit = $limit; + return $this; + } + + /** + * Builds the different types of SQL queries + * This uses the SQL class to build stuff. + * + * @param string $type (select, update, insert) + * @return array The final query + */ + public function build(string $type): array + { + $sql = $this->database->sql(); + + return match ($type) { + 'select' => $sql->select([ + 'table' => $this->table, + 'columns' => $this->select, + 'join' => $this->join, + 'distinct' => $this->distinct, + 'where' => $this->where, + 'group' => $this->group, + 'having' => $this->having, + 'order' => $this->order, + 'offset' => $this->offset, + 'limit' => $this->limit, + 'bindings' => $this->bindings + ]), + 'update' => $sql->update([ + 'table' => $this->table, + 'where' => $this->where, + 'values' => $this->values, + 'bindings' => $this->bindings + ]), + 'insert' => $sql->insert([ + 'table' => $this->table, + 'values' => $this->values, + 'bindings' => $this->bindings + ]), + 'delete' => $sql->delete([ + 'table' => $this->table, + 'where' => $this->where, + 'bindings' => $this->bindings + ]), + default => null + }; + } + + /** + * Builds a count query + */ + public function count(): int + { + return (int)$this->aggregate('COUNT'); + } + + /** + * Builds a max query + */ + public function max(string $column): float + { + return (float)$this->aggregate('MAX', $column); + } + + /** + * Builds a min query + */ + public function min(string $column): float + { + return (float)$this->aggregate('MIN', $column); + } + + /** + * Builds a sum query + */ + public function sum(string $column): float + { + return (float)$this->aggregate('SUM', $column); + } + + /** + * Builds an average query + */ + public function avg(string $column): float + { + return (float)$this->aggregate('AVG', $column); + } + + /** + * Builds an aggregation query. + * This is used by all the aggregation methods above + * + * @param int $default An optional default value, which should be returned if the query fails + */ + public function aggregate(string $method, string $column = '*', int $default = 0) + { + // reset the sorting to avoid counting issues + $this->order = null; + + // validate column + if ($column !== '*') { + $sql = $this->database->sql(); + $column = $sql->columnName($this->table, $column); + } + + $fetch = $this->fetch; + $row = $this->select($method . '(' . $column . ') as aggregation')->fetch(Obj::class)->first(); + + if ($this->debug === true) { + return $row; + } + + $result = $row?->get('aggregation') ?? $default; + + $this->fetch($fetch); + + return $result; + } + + /** + * Used as an internal shortcut for firing a db query + */ + protected function query(string|array $sql, array $params = []) + { + if (is_string($sql) === true) { + $sql = [ + 'query' => $sql, + 'bindings' => $this->bindings() + ]; + } + + if ($this->debug) { + return [ + 'query' => $sql['query'], + 'bindings' => $this->bindings(), + 'options' => $params + ]; + } + + if ($this->fail) { + $this->database->fail(); + } + + $result = $this->database->query($sql['query'], $sql['bindings'], $params); + + $this->reset(); + + return $result; + } + + /** + * Used as an internal shortcut for executing a db query + */ + protected function execute(string|array $sql, array $params = []) + { + if (is_string($sql) === true) { + $sql = [ + 'query' => $sql, + 'bindings' => $this->bindings() + ]; + } + + if ($this->debug === true) { + return [ + 'query' => $sql['query'], + 'bindings' => $sql['bindings'], + 'options' => $params + ]; + } + + if ($this->fail) { + $this->database->fail(); + } + + $result = $this->database->execute($sql['query'], $sql['bindings']); + + $this->reset(); + + return $result; + } + + /** + * Selects only one row from a table + */ + public function first(): mixed + { + return $this->query($this->offset(0)->limit(1)->build('select'), [ + 'fetch' => $this->fetch, + 'iterator' => 'array', + 'method' => 'fetch', + ]); + } + + /** + * Selects only one row from a table + */ + public function row(): mixed + { + return $this->first(); + } + + /** + * Selects only one row from a table + */ + public function one(): mixed + { + return $this->first(); + } + + /** + * Automatically adds pagination to a query + * + * @param int $limit The number of rows, which should be returned for each page + * @return object Collection iterator with attached pagination object + */ + public function page(int $page, int $limit): object + { + // clone this to create a counter query + $counter = clone $this; + + // count the total number of rows for this query + $count = $counter->debug(false)->count(); + + // pagination + $pagination = new Pagination([ + 'limit' => $limit, + 'page' => $page, + 'total' => $count, + ]); + + // apply it to the dataset and retrieve all rows. make sure to use Collection as the iterator to be able to attach the pagination object + $iterator = $this->iterator; + $collection = $this + ->offset($pagination->offset()) + ->limit($pagination->limit()) + ->iterator(Collection::class) + ->all(); + + $this->iterator($iterator); + + // return debug information if debug mode is active + if ($this->debug) { + $collection['totalcount'] = $count; + return $collection; + } + + // store all pagination vars in a separate object + if ($collection) { + $collection->paginate($pagination); + } + + // return the limited collection + return $collection; + } + + /** + * Returns all matching rows from a table + */ + public function all() + { + return $this->query($this->build('select'), [ + 'fetch' => $this->fetch, + 'iterator' => $this->iterator, + ]); + } + + /** + * Returns only values from a single column + */ + public function column(string $column) + { + // if there isn't already an explicit order, order by the primary key + // instead of the column that was requested (which would be implied otherwise) + if ($this->order === null) { + $sql = $this->database->sql(); + $primaryKey = $sql->combineIdentifier($this->table, $this->primaryKeyName); + + $this->order($primaryKey . ' ASC'); + } + + $results = $this->query($this->select([$column])->build('select'), [ + 'iterator' => 'array', + 'fetch' => 'array', + ]); + + if ($this->debug === true) { + return $results; + } + + $results = array_column($results, $column); + + if ($this->iterator === 'array') { + return $results; + } + + $iterator = $this->iterator; + + return new $iterator($results); + } + + /** + * Find a single row by column and value + */ + public function findBy(string $column, $value) + { + return $this->where([$column => $value])->first(); + } + + /** + * Find a single row by its primary key + */ + public function find($id) + { + return $this->findBy($this->primaryKeyName, $id); + } + + /** + * Fires an insert query + * + * @param mixed $values You can pass values here or set them with ->values() before + * @return mixed Returns the last inserted id on success or false. + */ + public function insert($values = null) + { + $query = $this->execute($this->values($values)->build('insert')); + + if ($this->debug === true) { + return $query; + } + + return $query ? $this->database->lastId() : false; + } + + /** + * Fires an update query + * + * @param mixed $values You can pass values here or set them with ->values() before + * @param mixed $where You can pass a where clause here or set it with ->where() before + */ + public function update($values = null, $where = null): bool + { + return $this->execute($this->values($values)->where($where)->build('update')); + } + + /** + * Fires a delete query + * + * @param mixed $where You can pass a where clause here or set it with ->where() before + */ + public function delete($where = null): bool + { + return $this->execute($this->where($where)->build('delete')); + } + + /** + * Enables magic queries like findByUsername or findByEmail + */ + public function __call(string $method, array $arguments = []) + { + if (preg_match('!^findBy([a-z]+)!i', $method, $match)) { + $column = Str::lower($match[1]); + return $this->findBy($column, $arguments[0]); + } + throw new InvalidArgumentException('Invalid query method: ' . $method, static::ERROR_INVALID_QUERY_METHOD); + } + + /** + * Builder for where and having clauses + * + * @param array $args Arguments, see where() description + * @param mixed $current Current value (like $this->where) + */ + protected function filterQuery(array $args, $current, string $mode = 'AND') + { + $result = ''; + + switch (count($args)) { + case 1: + + if ($args[0] === null) { + return $current; + + // ->where('username like "myuser"'); + } elseif (is_string($args[0]) === true) { + // simply add the entire string to the where clause + // escaping or using bindings has to be done before calling this method + $result = $args[0]; + + // ->where(['username' => 'myuser']); + } elseif (is_array($args[0]) === true) { + // simple array mode (AND operator) + $sql = $this->database->sql()->values($this->table, $args[0], ' AND ', true, true); + + $result = $sql['query']; + + $this->bindings($sql['bindings']); + } elseif (is_callable($args[0]) === true) { + $query = clone $this; + + // since the callback uses its own where condition + // it is necessary to clear/reset the cloned where condition + $query->where = null; + + call_user_func($args[0], $query); + + // copy over the bindings from the nested query + $this->bindings = array_merge($this->bindings, $query->bindings); + + $result = '(' . $query->where . ')'; + } + + break; + case 2: + + // ->where('username like :username', ['username' => 'myuser']) + if (is_string($args[0]) === true && is_array($args[1]) === true) { + // prepared where clause + $result = $args[0]; + + // store the bindings + $this->bindings($args[1]); + + // ->where('username like ?', 'myuser') + } elseif (is_string($args[0]) === true && is_string($args[1]) === true) { + // prepared where clause + $result = $args[0]; + + // store the bindings + $this->bindings([$args[1]]); + } + + break; + case 3: + + // ->where('username', 'like', 'myuser'); + if (is_string($args[0]) === true && is_string($args[1]) === true) { + // validate column + $sql = $this->database->sql(); + $key = $sql->columnName($this->table, $args[0]); + + // ->where('username', 'in', ['myuser', 'myotheruser']); + $predicate = trim(strtoupper($args[1])); + if (is_array($args[2]) === true) { + if (in_array($predicate, ['IN', 'NOT IN']) === false) { + throw new InvalidArgumentException('Invalid predicate ' . $predicate); + } + + // build a list of bound values + $values = []; + $bindings = []; + + foreach ($args[2] as $value) { + $valueBinding = $sql->bindingName('value'); + $bindings[$valueBinding] = $value; + $values[] = $valueBinding; + } + + // add that to the where clause in parenthesis + $result = $key . ' ' . $predicate . ' (' . implode(', ', $values) . ')'; + + // ->where('username', 'like', 'myuser'); + } else { + $predicates = [ + '=', '>=', '>', '<=', '<', '<>', '!=', '<=>', + 'IS', 'IS NOT', + 'BETWEEN', 'NOT BETWEEN', + 'LIKE', 'NOT LIKE', + 'SOUNDS LIKE', + 'REGEXP', 'NOT REGEXP' + ]; + + if (in_array($predicate, $predicates) === false) { + throw new InvalidArgumentException('Invalid predicate/operator ' . $predicate); + } + + $valueBinding = $sql->bindingName('value'); + $bindings[$valueBinding] = $args[2]; + + $result = $key . ' ' . $predicate . ' ' . $valueBinding; + } + $this->bindings($bindings); + } + + break; + } + + // attach the where clause + if (empty($current) === false) { + return $current . ' ' . $mode . ' ' . $result; + } + + return $result; + } +} diff --git a/kirby/src/Database/Sql.php b/kirby/src/Database/Sql.php new file mode 100644 index 0000000..136b394 --- /dev/null +++ b/kirby/src/Database/Sql.php @@ -0,0 +1,879 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +abstract class Sql +{ + /** + * List of literals which should not be escaped in queries + */ + public static array $literals = ['NOW()', null]; + + /** + * The parent database connection + */ + protected Database $database; + + /** + * List of used bindings; used to avoid + * duplicate binding names + */ + protected array $bindings = []; + + /** + * Constructor + * @codeCoverageIgnore + */ + public function __construct(Database $database) + { + $this->database = $database; + } + + /** + * Returns a randomly generated binding name + * + * @param string $label String that only contains alphanumeric chars and + * underscores to use as a human-readable identifier + * @return string Binding name that is guaranteed to be unique for this connection + */ + public function bindingName(string $label): string + { + // make sure that the binding name is safe to prevent injections; + // otherwise use a generic label + if (!$label || preg_match('/^[a-zA-Z0-9_]+$/', $label) !== 1) { + $label = 'invalid'; + } + + // generate random bindings until the name is unique + do { + $binding = ':' . $label . '_' . Str::random(8, 'alphaNum'); + } while (in_array($binding, $this->bindings) === true); + + // cache the generated binding name for future invocations + $this->bindings[] = $binding; + return $binding; + } + + /** + * Returns a query to list the columns of a specified table; + * the query needs to return rows with a column `name` + * + * @param string $table Table name + */ + abstract public function columns(string $table): array; + + /** + * Returns a query snippet for a column default value + * + * @param string $name Column name + * @param array $column Column definition array with an optional `default` key + * @return array Array with a `query` string and a `bindings` array + */ + public function columnDefault(string $name, array $column): array + { + if (isset($column['default']) === false) { + return [ + 'query' => null, + 'bindings' => [] + ]; + } + + $binding = $this->bindingName($name . '_default'); + + return [ + 'query' => 'DEFAULT ' . $binding, + 'bindings' => [ + $binding => $column['default'] + ] + ]; + } + + /** + * Returns the cleaned identifier based on the table and column name + * + * @param string $table Table name + * @param string $column Column name + * @param bool $enforceQualified If true, a qualified identifier is returned in all cases + * @return string|null Identifier or null if the table or column is invalid + */ + public function columnName(string $table, string $column, bool $enforceQualified = false): string|null + { + // ensure we have clean $table and $column values without qualified identifiers + list($table, $column) = $this->splitIdentifier($table, $column); + + // combine the identifiers again + if ($this->database->validateColumn($table, $column) === true) { + return $this->combineIdentifier($table, $column, $enforceQualified !== true); + } + + // the table or column does not exist + return null; + } + + /** + * Abstracted column types to simplify table + * creation for multiple database drivers + * @codeCoverageIgnore + */ + public function columnTypes(): array + { + return [ + 'id' => '{{ name }} INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY', + 'varchar' => '{{ name }} varchar(255) {{ null }} {{ default }} {{ unique }}', + 'text' => '{{ name }} TEXT {{ unique }}', + 'int' => '{{ name }} INT(11) UNSIGNED {{ null }} {{ default }} {{ unique }}', + 'timestamp' => '{{ name }} TIMESTAMP {{ null }} {{ default }} {{ unique }}', + 'bool' => '{{ name }} TINYINT(1) {{ null }} {{ default }} {{ unique }}' + ]; + } + + /** + * Combines an identifier (table and column) + * + * @param $values bool Whether the identifier is going to be used for a VALUES clause; + * only relevant for SQLite + */ + public function combineIdentifier(string $table, string $column, bool $values = false): string + { + return $this->quoteIdentifier($table) . '.' . $this->quoteIdentifier($column); + } + + /** + * Creates the CREATE TABLE syntax for a single column + * + * @param string $name Column name + * @param array $column Column definition array; valid keys: + * - `type` (required): Column template to use + * - `null`: Whether the column may be NULL (boolean) + * - `key`: Index this column is part of; special values `'primary'` for PRIMARY KEY and `true` for automatic naming + * - `unique`: Whether the index (or if not set the column itself) has a UNIQUE constraint + * - `default`: Default value of this column + * @return array Array with `query` and `key` strings, a `unique` boolean and a `bindings` array + * @throws \Kirby\Exception\InvalidArgumentException if no column type is given or the column type is not supported. + */ + public function createColumn(string $name, array $column): array + { + // column type + if (isset($column['type']) === false) { + throw new InvalidArgumentException('No column type given for column ' . $name); + } + $template = $this->columnTypes()[$column['type']] ?? null; + if (!$template) { + throw new InvalidArgumentException('Unsupported column type: ' . $column['type']); + } + + // null option + if (A::get($column, 'null') === false) { + $null = 'NOT NULL'; + } else { + $null = 'NULL'; + } + + // indexes/keys + if (isset($column['key']) === true) { + if (is_string($column['key']) === true) { + $column['key'] = strtolower($column['key']); + } elseif ($column['key'] === true) { + $column['key'] = $name . '_index'; + } + } + + // unique + $uniqueKey = false; + $uniqueColumn = null; + if (isset($column['unique']) === true && $column['unique'] === true) { + if (isset($column['key']) === true) { + // this column is part of an index, make that unique + $uniqueKey = true; + } else { + // make the column itself unique + $uniqueColumn = 'UNIQUE'; + } + } + + // default value + $columnDefault = $this->columnDefault($name, $column); + + $query = trim(Str::template($template, [ + 'name' => $this->quoteIdentifier($name), + 'null' => $null, + 'default' => $columnDefault['query'], + 'unique' => $uniqueColumn + ], ['fallback' => ''])); + + return [ + 'query' => $query, + 'bindings' => $columnDefault['bindings'], + 'key' => $column['key'] ?? null, + 'unique' => $uniqueKey + ]; + } + + /** + * Creates the inner query for the columns in a CREATE TABLE query + * + * @param array $columns Array of column definition arrays, see `Kirby\Database\Sql::createColumn()` + * @return array Array with a `query` string and `bindings`, `keys` and `unique` arrays + */ + public function createTableInner(array $columns): array + { + $query = []; + $bindings = []; + $keys = []; + $unique = []; + + foreach ($columns as $name => $column) { + $sql = $this->createColumn($name, $column); + + // collect query and bindings + $query[] = $sql['query']; + $bindings += $sql['bindings']; + + // make a list of keys per key name + if ($sql['key'] !== null) { + if (isset($keys[$sql['key']]) !== true) { + $keys[$sql['key']] = []; + } + + $keys[$sql['key']][] = $name; + if ($sql['unique'] === true) { + $unique[$sql['key']] = true; + } + } + } + + return [ + 'query' => implode(',' . PHP_EOL, $query), + 'bindings' => $bindings, + 'keys' => $keys, + 'unique' => $unique + ]; + } + + /** + * Creates a CREATE TABLE query + * + * @param string $table Table name + * @param array $columns Array of column definition arrays, see `Kirby\Database\Sql::createColumn()` + * @return array Array with a `query` string and a `bindings` array + */ + public function createTable(string $table, array $columns = []): array + { + $inner = $this->createTableInner($columns); + + // add keys + foreach ($inner['keys'] as $key => $columns) { + // quote each column name and make a list string out of the column names + $columns = implode(', ', array_map( + fn ($name) => $this->quoteIdentifier($name), + $columns + )); + + if ($key === 'primary') { + $key = 'PRIMARY KEY'; + } else { + $unique = isset($inner['unique'][$key]) === true ? 'UNIQUE ' : ''; + $key = $unique . 'INDEX ' . $this->quoteIdentifier($key); + } + + $inner['query'] .= ',' . PHP_EOL . $key . ' (' . $columns . ')'; + } + + return [ + 'query' => 'CREATE TABLE ' . $this->quoteIdentifier($table) . ' (' . PHP_EOL . $inner['query'] . PHP_EOL . ')', + 'bindings' => $inner['bindings'] + ]; + } + + /** + * Builds a DELETE clause + * + * @param array $params List of parameters for the DELETE clause. See defaults for more info. + */ + public function delete(array $params = []): array + { + $defaults = [ + 'table' => '', + 'where' => null, + 'bindings' => [] + ]; + + $options = array_merge($defaults, $params); + $bindings = $options['bindings']; + $query = ['DELETE']; + + // from + $this->extend($query, $bindings, $this->from($options['table'])); + + // where + $this->extend($query, $bindings, $this->where($options['where'])); + + return [ + 'query' => $this->query($query), + 'bindings' => $bindings + ]; + } + + /** + * Creates the sql for dropping a single table + */ + public function dropTable(string $table): array + { + return [ + 'query' => 'DROP TABLE ' . $this->tableName($table), + 'bindings' => [] + ]; + } + + /** + * Extends a given query and bindings + * by reference + */ + public function extend(array &$query, array &$bindings, array $input): void + { + if (empty($input['query']) === false) { + $query[] = $input['query']; + $bindings = array_merge($bindings, $input['bindings']); + } + } + + /** + * Creates the from syntax + */ + public function from(string $table): array + { + return [ + 'query' => 'FROM ' . $this->tableName($table), + 'bindings' => [] + ]; + } + + /** + * Creates the group by syntax + */ + public function group(string|null $group = null): array + { + if (empty($group) === false) { + $query = 'GROUP BY ' . $group; + } + + return [ + 'query' => $query ?? null, + 'bindings' => [] + ]; + } + + /** + * Creates the having syntax + */ + public function having(string|null $having = null): array + { + if (empty($having) === false) { + $query = 'HAVING ' . $having; + } + + return [ + 'query' => $query ?? null, + 'bindings' => [] + ]; + } + + /** + * Creates an insert query + */ + public function insert(array $params = []): array + { + $table = $params['table'] ?? null; + $values = $params['values'] ?? null; + $bindings = $params['bindings']; + $query = ['INSERT INTO ' . $this->tableName($table)]; + + // add the values + $this->extend($query, $bindings, $this->values($table, $values, ', ', false)); + + return [ + 'query' => $this->query($query), + 'bindings' => $bindings + ]; + } + + /** + * Creates a join query + * + * @throws \Kirby\Exception\InvalidArgumentException if an invalid join type is given + */ + public function join(string $type, string $table, string $on): array + { + $types = [ + 'JOIN', + 'INNER JOIN', + 'OUTER JOIN', + 'LEFT OUTER JOIN', + 'LEFT JOIN', + 'RIGHT OUTER JOIN', + 'RIGHT JOIN', + 'FULL OUTER JOIN', + 'FULL JOIN', + 'NATURAL JOIN', + 'CROSS JOIN', + 'SELF JOIN' + ]; + + $type = strtoupper(trim($type)); + + // validate join type + if (in_array($type, $types) === false) { + throw new InvalidArgumentException('Invalid join type ' . $type); + } + + return [ + 'query' => $type . ' ' . $this->tableName($table) . ' ON ' . $on, + 'bindings' => [], + ]; + } + + /** + * Create the syntax for multiple joins + */ + public function joins(array|null $joins = null): array + { + $query = []; + $bindings = []; + + foreach ((array)$joins as $join) { + $this->extend($query, $bindings, $this->join($join['type'] ?? 'JOIN', $join['table'] ?? null, $join['on'] ?? null)); + } + + return [ + 'query' => implode(' ', array_filter($query)), + 'bindings' => [], + ]; + } + + /** + * Creates a limit and offset query instruction + */ + public function limit(int $offset = 0, int|null $limit = null): array + { + // no need to add it to the query + if ($offset === 0 && $limit === null) { + return [ + 'query' => null, + 'bindings' => [] + ]; + } + + $limit ??= '18446744073709551615'; + + $offsetBinding = $this->bindingName('offset'); + $limitBinding = $this->bindingName('limit'); + + return [ + 'query' => 'LIMIT ' . $offsetBinding . ', ' . $limitBinding, + 'bindings' => [ + $limitBinding => $limit, + $offsetBinding => $offset, + ] + ]; + } + + /** + * Creates the order by syntax + */ + public function order(string|null $order = null): array + { + if (empty($order) === false) { + $query = 'ORDER BY ' . $order; + } + + return [ + 'query' => $query ?? null, + 'bindings' => [] + ]; + } + + /** + * Converts a query array into a final string + */ + public function query(array $query, string $separator = ' '): string + { + return implode($separator, array_filter($query)); + } + + /** + * Quotes an identifier (table *or* column) + */ + public function quoteIdentifier(string $identifier): string + { + // * is special, don't quote that + if ($identifier === '*') { + return $identifier; + } + + // escape backticks inside the identifier name + $identifier = str_replace('`', '``', $identifier); + + // wrap in backticks + return '`' . $identifier . '`'; + } + + /** + * Builds a select clause + * + * @param array $params List of parameters for the select clause. Check out the defaults for more info. + * @return array An array with the query and the bindings + */ + public function select(array $params = []): array + { + $defaults = [ + 'table' => '', + 'columns' => '*', + 'join' => null, + 'distinct' => false, + 'where' => null, + 'group' => null, + 'having' => null, + 'order' => null, + 'offset' => 0, + 'limit' => null, + 'bindings' => [] + ]; + + $options = array_merge($defaults, $params); + $bindings = $options['bindings']; + $query = ['SELECT']; + + // select distinct values + if ($options['distinct'] === true) { + $query[] = 'DISTINCT'; + } + + // columns + $query[] = $this->selected($options['table'], $options['columns']); + + // from + $this->extend($query, $bindings, $this->from($options['table'])); + + // joins + $this->extend($query, $bindings, $this->joins($options['join'])); + + // where + $this->extend($query, $bindings, $this->where($options['where'])); + + // group + $this->extend($query, $bindings, $this->group($options['group'])); + + // having + $this->extend($query, $bindings, $this->having($options['having'])); + + // order + $this->extend($query, $bindings, $this->order($options['order'])); + + // offset and limit + $this->extend($query, $bindings, $this->limit($options['offset'], $options['limit'])); + + return [ + 'query' => $this->query($query), + 'bindings' => $bindings + ]; + } + + /** + * Creates a columns definition from string or array + */ + public function selected(string $table, array|string|null $columns = null): string + { + // all columns + if (empty($columns) === true) { + return '*'; + } + + // array of columns + if (is_array($columns) === true) { + // validate columns + $result = []; + + foreach ($columns as $column) { + list($table, $columnPart) = $this->splitIdentifier($table, $column); + + if ($this->validateColumn($table, $columnPart) === true) { + $result[] = $this->combineIdentifier($table, $columnPart); + } + } + + return implode(', ', $result); + } + + return $columns; + } + + /** + * Splits a (qualified) identifier into table and column + * + * @param string $table Default table if the identifier is not qualified + * @throws \Kirby\Exception\InvalidArgumentException if an invalid identifier is given + */ + public function splitIdentifier(string $table, string $identifier): array + { + // split by dot, but only outside of quotes + $parts = preg_split('/(?:`[^`]*`|"[^"]*")(*SKIP)(*F)|\./', $identifier); + + return match (count($parts)) { + // non-qualified identifier + 1 => [$table, $this->unquoteIdentifier($parts[0])], + + // qualified identifier + 2 => [ + $this->unquoteIdentifier($parts[0]), + $this->unquoteIdentifier($parts[1]) + ], + + // every other number is an error + default => throw new InvalidArgumentException('Invalid identifier ' . $identifier) + }; + } + + /** + * Returns a query to list the tables of the current database; + * the query needs to return rows with a column `name` + */ + abstract public function tables(): array; + + /** + * Validates and quotes a table name + * + * @throws \Kirby\Exception\InvalidArgumentException if an invalid table name is given + */ + public function tableName(string $table): string + { + // validate table + if ($this->database->validateTable($table) === false) { + throw new InvalidArgumentException('Invalid table ' . $table); + } + + return $this->quoteIdentifier($table); + } + + /** + * Unquotes an identifier (table *or* column) + */ + public function unquoteIdentifier(string $identifier): string + { + // remove quotes around the identifier + if (in_array(Str::substr($identifier, 0, 1), ['"', '`']) === true) { + $identifier = Str::substr($identifier, 1); + } + + if (in_array(Str::substr($identifier, -1), ['"', '`']) === true) { + $identifier = Str::substr($identifier, 0, -1); + } + + // unescape duplicated quotes + return str_replace(['""', '``'], ['"', '`'], $identifier); + } + + /** + * Builds an update clause + * + * @param array $params List of parameters for the update clause. See defaults for more info. + */ + public function update(array $params = []): array + { + $defaults = [ + 'table' => null, + 'values' => null, + 'where' => null, + 'bindings' => [] + ]; + + $options = array_merge($defaults, $params); + $bindings = $options['bindings']; + + // start the query + $query = ['UPDATE ' . $this->tableName($options['table']) . ' SET']; + + // add the values + $this->extend($query, $bindings, $this->values($options['table'], $options['values'])); + + // add the where clause + $this->extend($query, $bindings, $this->where($options['where'])); + + return [ + 'query' => $this->query($query), + 'bindings' => $bindings + ]; + } + + /** + * Validates a given column name in a table + * + * @throws \Kirby\Exception\InvalidArgumentException If the column is invalid + */ + public function validateColumn(string $table, string $column): bool + { + if ($this->database->validateColumn($table, $column) !== true) { + throw new InvalidArgumentException('Invalid column ' . $column); + } + + return true; + } + + /** + * Builds a safe list of values for insert, select or update queries + * + * @param string $table Table name + * @param mixed $values A value string or array of values + * @param string $separator A separator which should be used to join values + * @param bool $set If true builds a set list of values for update clauses + * @param bool $enforceQualified Always use fully qualified column names + */ + public function values( + string $table, + $values, + string $separator = ', ', + bool $set = true, + bool $enforceQualified = false + ): array { + if (is_array($values) === false) { + return [ + 'query' => $values, + 'bindings' => [] + ]; + } + + if ($set === true) { + return $this->valueSet($table, $values, $separator, $enforceQualified); + } + + return $this->valueList($table, $values, $separator, $enforceQualified); + } + + /** + * Creates a list of fields and values + */ + public function valueList( + string $table, + string|array $values, + string $separator = ',', + bool $enforceQualified = false + ): array { + $fields = []; + $query = []; + $bindings = []; + + foreach ($values as $column => $value) { + $key = $this->columnName($table, $column, $enforceQualified); + + if ($key === null) { + continue; + } + + $fields[] = $key; + + if (in_array($value, static::$literals, true) === true) { + $query[] = $value ?: 'null'; + continue; + } + + if (is_array($value) === true) { + $value = json_encode($value); + } + + // add the binding + $bindings[$bindingName = $this->bindingName('value')] = $value; + + // create the query + $query[] = $bindingName; + } + + return [ + 'query' => '(' . implode($separator, $fields) . ') VALUES (' . implode($separator, $query) . ')', + 'bindings' => $bindings + ]; + } + + /** + * Creates a set of values + */ + public function valueSet( + string $table, + string|array $values, + string $separator = ',', + bool $enforceQualified = false + ): array { + $query = []; + $bindings = []; + + foreach ($values as $column => $value) { + $key = $this->columnName($table, $column, $enforceQualified); + + if ($key === null) { + continue; + } + + if (in_array($value, static::$literals, true) === true) { + $query[] = $key . ' = ' . ($value ?: 'null'); + continue; + } + + if (is_array($value) === true) { + $value = json_encode($value); + } + + // add the binding + $bindings[$bindingName = $this->bindingName('value')] = $value; + + // create the query + $query[] = $key . ' = ' . $bindingName; + } + + return [ + 'query' => implode($separator, $query), + 'bindings' => $bindings + ]; + } + + public function where(string|array|null $where, array $bindings = []): array + { + if (empty($where) === true) { + return [ + 'query' => null, + 'bindings' => [], + ]; + } + + if (is_string($where) === true) { + return [ + 'query' => 'WHERE ' . $where, + 'bindings' => $bindings + ]; + } + + $query = []; + + foreach ($where as $key => $value) { + $binding = $this->bindingName('where_' . $key); + $bindings[$binding] = $value; + + $query[] = $key . ' = ' . $binding; + } + + return [ + 'query' => 'WHERE ' . implode(' AND ', $query), + 'bindings' => $bindings + ]; + } +} diff --git a/kirby/src/Database/Sql/Mysql.php b/kirby/src/Database/Sql/Mysql.php new file mode 100644 index 0000000..02c3939 --- /dev/null +++ b/kirby/src/Database/Sql/Mysql.php @@ -0,0 +1,56 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Mysql extends Sql +{ + /** + * Returns a query to list the columns of a specified table; + * the query needs to return rows with a column `name` + * + * @param string $table Table name + */ + public function columns(string $table): array + { + $databaseBinding = $this->bindingName('database'); + $tableBinding = $this->bindingName('table'); + + $query = 'SELECT COLUMN_NAME AS name FROM INFORMATION_SCHEMA.COLUMNS '; + $query .= 'WHERE TABLE_SCHEMA = ' . $databaseBinding . ' AND TABLE_NAME = ' . $tableBinding; + + return [ + 'query' => $query, + 'bindings' => [ + $databaseBinding => $this->database->name(), + $tableBinding => $table, + ] + ]; + } + + /** + * Returns a query to list the tables of the current database; + * the query needs to return rows with a column `name` + */ + public function tables(): array + { + $binding = $this->bindingName('database'); + + return [ + 'query' => 'SELECT TABLE_NAME AS name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ' . $binding, + 'bindings' => [ + $binding => $this->database->name() + ] + ]; + } +} diff --git a/kirby/src/Database/Sql/Sqlite.php b/kirby/src/Database/Sql/Sqlite.php new file mode 100644 index 0000000..05097a5 --- /dev/null +++ b/kirby/src/Database/Sql/Sqlite.php @@ -0,0 +1,135 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Sqlite extends Sql +{ + /** + * Returns a query to list the columns of a specified table; + * the query needs to return rows with a column `name` + * + * @param string $table Table name + */ + public function columns(string $table): array + { + return [ + 'query' => 'PRAGMA table_info(' . $this->tableName($table) . ')', + 'bindings' => [], + ]; + } + + /** + * Abstracted column types to simplify table + * creation for multiple database drivers + * @codeCoverageIgnore + */ + public function columnTypes(): array + { + return [ + 'id' => '{{ name }} INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE', + 'varchar' => '{{ name }} TEXT {{ null }} {{ default }} {{ unique }}', + 'text' => '{{ name }} TEXT {{ null }} {{ default }} {{ unique }}', + 'int' => '{{ name }} INTEGER {{ null }} {{ default }} {{ unique }}', + 'timestamp' => '{{ name }} INTEGER {{ null }} {{ default }} {{ unique }}', + 'bool' => '{{ name }} INTEGER {{ null }} {{ default }} {{ unique }}' + ]; + } + + /** + * Combines an identifier (table and column) + * + * @param bool $values Whether the identifier is going to be + * used for a VALUES clause; only relevant + * for SQLite + */ + public function combineIdentifier(string $table, string $column, bool $values = false): string + { + // SQLite doesn't support qualified column names for VALUES clauses + if ($values === true) { + return $this->quoteIdentifier($column); + } + + return $this->quoteIdentifier($table) . '.' . $this->quoteIdentifier($column); + } + + /** + * Creates a CREATE TABLE query + * + * @param string $table Table name + * @param array $columns Array of column definition arrays, see `Kirby\Database\Sql::createColumn()` + * @return array Array with a `query` string and a `bindings` array + */ + public function createTable(string $table, array $columns = []): array + { + $inner = $this->createTableInner($columns); + + // add keys + $keys = []; + foreach ($inner['keys'] as $key => $columns) { + // quote each column name and make a list string out of the column names + $columns = implode(', ', array_map( + fn ($name) => $this->quoteIdentifier($name), + $columns + )); + + if ($key === 'primary') { + $inner['query'] .= ',' . PHP_EOL . 'PRIMARY KEY (' . $columns . ')'; + } else { + // SQLite only supports index creation using a separate CREATE INDEX query + $unique = isset($inner['unique'][$key]) === true ? 'UNIQUE ' : ''; + $keys[] = 'CREATE ' . $unique . 'INDEX ' . $this->quoteIdentifier($table . '_index_' . $key) . + ' ON ' . $this->quoteIdentifier($table) . ' (' . $columns . ')'; + } + } + + $query = 'CREATE TABLE ' . $this->quoteIdentifier($table) . ' (' . PHP_EOL . $inner['query'] . PHP_EOL . ')'; + if (empty($keys) === false) { + $query .= ';' . PHP_EOL . implode(';' . PHP_EOL, $keys); + } + + return [ + 'query' => $query, + 'bindings' => $inner['bindings'] + ]; + } + + /** + * Quotes an identifier (table *or* column) + */ + public function quoteIdentifier(string $identifier): string + { + // * is special + if ($identifier === '*') { + return $identifier; + } + + // escape quotes inside the identifier name + $identifier = str_replace('"', '""', $identifier); + + // wrap in quotes + return '"' . $identifier . '"'; + } + + /** + * Returns a query to list the tables of the current database; + * the query needs to return rows with a column `name` + */ + public function tables(): array + { + return [ + 'query' => 'SELECT name FROM sqlite_master WHERE type = "table" OR type = "view"', + 'bindings' => [] + ]; + } +} diff --git a/kirby/src/Email/Body.php b/kirby/src/Email/Body.php new file mode 100644 index 0000000..a25904a --- /dev/null +++ b/kirby/src/Email/Body.php @@ -0,0 +1,71 @@ +, + * Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Body +{ + protected string|null $html; + protected string|null $text; + + /** + * Email body constructor + */ + public function __construct(array $props = []) + { + $this->html = $props['html'] ?? null; + $this->text = $props['text'] ?? null; + } + + /** + * Creates a new instance while + * merging initial and new properties + * @deprecated 4.0.0 + */ + public function clone(array $props = []): static + { + return new static(array_merge_recursive([ + 'html' => $this->html, + 'text' => $this->text + ], $props)); + } + + /** + * Returns the HTML content of the email body + */ + public function html(): string + { + return $this->html ?? ''; + } + + /** + * Returns the plain text content of the email body + */ + public function text(): string + { + return $this->text ?? ''; + } + + /** + * @since 4.0.0 + */ + public function toArray(): array + { + return [ + 'html' => $this->html(), + 'text' => $this->text() + ]; + } +} diff --git a/kirby/src/Email/Email.php b/kirby/src/Email/Email.php new file mode 100644 index 0000000..2f1b15f --- /dev/null +++ b/kirby/src/Email/Email.php @@ -0,0 +1,296 @@ +, + * Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Email +{ + /** + * If set to `true`, the debug mode is enabled + * for all emails + */ + public static bool $debug = false; + + /** + * Store for sent emails when `Email::$debug` + * is set to `true` + */ + public static array $emails = []; + + protected bool $isSent = false; + + protected array $attachments; + protected Body $body; + protected array $bcc; + protected Closure|null $beforeSend; + protected array $cc; + protected string $from; + protected string|null $fromName; + protected string $replyTo; + protected string|null $replyToName; + protected string $subject; + protected array $to; + protected array|null $transport; + + /** + * Email constructor + */ + public function __construct(array $props = [], bool $debug = false) + { + foreach (['body', 'from', 'to', 'subject'] as $required) { + if (isset($props[$required]) === false) { + throw new InvalidArgumentException('The property "' . $required . '" is required'); + } + } + + if (is_string($props['body']) === true) { + $props['body'] = ['text' => $props['body']]; + } + + $this->attachments = $props['attachments'] ?? []; + $this->bcc = $this->resolveEmail($props['bcc'] ?? null); + $this->beforeSend = $props['beforeSend'] ?? null; + $this->body = new Body($props['body']); + $this->cc = $this->resolveEmail($props['cc'] ?? null); + $this->from = $this->resolveEmail($props['from'], false); + $this->fromName = $props['fromName'] ?? null; + $this->replyTo = $this->resolveEmail($props['replyTo'] ?? null, false); + $this->replyToName = $props['replyToName'] ?? null; + $this->subject = $props['subject']; + $this->to = $this->resolveEmail($props['to']); + $this->transport = $props['transport'] ?? null; + + // @codeCoverageIgnoreStart + if (static::$debug === false && $debug === false) { + $this->send(); + } elseif (static::$debug === true) { + static::$emails[] = $this; + } + // @codeCoverageIgnoreEnd + } + + /** + * Returns the email attachments + */ + public function attachments(): array + { + return $this->attachments; + } + + /** + * Returns the email body + */ + public function body(): Body|null + { + return $this->body; + } + + /** + * Returns "bcc" recipients + */ + public function bcc(): array + { + return $this->bcc; + } + + /** + * Returns the beforeSend callback closure, + * which has access to the PHPMailer instance + */ + public function beforeSend(): Closure|null + { + return $this->beforeSend; + } + + /** + * Returns "cc" recipients + */ + public function cc(): array + { + return $this->cc; + } + + /** + * Creates a new instance while + * merging initial and new properties + * @deprecated 4.0.0 + */ + public function clone(array $props = []): static + { + return new static(array_merge_recursive([ + 'attachments' => $this->attachments, + 'bcc' => $this->bcc, + 'beforeSend' => $this->beforeSend, + 'body' => $this->body->toArray(), + 'cc' => $this->cc, + 'from' => $this->from, + 'fromName' => $this->fromName, + 'replyTo' => $this->replyTo, + 'replyToName' => $this->replyToName, + 'subject' => $this->subject, + 'to' => $this->to, + 'transport' => $this->transport + ], $props)); + } + + /** + * Returns default transport settings + */ + protected function defaultTransport(): array + { + return [ + 'type' => 'mail' + ]; + } + + /** + * Returns the "from" email address + */ + public function from(): string + { + return $this->from; + } + + /** + * Returns the "from" name + */ + public function fromName(): string|null + { + return $this->fromName; + } + + /** + * Checks if the email has an HTML body + */ + public function isHtml(): bool + { + return empty($this->body()->html()) === false; + } + + /** + * Checks if the email has been sent successfully + */ + public function isSent(): bool + { + return $this->isSent; + } + + /** + * Returns the "reply to" email address + */ + public function replyTo(): string + { + return $this->replyTo; + } + + /** + * Returns the "reply to" name + */ + public function replyToName(): string|null + { + return $this->replyToName; + } + + /** + * Converts single or multiple email addresses to a sanitized format + * + * @throws \Exception + */ + protected function resolveEmail( + string|array|null $email = null, + bool $multiple = true + ): array|string { + if ($email === null) { + return $multiple === true ? [] : ''; + } + + if (is_array($email) === false) { + $email = [$email => null]; + } + + $result = []; + foreach ($email as $address => $name) { + // convert simple email arrays to associative arrays + if (is_int($address) === true) { + // the value is the address, there is no name + $address = $name; + $result[$address] = null; + } else { + $result[$address] = $name; + } + + // ensure that the address is valid + if (V::email($address) === false) { + throw new Exception(sprintf('"%s" is not a valid email address', $address)); + } + } + + return $multiple === true ? $result : array_keys($result)[0]; + } + + /** + * Sends the email + */ + public function send(): bool + { + return $this->isSent = true; + } + + /** + * Returns the email subject + */ + public function subject(): string + { + return $this->subject; + } + + /** + * Returns the email recipients + */ + public function to(): array + { + return $this->to; + } + + /** + * Returns the email transports settings + */ + public function transport(): array + { + return $this->transport ?? $this->defaultTransport(); + } + + /** + * @since 4.0.0 + */ + public function toArray(): array + { + return [ + 'attachments' => $this->attachments(), + 'bcc' => $this->bcc(), + 'body' => $this->body()->toArray(), + 'cc' => $this->cc(), + 'from' => $this->from(), + 'fromName' => $this->fromName(), + 'replyTo' => $this->replyTo(), + 'replyToName' => $this->replyToName(), + 'subject' => $this->subject(), + 'to' => $this->to(), + 'transport' => $this->transport() + ]; + } +} diff --git a/kirby/src/Email/PHPMailer.php b/kirby/src/Email/PHPMailer.php new file mode 100644 index 0000000..ee84a40 --- /dev/null +++ b/kirby/src/Email/PHPMailer.php @@ -0,0 +1,112 @@ +, + * Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class PHPMailer extends Email +{ + /** + * Sends email via PHPMailer library + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function send(bool $debug = false): bool + { + $mailer = new Mailer(true); + + // set sender's address + $mailer->setFrom($this->from(), $this->fromName() ?? ''); + + // optional reply-to address + if ($replyTo = $this->replyTo()) { + $mailer->addReplyTo($replyTo, $this->replyToName() ?? ''); + } + + // add (multiple) recipient, CC & BCC addresses + foreach ($this->to() as $email => $name) { + $mailer->addAddress($email, $name ?? ''); + } + foreach ($this->cc() as $email => $name) { + $mailer->addCC($email, $name ?? ''); + } + foreach ($this->bcc() as $email => $name) { + $mailer->addBCC($email, $name ?? ''); + } + + $mailer->Subject = $this->subject(); + $mailer->CharSet = 'UTF-8'; + + // set body according to html/text + if ($this->isHtml()) { + $mailer->isHTML(true); + $mailer->Body = $this->body()->html(); + $mailer->AltBody = $this->body()->text(); + } else { + $mailer->Body = $this->body()->text(); + } + + // add attachments + foreach ($this->attachments() as $attachment) { + $mailer->addAttachment($attachment); + } + + // smtp transport settings + if (($this->transport()['type'] ?? 'mail') === 'smtp') { + $mailer->isSMTP(); + $mailer->Host = $this->transport()['host'] ?? null; + $mailer->SMTPAuth = $this->transport()['auth'] ?? false; + $mailer->Username = $this->transport()['username'] ?? null; + $mailer->Password = $this->transport()['password'] ?? null; + $mailer->SMTPSecure = $this->transport()['security'] ?? 'ssl'; + $mailer->Port = $this->transport()['port'] ?? null; + + if ($mailer->SMTPSecure === true) { + switch ($mailer->Port) { + case null: + case 587: + $mailer->SMTPSecure = 'tls'; + $mailer->Port = 587; + break; + case 465: + $mailer->SMTPSecure = 'ssl'; + break; + default: + throw new InvalidArgumentException( + 'Could not automatically detect the "security" protocol from the ' . + '"port" option, please set it explicitly to "tls" or "ssl".' + ); + } + } + } + + // accessible phpMailer instance + $beforeSend = $this->beforeSend(); + + if ($beforeSend instanceof Closure) { + $mailer = $beforeSend->call($this, $mailer) ?? $mailer; + + if ($mailer instanceof Mailer === false) { + throw new InvalidArgumentException('"beforeSend" option return should be instance of PHPMailer\PHPMailer\PHPMailer class'); + } + } + + if ($debug === true) { + return $this->isSent = true; + } + + return $this->isSent = $mailer->send(); // @codeCoverageIgnore + } +} diff --git a/kirby/src/Exception/AuthException.php b/kirby/src/Exception/AuthException.php new file mode 100644 index 0000000..1ea6203 --- /dev/null +++ b/kirby/src/Exception/AuthException.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class AuthException extends Exception +{ + protected static string $defaultKey = 'auth'; + protected static string $defaultFallback = 'Unauthenticated'; + protected static int $defaultHttpCode = 401; +} diff --git a/kirby/src/Exception/BadMethodCallException.php b/kirby/src/Exception/BadMethodCallException.php new file mode 100644 index 0000000..f8a1d1b --- /dev/null +++ b/kirby/src/Exception/BadMethodCallException.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class BadMethodCallException extends Exception +{ + protected static string $defaultKey = 'invalidMethod'; + protected static string $defaultFallback = 'The method "{ method }" does not exist'; + protected static int $defaultHttpCode = 400; + protected static array $defaultData = ['method' => null]; +} diff --git a/kirby/src/Exception/DuplicateException.php b/kirby/src/Exception/DuplicateException.php new file mode 100644 index 0000000..1bea2bf --- /dev/null +++ b/kirby/src/Exception/DuplicateException.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class DuplicateException extends Exception +{ + protected static string $defaultKey = 'duplicate'; + protected static string $defaultFallback = 'The entry exists'; + protected static int $defaultHttpCode = 400; +} diff --git a/kirby/src/Exception/ErrorPageException.php b/kirby/src/Exception/ErrorPageException.php new file mode 100644 index 0000000..bd26c6f --- /dev/null +++ b/kirby/src/Exception/ErrorPageException.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class ErrorPageException extends Exception +{ + protected static string $defaultKey = 'errorPage'; + protected static string $defaultFallback = 'Triggered error page'; + protected static int $defaultHttpCode = 404; +} diff --git a/kirby/src/Exception/Exception.php b/kirby/src/Exception/Exception.php new file mode 100644 index 0000000..ae16686 --- /dev/null +++ b/kirby/src/Exception/Exception.php @@ -0,0 +1,207 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Exception extends \Exception +{ + /** + * Data variables that can be used inside the exception message + */ + protected array $data; + + /** + * HTTP code that corresponds with the exception + */ + protected int $httpCode; + + /** + * Additional details that are not included in the exception message + */ + protected array $details; + + /** + * Whether the exception message could be translated + * into the user's language + */ + protected bool $isTranslated = true; + + /** + * Defaults that can be overridden by specific + * exception classes + */ + protected static string $defaultKey = 'general'; + protected static string $defaultFallback = 'An error occurred'; + protected static array $defaultData = []; + protected static int $defaultHttpCode = 500; + protected static array $defaultDetails = []; + + /** + * Prefix for the exception key (e.g. 'error.general') + */ + private static string $prefix = 'error'; + + /** + * Class constructor + * + * @param array|string $args Full option array ('key', 'translate', 'fallback', + * 'data', 'httpCode', 'details' and 'previous') or + * just the message string + */ + public function __construct(array|string $args = []) + { + // set data and httpCode from provided arguments or defaults + $this->data = $args['data'] ?? static::$defaultData; + $this->httpCode = $args['httpCode'] ?? static::$defaultHttpCode; + $this->details = $args['details'] ?? static::$defaultDetails; + + // define the Exception key + $key = $args['key'] ?? static::$defaultKey; + + if (Str::startsWith($key, self::$prefix . '.') === false) { + $key = self::$prefix . '.' . $key; + } + + if (is_string($args) === true) { + $this->isTranslated = false; + parent::__construct($args); + } else { + // define whether message can/should be translated + $translate = + ($args['translate'] ?? true) === true && + class_exists(App::class) === true; + + // fallback waterfall for message string + $message = null; + + if ($translate === true) { + // 1. translation for provided key in current language + // 2. translation for provided key in default language + if (isset($args['key']) === true) { + $message = I18n::translate(self::$prefix . '.' . $args['key']); + $this->isTranslated = true; + } + } + + // 3. provided fallback message + if ($message === null) { + $message = $args['fallback'] ?? null; + $this->isTranslated = false; + } + + if ($translate === true) { + // 4. translation for default key in current language + // 5. translation for default key in default language + if ($message === null) { + $message = I18n::translate(self::$prefix . '.' . static::$defaultKey); + $this->isTranslated = true; + } + } + + // 6. default fallback message + if ($message === null) { + $message = static::$defaultFallback; + $this->isTranslated = false; + } + + // format message with passed data + $message = Str::template($message, $this->data, ['fallback' => '-']); + + // handover to Exception parent class constructor + parent::__construct($message, 0, $args['previous'] ?? null); + } + + // set the Exception code to the key + $this->code = $key; + } + + /** + * Returns the file in which the Exception was created + * relative to the document root + */ + final public function getFileRelative(): string + { + $file = $this->getFile(); + $docRoot = Environment::getGlobally('DOCUMENT_ROOT'); + + if (empty($docRoot) === false) { + $file = ltrim(Str::after($file, $docRoot), '/'); + } + + return $file; + } + + /** + * Returns the data variables from the message + */ + final public function getData(): array + { + return $this->data; + } + + /** + * Returns the additional details that are + * not included in the message + */ + final public function getDetails(): array + { + return $this->details; + } + + /** + * Returns the exception key (error type) + */ + final public function getKey(): string + { + return $this->getCode(); + } + + /** + * Returns the HTTP code that corresponds + * with the exception + */ + final public function getHttpCode(): int + { + return $this->httpCode; + } + + /** + * Returns whether the exception message could + * be translated into the user's language + */ + final public function isTranslated(): bool + { + return $this->isTranslated; + } + + /** + * Converts the object to an array + */ + public function toArray(): array + { + return [ + 'exception' => static::class, + 'message' => $this->getMessage(), + 'key' => $this->getKey(), + 'file' => $this->getFileRelative(), + 'line' => $this->getLine(), + 'details' => $this->getDetails(), + 'code' => $this->getHttpCode() + ]; + } +} diff --git a/kirby/src/Exception/InvalidArgumentException.php b/kirby/src/Exception/InvalidArgumentException.php new file mode 100644 index 0000000..25603b7 --- /dev/null +++ b/kirby/src/Exception/InvalidArgumentException.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class InvalidArgumentException extends Exception +{ + protected static string $defaultKey = 'invalidArgument'; + protected static string $defaultFallback = 'Invalid argument "{ argument }" in method "{ method }"'; + protected static int $defaultHttpCode = 400; + protected static array $defaultData = ['argument' => null, 'method' => null]; +} diff --git a/kirby/src/Exception/LogicException.php b/kirby/src/Exception/LogicException.php new file mode 100644 index 0000000..8fac228 --- /dev/null +++ b/kirby/src/Exception/LogicException.php @@ -0,0 +1,20 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class LogicException extends Exception +{ + protected static string $defaultKey = 'logic'; + protected static string $defaultFallback = 'This task cannot be finished'; + protected static int $defaultHttpCode = 400; +} diff --git a/kirby/src/Exception/NotFoundException.php b/kirby/src/Exception/NotFoundException.php new file mode 100644 index 0000000..5c7e284 --- /dev/null +++ b/kirby/src/Exception/NotFoundException.php @@ -0,0 +1,20 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class NotFoundException extends Exception +{ + protected static string $defaultKey = 'notFound'; + protected static string $defaultFallback = 'Not found'; + protected static int $defaultHttpCode = 404; +} diff --git a/kirby/src/Exception/PermissionException.php b/kirby/src/Exception/PermissionException.php new file mode 100644 index 0000000..ae82a66 --- /dev/null +++ b/kirby/src/Exception/PermissionException.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class PermissionException extends Exception +{ + protected static string $defaultKey = 'permission'; + protected static string $defaultFallback = 'You are not allowed to do this'; + protected static int $defaultHttpCode = 403; +} diff --git a/kirby/src/Field/FieldOptions.php b/kirby/src/Field/FieldOptions.php new file mode 100644 index 0000000..fb98070 --- /dev/null +++ b/kirby/src/Field/FieldOptions.php @@ -0,0 +1,108 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class FieldOptions extends Node +{ + public function __construct( + /** + * The option source, either a fixed collection or + * a dynamic provider + */ + public Options|OptionsProvider|null $options = null, + + /** + * Whether to escape special HTML characters in + * the option text for safe output in the Panel; + * only set to `false` if the text is later escaped! + */ + public bool $safeMode = true + ) { + } + + public function defaults(): static + { + $this->options ??= new Options(); + + return parent::defaults(); + } + + public static function factory(array $props, bool $safeMode = true): static + { + $options = match ($props['type']) { + 'api' => OptionsApi::factory($props), + 'query' => OptionsQuery::factory($props), + default => Options::factory($props['options'] ?? []) + }; + + return new static($options, $safeMode); + } + + public static function polyfill(array $props = []): array + { + if (is_string($props['options'] ?? null) === true) { + $props['options'] = match ($props['options']) { + 'api' => + ['type' => 'api'] + + OptionsApi::polyfill($props['api'] ?? null), + + 'query' => + ['type' => 'query'] + + OptionsQuery::polyfill($props['query'] ?? null), + + default => + [ 'type' => 'query', 'query' => $props['options']] + }; + } + + unset($props['api'], $props['query']); + + if (($props['options']['type'] ?? null) !== null) { + return $props; + } + + if (($props['options'] ?? null) !== null) { + $props['options'] = [ + 'type' => 'array', + 'options' => $props['options'] + ]; + } + + return $props; + } + + public function resolve(ModelWithContent $model): Options + { + // apply default values + $this->defaults(); + + // already Options, return + if (is_a($this->options, Options::class) === true) { + return $this->options; + } + + // resolve OptionsProvider (OptionsApi or OptionsQuery) to Options + return $this->options = $this->options->resolve($model, $this->safeMode); + } + + public function render(ModelWithContent $model): array + { + return $this->resolve($model)->render($model); + } +} diff --git a/kirby/src/Filesystem/Asset.php b/kirby/src/Filesystem/Asset.php new file mode 100644 index 0000000..021d6c8 --- /dev/null +++ b/kirby/src/Filesystem/Asset.php @@ -0,0 +1,118 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Asset +{ + use IsFile; + use FileModifications; + use HasMethods; + + /** + * Relative file path + */ + protected string|null $path; + + + /** + * Creates a new Asset object for the given path. + */ + public function __construct(string $path) + { + $this->root = $this->kirby()->root('index') . '/' . $path; + $this->url = $this->kirby()->url('base') . '/' . $path; + + $path = dirname($path); + $this->path = $path === '.' ? '' : $path; + } + + /** + * Magic caller for asset methods + * + * @throws \Kirby\Exception\BadMethodCallException + */ + public function __call(string $method, array $arguments = []): mixed + { + // public property access + if (isset($this->$method) === true) { + return $this->$method; + } + + // asset method proxy + if (method_exists($this->asset(), $method)) { + return $this->asset()->$method(...$arguments); + } + + // asset methods + if ($this->hasMethod($method)) { + return $this->callMethod($method, $arguments); + } + + throw new BadMethodCallException('The method: "' . $method . '" does not exist'); + } + + /** + * Returns a unique id for the asset + */ + public function id(): string + { + return $this->root(); + } + + /** + * Create a unique media hash + */ + public function mediaHash(): string + { + return crc32($this->filename()) . '-' . $this->modified(); + } + + /** + * Returns the relative path starting at the media folder + */ + public function mediaPath(): string + { + return 'assets/' . $this->path() . '/' . $this->mediaHash() . '/' . $this->filename(); + } + + /** + * Returns the absolute path to the file in the public media folder + */ + public function mediaRoot(): string + { + return $this->kirby()->root('media') . '/' . $this->mediaPath(); + } + + /** + * Returns the absolute Url to the file in the public media folder + */ + public function mediaUrl(): string + { + return $this->kirby()->url('media') . '/' . $this->mediaPath(); + } + + /** + * Returns the path of the file from the web root, + * excluding the filename + */ + public function path(): string + { + return $this->path; + } +} diff --git a/kirby/src/Filesystem/Dir.php b/kirby/src/Filesystem/Dir.php new file mode 100644 index 0000000..43360f4 --- /dev/null +++ b/kirby/src/Filesystem/Dir.php @@ -0,0 +1,605 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Dir +{ + /** + * Ignore when scanning directories + */ + public static array $ignore = [ + '.', + '..', + '.DS_Store', + '.gitignore', + '.git', + '.svn', + '.htaccess', + 'Thumb.db', + '@eaDir' + ]; + + public static string $numSeparator = '_'; + + /** + * Copy the directory to a new destination + * + * @param array|false $ignore List of full paths to skip during copying + * or `false` to copy all files, including + * those listed in `Dir::$ignore` + */ + public static function copy( + string $dir, + string $target, + bool $recursive = true, + array|false $ignore = [] + ): bool { + if (is_dir($dir) === false) { + throw new Exception('The directory "' . $dir . '" does not exist'); + } + + if (is_dir($target) === true) { + throw new Exception('The target directory "' . $target . '" exists'); + } + + if (static::make($target) !== true) { + throw new Exception('The target directory "' . $target . '" could not be created'); + } + + foreach (static::read($dir, $ignore === false ? [] : null) as $name) { + $root = $dir . '/' . $name; + + if ( + is_array($ignore) === true && + in_array($root, $ignore) === true + ) { + continue; + } + + if (is_dir($root) === true) { + if ($recursive === true) { + static::copy($root, $target . '/' . $name, true, $ignore); + } + } else { + F::copy($root, $target . '/' . $name); + } + } + + return true; + } + + /** + * Get all subdirectories + */ + public static function dirs( + string $dir, + array|null $ignore = null, + bool $absolute = false + ): array { + $scan = static::read($dir, $ignore, true); + $result = array_values(array_filter($scan, 'is_dir')); + + if ($absolute !== true) { + $result = array_map('basename', $result); + } + + return $result; + } + + /** + * Checks if the directory exists on disk + */ + public static function exists(string $dir): bool + { + return is_dir($dir) === true; + } + + /** + * Get all files + */ + public static function files( + string $dir, + array|null $ignore = null, + bool $absolute = false + ): array { + $scan = static::read($dir, $ignore, true); + $result = array_values(array_filter($scan, 'is_file')); + + if ($absolute !== true) { + $result = array_map('basename', $result); + } + + return $result; + } + + /** + * Read the directory and all subdirectories + * + * @todo Remove support for `$ignore = null` in a major release + * @param array|false|null $ignore Array of absolut file paths; + * `false` to disable `Dir::$ignore` list + * (passing null is deprecated) + */ + public static function index( + string $dir, + bool $recursive = false, + array|false|null $ignore = [], + string $path = null + ): array { + $result = []; + $dir = realpath($dir); + $items = static::read($dir, $ignore === false ? [] : null); + + foreach ($items as $item) { + $root = $dir . '/' . $item; + + if ( + is_array($ignore) === true && + in_array($root, $ignore) === true + ) { + continue; + } + + $entry = $path !== null ? $path . '/' . $item : $item; + $result[] = $entry; + + if ($recursive === true && is_dir($root) === true) { + $result = array_merge($result, static::index($root, true, $ignore, $entry)); + } + } + + return $result; + } + + /** + * Checks if the folder has any contents + */ + public static function isEmpty(string $dir): bool + { + return count(static::read($dir)) === 0; + } + + /** + * Checks if the directory is readable + */ + public static function isReadable(string $dir): bool + { + return is_readable($dir); + } + + /** + * Checks if the directory is writable + */ + public static function isWritable(string $dir): bool + { + return is_writable($dir); + } + + /** + * Scans the directory and analyzes files, + * content, meta info and children. This is used + * in `Kirby\Cms\Page`, `Kirby\Cms\Site` and + * `Kirby\Cms\User` objects to fetch all + * relevant information. + * + * Don't use outside the Cms context. + * + * @internal + */ + public static function inventory( + string $dir, + string $contentExtension = 'txt', + array|null $contentIgnore = null, + bool $multilang = false + ): array { + $dir = realpath($dir); + + $inventory = [ + 'children' => [], + 'files' => [], + 'template' => 'default', + ]; + + if ($dir === false) { + return $inventory; + } + + $items = static::read($dir, $contentIgnore); + + // a temporary store for all content files + $content = []; + + // sort all items naturally to avoid sorting issues later + natsort($items); + + foreach ($items as $item) { + // ignore all items with a leading dot + if (in_array(substr($item, 0, 1), ['.', '_']) === true) { + continue; + } + + $root = $dir . '/' . $item; + + if (is_dir($root) === true) { + // extract the slug and num of the directory + if (preg_match('/^([0-9]+)' . static::$numSeparator . '(.*)$/', $item, $match)) { + $num = (int)$match[1]; + $slug = $match[2]; + } else { + $num = null; + $slug = $item; + } + + $inventory['children'][] = [ + 'dirname' => $item, + 'model' => null, + 'num' => $num, + 'root' => $root, + 'slug' => $slug, + ]; + } else { + $extension = pathinfo($item, PATHINFO_EXTENSION); + + switch ($extension) { + case 'htm': + case 'html': + case 'php': + // don't track those files + break; + case $contentExtension: + $content[] = pathinfo($item, PATHINFO_FILENAME); + break; + default: + $inventory['files'][$item] = [ + 'filename' => $item, + 'extension' => $extension, + 'root' => $root, + ]; + } + } + } + + // remove the language codes from all content filenames + if ($multilang === true) { + foreach ($content as $key => $filename) { + $content[$key] = pathinfo($filename, PATHINFO_FILENAME); + } + + $content = array_unique($content); + } + + $inventory = static::inventoryContent($inventory, $content); + $inventory = static::inventoryModels($inventory, $contentExtension, $multilang); + + return $inventory; + } + + /** + * Take all content files, + * remove those who are meta files and + * detect the main content file + */ + protected static function inventoryContent(array $inventory, array $content): array + { + // filter meta files from the content file + if (empty($content) === true) { + $inventory['template'] = 'default'; + return $inventory; + } + + foreach ($content as $contentName) { + // could be a meta file. i.e. cover.jpg + if (isset($inventory['files'][$contentName]) === true) { + continue; + } + + // it's most likely the template + $inventory['template'] = $contentName; + } + + return $inventory; + } + + /** + * Go through all inventory children + * and inject a model for each + */ + protected static function inventoryModels( + array $inventory, + string $contentExtension, + bool $multilang = false + ): array { + // inject models + if ( + empty($inventory['children']) === false && + empty(Page::$models) === false + ) { + if ($multilang === true) { + $contentExtension = App::instance()->defaultLanguage()->code() . '.' . $contentExtension; + } + + foreach ($inventory['children'] as $key => $child) { + foreach (Page::$models as $modelName => $modelClass) { + if (file_exists($child['root'] . '/' . $modelName . '.' . $contentExtension) === true) { + $inventory['children'][$key]['model'] = $modelName; + break; + } + } + } + } + + return $inventory; + } + + /** + * Create a (symbolic) link to a directory + */ + public static function link(string $source, string $link): bool + { + static::make(dirname($link), true); + + if (is_dir($link) === true) { + return true; + } + + if (is_dir($source) === false) { + throw new Exception(sprintf('The directory "%s" does not exist and cannot be linked', $source)); + } + + try { + return symlink($source, $link) === true; + } catch (Throwable) { + return false; + } + } + + /** + * Creates a new directory + * + * @param string $dir The path for the new directory + * @param bool $recursive Create all parent directories, which don't exist + * @return bool True: the dir has been created, false: creating failed + * @throws \Exception If a file with the provided path already exists or the parent directory is not writable + */ + public static function make(string $dir, bool $recursive = true): bool + { + if (empty($dir) === true) { + return false; + } + + if (is_dir($dir) === true) { + return true; + } + + if (is_file($dir) === true) { + throw new Exception(sprintf('A file with the name "%s" already exists', $dir)); + } + + $parent = dirname($dir); + + if ($recursive === true) { + if (is_dir($parent) === false) { + static::make($parent, true); + } + } + + if (is_writable($parent) === false) { + throw new Exception(sprintf('The directory "%s" cannot be created', $dir)); + } + + return Helpers::handleErrors( + fn (): bool => mkdir($dir), + // if the dir was already created (race condition), + fn (int $errno, string $errstr): bool => Str::endsWith($errstr, 'File exists'), + // consider it a success + true + ); + } + + /** + * Recursively check when the dir and all + * subfolders have been modified for the last time. + * + * @param string $dir The path of the directory + * @param 'date'|'intl'|'strftime'|null $handler Custom date handler or `null` + * for the globally configured one + */ + public static function modified(string $dir, string $format = null, string|null $handler = null): int|string + { + $modified = filemtime($dir); + $items = static::read($dir); + + foreach ($items as $item) { + if (is_file($dir . '/' . $item) === true) { + $newModified = filemtime($dir . '/' . $item); + } else { + $newModified = static::modified($dir . '/' . $item); + } + + $modified = ($newModified > $modified) ? $newModified : $modified; + } + + return Str::date($modified, $format, $handler); + } + + /** + * Moves a directory to a new location + * + * @param string $old The current path of the directory + * @param string $new The desired path where the dir should be moved to + * @return bool true: the directory has been moved, false: moving failed + */ + public static function move(string $old, string $new): bool + { + if ($old === $new) { + return true; + } + + if (is_dir($old) === false || is_dir($new) === true) { + return false; + } + + if (static::make(dirname($new), true) !== true) { + throw new Exception('The parent directory cannot be created'); + } + + return rename($old, $new); + } + + /** + * Returns a nicely formatted size of all the contents of the folder + * + * @param string $dir The path of the directory + * @param string|false|null $locale Locale for number formatting, + * `null` for the current locale, + * `false` to disable number formatting + */ + public static function niceSize( + string $dir, + string|false|null $locale = null + ): string { + return F::niceSize(static::size($dir), $locale); + } + + /** + * Reads all files from a directory and returns them as an array. + * It skips unwanted invisible stuff. + * + * @param string $dir The path of directory + * @param array $ignore Optional array with filenames, which should be ignored + * @param bool $absolute If true, the full path for each item will be returned + * @return array An array of filenames + */ + public static function read( + string $dir, + array|null $ignore = null, + bool $absolute = false + ): array { + if (is_dir($dir) === false) { + return []; + } + + // create the ignore pattern + $ignore ??= static::$ignore; + $ignore = array_merge($ignore, ['.', '..']); + + // scan for all files and dirs + $result = array_values((array)array_diff(scandir($dir), $ignore)); + + // add absolute paths + if ($absolute === true) { + $result = array_map(fn ($item) => $dir . '/' . $item, $result); + } + + return $result; + } + + /** + * Removes a folder including all containing files and folders + */ + public static function remove(string $dir): bool + { + $dir = realpath($dir); + + if (is_dir($dir) === false) { + return true; + } + + if (is_link($dir) === true) { + return F::unlink($dir); + } + + foreach (scandir($dir) as $childName) { + if (in_array($childName, ['.', '..']) === true) { + continue; + } + + $child = $dir . '/' . $childName; + + if (is_dir($child) === true && is_link($child) === false) { + static::remove($child); + } else { + F::unlink($child); + } + } + + return rmdir($dir); + } + + /** + * Gets the size of the directory + * + * @param string $dir The path of the directory + * @param bool $recursive Include all subfolders and their files + */ + public static function size(string $dir, bool $recursive = true): int|false + { + if (is_dir($dir) === false) { + return false; + } + + // Get size for all direct files + $size = F::size(static::files($dir, null, true)); + + // if recursive, add sizes of all subdirectories + if ($recursive === true) { + foreach (static::dirs($dir, null, true) as $subdir) { + $size += static::size($subdir); + } + } + + return $size; + } + + /** + * Checks if the directory or any subdirectory has been + * modified after the given timestamp + */ + public static function wasModifiedAfter(string $dir, int $time): bool + { + if (filemtime($dir) > $time) { + return true; + } + + $content = static::read($dir); + + foreach ($content as $item) { + $subdir = $dir . '/' . $item; + + if (filemtime($subdir) > $time) { + return true; + } + + if (is_dir($subdir) === true && static::wasModifiedAfter($subdir, $time) === true) { + return true; + } + } + + return false; + } +} diff --git a/kirby/src/Filesystem/F.php b/kirby/src/Filesystem/F.php new file mode 100644 index 0000000..7d3b9bc --- /dev/null +++ b/kirby/src/Filesystem/F.php @@ -0,0 +1,931 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class F +{ + public static array $types = [ + 'archive' => [ + 'gz', + 'gzip', + 'tar', + 'tgz', + 'zip', + ], + 'audio' => [ + 'aif', + 'aiff', + 'm4a', + 'midi', + 'mp3', + 'wav', + ], + 'code' => [ + 'css', + 'js', + 'json', + 'java', + 'htm', + 'html', + 'php', + 'rb', + 'py', + 'scss', + 'xml', + 'yaml', + 'yml', + ], + 'document' => [ + 'csv', + 'doc', + 'docx', + 'dotx', + 'indd', + 'md', + 'mdown', + 'pdf', + 'ppt', + 'pptx', + 'rtf', + 'txt', + 'xl', + 'xls', + 'xlsx', + 'xltx', + ], + 'image' => [ + 'ai', + 'avif', + 'bmp', + 'gif', + 'eps', + 'ico', + 'j2k', + 'jp2', + 'jpeg', + 'jpg', + 'jpe', + 'png', + 'ps', + 'psd', + 'svg', + 'tif', + 'tiff', + 'webp' + ], + 'video' => [ + 'avi', + 'flv', + 'm4v', + 'mov', + 'movie', + 'mpe', + 'mpg', + 'mp4', + 'ogg', + 'ogv', + 'swf', + 'webm', + ], + ]; + + public static array $units = [ + 'B', + 'KB', + 'MB', + 'GB', + 'TB', + 'PB', + 'EB', + 'ZB', + 'YB' + ]; + + /** + * Appends new content to an existing file + * + * @param string $file The path for the file + * @param mixed $content Either a string or an array. Arrays will be converted to JSON. + */ + public static function append(string $file, $content): bool + { + return static::write($file, $content, true); + } + + /** + * Returns the file content as base64 encoded string + * + * @param string $file The path for the file + */ + public static function base64(string $file): string + { + return base64_encode(static::read($file)); + } + + /** + * Copy a file to a new location. + */ + public static function copy(string $source, string $target, bool $force = false): bool + { + if (file_exists($source) === false || (file_exists($target) === true && $force === false)) { + return false; + } + + $directory = dirname($target); + + // create the parent directory if it does not exist + if (is_dir($directory) === false) { + Dir::make($directory, true); + } + + return copy($source, $target); + } + + /** + * Just an alternative for dirname() to stay consistent + * + * + * + * $dirname = F::dirname('/var/www/test.txt'); + * // dirname is /var/www + * + * + * + * @param string $file The path + */ + public static function dirname(string $file): string + { + return dirname($file); + } + + /** + * Checks if the file exists on disk + */ + public static function exists(string $file, string|null $in = null): bool + { + try { + static::realpath($file, $in); + return true; + } catch (Exception) { + return false; + } + } + + /** + * Gets the extension of a file + * + * @param string|null $file The filename or path + * @param string|null $extension Set an optional extension to overwrite the current one + */ + public static function extension( + string|null $file = null, + string|null $extension = null + ): string { + // overwrite the current extension + if ($extension !== null) { + return static::name($file) . '.' . $extension; + } + + // return the current extension + return Str::lower(pathinfo($file, PATHINFO_EXTENSION)); + } + + /** + * Converts a file extension to a mime type + */ + public static function extensionToMime(string $extension): string|null + { + return Mime::fromExtension($extension); + } + + /** + * Returns the file type for a passed extension + */ + public static function extensionToType(string $extension): string|false + { + foreach (static::$types as $type => $extensions) { + if (in_array($extension, $extensions) === true) { + return $type; + } + } + + return false; + } + + /** + * Returns all extensions for a certain file type + */ + public static function extensions(string|null $type = null): array + { + if ($type === null) { + return array_keys(Mime::types()); + } + + return static::$types[$type] ?? []; + } + + /** + * Extracts the filename from a file path + * + * + * + * $filename = F::filename('/var/www/test.txt'); + * // filename is test.txt + * + * + * + * @param string $name The path + */ + public static function filename(string $name): string + { + return pathinfo($name, PATHINFO_BASENAME); + } + + /** + * Invalidate opcode cache for file. + * + * @param string $file The path of the file + */ + public static function invalidateOpcodeCache(string $file): bool + { + if ( + function_exists('opcache_invalidate') && + strlen(ini_get('opcache.restrict_api')) === 0 + ) { + return opcache_invalidate($file, true); + } + + return false; + } + + /** + * Checks if a file is of a certain type + * + * @param string $file Full path to the file + * @param string $value An extension or mime type + */ + public static function is(string $file, string $value): bool + { + // check for the extension + if (in_array($value, static::extensions()) === true) { + return static::extension($file) === $value; + } + + // check for the mime type + if (strpos($value, '/') !== false) { + return static::mime($file) === $value; + } + + return false; + } + + /** + * Checks if the file is readable + */ + public static function isReadable(string $file): bool + { + return is_readable($file); + } + + /** + * Checks if the file is writable + */ + public static function isWritable(string $file): bool + { + if (file_exists($file) === false) { + return is_writable(dirname($file)); + } + + return is_writable($file); + } + + /** + * Create a (symbolic) link to a file + */ + public static function link(string $source, string $link, string $method = 'link'): bool + { + Dir::make(dirname($link), true); + + if (is_file($link) === true) { + return true; + } + + if (is_file($source) === false) { + throw new Exception(sprintf('The file "%s" does not exist and cannot be linked', $source)); + } + + try { + return $method($source, $link) === true; + } catch (Throwable) { + return false; + } + } + + /** + * Loads a file and returns the result or `false` if the + * file to load does not exist + * + * @param array $data Optional array of variables to extract in the variable scope + */ + public static function load( + string $file, + mixed $fallback = null, + array $data = [], + bool $allowOutput = true + ) { + if (is_file($file) === false) { + return $fallback; + } + + // we use the loadIsolated() method here to prevent the included + // file from overwriting our $fallback in this variable scope; see + // https://www.php.net/manual/en/function.include.php#example-124 + $callback = fn () => static::loadIsolated($file, $data); + + // if the loaded file should not produce any output, + // call the loaidIsolated method from the Response class + // which checks for unintended ouput and throws an error if detected + if ($allowOutput === false) { + $result = Response::guardAgainstOutput($callback); + } else { + $result = $callback(); + } + + if ( + $fallback !== null && + gettype($result) !== gettype($fallback) + ) { + return $fallback; + } + + return $result; + } + + /** + * A super simple class autoloader + * @since 3.7.0 + */ + public static function loadClasses( + array $classmap, + string|null $base = null + ): void { + // convert all classnames to lowercase + $classmap = array_change_key_case($classmap); + + spl_autoload_register( + fn ($class) => Response::guardAgainstOutput(function () use ($class, $classmap, $base) { + $class = strtolower($class); + + if (isset($classmap[$class]) === false) { + return false; + } + + if ($base) { + include $base . '/' . $classmap[$class]; + } else { + include $classmap[$class]; + } + }) + ); + } + + /** + * Loads a file with as little as possible in the variable scope + * + * @param array $data Optional array of variables to extract in the variable scope + */ + protected static function loadIsolated(string $file, array $data = []) + { + // extract the $data variables in this scope to be accessed by the included file; + // protect $file against being overwritten by a $data variable + $___file___ = $file; + extract($data); + + return include $___file___; + } + + /** + * Loads a file using `include_once()` and + * returns whether loading was successful + */ + public static function loadOnce( + string $file, + bool $allowOutput = true + ): bool { + if (is_file($file) === false) { + return false; + } + + $callback = fn () => include_once $file; + + if ($allowOutput === false) { + Response::guardAgainstOutput($callback); + } else { + $callback(); + } + + return true; + } + + /** + * Returns the mime type of a file + */ + public static function mime(string $file): string|null + { + return Mime::type($file); + } + + /** + * Converts a mime type to a file extension + */ + public static function mimeToExtension(string|null $mime = null): string|false + { + return Mime::toExtension($mime); + } + + /** + * Returns the type for a given mime + */ + public static function mimeToType(string $mime): string|false + { + return static::extensionToType(Mime::toExtension($mime)); + } + + /** + * Get the file's last modification time. + * + * @param 'date'|'intl'|'strftime'|null $handler Custom date handler or `null` + * for the globally configured one + */ + public static function modified( + string $file, + string|IntlDateFormatter|null $format = null, + string|null $handler = null + ): string|int|false { + if (file_exists($file) !== true) { + return false; + } + + $modified = filemtime($file); + + return Str::date($modified, $format, $handler); + } + + /** + * Moves a file to a new location + * + * @param string $oldRoot The current path for the file + * @param string $newRoot The path to the new location + * @param bool $force Force move if the target file exists + */ + public static function move(string $oldRoot, string $newRoot, bool $force = false): bool + { + // check if the file exists + if (file_exists($oldRoot) === false) { + return false; + } + + if (file_exists($newRoot) === true) { + if ($force === false) { + return false; + } + + // delete the existing file + static::remove($newRoot); + } + + $directory = dirname($newRoot); + + // create the parent directory if it does not exist + if (is_dir($directory) === false) { + Dir::make($directory, true); + } + + // atomically moving the file will only work if + // source and target are on the same filesystem + if (stat($oldRoot)['dev'] === stat($directory)['dev']) { + // same filesystem, we can move the file + return rename($oldRoot, $newRoot) === true; + } + + // @codeCoverageIgnoreStart + // not the same filesystem; we need to copy + // the file and unlink the source afterwards + if (copy($oldRoot, $newRoot) === true) { + return unlink($oldRoot) === true; + } + + // copying failed, ensure the new root isn't there + // (e.g. if the file could be created but there's no + // more remaining disk space to write its contents) + static::remove($newRoot); + return false; + // @codeCoverageIgnoreEnd + } + + /** + * Extracts the name from a file path or filename without extension + * + * @param string $name The path or filename + */ + public static function name(string $name): string + { + return pathinfo($name, PATHINFO_FILENAME); + } + + /** + * Converts an integer size into a human readable format + * + * @param int|string|array $size The file size, a file path or array of paths + * @param string|false|null $locale Locale for number formatting, + * `null` for the current locale, + * `false` to disable number formatting + */ + public static function niceSize( + int|string|array $size, + string|false|null $locale = null + ): string { + // file mode + if (is_string($size) === true || is_array($size) === true) { + $size = static::size($size); + } + + // make sure it's an int + $size = (int)$size; + + // avoid errors for invalid sizes + if ($size <= 0) { + return '0 KB'; + } + + // the math magic + $size = round($size / pow(1024, ($unit = floor(log($size, 1024)))), 2); + + // format the number if requested + if ($locale !== false) { + $size = I18n::formatNumber($size, $locale); + } + + return $size . ' ' . static::$units[$unit]; + } + + /** + * Reads the content of a file or requests the + * contents of a remote HTTP or HTTPS URL + * + * @param string $file The path for the file or an absolute URL + */ + public static function read(string $file): string|false + { + if ( + is_readable($file) !== true && + Str::startsWith($file, 'https://') !== true && + Str::startsWith($file, 'http://') !== true + ) { + return false; + } + + return file_get_contents($file); + } + + /** + * Changes the name of the file without + * touching the extension + * + * @param bool $overwrite Force overwrite existing files + */ + public static function rename(string $file, string $newName, bool $overwrite = false): string|false + { + // create the new name + $name = static::safeName(basename($newName)); + + // overwrite the root + $newRoot = rtrim(dirname($file) . '/' . $name . '.' . F::extension($file), '.'); + + // nothing has changed + if ($newRoot === $file) { + return $newRoot; + } + + if (F::move($file, $newRoot, $overwrite) !== true) { + return false; + } + + return $newRoot; + } + + /** + * Returns the absolute path to the file if the file can be found. + */ + public static function realpath(string $file, string|null $in = null): string + { + $realpath = realpath($file); + + if ($realpath === false || is_file($realpath) === false) { + throw new Exception(sprintf('The file does not exist at the given path: "%s"', $file)); + } + + if ($in !== null) { + $parent = realpath($in); + + if ($parent === false || is_dir($parent) === false) { + throw new Exception(sprintf('The parent directory does not exist: "%s"', $in)); + } + + if (substr($realpath, 0, strlen($parent)) !== $parent) { + throw new Exception('The file is not within the parent directory'); + } + } + + return $realpath; + } + + /** + * Returns the relative path of the file + * starting after $in + * + * @SuppressWarnings(PHPMD.CountInLoopExpression) + */ + public static function relativepath(string $file, string|null $in = null): string + { + if (empty($in) === true) { + return basename($file); + } + + // windows + $file = str_replace('\\', '/', $file); + $in = str_replace('\\', '/', $in); + + // trim trailing slashes + $file = rtrim($file, '/'); + $in = rtrim($in, '/'); + + if (Str::contains($file, $in . '/') === false) { + // make the paths relative by stripping what they have + // in common and adding `../` tokens at the start + $fileParts = explode('/', $file); + $inParts = explode('/', $in); + while (count($fileParts) && count($inParts) && ($fileParts[0] === $inParts[0])) { + array_shift($fileParts); + array_shift($inParts); + } + + return str_repeat('../', count($inParts)) . implode('/', $fileParts); + } + + return '/' . Str::after($file, $in . '/'); + } + + /** + * Deletes a file + * + * + * + * $remove = F::remove('test.txt'); + * if($remove) echo 'The file has been removed'; + * + * + * + * @param string $file The path for the file + */ + public static function remove(string $file): bool + { + if (strpos($file, '*') !== false) { + foreach (glob($file) as $f) { + static::remove($f); + } + + return true; + } + + $file = realpath($file); + if (is_string($file) === false) { + return true; + } + + return static::unlink($file); + } + + /** + * Sanitize a file's full name (filename and extension) + * to strip unwanted special characters + * + * + * + * $safe = f::safeName('über genius.txt'); + * // safe will be ueber-genius.txt + * + * + * + * @param string $string The file name + */ + public static function safeName(string $string): string + { + $basename = static::safeBasename($string); + $extension = static::safeExtension($string); + + if (empty($extension) === false) { + $extension = '.' . $extension; + } + + return $basename . $extension; + } + + /** + * Sanitize a file's name (without extension) + * @since 4.0.0 + */ + public static function safeBasename(string $string): string + { + $name = static::name($string); + return Str::slug($name, '-', 'a-z0-9@._-'); + } + + /** + * Sanitize a file's extension + * @since 4.0.0 + */ + public static function safeExtension(string $string): string + { + $extension = static::extension($string); + return Str::slug($extension); + } + + /** + * Tries to find similar or the same file by + * building a glob based on the path + */ + public static function similar(string $path, string $pattern = '*'): array + { + $dir = dirname($path); + $name = static::name($path); + $extension = static::extension($path); + $glob = $dir . '/' . $name . $pattern . '.' . $extension; + return glob($glob); + } + + /** + * Returns the size of a file or an array of files. + * + * @param string|array $file file path or array of paths + */ + public static function size(string|array $file): int + { + if (is_array($file) === true) { + return array_reduce( + $file, + fn ($total, $file) => $total + F::size($file), + 0 + ); + } + + try { + return filesize($file); + } catch (Throwable) { + return 0; + } + } + + /** + * Categorize the file + * + * @param string $file Either the file path or extension + */ + public static function type(string $file): string|null + { + $length = strlen($file); + + if ($length >= 2 && $length <= 4) { + // use the file name as extension + $extension = $file; + } else { + // get the extension from the filename + $extension = pathinfo($file, PATHINFO_EXTENSION); + } + + if (empty($extension) === true) { + // detect the mime type first to get the most reliable extension + $mime = static::mime($file); + $extension = static::mimeToExtension($mime); + } + + // sanitize extension + $extension = strtolower($extension); + + foreach (static::$types as $type => $extensions) { + if (in_array($extension, $extensions) === true) { + return $type; + } + } + + return null; + } + + /** + * Returns all extensions of a given file type + * or `null` if the file type is unknown + */ + public static function typeToExtensions(string $type): array|null + { + return static::$types[$type] ?? null; + } + + /** + * Ensures that a file or link is deleted (with race condition handling) + * @since 3.7.4 + */ + public static function unlink(string $file): bool + { + return Helpers::handleErrors( + fn (): bool => unlink($file), + // if the file or link was already deleted (race condition), + fn (int $errno, string $errstr): bool => Str::endsWith($errstr, 'No such file or directory'), + // consider it a success + true + ); + } + + /** + * Unzips a zip file + */ + public static function unzip(string $file, string $to): bool + { + if (class_exists('ZipArchive') === false) { + throw new Exception('The ZipArchive class is not available'); + } + + $zip = new ZipArchive(); + + if ($zip->open($file) === true) { + $zip->extractTo($to); + $zip->close(); + return true; + } + + return false; + } + + /** + * Returns the file as data uri + * + * @param string $file The path for the file + */ + public static function uri(string $file): string|false + { + if ($mime = static::mime($file)) { + return 'data:' . $mime . ';base64,' . static::base64($file); + } + + return false; + } + + /** + * Creates a new file + * + * @param string $file The path for the new file + * @param mixed $content Either a string, an object or an array. Arrays and objects will be serialized. + * @param bool $append true: append the content to an existing file if available. false: overwrite. + */ + public static function write(string $file, $content, bool $append = false): bool + { + if (is_array($content) === true || is_object($content) === true) { + $content = serialize($content); + } + + $mode = $append === true ? FILE_APPEND | LOCK_EX : LOCK_EX; + + // if the parent directory does not exist, create it + if (is_dir(dirname($file)) === false) { + if (Dir::make(dirname($file)) === false) { + return false; + } + } + + if (static::isWritable($file) === false) { + throw new Exception('The file "' . $file . '" is not writable'); + } + + return file_put_contents($file, $content, $mode) !== false; + } +} diff --git a/kirby/src/Filesystem/File.php b/kirby/src/Filesystem/File.php new file mode 100644 index 0000000..8fa2191 --- /dev/null +++ b/kirby/src/Filesystem/File.php @@ -0,0 +1,557 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class File +{ + /** + * Parent file model + * The model object must use the `\Kirby\Filesystem\IsFile` trait + */ + protected object|null $model; + + /** + * Absolute file path + */ + protected string|null $root; + + /** + * Absolute file URL + */ + protected string|null $url; + + /** + * Validation rules to be used for `::match()` + */ + public static array $validations = [ + 'maxsize' => ['size', 'max'], + 'minsize' => ['size', 'min'] + ]; + + /** + * Constructor sets all file properties + * + * @param array|string|null $props Properties or deprecated `$root` string + * @param string|null $url Deprecated argument, use `$props['url']` instead + * + * @throws \Kirby\Exception\InvalidArgumentException When the model does not use the `Kirby\Filesystem\IsFile` trait + */ + public function __construct( + array|string $props = null, + string $url = null + ) { + // Legacy support for old constructor of + // the `Kirby\Image\Image` class + if (is_array($props) === false) { + $props = [ + 'root' => $props, + 'url' => $url + ]; + } + + $this->root = $props['root'] ?? null; + $this->url = $props['url'] ?? null; + $this->model = $props['model'] ?? null; + + if ( + $this->model !== null && + method_exists($this->model, 'hasIsFileTrait') !== true + ) { + throw new InvalidArgumentException('The model object must use the "Kirby\Filesystem\IsFile" trait'); + } + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Returns the URL for the file object + */ + public function __toString(): string + { + return $this->url() ?? $this->root() ?? ''; + } + + /** + * Returns the file content as base64 encoded string + */ + public function base64(): string + { + return base64_encode($this->read()); + } + + /** + * Copy a file to a new location. + */ + public function copy(string $target, bool $force = false): static + { + if (F::copy($this->root(), $target, $force) !== true) { + throw new Exception('The file "' . $this->root() . '" could not be copied'); + } + + return new static($target); + } + + /** + * Returns the file as data uri + * + * @param bool $base64 Whether the data should be base64 encoded or not + */ + public function dataUri(bool $base64 = true): string + { + if ($base64 === true) { + return 'data:' . $this->mime() . ';base64,' . $this->base64(); + } + + return 'data:' . $this->mime() . ',' . Escape::url($this->read()); + } + + /** + * Deletes the file + */ + public function delete(): bool + { + if (F::remove($this->root()) !== true) { + throw new Exception('The file "' . $this->root() . '" could not be deleted'); + } + + return true; + } + + /* + * Automatically sends all needed headers + * for the file to be downloaded and + * echos the file's content + * + * @param string|null $filename Optional filename for the download + */ + public function download(string|null $filename = null): string + { + return Response::download($this->root(), $filename ?? $this->filename()); + } + + /** + * Checks if the file actually exists + */ + public function exists(): bool + { + return file_exists($this->root()) === true; + } + + /** + * Returns the current lowercase extension (without .) + */ + public function extension(): string + { + return F::extension($this->root()); + } + + /** + * Returns the filename + */ + public function filename(): string + { + return basename($this->root()); + } + + /** + * Returns a md5 hash of the root + */ + public function hash(): string + { + return md5($this->root()); + } + + /** + * Sends an appropriate header for the asset + */ + public function header(bool $send = true): Response|null + { + $response = new Response('', $this->mime()); + + if ($send !== true) { + return $response; + } + + $response->send(); + return null; + } + + /** + * Converts the file to html + */ + public function html(array $attr = []): string + { + return Html::a($this->url() ?? '', $attr); + } + + /** + * Checks if a file is of a certain type + * + * @param string $value An extension or mime type + */ + public function is(string $value): bool + { + return F::is($this->root(), $value); + } + + /** + * Checks if the file is readable + */ + public function isReadable(): bool + { + return is_readable($this->root()) === true; + } + + /** + * Checks if the file is a resizable image + */ + public function isResizable(): bool + { + return false; + } + + /** + * Checks if a preview can be displayed for the file + * in the panel or in the frontend + */ + public function isViewable(): bool + { + return false; + } + + /** + * Checks if the file is writable + */ + public function isWritable(): bool + { + return F::isWritable($this->root()); + } + + /** + * Returns the app instance if it exists + */ + public function kirby(): App|null + { + return App::instance(null, true); + } + + /** + * Runs a set of validations on the file object + * (mainly for images). + * + * @throws \Kirby\Exception\Exception + */ + public function match(array $rules): bool + { + $rules = array_change_key_case($rules); + + if (is_array($rules['mime'] ?? null) === true) { + $mime = $this->mime(); + + // determine if any pattern matches the MIME type; + // once any pattern matches, `$carry` is `true` and the rest is skipped + $matches = array_reduce( + $rules['mime'], + fn ($carry, $pattern) => $carry || Mime::matches($mime, $pattern), + false + ); + + if ($matches !== true) { + throw new Exception([ + 'key' => 'file.mime.invalid', + 'data' => compact('mime') + ]); + } + } + + if (is_array($rules['extension'] ?? null) === true) { + $extension = $this->extension(); + if (in_array($extension, $rules['extension']) !== true) { + throw new Exception([ + 'key' => 'file.extension.invalid', + 'data' => compact('extension') + ]); + } + } + + if (is_array($rules['type'] ?? null) === true) { + $type = $this->type(); + if (in_array($type, $rules['type']) !== true) { + throw new Exception([ + 'key' => 'file.type.invalid', + 'data' => compact('type') + ]); + } + } + + foreach (static::$validations as $key => $arguments) { + $rule = $rules[$key] ?? null; + + if ($rule !== null) { + $property = $arguments[0]; + $validator = $arguments[1]; + + if (V::$validator($this->$property(), $rule) === false) { + throw new Exception([ + 'key' => 'file.' . $key, + 'data' => [$property => $rule] + ]); + } + } + } + + return true; + } + + /** + * Detects the mime type of the file + */ + public function mime(): string|null + { + return Mime::type($this->root()); + } + + /** + * Returns the parent file model, which uses this instance as proxied file asset + */ + public function model(): object|null + { + return $this->model; + } + + /** + * Returns the file's last modification time + * + * @param 'date'|'intl'|'strftime'|null $handler Custom date handler or `null` + * for the globally configured one + */ + public function modified( + string|IntlDateFormatter|null $format = null, + string|null $handler = null + ): string|int|false { + return F::modified($this->root(), $format, $handler); + } + + /** + * Move the file to a new location + * + * @param bool $overwrite Force overwriting any existing files + */ + public function move(string $newRoot, bool $overwrite = false): static + { + if (F::move($this->root(), $newRoot, $overwrite) !== true) { + throw new Exception('The file: "' . $this->root() . '" could not be moved to: "' . $newRoot . '"'); + } + + return new static($newRoot); + } + + /** + * Getter for the name of the file + * without the extension + */ + public function name(): string + { + return pathinfo($this->root(), PATHINFO_FILENAME); + } + + /** + * Returns the file size in a + * human-readable format + * + * @param string|false|null $locale Locale for number formatting, + * `null` for the current locale, + * `false` to disable number formatting + */ + public function niceSize(string|false|null $locale = null): string + { + return F::niceSize($this->root(), $locale); + } + + /** + * Reads the file content and returns it. + */ + public function read(): string|false + { + return F::read($this->root()); + } + + /** + * Returns the absolute path to the file + */ + public function realpath(): string + { + return realpath($this->root()); + } + + /** + * Changes the name of the file without + * touching the extension + * + * @param bool $overwrite Force overwrite existing files + */ + public function rename(string $newName, bool $overwrite = false): static + { + $newRoot = F::rename($this->root(), $newName, $overwrite); + + if ($newRoot === false) { + throw new Exception('The file: "' . $this->root() . '" could not be renamed to: "' . $newName . '"'); + } + + return new static($newRoot); + } + + /** + * Returns the given file path + */ + public function root(): string|null + { + return $this->root ??= $this->model?->root(); + } + + /** + * Returns the absolute url for the file + */ + public function url(): string|null + { + // lazily determine the URL from the model object + // only if it's needed to avoid breaking custom file::url + // components that rely on `$cmsFile->asset()` methods + return $this->url ??= $this->model?->url(); + } + + /** + * Sanitizes the file contents depending on the file type + * by overwriting the file with the sanitized version + * @since 3.6.0 + * + * @param string|bool $typeLazy Explicit sane handler type string, + * `true` for lazy autodetection or + * `false` for normal autodetection + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\LogicException If more than one handler applies + * @throws \Kirby\Exception\NotFoundException If the handler was not found + * @throws \Kirby\Exception\Exception On other errors + */ + public function sanitizeContents(string|bool $typeLazy = false): void + { + Sane::sanitizeFile($this->root(), $typeLazy); + } + + /** + * Returns the sha1 hash of the file + * @since 3.6.0 + */ + public function sha1(): string + { + return sha1_file($this->root()); + } + + /** + * Returns the raw size of the file + */ + public function size(): int + { + return F::size($this->root()); + } + + /** + * Converts the media object to a + * plain PHP array + */ + public function toArray(): array + { + return [ + 'extension' => $this->extension(), + 'filename' => $this->filename(), + 'hash' => $this->hash(), + 'isReadable' => $this->isReadable(), + 'isResizable' => $this->isResizable(), + 'isWritable' => $this->isWritable(), + 'mime' => $this->mime(), + 'modified' => $this->modified('c'), + 'name' => $this->name(), + 'niceSize' => $this->niceSize(), + 'root' => $this->root(), + 'safeName' => F::safeName($this->name()), + 'size' => $this->size(), + 'type' => $this->type(), + 'url' => $this->url() + ]; + } + + /** + * Converts the entire file array into + * a json string + */ + public function toJson(): string + { + return json_encode($this->toArray()); + } + + /** + * Returns the file type. + */ + public function type(): string|null + { + return F::type($this->root()); + } + + /** + * Validates the file contents depending on the file type + * + * @param string|bool $typeLazy Explicit sane handler type string, + * `true` for lazy autodetection or + * `false` for normal autodetection + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\NotFoundException If the handler was not found + * @throws \Kirby\Exception\Exception On other errors + */ + public function validateContents(string|bool $typeLazy = false): void + { + Sane::validateFile($this->root(), $typeLazy); + } + + /** + * Writes content to the file + */ + public function write(string $content): bool + { + if (F::write($this->root(), $content) !== true) { + throw new Exception('The file "' . $this->root() . '" could not be written'); + } + + return true; + } +} diff --git a/kirby/src/Filesystem/Filename.php b/kirby/src/Filesystem/Filename.php new file mode 100644 index 0000000..80f9b8c --- /dev/null +++ b/kirby/src/Filesystem/Filename.php @@ -0,0 +1,258 @@ + 'top left', + * 'width' => 300, + * 'height' => 200 + * 'quality' => 80 + * ]); + * + * echo $filename->toString(); + * // result: some-file-300x200-crop-top-left-q80.jpg + * + * @package Kirby Filesystem + * @author Bastian Allgeier + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Filename +{ + /** + * List of all applicable attributes + */ + protected array $attributes; + + /** + * The sanitized file extension + */ + protected string $extension; + + /** + * The source original filename + */ + protected string $filename; + + /** + * The sanitized file name + */ + protected string $name; + + /** + * The template for the final name + */ + protected string $template; + + /** + * Creates a new Filename object + */ + public function __construct(string $filename, string $template, array $attributes = []) + { + $this->filename = $filename; + $this->template = $template; + $this->attributes = $attributes; + $this->extension = $this->sanitizeExtension( + $attributes['format'] ?? + pathinfo($filename, PATHINFO_EXTENSION) + ); + $this->name = $this->sanitizeName($filename); + } + + /** + * Converts the entire object to a string + */ + public function __toString(): string + { + return $this->toString(); + } + + /** + * Converts all processed attributes + * to an array. The array keys are already + * the shortened versions for the filename + */ + public function attributesToArray(): array + { + $array = [ + 'dimensions' => implode('x', $this->dimensions()), + 'crop' => $this->crop(), + 'blur' => $this->blur(), + 'bw' => $this->grayscale(), + 'q' => $this->quality(), + ]; + + $array = array_filter( + $array, + fn ($item) => $item !== null && $item !== false && $item !== '' + ); + + return $array; + } + + /** + * Converts all processed attributes + * to a string, that can be used in the + * new filename + * + * @param string|null $prefix The prefix will be used in the filename creation + */ + public function attributesToString(string|null $prefix = null): string + { + $array = $this->attributesToArray(); + $result = []; + + foreach ($array as $key => $value) { + if ($value === true) { + $value = ''; + } + + $result[] = match ($key) { + 'dimensions' => $value, + 'crop' => ($value === 'center') ? 'crop' : $key . '-' . $value, + default => $key . $value + }; + } + + $result = array_filter($result); + $attributes = implode('-', $result); + + if (empty($attributes) === true) { + return ''; + } + + return $prefix . $attributes; + } + + /** + * Normalizes the blur option value + */ + public function blur(): int|false + { + $value = $this->attributes['blur'] ?? false; + + if ($value === false) { + return false; + } + + return (int)$value; + } + + /** + * Normalizes the crop option value + */ + public function crop(): string|false + { + // get the crop value + $crop = $this->attributes['crop'] ?? false; + + if ($crop === false) { + return false; + } + + return Str::slug($crop); + } + + /** + * Returns a normalized array + * with width and height values + * if available + */ + public function dimensions(): array + { + if (empty($this->attributes['width']) === true && empty($this->attributes['height']) === true) { + return []; + } + + return [ + 'width' => $this->attributes['width'] ?? null, + 'height' => $this->attributes['height'] ?? null + ]; + } + + /** + * Returns the sanitized extension + */ + public function extension(): string + { + return $this->extension; + } + + /** + * Normalizes the grayscale option value + * and also the available ways to write + * the option. You can use `grayscale`, + * `greyscale` or simply `bw`. The function + * will always return `grayscale` + */ + public function grayscale(): bool + { + // normalize options + $value = $this->attributes['grayscale'] ?? $this->attributes['greyscale'] ?? $this->attributes['bw'] ?? false; + + // turn anything into boolean + return filter_var($value, FILTER_VALIDATE_BOOLEAN); + } + + /** + * Returns the filename without extension + */ + public function name(): string + { + return $this->name; + } + + /** + * Normalizes the quality option value + */ + public function quality(): int|false + { + $value = $this->attributes['quality'] ?? false; + + if ($value === false || $value === true) { + return false; + } + + return (int)$value; + } + + /** + * Sanitizes the file extension. + * It also replaces `jpeg` with `jpg`. + */ + protected function sanitizeExtension(string $extension): string + { + $extension = F::safeExtension('test.' . $extension); + $extension = str_replace('jpeg', 'jpg', $extension); + return $extension; + } + + /** + * Sanitizes the file name + */ + protected function sanitizeName(string $name): string + { + return F::safeBasename($name); + } + + /** + * Returns the converted filename as string + */ + public function toString(): string + { + return Str::template($this->template, [ + 'name' => $this->name(), + 'attributes' => $this->attributesToString('-'), + 'extension' => $this->extension() + ], ['fallback' => '']); + } +} diff --git a/kirby/src/Filesystem/IsFile.php b/kirby/src/Filesystem/IsFile.php new file mode 100644 index 0000000..e5b1ab1 --- /dev/null +++ b/kirby/src/Filesystem/IsFile.php @@ -0,0 +1,155 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +trait IsFile +{ + /** + * File asset object + */ + protected File|null $asset = null; + + /** + * Absolute file path + */ + protected string|null $root; + + /** + * Absolute file URL + */ + protected string|null $url; + + /** + * Constructor sets all file properties + */ + public function __construct(array $props) + { + $this->root = $props['root'] ?? null; + $this->url = $props['url'] ?? null; + } + + /** + * Magic caller for asset methods + * + * @throws \Kirby\Exception\BadMethodCallException + */ + public function __call(string $method, array $arguments = []): mixed + { + // public property access + if (isset($this->$method) === true) { + return $this->$method; + } + + // asset method proxy + if (method_exists($this->asset(), $method)) { + return $this->asset()->$method(...$arguments); + } + + throw new BadMethodCallException('The method: "' . $method . '" does not exist'); + } + + /** + * Converts the asset to a string + */ + public function __toString(): string + { + return (string)$this->asset(); + } + + /** + * Returns the file asset object + */ + public function asset(array|string|null $props = null): File + { + if ($this->asset !== null) { + return $this->asset; + } + + $props ??= []; + + if (is_string($props) === true) { + $props = ['root' => $props]; + } + + $props['model'] ??= $this; + + return $this->asset = match ($this->type()) { + 'image' => new Image($props), + default => new File($props) + }; + } + + /** + * Checks if the file exists on disk + */ + public function exists(): bool + { + // Important to include this in the trait + // to avoid infinite loops when trying + // to proxy the method from the asset object + return file_exists($this->root()) === true; + } + + /** + * To check the existence of the IsFile trait + * + * @todo Switch to class constant in traits when min PHP version 8.2 required + * @codeCoverageIgnore + */ + protected function hasIsFileTrait(): bool + { + return true; + } + + /** + * Returns the app instance + */ + public function kirby(): App + { + return App::instance(); + } + + /** + * Returns the given file path + */ + public function root(): string|null + { + return $this->root; + } + + /** + * Returns the file type + */ + public function type(): string|null + { + // Important to include this in the trait + // to avoid infinite loops when trying + // to proxy the method from the asset object + return F::type($this->root() ?? $this->url()); + } + + /** + * Returns the absolute url for the file + */ + public function url(): string|null + { + return $this->url; + } +} diff --git a/kirby/src/Filesystem/Mime.php b/kirby/src/Filesystem/Mime.php new file mode 100644 index 0000000..61bf3dc --- /dev/null +++ b/kirby/src/Filesystem/Mime.php @@ -0,0 +1,323 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Mime +{ + /** + * Extension to MIME type map + * + * @var array + */ + public static $types = [ + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/x-msvideo', + 'avif' => 'image/avif', + 'bmp' => 'image/bmp', + 'css' => 'text/css', + 'csv' => ['text/csv', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream'], + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'dvi' => 'application/x-dvi', + 'eml' => 'message/rfc822', + 'eps' => 'application/postscript', + 'exe' => ['application/octet-stream', 'application/x-msdownload'], + 'gif' => 'image/gif', + 'gtar' => 'application/x-gtar', + 'gz' => 'application/x-gzip', + 'htm' => 'text/html', + 'html' => 'text/html', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'js' => ['application/javascript', 'application/x-javascript'], + 'json' => ['application/json', 'text/json'], + 'j2k' => ['image/jp2'], + 'jp2' => ['image/jp2'], + 'jpg' => ['image/jpeg', 'image/pjpeg'], + 'jpeg' => ['image/jpeg', 'image/pjpeg'], + 'jpe' => ['image/jpeg', 'image/pjpeg'], + 'log' => ['text/plain', 'text/x-log'], + 'm4a' => 'audio/mp4', + 'm4v' => 'video/mp4', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mif' => 'application/vnd.mif', + 'mjs' => 'text/javascript', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'audio/mpeg', + 'mp3' => ['audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'], + 'mp4' => 'video/mp4', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpga' => 'audio/mpeg', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'pdf' => ['application/pdf', 'application/x-download'], + 'php' => ['text/php', 'text/x-php', 'application/x-httpd-php', 'application/php', 'application/x-php', 'application/x-httpd-php-source'], + 'php3' => ['text/php', 'text/x-php', 'application/x-httpd-php', 'application/php', 'application/x-php', 'application/x-httpd-php-source'], + 'phps' => ['text/php', 'text/x-php', 'application/x-httpd-php', 'application/php', 'application/x-php', 'application/x-httpd-php-source'], + 'pht' => ['text/php', 'text/x-php', 'application/x-httpd-php', 'application/php', 'application/x-php', 'application/x-httpd-php-source'], + 'phtml' => ['text/php', 'text/x-php', 'application/x-httpd-php', 'application/php', 'application/x-php', 'application/x-httpd-php-source'], + 'png' => 'image/png', + 'ppt' => ['application/powerpoint', 'application/vnd.ms-powerpoint'], + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ps' => 'application/postscript', + 'psd' => 'application/x-photoshop', + 'qt' => 'video/quicktime', + 'rss' => 'application/rss+xml', + 'rtf' => 'text/rtf', + 'rtx' => 'text/richtext', + 'shtml' => 'text/html', + 'svg' => 'image/svg+xml', + 'swf' => 'application/x-shockwave-flash', + 'tar' => 'application/x-tar', + 'text' => 'text/plain', + 'txt' => 'text/plain', + 'tgz' => ['application/x-tar', 'application/x-gzip-compressed'], + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'wav' => 'audio/x-wav', + 'wbxml' => 'application/wbxml', + 'webm' => 'video/webm', + 'webp' => 'image/webp', + 'word' => ['application/msword', 'application/octet-stream'], + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'xml' => 'text/xml', + 'xl' => 'application/excel', + 'xls' => ['application/excel', 'application/vnd.ms-excel', 'application/msexcel'], + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'xsl' => 'text/xml', + 'yaml' => ['application/yaml', 'text/yaml'], + 'yml' => ['application/yaml', 'text/yaml'], + 'zip' => ['application/x-zip', 'application/zip', 'application/x-zip-compressed'], + ]; + + /** + * Fixes an invalid MIME type guess for the given file + */ + public static function fix( + string $file, + string|null $mime = null, + string|null $extension = null + ): string|null { + // fixing map + $map = [ + 'text/html' => [ + 'svg' => [Mime::class, 'fromSvg'], + ], + 'text/plain' => [ + 'css' => 'text/css', + 'json' => 'application/json', + 'mjs' => 'text/javascript', + 'svg' => [Mime::class, 'fromSvg'], + ], + 'text/x-asm' => [ + 'css' => 'text/css' + ], + 'text/x-java' => [ + 'mjs' => 'text/javascript', + ], + 'image/svg' => [ + 'svg' => 'image/svg+xml' + ], + 'application/octet-stream' => [ + 'mjs' => 'text/javascript' + ] + ]; + + if ($mode = ($map[$mime][$extension] ?? null)) { + if (is_callable($mode) === true) { + return $mode($file, $mime, $extension); + } + + if (is_string($mode) === true) { + return $mode; + } + } + + return $mime; + } + + /** + * Guesses a MIME type by extension + */ + public static function fromExtension(string $extension): string|null + { + $mime = static::$types[$extension] ?? null; + return is_array($mime) === true ? array_shift($mime) : $mime; + } + + /** + * Returns the MIME type of a file + */ + public static function fromFileInfo(string $file): string|false + { + if (function_exists('finfo_file') === true && file_exists($file) === true) { + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $mime = finfo_file($finfo, $file); + finfo_close($finfo); + return $mime; + } + + return false; + } + + /** + * Returns the MIME type of a file + */ + public static function fromMimeContentType(string $file): string|false + { + if ( + function_exists('mime_content_type') === true && + file_exists($file) === true + ) { + return mime_content_type($file); + } + + return false; + } + + /** + * Tries to detect a valid SVG and returns the MIME type accordingly + */ + public static function fromSvg(string $file): string|false + { + if (file_exists($file) === true) { + libxml_use_internal_errors(true); + + $svg = new SimpleXMLElement(file_get_contents($file)); + + if ($svg !== false && $svg->getName() === 'svg') { + return 'image/svg+xml'; + } + } + + return false; + } + + /** + * Tests if a given MIME type is matched by an `Accept` header + * pattern; returns true if the MIME type is contained at all + */ + public static function isAccepted(string $mime, string $pattern): bool + { + $accepted = Str::accepted($pattern); + + foreach ($accepted as $m) { + if (static::matches($mime, $m['value']) === true) { + return true; + } + } + + return false; + } + + /** + * Tests if a MIME wildcard pattern from an `Accept` header + * matches a given type + * @since 3.3.0 + */ + public static function matches(string $test, string $wildcard): bool + { + return fnmatch($wildcard, $test, FNM_PATHNAME) === true; + } + + /** + * Returns the extension for a given MIME type + */ + public static function toExtension(string $mime = null): string|false + { + foreach (static::$types as $key => $value) { + if (is_array($value) === true && in_array($mime, $value) === true) { + return $key; + } + + if ($value === $mime) { + return $key; + } + } + + return false; + } + + /** + * Returns all available extensions for a given MIME type + */ + public static function toExtensions(string $mime = null): array + { + $extensions = []; + + foreach (static::$types as $key => $value) { + if (is_array($value) === true && in_array($mime, $value) === true) { + $extensions[] = $key; + continue; + } + + if ($value === $mime) { + $extensions[] = $key; + } + } + + return $extensions; + } + + /** + * Returns the MIME type of a file + */ + public static function type( + string $file, + string|null $extension = null + ): string|null { + // use the standard finfo extension + $mime = static::fromFileInfo($file); + + // use the mime_content_type function + if ($mime === false) { + $mime = static::fromMimeContentType($file); + } + + // get the extension or extract it from the filename + $extension ??= F::extension($file); + + // try to guess the mime type at least + if ($mime === false) { + $mime = static::fromExtension($extension); + } + + // fix broken mime detection + return static::fix($file, $mime, $extension); + } + + /** + * Returns all detectable MIME types + */ + public static function types(): array + { + return static::$types; + } +} diff --git a/kirby/src/Form/Field.php b/kirby/src/Form/Field.php new file mode 100644 index 0000000..cb95fd4 --- /dev/null +++ b/kirby/src/Form/Field.php @@ -0,0 +1,510 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Field extends Component +{ + /** + * An array of all found errors + */ + protected array|null $errors = null; + + /** + * Parent collection with all fields of the current form + */ + protected Fields|null $formFields; + + /** + * Registry for all component mixins + */ + public static array $mixins = []; + + /** + * Registry for all component types + */ + public static array $types = []; + + /** + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function __construct( + string $type, + array $attrs = [], + Fields|null $formFields = null + ) { + if (isset(static::$types[$type]) === false) { + throw new InvalidArgumentException([ + 'key' => 'field.type.missing', + 'data' => ['name' => $attrs['name'] ?? '-', 'type' => $type] + ]); + } + + if (isset($attrs['model']) === false) { + throw new InvalidArgumentException('Field requires a model'); + } + + $this->formFields = $formFields; + + // use the type as fallback for the name + $attrs['name'] ??= $type; + $attrs['type'] = $type; + + parent::__construct($type, $attrs); + } + + /** + * Returns field api call + */ + public function api(): mixed + { + if ( + isset($this->options['api']) === true && + $this->options['api'] instanceof Closure + ) { + return $this->options['api']->call($this); + } + + return null; + } + + /** + * Returns field data + */ + public function data(bool $default = false): mixed + { + $save = $this->options['save'] ?? true; + + if ($default === true && $this->isEmpty($this->value)) { + $value = $this->default(); + } else { + $value = $this->value; + } + + if ($save === false) { + return null; + } + + if ($save instanceof Closure) { + return $save->call($this, $value); + } + + return $value; + } + + /** + * Default props and computed of the field + */ + public static function defaults(): array + { + return [ + 'props' => [ + /** + * Optional text that will be shown after the input + */ + 'after' => function ($after = null) { + return I18n::translate($after, $after); + }, + /** + * Sets the focus on this field when the form loads. Only the first field with this label gets + */ + 'autofocus' => function (bool $autofocus = null): bool { + return $autofocus ?? false; + }, + /** + * Optional text that will be shown before the input + */ + 'before' => function ($before = null) { + return I18n::translate($before, $before); + }, + /** + * Default value for the field, which will be used when a page/file/user is created + */ + 'default' => function ($default = null) { + return $default; + }, + /** + * If `true`, the field is no longer editable and will not be saved + */ + 'disabled' => function (bool $disabled = null): bool { + return $disabled ?? false; + }, + /** + * Optional help text below the field + */ + 'help' => function ($help = null) { + return I18n::translate($help, $help); + }, + /** + * Optional icon that will be shown at the end of the field + */ + 'icon' => function (string $icon = null) { + return $icon; + }, + /** + * The field label can be set as string or associative array with translations + */ + 'label' => function ($label = null) { + return I18n::translate($label, $label); + }, + /** + * Optional placeholder value that will be shown when the field is empty + */ + 'placeholder' => function ($placeholder = null) { + return I18n::translate($placeholder, $placeholder); + }, + /** + * If `true`, the field has to be filled in correctly to be saved. + */ + 'required' => function (bool $required = null): bool { + return $required ?? false; + }, + /** + * If `false`, the field will be disabled in non-default languages and cannot be translated. This is only relevant in multi-language setups. + */ + 'translate' => function (bool $translate = true): bool { + return $translate; + }, + /** + * Conditions when the field will be shown (since 3.1.0) + */ + 'when' => function ($when = null) { + return $when; + }, + /** + * The width of the field in the field grid. Available widths: `1/1`, `1/2`, `1/3`, `1/4`, `2/3`, `3/4` + */ + 'width' => function (string $width = '1/1') { + return $width; + }, + 'value' => function ($value = null) { + return $value; + } + ], + 'computed' => [ + 'after' => function () { + /** @var \Kirby\Form\Field $this */ + if ($this->after !== null) { + return $this->model()->toString($this->after); + } + }, + 'before' => function () { + /** @var \Kirby\Form\Field $this */ + if ($this->before !== null) { + return $this->model()->toString($this->before); + } + }, + 'default' => function () { + /** @var \Kirby\Form\Field $this */ + if ($this->default === null) { + return; + } + + if (is_string($this->default) === false) { + return $this->default; + } + + return $this->model()->toString($this->default); + }, + 'help' => function () { + /** @var \Kirby\Form\Field $this */ + if ($this->help) { + $help = $this->model()->toSafeString($this->help); + $help = $this->kirby()->kirbytext($help); + return $help; + } + }, + 'label' => function () { + /** @var \Kirby\Form\Field $this */ + if ($this->label !== null) { + return $this->model()->toString($this->label); + } + }, + 'placeholder' => function () { + /** @var \Kirby\Form\Field $this */ + if ($this->placeholder !== null) { + return $this->model()->toString($this->placeholder); + } + } + ] + ]; + } + + /** + * Returns optional dialog routes for the field + */ + public function dialogs(): array + { + if ( + isset($this->options['dialogs']) === true && + $this->options['dialogs'] instanceof Closure + ) { + return $this->options['dialogs']->call($this); + } + + return []; + } + + /** + * Returns optional drawer routes for the field + */ + public function drawers(): array + { + if ( + isset($this->options['drawers']) === true && + $this->options['drawers'] instanceof Closure + ) { + return $this->options['drawers']->call($this); + } + + return []; + } + + /** + * Creates a new field instance + */ + public static function factory( + string $type, + array $attrs = [], + Fields|null $formFields = null + ): static|FieldClass { + $field = static::$types[$type] ?? null; + + if (is_string($field) && class_exists($field) === true) { + $attrs['siblings'] = $formFields; + return new $field($attrs); + } + + return new static($type, $attrs, $formFields); + } + + /** + * Parent collection with all fields of the current form + */ + public function formFields(): Fields|null + { + return $this->formFields; + } + + /** + * Validates when run for the first time and returns any errors + */ + public function errors(): array + { + if ($this->errors === null) { + $this->validate(); + } + + return $this->errors; + } + + /** + * Checks if the field is empty + */ + public function isEmpty(mixed ...$args): bool + { + $value = match (count($args)) { + 0 => $this->value(), + default => $args[0] + }; + + if ($empty = $this->options['isEmpty'] ?? null) { + return $empty->call($this, $value); + } + + return in_array($value, [null, '', []], true); + } + + /** + * Checks if the field is hidden + */ + public function isHidden(): bool + { + return ($this->options['hidden'] ?? false) === true; + } + + /** + * Checks if the field is invalid + */ + public function isInvalid(): bool + { + return empty($this->errors()) === false; + } + + /** + * Checks if the field is required + */ + public function isRequired(): bool + { + return $this->required ?? false; + } + + /** + * Checks if the field is valid + */ + public function isValid(): bool + { + return empty($this->errors()) === true; + } + + /** + * Returns the Kirby instance + */ + public function kirby(): App + { + return $this->model()->kirby(); + } + + /** + * Returns the parent model + */ + public function model(): mixed + { + return $this->model; + } + + /** + * Checks if the field needs a value before being saved; + * this is the case if all of the following requirements are met: + * - The field is saveable + * - The field is required + * - The field is currently empty + * - The field is not currently inactive because of a `when` rule + */ + protected function needsValue(): bool + { + // check simple conditions first + if ( + $this->save() === false || + $this->isRequired() === false || + $this->isEmpty() === false + ) { + return false; + } + + // check the data of the relevant fields if there is a `when` option + if ( + empty($this->when) === false && + is_array($this->when) === true && + $formFields = $this->formFields() + ) { + foreach ($this->when as $field => $value) { + $field = $formFields->get($field); + $inputValue = $field?->value() ?? ''; + + // if the input data doesn't match the requested `when` value, + // that means that this field is not required and can be saved + // (*all* `when` conditions must be met for this field to be required) + if ($inputValue !== $value) { + return false; + } + } + } + + // either there was no `when` condition or all conditions matched + return true; + } + + /** + * Checks if the field is saveable + */ + public function save(): bool + { + return ($this->options['save'] ?? true) !== false; + } + + /** + * Converts the field to a plain array + */ + public function toArray(): array + { + $array = parent::toArray(); + + unset($array['model']); + + $array['hidden'] = $this->isHidden(); + $array['saveable'] = $this->save(); + $array['signature'] = md5(json_encode($array)); + + ksort($array); + + return array_filter( + $array, + fn ($item) => $item !== null && is_object($item) === false + ); + } + + /** + * Runs the validations defined for the field + */ + protected function validate(): void + { + $validations = $this->options['validations'] ?? []; + $this->errors = []; + + // validate required values + if ($this->needsValue() === true) { + $this->errors['required'] = I18n::translate('error.validation.required'); + } + + foreach ($validations as $key => $validation) { + if (is_int($key) === true) { + // predefined validation + try { + Validations::$validation($this, $this->value()); + } catch (Exception $e) { + $this->errors[$validation] = $e->getMessage(); + } + continue; + } + + if ($validation instanceof Closure) { + try { + $validation->call($this, $this->value()); + } catch (Exception $e) { + $this->errors[$key] = $e->getMessage(); + } + } + } + + if ( + empty($this->validate) === false && + ($this->isEmpty() === false || $this->isRequired() === true) + ) { + $rules = A::wrap($this->validate); + $errors = V::errors($this->value(), $rules); + + if (empty($errors) === false) { + $this->errors = array_merge($this->errors, $errors); + } + } + } + + /** + * Returns the value of the field if saveable + * otherwise it returns null + */ + public function value(): mixed + { + return $this->save() ? $this->value : null; + } +} diff --git a/kirby/src/Form/Field/BlocksField.php b/kirby/src/Form/Field/BlocksField.php new file mode 100644 index 0000000..e37d373 --- /dev/null +++ b/kirby/src/Form/Field/BlocksField.php @@ -0,0 +1,352 @@ +setFieldsets( + $params['fieldsets'] ?? null, + $params['model'] ?? App::instance()->site() + ); + + parent::__construct($params); + + $this->setEmpty($params['empty'] ?? null); + $this->setGroup($params['group'] ?? 'blocks'); + $this->setMax($params['max'] ?? null); + $this->setMin($params['min'] ?? null); + $this->setPretty($params['pretty'] ?? false); + } + + public function blocksToValues( + array $blocks, + string $to = 'values' + ): array { + $result = []; + $fields = []; + + foreach ($blocks as $block) { + try { + $type = $block['type']; + + // get and cache fields at the same time + $fields[$type] ??= $this->fields($block['type']); + + // overwrite the block content with form values + $block['content'] = $this->form( + $fields[$type], + $block['content'] + )->$to(); + + // create id if not exists + $block['id'] ??= Str::uuid(); + } catch (Throwable) { + // skip invalid blocks + } finally { + $result[] = $block; + } + } + + return $result; + } + + public function fields(string $type): array + { + return $this->fieldset($type)->fields(); + } + + public function fieldset(string $type): Fieldset + { + if ($fieldset = $this->fieldsets->find($type)) { + return $fieldset; + } + + throw new NotFoundException( + 'The fieldset ' . $type . ' could not be found' + ); + } + + public function fieldsets(): Fieldsets + { + return $this->fieldsets; + } + + public function fieldsetGroups(): array|null + { + $groups = $this->fieldsets()->groups(); + return empty($groups) === true ? null : $groups; + } + + public function fill(mixed $value = null): void + { + $value = BlocksCollection::parse($value); + $blocks = BlocksCollection::factory($value)->toArray(); + $this->value = $this->blocksToValues($blocks); + } + + public function form(array $fields, array $input = []): Form + { + return new Form([ + 'fields' => $fields, + 'model' => $this->model, + 'strict' => true, + 'values' => $input, + ]); + } + + public function isEmpty(): bool + { + return count($this->value()) === 0; + } + + public function group(): string + { + return $this->group; + } + + public function pretty(): bool + { + return $this->pretty; + } + + /** + * Paste action for blocks: + * - generates new uuids for the blocks + * - filters only supported fieldsets + * - applies max limit if defined + */ + public function pasteBlocks(array $blocks): array + { + $blocks = $this->blocksToValues($blocks); + + foreach ($blocks as $index => &$block) { + $block['id'] = Str::uuid(); + + // remove the block if it's not available + try { + $this->fieldset($block['type']); + } catch (Throwable) { + unset($blocks[$index]); + } + } + + return array_values($blocks); + } + + public function props(): array + { + return [ + 'empty' => $this->empty(), + 'fieldsets' => $this->fieldsets()->toArray(), + 'fieldsetGroups' => $this->fieldsetGroups(), + 'group' => $this->group(), + 'max' => $this->max(), + 'min' => $this->min(), + ] + parent::props(); + } + + public function routes(): array + { + $field = $this; + + return [ + [ + 'pattern' => 'uuid', + 'action' => fn (): array => ['uuid' => Str::uuid()] + ], + [ + 'pattern' => 'paste', + 'method' => 'POST', + 'action' => function () use ($field): array { + $request = App::instance()->request(); + $value = BlocksCollection::parse($request->get('html')); + $blocks = BlocksCollection::factory($value); + + return $field->pasteBlocks($blocks->toArray()); + } + ], + [ + 'pattern' => 'fieldsets/(:any)', + 'method' => 'GET', + 'action' => function ( + string $fieldsetType + ) use ($field): array { + $fields = $field->fields($fieldsetType); + $defaults = $field->form($fields, [])->data(true); + $content = $field->form($fields, $defaults)->values(); + + return Block::factory([ + 'content' => $content, + 'type' => $fieldsetType + ])->toArray(); + } + ], + [ + 'pattern' => 'fieldsets/(:any)/fields/(:any)/(:all?)', + 'method' => 'ALL', + 'action' => function ( + string $fieldsetType, + string $fieldName, + string $path = null + ) use ($field) { + $fields = $field->fields($fieldsetType); + $field = $field->form($fields)->field($fieldName); + + $fieldApi = $this->clone([ + 'routes' => $field->api(), + 'data' => array_merge( + $this->data(), + ['field' => $field] + ) + ]); + + return $fieldApi->call( + $path, + $this->requestMethod(), + $this->requestData() + ); + } + ], + ]; + } + + public function store(mixed $value): mixed + { + $blocks = $this->blocksToValues((array)$value, 'content'); + + // returns empty string to avoid storing empty array as string `[]` + // and to consistency work with `$field->isEmpty()` + if (empty($blocks) === true) { + return ''; + } + + return $this->valueToJson($blocks, $this->pretty()); + } + + protected function setDefault(mixed $default = null): void + { + // set id for blocks if not exists + if (is_array($default) === true) { + array_walk($default, function (&$block) { + $block['id'] ??= Str::uuid(); + }); + } + + parent::setDefault($default); + } + + protected function setFieldsets( + string|array|null $fieldsets, + ModelWithContent $model + ): void { + if (is_string($fieldsets) === true) { + $fieldsets = []; + } + + $this->fieldsets = Fieldsets::factory( + $fieldsets, + ['parent' => $model] + ); + } + + protected function setGroup(string $group = null): void + { + $this->group = $group; + } + + protected function setPretty(bool $pretty = false): void + { + $this->pretty = $pretty; + } + + public function validations(): array + { + return [ + 'blocks' => function ($value) { + if ($this->min && count($value) < $this->min) { + throw new InvalidArgumentException([ + 'key' => 'blocks.min.' . ($this->min === 1 ? 'singular' : 'plural'), + 'data' => [ + 'min' => $this->min + ] + ]); + } + + if ($this->max && count($value) > $this->max) { + throw new InvalidArgumentException([ + 'key' => 'blocks.max.' . ($this->max === 1 ? 'singular' : 'plural'), + 'data' => [ + 'max' => $this->max + ] + ]); + } + + $fields = []; + $index = 0; + + foreach ($value as $block) { + $index++; + $type = $block['type']; + + try { + $fieldset = $this->fieldset($type); + $blockFields = $fields[$type] ?? $fieldset->fields() ?? []; + } catch (Throwable) { + // skip invalid blocks + continue; + } + + // store the fields for the next round + $fields[$type] = $blockFields; + + // overwrite the content with the serialized form + $form = $this->form($blockFields, $block['content']); + foreach ($form->fields() as $field) { + $errors = $field->errors(); + + // rough first validation + if (empty($errors) === false) { + throw new InvalidArgumentException([ + 'key' => 'blocks.validation', + 'data' => [ + 'field' => $field->label(), + 'fieldset' => $fieldset->name(), + 'index' => $index + ] + ]); + } + } + } + + return true; + } + ]; + } +} diff --git a/kirby/src/Form/Field/LayoutField.php b/kirby/src/Form/Field/LayoutField.php new file mode 100644 index 0000000..2e595c0 --- /dev/null +++ b/kirby/src/Form/Field/LayoutField.php @@ -0,0 +1,365 @@ +setModel($params['model'] ?? App::instance()->site()); + $this->setLayouts($params['layouts'] ?? ['1/1']); + $this->setSelector($params['selector'] ?? null); + $this->setSettings($params['settings'] ?? null); + + parent::__construct($params); + } + + public function fill(mixed $value = null): void + { + $value = $this->valueFromJson($value); + $layouts = Layouts::factory($value, ['parent' => $this->model])->toArray(); + + foreach ($layouts as $layoutIndex => $layout) { + if ($this->settings !== null) { + $layouts[$layoutIndex]['attrs'] = $this->attrsForm($layout['attrs'])->values(); + } + + foreach ($layout['columns'] as $columnIndex => $column) { + $layouts[$layoutIndex]['columns'][$columnIndex]['blocks'] = $this->blocksToValues($column['blocks']); + } + } + + $this->value = $layouts; + } + + public function attrsForm(array $input = []): Form + { + $settings = $this->settings(); + + return new Form([ + 'fields' => $settings?->fields() ?? [], + 'model' => $this->model, + 'strict' => true, + 'values' => $input, + ]); + } + + public function layouts(): array|null + { + return $this->layouts; + } + + /** + * Creates form values for each layout + */ + public function layoutsToValues(array $layouts): array + { + foreach ($layouts as &$layout) { + $layout['id'] ??= Str::uuid(); + $layout['columns'] ??= []; + + array_walk($layout['columns'], function (&$column) { + $column['id'] ??= Str::uuid(); + $column['blocks'] = $this->blocksToValues($column['blocks'] ?? []); + }); + } + + return $layouts; + } + + /** + * Paste action for layouts: + * - generates new uuids for layout, column and blocks + * - filters only supported layouts + * - filters only supported fieldsets + */ + public function pasteLayouts(array $layouts): array + { + $layouts = $this->layoutsToValues($layouts); + + foreach ($layouts as $layoutIndex => &$layout) { + $layout['id'] = Str::uuid(); + + // remove the row if layout not available for the pasted layout field + $columns = array_column($layout['columns'], 'width'); + if (in_array($columns, $this->layouts()) === false) { + unset($layouts[$layoutIndex]); + continue; + } + + array_walk($layout['columns'], function (&$column) { + $column['id'] = Str::uuid(); + + array_walk($column['blocks'], function (&$block, $index) use ($column) { + $block['id'] = Str::uuid(); + + // remove the block if it's not available + try { + $this->fieldset($block['type']); + } catch (Throwable) { + unset($column['blocks'][$index]); + } + }); + }); + } + + return $layouts; + } + + public function props(): array + { + $settings = $this->settings(); + + return array_merge(parent::props(), [ + 'layouts' => $this->layouts(), + 'selector' => $this->selector(), + 'settings' => $settings?->toArray() + ]); + } + + public function routes(): array + { + $field = $this; + $routes = parent::routes(); + + $routes[] = [ + 'pattern' => 'layout', + 'method' => 'POST', + 'action' => function () use ($field): array { + $request = App::instance()->request(); + + $input = $request->get('attrs') ?? []; + $defaults = $field->attrsForm($input)->data(true); + $attrs = $field->attrsForm($defaults)->values(); + $columns = $request->get('columns') ?? ['1/1']; + + return Layout::factory([ + 'attrs' => $attrs, + 'columns' => array_map(fn ($width) => [ + 'blocks' => [], + 'id' => Str::uuid(), + 'width' => $width, + ], $columns) + ])->toArray(); + }, + ]; + + $routes[] = [ + 'pattern' => 'layout/paste', + 'method' => 'POST', + 'action' => function () use ($field): array { + $request = App::instance()->request(); + $value = Layouts::parse($request->get('json')); + $layouts = Layouts::factory($value); + + return $field->pasteLayouts($layouts->toArray()); + } + ]; + + $routes[] = [ + 'pattern' => 'fields/(:any)/(:all?)', + 'method' => 'ALL', + 'action' => function ( + string $fieldName, + string $path = null + ) use ($field): array { + $form = $field->attrsForm(); + $field = $form->field($fieldName); + + $fieldApi = $this->clone([ + 'routes' => $field->api(), + 'data' => array_merge( + $this->data(), + ['field' => $field] + ) + ]); + + return $fieldApi->call( + $path, + $this->requestMethod(), + $this->requestData() + ); + } + ]; + + return $routes; + } + + public function selector(): array|null + { + return $this->selector; + } + + protected function setDefault(mixed $default = null): void + { + // set id for layouts, columns and blocks within layout if not exists + if (is_array($default) === true) { + array_walk($default, function (&$layout) { + $layout['id'] ??= Str::uuid(); + + // set columns id within layout + if (isset($layout['columns']) === true) { + array_walk($layout['columns'], function (&$column) { + $column['id'] ??= Str::uuid(); + + // set blocks id within column + if (isset($column['blocks']) === true) { + array_walk($column['blocks'], function (&$block) { + $block['id'] ??= Str::uuid(); + }); + } + }); + } + }); + } + + parent::setDefault($default); + } + + protected function setLayouts(array $layouts = []): void + { + $this->layouts = array_map( + fn ($layout) => Str::split($layout), + $layouts + ); + } + + /** + * Layout selector's styles such as size (`small`, `medium`, `large` or `huge`) and columns + */ + protected function setSelector(array|null $selector = null): void + { + $this->selector = $selector; + } + + protected function setSettings(array|string|null $settings = null): void + { + if (empty($settings) === true) { + $this->settings = null; + return; + } + + $settings = Blueprint::extend($settings); + + $settings['icon'] = 'dashboard'; + $settings['type'] = 'layout'; + $settings['parent'] = $this->model(); + + $this->settings = Fieldset::factory($settings); + } + + public function settings(): Fieldset|null + { + return $this->settings; + } + + public function store(mixed $value): mixed + { + $value = Layouts::factory($value, ['parent' => $this->model])->toArray(); + + // returns empty string to avoid storing empty array as string `[]` + // and to consistency work with `$field->isEmpty()` + if (empty($value) === true) { + return ''; + } + + foreach ($value as $layoutIndex => $layout) { + if ($this->settings !== null) { + $value[$layoutIndex]['attrs'] = $this->attrsForm($layout['attrs'])->content(); + } + + foreach ($layout['columns'] as $columnIndex => $column) { + $value[$layoutIndex]['columns'][$columnIndex]['blocks'] = $this->blocksToValues($column['blocks'] ?? [], 'content'); + } + } + + return $this->valueToJson($value, $this->pretty()); + } + + public function validations(): array + { + return [ + 'layout' => function ($value) { + $fields = []; + $layoutIndex = 0; + + foreach ($value as $layout) { + $layoutIndex++; + + // validate settings form + $form = $this->attrsForm($layout['attrs'] ?? []); + + foreach ($form->fields() as $field) { + $errors = $field->errors(); + + if (empty($errors) === false) { + throw new InvalidArgumentException([ + 'key' => 'layout.validation.settings', + 'data' => [ + 'index' => $layoutIndex + ] + ]); + } + } + + // validate blocks in the layout + $blockIndex = 0; + + foreach ($layout['columns'] ?? [] as $column) { + foreach ($column['blocks'] ?? [] as $block) { + $blockIndex++; + $blockType = $block['type']; + + try { + $fieldset = $this->fieldset($blockType); + $blockFields = $fields[$blockType] ?? $this->fields($blockType) ?? []; + } catch (Throwable) { + // skip invalid blocks + continue; + } + + // store the fields for the next round + $fields[$blockType] = $blockFields; + + // overwrite the content with the serialized form + $form = $this->form($blockFields, $block['content']); + + foreach ($form->fields() as $field) { + $errors = $field->errors(); + + // rough first validation + if (empty($errors) === false) { + throw new InvalidArgumentException([ + 'key' => 'layout.validation.block', + 'data' => [ + 'blockIndex' => $blockIndex, + 'field' => $field->label(), + 'fieldset' => $fieldset->name(), + 'layoutIndex' => $layoutIndex + ] + ]); + } + } + } + } + } + + return true; + } + ]; + } +} diff --git a/kirby/src/Form/FieldClass.php b/kirby/src/Form/FieldClass.php new file mode 100644 index 0000000..cc4115e --- /dev/null +++ b/kirby/src/Form/FieldClass.php @@ -0,0 +1,646 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class FieldClass +{ + use HasSiblings; + + protected string|null $after; + protected bool $autofocus; + protected string|null $before; + protected mixed $default; + protected bool $disabled; + protected string|null $help; + protected string|null $icon; + protected string|null $label; + protected ModelWithContent $model; + protected string|null $name; + protected string|null $placeholder; + protected bool $required; + protected Fields $siblings; + protected bool $translate; + protected mixed $value = null; + protected array|null $when; + protected string|null $width; + + public function __construct( + protected array $params = [] + ) { + $this->setAfter($params['after'] ?? null); + $this->setAutofocus($params['autofocus'] ?? false); + $this->setBefore($params['before'] ?? null); + $this->setDefault($params['default'] ?? null); + $this->setDisabled($params['disabled'] ?? false); + $this->setHelp($params['help'] ?? null); + $this->setIcon($params['icon'] ?? null); + $this->setLabel($params['label'] ?? null); + $this->setModel($params['model'] ?? App::instance()->site()); + $this->setName($params['name'] ?? null); + $this->setPlaceholder($params['placeholder'] ?? null); + $this->setRequired($params['required'] ?? false); + $this->setSiblings($params['siblings'] ?? null); + $this->setTranslate($params['translate'] ?? true); + $this->setWhen($params['when'] ?? null); + $this->setWidth($params['width'] ?? null); + + if (array_key_exists('value', $params) === true) { + $this->fill($params['value']); + } + } + + public function __call(string $param, array $args): mixed + { + if (isset($this->$param) === true) { + return $this->$param; + } + + return $this->params[$param] ?? null; + } + + public function after(): string|null + { + return $this->stringTemplate($this->after); + } + + public function api(): array + { + return $this->routes(); + } + + public function autofocus(): bool + { + return $this->autofocus; + } + + public function before(): string|null + { + return $this->stringTemplate($this->before); + } + + /** + * @deprecated 3.5.0 + * @todo remove when the general field class setup has been refactored + * + * Returns the field data + * in a format to be stored + * in Kirby's content fields + */ + public function data(bool $default = false): mixed + { + return $this->store($this->value($default)); + } + + /** + * Returns the default value for the field, + * which will be used when a page/file/user is created + */ + public function default(): mixed + { + if (is_string($this->default) === false) { + return $this->default; + } + + return $this->stringTemplate($this->default); + } + + /** + * Returns optional dialog routes for the field + */ + public function dialogs(): array + { + return []; + } + + /** + * If `true`, the field is no longer editable and will not be saved + */ + public function disabled(): bool + { + return $this->disabled; + } + + /** + * Returns optional drawer routes for the field + */ + public function drawers(): array + { + return []; + } + + /** + * Runs all validations and returns an array of + * error messages + */ + public function errors(): array + { + return $this->validate(); + } + + /** + * Setter for the value + */ + public function fill(mixed $value = null): void + { + $this->value = $value; + } + + /** + * Optional help text below the field + */ + public function help(): string|null + { + if (empty($this->help) === false) { + $help = $this->stringTemplate($this->help); + $help = $this->kirby()->kirbytext($help); + return $help; + } + + return null; + } + + protected function i18n(string|array|null $param = null): string|null + { + return empty($param) === false ? I18n::translate($param, $param) : null; + } + + /** + * Optional icon that will be shown at the end of the field + */ + public function icon(): string|null + { + return $this->icon; + } + + public function id(): string + { + return $this->name(); + } + + public function isDisabled(): bool + { + return $this->disabled; + } + + public function isEmpty(): bool + { + return $this->isEmptyValue($this->value()); + } + + public function isEmptyValue(mixed $value = null): bool + { + return in_array($value, [null, '', []], true); + } + + public function isHidden(): bool + { + return false; + } + + /** + * Checks if the field is invalid + */ + public function isInvalid(): bool + { + return $this->isValid() === false; + } + + public function isRequired(): bool + { + return $this->required; + } + + public function isSaveable(): bool + { + return true; + } + + /** + * Checks if the field is valid + */ + public function isValid(): bool + { + return empty($this->errors()) === true; + } + + /** + * Returns the Kirby instance + */ + public function kirby(): App + { + return $this->model->kirby(); + } + + /** + * The field label can be set as string or associative array with translations + */ + public function label(): string + { + return $this->stringTemplate( + $this->label ?? Str::ucfirst($this->name()) + ); + } + + /** + * Returns the parent model + */ + public function model(): ModelWithContent + { + return $this->model; + } + + /** + * Returns the field name + */ + public function name(): string + { + return $this->name ?? $this->type(); + } + + /** + * Checks if the field needs a value before being saved; + * this is the case if all of the following requirements are met: + * - The field is saveable + * - The field is required + * - The field is currently empty + * - The field is not currently inactive because of a `when` rule + */ + protected function needsValue(): bool + { + // check simple conditions first + if ( + $this->isSaveable() === false || + $this->isRequired() === false || + $this->isEmpty() === false + ) { + return false; + } + + // check the data of the relevant fields if there is a `when` option + if ( + empty($this->when) === false && + is_array($this->when) === true && + $formFields = $this->siblings() + ) { + foreach ($this->when as $field => $value) { + $field = $formFields->get($field); + $inputValue = $field?->value() ?? ''; + + // if the input data doesn't match the requested `when` value, + // that means that this field is not required and can be saved + // (*all* `when` conditions must be met for this field to be required) + if ($inputValue !== $value) { + return false; + } + } + } + + // either there was no `when` condition or all conditions matched + return true; + } + + /** + * Returns all original params for the field + */ + public function params(): array + { + return $this->params; + } + + /** + * Optional placeholder value that will be shown when the field is empty + */ + public function placeholder(): string|null + { + return $this->stringTemplate($this->placeholder); + } + + /** + * Define the props that will be sent to + * the Vue component + */ + public function props(): array + { + return [ + 'after' => $this->after(), + 'autofocus' => $this->autofocus(), + 'before' => $this->before(), + 'default' => $this->default(), + 'disabled' => $this->isDisabled(), + 'help' => $this->help(), + 'hidden' => $this->isHidden(), + 'icon' => $this->icon(), + 'label' => $this->label(), + 'name' => $this->name(), + 'placeholder' => $this->placeholder(), + 'required' => $this->isRequired(), + 'saveable' => $this->isSaveable(), + 'translate' => $this->translate(), + 'type' => $this->type(), + 'when' => $this->when(), + 'width' => $this->width(), + ]; + } + + /** + * If `true`, the field has to be filled in correctly to be saved. + */ + public function required(): bool + { + return $this->required; + } + + /** + * Routes for the field API + */ + public function routes(): array + { + return []; + } + + /** + * @deprecated 3.5.0 + * @todo remove when the general field class setup has been refactored + */ + public function save(): bool + { + return $this->isSaveable(); + } + + protected function setAfter(array|string|null $after = null): void + { + $this->after = $this->i18n($after); + } + + protected function setAutofocus(bool $autofocus = false): void + { + $this->autofocus = $autofocus; + } + + protected function setBefore(array|string|null $before = null): void + { + $this->before = $this->i18n($before); + } + + protected function setDefault(mixed $default = null): void + { + $this->default = $default; + } + + protected function setDisabled(bool $disabled = false): void + { + $this->disabled = $disabled; + } + + protected function setHelp(array|string|null $help = null): void + { + $this->help = $this->i18n($help); + } + + protected function setIcon(string|null $icon = null): void + { + $this->icon = $icon; + } + + protected function setLabel(array|string|null $label = null): void + { + $this->label = $this->i18n($label); + } + + protected function setModel(ModelWithContent $model): void + { + $this->model = $model; + } + + protected function setName(string|null $name = null): void + { + $this->name = $name; + } + + protected function setPlaceholder(array|string|null $placeholder = null): void + { + $this->placeholder = $this->i18n($placeholder); + } + + protected function setRequired(bool $required = false): void + { + $this->required = $required; + } + + protected function setSiblings(Fields|null $siblings = null): void + { + $this->siblings = $siblings ?? new Fields([$this]); + } + + protected function setTranslate(bool $translate = true): void + { + $this->translate = $translate; + } + + /** + * Setter for the when condition + */ + protected function setWhen(array|null $when = null): void + { + $this->when = $when; + } + + /** + * Setter for the field width + */ + protected function setWidth(string|null $width = null): void + { + $this->width = $width; + } + + /** + * Returns all sibling fields + */ + protected function siblingsCollection(): Fields + { + return $this->siblings; + } + + /** + * Parses a string template in the given value + */ + protected function stringTemplate(string|null $string = null): string|null + { + if ($string !== null) { + return $this->model->toString($string); + } + + return null; + } + + /** + * Converts the given value to a value + * that can be stored in the text file + */ + public function store(mixed $value): mixed + { + return $value; + } + + /** + * Should the field be translatable? + */ + public function translate(): bool + { + return $this->translate; + } + + /** + * Converts the field to a plain array + */ + public function toArray(): array + { + $props = $this->props(); + $props['signature'] = md5(json_encode($props)); + + ksort($props); + + return array_filter($props, fn ($item) => $item !== null); + } + + /** + * Returns the field type + */ + public function type(): string + { + return lcfirst(basename(str_replace(['\\', 'Field'], ['/', ''], static::class))); + } + + /** + * Runs the validations defined for the field + */ + protected function validate(): array + { + $validations = $this->validations(); + $value = $this->value(); + $errors = []; + + // validate required values + if ($this->needsValue() === true) { + $errors['required'] = I18n::translate('error.validation.required'); + } + + foreach ($validations as $key => $validation) { + if (is_int($key) === true) { + // predefined validation + try { + Validations::$validation($this, $value); + } catch (Exception $e) { + $errors[$validation] = $e->getMessage(); + } + continue; + } + + if ($validation instanceof Closure) { + try { + $validation->call($this, $value); + } catch (Exception $e) { + $errors[$key] = $e->getMessage(); + } + } + } + + return $errors; + } + + /** + * Defines all validation rules + * @codeCoverageIgnore + */ + protected function validations(): array + { + return []; + } + + /** + * Returns the value of the field if saveable + * otherwise it returns null + */ + public function value(bool $default = false): mixed + { + if ($this->isSaveable() === false) { + return null; + } + + if ($default === true && $this->isEmpty() === true) { + return $this->default(); + } + + return $this->value; + } + + protected function valueFromJson(mixed $value): array + { + try { + return Data::decode($value, 'json'); + } catch (Throwable) { + return []; + } + } + + protected function valueFromYaml(mixed $value): array + { + return Data::decode($value, 'yaml'); + } + + protected function valueToJson( + array $value = null, + bool $pretty = false + ): string { + $constants = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + + if ($pretty === true) { + $constants |= JSON_PRETTY_PRINT; + } + + return json_encode($value, $constants); + } + + protected function valueToYaml(array $value = null): string + { + return Data::encode($value, 'yaml'); + } + + /** + * Conditions when the field will be shown + */ + public function when(): array|null + { + return $this->when; + } + + /** + * Returns the width of the field in + * the Panel grid + */ + public function width(): string + { + return $this->width ?? '1/1'; + } +} diff --git a/kirby/src/Form/Fields.php b/kirby/src/Form/Fields.php new file mode 100644 index 0000000..ef46f2e --- /dev/null +++ b/kirby/src/Form/Fields.php @@ -0,0 +1,52 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Fields extends Collection +{ + /** + * Internal setter for each object in the Collection. + * This takes care of validation and of setting + * the collection prop on each object correctly. + * + * @param object|array $field + */ + public function __set(string $name, $field): void + { + if (is_array($field) === true) { + // use the array key as name if the name is not set + $field['name'] ??= $name; + $field = Field::factory($field['type'], $field, $this); + } + + parent::__set($field->name(), $field); + } + + /** + * Converts the fields collection to an + * array and also does that for every + * included field. + */ + public function toArray(Closure $map = null): array + { + $array = []; + + foreach ($this as $field) { + $array[$field->name()] = $field->toArray(); + } + + return $array; + } +} diff --git a/kirby/src/Form/Form.php b/kirby/src/Form/Form.php new file mode 100644 index 0000000..40714e7 --- /dev/null +++ b/kirby/src/Form/Form.php @@ -0,0 +1,355 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Form +{ + /** + * An array of all found errors + */ + protected array|null $errors = null; + + /** + * Fields in the form + */ + protected Fields|null $fields; + + /** + * All values of form + */ + protected array $values = []; + + /** + * Form constructor + */ + public function __construct(array $props) + { + $fields = $props['fields'] ?? []; + $values = $props['values'] ?? []; + $input = $props['input'] ?? []; + $strict = $props['strict'] ?? false; + $inject = $props; + + // prepare field properties for multilang setups + $fields = static::prepareFieldsForLanguage( + $fields, + $props['language'] ?? null + ); + + // lowercase all value names + $values = array_change_key_case($values); + $input = array_change_key_case($input); + + unset($inject['fields'], $inject['values'], $inject['input']); + + $this->fields = new Fields(); + $this->values = []; + + foreach ($fields as $name => $props) { + // inject stuff from the form constructor (model, etc.) + $props = array_merge($inject, $props); + + // inject the name + $props['name'] = $name = strtolower($name); + + // check if the field is disabled and + // overwrite the field value if not set + $props['value'] = match ($props['disabled'] ?? false) { + true => $values[$name] ?? null, + default => $input[$name] ?? $values[$name] ?? null + }; + + try { + $field = Field::factory($props['type'], $props, $this->fields); + } catch (Throwable $e) { + $field = static::exceptionField($e, $props); + } + + if ($field->save() !== false) { + $this->values[$name] = $field->value(); + } + + $this->fields->append($name, $field); + } + + if ($strict !== true) { + // use all given values, no matter + // if there's a field or not. + $input = array_merge($values, $input); + + foreach ($input as $key => $value) { + $this->values[$key] ??= $value; + } + } + } + + /** + * Returns the data required to write to the content file + * Doesn't include default and null values + */ + public function content(): array + { + return $this->data(false, false); + } + + /** + * Returns data for all fields in the form + * + * @param false $defaults + */ + public function data($defaults = false, bool $includeNulls = true): array + { + $data = $this->values; + + foreach ($this->fields as $field) { + if ($field->save() === false || $field->unset() === true) { + if ($includeNulls === true) { + $data[$field->name()] = null; + } else { + unset($data[$field->name()]); + } + } else { + $data[$field->name()] = $field->data($defaults); + } + } + + return $data; + } + + /** + * An array of all found errors + */ + public function errors(): array + { + if ($this->errors !== null) { + return $this->errors; + } + + $this->errors = []; + + foreach ($this->fields as $field) { + if (empty($field->errors()) === false) { + $this->errors[$field->name()] = [ + 'label' => $field->label(), + 'message' => $field->errors() + ]; + } + } + + return $this->errors; + } + + /** + * Shows the error with the field + */ + public static function exceptionField( + Throwable $exception, + array $props = [] + ): Field { + $message = $exception->getMessage(); + + if (App::instance()->option('debug') === true) { + $message .= ' in file: ' . $exception->getFile(); + $message .= ' line: ' . $exception->getLine(); + } + + $props = array_merge($props, [ + 'label' => 'Error in "' . $props['name'] . '" field.', + 'theme' => 'negative', + 'text' => strip_tags($message), + ]); + + return Field::factory('info', $props); + } + + /** + * Get the field object by name + * and handle nested fields correctly + * + * @throws \Kirby\Exception\NotFoundException + */ + public function field(string $name): Field|FieldClass + { + $form = $this; + $fieldNames = Str::split($name, '+'); + $index = 0; + $count = count($fieldNames); + $field = null; + + foreach ($fieldNames as $fieldName) { + $index++; + + if ($field = $form->fields()->get($fieldName)) { + if ($count !== $index) { + $form = $field->form(); + } + + continue; + } + + throw new NotFoundException('The field "' . $fieldName . '" could not be found'); + } + + // it can get this error only if $name is an empty string as $name = '' + if ($field === null) { + throw new NotFoundException('No field could be loaded'); + } + + return $field; + } + + /** + * Returns form fields + */ + public function fields(): Fields|null + { + return $this->fields; + } + + public static function for( + ModelWithContent $model, + array $props = [] + ): static { + // get the original model data + $original = $model->content($props['language'] ?? null)->toArray(); + $values = $props['values'] ?? []; + + // convert closures to values + foreach ($values as $key => $value) { + if ($value instanceof Closure) { + $values[$key] = $value($original[$key] ?? null); + } + } + + // set a few defaults + $props['values'] = array_merge($original, $values); + $props['fields'] ??= []; + $props['model'] = $model; + + // search for the blueprint + if ( + method_exists($model, 'blueprint') === true && + $blueprint = $model->blueprint() + ) { + $props['fields'] = $blueprint->fields(); + } + + $ignoreDisabled = $props['ignoreDisabled'] ?? false; + + // REFACTOR: this could be more elegant + if ($ignoreDisabled === true) { + $props['fields'] = array_map(function ($field) { + $field['disabled'] = false; + return $field; + }, $props['fields']); + } + + return new static($props); + } + + /** + * Checks if the form is invalid + */ + public function isInvalid(): bool + { + return $this->isValid() === false; + } + + /** + * Checks if the form is valid + */ + public function isValid(): bool + { + return empty($this->errors()) === true; + } + + /** + * Disables fields in secondary languages when + * they are configured to be untranslatable + */ + protected static function prepareFieldsForLanguage( + array $fields, + string|null $language = null + ): array { + $kirby = App::instance(null, true); + + // only modify the fields if we have a valid Kirby multilang instance + if ($kirby?->multilang() === false) { + return $fields; + } + + $language ??= $kirby->language()->code(); + + if ($language !== $kirby->defaultLanguage()->code()) { + foreach ($fields as $fieldName => $fieldProps) { + // switch untranslatable fields to readonly + if (($fieldProps['translate'] ?? true) === false) { + $fields[$fieldName]['unset'] = true; + $fields[$fieldName]['disabled'] = true; + } + } + } + + return $fields; + } + + /** + * Converts the data of fields to strings + * + * @param false $defaults + */ + public function strings($defaults = false): array + { + return A::map( + $this->data($defaults), + fn ($value) => match (true) { + is_array($value) => Data::encode($value, 'yaml'), + default => $value + } + ); + } + + /** + * Converts the form to a plain array + */ + public function toArray(): array + { + $array = [ + 'errors' => $this->errors(), + 'fields' => $this->fields->toArray(fn ($item) => $item->toArray()), + 'invalid' => $this->isInvalid() + ]; + + return $array; + } + + /** + * Returns form values + */ + public function values(): array + { + return $this->values; + } +} diff --git a/kirby/src/Form/Mixin/EmptyState.php b/kirby/src/Form/Mixin/EmptyState.php new file mode 100644 index 0000000..6f7d72a --- /dev/null +++ b/kirby/src/Form/Mixin/EmptyState.php @@ -0,0 +1,18 @@ +empty = $this->i18n($empty); + } + + public function empty(): string|null + { + return $this->stringTemplate($this->empty); + } +} diff --git a/kirby/src/Form/Mixin/Max.php b/kirby/src/Form/Mixin/Max.php new file mode 100644 index 0000000..3141bbe --- /dev/null +++ b/kirby/src/Form/Mixin/Max.php @@ -0,0 +1,18 @@ +max; + } + + protected function setMax(int $max = null) + { + $this->max = $max; + } +} diff --git a/kirby/src/Form/Mixin/Min.php b/kirby/src/Form/Mixin/Min.php new file mode 100644 index 0000000..1b585e1 --- /dev/null +++ b/kirby/src/Form/Mixin/Min.php @@ -0,0 +1,18 @@ +min; + } + + protected function setMin(int $min = null) + { + $this->min = $min; + } +} diff --git a/kirby/src/Form/Validations.php b/kirby/src/Form/Validations.php new file mode 100644 index 0000000..7f0a539 --- /dev/null +++ b/kirby/src/Form/Validations.php @@ -0,0 +1,272 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Validations +{ + /** + * Validates if the field value is boolean + * + * @param \Kirby\Form\Field|\Kirby\Form\FieldClass $field + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function boolean($field, $value): bool + { + if ($field->isEmpty($value) === false) { + if (is_bool($value) === false) { + throw new InvalidArgumentException([ + 'key' => 'validation.boolean' + ]); + } + } + + return true; + } + + /** + * Validates if the field value is valid date + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function date(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false) { + if (V::date($value) !== true) { + throw new InvalidArgumentException( + V::message('date', $value) + ); + } + } + + return true; + } + + /** + * Validates if the field value is valid email + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function email(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false) { + if (V::email($value) === false) { + throw new InvalidArgumentException( + V::message('email', $value) + ); + } + } + + return true; + } + + /** + * Validates if the field value is maximum + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function max(Field|FieldClass $field, mixed $value): bool + { + if ( + $field->isEmpty($value) === false && + $field->max() !== null + ) { + if (V::max($value, $field->max()) === false) { + throw new InvalidArgumentException( + V::message('max', $value, $field->max()) + ); + } + } + + return true; + } + + /** + * Validates if the field value is max length + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function maxlength(Field|FieldClass $field, mixed $value): bool + { + if ( + $field->isEmpty($value) === false && + $field->maxlength() !== null + ) { + if (V::maxLength($value, $field->maxlength()) === false) { + throw new InvalidArgumentException( + V::message('maxlength', $value, $field->maxlength()) + ); + } + } + + return true; + } + + /** + * Validates if the field value is minimum + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function min(Field|FieldClass $field, mixed $value): bool + { + if ( + $field->isEmpty($value) === false && + $field->min() !== null + ) { + if (V::min($value, $field->min()) === false) { + throw new InvalidArgumentException( + V::message('min', $value, $field->min()) + ); + } + } + + return true; + } + + /** + * Validates if the field value is min length + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function minlength(Field|FieldClass $field, mixed $value): bool + { + if ( + $field->isEmpty($value) === false && + $field->minlength() !== null + ) { + if (V::minLength($value, $field->minlength()) === false) { + throw new InvalidArgumentException( + V::message('minlength', $value, $field->minlength()) + ); + } + } + + return true; + } + + /** + * Validates if the field value matches defined pattern + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function pattern(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false && $field->pattern() !== null) { + if (V::match($value, '/' . $field->pattern() . '/i') === false) { + throw new InvalidArgumentException( + V::message('match') + ); + } + } + + return true; + } + + /** + * Validates if the field value is required + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function required(Field|FieldClass $field, mixed $value): bool + { + if ( + $field->isRequired() === true && + $field->save() === true && + $field->isEmpty($value) === true + ) { + throw new InvalidArgumentException([ + 'key' => 'validation.required' + ]); + } + + return true; + } + + /** + * Validates if the field value is in defined options + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function option(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false) { + $values = array_column($field->options(), 'value'); + + if (in_array($value, $values, true) !== true) { + throw new InvalidArgumentException([ + 'key' => 'validation.option' + ]); + } + } + + return true; + } + + /** + * Validates if the field values is in defined options + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function options(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false) { + $values = array_column($field->options(), 'value'); + foreach ($value as $val) { + if (in_array($val, $values, true) === false) { + throw new InvalidArgumentException([ + 'key' => 'validation.option' + ]); + } + } + } + + return true; + } + + /** + * Validates if the field value is valid time + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function time(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false) { + if (V::time($value) !== true) { + throw new InvalidArgumentException( + V::message('time', $value) + ); + } + } + + return true; + } + + /** + * Validates if the field value is valid url + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public static function url(Field|FieldClass $field, mixed $value): bool + { + if ($field->isEmpty($value) === false) { + if (V::url($value) === false) { + throw new InvalidArgumentException( + V::message('url', $value) + ); + } + } + + return true; + } +} diff --git a/kirby/src/Http/Cookie.php b/kirby/src/Http/Cookie.php new file mode 100644 index 0000000..a44b752 --- /dev/null +++ b/kirby/src/Http/Cookie.php @@ -0,0 +1,234 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Cookie +{ + /** + * Key to use for cookie signing + */ + public static string $key = 'KirbyHttpCookieKey'; + + /** + * Set a new cookie + * + * + * + * cookie::set('mycookie', 'hello', ['lifetime' => 60]); + * // expires in 1 hour + * + * + * + * @param string $key The name of the cookie + * @param string $value The cookie content + * @param array $options Array of options: + * lifetime, path, domain, secure, httpOnly, sameSite + * @return bool true: cookie was created, + * false: cookie creation failed + */ + public static function set( + string $key, + string $value, + array $options = [] + ): bool { + // modify CMS caching behavior + static::trackUsage($key); + + // extract options + $expires = static::lifetime($options['lifetime'] ?? 0); + $path = $options['path'] ?? '/'; + $domain = $options['domain'] ?? null; + $secure = $options['secure'] ?? false; + $httponly = $options['httpOnly'] ?? true; + $samesite = $options['sameSite'] ?? 'Lax'; + + // add an HMAC signature of the value + $value = static::hmac($value) . '+' . $value; + + // store that thing in the cookie global + $_COOKIE[$key] = $value; + + // store the cookie + return setcookie( + $key, + $value, + compact('expires', 'path', 'domain', 'secure', 'httponly', 'samesite') + ); + } + + /** + * Calculates the lifetime for a cookie + * + * @param int $minutes Number of minutes or timestamp + */ + public static function lifetime(int $minutes): int + { + // absolute timestamp + if ($minutes > 1000000000) { + return $minutes; + } + + // minutes from now + if ($minutes > 0) { + return time() + ($minutes * 60); + } + + return 0; + } + + /** + * Stores a cookie forever + * + * + * + * cookie::forever('mycookie', 'hello'); + * // never expires + * + * + * + * @param string $key The name of the cookie + * @param string $value The cookie content + * @param array $options Array of options: + * path, domain, secure, httpOnly + * @return bool true: cookie was created, + * false: cookie creation failed + */ + public static function forever( + string $key, + string $value, + array $options = [] + ): bool { + // 9999-12-31 if supported (lower on 32-bit servers) + $options['lifetime'] = min(253402214400, PHP_INT_MAX); + return static::set($key, $value, $options); + } + + /** + * Get a cookie value + * + * + * cookie::get('mycookie', 'peter'); + * // sample output: 'hello' or if the cookie is not set 'peter' + * + * + * @param string|null $key The name of the cookie + * @param string|null $default The default value, which should be returned + * if the cookie has not been found + * @return string|array|null The found value + */ + public static function get( + string|null $key = null, + string|null $default = null + ): string|array|null { + if ($key === null) { + return $_COOKIE; + } + + // modify CMS caching behavior + static::trackUsage($key); + + if ($value = $_COOKIE[$key] ?? null) { + return static::parse($value); + } + + return $default; + } + + /** + * Checks if a cookie exists + */ + public static function exists(string $key): bool + { + return static::get($key) !== null; + } + + /** + * Creates a HMAC for the cookie value + * Used as a cookie signature to prevent easy tampering with cookie data + */ + protected static function hmac(string $value): string + { + return hash_hmac('sha1', $value, static::$key); + } + + /** + * Parses the hashed value from a cookie + * and tries to extract the value + */ + protected static function parse(string $string): string|null + { + // if no hash-value separator is present, we can't parse the value + if (strpos($string, '+') === false) { + return null; + } + + // extract hash and value + $hash = Str::before($string, '+'); + $value = Str::after($string, '+'); + + // if the hash or the value is missing at all return null + // $value can be an empty string, $hash can't be! + if ($hash === '') { + return null; + } + + // compare the extracted hash with the hashed value + // don't accept value if the hash is invalid + if (hash_equals(static::hmac($value), $hash) !== true) { + return null; + } + + return $value; + } + + /** + * Remove a cookie + * + * + * + * cookie::remove('mycookie'); + * // mycookie is now gone + * + * + * + * @param string $key The name of the cookie + * @return bool true: the cookie has been removed, + * false: the cookie could not be removed + */ + public static function remove(string $key): bool + { + if (isset($_COOKIE[$key]) === true) { + unset($_COOKIE[$key]); + return setcookie($key, '', 1, '/') && setcookie($key, false); + } + + return false; + } + + /** + * Tells the CMS responder that the response relies on a cookie and + * its value (even if the cookie isn't set in the current request); + * this ensures that the response is only cached for visitors who don't + * have this cookie set; + * https://github.com/getkirby/kirby/issues/4423#issuecomment-1166300526 + */ + protected static function trackUsage(string $key): void + { + // lazily request the instance for non-CMS use cases + $kirby = App::instance(null, true); + $kirby?->response()->usesCookie($key); + } +} diff --git a/kirby/src/Http/Environment.php b/kirby/src/Http/Environment.php new file mode 100644 index 0000000..8eccc13 --- /dev/null +++ b/kirby/src/Http/Environment.php @@ -0,0 +1,1009 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Environment +{ + /** + * Full base URL object + */ + protected Uri $baseUri; + + /** + * Full base URL + */ + protected string $baseUrl; + + /** + * Whether the request is being served by the CLI + */ + protected bool $cli; + + /** + * Current host name + */ + protected string|null $host; + + /** + * Whether the HTTPS protocol is used + */ + protected bool $https; + + /** + * Sanitized `$_SERVER` data + */ + protected array $info; + + /** + * Current server's IP address + */ + protected string|null $ip; + + /** + * Whether the site is behind a reverse proxy; + * `null` if not known (fixed allowed URL setup) + */ + protected bool|null $isBehindProxy; + + /** + * URI path to the base + */ + protected string $path; + + /** + * Port number in the site URL + */ + protected int|null $port; + + /** + * Intermediary value of the port + * extracted from the host name + */ + protected int|null $portInHost = null; + + /** + * Uri object for the full request URI. + * It is a combination of the base URL and `REQUEST_URI` + */ + protected Uri $requestUri; + + /** + * Full request URL + */ + protected string $requestUrl; + + /** + * Path to the php script within the + * document root without the + * filename of the script + */ + protected string $scriptPath; + + /** + * Class constructor + * + * @param array|null $info Optional override for `$_SERVER` + */ + public function __construct( + array|null $options = null, + array|null $info = null + ) { + $this->detect($options, $info); + } + + /** + * Returns the server's IP address + * @see ::ip + */ + public function address(): string|null + { + return $this->ip(); + } + + /** + * Returns the full base URL object + */ + public function baseUri(): Uri + { + return $this->baseUri; + } + + /** + * Returns the full base URL + */ + public function baseUrl(): string + { + return $this->baseUrl; + } + + /** + * Checks if the request is being served by the CLI + */ + public function cli(): bool + { + return $this->cli; + } + + /** + * Sanitizes the server info and detects + * all relevant parts. This can be called + * again at a later point to overwrite all + * the stored information and re-detect the + * environment if necessary. + * + * @param array|null $info Optional override for `$_SERVER` + */ + public function detect( + array $options = null, + array $info = null + ): array { + $defaults = [ + 'cli' => null, + 'allowed' => null + ]; + + $info ??= $_SERVER; + $options = array_merge($defaults, $options ?? []); + + $this->info = static::sanitize($info); + $this->cli = $this->detectCli($options['cli']); + $this->ip = $this->detectIp(); + $this->host = null; + $this->https = false; + $this->isBehindProxy = null; + $this->scriptPath = $this->detectScriptPath($this->get('SCRIPT_NAME')); + $this->path = $this->detectPath($this->scriptPath); + $this->port = null; + + // insecure auto-detection + if ($options['allowed'] === '*' || $options['allowed'] === ['*']) { + $this->detectAuto(true); + + // fixed environments + } elseif (empty($options['allowed']) === false) { + $this->detectAllowed($options['allowed']); + + // secure auto-detection + } else { + $this->detectAuto(); + } + + // build the URI based on the detected params + $this->detectBaseUri(); + + // build the request URI based on the detected URL + $this->detectRequestUri($this->get('REQUEST_URI')); + + // return the sanitized $_SERVER array + return $this->info; + } + + /** + * Sets the host name, port, path and protocol from the + * fixed list of allowed URLs + */ + protected function detectAllowed(array|string $allowed): void + { + $allowed = A::wrap($allowed); + + // with a single allowed URL, the entire + // environment will be based on that + if (count($allowed) === 1) { + $baseUrl = A::first($allowed); + + if (is_string($baseUrl) === false) { + throw new InvalidArgumentException('Invalid allow list setup for base URLs'); + } + + $uri = new Uri($baseUrl, ['slash' => false]); + + $this->host = $uri->host(); + $this->https = $uri->https(); + $this->port = $uri->port(); + $this->path = $uri->path()->toString(); + return; + } + + // run insecure auto detection to get + // host, port and https from the environment; + // security is achieved by checking against + // the fixed allowlist below + $this->detectAuto(true); + + // build the baseUrl based on the detected environment + // to compare it against what is allowed + $this->detectBaseUri(); + + foreach ($allowed as $url) { + // skip invalid URLs + if (is_string($url) === false) { + continue; + } + + $uri = new Uri($url, ['slash' => false]); + + // the current environment is allowed, + // stop before the exception below is thrown + if ($uri->toString() === $this->baseUrl) { + return; + } + } + + throw new InvalidArgumentException('The environment is not allowed'); + } + + /** + * Sets the host name, port and protocol without configuration + * + * @param bool $insecure Include the `Host`, `Forwarded` and `X-Forwarded-*` headers in the search + */ + protected function detectAuto(bool $insecure = false): void + { + // proxy server setup + if ($insecure === true) { + $forwarded = $this->detectForwarded(); + + $host = $forwarded['host']; + $port = $forwarded['port']; + $https = $forwarded['https']; + + if ($host || $port || $https) { + $this->isBehindProxy = true; + + // if a port or scheme is defined but no host, assume + // that the host is the same as PHP's own hostname + // (which is often the case with reverse proxies) + $this->host = $host ?? $this->detectHost($insecure); + $this->port = $port; + $this->https = $https; + + return; + } + } + + // local server setup + $this->isBehindProxy = false; + + $this->host = $this->detectHost($insecure); + $this->https = $this->detectHttps(); + $this->port = $this->detectPort(); + } + + /** + * Builds the base URL based on the + * given environment params + */ + protected function detectBaseUri(): Uri + { + $this->baseUri = new Uri([ + 'host' => $this->host, + 'path' => $this->path, + 'port' => $this->port, + 'scheme' => $this->https ? 'https' : 'http', + ]); + + $this->baseUrl = $this->baseUri->toString(); + + return $this->baseUri; + } + + /** + * Detects if the request is served by the CLI + * + * @param bool|null $override Set to a boolean to override detection (for testing) + */ + protected function detectCli(bool|null $override = null): bool + { + if (is_bool($override) === true) { + return $override; + } + + if (defined('STDIN') === true) { + return true; + } + + // @codeCoverageIgnoreStart + $term = getenv('TERM'); + + if ( + substr(PHP_SAPI, 0, 3) === 'cgi' && + $term && + $term !== 'unknown' + ) { + return true; + } + + return false; + // @codeCoverageIgnoreEnd + } + + /** + * Detects the host, protocol, port and client IP + * from the `Forwarded` and `X-Forwarded-*` headers + */ + protected function detectForwarded(): array + { + $data = [ + 'for' => null, + 'host' => null, + 'https' => false, + 'port' => null + ]; + + // prefer the standardized `Forwarded` header if defined + if ($forwarded = $this->get('HTTP_FORWARDED')) { + // only use the first (outermost) proxy by using the first set of values + // before the first comma (but only a comma outside of quotes) + if (Str::contains($forwarded, ',') === true) { + $forwarded = preg_split('/"[^"]*"(*SKIP)(*F)|,/', $forwarded)[0]; + } + + // split into separate key=value;key=value fields by semicolon, + // but only split outside of quotes + $rawFields = preg_split('/"[^"]*"(*SKIP)(*F)|;/', $forwarded); + + // split key and value into an associative array + $fields = []; + foreach ($rawFields as $field) { + $key = Str::lower(Str::before($field, '=')); + $value = Str::after($field, '='); + + // trim the surrounding quotes + if (Str::substr($value, 0, 1) === '"') { + $value = Str::substr($value, 1, -1); + } + + $fields[$key] = $value; + } + + // assemble the normalized data + if (isset($fields['host']) === true) { + $parts = $this->detectPortInHost($fields['host']); + $data['host'] = $parts['host']; + $data['port'] = $parts['port']; + } + + if (isset($fields['proto']) === true) { + $data['https'] = $this->detectHttpsProtocol($fields['proto']); + } + + if ($data['https'] === true) { + $data['port'] ??= 443; + } + + $data['for'] = $parts['for'] ?? null; + + return $data; + } + + // no success, try the `X-Forwarded-*` headers + $data['host'] = $this->detectForwardedHost(); + $data['https'] = $this->detectForwardedHttps(); + $data['port'] = $this->detectForwardedPort($data['https']); + $data['for'] = $this->get('HTTP_X_FORWARDED_FOR'); + + return $data; + } + + /** + * Detects the host name of the reverse proxy + * from the `X-Forwarded-Host` header + */ + protected function detectForwardedHost(): string|null + { + $host = $this->get('HTTP_X_FORWARDED_HOST'); + $parts = $this->detectPortInHost($host); + + $this->portInHost = $parts['port']; + + return $parts['host']; + } + + /** + * Detects the protocol of the reverse proxy from the + * `X-Forwarded-SSL` or `X-Forwarded-Proto` header + */ + protected function detectForwardedHttps(): bool + { + if ($this->detectHttpsOn($this->get('HTTP_X_FORWARDED_SSL')) === true) { + return true; + } + + if ($this->detectHttpsProtocol($this->get('HTTP_X_FORWARDED_PROTO')) === true) { + return true; + } + + return false; + } + + /** + * Detects the port of the reverse proxy from the + * `X-Forwarded-Host` or `X-Forwarded-Port` header + * + * @param bool $https Whether HTTPS was detected + */ + protected function detectForwardedPort(bool $https): int|null + { + // based on forwarded port + $port = $this->get('HTTP_X_FORWARDED_PORT'); + + if (is_int($port) === true) { + return $port; + } + + // based on forwarded host + if (is_int($this->portInHost) === true) { + return $this->portInHost; + } + + // based on the detected https state + if ($https === true) { + return 443; + } + + return null; + } + + /** + * Detects the host name from various headers + * + * @param bool $insecure Include the `Host` header in the search + */ + protected function detectHost(bool $insecure = false): string|null + { + $hosts = []; + + if ($insecure === true) { + $hosts[] = $this->get('HTTP_HOST'); + } + + $hosts[] = $this->get('SERVER_NAME'); + $hosts[] = $this->get('SERVER_ADDR'); + + // use the first header that is not empty + $hosts = array_filter($hosts); + $host = A::first($hosts); + + $parts = $this->detectPortInHost($host); + + $this->portInHost = $parts['port']; + + return $parts['host']; + } + + /** + * Detects the HTTPS status + */ + protected function detectHttps(): bool + { + if ($this->detectHttpsOn($this->get('HTTPS')) === true) { + return true; + } + + return false; + } + + /** + * Normalizes the HTTPS status into a boolean + */ + protected function detectHttpsOn(string|int|bool|null $value): bool + { + // off can mean many things :) + $off = ['off', null, '', 0, '0', false, 'false', -1, '-1']; + + return in_array($value, $off, true) === false; + } + + /** + * Detects the HTTPS status from a `X-Forwarded-Proto` string + */ + protected function detectHttpsProtocol(string|null $protocol = null): bool + { + if ($protocol === null) { + return false; + } + + $protocols = ['https', 'https, http']; + + return in_array(strtolower($protocol), $protocols) === true; + } + + /** + * Detects the server's IP address + */ + protected function detectIp(): string|null + { + return $this->get('SERVER_ADDR'); + } + + /** + * Detects the URI path unless in CLI mode + */ + protected function detectPath(string|null $path = null): string + { + if ($this->cli === true) { + return ''; + } + + return $path ?? ''; + } + + /** + * Detects the port from various sources + */ + protected function detectPort(): int|null + { + // based on server port + $port = $this->get('SERVER_PORT'); + + if (is_int($port) === true) { + return $port; + } + + // based on the detected host + if (is_int($this->portInHost) === true) { + return $this->portInHost; + } + + // based on the detected https state + if ($this->https === true) { + return 443; + } + + return null; + } + + /** + * Splits a hostname:port string into its components + */ + protected function detectPortInHost(string|null $host = null): array + { + if (empty($host) === true) { + return [ + 'host' => null, + 'port' => null + ]; + } + + $parts = Str::split($host, ':'); + + return [ + 'host' => $parts[0] ?? null, + 'port' => static::sanitizePort($parts[1] ?? null), + ]; + } + + /** + * Splits any URI into path and query + */ + protected function detectRequestUri(string|null $requestUri = null): Uri + { + // make sure the URL parser works properly when there's a + // colon in the request URI but the URI is relative + if (Url::isAbsolute($requestUri) === false) { + $requestUri = 'https://getkirby.com' . $requestUri; + } + + $uri = new Uri($requestUri); + + // create the URI object as a combination of base uri parts + // and the parts from REQUEST_URI + $this->requestUri = $this->baseUri()->clone([ + 'fragment' => $uri->fragment(), + 'params' => $uri->params(), + 'path' => $uri->path(), + 'query' => $uri->query() + ]); + + // build the full request URL + $this->requestUrl = $this->requestUri->toString(); + + return $this->requestUri; + } + + /** + * Returns the sanitized script path unless in CLI mode + */ + protected function detectScriptPath(string|null $scriptPath = null): string + { + if ($this->cli === true) { + return ''; + } + + return $this->sanitizeScriptPath($scriptPath); + } + + /** + * Gets a value from the server environment array + * + * + * $server->get('document_root'); + * // sample output: /var/www/kirby + * + * $server->get(); + * // returns the whole server array + * + * + * @param string|false|null $key The key to look for. Pass `false` or `null` + * to return the entire server array. + * @param mixed $default Optional default value, which should be + * returned if no element has been found + */ + public function get(string|false|null $key = null, $default = null) + { + if (is_string($key) === false) { + return $this->info; + } + + if (isset($this->info[$key]) === false) { + $key = strtoupper($key); + } + + return $this->info[$key] ?? static::sanitize($key, $default); + } + + /** + * Gets a value from the global server environment array + * of the current app instance; falls back to `$_SERVER` if + * no app instance is running + * + * @param string|false|null $key The key to look for. Pass `false` or `null` + * to return the entire server array. + * @param mixed $default Optional default value, which should be + * returned if no element has been found + */ + public static function getGlobally( + string|false|null $key = null, + $default = null + ) { + // first try the global `Environment` object if the CMS is running + if ($app = App::instance(null, true)) { + return $app->environment()->get($key, $default); + } + + if (is_string($key) === false) { + return static::sanitize($_SERVER); + } + + if (isset($_SERVER[$key]) === false) { + $key = strtoupper($key); + } + + return static::sanitize($key, $_SERVER[$key] ?? $default); + } + + /** + * Returns the current host name + */ + public function host(): string|null + { + return $this->host; + } + + /** + * Returns whether the HTTPS protocol is used + */ + public function https(): bool + { + return $this->https; + } + + /** + * Returns the sanitized `$_SERVER` array + */ + public function info(): array + { + return $this->info; + } + + /** + * Returns the server's IP address + */ + public function ip(): string|null + { + return $this->ip; + } + + /** + * Returns if the server is behind a + * reverse proxy server + */ + public function isBehindProxy(): bool|null + { + return $this->isBehindProxy; + } + + /** + * Checks if this is a local installation; + * returns `false` if in doubt + */ + public function isLocal(): bool + { + // check host + $host = $this->host(); + + if ($host === 'localhost') { + return true; + } + + if (Str::endsWith($host, '.local') === true) { + return true; + } + + if (Str::endsWith($host, '.test') === true) { + return true; + } + + // collect all possible visitor ips + $ips = [ + $this->get('REMOTE_ADDR'), + $this->get('HTTP_X_FORWARDED_FOR'), + $this->get('HTTP_CLIENT_IP') + ]; + + if ($this->get('HTTP_FORWARDED')) { + $ips[] = $this->detectForwarded()['for']; + } + + // remove duplicates and empty ips + $ips = array_unique(array_filter($ips)); + + // no known ip? Better not assume it's local + if (empty($ips) === true) { + return false; + } + + // stop as soon as a non-local ip is found + foreach ($ips as $ip) { + if (in_array($ip, ['::1', '127.0.0.1']) === false) { + return false; + } + } + + return true; + } + + /** + * Loads and returns options from environment-specific + * PHP files (by host name and server IP address or CLI) + * + * @param string $root Root directory to load configs from + */ + public function options(string $root): array + { + $configCli = []; + $configHost = []; + $configAddr = []; + + $host = $this->host(); + $addr = $this->ip(); + + // load the config for the cli + if ($this->cli() === true) { + $configCli = F::load( + file: $root . '/config.cli.php', + fallback: [], + allowOutput: false + ); + } + + // load the config for the host + if (empty($host) === false) { + $configHost = F::load( + file: $root . '/config.' . $host . '.php', + fallback: [], + allowOutput: false + ); + } + + // load the config for the server IP + if (empty($addr) === false) { + $configAddr = F::load( + file: $root . '/config.' . $addr . '.php', + fallback: [], + allowOutput: false + ); + } + + return array_replace_recursive($configCli, $configHost, $configAddr); + } + + /** + * Returns the detected path + */ + public function path(): string|null + { + return $this->path; + } + + /** + * Returns the correct port number + */ + public function port(): int|null + { + return $this->port; + } + + /** + * Returns an URI object for the requested URL + */ + public function requestUri(): Uri + { + return $this->requestUri; + } + + /** + * Returns the current URL, including the request path + * and query + */ + public function requestUrl(): string + { + return $this->requestUrl; + } + + /** + * Sanitizes some `$_SERVER` keys + */ + public static function sanitize( + string|array $key, + $value = null + ) { + if (is_array($key) === true) { + foreach ($key as $k => $v) { + $key[$k] = static::sanitize($k, $v); + } + + return $key; + } + + return match ($key) { + 'SERVER_ADDR', + 'SERVER_NAME', + 'HTTP_HOST', + 'HTTP_X_FORWARDED_HOST' => static::sanitizeHost($value), + + 'SERVER_PORT', + 'HTTP_X_FORWARDED_PORT' => static::sanitizePort($value), + + default => $value + }; + } + + /** + * Sanitizes the given host name + */ + protected static function sanitizeHost( + string|null $host = null + ): string|null { + if (empty($host) === true) { + return null; + } + + $host = Str::lower($host); + $host = strip_tags($host); + $host = basename($host); + $host = preg_replace('![^\w.:-]+!iu', '', $host); + $host = htmlspecialchars($host, ENT_COMPAT); + $host = trim($host, '-'); + $host = trim($host, '.'); + $host = trim($host); + + if ($host === '') { + return null; + } + + return $host; + } + + /** + * Sanitizes the given port number + */ + protected static function sanitizePort( + string|int|false|null $port = null + ): int|null { + // already fine + if (is_int($port) === true) { + return $port; + } + + // no port given + if ($port === null || $port === false || $port === '') { + return null; + } + + // remove any character that is not an integer + $port = preg_replace('![^0-9]+!', '', $port); + + // no port + if ($port === '') { + return null; + } + + // convert to integer + return (int)$port; + } + + /** + * Sanitizes the given script path + */ + protected function sanitizeScriptPath(string|null $scriptPath = null): string + { + $scriptPath ??= ''; + $scriptPath = trim($scriptPath); + + // skip all the sanitizing steps if the path is empty + if ($scriptPath === '') { + return $scriptPath; + } + + // replace Windows backslashes + $scriptPath = str_replace('\\', '/', $scriptPath); + // remove the script + $scriptPath = dirname($scriptPath); + // replace those fucking backslashes again + $scriptPath = str_replace('\\', '/', $scriptPath); + // remove the leading and trailing slashes + $scriptPath = trim($scriptPath, '/'); + + // top-level scripts don't have a path + // and dirname() will return '.' + if ($scriptPath === '.') { + return ''; + } + + return $scriptPath; + } + + /** + * Returns the path to the php script + * within the document root without the + * filename of the script. + * + * i.e. /subfolder/index.php -> subfolder + * + * This can be used to build the base baseUrl + * for subfolder installations + */ + public function scriptPath(): string + { + return $this->scriptPath; + } + + /** + * Returns all environment data as array + */ + public function toArray(): array + { + return [ + 'baseUrl' => $this->baseUrl, + 'host' => $this->host, + 'https' => $this->https, + 'info' => $this->info, + 'ip' => $this->ip, + 'isBehindProxy' => $this->isBehindProxy, + 'path' => $this->path, + 'port' => $this->port, + 'requestUrl' => $this->requestUrl, + 'scriptPath' => $this->scriptPath, + ]; + } +} diff --git a/kirby/src/Http/Exceptions/NextRouteException.php b/kirby/src/Http/Exceptions/NextRouteException.php new file mode 100644 index 0000000..d6bd3f9 --- /dev/null +++ b/kirby/src/Http/Exceptions/NextRouteException.php @@ -0,0 +1,16 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class NextRouteException extends \Exception +{ +} diff --git a/kirby/src/Http/Header.php b/kirby/src/Http/Header.php new file mode 100644 index 0000000..857798c --- /dev/null +++ b/kirby/src/Http/Header.php @@ -0,0 +1,313 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Header +{ + // configuration + public static array $codes = [ + // successful + '_200' => 'OK', + '_201' => 'Created', + '_202' => 'Accepted', + + // redirection + '_300' => 'Multiple Choices', + '_301' => 'Moved Permanently', + '_302' => 'Found', + '_303' => 'See Other', + '_304' => 'Not Modified', + '_307' => 'Temporary Redirect', + '_308' => 'Permanent Redirect', + + // client error + '_400' => 'Bad Request', + '_401' => 'Unauthorized', + '_402' => 'Payment Required', + '_403' => 'Forbidden', + '_404' => 'Not Found', + '_405' => 'Method Not Allowed', + '_406' => 'Not Acceptable', + '_410' => 'Gone', + '_418' => 'I\'m a teapot', + '_451' => 'Unavailable For Legal Reasons', + + // server error + '_500' => 'Internal Server Error', + '_501' => 'Not Implemented', + '_502' => 'Bad Gateway', + '_503' => 'Service Unavailable', + '_504' => 'Gateway Time-out' + ]; + + /** + * Sends a content type header + * + * @return string|void + */ + public static function contentType( + string $mime, + string $charset = 'UTF-8', + bool $send = true + ) { + if ($found = F::extensionToMime($mime)) { + $mime = $found; + } + + $header = 'Content-type: ' . $mime; + + if (empty($charset) === false) { + $header .= '; charset=' . $charset; + } + + if ($send === false) { + return $header; + } + + header($header); + } + + /** + * Creates headers by key and value + */ + public static function create( + string|array $key, + string|null $value = null + ): string { + if (is_array($key) === true) { + $headers = []; + + foreach ($key as $k => $v) { + $headers[] = static::create($k, $v); + } + + return implode("\r\n", $headers); + } + + // prevent header injection by stripping + // any newline characters from single headers + return str_replace(["\r", "\n"], '', $key . ': ' . $value); + } + + /** + * Shortcut for static::contentType() + * + * @return string|void + */ + public static function type( + string $mime, + string $charset = 'UTF-8', + bool $send = true + ) { + return static::contentType($mime, $charset, $send); + } + + /** + * Sends a status header + * + * Checks $code against a list of known status codes. To bypass this check + * and send a custom status code and message, use a $code string formatted + * as 3 digits followed by a space and a message, e.g. '999 Custom Status'. + * + * @param int|string|null $code The HTTP status code + * @param bool $send If set to false the header will be returned instead + * @return string|void + * @psalm-return ($send is false ? string : void) + */ + public static function status( + int|string|null $code = null, + bool $send = true + ) { + $codes = static::$codes; + $protocol = Environment::getGlobally('SERVER_PROTOCOL', 'HTTP/1.1'); + + // allow full control over code and message + if ( + is_string($code) === true && + preg_match('/^\d{3} \w.+$/', $code) === 1 + ) { + $message = substr(rtrim($code), 4); + $code = substr($code, 0, 3); + } else { + if (array_key_exists('_' . $code, $codes) === false) { + $code = 500; + } + + $message = $codes['_' . $code] ?? 'Something went wrong'; + } + + $header = $protocol . ' ' . $code . ' ' . $message; + + if ($send === false) { + return $header; + } + + // try to send the header + header($header); + } + + /** + * Sends a 200 header + * + * @return string|void + */ + public static function success(bool $send = true) + { + return static::status(200, $send); + } + + /** + * Sends a 201 header + * + * @return string|void + */ + public static function created(bool $send = true) + { + return static::status(201, $send); + } + + /** + * Sends a 202 header + * + * @return string|void + */ + public static function accepted(bool $send = true) + { + return static::status(202, $send); + } + + /** + * Sends a 400 header + * + * @return string|void + */ + public static function error(bool $send = true) + { + return static::status(400, $send); + } + + /** + * Sends a 403 header + * + * @return string|void + */ + public static function forbidden(bool $send = true) + { + return static::status(403, $send); + } + + /** + * Sends a 404 header + * + * @return string|void + */ + public static function notfound(bool $send = true) + { + return static::status(404, $send); + } + + /** + * Sends a 404 header + * + * @return string|void + */ + public static function missing(bool $send = true) + { + return static::status(404, $send); + } + + /** + * Sends a 410 header + * + * @return string|void + */ + public static function gone(bool $send = true) + { + return static::status(410, $send); + } + + /** + * Sends a 500 header + * + * @return string|void + */ + public static function panic(bool $send = true) + { + return static::status(500, $send); + } + + /** + * Sends a 503 header + * + * @return string|void + */ + public static function unavailable(bool $send = true) + { + return static::status(503, $send); + } + + /** + * Sends a redirect header + * + * @return string|void + */ + public static function redirect( + string $url, + int $code = 302, + bool $send = true + ) { + $status = static::status($code, false); + $location = 'Location:' . Url::unIdn($url); + + if ($send !== true) { + return $status . "\r\n" . $location; + } + + header($status); + header($location); + exit(); + } + + /** + * Sends download headers for anything that is downloadable + * + * @param array $params Check out the defaults array for available parameters + */ + public static function download(array $params = []): void + { + $defaults = [ + 'name' => 'download', + 'size' => false, + 'mime' => 'application/force-download', + 'modified' => time() + ]; + + $options = array_merge($defaults, $params); + + header('Pragma: public'); + header('Cache-Control: no-cache, no-store, must-revalidate'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $options['modified']) . ' GMT'); + header('Content-Disposition: attachment; filename="' . $options['name'] . '"'); + header('Content-Transfer-Encoding: binary'); + + static::contentType($options['mime']); + + if ($options['size']) { + header('Content-Length: ' . $options['size']); + } + + header('Connection: close'); + } +} diff --git a/kirby/src/Http/Idn.php b/kirby/src/Http/Idn.php new file mode 100644 index 0000000..2ede8b3 --- /dev/null +++ b/kirby/src/Http/Idn.php @@ -0,0 +1,63 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Idn +{ + /** + * Convert domain name from IDNA ASCII to Unicode + */ + public static function decode(string $domain): string|false + { + return idn_to_utf8($domain); + } + + /** + * Convert domain name to IDNA ASCII form + */ + public static function encode(string $domain): string|false + { + return idn_to_ascii($domain); + } + + /** + * Decodes a email address to the Unicode format + */ + public static function decodeEmail(string $email): string + { + if (Str::contains($email, 'xn--') === true) { + $parts = Str::split($email, '@'); + $address = $parts[0]; + $domain = Idn::decode($parts[1] ?? ''); + $email = $address . '@' . $domain; + } + + return $email; + } + + /** + * Encodes a email address to the Punycode format + */ + public static function encodeEmail(string $email): string + { + if (mb_detect_encoding($email, 'ASCII', true) === false) { + $parts = Str::split($email, '@'); + $address = $parts[0]; + $domain = Idn::encode($parts[1] ?? ''); + $email = $address . '@' . $domain; + } + + return $email; + } +} diff --git a/kirby/src/Http/Params.php b/kirby/src/Http/Params.php new file mode 100644 index 0000000..4067a0f --- /dev/null +++ b/kirby/src/Http/Params.php @@ -0,0 +1,156 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Params extends Obj +{ + public static string|null $separator = null; + + /** + * Creates a new params object + */ + public function __construct(array|string|null $params) + { + if (is_string($params) === true) { + $params = static::extract($params)['params']; + } + + parent::__construct($params ?? []); + } + + /** + * Extract the params from a string or array + */ + public static function extract(string|array|null $path = null): array + { + if (empty($path) === true) { + return [ + 'path' => null, + 'params' => null, + 'slash' => false + ]; + } + + $slash = false; + + if (is_string($path) === true) { + $slash = substr($path, -1, 1) === '/'; + $path = Str::split($path, '/'); + } + + if (is_array($path) === true) { + $params = []; + $separator = static::separator(); + + foreach ($path as $index => $p) { + if (strpos($p, $separator) === false) { + continue; + } + + $paramParts = Str::split($p, $separator); + $paramKey = $paramParts[0] ?? null; + $paramValue = $paramParts[1] ?? null; + + if ($paramKey !== null) { + $params[rawurldecode($paramKey)] = $paramValue !== null ? rawurldecode($paramValue) : null; + } + + unset($path[$index]); + } + + return [ + 'path' => $path, + 'params' => $params, + 'slash' => $slash + ]; + } + + return [ + 'path' => null, + 'params' => null, + 'slash' => false + ]; + } + + public function isEmpty(): bool + { + return empty((array)$this) === true; + } + + public function isNotEmpty(): bool + { + return $this->isEmpty() === false; + } + + /** + * Returns the param separator according + * to the operating system. + * + * Unix = ':' + * Windows = ';' + */ + public static function separator(): string + { + if (static::$separator !== null) { + return static::$separator; + } + + if (DIRECTORY_SEPARATOR === '/') { + return static::$separator = ':'; + } + + return static::$separator = ';'; + } + + /** + * Converts the params object to a params string + * which can then be used in the URL builder again + */ + public function toString( + bool $leadingSlash = false, + bool $trailingSlash = false + ): string { + if ($this->isEmpty() === true) { + return ''; + } + + $params = []; + $separator = static::separator(); + + foreach ($this as $key => $value) { + if ($value !== null && $value !== '') { + $params[] = rawurlencode($key) . $separator . rawurlencode($value); + } + } + + if (empty($params) === true) { + return ''; + } + + $params = implode('/', $params); + + $leadingSlash = $leadingSlash === true ? '/' : null; + $trailingSlash = $trailingSlash === true ? '/' : null; + + return $leadingSlash . $params . $trailingSlash; + } + + public function __toString(): string + { + return $this->toString(); + } +} diff --git a/kirby/src/Http/Path.php b/kirby/src/Http/Path.php new file mode 100644 index 0000000..02d2b05 --- /dev/null +++ b/kirby/src/Http/Path.php @@ -0,0 +1,49 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Path extends Collection +{ + public function __construct(string|array|null $items) + { + if (is_string($items) === true) { + $items = Str::split($items, '/'); + } + + parent::__construct($items ?? []); + } + + public function __toString(): string + { + return $this->toString(); + } + + public function toString( + bool $leadingSlash = false, + bool $trailingSlash = false + ): string { + if (empty($this->data) === true) { + return ''; + } + + $path = implode('/', $this->data); + + $leadingSlash = $leadingSlash === true ? '/' : null; + $trailingSlash = $trailingSlash === true ? '/' : null; + + return $leadingSlash . $path . $trailingSlash; + } +} diff --git a/kirby/src/Http/Query.php b/kirby/src/Http/Query.php new file mode 100644 index 0000000..410e2f0 --- /dev/null +++ b/kirby/src/Http/Query.php @@ -0,0 +1,59 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Query extends Obj +{ + public function __construct(string|array|null $query) + { + if (is_string($query) === true) { + parse_str(ltrim($query, '?'), $query); + } + + parent::__construct($query ?? []); + } + + public function isEmpty(): bool + { + return empty((array)$this) === true; + } + + public function isNotEmpty(): bool + { + return $this->isEmpty() === false; + } + + public function toString(bool $questionMark = false): string + { + $query = http_build_query($this, '', '&', PHP_QUERY_RFC3986); + + if (empty($query) === true) { + return ''; + } + + if ($questionMark === true) { + $query = '?' . $query; + } + + return $query; + } + + + public function __toString(): string + { + return $this->toString(); + } +} diff --git a/kirby/src/Http/Remote.php b/kirby/src/Http/Remote.php new file mode 100644 index 0000000..ce93bb3 --- /dev/null +++ b/kirby/src/Http/Remote.php @@ -0,0 +1,361 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Remote +{ + public const CA_INTERNAL = 1; + public const CA_SYSTEM = 2; + + public static array $defaults = [ + 'agent' => null, + 'basicAuth' => null, + 'body' => true, + 'ca' => self::CA_INTERNAL, + 'data' => [], + 'encoding' => 'utf-8', + 'file' => null, + 'headers' => [], + 'method' => 'GET', + 'progress' => null, + 'test' => false, + 'timeout' => 10, + ]; + + public string|null $content = null; + public CurlHandle|false $curl; + public array $curlopt = []; + public int $errorCode; + public string $errorMessage; + public array $headers = []; + public array $info = []; + public array $options = []; + + /** + * @throws \Exception when the curl request failed + */ + public function __construct(string $url, array $options = []) + { + $defaults = static::$defaults; + + // use the system CA store by default if + // one has been configured in php.ini + $cainfo = ini_get('curl.cainfo'); + if (empty($cainfo) === false && is_file($cainfo) === true) { + $defaults['ca'] = self::CA_SYSTEM; + } + + // update the defaults with App config if set; + // request the App instance lazily + if ($app = App::instance(null, true)) { + $defaults = array_merge($defaults, $app->option('remote', [])); + } + + // set all options + $this->options = array_merge($defaults, $options); + + // add the url + $this->options['url'] = $url; + + // send the request + $this->fetch(); + } + + /** + * Magic getter for request info data + */ + public function __call(string $method, array $arguments = []) + { + $method = str_replace('-', '_', Str::kebab($method)); + return $this->info[$method] ?? null; + } + + public static function __callStatic( + string $method, + array $arguments = [] + ): static { + return new static( + url: $arguments[0], + options: array_merge( + ['method' => strtoupper($method)], + $arguments[1] ?? [] + ) + ); + } + + /** + * Returns the http status code + */ + public function code(): int|null + { + return $this->info['http_code'] ?? null; + } + + /** + * Returns the response content + */ + public function content(): string|null + { + return $this->content; + } + + /** + * Sets up all curl options and sends the request + * + * @return $this + * @throws \Exception when the curl request failed + */ + public function fetch(): static + { + // curl options + $this->curlopt = [ + CURLOPT_URL => $this->options['url'], + CURLOPT_ENCODING => $this->options['encoding'], + CURLOPT_CONNECTTIMEOUT => $this->options['timeout'], + CURLOPT_TIMEOUT => $this->options['timeout'], + CURLOPT_AUTOREFERER => true, + CURLOPT_RETURNTRANSFER => $this->options['body'], + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_MAXREDIRS => 10, + CURLOPT_HEADER => false, + CURLOPT_HEADERFUNCTION => function ($curl, $header): int { + $parts = Str::split($header, ':'); + + if (empty($parts[0]) === false && empty($parts[1]) === false) { + $key = array_shift($parts); + $this->headers[$key] = implode(':', $parts); + } + + return strlen($header); + } + ]; + + // determine the TLS CA to use + if ($this->options['ca'] === self::CA_INTERNAL) { + $this->curlopt[CURLOPT_SSL_VERIFYPEER] = true; + $this->curlopt[CURLOPT_CAINFO] = dirname(__DIR__, 2) . '/cacert.pem'; + } elseif ($this->options['ca'] === self::CA_SYSTEM) { + $this->curlopt[CURLOPT_SSL_VERIFYPEER] = true; + } elseif ($this->options['ca'] === false) { + $this->curlopt[CURLOPT_SSL_VERIFYPEER] = false; + } elseif ( + is_string($this->options['ca']) === true && + is_file($this->options['ca']) === true + ) { + $this->curlopt[CURLOPT_SSL_VERIFYPEER] = true; + $this->curlopt[CURLOPT_CAINFO] = $this->options['ca']; + } elseif ( + is_string($this->options['ca']) === true && + is_dir($this->options['ca']) === true + ) { + $this->curlopt[CURLOPT_SSL_VERIFYPEER] = true; + $this->curlopt[CURLOPT_CAPATH] = $this->options['ca']; + } else { + throw new InvalidArgumentException('Invalid "ca" option for the Remote class'); + } + + // add the progress + if (is_callable($this->options['progress']) === true) { + $this->curlopt[CURLOPT_NOPROGRESS] = false; + $this->curlopt[CURLOPT_PROGRESSFUNCTION] = $this->options['progress']; + } + + // add all headers + if (empty($this->options['headers']) === false) { + // convert associative arrays to strings + $headers = []; + foreach ($this->options['headers'] as $key => $value) { + if (is_string($key) === true) { + $value = $key . ': ' . $value; + } + + $headers[] = $value; + } + + $this->curlopt[CURLOPT_HTTPHEADER] = $headers; + } + + // add HTTP Basic authentication + if (empty($this->options['basicAuth']) === false) { + $this->curlopt[CURLOPT_USERPWD] = $this->options['basicAuth']; + } + + // add the user agent + if (empty($this->options['agent']) === false) { + $this->curlopt[CURLOPT_USERAGENT] = $this->options['agent']; + } + + // do some request specific stuff + switch (strtoupper($this->options['method'])) { + case 'POST': + $this->curlopt[CURLOPT_POST] = true; + $this->curlopt[CURLOPT_CUSTOMREQUEST] = 'POST'; + $this->curlopt[CURLOPT_POSTFIELDS] = $this->postfields($this->options['data']); + break; + case 'PUT': + $this->curlopt[CURLOPT_CUSTOMREQUEST] = 'PUT'; + $this->curlopt[CURLOPT_POSTFIELDS] = $this->postfields($this->options['data']); + + // put a file + if ($this->options['file']) { + $this->curlopt[CURLOPT_INFILE] = fopen($this->options['file'], 'r'); + $this->curlopt[CURLOPT_INFILESIZE] = F::size($this->options['file']); + } + break; + case 'PATCH': + $this->curlopt[CURLOPT_CUSTOMREQUEST] = 'PATCH'; + $this->curlopt[CURLOPT_POSTFIELDS] = $this->postfields($this->options['data']); + break; + case 'DELETE': + $this->curlopt[CURLOPT_CUSTOMREQUEST] = 'DELETE'; + $this->curlopt[CURLOPT_POSTFIELDS] = $this->postfields($this->options['data']); + break; + case 'HEAD': + $this->curlopt[CURLOPT_CUSTOMREQUEST] = 'HEAD'; + $this->curlopt[CURLOPT_POSTFIELDS] = $this->postfields($this->options['data']); + $this->curlopt[CURLOPT_NOBODY] = true; + break; + } + + if ($this->options['test'] === true) { + return $this; + } + + // start a curl request + $this->curl = curl_init(); + + curl_setopt_array($this->curl, $this->curlopt); + + $this->content = curl_exec($this->curl); + $this->info = curl_getinfo($this->curl); + $this->errorCode = curl_errno($this->curl); + $this->errorMessage = curl_error($this->curl); + + if ($this->errorCode) { + throw new Exception($this->errorMessage, $this->errorCode); + } + + curl_close($this->curl); + + return $this; + } + + /** + * Static method to send a GET request + * + * @throws \Exception when the curl request failed + */ + public static function get(string $url, array $params = []): static + { + $defaults = [ + 'method' => 'GET', + 'data' => [], + ]; + + $options = array_merge($defaults, $params); + $query = http_build_query($options['data']); + + if (empty($query) === false) { + $url = match (Url::hasQuery($url)) { + true => $url . '&' . $query, + default => $url . '?' . $query + }; + } + + // remove the data array from the options + unset($options['data']); + + return new static($url, $options); + } + + /** + * Returns all received headers + */ + public function headers(): array + { + return $this->headers; + } + + /** + * Returns the request info + */ + public function info(): array + { + return $this->info; + } + + /** + * Decode the response content + * + * @param bool $array decode as array or object + */ + public function json(bool $array = true): array|stdClass|null + { + return json_decode($this->content(), $array); + } + + /** + * Returns the request method + */ + public function method(): string + { + return $this->options['method']; + } + + /** + * Returns all options which have been + * set for the current request + */ + public function options(): array + { + return $this->options; + } + + /** + * Internal method to handle post field data + */ + protected function postfields($data) + { + if (is_object($data) || is_array($data)) { + return http_build_query($data); + } + + return $data; + } + + /** + * Static method to init this class and send a request + * + * @throws \Exception when the curl request failed + */ + public static function request(string $url, array $params = []): static + { + return new static($url, $params); + } + + /** + * Returns the request Url + */ + public function url(): string + { + return $this->options['url']; + } +} diff --git a/kirby/src/Http/Request.php b/kirby/src/Http/Request.php new file mode 100644 index 0000000..85178a9 --- /dev/null +++ b/kirby/src/Http/Request.php @@ -0,0 +1,426 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Request +{ + public static array $authTypes = [ + 'basic' => BasicAuth::class, + 'bearer' => BearerAuth::class, + 'session' => SessionAuth::class, + ]; + + /** + * The auth object if available + */ + protected Auth|false|null $auth = null; + + /** + * The Body object is a wrapper around + * the request body, which parses the contents + * of the body and provides an API to fetch + * particular parts of the body + * + * Examples: + * + * `$request->body()->get('foo')` + */ + protected Body|null $body = null; + + /** + * The Files object is a wrapper around + * the $_FILES global. It sanitizes the + * $_FILES array and provides an API to fetch + * individual files by key + * + * Examples: + * + * `$request->files()->get('upload')['size']` + * `$request->file('upload')['size']` + */ + protected Files|null $files = null; + + /** + * The Method type + */ + protected string $method; + + /** + * All options that have been passed to + * the request in the constructor + */ + protected array $options; + + /** + * The Query object is a wrapper around + * the URL query string, which parses the + * string and provides a clean API to fetch + * particular parts of the query + * + * Examples: + * + * `$request->query()->get('foo')` + */ + protected Query $query; + + /** + * Request URL object + */ + protected Uri $url; + + /** + * Creates a new Request object + * You can either pass your own request + * data via the $options array or use + * the data from the incoming request. + */ + public function __construct(array $options = []) + { + $this->options = $options; + $this->method = $this->detectRequestMethod($options['method'] ?? null); + + if (isset($options['body']) === true) { + $this->body = + $options['body'] instanceof Body + ? $options['body'] + : new Body($options['body']); + } + + if (isset($options['files']) === true) { + $this->files = + $options['files'] instanceof Files + ? $options['files'] + : new Files($options['files']); + } + + if (isset($options['query']) === true) { + $this->query = + $options['query'] instanceof Query + ? $options['query'] + : new Query($options['query']); + } + + if (isset($options['url']) === true) { + $this->url = + $options['url'] instanceof Uri + ? $options['url'] + : new Uri($options['url']); + } + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return [ + 'body' => $this->body(), + 'files' => $this->files(), + 'method' => $this->method(), + 'query' => $this->query(), + 'url' => $this->url()->toString() + ]; + } + + /** + * Returns the Auth object if authentication is set + */ + public function auth(): Auth|false|null + { + if ($this->auth !== null) { + return $this->auth; + } + + // lazily request the instance for non-CMS use cases + $kirby = App::instance(null, true); + + // tell the CMS responder that the response relies on + // the `Authorization` header and its value (even if + // the header isn't set in the current request); + // this ensures that the response is only cached for + // unauthenticated visitors; + // https://github.com/getkirby/kirby/issues/4423#issuecomment-1166300526 + $kirby?->response()->usesAuth(true); + + if ($auth = $this->authString()) { + $type = Str::lower(Str::before($auth, ' ')); + $data = Str::after($auth, ' '); + + $class = static::$authTypes[$type] ?? null; + if (!$class || class_exists($class) === false) { + return $this->auth = false; + } + + $object = new $class($data); + + return $this->auth = $object; + } + + return $this->auth = false; + } + + /** + * Returns the Body object + */ + public function body(): Body + { + return $this->body ??= new Body(); + } + + /** + * Checks if the request has been made from the command line + */ + public function cli(): bool + { + return $this->options['cli'] ?? (new Environment())->cli(); + } + + /** + * Returns a CSRF token if stored in a header or the query + */ + public function csrf(): string|null + { + return $this->header('x-csrf') ?? $this->query()->get('csrf'); + } + + /** + * Returns the request input as array + */ + public function data(): array + { + return array_replace( + $this->body()->toArray(), + $this->query()->toArray() + ); + } + + /** + * Detect the request method from various + * options: given method, query string, server vars + */ + public function detectRequestMethod(string|null $method = null): string + { + // all possible methods + $methods = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH']; + + // the request method can be overwritten with a header + $methodOverride = strtoupper(Environment::getGlobally('HTTP_X_HTTP_METHOD_OVERRIDE', '')); + + if (in_array($methodOverride, $methods) === true) { + $method ??= $methodOverride; + } + + // final chain of options to detect the method + $method ??= Environment::getGlobally('REQUEST_METHOD', 'GET'); + + // uppercase the shit out of it + $method = strtoupper($method); + + // sanitize the method + if (in_array($method, $methods) === false) { + $method = 'GET'; + } + + return $method; + } + + /** + * Returns the domain + */ + public function domain(): string + { + return $this->url()->domain(); + } + + /** + * Fetches a single file array + * from the Files object by key + */ + public function file(string $key): array|null + { + return $this->files()->get($key); + } + + /** + * Returns the Files object + */ + public function files(): Files + { + return $this->files ??= new Files(); + } + + /** + * Returns any data field from the request + * if it exists + */ + public function get(string|array|null $key = null, $fallback = null) + { + return A::get($this->data(), $key, $fallback); + } + + /** + * Returns whether the request contains + * the `Authorization` header + * @since 3.7.0 + */ + public function hasAuth(): bool + { + return $this->authString() !== null; + } + + /** + * Returns a header by key if it exists + */ + public function header(string $key, $fallback = null) + { + $headers = array_change_key_case($this->headers()); + return $headers[strtolower($key)] ?? $fallback; + } + + /** + * Return all headers with polyfill for + * missing getallheaders function + */ + public function headers(): array + { + $headers = []; + + foreach (Environment::getGlobally() as $key => $value) { + if ( + substr($key, 0, 5) !== 'HTTP_' && + substr($key, 0, 14) !== 'REDIRECT_HTTP_' + ) { + continue; + } + + // remove HTTP_ + $key = str_replace(['REDIRECT_HTTP_', 'HTTP_'], '', $key); + + // convert to lowercase + $key = strtolower($key); + + // replace _ with spaces + $key = str_replace('_', ' ', $key); + + // uppercase first char in each word + $key = ucwords($key); + + // convert spaces to dashes + $key = str_replace(' ', '-', $key); + + $headers[$key] = $value; + } + + return $headers; + } + + /** + * Checks if the given method name + * matches the name of the request method. + */ + public function is(string $method): bool + { + return strtoupper($this->method) === strtoupper($method); + } + + /** + * Returns the request method + */ + public function method(): string + { + return $this->method; + } + + /** + * Shortcut to the Params object + */ + public function params(): Params + { + return $this->url()->params(); + } + + /** + * Shortcut to the Path object + */ + public function path(): Path + { + return $this->url()->path(); + } + + /** + * Returns the Query object + */ + public function query(): Query + { + return $this->query ??= new Query(); + } + + /** + * Checks for a valid SSL connection + */ + public function ssl(): bool + { + return $this->url()->scheme() === 'https'; + } + + /** + * Returns the current Uri object. + * If you pass props you can safely modify + * the Url with new parameters without destroying + * the original object. + */ + public function url(array|null $props = null): Uri + { + if ($props !== null) { + return $this->url()->clone($props); + } + + return $this->url ??= Uri::current(); + } + + /** + * Returns the raw auth string from the `auth` option + * or `Authorization` header unless both are empty + */ + protected function authString(): string|null + { + // both variants need to be checked separately + // because empty strings are treated as invalid + // but the `??` operator wouldn't do the fallback + + $option = $this->options['auth'] ?? null; + if (empty($option) === false) { + return $option; + } + + $header = $this->header('authorization'); + if (empty($header) === false) { + return $header; + } + + return null; + } +} diff --git a/kirby/src/Http/Request/Auth.php b/kirby/src/Http/Request/Auth.php new file mode 100644 index 0000000..e73f4da --- /dev/null +++ b/kirby/src/Http/Request/Auth.php @@ -0,0 +1,48 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +abstract class Auth +{ + /** + * @param string $data Raw authentication data after the first space in the `Authorization` header + */ + public function __construct( + #[SensitiveParameter] + protected string $data + ) { + } + + /** + * Converts the object to a string + */ + public function __toString(): string + { + return ucfirst($this->type()) . ' ' . $this->data(); + } + + /** + * Returns the raw authentication data after the + * first space in the `Authorization` header + */ + public function data(): string + { + return $this->data; + } + + /** + * Returns the name of the auth type (lowercase) + */ + abstract public function type(): string; +} diff --git a/kirby/src/Http/Request/Auth/BasicAuth.php b/kirby/src/Http/Request/Auth/BasicAuth.php new file mode 100644 index 0000000..f0e80ce --- /dev/null +++ b/kirby/src/Http/Request/Auth/BasicAuth.php @@ -0,0 +1,66 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class BasicAuth extends Auth +{ + protected string $credentials; + protected string|null $password; + protected string|null $username; + + public function __construct( + #[SensitiveParameter] + string $data + ) { + parent::__construct($data); + + $this->credentials = base64_decode($data); + $this->username = Str::before($this->credentials, ':'); + $this->password = Str::after($this->credentials, ':'); + } + + /** + * Returns the entire unencoded credentials string + */ + public function credentials(): string + { + return $this->credentials; + } + + /** + * Returns the password + */ + public function password(): string|null + { + return $this->password; + } + + /** + * Returns the authentication type + */ + public function type(): string + { + return 'basic'; + } + + /** + * Returns the username + */ + public function username(): string|null + { + return $this->username; + } +} diff --git a/kirby/src/Http/Request/Auth/BearerAuth.php b/kirby/src/Http/Request/Auth/BearerAuth.php new file mode 100644 index 0000000..81dc9a9 --- /dev/null +++ b/kirby/src/Http/Request/Auth/BearerAuth.php @@ -0,0 +1,33 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class BearerAuth extends Auth +{ + /** + * Returns the authentication token + */ + public function token(): string + { + return $this->data; + } + + /** + * Returns the auth type + */ + public function type(): string + { + return 'bearer'; + } +} diff --git a/kirby/src/Http/Request/Auth/SessionAuth.php b/kirby/src/Http/Request/Auth/SessionAuth.php new file mode 100644 index 0000000..ca10830 --- /dev/null +++ b/kirby/src/Http/Request/Auth/SessionAuth.php @@ -0,0 +1,43 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class SessionAuth extends Auth +{ + /** + * Tries to return the session object + */ + public function session(): Session + { + return App::instance()->sessionHandler()->getManually($this->data); + } + + /** + * Returns the session token + */ + public function token(): string + { + return $this->data; + } + + /** + * Returns the authentication type + */ + public function type(): string + { + return 'session'; + } +} diff --git a/kirby/src/Http/Request/Body.php b/kirby/src/Http/Request/Body.php new file mode 100644 index 0000000..53bcdd0 --- /dev/null +++ b/kirby/src/Http/Request/Body.php @@ -0,0 +1,115 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Body +{ + use Data; + + /** + * The raw body content + */ + protected string|array|null $contents; + + /** + * The parsed content as array + */ + protected array|null $data = null; + + /** + * Creates a new request body object. + * You can pass your own array or string. + * If null is being passed, the class will + * fetch the body either from the $_POST global + * or from php://input. + */ + public function __construct(array|string|null $contents = null) + { + $this->contents = $contents; + } + + /** + * Fetches the raw contents for the body + * or uses the passed contents. + */ + public function contents(): string|array + { + if ($this->contents !== null) { + return $this->contents; + } + + if (empty($_POST) === false) { + return $this->contents = $_POST; + } + + return $this->contents = file_get_contents('php://input'); + } + + /** + * Parses the raw contents once and caches + * the result. The parser will try to convert + * the body with the json decoder first and + * then run parse_str to get some results + * if the json decoder failed. + */ + public function data(): array + { + if (is_array($this->data) === true) { + return $this->data; + } + + $contents = $this->contents(); + + // return content which is already in array form + if (is_array($contents) === true) { + return $this->data = $contents; + } + + // try to convert the body from json + $json = json_decode($contents, true); + + if (is_array($json) === true) { + return $this->data = $json; + } + + if (strstr($contents, '=') !== false) { + // try to parse the body as query string + parse_str($contents, $parsed); + + if (is_array($parsed)) { + return $this->data = $parsed; + } + } + + return $this->data = []; + } + + /** + * Converts the data array back + * to a http query string + */ + public function toString(): string + { + return http_build_query($this->data()); + } + + /** + * Magic string converter + */ + public function __toString(): string + { + return $this->toString(); + } +} diff --git a/kirby/src/Http/Request/Data.php b/kirby/src/Http/Request/Data.php new file mode 100644 index 0000000..d2f3d95 --- /dev/null +++ b/kirby/src/Http/Request/Data.php @@ -0,0 +1,73 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +trait Data +{ + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * The data provider method has to be + * implemented by each class using this Trait + * and has to return an associative array + * for the get method + */ + abstract public function data(): array; + + /** + * The get method is the heart and soul of this + * Trait. You can use it to fetch a single value + * of the data array by key or multiple values by + * passing an array of keys. + */ + public function get(string|array $key, $default = null) + { + if (is_array($key) === true) { + $result = []; + foreach ($key as $k) { + $result[$k] = $this->get($k); + } + return $result; + } + + return $this->data()[$key] ?? $default; + } + + /** + * Returns the data array. + * This is basically an alias for Data::data() + */ + public function toArray(): array + { + return $this->data(); + } + + /** + * Converts the data array to json + */ + public function toJson(): string + { + return json_encode($this->data()); + } +} diff --git a/kirby/src/Http/Request/Files.php b/kirby/src/Http/Request/Files.php new file mode 100644 index 0000000..244028a --- /dev/null +++ b/kirby/src/Http/Request/Files.php @@ -0,0 +1,63 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Files +{ + use Data; + + /** + * Sanitized array of all received files + */ + protected array $files = []; + + /** + * Creates a new Files object + * Pass your own array to mock + * uploads. + */ + public function __construct(array|null $files = null) + { + $files ??= $_FILES; + + foreach ($files as $key => $file) { + if (is_array($file['name'])) { + foreach ($file['name'] as $i => $name) { + $this->files[$key][] = [ + 'name' => $file['name'][$i] ?? null, + 'type' => $file['type'][$i] ?? null, + 'tmp_name' => $file['tmp_name'][$i] ?? null, + 'error' => $file['error'][$i] ?? null, + 'size' => $file['size'][$i] ?? null, + ]; + } + } else { + $this->files[$key] = $file; + } + } + } + + /** + * The data method returns the files + * array. This is only needed to make + * the Data trait work for the Files::get($key) + * method. + */ + public function data(): array + { + return $this->files; + } +} diff --git a/kirby/src/Http/Request/Query.php b/kirby/src/Http/Request/Query.php new file mode 100644 index 0000000..b6c4ad1 --- /dev/null +++ b/kirby/src/Http/Request/Query.php @@ -0,0 +1,84 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Query +{ + use Data; + + /** + * The Query data array + */ + protected array|null $data; + + /** + * Creates a new Query object. + * The passed data can be an array + * or a parsable query string. If + * null is passed, the current Query + * will be taken from $_GET + */ + public function __construct(array|string|null $data = null) + { + if ($data === null) { + $this->data = $_GET; + } elseif (is_array($data) === true) { + $this->data = $data; + } else { + parse_str($data, $parsed); + $this->data = $parsed; + } + } + + /** + * Returns the Query data as array + */ + public function data(): array + { + return $this->data; + } + + /** + * Returns `true` if the request doesn't contain query variables + */ + public function isEmpty(): bool + { + return empty($this->data) === true; + } + + /** + * Returns `true` if the request contains query variables + */ + public function isNotEmpty(): bool + { + return empty($this->data) === false; + } + + /** + * Converts the query data array + * back to a query string + */ + public function toString(): string + { + return http_build_query($this->data()); + } + + /** + * Magic string converter + */ + public function __toString(): string + { + return $this->toString(); + } +} diff --git a/kirby/src/Http/Response.php b/kirby/src/Http/Response.php new file mode 100644 index 0000000..53892d6 --- /dev/null +++ b/kirby/src/Http/Response.php @@ -0,0 +1,319 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Response +{ + /** + * Store for all registered headers, + * which will be sent with the response + */ + protected array $headers = []; + + /** + * The response body + */ + protected string $body; + + /** + * The HTTP response code + */ + protected int $code; + + /** + * The content type for the response + */ + protected string $type; + + /** + * The content type charset + */ + protected string $charset = 'UTF-8'; + + /** + * Creates a new response object + */ + public function __construct( + string|array $body = '', + string|null $type = null, + int|null $code = null, + array|null $headers = null, + string|null $charset = null + ) { + // array construction + if (is_array($body) === true) { + $params = $body; + $body = $params['body'] ?? ''; + $type = $params['type'] ?? $type; + $code = $params['code'] ?? $code; + $headers = $params['headers'] ?? $headers; + $charset = $params['charset'] ?? $charset; + } + + // regular construction + $this->body = $body; + $this->type = $type ?? 'text/html'; + $this->code = $code ?? 200; + $this->headers = $headers ?? []; + $this->charset = $charset ?? 'UTF-8'; + + // automatic mime type detection + if (strpos($this->type, '/') === false) { + $this->type = F::extensionToMime($this->type) ?? 'text/html'; + } + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Makes it possible to convert the + * entire response object to a string + * to send the headers and print the body + */ + public function __toString(): string + { + return $this->send(); + } + + /** + * Getter for the body + */ + public function body(): string + { + return $this->body; + } + + /** + * Getter for the content type charset + */ + public function charset(): string + { + return $this->charset; + } + + /** + * Getter for the HTTP status code + */ + public function code(): int + { + return $this->code; + } + + /** + * Creates a response that triggers + * a file download for the given file + * + * @param array $props Custom overrides for response props (e.g. headers) + */ + public static function download( + string $file, + string|null $filename = null, + array $props = [] + ): static { + if (file_exists($file) === false) { + throw new Exception('The file could not be found'); + } + + $filename ??= basename($file); + $modified = filemtime($file); + $body = file_get_contents($file); + $size = strlen($body); + + $props = array_replace_recursive([ + 'body' => $body, + 'type' => F::mime($file), + 'headers' => [ + 'Pragma' => 'public', + 'Cache-Control' => 'no-cache, no-store, must-revalidate', + 'Last-Modified' => gmdate('D, d M Y H:i:s', $modified) . ' GMT', + 'Content-Disposition' => 'attachment; filename="' . $filename . '"', + 'Content-Transfer-Encoding' => 'binary', + 'Content-Length' => $size, + 'Connection' => 'close' + ] + ], $props); + + return new static($props); + } + + /** + * Creates a response for a file and + * sends the file content to the browser + * + * @param array $props Custom overrides for response props (e.g. headers) + */ + public static function file(string $file, array $props = []): static + { + $props = array_merge([ + 'body' => F::read($file), + 'type' => F::extensionToMime(F::extension($file)) + ], $props); + + // if we couldn't serve a correct MIME type, force + // the browser to display the file as plain text to + // harden against attacks from malicious file uploads + if ($props['type'] === null) { + if (isset($props['headers']) !== true) { + $props['headers'] = []; + } + + $props['type'] = 'text/plain'; + $props['headers']['X-Content-Type-Options'] = 'nosniff'; + } + + return new static($props); + } + + + /** + * Redirects to the given Urls + * Urls can be relative or absolute. + * @since 3.7.0 + * + * @codeCoverageIgnore + */ + public static function go(string $url = '/', int $code = 302): never + { + die(static::redirect($url, $code)); + } + + /** + * Ensures that the callback does not produce the first body output + * (used to show when loading a file creates side effects) + */ + public static function guardAgainstOutput(Closure $callback, ...$args): mixed + { + $before = headers_sent(); + $result = $callback(...$args); + $after = headers_sent($file, $line); + + if ($before === false && $after === true) { + throw new LogicException("Disallowed output from file $file:$line, possible accidental whitespace?"); + } + + return $result; + } + + /** + * Getter for single headers + * + * @param string $key Name of the header + */ + public function header(string $key): string|null + { + return $this->headers[$key] ?? null; + } + + /** + * Getter for all headers + */ + public function headers(): array + { + return $this->headers; + } + + /** + * Creates a json response with appropriate + * header and automatic conversion of arrays. + */ + public static function json( + string|array $body = '', + int|null $code = null, + bool|null $pretty = null, + array $headers = [] + ): static { + if (is_array($body) === true) { + $body = json_encode($body, $pretty === true ? JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES : 0); + } + + return new static([ + 'body' => $body, + 'code' => $code, + 'type' => 'application/json', + 'headers' => $headers + ]); + } + + /** + * Creates a redirect response, + * which will send the visitor to the + * given location. + */ + public static function redirect(string $location = '/', int $code = 302): static + { + return new static([ + 'code' => $code, + 'headers' => [ + 'Location' => Url::unIdn($location) + ] + ]); + } + + /** + * Sends all registered headers and + * returns the response body + */ + public function send(): string + { + // send the status response code + http_response_code($this->code()); + + // send all custom headers + foreach ($this->headers() as $key => $value) { + header($key . ': ' . $value); + } + + // send the content type header + header('Content-Type:' . $this->type() . '; charset=' . $this->charset()); + + // print the response body + return $this->body(); + } + + /** + * Converts all relevant response attributes + * to an associative array for debugging, + * testing or whatever. + */ + public function toArray(): array + { + return [ + 'type' => $this->type(), + 'charset' => $this->charset(), + 'code' => $this->code(), + 'headers' => $this->headers(), + 'body' => $this->body() + ]; + } + + /** + * Getter for the content type + */ + public function type(): string + { + return $this->type; + } +} diff --git a/kirby/src/Http/Route.php b/kirby/src/Http/Route.php new file mode 100644 index 0000000..7d6dd7d --- /dev/null +++ b/kirby/src/Http/Route.php @@ -0,0 +1,192 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Route +{ + /** + * The callback action function + */ + protected Closure $action; + + /** + * Listed of parsed arguments + */ + protected array $arguments = []; + + /** + * An array of all passed attributes + */ + protected array $attributes = []; + + /** + * The registered request method + */ + protected string $method; + + /** + * The registered pattern + */ + protected string $pattern; + + /** + * Wildcards, which can be used in + * Route patterns to make regular expressions + * a little more human + */ + protected array $wildcards = [ + 'required' => [ + '(:num)' => '(-?[0-9]+)', + '(:alpha)' => '([a-zA-Z]+)', + '(:alphanum)' => '([a-zA-Z0-9]+)', + '(:any)' => '([a-zA-Z0-9\.\-_%= \+\@\(\)]+)', + '(:all)' => '(.*)', + ], + 'optional' => [ + '/(:num?)' => '(?:/(-?[0-9]+)', + '/(:alpha?)' => '(?:/([a-zA-Z]+)', + '/(:alphanum?)' => '(?:/([a-zA-Z0-9]+)', + '/(:any?)' => '(?:/([a-zA-Z0-9\.\-_%= \+\@\(\)]+)', + '/(:all?)' => '(?:/(.*)', + ], + ]; + + /** + * Magic getter for route attributes + */ + public function __call(string $key, array $args = null): mixed + { + return $this->attributes[$key] ?? null; + } + + /** + * Creates a new Route object for the given + * pattern(s), method(s) and the callback action + */ + public function __construct( + string $pattern, + string $method, + Closure $action, + array $attributes = [] + ) { + $this->action = $action; + $this->attributes = $attributes; + $this->method = $method; + $this->pattern = $this->regex(ltrim($pattern, '/')); + } + + /** + * Getter for the action callback + */ + public function action(): Closure + { + return $this->action; + } + + /** + * Returns all parsed arguments + */ + public function arguments(): array + { + return $this->arguments; + } + + /** + * Getter for additional attributes + */ + public function attributes(): array + { + return $this->attributes; + } + + /** + * Getter for the method + */ + public function method(): string + { + return $this->method; + } + + /** + * Returns the route name if set + */ + public function name(): string|null + { + return $this->attributes['name'] ?? null; + } + + /** + * Throws a specific exception to tell + * the router to jump to the next route + * @since 3.0.3 + */ + public static function next(): void + { + throw new Exceptions\NextRouteException('next'); + } + + /** + * Getter for the pattern + */ + public function pattern(): string + { + return $this->pattern; + } + + /** + * Converts the pattern into a full regular + * expression by replacing all the wildcards + */ + public function regex(string $pattern): string + { + $search = array_keys($this->wildcards['optional']); + $replace = array_values($this->wildcards['optional']); + + // For optional parameters, first translate the wildcards to their + // regex equivalent, sans the ")?" ending. We'll add the endings + // back on when we know the replacement count. + $pattern = str_replace($search, $replace, $pattern, $count); + + if ($count > 0) { + $pattern .= str_repeat(')?', $count); + } + + return strtr($pattern, $this->wildcards['required']); + } + + /** + * Tries to match the path with the regular expression and + * extracts all arguments for the Route action + */ + public function parse(string $pattern, string $path): array|false + { + // check for direct matches + if ($pattern === $path) { + return $this->arguments = []; + } + + // We only need to check routes with regular expression since all others + // would have been able to be matched by the search for literal matches + // we just did before we started searching. + if (strpos($pattern, '(') === false) { + return false; + } + + // If we have a match we'll return all results + // from the preg without the full first match. + if (preg_match('#^' . $this->regex($pattern) . '$#u', $path, $parameters)) { + return $this->arguments = array_slice($parameters, 1); + } + + return false; + } +} diff --git a/kirby/src/Http/Router.php b/kirby/src/Http/Router.php new file mode 100644 index 0000000..f561bd3 --- /dev/null +++ b/kirby/src/Http/Router.php @@ -0,0 +1,198 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Router +{ + /** + * Hook that is called after each route + */ + protected Closure|null $afterEach; + + /** + * Hook that is called before each route + */ + protected Closure|null $beforeEach; + + /** + * Store for the current route, + * if one can be found + */ + protected Route|null $route = null; + + /** + * All registered routes, sorted by + * their request method. This makes + * it faster to find the right route + * later. + */ + protected array $routes = [ + 'GET' => [], + 'HEAD' => [], + 'POST' => [], + 'PUT' => [], + 'DELETE' => [], + 'CONNECT' => [], + 'OPTIONS' => [], + 'TRACE' => [], + 'PATCH' => [], + ]; + + /** + * Creates a new router object and + * registers all the given routes + * + * @param array $hooks Optional `beforeEach` and `afterEach` hooks + */ + public function __construct(array $routes = [], array $hooks = []) + { + $this->beforeEach = $hooks['beforeEach'] ?? null; + $this->afterEach = $hooks['afterEach'] ?? null; + + foreach ($routes as $props) { + if (isset($props['pattern'], $props['action']) === false) { + throw new InvalidArgumentException('Invalid route parameters'); + } + + $patterns = A::wrap($props['pattern']); + $methods = A::map( + explode('|', strtoupper($props['method'] ?? 'GET')), + 'trim' + ); + + if ($methods === ['ALL']) { + $methods = array_keys($this->routes); + } + + foreach ($methods as $method) { + foreach ($patterns as $pattern) { + $this->routes[$method][] = new Route( + $pattern, + $method, + $props['action'], + $props + ); + } + } + } + } + + /** + * Calls the Router by path and method. + * This will try to find a Route object + * and then call the Route action with + * the appropriate arguments and a Result + * object. + */ + public function call( + string|null $path = null, + string $method = 'GET', + Closure|null $callback = null + ) { + $path ??= ''; + $ignore = []; + $result = null; + $loop = true; + + while ($loop === true) { + $route = $this->find($path, $method, $ignore); + + if ($this->beforeEach instanceof Closure) { + ($this->beforeEach)($route, $path, $method); + } + + try { + if ($callback) { + $result = $callback($route); + } else { + $result = $route->action()->call( + $route, + ...$route->arguments() + ); + } + + $loop = false; + } catch (Exceptions\NextRouteException) { + $ignore[] = $route; + } + + if ($this->afterEach instanceof Closure) { + $final = $loop === false; + $result = ($this->afterEach)($route, $path, $method, $result, $final); + } + } + + return $result; + } + + /** + * Creates a micro-router and executes + * the routing action immediately + * @since 3.7.0 + */ + public static function execute( + string|null $path = null, + string $method = 'GET', + array $routes = [], + Closure|null $callback = null + ) { + return (new static($routes))->call($path, $method, $callback); + } + + /** + * Finds a Route object by path and method + * The Route's arguments method is used to + * find matches and return all the found + * arguments in the path. + */ + public function find( + string $path, + string $method, + array|null $ignore = null + ): Route { + if (isset($this->routes[$method]) === false) { + throw new InvalidArgumentException('Invalid routing method: ' . $method, 400); + } + + // remove leading and trailing slashes + $path = trim($path, '/'); + + foreach ($this->routes[$method] as $route) { + $arguments = $route->parse($route->pattern(), $path); + + if ($arguments !== false) { + if ( + empty($ignore) === true || + in_array($route, $ignore) === false + ) { + return $this->route = $route; + } + } + } + + throw new Exception('No route found for path: "' . $path . '" and request method: "' . $method . '"', 404); + } + + /** + * Returns the current route. + * This will only return something, + * once Router::find() has been called + * and only if a route was found. + */ + public function route(): Route|null + { + return $this->route; + } +} diff --git a/kirby/src/Http/Uri.php b/kirby/src/Http/Uri.php new file mode 100644 index 0000000..08c4618 --- /dev/null +++ b/kirby/src/Http/Uri.php @@ -0,0 +1,514 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Uri +{ + /** + * Cache for the current Uri object + */ + public static Uri|null $current = null; + + /** + * The fragment after the hash + */ + protected string|false|null $fragment; + + /** + * The host address + */ + protected string|null $host; + + /** + * The optional password for basic authentication + */ + protected string|false|null $password; + + /** + * The optional list of params + */ + protected Params $params; + + /** + * The optional path + */ + protected Path $path; + + /** + * The optional port number + */ + protected int|false|null $port; + + /** + * All original properties + */ + protected array $props; + + /** + * The optional query string without leading ? + */ + protected Query $query; + + /** + * https or http + */ + protected string|null $scheme; + + /** + * Supported schemes + */ + protected static array $schemes = ['http', 'https', 'ftp']; + + protected bool $slash; + + /** + * The optional username for basic authentication + */ + protected string|false|null $username = null; + + /** + * Creates a new URI object + * + * @param array $inject Additional props to inject if a URL string is passed + */ + public function __construct(array|string $props = [], array $inject = []) + { + if (is_string($props) === true) { + $props = parse_url($props); + $props['username'] = $props['user'] ?? null; + $props['password'] = $props['pass'] ?? null; + + $props = array_merge($props, $inject); + } + + // parse the path and extract params + if (empty($props['path']) === false) { + $props = static::parsePath($props); + } + + $this->props = $props; + $this->setFragment($props['fragment'] ?? null); + $this->setHost($props['host'] ?? null); + $this->setParams($props['params'] ?? null); + $this->setPassword($props['password'] ?? null); + $this->setPath($props['path'] ?? null); + $this->setPort($props['port'] ?? null); + $this->setQuery($props['query'] ?? null); + $this->setScheme($props['scheme'] ?? 'http'); + $this->setSlash($props['slash'] ?? false); + $this->setUsername($props['username'] ?? null); + } + + /** + * Magic caller to access all properties + */ + public function __call(string $property, array $arguments = []) + { + return $this->$property ?? null; + } + + /** + * Make sure that cloning also clones + * the path and query objects + */ + public function __clone() + { + $this->path = clone $this->path; + $this->query = clone $this->query; + $this->params = clone $this->params; + } + + /** + * Magic getter + */ + public function __get(string $property) + { + return $this->$property ?? null; + } + + /** + * Magic setter + */ + public function __set(string $property, $value): void + { + if (method_exists($this, 'set' . $property) === true) { + $this->{'set' . $property}($value); + } + } + + /** + * Converts the URL object to string + */ + public function __toString(): string + { + try { + return $this->toString(); + } catch (Throwable) { + return ''; + } + } + + /** + * Returns the auth details (username:password) + */ + public function auth(): string|null + { + $auth = trim($this->username . ':' . $this->password); + return $auth !== ':' ? $auth : null; + } + + /** + * Returns the base url (scheme + host) + * without trailing slash + */ + public function base(): string|null + { + if ($domain = $this->domain()) { + return $this->scheme ? $this->scheme . '://' . $domain : $domain; + } + + return null; + } + + /** + * Clones the Uri object and applies optional + * new props. + */ + public function clone(array $props = []): static + { + $clone = clone $this; + + foreach ($props as $key => $value) { + $clone->__set($key, $value); + } + + return $clone; + } + + public static function current(array $props = []): static + { + if (static::$current !== null) { + return static::$current; + } + + if ($app = App::instance(null, true)) { + $environment = $app->environment(); + } else { + $environment = new Environment(); + } + + return new static($environment->requestUrl(), $props); + } + + /** + * Returns the domain without scheme, path or query. + * Includes auth part when not empty. + * Includes port number when different from 80 or 443. + */ + public function domain(): string|null + { + if (empty($this->host) === true || $this->host === '/') { + return null; + } + + $auth = $this->auth(); + $domain = ''; + + if ($auth !== null) { + $domain .= $auth . '@'; + } + + $domain .= $this->host; + + if ( + $this->port !== null && + in_array($this->port, [80, 443]) === false + ) { + $domain .= ':' . $this->port; + } + + return $domain; + } + + public function hasFragment(): bool + { + return empty($this->fragment) === false; + } + + public function hasPath(): bool + { + return $this->path()->isNotEmpty(); + } + + public function hasQuery(): bool + { + return $this->query()->isNotEmpty(); + } + + public function https(): bool + { + return $this->scheme() === 'https'; + } + + /** + * Tries to convert the internationalized host + * name to the human-readable UTF8 representation + * + * @return $this + */ + public function idn(): static + { + if (empty($this->host) === false) { + $this->setHost(Idn::decode($this->host)); + } + return $this; + } + + /** + * Creates an Uri object for the URL to the index.php + * or any other executed script. + */ + public static function index(array $props = []): static + { + if ($app = App::instance(null, true)) { + $url = $app->url('index'); + } else { + $url = (new Environment())->baseUrl(); + } + + return new static($url, $props); + } + + /** + * Checks if the host exists + */ + public function isAbsolute(): bool + { + return empty($this->host) === false; + } + + /** + * @return $this + */ + public function setFragment(string|null $fragment = null): static + { + $this->fragment = $fragment ? ltrim($fragment, '#') : null; + return $this; + } + + /** + * @return $this + */ + public function setHost(string|null $host = null): static + { + $this->host = $host; + return $this; + } + + /** + * @return $this + */ + public function setParams(Params|string|array|false|null $params = null): static + { + // ensure that the special constructor value of `false` + // is never passed through as it's not supported by `Params` + if ($params === false) { + $params = []; + } + + $this->params = $params instanceof Params ? $params : new Params($params); + return $this; + } + + /** + * @return $this + */ + public function setPassword( + #[SensitiveParameter] + string|null $password = null + ): static { + $this->password = $password; + return $this; + } + + /** + * @return $this + */ + public function setPath(Path|string|array|null $path = null): static + { + $this->path = $path instanceof Path ? $path : new Path($path); + return $this; + } + + /** + * @return $this + */ + public function setPort(int|null $port = null): static + { + if ($port === 0) { + $port = null; + } + + if ($port !== null) { + if ($port < 1 || $port > 65535) { + throw new InvalidArgumentException('Invalid port format: ' . $port); + } + } + + $this->port = $port; + return $this; + } + + /** + * @return $this + */ + public function setQuery(Query|string|array|null $query = null): static + { + $this->query = $query instanceof Query ? $query : new Query($query); + return $this; + } + + /** + * @return $this + */ + public function setScheme(string|null $scheme = null): static + { + if ($scheme !== null && in_array($scheme, static::$schemes) === false) { + throw new InvalidArgumentException('Invalid URL scheme: ' . $scheme); + } + + $this->scheme = $scheme; + return $this; + } + + /** + * Set if a trailing slash should be added to + * the path when the URI is being built + * + * @return $this + */ + public function setSlash(bool $slash = false): static + { + $this->slash = $slash; + return $this; + } + + /** + * @return $this + */ + public function setUsername(string|null $username = null): static + { + $this->username = $username; + return $this; + } + + /** + * Converts the Url object to an array + */ + public function toArray(): array + { + $array = []; + + foreach ($this->props as $key => $value) { + $value = $this->$key; + + if (is_object($value) === true) { + $value = $value->toArray(); + } + + $array[$key] = $value; + } + + return $array; + } + + public function toJson(...$arguments): string + { + return json_encode($this->toArray(), ...$arguments); + } + + /** + * Returns the full URL as string + */ + public function toString(): string + { + $url = $this->base(); + $slash = true; + + if (empty($url) === true) { + $url = '/'; + $slash = false; + } + + $path = $this->path->toString($slash) . $this->params->toString(true); + + if ($this->slash && $slash === true) { + $path .= '/'; + } + + $url .= $path; + $url .= $this->query->toString(true); + + if (empty($this->fragment) === false) { + $url .= '#' . $this->fragment; + } + + return $url; + } + + /** + * Tries to convert a URL with an internationalized host + * name to the machine-readable Punycode representation + * + * @return $this + */ + public function unIdn(): static + { + if (empty($this->host) === false) { + $this->setHost(Idn::encode($this->host)); + } + return $this; + } + + /** + * Parses the path inside the props and extracts + * the params unless disabled + * + * @return array Modified props array + */ + protected static function parsePath(array $props): array + { + // extract params, the rest is the path; + // only do this if not explicitly disabled (set to `false`) + if (isset($props['params']) === false || $props['params'] !== false) { + $extract = Params::extract($props['path']); + $props['params'] ??= $extract['params']; + $props['path'] = $extract['path']; + $props['slash'] ??= $extract['slash']; + + return $props; + } + + // use the full path; + // automatically detect the trailing slash from it if possible + if (is_string($props['path']) === true) { + $props['slash'] = substr($props['path'], -1, 1) === '/'; + } + + return $props; + } +} diff --git a/kirby/src/Http/Url.php b/kirby/src/Http/Url.php new file mode 100644 index 0000000..622f350 --- /dev/null +++ b/kirby/src/Http/Url.php @@ -0,0 +1,249 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Url +{ + /** + * The base Url to build absolute Urls from + */ + public static string|null $home = '/'; + + /** + * The current Uri object as string + */ + public static string|null $current = null; + + /** + * Facade for all Uri object methods + */ + public static function __callStatic(string $method, array $arguments) + { + $uri = new Uri($arguments[0] ?? static::current()); + return $uri->$method(...array_slice($arguments, 1)); + } + + /** + * Url Builder + * Actually just a factory for `new Uri($parts)` + */ + public static function build( + array $parts = [], + string|null $url = null + ): string { + $url ??= static::current(); + $uri = new Uri($url); + return $uri->clone($parts)->toString(); + } + + /** + * Returns the current url with all bells and whistles + */ + public static function current(): string + { + return static::$current ??= static::toObject()->toString(); + } + + /** + * Returns the url for the current directory + */ + public static function currentDir(): string + { + return dirname(static::current()); + } + + /** + * Tries to fix a broken url without protocol + * @psalm-return ($url is null ? string|null : string) + */ + public static function fix(string|null $url = null): string|null + { + // make sure to not touch absolute urls + if (!preg_match('!^(https|http|ftp)\:\/\/!i', $url ?? '')) { + return 'http://' . $url; + } + + return $url; + } + + /** + * Returns the home url if defined + */ + public static function home(): string + { + return static::$home; + } + + /** + * Returns the url to the executed script + */ + public static function index(array $props = []): string + { + return Uri::index($props)->toString(); + } + + /** + * Checks if an URL is absolute + */ + public static function isAbsolute(string|null $url = null): bool + { + // matches the following groups of URLs: + // //example.com/uri + // http://example.com/uri, https://example.com/uri, ftp://example.com/uri + // mailto:example@example.com, geo:49.0158,8.3239?z=11 + return + $url !== null && + preg_match('!^(//|[a-z0-9+-.]+://|mailto:|tel:|geo:)!i', $url) === 1; + } + + /** + * Convert a relative path into an absolute URL + */ + public static function makeAbsolute(string|null $path = null, string|null $home = null): string + { + if ($path === '' || $path === '/' || $path === null) { + return $home ?? static::home(); + } + + if (substr($path, 0, 1) === '#') { + return $path; + } + + if (static::isAbsolute($path)) { + return $path; + } + + // build the full url + $path = ltrim($path, '/'); + $home ??= static::home(); + + if (empty($path) === true) { + return $home; + } + + return $home === '/' ? '/' . $path : $home . '/' . $path; + } + + /** + * Returns the path for the given url + */ + public static function path( + string|array|null $url = null, + bool $leadingSlash = false, + bool $trailingSlash = false + ): string { + return Url::toObject($url) + ->path() + ->toString($leadingSlash, $trailingSlash); + } + + /** + * Returns the query for the given url + */ + public static function query(string|array|null $url = null): string + { + return Url::toObject($url)->query()->toString(); + } + + /** + * Return the last url the user has been on if detectable + */ + public static function last(): string + { + return Environment::getGlobally('HTTP_REFERER', ''); + } + + /** + * Shortens the Url by removing all unnecessary parts + */ + public static function short( + string|null $url = null, + int $length = 0, + bool $base = false, + string $rep = '…' + ): string { + $uri = static::toObject($url); + + $uri->fragment = null; + $uri->query = null; + $uri->password = null; + $uri->port = null; + $uri->scheme = null; + $uri->username = null; + + // remove the trailing slash from the path + $uri->slash = false; + + $url = $base ? $uri->base() : $uri->toString(); + $url = str_replace('www.', '', $url); + + return Str::short($url, $length, $rep); + } + + /** + * Removes the path from the Url + */ + public static function stripPath(string|null $url = null): string + { + return static::toObject($url)->setPath(null)->toString(); + } + + /** + * Removes the query string from the Url + */ + public static function stripQuery(string|null $url = null): string + { + return static::toObject($url)->setQuery(null)->toString(); + } + + /** + * Removes the fragment (hash) from the Url + */ + public static function stripFragment(string|null $url = null): string + { + return static::toObject($url)->setFragment(null)->toString(); + } + + /** + * Smart resolver for internal and external urls + */ + public static function to( + string|null $path = null, + array $options = null + ): string { + // make sure $path is string + $path ??= ''; + + // keep relative urls + if (substr($path, 0, 2) === './' || substr($path, 0, 3) === '../') { + return $path; + } + + $url = static::makeAbsolute($path); + + if ($options === null) { + return $url; + } + + return (new Uri($url, $options))->toString(); + } + + /** + * Converts the Url to a Uri object + */ + public static function toObject(string|null $url = null): Uri + { + return $url === null ? Uri::current() : new Uri($url); + } +} diff --git a/kirby/src/Http/Visitor.php b/kirby/src/Http/Visitor.php new file mode 100644 index 0000000..ea2ac2e --- /dev/null +++ b/kirby/src/Http/Visitor.php @@ -0,0 +1,229 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Visitor +{ + protected string|null $ip = null; + protected string|null $userAgent = null; + protected string|null $acceptedLanguage = null; + protected string|null $acceptedMimeType = null; + + /** + * Creates a new visitor object. + * Optional arguments can be passed to + * modify the information about the visitor. + * + * By default everything is pulled from $_SERVER + */ + public function __construct(array $arguments = []) + { + $ip = $arguments['ip'] ?? null; + $ip ??= Environment::getGlobally('REMOTE_ADDR', ''); + $agent = $arguments['userAgent'] ?? null; + $agent ??= Environment::getGlobally('HTTP_USER_AGENT', ''); + $language = $arguments['acceptedLanguage'] ?? null; + $language ??= Environment::getGlobally('HTTP_ACCEPT_LANGUAGE', ''); + $mime = $arguments['acceptedMimeType'] ?? null; + $mime ??= Environment::getGlobally('HTTP_ACCEPT', ''); + + $this->ip($ip); + $this->userAgent($agent); + $this->acceptedLanguage($language); + $this->acceptedMimeType($mime); + } + + /** + * Sets the accepted language if + * provided or returns the user's + * accepted language otherwise + * + * @return $this|\Kirby\Toolkit\Obj|null + */ + public function acceptedLanguage( + string|null $acceptedLanguage = null + ): static|Obj|null { + if ($acceptedLanguage === null) { + return $this->acceptedLanguages()->first(); + } + + $this->acceptedLanguage = $acceptedLanguage; + return $this; + } + + /** + * Returns an array of all accepted languages + * including their quality and locale + */ + public function acceptedLanguages(): Collection + { + $accepted = Str::accepted($this->acceptedLanguage); + $languages = []; + + foreach ($accepted as $language) { + $value = $language['value']; + $parts = Str::split($value, '-'); + $code = isset($parts[0]) ? Str::lower($parts[0]) : null; + $region = isset($parts[1]) ? Str::upper($parts[1]) : null; + $locale = $region ? $code . '_' . $region : $code; + + $languages[$locale] = new Obj([ + 'code' => $code, + 'locale' => $locale, + 'original' => $value, + 'quality' => $language['quality'], + 'region' => $region, + ]); + } + + return new Collection($languages); + } + + /** + * Checks if the user accepts the given language + */ + public function acceptsLanguage(string $code): bool + { + $mode = Str::contains($code, '_') === true ? 'locale' : 'code'; + + foreach ($this->acceptedLanguages() as $language) { + if ($language->$mode() === $code) { + return true; + } + } + + return false; + } + + /** + * Sets the accepted mime type if + * provided or returns the user's + * accepted mime type otherwise + * + * @return $this|\Kirby\Toolkit\Obj|null + */ + public function acceptedMimeType( + string|null $acceptedMimeType = null + ): static|Obj|null { + if ($acceptedMimeType === null) { + return $this->acceptedMimeTypes()->first(); + } + + $this->acceptedMimeType = $acceptedMimeType; + return $this; + } + + /** + * Returns a collection of all accepted mime types + */ + public function acceptedMimeTypes(): Collection + { + $accepted = Str::accepted($this->acceptedMimeType); + $mimes = []; + + foreach ($accepted as $mime) { + $mimes[$mime['value']] = new Obj([ + 'type' => $mime['value'], + 'quality' => $mime['quality'], + ]); + } + + return new Collection($mimes); + } + + /** + * Checks if the user accepts the given mime type + */ + public function acceptsMimeType(string $mimeType): bool + { + return Mime::isAccepted($mimeType, $this->acceptedMimeType); + } + + /** + * Returns the MIME type from the provided list that + * is most accepted (= preferred) by the visitor + * @since 3.3.0 + * + * @param string ...$mimeTypes MIME types to query for + * @return string|null Preferred MIME type + */ + public function preferredMimeType(string ...$mimeTypes): string|null + { + foreach ($this->acceptedMimeTypes() as $acceptedMime) { + // look for direct matches + if (in_array($acceptedMime->type(), $mimeTypes)) { + return $acceptedMime->type(); + } + + // test each option against wildcard `Accept` values + foreach ($mimeTypes as $expectedMime) { + if (Mime::matches($expectedMime, $acceptedMime->type()) === true) { + return $expectedMime; + } + } + } + + return null; + } + + /** + * Returns true if the visitor prefers a JSON response over + * an HTML response based on the `Accept` request header + * @since 3.3.0 + */ + public function prefersJson(): bool + { + $preferred = $this->preferredMimeType('application/json', 'text/html'); + return $preferred === 'application/json'; + } + + /** + * Sets the ip address if provided + * or returns the ip of the current + * visitor otherwise + * + * @return $this|string|null + */ + public function ip(string|null $ip = null): static|string|null + { + if ($ip === null) { + return $this->ip; + } + + $this->ip = $ip; + return $this; + } + + /** + * Sets the user agent if provided + * or returns the user agent string of + * the current visitor otherwise + * + * @return $this|string|null + */ + public function userAgent(string|null $userAgent = null): static|string|null + { + if ($userAgent === null) { + return $this->userAgent; + } + + $this->userAgent = $userAgent; + return $this; + } +} diff --git a/kirby/src/Image/Camera.php b/kirby/src/Image/Camera.php new file mode 100644 index 0000000..c149c2e --- /dev/null +++ b/kirby/src/Image/Camera.php @@ -0,0 +1,68 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Camera +{ + protected string|null $make; + protected string|null $model; + + public function __construct(array $exif) + { + $this->make = $exif['Make'] ?? null; + $this->model = $exif['Model'] ?? null; + } + + /** + * Returns the make of the camera + */ + public function make(): string|null + { + return $this->make; + } + + /** + * Returns the camera model + */ + public function model(): string|null + { + return $this->model; + } + + /** + * Converts the object into a nicely readable array + */ + public function toArray(): array + { + return [ + 'make' => $this->make, + 'model' => $this->model + ]; + } + + /** + * Returns the full make + model name + */ + public function __toString(): string + { + return trim($this->make . ' ' . $this->model); + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } +} diff --git a/kirby/src/Image/Darkroom.php b/kirby/src/Image/Darkroom.php new file mode 100644 index 0000000..a09747c --- /dev/null +++ b/kirby/src/Image/Darkroom.php @@ -0,0 +1,141 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Darkroom +{ + public static array $types = [ + 'gd' => GdLib::class, + 'im' => ImageMagick::class + ]; + + public function __construct( + protected array $settings = [] + ) { + $this->settings = array_merge($this->defaults(), $settings); + } + + /** + * Creates a new Darkroom instance for the given + * type/driver + * + * @throws \Exception + */ + public static function factory(string $type, array $settings = []): object + { + if (isset(static::$types[$type]) === false) { + throw new Exception('Invalid Darkroom type'); + } + + $class = static::$types[$type]; + return new $class($settings); + } + + /** + * Returns the default thumb settings + */ + protected function defaults(): array + { + return [ + 'autoOrient' => true, + 'blur' => false, + 'crop' => false, + 'format' => null, + 'grayscale' => false, + 'height' => null, + 'quality' => 90, + 'scaleHeight' => null, + 'scaleWidth' => null, + 'width' => null, + ]; + } + + /** + * Normalizes all thumb options + */ + protected function options(array $options = []): array + { + $options = array_merge($this->settings, $options); + + // normalize the crop option + if ($options['crop'] === true) { + $options['crop'] = 'center'; + } + + // normalize the blur option + if ($options['blur'] === true) { + $options['blur'] = 10; + } + + // normalize the greyscale option + if (isset($options['greyscale']) === true) { + $options['grayscale'] = $options['greyscale']; + unset($options['greyscale']); + } + + // normalize the bw option + if (isset($options['bw']) === true) { + $options['grayscale'] = $options['bw']; + unset($options['bw']); + } + + $options['quality'] ??= $this->settings['quality']; + + return $options; + } + + /** + * Calculates the dimensions of the final thumb based + * on the given options and returns a full array with + * all the final options to be used for the image generator + */ + public function preprocess(string $file, array $options = []): array + { + $options = $this->options($options); + $image = new Image($file); + + $options['sourceWidth'] = $image->width(); + $options['sourceHeight'] = $image->height(); + + $dimensions = $image->dimensions(); + $thumbDimensions = $dimensions->thumb($options); + + $options['width'] = $thumbDimensions->width(); + $options['height'] = $thumbDimensions->height(); + + // scale ratio compared to the source dimensions + $options['scaleWidth'] = Focus::ratio( + $options['width'], + $options['sourceWidth'] + ); + $options['scaleHeight'] = Focus::ratio( + $options['height'], + $options['sourceHeight'] + ); + + return $options; + } + + /** + * This method must be replaced by the driver to run the + * actual image processing job. + */ + public function process(string $file, array $options = []): array + { + return $this->preprocess($file, $options); + } +} diff --git a/kirby/src/Image/Darkroom/GdLib.php b/kirby/src/Image/Darkroom/GdLib.php new file mode 100644 index 0000000..8e05f72 --- /dev/null +++ b/kirby/src/Image/Darkroom/GdLib.php @@ -0,0 +1,130 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class GdLib extends Darkroom +{ + /** + * Processes the image with the SimpleImage library + */ + public function process(string $file, array $options = []): array + { + $options = $this->preprocess($file, $options); + $mime = $this->mime($options); + + $image = new SimpleImage(); + $image->fromFile($file); + + $image = $this->resize($image, $options); + $image = $this->autoOrient($image, $options); + $image = $this->blur($image, $options); + $image = $this->grayscale($image, $options); + + $image->toFile($file, $mime, $options); + + return $options; + } + + /** + * Activates the autoOrient option in SimpleImage + * unless this is deactivated + */ + protected function autoOrient(SimpleImage $image, array $options): SimpleImage + { + if ($options['autoOrient'] === false) { + return $image; + } + + return $image->autoOrient(); + } + + /** + * Wrapper around SimpleImage's resize and crop methods + */ + protected function resize(SimpleImage $image, array $options): SimpleImage + { + // just resize, no crop + if ($options['crop'] === false) { + return $image->resize($options['width'], $options['height']); + } + + // crop based on focus point + if (Focus::isFocalPoint($options['crop']) === true) { + // get crop coords for focal point: + // if image needs to be cropped, crop before resizing + if ($focus = Focus::coords( + $options['crop'], + $options['sourceWidth'], + $options['sourceHeight'], + $options['width'], + $options['height'] + )) { + $image->crop( + $focus['x1'], + $focus['y1'], + $focus['x2'], + $focus['y2'] + ); + } + + return $image->thumbnail($options['width'], $options['height']); + } + + // normal crop with crop anchor + return $image->thumbnail( + $options['width'], + $options['height'] ?? $options['width'], + $options['crop'] + ); + } + + /** + * Applies the correct blur settings for SimpleImage + */ + protected function blur(SimpleImage $image, array $options): SimpleImage + { + if ($options['blur'] === false) { + return $image; + } + + return $image->blur('gaussian', (int)$options['blur']); + } + + /** + * Applies grayscale conversion if activated in the options. + */ + protected function grayscale(SimpleImage $image, array $options): SimpleImage + { + if ($options['grayscale'] === false) { + return $image; + } + + return $image->desaturate(); + } + + /** + * Returns mime type based on `format` option + */ + protected function mime(array $options): string|null + { + if ($options['format'] === null) { + return null; + } + + return Mime::fromExtension($options['format']); + } +} diff --git a/kirby/src/Image/Darkroom/ImageMagick.php b/kirby/src/Image/Darkroom/ImageMagick.php new file mode 100644 index 0000000..ea7e8a1 --- /dev/null +++ b/kirby/src/Image/Darkroom/ImageMagick.php @@ -0,0 +1,239 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class ImageMagick extends Darkroom +{ + /** + * Activates imagemagick's auto-orient feature unless + * it is deactivated via the options + */ + protected function autoOrient(string $file, array $options): string|null + { + if ($options['autoOrient'] === true) { + return '-auto-orient'; + } + + return null; + } + + /** + * Applies the blur settings + */ + protected function blur(string $file, array $options): string|null + { + if ($options['blur'] !== false) { + return '-blur ' . escapeshellarg('0x' . $options['blur']); + } + + return null; + } + + /** + * Keep animated gifs + */ + protected function coalesce(string $file, array $options): string|null + { + if (F::extension($file) === 'gif') { + return '-coalesce'; + } + + return null; + } + + /** + * Creates the convert command with the right path to the binary file + */ + protected function convert(string $file, array $options): string + { + $command = escapeshellarg($options['bin']); + + // limit to single-threading to keep CPU usage sane + $command .= ' -limit thread 1'; + + // add JPEG size hint to optimize CPU and memory usage + if (F::mime($file) === 'image/jpeg') { + // add hint only when downscaling + if ($options['scaleWidth'] < 1 && $options['scaleHeight'] < 1) { + $command .= ' -define ' . escapeshellarg(sprintf('jpeg:size=%dx%d', $options['width'], $options['height'])); + } + } + + // append input file + return $command . ' ' . escapeshellarg($file); + } + + /** + * Returns additional default parameters for imagemagick + */ + protected function defaults(): array + { + return parent::defaults() + [ + 'bin' => 'convert', + 'interlace' => false, + ]; + } + + /** + * Applies the correct settings for grayscale images + */ + protected function grayscale(string $file, array $options): string|null + { + if ($options['grayscale'] === true) { + return '-colorspace gray'; + } + + return null; + } + + /** + * Applies the correct settings for interlaced JPEGs if + * activated via options + */ + protected function interlace(string $file, array $options): string|null + { + if ($options['interlace'] === true) { + return '-interlace line'; + } + + return null; + } + + /** + * Creates and runs the full imagemagick command + * to process the image + * + * @throws \Exception + */ + public function process(string $file, array $options = []): array + { + $options = $this->preprocess($file, $options); + $command = []; + + $command[] = $this->convert($file, $options); + $command[] = $this->strip($file, $options); + $command[] = $this->interlace($file, $options); + $command[] = $this->coalesce($file, $options); + $command[] = $this->grayscale($file, $options); + $command[] = $this->autoOrient($file, $options); + $command[] = $this->resize($file, $options); + $command[] = $this->quality($file, $options); + $command[] = $this->blur($file, $options); + $command[] = $this->save($file, $options); + + // remove all null values and join the parts + $command = implode(' ', array_filter($command)); + + // try to execute the command + exec($command, $output, $return); + + // log broken commands + if ($return !== 0) { + throw new Exception('The imagemagick convert command could not be executed: ' . $command); + } + + return $options; + } + + /** + * Applies the correct JPEG compression quality settings + */ + protected function quality(string $file, array $options): string + { + return '-quality ' . escapeshellarg($options['quality']); + } + + /** + * Creates the correct options to crop or resize the image + * and translates the crop positions for imagemagick + */ + protected function resize(string $file, array $options): string + { + // simple resize + if ($options['crop'] === false) { + return '-thumbnail ' . escapeshellarg(sprintf('%sx%s!', $options['width'], $options['height'])); + } + + // crop based on focus point + if (Focus::isFocalPoint($options['crop']) === true) { + if ($focus = Focus::coords( + $options['crop'], + $options['sourceWidth'], + $options['sourceHeight'], + $options['width'], + $options['height'] + )) { + return sprintf( + '-crop %sx%s+%s+%s -resize %sx%s^', + $focus['width'], + $focus['height'], + $focus['x1'], + $focus['y1'], + $options['width'], + $options['height'] + ); + } + } + + // translate the gravity option into something imagemagick understands + $gravity = match ($options['crop'] ?? null) { + 'top left' => 'NorthWest', + 'top' => 'North', + 'top right' => 'NorthEast', + 'left' => 'West', + 'right' => 'East', + 'bottom left' => 'SouthWest', + 'bottom' => 'South', + 'bottom right' => 'SouthEast', + default => 'Center' + }; + + $command = '-thumbnail ' . escapeshellarg(sprintf('%sx%s^', $options['width'], $options['height'])); + $command .= ' -gravity ' . escapeshellarg($gravity); + $command .= ' -crop ' . escapeshellarg(sprintf('%sx%s+0+0', $options['width'], $options['height'])); + + return $command; + } + + /** + * Creates the option for the output file + */ + protected function save(string $file, array $options): string + { + if ($options['format'] !== null) { + $file = pathinfo($file, PATHINFO_DIRNAME) . '/' . pathinfo($file, PATHINFO_FILENAME) . '.' . $options['format']; + } + + return escapeshellarg($file); + } + + /** + * Removes all metadata from the image + */ + protected function strip(string $file, array $options): string + { + if (F::extension($file) === 'png') { + // ImageMagick does not support keeping ICC profiles while + // stripping other privacy- and security-related information, + // such as GPS data; so discard all color profiles for PNG files + // (tested with ImageMagick 7.0.11-14 Q16 x86_64 2021-05-31) + return '-strip'; + } + + return ''; + } +} diff --git a/kirby/src/Image/Dimensions.php b/kirby/src/Image/Dimensions.php new file mode 100644 index 0000000..cf6d334 --- /dev/null +++ b/kirby/src/Image/Dimensions.php @@ -0,0 +1,409 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Dimensions +{ + public function __construct( + public int $width, + public int $height + ) { + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } + + /** + * Echos the dimensions as width × height + */ + public function __toString(): string + { + return $this->width . ' × ' . $this->height; + } + + /** + * Crops the dimensions by width and height + * + * @return $this + */ + public function crop(int $width, int|null $height = null): static + { + $this->width = $width; + $this->height = $width; + + if ($height !== 0 && $height !== null) { + $this->height = $height; + } + + return $this; + } + + /** + * Returns the height + */ + public function height(): int + { + return $this->height; + } + + /** + * Recalculates the width and height to fit into the given box. + * + * + * + * $dimensions = new Dimensions(1200, 768); + * $dimensions->fit(500); + * + * echo $dimensions->width(); + * // output: 500 + * + * echo $dimensions->height(); + * // output: 320 + * + * + * + * @param int $box the max width and/or height + * @param bool $force If true, the dimensions will be + * upscaled to fit the box if smaller + * @return $this object with recalculated dimensions + */ + public function fit(int $box, bool $force = false): static + { + if ($this->width === 0 || $this->height === 0) { + $this->width = $box; + $this->height = $box; + return $this; + } + + $ratio = $this->ratio(); + + if ($this->width > $this->height) { + // wider than tall + if ($this->width > $box || $force === true) { + $this->width = $box; + } + $this->height = (int)round($this->width / $ratio); + } elseif ($this->height > $this->width) { + // taller than wide + if ($this->height > $box || $force === true) { + $this->height = $box; + } + $this->width = (int)round($this->height * $ratio); + } elseif ($this->width > $box) { + // width = height but bigger than box + $this->width = $box; + $this->height = $box; + } + + return $this; + } + + /** + * Recalculates the width and height to fit the given height + * + * + * + * $dimensions = new Dimensions(1200, 768); + * $dimensions->fitHeight(500); + * + * echo $dimensions->width(); + * // output: 781 + * + * echo $dimensions->height(); + * // output: 500 + * + * + * + * @param int|null $fit the max height + * @param bool $force If true, the dimensions will be + * upscaled to fit the box if smaller + * @return $this object with recalculated dimensions + */ + public function fitHeight( + int|null $fit = null, + bool $force = false + ): static { + return $this->fitSize('height', $fit, $force); + } + + /** + * Helper for fitWidth and fitHeight methods + * + * @param string $ref reference (width or height) + * @param int|null $fit the max width + * @param bool $force If true, the dimensions will be + * upscaled to fit the box if smaller + * @return $this object with recalculated dimensions + */ + protected function fitSize( + string $ref, + int|null $fit = null, + bool $force = false + ): static { + if ($fit === 0 || $fit === null) { + return $this; + } + + if ($this->$ref <= $fit && !$force) { + return $this; + } + + $ratio = $this->ratio(); + $mode = $ref === 'width'; + $this->width = $mode ? $fit : (int)round($fit * $ratio); + $this->height = !$mode ? $fit : (int)round($fit / $ratio); + + return $this; + } + + /** + * Recalculates the width and height to fit the given width + * + * + * + * $dimensions = new Dimensions(1200, 768); + * $dimensions->fitWidth(500); + * + * echo $dimensions->width(); + * // output: 500 + * + * echo $dimensions->height(); + * // output: 320 + * + * + * + * @param int|null $fit the max width + * @param bool $force If true, the dimensions will be + * upscaled to fit the box if smaller + * @return $this object with recalculated dimensions + */ + public function fitWidth( + int|null $fit = null, + bool $force = false + ): static { + return $this->fitSize('width', $fit, $force); + } + + /** + * Recalculates the dimensions by the width and height + * + * @param int|null $width the max height + * @param int|null $height the max width + * @return $this + */ + public function fitWidthAndHeight( + int|null $width = null, + int|null $height = null, + bool $force = false + ): static { + if ($this->width > $this->height) { + $this->fitWidth($width, $force); + + // do another check for the max height + if ($this->height > $height) { + $this->fitHeight($height); + } + } else { + $this->fitHeight($height, $force); + + // do another check for the max width + if ($this->width > $width) { + $this->fitWidth($width); + } + } + + return $this; + } + + /** + * Detect the dimensions for an image file + */ + public static function forImage(string $root): static + { + if (file_exists($root) === false) { + return new static(0, 0); + } + + $size = getimagesize($root); + return new static($size[0] ?? 0, $size[1] ?? 1); + } + + /** + * Detect the dimensions for a svg file + */ + public static function forSvg(string $root): static + { + // avoid xml errors + libxml_use_internal_errors(true); + + $content = file_get_contents($root); + $height = 0; + $width = 0; + $xml = simplexml_load_string($content); + + if ($xml !== false) { + $attr = $xml->attributes(); + $rawWidth = $attr->width; + $width = (int)$rawWidth; + $rawHeight = $attr->height; + $height = (int)$rawHeight; + + // use viewbox values if direct attributes are 0 + // or based on percentages + if (empty($attr->viewBox) === false) { + $box = explode(' ', $attr->viewBox); + + // when using viewbox values, make sure to subtract + // first two box values from last two box values + // to retrieve the absolute dimensions + + if (Str::endsWith($rawWidth, '%') === true || $width === 0) { + $width = (int)($box[2] ?? 0) - (int)($box[0] ?? 0); + } + + if (Str::endsWith($rawHeight, '%') === true || $height === 0) { + $height = (int)($box[3] ?? 0) - (int)($box[1] ?? 0); + } + } + } + + return new static($width, $height); + } + + /** + * Checks if the dimensions are landscape + */ + public function landscape(): bool + { + return $this->width > $this->height; + } + + /** + * Returns a string representation of the orientation + */ + public function orientation(): string|false + { + if (!$this->ratio()) { + return false; + } + + if ($this->portrait() === true) { + return 'portrait'; + } + + if ($this->landscape() === true) { + return 'landscape'; + } + + return 'square'; + } + + /** + * Checks if the dimensions are portrait + */ + public function portrait(): bool + { + return $this->height > $this->width; + } + + /** + * Calculates and returns the ratio + * + * + * + * $dimensions = new Dimensions(1200, 768); + * echo $dimensions->ratio(); + * // output: 1.5625 + * + * + */ + public function ratio(): float + { + if ($this->width !== 0 && $this->height !== 0) { + return $this->width / $this->height; + } + + return 0.0; + } + + /** + * Resizes image + * @return $this + */ + public function resize( + int|null $width = null, + int|null $height = null, + bool $force = false + ): static { + return $this->fitWidthAndHeight($width, $height, $force); + } + + /** + * Checks if the dimensions are square + */ + public function square(): bool + { + return $this->width === $this->height; + } + + /** + * Resize and crop + * + * @return $this + */ + public function thumb(array $options = []): static + { + $width = $options['width'] ?? null; + $height = $options['height'] ?? null; + $crop = $options['crop'] ?? false; + $method = $crop !== false ? 'crop' : 'resize'; + + if ($width === null && $height === null) { + return $this; + } + + return $this->$method($width, $height); + } + + /** + * Converts the dimensions object + * to a plain PHP array + */ + public function toArray(): array + { + return [ + 'width' => $this->width(), + 'height' => $this->height(), + 'ratio' => $this->ratio(), + 'orientation' => $this->orientation(), + ]; + } + + /** + * Returns the width + */ + public function width(): int + { + return $this->width; + } +} diff --git a/kirby/src/Image/Exif.php b/kirby/src/Image/Exif.php new file mode 100644 index 0000000..f32afd0 --- /dev/null +++ b/kirby/src/Image/Exif.php @@ -0,0 +1,200 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Exif +{ + /** + * The raw exif array + */ + protected array $data = []; + + protected Camera|null $camera = null; + protected Location|null $location = null; + protected string|null $timestamp = null; + protected string|null $exposure = null; + protected string|null $aperture = null; + protected string|null $iso = null; + protected string|null $focalLength = null; + protected bool|null $isColor = null; + + public function __construct( + protected Image $image + ) { + $this->data = $this->read(); + $this->timestamp = $this->parseTimestamp(); + $this->exposure = $this->data['ExposureTime'] ?? null; + $this->iso = $this->data['ISOSpeedRatings'] ?? null; + $this->focalLength = $this->parseFocalLength(); + $this->aperture = $this->computed()['ApertureFNumber'] ?? null; + $this->isColor = V::accepted($this->computed()['IsColor'] ?? null); + } + + /** + * Returns the raw data array from the parser + */ + public function data(): array + { + return $this->data; + } + + /** + * Returns the Camera object + */ + public function camera(): Camera + { + return $this->camera ??= new Camera($this->data); + } + + /** + * Returns the location object + */ + public function location(): Location + { + return $this->location ??= new Location($this->data); + } + + /** + * Returns the timestamp + */ + public function timestamp(): string|null + { + return $this->timestamp; + } + + /** + * Returns the exposure + */ + public function exposure(): string|null + { + return $this->exposure; + } + + /** + * Returns the aperture + */ + public function aperture(): string|null + { + return $this->aperture; + } + + /** + * Returns the iso value + */ + public function iso(): string|null + { + return $this->iso; + } + + /** + * Checks if this is a color picture + */ + public function isColor(): bool|null + { + return $this->isColor; + } + + /** + * Checks if this is a bw picture + */ + public function isBW(): bool|null + { + return ($this->isColor !== null) ? $this->isColor === false : null; + } + + /** + * Returns the focal length + */ + public function focalLength(): string|null + { + return $this->focalLength; + } + + /** + * Read the exif data of the image object if possible + */ + protected function read(): array + { + // @codeCoverageIgnoreStart + if (function_exists('exif_read_data') === false) { + return []; + } + // @codeCoverageIgnoreEnd + + $data = @exif_read_data($this->image->root()); + return is_array($data) ? $data : []; + } + + /** + * Get all computed data + */ + protected function computed(): array + { + return $this->data['COMPUTED'] ?? []; + } + + /** + * Return the timestamp when the picture has been taken + */ + protected function parseTimestamp(): string + { + if (isset($this->data['DateTimeOriginal']) === true) { + if ($time = strtotime($this->data['DateTimeOriginal'])) { + return (string)$time; + } + } + + return $this->data['FileDateTime'] ?? $this->image->modified(); + } + + /** + * Return the focal length + */ + protected function parseFocalLength(): string|null + { + return + $this->data['FocalLength'] ?? + $this->data['FocalLengthIn35mmFilm'] ?? + null; + } + + /** + * Converts the object into a nicely readable array + */ + public function toArray(): array + { + return [ + 'camera' => $this->camera()->toArray(), + 'location' => $this->location()->toArray(), + 'timestamp' => $this->timestamp(), + 'exposure' => $this->exposure(), + 'aperture' => $this->aperture(), + 'iso' => $this->iso(), + 'focalLength' => $this->focalLength(), + 'isColor' => $this->isColor() + ]; + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return array_merge($this->toArray(), [ + 'camera' => $this->camera(), + 'location' => $this->location() + ]); + } +} diff --git a/kirby/src/Image/Focus.php b/kirby/src/Image/Focus.php new file mode 100644 index 0000000..da1dc73 --- /dev/null +++ b/kirby/src/Image/Focus.php @@ -0,0 +1,110 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Focus +{ + /** + * Generates crop coordinates based on focal point + */ + public static function coords( + string $crop, + int $sourceWidth, + int $sourceHeight, + int $width, + int $height + ): array|null { + [$x, $y] = static::parse($crop); + + // determine aspect ratios + $ratioSource = static::ratio($sourceWidth, $sourceHeight); + $ratioThumb = static::ratio($width, $height); + + // no cropping necessary + if ($ratioSource == $ratioThumb) { + return null; + } + + // defaults + $width = $sourceWidth; + $height = $sourceHeight; + + if ($ratioThumb > $ratioSource) { + $height = $sourceWidth / $ratioThumb; + } else { + $width = $sourceHeight * $ratioThumb; + } + + // calculate focus for original image + $x = $sourceWidth * $x; + $y = $sourceHeight * $y; + + $x1 = max(0, $x - $width / 2); + $y1 = max(0, $y - $height / 2); + + // off canvas? + if ($x1 + $width > $sourceWidth) { + $x1 = $sourceWidth - $width; + } + + if ($y1 + $height > $sourceHeight) { + $y1 = $sourceHeight - $height; + } + + return [ + 'x1' => (int)floor($x1), + 'y1' => (int)floor($y1), + 'x2' => (int)floor($x1 + $width), + 'y2' => (int)floor($y1 + $height), + 'width' => (int)floor($width), + 'height' => (int)floor($height), + ]; + } + + public static function isFocalPoint(string $value): bool + { + return Str::contains($value, '%') === true; + } + + /** + * Transforms the focal point's string value (from content field) + * to a [x, y] array (values 0.0-1.0) + */ + public static function parse(string $value): array + { + // support for former Focus plugin + if (Str::startsWith($value, '{') === true) { + $focus = json_decode($value); + return [$focus->x, $focus->y]; + } + + preg_match_all("/(\d{1,3}\.?\d*)[%|,|\s]*/", $value, $points); + + return A::map( + $points[1], + function ($point) { + $point = (float)$point; + $point = $point > 1 ? $point / 100 : $point; + return round($point, 3); + } + ); + } + + /** + * Calculates the image ratio + */ + public static function ratio(int $width, int $height): float + { + return $height !== 0 ? $width / $height : 0; + } +} diff --git a/kirby/src/Image/Image.php b/kirby/src/Image/Image.php new file mode 100644 index 0000000..5bc1b7f --- /dev/null +++ b/kirby/src/Image/Image.php @@ -0,0 +1,222 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Image extends File +{ + protected Exif|null $exif = null; + protected Dimensions|null $dimensions = null; + + public static array $resizableTypes = [ + 'jpg', + 'jpeg', + 'gif', + 'png', + 'webp' + ]; + + public static array $viewableTypes = [ + 'avif', + 'jpg', + 'jpeg', + 'gif', + 'png', + 'svg', + 'webp' + ]; + + /** + * Validation rules to be used for `::match()` + */ + public static array $validations = [ + 'maxsize' => ['size', 'max'], + 'minsize' => ['size', 'min'], + 'maxwidth' => ['width', 'max'], + 'minwidth' => ['width', 'min'], + 'maxheight' => ['height', 'max'], + 'minheight' => ['height', 'min'], + 'orientation' => ['orientation', 'same'] + ]; + + /** + * Returns the `` tag for the image object + */ + public function __toString(): string + { + return $this->html(); + } + + /** + * Returns the dimensions of the file if possible + */ + public function dimensions(): Dimensions + { + if ($this->dimensions !== null) { + return $this->dimensions; + } + + if (in_array($this->mime(), [ + 'image/jpeg', + 'image/jp2', + 'image/png', + 'image/gif', + 'image/webp' + ])) { + return $this->dimensions = Dimensions::forImage($this->root); + } + + if ($this->extension() === 'svg') { + return $this->dimensions = Dimensions::forSvg($this->root); + } + + return $this->dimensions = new Dimensions(0, 0); + } + + /** + * Returns the exif object for this file (if image) + */ + public function exif(): Exif + { + return $this->exif ??= new Exif($this); + } + + /** + * Returns the height of the asset + */ + public function height(): int + { + return $this->dimensions()->height(); + } + + /** + * Converts the file to html + */ + public function html(array $attr = []): string + { + // if no alt text explicitly provided, + // try to infer from model content file + if ( + $this->model !== null && + method_exists($this->model, 'content') === true && + $this->model->content() instanceof Content && + $this->model->content()->get('alt')->isNotEmpty() === true + ) { + $attr['alt'] ??= $this->model->content()->get('alt')->value(); + } + + if ($url = $this->url()) { + return Html::img($url, $attr); + } + + throw new LogicException('Calling Image::html() requires that the URL property is not null'); + } + + /** + * Returns the PHP imagesize array + */ + public function imagesize(): array + { + return getimagesize($this->root); + } + + /** + * Checks if the dimensions of the asset are portrait + */ + public function isPortrait(): bool + { + return $this->dimensions()->portrait(); + } + + /** + * Checks if the dimensions of the asset are landscape + */ + public function isLandscape(): bool + { + return $this->dimensions()->landscape(); + } + + /** + * Checks if the dimensions of the asset are square + */ + public function isSquare(): bool + { + return $this->dimensions()->square(); + } + + /** + * Checks if the file is a resizable image + */ + public function isResizable(): bool + { + return in_array($this->extension(), static::$resizableTypes) === true; + } + + /** + * Checks if a preview can be displayed for the file + * in the Panel or in the frontend + */ + public function isViewable(): bool + { + return in_array($this->extension(), static::$viewableTypes) === true; + } + + /** + * Returns the ratio of the asset + */ + public function ratio(): float + { + return $this->dimensions()->ratio(); + } + + /** + * Returns the orientation as string + * `landscape` | `portrait` | `square` + */ + public function orientation(): string|false + { + return $this->dimensions()->orientation(); + } + + /** + * Converts the object to an array + */ + public function toArray(): array + { + $array = array_merge(parent::toArray(), [ + 'dimensions' => $this->dimensions()->toArray(), + 'exif' => $this->exif()->toArray(), + ]); + + ksort($array); + + return $array; + } + + /** + * Returns the width of the asset + */ + public function width(): int + { + return $this->dimensions()->width(); + } +} diff --git a/kirby/src/Image/Location.php b/kirby/src/Image/Location.php new file mode 100644 index 0000000..0eddb68 --- /dev/null +++ b/kirby/src/Image/Location.php @@ -0,0 +1,116 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Location +{ + protected float|null $lat = null; + protected float|null $lng = null; + + /** + * Constructor + * + * @param array $exif The entire exif array + */ + public function __construct(array $exif) + { + if ( + isset($exif['GPSLatitude']) === true && + isset($exif['GPSLatitudeRef']) === true && + isset($exif['GPSLongitude']) === true && + isset($exif['GPSLongitudeRef']) === true + ) { + $this->lat = $this->gps( + $exif['GPSLatitude'], + $exif['GPSLatitudeRef'] + ); + $this->lng = $this->gps( + $exif['GPSLongitude'], + $exif['GPSLongitudeRef'] + ); + } + } + + /** + * Returns the latitude + */ + public function lat(): float|null + { + return $this->lat; + } + + /** + * Returns the longitude + */ + public function lng(): float|null + { + return $this->lng; + } + + /** + * Converts the gps coordinates + */ + protected function gps(array $coord, string $hemi): float + { + $degrees = count($coord) > 0 ? $this->num($coord[0]) : 0; + $minutes = count($coord) > 1 ? $this->num($coord[1]) : 0; + $seconds = count($coord) > 2 ? $this->num($coord[2]) : 0; + + $hemi = strtoupper($hemi); + $flip = ($hemi === 'W' || $hemi === 'S') ? -1 : 1; + + return $flip * ($degrees + $minutes / 60 + $seconds / 3600); + } + + /** + * Converts coordinates to floats + */ + protected function num(string $part): float + { + $parts = explode('/', $part); + + if (count($parts) === 1) { + return (float)$parts[0]; + } + + return (float)($parts[0]) / (float)($parts[1]); + } + + /** + * Converts the object into a nicely readable array + */ + public function toArray(): array + { + return [ + 'lat' => $this->lat(), + 'lng' => $this->lng() + ]; + } + + /** + * Echos the entire location as lat, lng + */ + public function __toString(): string + { + return trim($this->lat() . ', ' . $this->lng(), ','); + } + + /** + * Improved `var_dump` output + * @codeCoverageIgnore + */ + public function __debugInfo(): array + { + return $this->toArray(); + } +} diff --git a/kirby/src/Image/QrCode.php b/kirby/src/Image/QrCode.php new file mode 100644 index 0000000..b6599fb --- /dev/null +++ b/kirby/src/Image/QrCode.php @@ -0,0 +1,1603 @@ +, + * Lukas Bestle + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + * + * QR Code® is a registered trademark of DENSO WAVE INCORPORATED. + * + * The code of this class is based on: + * https://github.com/psyon/php-qrcode + * + * qrcode.php - Generate QR Codes. MIT license. + * + * Copyright for portions of this project are held by Kreative Software, 2016-2018. + * All other copyright for the project are held by Donald Becker, 2019 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +class QrCode +{ + public function __construct(public string $data) + { + } + + /** + * Returns the QR code as a PNG data URI + * + * @param int|null $size Image width/height in pixels, defaults to a size per module of 4x4 + * @param string $color Foreground color in hex format + * @param string $back Background color in hex format + */ + public function toDataUri( + int|null $size = null, + string $color = '#000000', + string $back = '#ffffff' + ): string { + $image = $this->toImage($size, $color, $back); + + ob_start(); + imagepng($image); + imagedestroy($image); + $data = ob_get_contents(); + ob_end_clean(); + + return 'data:image/png;base64,' . base64_encode($data); + } + + /** + * Returns the QR code as a GdImage object + * + * @param int|null $size Image width/height in pixels, defaults to a size per module of 4x4 + * @param string $color Foreground color in hex format + * @param string $back Background color in hex format + */ + public function toImage( + int|null $size = null, + string $color = '#000000', + string $back = '#ffffff' + ): GdImage { + // get code and size measurements + $code = $this->encode(); + [$width, $height] = $this->measure($code); + $size ??= ceil($width * 4); + $ws = $size / $width; + $hs = $size / $height; + + // create image baseplate + $image = imagecreatetruecolor($size, $size); + + $allocateColor = function (string $hex) use ($image) { + $hex = preg_replace('/[^0-9A-Fa-f]/', '', $hex); + $r = hexdec(substr($hex, 0, 2)); + $g = hexdec(substr($hex, 2, 2)); + $b = hexdec(substr($hex, 4, 2)); + return imagecolorallocate($image, $r, $g, $b); + }; + + $back = $allocateColor($back); + $color = $allocateColor($color); + imagefill($image, 0, 0, $back); + + // paint square for each module + $this->eachModuleGroup( + $code, + fn ($x, $y, $width, $height) => imagefilledrectangle( + $image, + floor($x * $ws), + floor($y * $hs), + floor($x * $ws + $ws * $width) - 1, + floor($y * $hs + $hs * $height) - 1, + $color + ) + ); + + return $image; + } + + /** + * Returns the QR code as `` element + * + * @param int|string|null $size Optional CSS width of the `` element + * @param string $color Foreground color in hex format + * @param string $back Background color in hex format + */ + public function toSvg( + int|string|null $size = null, + string $color = '#000000', + string $back = '#ffffff' + ): string { + $code = $this->encode(); + [$vbw, $vbh] = $this->measure($code); + + $modules = $this->eachModuleGroup( + $code, + fn ($x, $y, $width, $height) => 'M' . $x . ',' . $y . 'h' . $width . 'v' . $height . 'h-' . $width . 'z' + ); + + $size = $size ? ' style="width: ' . $size . '"' : ''; + + return '' . + '' . + '' . + ''; + } + + public function __toString(): string + { + return $this->toSvg(); + } + + /** + * Saves the QR code to a file. + * Supported formats: gif, jpg, jpeg, png, svg, webp + * + * @param string $file Path to the output file with one of the supported file extensions + * @param int|string|null $size Optional image width/height in pixels (defaults to a size per module of 4x4) or CSS width of the `` element + * @param string $color Foreground color in hex format + * @param string $back Background color in hex format + */ + public function write( + string $file, + int|string|null $size = null, + string $color = '#000000', + string $back = '#ffffff' + ): void { + $format = F::extension($file); + $args = [$size, $color, $back]; + + match ($format) { + 'gif' => imagegif($this->toImage(...$args), $file), + 'jpg', + 'jpeg' => imagejpeg($this->toImage(...$args), $file), + 'png' => imagepng($this->toImage(...$args), $file), + 'svg' => F::write($file, $this->toSvg(...$args)), + 'webp' => imagewebp($this->toImage(...$args), $file), + default => throw new InvalidArgumentException('Cannot write QR code as ' . $format) + }; + } + + protected function applyMask(array $matrix, int $size, int $mask): array + { + for ($i = 0; $i < $size; $i++) { + for ($j = 0; $j < $size; $j++) { + if ($matrix[$i][$j] >= 4 && $this->mask($mask, $i, $j)) { + $matrix[$i][$j] ^= 1; + } + } + } + + return $matrix; + } + + protected function applyBestMask(array $matrix, int $size): array + { + $mask = 0; + $mmatrix = $this->applyMask($matrix, $size, $mask); + $penalty = $this->penalty($mmatrix, $size); + + for ($tmask = 1; $tmask < 8; $tmask++) { + $tmatrix = $this->applyMask($matrix, $size, $tmask); + $tpenalty = $this->penalty($tmatrix, $size); + + if ($tpenalty < $penalty) { + $mask = $tmask; + $mmatrix = $tmatrix; + $penalty = $tpenalty; + } + } + + return [$mask, $mmatrix]; + } + + protected function createMatrix(int $version, array $data): array + { + $size = $version * 4 + 17; + $matrix = []; + $row = array_fill(0, $size, 0); + + for ($i = 0; $i < $size; $i++) { + $matrix[] = $row; + } + + // finder patterns + for ($i = 0; $i < 8; $i++) { + for ($j = 0; $j < 8; $j++) { + $m = (($i == 7 || $j == 7) ? 2 : + (($i == 0 || $j == 0 || $i == 6 || $j == 6) ? 3 : + (($i == 1 || $j == 1 || $i == 5 || $j == 5) ? 2 : 3))); + $matrix[$i][$j] = $m; + $matrix[$size - $i - 1][$j] = $m; + $matrix[$i][$size - $j - 1] = $m; + } + } + + // alignment patterns + if ($version >= 2) { + $alignment = static::ALIGNMENT_PATTERNS[$version - 2]; + + foreach ($alignment as $i) { + foreach ($alignment as $j) { + if (!$matrix[$i][$j]) { + for ($ii = -2; $ii <= 2; $ii++) { + for ($jj = -2; $jj <= 2; $jj++) { + $m = (max(abs($ii), abs($jj)) & 1) ^ 3; + $matrix[$i + $ii][$j + $jj] = $m; + } + } + } + } + } + } + + // timing patterns + for ($i = $size - 9; $i >= 8; $i--) { + $matrix[$i][6] = ($i & 1) ^ 3; + $matrix[6][$i] = ($i & 1) ^ 3; + } + + // dark module – such an ominous name for such an innocuous thing + $matrix[$size - 8][8] = 3; + + // format information area + for ($i = 0; $i <= 8; $i++) { + if (!$matrix[$i][8]) { + $matrix[$i][8] = 1; + } + if (!$matrix[8][$i]) { + $matrix[8][$i] = 1; + } + if ($i && !$matrix[$size - $i][8]) { + $matrix[$size - $i][8] = 1; + } + if ($i && !$matrix[8][$size - $i]) { + $matrix[8][$size - $i] = 1; + } + } + + // version information area + if ($version >= 7) { + for ($i = 9; $i < 12; $i++) { + for ($j = 0; $j < 6; $j++) { + $matrix[$size - $i][$j] = 1; + $matrix[$j][$size - $i] = 1; + } + } + } + + // data + $col = $size - 1; + $row = $size - 1; + $dir = -1; + $offset = 0; + $length = count($data); + + while ($col > 0 && $offset < $length) { + if (!$matrix[$row][$col]) { + $matrix[$row][$col] = $data[$offset] ? 5 : 4; + $offset++; + } + if (!$matrix[$row][$col - 1]) { + $matrix[$row][$col - 1] = $data[$offset] ? 5 : 4; + $offset++; + } + $row += $dir; + if ($row < 0 || $row >= $size) { + $dir = -$dir; + $row += $dir; + $col -= 2; + + if ($col == 6) { + $col--; + } + } + } + + return [$size, $matrix]; + } + + /** + * Loops over every row and column, finds all modules that can + * be grouped as rectangle (starting at the top left corner) + * and applies the given action to each active module group + */ + protected function eachModuleGroup(array $code, Closure $action): array + { + $result = []; + $xStart = $code['q'][3]; + $yStart = $code['q'][0]; + + // generate empty matrix to track what modules have been covered + $covered = array_fill(0, count($code['bits']), array_fill(0, count($code['bits'][0]), 0)); + + foreach ($code['bits'] as $by => $row) { + foreach ($row as $bx => $module) { + // skip if module is inactive or already covered + if ($module === 0 || $covered[$by][$bx] === 1) { + continue; + } + + $width = 0; + $height = 0; + + $rowLength = count($row); + $colLength = count($code['bits']); + + // extend to the right as long as the modules are active + // and use this to determine the width of the group + for ($x = $bx; $x < $rowLength; $x++) { + if ($row[$x] === 0) { + break; + } + $width++; + $covered[$by][$x] = 1; + } + + // extend downwards as long as all the modules + // at the same width range are active; + // use this to determine the height of the group + for ($y = $by; $y < $colLength; $y++) { + $below = array_slice($code['bits'][$y], $bx, $width); + + // if the sum is less than the width, + // there is at least one inactive module + if (array_sum($below) < $width) { + break; + } + + $height++; + + for ($x = $bx; $x < $bx + $width; $x++) { + $covered[$y][$x] = 1; + } + } + + $result[] = $action( + $xStart + $bx, + $yStart + $by, + $width, + $height + ); + } + } + + return $result; + } + + protected function encode(): array + { + [$data, $version, $ecl, $ec] = $this->encodeData(); + $data = $this->encodeErrorCorrection($data, $ec, $version); + [$size, $mtx] = $this->createMatrix($version, $data); + [$mask, $mtx] = $this->applyBestMask($mtx, $size); + $mtx = $this->finalizeMatrix($mtx, $size, $ecl, $mask, $version); + + return [ + 'q' => [4, 4, 4, 4], + 'size' => [$size, $size], + 'bits' => $mtx + ]; + } + + protected function encodeData(): array + { + $mode = $this->mode(); + [$version, $ecl] = $this->version($mode); + + $group = match (true) { + $version >= 27 => 2, + $version >= 10 => 1, + default => 0 + }; + + $ec = static::EC_PARAMS[($version - 1) * 4 + $ecl]; + + // don't cut off mid-character if exceeding capacity + $max_chars = static::CAPACITY[$version - 1][$ecl][$mode]; + + if ($mode == 3) { + $max_chars <<= 1; + } + + $data = substr($this->data, 0, $max_chars); + + // convert from character level to bit level + $code = match ($mode) { + 0 => $this->encodeNumeric($data, $group), + 1 => $this->encodeAlphanum($data, $group), + 2 => $this->encodeBinary($data, $group), + default => throw new LogicException('Invalid QR mode') // @codeCoverageIgnore + }; + + $code = array_merge($code, array_fill(0, 4, 0)); + + if ($remainder = count($code) % 8) { + $code = array_merge($code, array_fill(0, 8 - $remainder, 0)); + } + + // convert from bit level to byte level + $data = []; + + for ($i = 0, $n = count($code); $i < $n; $i += 8) { + $byte = 0; + + if ($code[$i + 0]) { + $byte |= 0x80; + } + if ($code[$i + 1]) { + $byte |= 0x40; + } + if ($code[$i + 2]) { + $byte |= 0x20; + } + if ($code[$i + 3]) { + $byte |= 0x10; + } + if ($code[$i + 4]) { + $byte |= 0x08; + } + if ($code[$i + 5]) { + $byte |= 0x04; + } + if ($code[$i + 6]) { + $byte |= 0x02; + } + if ($code[$i + 7]) { + $byte |= 0x01; + } + + $data[] = $byte; + } + + for ( + $i = count($data), + $a = 1, + $n = $ec[0]; + $i < $n; + $i++, + $a ^= 1 + ) { + $data[] = $a ? 236 : 17; + } + + return [ + $data, + $version, + $ecl, + $ec + ]; + } + + protected function encodeNumeric($data, $version_group): array + { + $code = [0, 0, 0, 1]; + $length = strlen($data); + + switch ($version_group) { + case 2: // 27 - 40 + $code[] = $length & 0x2000; + $code[] = $length & 0x1000; + // no break + case 1: // 10 - 26 + $code[] = $length & 0x0800; + $code[] = $length & 0x0400; + // no break + case 0: // 1 - 9 + $code[] = $length & 0x0200; + $code[] = $length & 0x0100; + $code[] = $length & 0x0080; + $code[] = $length & 0x0040; + $code[] = $length & 0x0020; + $code[] = $length & 0x0010; + $code[] = $length & 0x0008; + $code[] = $length & 0x0004; + $code[] = $length & 0x0002; + $code[] = $length & 0x0001; + } + for ($i = 0; $i < $length; $i += 3) { + $group = substr($data, $i, 3); + switch (strlen($group)) { + case 3: + $code[] = $group & 0x200; + $code[] = $group & 0x100; + $code[] = $group & 0x080; + // no break + case 2: + $code[] = $group & 0x040; + $code[] = $group & 0x020; + $code[] = $group & 0x010; + // no break + case 1: + $code[] = $group & 0x008; + $code[] = $group & 0x004; + $code[] = $group & 0x002; + $code[] = $group & 0x001; + } + } + return $code; + } + + protected function encodeAlphanum($data, $version_group): array + { + $alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'; + $code = [0, 0, 1, 0]; + $length = strlen($data); + switch ($version_group) { + case 2: // 27 - 40 + $code[] = $length & 0x1000; + $code[] = $length & 0x0800; + // no break + case 1: // 10 - 26 + $code[] = $length & 0x0400; + $code[] = $length & 0x0200; + // no break + case 0: // 1 - 9 + $code[] = $length & 0x0100; + $code[] = $length & 0x0080; + $code[] = $length & 0x0040; + $code[] = $length & 0x0020; + $code[] = $length & 0x0010; + $code[] = $length & 0x0008; + $code[] = $length & 0x0004; + $code[] = $length & 0x0002; + $code[] = $length & 0x0001; + } + for ($i = 0; $i < $length; $i += 2) { + $group = substr($data, $i, 2); + if (strlen($group) > 1) { + $c1 = strpos($alphabet, substr($group, 0, 1)); + $c2 = strpos($alphabet, substr($group, 1, 1)); + $ch = $c1 * 45 + $c2; + $code[] = $ch & 0x400; + $code[] = $ch & 0x200; + $code[] = $ch & 0x100; + $code[] = $ch & 0x080; + $code[] = $ch & 0x040; + $code[] = $ch & 0x020; + $code[] = $ch & 0x010; + $code[] = $ch & 0x008; + $code[] = $ch & 0x004; + $code[] = $ch & 0x002; + $code[] = $ch & 0x001; + } else { + $ch = strpos($alphabet, $group); + $code[] = $ch & 0x020; + $code[] = $ch & 0x010; + $code[] = $ch & 0x008; + $code[] = $ch & 0x004; + $code[] = $ch & 0x002; + $code[] = $ch & 0x001; + } + } + return $code; + } + + protected function encodeBinary(string $data, int $version_group): array + { + $code = [0, 1, 0, 0]; + $length = strlen($data); + + switch ($version_group) { + case 2: // 27 - 40 + case 1: // 10 - 26 + $code[] = $length & 0x8000; + $code[] = $length & 0x4000; + $code[] = $length & 0x2000; + $code[] = $length & 0x1000; + $code[] = $length & 0x0800; + $code[] = $length & 0x0400; + $code[] = $length & 0x0200; + $code[] = $length & 0x0100; + // no break + case 0: // 1 - 9 + $code[] = $length & 0x0080; + $code[] = $length & 0x0040; + $code[] = $length & 0x0020; + $code[] = $length & 0x0010; + $code[] = $length & 0x0008; + $code[] = $length & 0x0004; + $code[] = $length & 0x0002; + $code[] = $length & 0x0001; + } + + for ($i = 0; $i < $length; $i++) { + $ch = ord(substr($data, $i, 1)); + $code[] = $ch & 0x80; + $code[] = $ch & 0x40; + $code[] = $ch & 0x20; + $code[] = $ch & 0x10; + $code[] = $ch & 0x08; + $code[] = $ch & 0x04; + $code[] = $ch & 0x02; + $code[] = $ch & 0x01; + } + + return $code; + } + + protected function encodeErrorCorrection( + array $data, + array $ec_params, + int $version + ): array { + $blocks = $this->errorCorrectionSplit($data, $ec_params); + $ec_blocks = []; + + for ($i = 0, $n = count($blocks); $i < $n; $i++) { + $ec_blocks[] = $this->errorCorrectionDivide($blocks[$i], $ec_params); + } + + $data = $this->errorCorrectionInterleave($blocks); + $ec_data = $this->errorCorrectionInterleave($ec_blocks); + $code = []; + + foreach ($data as $ch) { + $code[] = $ch & 0x80; + $code[] = $ch & 0x40; + $code[] = $ch & 0x20; + $code[] = $ch & 0x10; + $code[] = $ch & 0x08; + $code[] = $ch & 0x04; + $code[] = $ch & 0x02; + $code[] = $ch & 0x01; + } + foreach ($ec_data as $ch) { + $code[] = $ch & 0x80; + $code[] = $ch & 0x40; + $code[] = $ch & 0x20; + $code[] = $ch & 0x10; + $code[] = $ch & 0x08; + $code[] = $ch & 0x04; + $code[] = $ch & 0x02; + $code[] = $ch & 0x01; + } + for ($n = static::REMAINER_BITS[$version - 1]; $n > 0; $n--) { + $code[] = 0; + } + + return $code; + } + + protected function errorCorrectionSplit(array $data, array $ec): array + { + $blocks = []; + $offset = 0; + + for ($i = $ec[2], $length = $ec[3]; $i > 0; $i--) { + $blocks[] = array_slice($data, $offset, $length); + $offset += $length; + } + for ($i = $ec[4], $length = $ec[5]; $i > 0; $i--) { + $blocks[] = array_slice($data, $offset, $length); + $offset += $length; + } + + return $blocks; + } + + protected function errorCorrectionDivide(array $data, array $ec): array + { + $num_data = count($data); + $num_error = $ec[1]; + $generator = static::EC_POLYNOMIALS[$num_error]; + $message = $data; + + for ($i = 0; $i < $num_error; $i++) { + $message[] = 0; + } + + for ($i = 0; $i < $num_data; $i++) { + if ($message[$i]) { + $leadterm = static::LOG[$message[$i]]; + + for ($j = 0; $j <= $num_error; $j++) { + $term = ($generator[$j] + $leadterm) % 255; + $message[$i + $j] ^= static::EXP[$term]; + } + } + } + + return array_slice($message, $num_data, $num_error); + } + + protected function errorCorrectionInterleave(array $blocks): array + { + $data = []; + $num_blocks = count($blocks); + + for ($offset = 0; true; $offset++) { + $break = true; + + for ($i = 0; $i < $num_blocks; $i++) { + if (isset($blocks[$i][$offset]) === true) { + $data[] = $blocks[$i][$offset]; + $break = false; + } + } + + if ($break) { + break; + } + } + + return $data; + } + + protected function finalizeMatrix( + array $matrix, + int $size, + int $ecl, + int $mask, + int $version + ): array { + // Format info + $format = static::FORMAT_INFO[$ecl * 8 + $mask]; + $matrix[8][0] = $format[0]; + $matrix[8][1] = $format[1]; + $matrix[8][2] = $format[2]; + $matrix[8][3] = $format[3]; + $matrix[8][4] = $format[4]; + $matrix[8][5] = $format[5]; + $matrix[8][7] = $format[6]; + $matrix[8][8] = $format[7]; + $matrix[7][8] = $format[8]; + $matrix[5][8] = $format[9]; + $matrix[4][8] = $format[10]; + $matrix[3][8] = $format[11]; + $matrix[2][8] = $format[12]; + $matrix[1][8] = $format[13]; + $matrix[0][8] = $format[14]; + $matrix[$size - 1][8] = $format[0]; + $matrix[$size - 2][8] = $format[1]; + $matrix[$size - 3][8] = $format[2]; + $matrix[$size - 4][8] = $format[3]; + $matrix[$size - 5][8] = $format[4]; + $matrix[$size - 6][8] = $format[5]; + $matrix[$size - 7][8] = $format[6]; + $matrix[8][$size - 8] = $format[7]; + $matrix[8][$size - 7] = $format[8]; + $matrix[8][$size - 6] = $format[9]; + $matrix[8][$size - 5] = $format[10]; + $matrix[8][$size - 4] = $format[11]; + $matrix[8][$size - 3] = $format[12]; + $matrix[8][$size - 2] = $format[13]; + $matrix[8][$size - 1] = $format[14]; + + // version info + if ($version >= 7) { + $version = static::VERSION_INFO[$version - 7]; + + for ($i = 0; $i < 18; $i++) { + $r = $size - 9 - ($i % 3); + $c = 5 - floor($i / 3); + $matrix[$r][$c] = $version[$i]; + $matrix[$c][$r] = $version[$i]; + } + } + + // patterns and data + for ($i = 0; $i < $size; $i++) { + for ($j = 0; $j < $size; $j++) { + $matrix[$i][$j] &= 1; + } + } + + return $matrix; + } + + protected function mask(int $mask, int $row, int $column): int + { + return match ($mask) { + 0 => !(($row + $column) % 2), + 1 => !($row % 2), + 2 => !($column % 3), + 3 => !(($row + $column) % 3), + 4 => !((floor($row / 2) + floor($column / 3)) % 2), + 5 => !(((($row * $column) % 2) + (($row * $column) % 3))), + 6 => !(((($row * $column) % 2) + (($row * $column) % 3)) % 2), + 7 => !(((($row + $column) % 2) + (($row * $column) % 3)) % 2), + default => throw new LogicException('Invalid QR mask') // @codeCoverageIgnore + }; + } + + /** + * Returns width and height based on the + * generated modules and quiet zone + */ + protected function measure($code): array + { + return [ + $code['q'][3] + $code['size'][0] + $code['q'][1], + $code['q'][0] + $code['size'][1] + $code['q'][2] + ]; + } + + /** + * Detect what encoding mode (numeric, alphanumeric, binary) + * can be used + */ + protected function mode(): int + { + // numeric + if (preg_match('/^[0-9]*$/', $this->data)) { + return 0; + } + + // alphanumeric + if (preg_match('/^[0-9A-Z .\/:$%*+-]*$/', $this->data)) { + return 1; + } + + return 2; + } + + protected function penalty(array &$matrix, int $size): int + { + $score = $this->penalty1($matrix, $size); + $score += $this->penalty2($matrix, $size); + $score += $this->penalty3($matrix, $size); + $score += $this->penalty4($matrix, $size); + return $score; + } + + protected function penalty1(array &$matrix, int $size): int + { + $score = 0; + + for ($i = 0; $i < $size; $i++) { + $rowvalue = 0; + $rowcount = 0; + $colvalue = 0; + $colcount = 0; + + for ($j = 0; $j < $size; $j++) { + $rv = ($matrix[$i][$j] == 5 || $matrix[$i][$j] == 3) ? 1 : 0; + $cv = ($matrix[$j][$i] == 5 || $matrix[$j][$i] == 3) ? 1 : 0; + + if ($rv == $rowvalue) { + $rowcount++; + } else { + if ($rowcount >= 5) { + $score += $rowcount - 2; + } + $rowvalue = $rv; + $rowcount = 1; + } + + if ($cv == $colvalue) { + $colcount++; + } else { + if ($colcount >= 5) { + $score += $colcount - 2; + } + $colvalue = $cv; + $colcount = 1; + } + } + + if ($rowcount >= 5) { + $score += $rowcount - 2; + } + if ($colcount >= 5) { + $score += $colcount - 2; + } + } + + return $score; + } + + protected function penalty2(array &$matrix, int $size): int + { + $score = 0; + + for ($i = 1; $i < $size; $i++) { + for ($j = 1; $j < $size; $j++) { + $v1 = $matrix[$i - 1][$j - 1]; + $v2 = $matrix[$i - 1][$j ]; + $v3 = $matrix[$i ][$j - 1]; + $v4 = $matrix[$i ][$j ]; + $v1 = ($v1 == 5 || $v1 == 3) ? 1 : 0; + $v2 = ($v2 == 5 || $v2 == 3) ? 1 : 0; + $v3 = ($v3 == 5 || $v3 == 3) ? 1 : 0; + $v4 = ($v4 == 5 || $v4 == 3) ? 1 : 0; + + if ($v1 == $v2 && $v2 == $v3 && $v3 == $v4) { + $score += 3; + } + } + } + + return $score; + } + + protected function penalty3(array &$matrix, int $size): int + { + $score = 0; + + for ($i = 0; $i < $size; $i++) { + $rowvalue = 0; + $colvalue = 0; + + for ($j = 0; $j < 11; $j++) { + $rv = ($matrix[$i][$j] == 5 || $matrix[$i][$j] == 3) ? 1 : 0; + $cv = ($matrix[$j][$i] == 5 || $matrix[$j][$i] == 3) ? 1 : 0; + $rowvalue = (($rowvalue << 1) & 0x7FF) | $rv; + $colvalue = (($colvalue << 1) & 0x7FF) | $cv; + } + + if ($rowvalue == 0x5D0 || $rowvalue == 0x5D) { + $score += 40; + } + if ($colvalue == 0x5D0 || $colvalue == 0x5D) { + $score += 40; + } + + for ($j = 11; $j < $size; $j++) { + $rv = ($matrix[$i][$j] == 5 || $matrix[$i][$j] == 3) ? 1 : 0; + $cv = ($matrix[$j][$i] == 5 || $matrix[$j][$i] == 3) ? 1 : 0; + $rowvalue = (($rowvalue << 1) & 0x7FF) | $rv; + $colvalue = (($colvalue << 1) & 0x7FF) | $cv; + + if ($rowvalue == 0x5D0 || $rowvalue == 0x5D) { + $score += 40; + } + + if ($colvalue == 0x5D0 || $colvalue == 0x5D) { + $score += 40; + } + } + } + + return $score; + } + + protected function penalty4(array &$matrix, int $size): int + { + $dark = 0; + + for ($i = 0; $i < $size; $i++) { + for ($j = 0; $j < $size; $j++) { + if ($matrix[$i][$j] == 5 || $matrix[$i][$j] == 3) { + $dark++; + } + } + } + + $dark *= 20; + $dark /= $size * $size; + $a = abs(floor($dark) - 10); + $b = abs(ceil($dark) - 10); + return min($a, $b) * 10; + } + + /** + * Detect what version needs to be used by + * trying to maximize the error correction level + */ + protected function version(int $mode): array + { + $length = strlen($this->data); + + if ($mode == 3) { + $length >>= 1; + } + + $ecl = 0; + + // first try to find the minimum version + // that can contain the data + for ($version = 1; $version <= 40; $version++) { + if ($length <= static::CAPACITY[$version - 1][$ecl][$mode]) { + break; + } + } + + // with the version in place, try to raise + // the error correction level as long as + // the data still fits + for ($newEcl = 1; $newEcl <= 3; $newEcl++) { + if ($length <= static::CAPACITY[$version - 1][$newEcl][$mode]) { + $ecl = $newEcl; + } + } + + return [$version, $ecl]; + } + + /** + * maximum encodable characters = $qr_capacity [ (version - 1) ] + * [ (0 for L, 1 for M, 2 for Q, 3 for H) ] + * [ (0 for numeric, 1 for alpha, 2 for binary) ] + */ + protected const CAPACITY = [ + [ + [ 41, 25, 17], + [ 34, 20, 14], + [ 27, 16, 11], + [ 17, 10, 7] + ], + [ + [ 77, 47, 32], + [ 63, 38, 26], + [ 48, 29, 20], + [ 34, 20, 14] + ], + [ + [ 127, 77, 53], + [ 101, 61, 42], + [ 77, 47, 32], + [ 58, 35, 24] + ], + [ + [ 187, 114, 78], + [ 149, 90, 62], + [ 111, 67, 46], + [ 82, 50, 34] + ], + [ + [ 255, 154, 106], + [ 202, 122, 84], + [ 144, 87, 60], + [ 106, 64, 44] + ], + [ + [ 322, 195, 134], + [ 255, 154, 106], + [ 178, 108, 74], + [ 139, 84, 58] + ], + [ + [ 370, 224, 154], + [ 293, 178, 122], + [ 207, 125, 86], + [ 154, 93, 64] + ], + [ + [ 461, 279, 192], + [ 365, 221, 152], + [ 259, 157, 108], + [ 202, 122, 84] + ], + [ + [ 552, 335, 230], + [ 432, 262, 180], + [ 312, 189, 130], + [ 235, 143, 98]], + [ + [ 652, 395, 271], + [ 513, 311, 213], + [ 364, 221, 151], + [ 288, 174, 119] + ], + [ + [ 772, 468, 321], + [ 604, 366, 251], + [ 427, 259, 177], + [ 331, 200, 137] + ], + [ + [ 883, 535, 367], + [ 691, 419, 287], + [ 489, 296, 203], + [ 374, 227, 155] + ], + [ + [1022, 619, 425], + [ 796, 483, 331], + [ 580, 352, 241], + [ 427, 259, 177] + ], + [ + [1101, 667, 458], + [ 871, 528, 362], + [ 621, 376, 258], + [ 468, 283, 194] + ], + [ + [1250, 758, 520], + [ 991, 600, 412], + [ 703, 426, 292], + [ 530, 321, 220] + ], + [ + [1408, 854, 586], + [1082, 656, 450], + [ 775, 470, 322], + [ 602, 365, 250] + ], + [ + [1548, 938, 644], + [1212, 734, 504], + [ 876, 531, 364], + [ 674, 408, 280] + ], + [ + [1725, 1046, 718], + [1346, 816, 560], + [ 948, 574, 394], + [ 746, 452, 310] + ], + [ + [1903, 1153, 792], + [1500, 909, 624], + [1063, 644, 442], + [ 813, 493, 338] + ], + [ + [2061, 1249, 858], + [1600, 970, 666], + [1159, 702, 482], + [ 919, 557, 382] + ], + [ + [2232, 1352, 929], + [1708, 1035, 711], + [1224, 742, 509], + [ 969, 587, 403] + ], + [ + [2409, 1460, 1003], + [1872, 1134, 779], + [1358, 823, 565], + [1056, 640, 439] + ], + [ + [2620, 1588, 1091], + [2059, 1248, 857], + [1468, 890, 611], + [1108, 672, 461] + ], + [ + [2812, 1704, 1171], + [2188, 1326, 911], + [1588, 963, 661], + [1228, 744, 511] + ], + [ + [3057, 1853, 1273], + [2395, 1451, 997], + [1718, 1041, 715], + [1286, 779, 535] + ], + [ + [3283, 1990, 1367], + [2544, 1542, 1059], + [1804, 1094, 751], + [1425, 864, 593] + ], + [ + [3517, 2132, 1465], + [2701, 1637, 1125], + [1933, 1172, 805], + [1501, 910, 625] + ], + [ + [3669, 2223, 1528], + [2857, 1732, 1190], + [2085, 1263, 868], + [1581, 958, 658] + ], + [ + [3909, 2369, 1628], + [3035, 1839, 1264], + [2181, 1322, 908], + [1677, 1016, 698] + ], + [ + [4158, 2520, 1732], + [3289, 1994, 1370], + [2358, 1429, 982], + [1782, 1080, 742] + ], + [ + [4417, 2677, 1840], + [3486, 2113, 1452], + [2473, 1499, 1030], + [1897, 1150, 790] + ], + [ + [4686, 2840, 1952], + [3693, 2238, 1538], + [2670, 1618, 1112], + [2022, 1226, 842] + ], + [ + [4965, 3009, 2068], + [3909, 2369, 1628], + [2805, 1700, 1168], + [2157, 1307, 898] + ], + [ + [5253, 3183, 2188], + [4134, 2506, 1722], + [2949, 1787, 1228], + [2301, 1394, 958] + ], + [ + [5529, 3351, 2303], + [4343, 2632, 1809], + [3081, 1867, 1283], + [2361, 1431, 983] + ], + [ + [5836, 3537, 2431], + [4588, 2780, 1911], + [3244, 1966, 1351], + [2524, 1530, 1051] + ], + [ + [6153, 3729, 2563], + [4775, 2894, 1989], + [3417, 2071, 1423], + [2625, 1591, 1093] + ], + [ + [6479, 3927, 2699], + [5039, 3054, 2099], + [3599, 2181, 1499], + [2735, 1658, 1139] + ], + [ + [6743, 4087, 2809], + [5313, 3220, 2213], + [3791, 2298, 1579], + [2927, 1774, 1219] + ], + [ + [7089, 4296, 2953], + [5596, 3391, 2331], + [3993, 2420, 1663], + [3057, 1852, 1273] + ], + ]; + + /** + * $qr_ec_params[ + * 4 * (version - 1) + (0 for L, 1 for M, 2 for Q, 3 for H) + * ] = [ + * total number of data codewords, + * number of error correction codewords per block, + * number of blocks in first group, + * number of data codewords per block in first group, + * number of blocks in second group, + * number of data codewords per block in second group + * ); + */ + protected const EC_PARAMS = [ + [ 19, 7, 1, 19, 0, 0], + [ 16, 10, 1, 16, 0, 0], + [ 13, 13, 1, 13, 0, 0], + [ 9, 17, 1, 9, 0, 0], + [ 34, 10, 1, 34, 0, 0], + [ 28, 16, 1, 28, 0, 0], + [ 22, 22, 1, 22, 0, 0], + [ 16, 28, 1, 16, 0, 0], + [ 55, 15, 1, 55, 0, 0], + [ 44, 26, 1, 44, 0, 0], + [ 34, 18, 2, 17, 0, 0], + [ 26, 22, 2, 13, 0, 0], + [ 80, 20, 1, 80, 0, 0], + [ 64, 18, 2, 32, 0, 0], + [ 48, 26, 2, 24, 0, 0], + [ 36, 16, 4, 9, 0, 0], + [ 108, 26, 1, 108, 0, 0], + [ 86, 24, 2, 43, 0, 0], + [ 62, 18, 2, 15, 2, 16], + [ 46, 22, 2, 11, 2, 12], + [ 136, 18, 2, 68, 0, 0], + [ 108, 16, 4, 27, 0, 0], + [ 76, 24, 4, 19, 0, 0], + [ 60, 28, 4, 15, 0, 0], + [ 156, 20, 2, 78, 0, 0], + [ 124, 18, 4, 31, 0, 0], + [ 88, 18, 2, 14, 4, 15], + [ 66, 26, 4, 13, 1, 14], + [ 194, 24, 2, 97, 0, 0], + [ 154, 22, 2, 38, 2, 39], + [ 110, 22, 4, 18, 2, 19], + [ 86, 26, 4, 14, 2, 15], + [ 232, 30, 2, 116, 0, 0], + [ 182, 22, 3, 36, 2, 37], + [ 132, 20, 4, 16, 4, 17], + [ 100, 24, 4, 12, 4, 13], + [ 274, 18, 2, 68, 2, 69], + [ 216, 26, 4, 43, 1, 44], + [ 154, 24, 6, 19, 2, 20], + [ 122, 28, 6, 15, 2, 16], + [ 324, 20, 4, 81, 0, 0], + [ 254, 30, 1, 50, 4, 51], + [ 180, 28, 4, 22, 4, 23], + [ 140, 24, 3, 12, 8, 13], + [ 370, 24, 2, 92, 2, 93], + [ 290, 22, 6, 36, 2, 37], + [ 206, 26, 4, 20, 6, 21], + [ 158, 28, 7, 14, 4, 15], + [ 428, 26, 4, 107, 0, 0], + [ 334, 22, 8, 37, 1, 38], + [ 244, 24, 8, 20, 4, 21], + [ 180, 22, 12, 11, 4, 12], + [ 461, 30, 3, 115, 1, 116], + [ 365, 24, 4, 40, 5, 41], + [ 261, 20, 11, 16, 5, 17], + [ 197, 24, 11, 12, 5, 13], + [ 523, 22, 5, 87, 1, 88], + [ 415, 24, 5, 41, 5, 42], + [ 295, 30, 5, 24, 7, 25], + [ 223, 24, 11, 12, 7, 13], + [ 589, 24, 5, 98, 1, 99], + [ 453, 28, 7, 45, 3, 46], + [ 325, 24, 15, 19, 2, 20], + [ 253, 30, 3, 15, 13, 16], + [ 647, 28, 1, 107, 5, 108], + [ 507, 28, 10, 46, 1, 47], + [ 367, 28, 1, 22, 15, 23], + [ 283, 28, 2, 14, 17, 15], + [ 721, 30, 5, 120, 1, 121], + [ 563, 26, 9, 43, 4, 44], + [ 397, 28, 17, 22, 1, 23], + [ 313, 28, 2, 14, 19, 15], + [ 795, 28, 3, 113, 4, 114], + [ 627, 26, 3, 44, 11, 45], + [ 445, 26, 17, 21, 4, 22], + [ 341, 26, 9, 13, 16, 14], + [ 861, 28, 3, 107, 5, 108], + [ 669, 26, 3, 41, 13, 42], + [ 485, 30, 15, 24, 5, 25], + [ 385, 28, 15, 15, 10, 16], + [ 932, 28, 4, 116, 4, 117], + [ 714, 26, 17, 42, 0, 0], + [ 512, 28, 17, 22, 6, 23], + [ 406, 30, 19, 16, 6, 17], + [1006, 28, 2, 111, 7, 112], + [ 782, 28, 17, 46, 0, 0], + [ 568, 30, 7, 24, 16, 25], + [ 442, 24, 34, 13, 0, 0], + [1094, 30, 4, 121, 5, 122], + [ 860, 28, 4, 47, 14, 48], + [ 614, 30, 11, 24, 14, 25], + [ 464, 30, 16, 15, 14, 16], + [1174, 30, 6, 117, 4, 118], + [ 914, 28, 6, 45, 14, 46], + [ 664, 30, 11, 24, 16, 25], + [ 514, 30, 30, 16, 2, 17], + [1276, 26, 8, 106, 4, 107], + [1000, 28, 8, 47, 13, 48], + [ 718, 30, 7, 24, 22, 25], + [ 538, 30, 22, 15, 13, 16], + [1370, 28, 10, 114, 2, 115], + [1062, 28, 19, 46, 4, 47], + [ 754, 28, 28, 22, 6, 23], + [ 596, 30, 33, 16, 4, 17], + [1468, 30, 8, 122, 4, 123], + [1128, 28, 22, 45, 3, 46], + [ 808, 30, 8, 23, 26, 24], + [ 628, 30, 12, 15, 28, 16], + [1531, 30, 3, 117, 10, 118], + [1193, 28, 3, 45, 23, 46], + [ 871, 30, 4, 24, 31, 25], + [ 661, 30, 11, 15, 31, 16], + [1631, 30, 7, 116, 7, 117], + [1267, 28, 21, 45, 7, 46], + [ 911, 30, 1, 23, 37, 24], + [ 701, 30, 19, 15, 26, 16], + [1735, 30, 5, 115, 10, 116], + [1373, 28, 19, 47, 10, 48], + [ 985, 30, 15, 24, 25, 25], + [ 745, 30, 23, 15, 25, 16], + [1843, 30, 13, 115, 3, 116], + [1455, 28, 2, 46, 29, 47], + [1033, 30, 42, 24, 1, 25], + [ 793, 30, 23, 15, 28, 16], + [1955, 30, 17, 115, 0, 0], + [1541, 28, 10, 46, 23, 47], + [1115, 30, 10, 24, 35, 25], + [ 845, 30, 19, 15, 35, 16], + [2071, 30, 17, 115, 1, 116], + [1631, 28, 14, 46, 21, 47], + [1171, 30, 29, 24, 19, 25], + [ 901, 30, 11, 15, 46, 16], + [2191, 30, 13, 115, 6, 116], + [1725, 28, 14, 46, 23, 47], + [1231, 30, 44, 24, 7, 25], + [ 961, 30, 59, 16, 1, 17], + [2306, 30, 12, 121, 7, 122], + [1812, 28, 12, 47, 26, 48], + [1286, 30, 39, 24, 14, 25], + [ 986, 30, 22, 15, 41, 16], + [2434, 30, 6, 121, 14, 122], + [1914, 28, 6, 47, 34, 48], + [1354, 30, 46, 24, 10, 25], + [1054, 30, 2, 15, 64, 16], + [2566, 30, 17, 122, 4, 123], + [1992, 28, 29, 46, 14, 47], + [1426, 30, 49, 24, 10, 25], + [1096, 30, 24, 15, 46, 16], + [2702, 30, 4, 122, 18, 123], + [2102, 28, 13, 46, 32, 47], + [1502, 30, 48, 24, 14, 25], + [1142, 30, 42, 15, 32, 16], + [2812, 30, 20, 117, 4, 118], + [2216, 28, 40, 47, 7, 48], + [1582, 30, 43, 24, 22, 25], + [1222, 30, 10, 15, 67, 16], + [2956, 30, 19, 118, 6, 119], + [2334, 28, 18, 47, 31, 48], + [1666, 30, 34, 24, 34, 25], + [1276, 30, 20, 15, 61, 16], + ]; + + protected const EC_POLYNOMIALS = [ + 7 => [0, 87, 229, 146, 149, 238, 102, 21], + 10 => [0, 251, 67, 46, 61, 118, 70, 64, 94, 32, 45], + 13 => [0, 74, 152, 176, 100, 86, 100, 106, 104, 130, 218, 206, 140, 78], + 15 => [0, 8, 183, 61, 91, 202, 37, 51, 58, 58, 237, 140, 124, 5, 99, 105], + 16 => [0, 120, 104, 107, 109, 102, 161, 76, 3, 91, 191, 147, 169, 182, 194, 225, 120], + 17 => [0, 43, 139, 206, 78, 43, 239, 123, 206, 214, 147, 24, 99, 150, 39, 243, 163, 136], + 18 => [0, 215, 234, 158, 94, 184, 97, 118, 170, 79, 187, 152, 148, 252, 179, 5, 98, 96, 153], + 20 => [0, 17, 60, 79, 50, 61, 163, 26, 187, 202, 180, 221, 225, 83, 239, 156, 164, 212, 212, 188, 190], + 22 => [0, 210, 171, 247, 242, 93, 230, 14, 109, 221, 53, 200, 74, 8, 172, 98, 80, 219, 134, 160, 105, 165, 231], + 24 => [0, 229, 121, 135, 48, 211, 117, 251, 126, 159, 180, 169, 152, 192, 226, 228, 218, 111, 0, 117, 232, 87, 96, 227, 21], + 26 => [0, 173, 125, 158, 2, 103, 182, 118, 17, 145, 201, 111, 28, 165, 53, 161, 21, 245, 142, 13, 102, 48, 227, 153, 145, 218, 70], + 28 => [0, 168, 223, 200, 104, 224, 234, 108, 180, 110, 190, 195, 147, 205, 27, 232, 201, 21, 43, 245, 87, 42, 195, 212, 119, 242, 37, 9, 123], + 30 => [0, 41, 173, 145, 152, 216, 31, 179, 182, 50, 48, 110, 86, 239, 96, 222, 125, 42, 173, 226, 193, 224, 130, 156, 37, 251, 216, 238, 40, 192, 180], + ]; + + protected const LOG = [0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75, 4, 100, 224, 14, 52, 141, 239, 129, 28, 193, 105, 248, 200, 8, 76, 113, 5, 138, 101, 47, 225, 36, 15, 33, 53, 147, 142, 218, 240, 18, 130, 69, 29, 181, 194, 125, 106, 39, 249, 185, 201, 154, 9, 120, 77, 228, 114, 166, 6, 191, 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16, 145, 34, 136, 54, 208, 148, 206, 143, 150, 219, 189, 241, 210, 19, 92, 131, 56, 70, 64, 30, 66, 182, 163, 195, 72, 126, 110, 107, 58, 40, 84, 250, 133, 186, 61, 202, 94, 155, 159, 10, 21, 121, 43, 78, 212, 229, 172, 115, 243, 167, 87, 7, 112, 192, 247, 140, 128, 99, 13, 103, 74, 222, 237, 49, 197, 254, 24, 227, 165, 153, 119, 38, 184, 180, 124, 17, 68, 146, 217, 35, 32, 137, 46, 55, 63, 209, 91, 149, 188, 207, 205, 144, 135, 151, 178, 220, 252, 190, 97, 242, 86, 211, 171, 20, 42, 93, 158, 132, 60, 57, 83, 71, 109, 65, 162, 31, 45, 67, 216, 183, 123, 164, 118, 196, 23, 73, 236, 127, 12, 111, 246, 108, 161, 59, 82, 41, 157, 85, 170, 251, 96, 134, 177, 187, 204, 62, 90, 203, 89, 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, 122, 117, 44, 215, 79, 174, 213, 233, 230, 231, 173, 232, 116, 214, 244, 234, 168, 80, 88, 175]; + + protected const EXP = [1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 116, 232, 205, 135, 19, 38, 76, 152, 45, 90, 180, 117, 234, 201, 143, 3, 6, 12, 24, 48, 96, 192, 157, 39, 78, 156, 37, 74, 148, 53, 106, 212, 181, 119, 238, 193, 159, 35, 70, 140, 5, 10, 20, 40, 80, 160, 93, 186, 105, 210, 185, 111, 222, 161, 95, 190, 97, 194, 153, 47, 94, 188, 101, 202, 137, 15, 30, 60, 120, 240, 253, 231, 211, 187, 107, 214, 177, 127, 254, 225, 223, 163, 91, 182, 113, 226, 217, 175, 67, 134, 17, 34, 68, 136, 13, 26, 52, 104, 208, 189, 103, 206, 129, 31, 62, 124, 248, 237, 199, 147, 59, 118, 236, 197, 151, 51, 102, 204, 133, 23, 46, 92, 184, 109, 218, 169, 79, 158, 33, 66, 132, 21, 42, 84, 168, 77, 154, 41, 82, 164, 85, 170, 73, 146, 57, 114, 228, 213, 183, 115, 230, 209, 191, 99, 198, 145, 63, 126, 252, 229, 215, 179, 123, 246, 241, 255, 227, 219, 171, 75, 150, 49, 98, 196, 149, 55, 110, 220, 165, 87, 174, 65, 130, 25, 50, 100, 200, 141, 7, 14, 28, 56, 112, 224, 221, 167, 83, 166, 81, 162, 89, 178, 121, 242, 249, 239, 195, 155, 43, 86, 172, 69, 138, 9, 18, 36, 72, 144, 61, 122, 244, 245, 247, 243, 251, 235, 203, 139, 11, 22, 44, 88, 176, 125, 250, 233, 207, 131, 27, 54, 108, 216, 173, 71, 142, 1]; + + protected const REMAINER_BITS = [0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0]; + + protected const ALIGNMENT_PATTERNS = [ + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170], + ]; + + /** + * format info string = $qr_format_info[ + * (0 for L, 8 for M, 16 for Q, 24 for H) + mask + *]; + */ + protected const FORMAT_INFO = [ + [1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0], + [1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1], + [1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0], + [1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1], + [1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1], + [1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0], + [1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], + [1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0], + [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0], + [1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1], + [1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0], + [1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1], + [1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0], + [1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1], + [1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0], + [0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1], + [0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0], + [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1], + [0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0], + [0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0], + [0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1], + [0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1], + [0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1], + [0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1], + [0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0], + [0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1], + [0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0], + [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1] + ]; + + /** + * version info string = $qr_version_info[ (version - 7) ] + */ + protected const VERSION_INFO = [ + [0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0], + [0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1], + [0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1], + [0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0], + [0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0], + [0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1], + [0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1], + [0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0], + [0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0], + [0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1], + [0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1], + [0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], + [0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0], + [0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1], + [0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1], + [0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0], + [0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0], + [0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1], + [0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1], + [0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0], + [0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0], + [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1], + [0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1], + [0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0], + [1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1], + [1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0], + [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0], + [1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1], + [1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1], + [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0], + [1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0], + [1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1], + [1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1] + ]; +} diff --git a/kirby/src/Option/Option.php b/kirby/src/Option/Option.php new file mode 100644 index 0000000..3e58741 --- /dev/null +++ b/kirby/src/Option/Option.php @@ -0,0 +1,64 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Option +{ + public function __construct( + public string|int|float|null $value, + public bool $disabled = false, + public NodeIcon|null $icon = null, + public NodeText|null $info = null, + public NodeText|null $text = null + ) { + $this->text ??= new NodeText(['en' => $this->value]); + } + + public static function factory(string|int|float|null|array $props): static + { + if (is_array($props) === false) { + $props = ['value' => $props]; + } + + $props = Factory::apply($props, [ + 'icon' => NodeIcon::class, + 'info' => NodeText::class, + 'text' => NodeText::class + ]); + + return new static(...$props); + } + + public function id(): string|int|float + { + return $this->value ?? ''; + } + + /** + * Renders all data for the option + */ + public function render(ModelWithContent $model): array + { + return [ + 'disabled' => $this->disabled, + 'icon' => $this->icon?->render($model), + 'info' => $this->info?->render($model), + 'text' => $this->text?->render($model), + 'value' => $this->value + ]; + } +} diff --git a/kirby/src/Option/Options.php b/kirby/src/Option/Options.php new file mode 100644 index 0000000..de16a14 --- /dev/null +++ b/kirby/src/Option/Options.php @@ -0,0 +1,57 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Options extends Collection +{ + public const TYPE = Option::class; + + public function __construct(array $objects = []) + { + foreach ($objects as $object) { + $this->__set($object->value, $object); + } + } + + public static function factory(array $items = []): static + { + $collection = new static(); + + foreach ($items as $key => $option) { + // convert an associative value => text array into props; + // skip if option is already an array of option props + if ( + is_array($option) === false || + array_key_exists('value', $option) === false + ) { + $option = match (true) { + is_string($key) => ['value' => $key, 'text' => $option], + default => ['value' => $option] + }; + } + + $option = Option::factory($option); + $collection->__set($option->id(), $option); + } + + return $collection; + } + + public function render(ModelWithContent $model): array + { + return array_values(parent::render($model)); + } +} diff --git a/kirby/src/Option/OptionsApi.php b/kirby/src/Option/OptionsApi.php new file mode 100644 index 0000000..a3b7ae8 --- /dev/null +++ b/kirby/src/Option/OptionsApi.php @@ -0,0 +1,148 @@ +, + * Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class OptionsApi extends OptionsProvider +{ + public function __construct( + public string $url, + public string|null $query = null, + public string|null $text = null, + public string|null $value = null + ) { + } + + public function defaults(): static + { + $this->text ??= '{{ item.value }}'; + $this->value ??= '{{ item.key }}'; + return $this; + } + + public static function factory(string|array $props): static + { + if (is_string($props) === true) { + return new static(url: $props); + } + + return new static( + url: $props['url'], + query: $props['query'] ?? $props['fetch'] ?? null, + text: $props['text'] ?? null, + value: $props['value'] ?? null + ); + } + + /** + * Loads the API content from a remote URL + * or local file (or from cache) + */ + public function load(ModelWithContent $model): array|null + { + // resolve query templates in $this->url string + $url = $model->toSafeString($this->url); + + // URL, request via cURL + if (Url::isAbsolute($url) === true) { + return Remote::get($url)->json(); + } + + // local file + return Json::read($url); + } + + public static function polyfill(array|string $props = []): array + { + if (is_string($props) === true) { + return ['url' => $props]; + } + + if ($query = $props['fetch'] ?? null) { + $props['query'] ??= $query; + unset($props['fetch']); + } + + return $props; + } + + /** + * Creates the actual options by loading + * data from the API and resolving it to + * the correct text-value entries + * + * @param bool $safeMode Whether to escape special HTML characters in + * the option text for safe output in the Panel; + * only set to `false` if the text is later escaped! + */ + public function resolve(ModelWithContent $model, bool $safeMode = true): Options + { + // use cached options if present + // @codeCoverageIgnoreStart + if ($this->options !== null) { + return $this->options; + } + // @codeCoverageIgnoreEnd + + // apply property defaults + $this->defaults(); + + // load data from URL and convert from JSON to array + $data = $this->load($model); + + // @codeCoverageIgnoreStart + if ($data === null) { + throw new NotFoundException('Options could not be loaded from API: ' . $model->toSafeString($this->url)); + } + // @codeCoverageIgnoreEnd + + // turn data into Nest so that it can be queried + // or field methods applied to the data + $data = Nest::create($data); + + // optionally query a substructure inside the data array + $data = Query::factory($this->query)->resolve($data); + $options = []; + + // create options by resolving text and value query strings + // for each item from the data + foreach ($data as $key => $item) { + // convert simple `key: value` API data + if (is_string($item) === true) { + $item = new Field(null, $key, $item); + } + + $safeMethod = $safeMode === true ? 'toSafeString' : 'toString'; + + $options[] = [ + // value is always a raw string + 'value' => $model->toString($this->value, ['item' => $item]), + // text is only a raw string when using {< >} + // or when the safe mode is explicitly disabled (select field) + 'text' => $model->$safeMethod($this->text, ['item' => $item]) + ]; + } + + // create Options object and render this subsequently + return $this->options = Options::factory($options); + } +} diff --git a/kirby/src/Option/OptionsProvider.php b/kirby/src/Option/OptionsProvider.php new file mode 100644 index 0000000..433b2ab --- /dev/null +++ b/kirby/src/Option/OptionsProvider.php @@ -0,0 +1,38 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +abstract class OptionsProvider +{ + public Options|null $options = null; + + /** + * Returns options as array + */ + public function render(ModelWithContent $model) + { + return $this->resolve($model)->render($model); + } + + /** + * Dynamically determines the actual options and resolves + * them to the correct text-value entries + * + * @param bool $safeMode Whether to escape special HTML characters in + * the option text for safe output in the Panel; + * only set to `false` if the text is later escaped! + */ + abstract public function resolve(ModelWithContent $model, bool $safeMode = true): Options; +} diff --git a/kirby/src/Option/OptionsQuery.php b/kirby/src/Option/OptionsQuery.php new file mode 100644 index 0000000..ce4f4e4 --- /dev/null +++ b/kirby/src/Option/OptionsQuery.php @@ -0,0 +1,184 @@ +, + * Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class OptionsQuery extends OptionsProvider +{ + public function __construct( + public string $query, + public string|null $text = null, + public string|null $value = null + ) { + } + + protected function collection(array $array): Collection + { + foreach ($array as $key => $value) { + if (is_scalar($value) === true) { + $array[$key] = new Obj([ + 'key' => new Field(null, 'key', $key), + 'value' => new Field(null, 'value', $value), + ]); + } + } + + return new Collection($array); + } + + public static function factory(string|array $props): static + { + if (is_string($props) === true) { + return new static(query: $props); + } + + return new static( + query: $props['query'] ?? $props['fetch'], + text: $props['text'] ?? null, + value: $props['value'] ?? null + ); + } + + /** + * Returns defaults for the following based on item type: + * [query entry alias, default text query, default value query] + */ + protected function itemToDefaults(array|object $item): array + { + return match (true) { + is_array($item), + $item instanceof Obj => [ + 'arrayItem', + '{{ item.value }}', + '{{ item.value }}' + ], + + $item instanceof StructureObject => [ + 'structureItem', + '{{ item.title }}', + '{{ item.id }}' + ], + + $item instanceof Block => [ + 'block', + '{{ block.type }}: {{ block.id }}', + '{{ block.id }}' + ], + + $item instanceof Page => [ + 'page', + '{{ page.title }}', + '{{ page.id }}' + ], + + $item instanceof File => [ + 'file', + '{{ file.filename }}', + '{{ file.id }}' + ], + + $item instanceof User => [ + 'user', + '{{ user.username }}', + '{{ user.email }}' + ], + + default => [ + 'item', + '{{ item.value }}', + '{{ item.value }}' + ] + }; + } + + public static function polyfill(array|string $props = []): array + { + if (is_string($props) === true) { + return ['query' => $props]; + } + + if ($query = $props['fetch'] ?? null) { + $props['query'] ??= $query; + unset($props['fetch']); + } + + return $props; + } + + /** + * Creates the actual options by running + * the query on the model and resolving it to + * the correct text-value entries + * + * @param bool $safeMode Whether to escape special HTML characters in + * the option text for safe output in the Panel; + * only set to `false` if the text is later escaped! + */ + public function resolve(ModelWithContent $model, bool $safeMode = true): Options + { + // use cached options if present + // @codeCoverageIgnoreStart + if ($this->options !== null) { + return $this->options; + } + // @codeCoverageIgnoreEnd + + // run query + $result = $model->query($this->query); + + // the query already returned an options collection + if ($result instanceof Options) { + return $result; + } + + // convert result to a collection + if (is_array($result) === true) { + $result = $this->collection($result); + } + + if ($result instanceof Collection === false) { + throw new InvalidArgumentException('Invalid query result data: ' . get_class($result)); + } + + // create options array + $options = $result->toArray(function ($item) use ($model, $safeMode) { + // get defaults based on item type + [$alias, $text, $value] = $this->itemToDefaults($item); + $data = ['item' => $item, $alias => $item]; + + // value is always a raw string + $value = $model->toString($this->value ?? $value, $data); + + // text is only a raw string when using {< >} + // or when the safe mode is explicitly disabled (select field) + $safeMethod = $safeMode === true ? 'toSafeString' : 'toString'; + $text = $model->$safeMethod($this->text ?? $text, $data); + + return compact('text', 'value'); + }); + + return $this->options = Options::factory($options); + } +} diff --git a/kirby/src/Panel/Assets.php b/kirby/src/Panel/Assets.php new file mode 100644 index 0000000..5e02a59 --- /dev/null +++ b/kirby/src/Panel/Assets.php @@ -0,0 +1,298 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + * @since 4.0.0 + */ +class Assets +{ + protected bool $dev; + protected App $kirby; + protected string $nonce; + protected Plugins $plugins; + protected string $url; + protected bool $vite; + + public function __construct() + { + $this->kirby = App::instance(); + $this->nonce = $this->kirby->nonce(); + $this->plugins = new Plugins(); + + $vite = $this->kirby->roots()->panel() . '/.vite-running'; + $this->vite = is_file($vite) === true; + + // get the assets from the Vite dev server in dev mode; + // dev mode = explicitly enabled in the config AND Vite is running + $dev = $this->kirby->option('panel.dev', false); + $this->dev = $dev !== false && $this->vite === true; + + // get the base URL + $this->url = $this->url(); + } + + /** + * Get all CSS files + */ + public function css(): array + { + $css = A::merge( + [ + 'index' => $this->url . '/css/style.min.css', + 'plugins' => $this->plugins->url('css') + ], + $this->custom('panel.css') + ); + + // during dev mode we do not need to load + // the general stylesheet (as styling will be inlined) + if ($this->dev === true) { + $css['index'] = null; + } + + return array_filter($css); + } + + /** + * Check for a custom asset file from the + * config (e.g. panel.css or panel.js) + */ + public function custom(string $option): array + { + $customs = []; + + if ($assets = $this->kirby->option($option)) { + $assets = A::wrap($assets); + + foreach ($assets as $index => $path) { + if (Url::isAbsolute($path) === true) { + $customs['custom-' . $index] = $path; + continue; + } + + $asset = new Asset($path); + + if ($asset->exists() === true) { + $customs['custom-' . $index] = $asset->url() . '?' . $asset->modified(); + } + } + } + + return $customs; + } + + /** + * Generates an array with all assets + * that need to be loaded for the panel (js, css, icons) + */ + public function external(): array + { + return [ + 'css' => $this->css(), + 'icons' => $this->favicons(), + // loader for plugins' index.dev.mjs files – inlined, + // so we provide the code instead of the asset URL + 'plugin-imports' => $this->plugins->read('mjs'), + 'js' => $this->js() + ]; + } + + /** + * Returns array of favicon icons + * based on config option + * + * @throws \Kirby\Exception\InvalidArgumentException + */ + public function favicons(): array + { + $icons = $this->kirby->option('panel.favicon', [ + 'apple-touch-icon' => [ + 'type' => 'image/png', + 'url' => $this->url . '/apple-touch-icon.png', + ], + 'alternate icon' => [ + 'type' => 'image/png', + 'url' => $this->url . '/favicon.png', + ], + 'shortcut icon' => [ + 'type' => 'image/svg+xml', + 'url' => $this->url . '/favicon.svg', + ] + ]); + + if (is_array($icons) === true) { + return $icons; + } + + // make sure to convert favicon string to array + if (is_string($icons) === true) { + return [ + 'shortcut icon' => [ + 'type' => F::mime($icons), + 'url' => $icons, + ] + ]; + } + + throw new InvalidArgumentException('Invalid panel.favicon option'); + } + + /** + * Load the SVG icon sprite + * This will be injected in the + * initial HTML document for the Panel + */ + public function icons(): string + { + $dir = $this->kirby->root('panel') . '/'; + $dir .= $this->dev ? 'public' : 'dist'; + $icons = F::read($dir . '/img/icons.svg'); + $icons = preg_replace('//', '', $icons); + return $icons; + } + + /** + * Get all js files + */ + public function js(): array + { + $js = A::merge( + [ + 'vue' => [ + 'nonce' => $this->nonce, + 'src' => $this->url . '/js/vue.min.js' + ], + 'vendor' => [ + 'nonce' => $this->nonce, + 'src' => $this->url . '/js/vendor.min.js', + 'type' => 'module' + ], + 'pluginloader' => [ + 'nonce' => $this->nonce, + 'src' => $this->url . '/js/plugins.js', + 'type' => 'module' + ], + 'plugins' => [ + 'nonce' => $this->nonce, + 'src' => $this->plugins->url('js'), + 'defer' => true + ] + ], + A::map($this->custom('panel.js'), fn ($src) => [ + 'nonce' => $this->nonce, + 'src' => $src, + 'type' => 'module' + ]), + [ + 'index' => [ + 'nonce' => $this->nonce, + 'src' => $this->url . '/js/index.min.js', + 'type' => 'module' + ], + ] + ); + + + // during dev mode, add vite client and adapt + // path to `index.js` - vendor does not need + // to be loaded in dev mode + if ($this->dev === true) { + $js['vite'] = [ + 'nonce' => $this->nonce, + 'src' => $this->url . '/@vite/client', + 'type' => 'module' + ]; + + $js['index'] = [ + 'nonce' => $this->nonce, + 'src' => $this->url . '/src/index.js', + 'type' => 'module' + ]; + + // load the development version of Vue + $js['vue']['src'] = $this->url . '/node_modules/vue/dist/vue.js'; + + // remove the vendor script + $js['vendor']['src'] = null; + } + + return array_filter($js, fn ($js) => empty($js['src']) === false); + } + + /** + * Links all dist files in the media folder + * and returns the link to the requested asset + * + * @throws \Kirby\Exception\Exception If Panel assets could not be moved to the public directory + */ + public function link(): bool + { + $mediaRoot = $this->kirby->root('media') . '/panel'; + $panelRoot = $this->kirby->root('panel') . '/dist'; + $versionHash = $this->kirby->versionHash(); + $versionRoot = $mediaRoot . '/' . $versionHash; + + // check if the version already exists + if (is_dir($versionRoot) === true) { + return false; + } + + // delete the panel folder and all previous versions + Dir::remove($mediaRoot); + + // recreate the panel folder + Dir::make($mediaRoot, true); + + // copy assets to the dist folder + if (Dir::copy($panelRoot, $versionRoot) !== true) { + throw new Exception('Panel assets could not be linked'); + } + + return true; + } + + /** + * Get the base URL for all assets depending on dev mode + */ + public function url(): string + { + // vite is not running, use production assets + if ($this->dev === false) { + return $this->kirby->url('media') . '/panel/' . $this->kirby->versionHash(); + } + + // explicitly configured base URL + $dev = $this->kirby->option('panel.dev'); + if (is_string($dev) === true) { + return $dev; + } + + // port 3000 of the current Kirby request + return rtrim($this->kirby->request()->url([ + 'port' => 3000, + 'path' => null, + 'params' => null, + 'query' => null + ])->toString(), '/'); + } +} diff --git a/kirby/src/Panel/ChangesDialog.php b/kirby/src/Panel/ChangesDialog.php new file mode 100644 index 0000000..7053626 --- /dev/null +++ b/kirby/src/Panel/ChangesDialog.php @@ -0,0 +1,71 @@ +multilang(); + $changes = []; + + foreach ($ids as $id) { + try { + // parse the given ID to extract + // the path and an optional query + $uri = new Uri($id); + $path = $uri->path()->toString(); + $query = $uri->query(); + $model = Find::parent($path); + $item = $model->panel()->dropdownOption(); + + // add the language to each option, if it is included in the query + // of the given ID and the language actually exists + if ( + $multilang && + $query->language && + $language = $kirby->language($query->language) + ) { + $item['text'] .= ' (' . $language->code() . ')'; + $item['link'] .= '?language=' . $language->code(); + } + + $item['text'] = Escape::html($item['text']); + + $changes[] = $item; + } catch (Throwable) { + continue; + } + } + + return $changes; + } + + public function load(): array + { + return $this->state(); + } + + public function state(bool $loading = true, array $changes = []) + { + return [ + 'component' => 'k-changes-dialog', + 'props' => [ + 'changes' => $changes, + 'loading' => $loading + ] + ]; + } + + public function submit(array $ids): array + { + return $this->state(false, $this->changes($ids)); + } +} diff --git a/kirby/src/Panel/Dialog.php b/kirby/src/Panel/Dialog.php new file mode 100644 index 0000000..df43c4a --- /dev/null +++ b/kirby/src/Panel/Dialog.php @@ -0,0 +1,72 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Dialog extends Json +{ + protected static string $key = '$dialog'; + + /** + * Renders dialogs + */ + public static function response($data, array $options = []): Response + { + // interpret true as success + if ($data === true) { + $data = [ + 'code' => 200 + ]; + } + + return parent::response($data, $options); + } + + /** + * Builds the routes for a dialog + */ + public static function routes( + string $id, + string $areaId, + string $prefix = '', + array $options = [] + ) { + $routes = []; + + // create the full pattern with dialogs prefix + $pattern = trim($prefix . '/' . ($options['pattern'] ?? $id), '/'); + $type = str_replace('$', '', static::$key); + + // load event + $routes[] = [ + 'pattern' => $pattern, + 'type' => $type, + 'area' => $areaId, + 'action' => $options['load'] ?? fn () => 'The load handler is missing' + ]; + + // submit event + $routes[] = [ + 'pattern' => $pattern, + 'type' => $type, + 'area' => $areaId, + 'method' => 'POST', + 'action' => $options['submit'] ?? fn () => 'The submit handler is missing' + ]; + + return $routes; + } +} diff --git a/kirby/src/Panel/Document.php b/kirby/src/Panel/Document.php new file mode 100644 index 0000000..1c145f0 --- /dev/null +++ b/kirby/src/Panel/Document.php @@ -0,0 +1,72 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Document +{ + /** + * Renders the panel document + */ + public static function response(array $fiber): Response + { + $kirby = App::instance(); + $assets = new Assets(); + + // Full HTML response + // @codeCoverageIgnoreStart + try { + if ($assets->link() === true) { + usleep(1); + Response::go($kirby->url('base') . '/' . $kirby->path()); + } + } catch (Throwable $e) { + die('The Panel assets cannot be installed properly. ' . $e->getMessage()); + } + // @codeCoverageIgnoreEnd + + // get the uri object for the panel url + $uri = new Uri($kirby->url('panel')); + + // proper response code + $code = $fiber['$view']['code'] ?? 200; + + // load the main Panel view template + $body = Tpl::load($kirby->root('kirby') . '/views/panel.php', [ + 'assets' => $assets->external(), + 'icons' => $assets->icons(), + 'nonce' => $kirby->nonce(), + 'fiber' => $fiber, + 'panelUrl' => $uri->path()->toString(true) . '/', + ]); + + $frameAncestors = $kirby->option('panel.frameAncestors'); + $frameAncestors = match (true) { + $frameAncestors === true => "'self'", + is_array($frameAncestors) => "'self' " . implode(' ', $frameAncestors), + is_string($frameAncestors) => $frameAncestors, + default => "'none'" + }; + + return new Response($body, 'text/html', $code, [ + 'Content-Security-Policy' => 'frame-ancestors ' . $frameAncestors + ]); + } +} diff --git a/kirby/src/Panel/Drawer.php b/kirby/src/Panel/Drawer.php new file mode 100644 index 0000000..0952088 --- /dev/null +++ b/kirby/src/Panel/Drawer.php @@ -0,0 +1,21 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Drawer extends Dialog +{ + protected static string $key = '$drawer'; +} diff --git a/kirby/src/Panel/Dropdown.php b/kirby/src/Panel/Dropdown.php new file mode 100644 index 0000000..de01bf6 --- /dev/null +++ b/kirby/src/Panel/Dropdown.php @@ -0,0 +1,71 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Dropdown extends Json +{ + protected static string $key = '$dropdown'; + + /** + * Renders dropdowns + */ + public static function response($data, array $options = []): Response + { + if (is_array($data) === true) { + $data = [ + 'options' => array_values($data) + ]; + } + + return parent::response($data, $options); + } + + /** + * Routes for the dropdown + */ + public static function routes( + string $id, + string $areaId, + string $prefix = '', + Closure|array $options = [] + ): array { + // Handle shortcuts for dropdowns. The name is the pattern + // and options are defined in a Closure + if ($options instanceof Closure) { + $options = [ + 'pattern' => $id, + 'action' => $options + ]; + } + + // create the full pattern with dialogs prefix + $pattern = trim($prefix . '/' . ($options['pattern'] ?? $id), '/'); + $type = str_replace('$', '', static::$key); + + return [ + // load event + [ + 'pattern' => $pattern, + 'type' => $type, + 'area' => $areaId, + 'method' => 'GET|POST', + 'action' => $options['options'] ?? $options['action'] + ] + ]; + } +} diff --git a/kirby/src/Panel/Field.php b/kirby/src/Panel/Field.php new file mode 100644 index 0000000..e895712 --- /dev/null +++ b/kirby/src/Panel/Field.php @@ -0,0 +1,292 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Field +{ + /** + * Creates the routes for a field dialog + * This is most definitely not a good place for this + * method, but as long as the other classes are + * not fully refactored, it still feels appropriate + */ + public static function dialog( + ModelWithContent $model, + string $fieldName, + string|null $path = null, + string $method = 'GET', + ) { + $field = Form::for($model)->field($fieldName); + $routes = []; + + foreach ($field->dialogs() as $dialogId => $dialog) { + $routes = array_merge($routes, Dialog::routes( + id: $dialogId, + areaId: 'site', + options: $dialog + )); + } + + return Router::execute($path, $method, $routes); + } + + /** + * Creates the routes for a field drawer + * This is most definitely not a good place for this + * method, but as long as the other classes are + * not fully refactored, it still feels appropriate + */ + public static function drawer( + ModelWithContent $model, + string $fieldName, + string|null $path = null, + string $method = 'GET', + ) { + $field = Form::for($model)->field($fieldName); + $routes = []; + + foreach ($field->drawers() as $drawerId => $drawer) { + $routes = array_merge($routes, Drawer::routes( + id: $drawerId, + areaId: 'site', + options: $drawer + )); + } + + return Router::execute($path, $method, $routes); + } + + /** + * A standard email field + */ + public static function email(array $props = []): array + { + return array_merge([ + 'label' => I18n::translate('email'), + 'type' => 'email', + 'counter' => false, + ], $props); + } + + /** + * File position + */ + public static function filePosition(File $file, array $props = []): array + { + $index = 0; + $options = []; + + foreach ($file->siblings(false)->sorted() as $sibling) { + $index++; + + $options[] = [ + 'value' => $index, + 'text' => $index + ]; + + $options[] = [ + 'value' => $sibling->id(), + 'text' => $sibling->filename(), + 'disabled' => true + ]; + } + + $index++; + + $options[] = [ + 'value' => $index, + 'text' => $index + ]; + + return array_merge([ + 'label' => I18n::translate('file.sort'), + 'type' => 'select', + 'empty' => false, + 'options' => $options + ], $props); + } + + + public static function hidden(): array + { + return ['hidden' => true]; + } + + /** + * Page position + */ + public static function pagePosition(Page $page, array $props = []): array + { + $index = 0; + $options = []; + $siblings = $page->parentModel()->children()->listed()->not($page); + + foreach ($siblings as $sibling) { + $index++; + + $options[] = [ + 'value' => $index, + 'text' => $index + ]; + + $options[] = [ + 'value' => $sibling->id(), + 'text' => $sibling->title()->value(), + 'disabled' => true + ]; + } + + $index++; + + $options[] = [ + 'value' => $index, + 'text' => $index + ]; + + // if only one available option, + // hide field when not in debug mode + if (count($options) < 2) { + return static::hidden(); + } + + return array_merge([ + 'label' => I18n::translate('page.changeStatus.position'), + 'type' => 'select', + 'empty' => false, + 'options' => $options, + ], $props); + } + + /** + * A regular password field + */ + public static function password(array $props = []): array + { + return array_merge([ + 'label' => I18n::translate('password'), + 'type' => 'password' + ], $props); + } + + /** + * User role radio buttons + */ + public static function role(array $props = []): array + { + $kirby = App::instance(); + $isAdmin = $kirby->user()?->isAdmin() ?? false; + $roles = []; + + foreach ($kirby->roles() as $role) { + // exclude the admin role, if the user + // is not allowed to change role to admin + if ($role->name() === 'admin' && $isAdmin === false) { + continue; + } + + $roles[] = [ + 'text' => $role->title(), + 'info' => $role->description() ?? I18n::translate('role.description.placeholder'), + 'value' => $role->name() + ]; + } + + return array_merge([ + 'label' => I18n::translate('role'), + 'type' => count($roles) <= 1 ? 'hidden' : 'radio', + 'options' => $roles + ], $props); + } + + public static function slug(array $props = []): array + { + return array_merge([ + 'label' => I18n::translate('slug'), + 'type' => 'slug', + 'allow' => Str::$defaults['slug']['allowed'] + ], $props); + } + + public static function template( + array|null $blueprints = [], + array|null $props = [] + ): array { + $options = []; + + foreach ($blueprints as $blueprint) { + $options[] = [ + 'text' => $blueprint['title'] ?? $blueprint['text'] ?? null, + 'value' => $blueprint['name'] ?? $blueprint['value'] ?? null, + ]; + } + + return array_merge([ + 'label' => I18n::translate('template'), + 'type' => 'select', + 'empty' => false, + 'options' => $options, + 'icon' => 'template', + 'disabled' => count($options) <= 1 + ], $props); + } + + public static function title(array $props = []): array + { + return array_merge([ + 'label' => I18n::translate('title'), + 'type' => 'text', + 'icon' => 'title', + ], $props); + } + + /** + * Panel translation select box + */ + public static function translation(array $props = []): array + { + $translations = []; + foreach (App::instance()->translations() as $translation) { + $translations[] = [ + 'text' => $translation->name(), + 'value' => $translation->code() + ]; + } + + return array_merge([ + 'label' => I18n::translate('language'), + 'type' => 'select', + 'icon' => 'translate', + 'options' => $translations, + 'empty' => false + ], $props); + } + + public static function username(array $props = []): array + { + return array_merge([ + 'icon' => 'user', + 'label' => I18n::translate('name'), + 'type' => 'text', + ], $props); + } +} diff --git a/kirby/src/Panel/File.php b/kirby/src/Panel/File.php new file mode 100644 index 0000000..d58e7a1 --- /dev/null +++ b/kirby/src/Panel/File.php @@ -0,0 +1,493 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class File extends Model +{ + /** + * @var \Kirby\Cms\File + */ + protected ModelWithContent $model; + + /** + * Breadcrumb array + */ + public function breadcrumb(): array + { + $breadcrumb = []; + $parent = $this->model->parent(); + + switch ($parent::CLASS_ALIAS) { + case 'user': + /** @var \Kirby\Cms\User $parent */ + // The breadcrumb is not necessary + // on the account view + if ($parent->isLoggedIn() === false) { + $breadcrumb[] = [ + 'label' => $parent->username(), + 'link' => $parent->panel()->url(true) + ]; + } + break; + case 'page': + /** @var \Kirby\Cms\Page $parent */ + $breadcrumb = $this->model->parents()->flip()->values( + fn ($parent) => [ + 'label' => $parent->title()->toString(), + 'link' => $parent->panel()->url(true), + ] + ); + } + + // add the file + $breadcrumb[] = [ + 'label' => $this->model->filename(), + 'link' => $this->url(true), + ]; + + return $breadcrumb; + } + + /** + * Provides a kirbytag or markdown + * tag for the file, which will be + * used in the panel, when the file + * gets dragged onto a textarea + * + * @internal + * @param string|null $type (`auto`|`kirbytext`|`markdown`) + */ + public function dragText( + string|null $type = null, + bool $absolute = false + ): string { + $type = $this->dragTextType($type); + $url = $this->model->filename(); + $file = $this->model->type(); + + // By default only the filename is added as relative URL. + // If an absolute URL is required, either use the permalink + // for markdown notation or the UUID for Kirbytext (since + // Kirbytags support can resolve UUIDs directly) + if ($absolute === true) { + $url = match ($type) { + 'markdown' => $this->model->permalink(), + default => $this->model->uuid() + }; + + // if UUIDs are disabled, fall back to URL + $url ??= $this->model->url(); + } + + if ($callback = $this->dragTextFromCallback($type, $url)) { + return $callback; + } + + if ($type === 'markdown') { + return match ($file) { + 'image' => '![' . $this->model->alt() . '](' . $url . ')', + default => '[' . $this->model->filename() . '](' . $url . ')' + }; + } + + return match ($file) { + 'image', 'video' => '(' . $file . ': ' . $url . ')', + default => '(file: ' . $url . ')' + }; + } + + /** + * Provides options for the file dropdown + */ + public function dropdown(array $options = []): array + { + $file = $this->model; + $request = $file->kirby()->request(); + $defaults = $request->get(['view', 'update', 'delete']); + $options = array_merge($defaults, $options); + + $permissions = $this->options(['preview']); + $view = $options['view'] ?? 'view'; + $url = $this->url(true); + $result = []; + + if ($view === 'list') { + $result[] = [ + 'link' => $file->previewUrl(), + 'target' => '_blank', + 'icon' => 'open', + 'text' => I18n::translate('open') + ]; + $result[] = '-'; + } + + $result[] = [ + 'dialog' => $url . '/changeName', + 'icon' => 'title', + 'text' => I18n::translate('rename'), + 'disabled' => $this->isDisabledDropdownOption('changeName', $options, $permissions) + ]; + + if ($view === 'list') { + $result[] = [ + 'dialog' => $url . '/changeSort', + 'icon' => 'sort', + 'text' => I18n::translate('file.sort'), + 'disabled' => $this->isDisabledDropdownOption('update', $options, $permissions) + ]; + } + + $result[] = [ + 'dialog' => $url . '/changeTemplate', + 'icon' => 'template', + 'text' => I18n::translate('file.changeTemplate'), + 'disabled' => $this->isDisabledDropdownOption('changeTemplate', $options, $permissions) + ]; + + $result[] = '-'; + + $result[] = [ + 'click' => 'replace', + 'icon' => 'upload', + 'text' => I18n::translate('replace'), + 'disabled' => $this->isDisabledDropdownOption('replace', $options, $permissions) + ]; + + $result[] = '-'; + $result[] = [ + 'dialog' => $url . '/delete', + 'icon' => 'trash', + 'text' => I18n::translate('delete'), + 'disabled' => $this->isDisabledDropdownOption('delete', $options, $permissions) + ]; + + return $result; + } + + /** + * Returns the setup for a dropdown option + * which is used in the changes dropdown + * for example + */ + public function dropdownOption(): array + { + return [ + 'icon' => 'image', + 'text' => $this->model->filename(), + ] + parent::dropdownOption(); + } + + /** + * Returns the Panel icon color + */ + protected function imageColor(): string + { + $types = [ + 'archive' => 'gray-500', + 'audio' => 'aqua-500', + 'code' => 'pink-500', + 'document' => 'red-500', + 'image' => 'orange-500', + 'video' => 'yellow-500', + ]; + + $extensions = [ + 'csv' => 'green-500', + 'doc' => 'blue-500', + 'docx' => 'blue-500', + 'indd' => 'purple-500', + 'rtf' => 'blue-500', + 'xls' => 'green-500', + 'xlsx' => 'green-500', + ]; + + return + $extensions[$this->model->extension()] ?? + $types[$this->model->type()] ?? + parent::imageDefaults()['color']; + } + + /** + * Default settings for the file's Panel image + */ + protected function imageDefaults(): array + { + return array_merge(parent::imageDefaults(), [ + 'color' => $this->imageColor(), + 'icon' => $this->imageIcon(), + ]); + } + + /** + * Returns the Panel icon type + */ + protected function imageIcon(): string + { + $types = [ + 'archive' => 'archive', + 'audio' => 'audio', + 'code' => 'code', + 'document' => 'document', + 'image' => 'image', + 'video' => 'video', + ]; + + $extensions = [ + 'csv' => 'table', + 'doc' => 'pen', + 'docx' => 'pen', + 'md' => 'markdown', + 'mdown' => 'markdown', + 'rtf' => 'pen', + 'xls' => 'table', + 'xlsx' => 'table', + ]; + + return + $extensions[$this->model->extension()] ?? + $types[$this->model->type()] ?? + 'file'; + } + + /** + * Returns the image file object based on provided query + * @internal + */ + protected function imageSource( + string|null $query = null + ): CmsFile|Asset|null { + if ($query === null && $this->model->isViewable()) { + return $this->model; + } + + return parent::imageSource($query); + } + + /** + * Whether focus can be added in Panel view + */ + public function isFocusable(): bool + { + // blueprint option + $option = $this->model->blueprint()->focus(); + // fallback to whether the file is viewable + // (images should be focusable by default, others not) + $option ??= $this->model->isViewable(); + + if ($option === false) { + return false; + } + + // ensure that user can update content file + if ($this->options()['update'] === false) { + return false; + } + + $kirby = $this->model->kirby(); + + // ensure focus is only added when editing primary/only language + if ( + $kirby->multilang() === false || + $kirby->languages()->count() === 0 || + $kirby->language()->isDefault() === true + ) { + return true; + } + + return false; + } + + /** + * Returns an array of all actions + * that can be performed in the Panel + * + * @param array $unlock An array of options that will be force-unlocked + */ + public function options(array $unlock = []): array + { + $options = parent::options($unlock); + + try { + // check if the file type is allowed at all, + // otherwise it cannot be replaced + $this->model->match($this->model->blueprint()->accept()); + } catch (Throwable) { + $options['replace'] = false; + } + + return $options; + } + + /** + * Returns the full path without leading slash + */ + public function path(): string + { + return 'files/' . $this->model->filename(); + } + + /** + * Prepares the response data for file pickers + * and file fields + */ + public function pickerData(array $params = []): array + { + $name = $this->model->filename(); + $id = $this->model->id(); + + if (empty($params['model']) === false) { + $parent = $this->model->parent(); + + // if the file belongs to the current parent model, + // store only name as ID to keep its path relative to the model + $id = $parent === $params['model'] ? $name : $id; + $absolute = $parent !== $params['model']; + } + + $params['text'] ??= '{{ file.filename }}'; + + return array_merge(parent::pickerData($params), [ + 'dragText' => $this->dragText('auto', $absolute ?? false), + 'filename' => $name, + 'id' => $id, + 'type' => $this->model->type(), + 'url' => $this->model->url() + ]); + } + + /** + * Returns the data array for the + * view's component props + * @internal + */ + public function props(): array + { + $file = $this->model; + $dimensions = $file->dimensions(); + + return array_merge( + parent::props(), + $this->prevNext(), + [ + 'blueprint' => $this->model->template() ?? 'default', + 'model' => [ + 'content' => $this->content(), + 'dimensions' => $dimensions->toArray(), + 'extension' => $file->extension(), + 'filename' => $file->filename(), + 'link' => $this->url(true), + 'mime' => $file->mime(), + 'niceSize' => $file->niceSize(), + 'id' => $id = $file->id(), + 'parent' => $file->parent()->panel()->path(), + 'template' => $file->template(), + 'type' => $file->type(), + 'url' => $file->url(), + ], + 'preview' => [ + 'focusable' => $this->isFocusable(), + 'image' => $this->image([ + 'back' => 'transparent', + 'ratio' => '1/1' + ], 'cards'), + 'url' => $url = $file->previewUrl(), + 'details' => [ + [ + 'title' => I18n::translate('template'), + 'text' => $file->template() ?? '—' + ], + [ + 'title' => I18n::translate('mime'), + 'text' => $file->mime() + ], + [ + 'title' => I18n::translate('url'), + 'text' => $id, + 'link' => $url + ], + [ + 'title' => I18n::translate('size'), + 'text' => $file->niceSize() + ], + [ + 'title' => I18n::translate('dimensions'), + 'text' => $file->type() === 'image' ? $file->dimensions() . ' ' . I18n::translate('pixel') : '—' + ], + [ + 'title' => I18n::translate('orientation'), + 'text' => $file->type() === 'image' ? I18n::translate('orientation.' . $dimensions->orientation()) : '—' + ], + ] + ] + ] + ); + } + + /** + * Returns navigation array with + * previous and next file + * @internal + */ + public function prevNext(): array + { + $file = $this->model; + $siblings = $file->templateSiblings()->sortBy( + 'sort', + 'asc', + 'filename', + 'asc' + ); + + return [ + 'next' => function () use ($file, $siblings): array|null { + $next = $siblings->nth($siblings->indexOf($file) + 1); + return $this->toPrevNextLink($next, 'filename'); + }, + 'prev' => function () use ($file, $siblings): array|null { + $prev = $siblings->nth($siblings->indexOf($file) - 1); + return $this->toPrevNextLink($prev, 'filename'); + } + ]; + } + /** + * Returns the url to the editing view + * in the panel + */ + public function url(bool $relative = false): string + { + $parent = $this->model->parent()->panel()->url($relative); + return $parent . '/' . $this->path(); + } + + /** + * Returns the data array for + * this model's Panel view + * @internal + */ + public function view(): array + { + return [ + 'breadcrumb' => fn (): array => $this->model->panel()->breadcrumb(), + 'component' => 'k-file-view', + 'props' => $this->props(), + 'search' => 'files', + 'title' => $this->model->filename(), + ]; + } +} diff --git a/kirby/src/Panel/Home.php b/kirby/src/Panel/Home.php new file mode 100644 index 0000000..3abb1c4 --- /dev/null +++ b/kirby/src/Panel/Home.php @@ -0,0 +1,255 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Home +{ + /** + * Returns an alternative URL if access + * to the first choice is blocked. + * + * It will go through the entire menu and + * take the first area which is not disabled + * or locked in other ways + */ + public static function alternative(User $user): string + { + $permissions = $user->role()->permissions(); + + // no access to the panel? The only good alternative is the main url + if ($permissions->for('access', 'panel') === false) { + return App::instance()->site()->url(); + } + + // needed to create a proper menu + $areas = Panel::areas(); + $menu = new Menu($areas, $permissions->toArray()); + $menu = $menu->entries(); + + // go through the menu and search for the first + // available view we can go to + foreach ($menu as $menuItem) { + // skip separators + if ($menuItem === '-') { + continue; + } + + // skip disabled items + if (($menuItem['disabled'] ?? false) === true) { + continue; + } + + // skip buttons that don't open a link + // (but e.g. a dialog) + if (isset($menuItem['link']) === false) { + continue; + } + + // skip the logout button + if ($menuItem['link'] === 'logout') { + continue; + } + + return Panel::url($menuItem['link']); + } + + throw new NotFoundException('There’s no available Panel page to redirect to'); + } + + /** + * Checks if the user has access to the given + * panel path. This is quite tricky, because we + * need to call a trimmed down router to check + * for available routes and their firewall status. + */ + public static function hasAccess(User $user, string $path): bool + { + $areas = Panel::areas(); + $routes = Panel::routes($areas); + + // Remove fallback routes. Otherwise a route + // would be found even if the view does + // not exist at all. + foreach ($routes as $index => $route) { + if ($route['pattern'] === '(:all)') { + unset($routes[$index]); + } + } + + // create a dummy router to check if we can access this route at all + try { + return Router::execute($path, 'GET', $routes, function ($route) use ($user) { + $attrs = $route->attributes(); + $auth = $attrs['auth'] ?? true; + $areaId = $attrs['area'] ?? null; + $type = $attrs['type'] ?? 'view'; + + // only allow redirects to views + if ($type !== 'view') { + return false; + } + + // if auth is not required the redirect is allowed + if ($auth === false) { + return true; + } + + // check the firewall + return Panel::hasAccess($user, $areaId); + }); + } catch (Throwable) { + return false; + } + } + + /** + * Checks if the given Uri has the same domain + * as the index URL of the Kirby installation. + * This is used to block external URLs to third-party + * domains as redirect options. + */ + public static function hasValidDomain(Uri $uri): bool + { + $rootUrl = App::instance()->site()->url(); + $rootUri = new Uri($rootUrl); + return $uri->domain() === $rootUri->domain(); + } + + /** + * Checks if the given URL is a Panel Url + */ + public static function isPanelUrl(string $url): bool + { + $panel = App::instance()->url('panel'); + return Str::startsWith($url, $panel); + } + + /** + * Returns the path after /panel/ which can then + * be used in the router or to find a matching view + */ + public static function panelPath(string $url): string|null + { + $after = Str::after($url, App::instance()->url('panel')); + return trim($after, '/'); + } + + /** + * Returns the Url that has been stored in the session + * before the last logout. We take this Url if possible + * to redirect the user back to the last point where they + * left before they got logged out. + */ + public static function remembered(): string|null + { + // check for a stored path after login + if ($remembered = App::instance()->session()->pull('panel.path')) { + // convert the result to an absolute URL if available + return Panel::url($remembered); + } + + return null; + } + + /** + * Tries to find the best possible Url to redirect + * the user to after the login. + * + * When the user got logged out, we try to send them back + * to the point where they left. + * + * If they have a custom redirect Url defined in their blueprint + * via the `home` option, we send them there if no Url is stored + * in the session. + * + * If none of the options above find any result, we try to send + * them to the site view. + * + * Before the redirect happens, the final Url is sanitized, the query + * and params are removed to avoid any attacks and the domain is compared + * to avoid redirects to external Urls. + * + * Afterwards, we also check for permissions before the redirect happens + * to avoid redirects to inaccessible Panel views. In such a case + * the next best accessible view is picked from the menu. + */ + public static function url(): string + { + $user = App::instance()->user(); + + // if there's no authenticated user, all internal + // redirects will be blocked and the user is redirected + // to the login instead + if (!$user) { + return Panel::url('login'); + } + + // get the last visited url from the session or the custom home + $url = static::remembered() ?? $user->panel()->home(); + + // inspect the given URL + $uri = new Uri($url); + + // compare domains to avoid external redirects + if (static::hasValidDomain($uri) !== true) { + throw new InvalidArgumentException('External URLs are not allowed for Panel redirects'); + } + + // remove all params to avoid + // possible attack vectors + $uri->params = ''; + $uri->query = ''; + + // get a clean version of the URL + $url = $uri->toString(); + + // Don't further inspect URLs outside of the Panel + if (static::isPanelUrl($url) === false) { + return $url; + } + + // get the plain panel path + $path = static::panelPath($url); + + // a redirect to login, logout or installation + // views would lead to an infinite redirect loop + if (in_array($path, ['', 'login', 'logout', 'installation'], true) === true) { + $path = 'site'; + } + + // Check if the user can access the URL + if (static::hasAccess($user, $path) === true) { + return Panel::url($path); + } + + // Try to find an alternative + return static::alternative($user); + } +} diff --git a/kirby/src/Panel/Json.php b/kirby/src/Panel/Json.php new file mode 100644 index 0000000..2cfa895 --- /dev/null +++ b/kirby/src/Panel/Json.php @@ -0,0 +1,84 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class Json +{ + protected static string $key = '$response'; + + /** + * Renders the error response with the provided message + */ + public static function error(string $message, int $code = 404): array + { + return [ + 'code' => $code, + 'error' => $message + ]; + } + + /** + * Prepares the JSON response for the Panel + */ + public static function response($data, array $options = []): Response + { + $data = static::responseData($data); + + // always inject the response code + $data['code'] ??= 200; + $data['path'] = $options['path'] ?? null; + $data['query'] = App::instance()->request()->query()->toArray(); + $data['referrer'] = Panel::referrer(); + + return Panel::json([static::$key => $data], $data['code']); + } + + public static function responseData(mixed $data): array + { + // handle redirects + if ($data instanceof Redirect) { + return [ + 'redirect' => $data->location(), + ]; + } + + // handle Kirby exceptions + if ($data instanceof Exception) { + return static::error($data->getMessage(), $data->getHttpCode()); + } + + // handle exceptions + if ($data instanceof Throwable) { + return static::error($data->getMessage(), 500); + } + + // only expect arrays from here on + if (is_array($data) === false) { + return static::error('Invalid response', 500); + } + + if (empty($data) === true) { + return static::error('The response is empty', 404); + } + + return $data; + } +} diff --git a/kirby/src/Panel/Lab/Category.php b/kirby/src/Panel/Lab/Category.php new file mode 100644 index 0000000..4926737 --- /dev/null +++ b/kirby/src/Panel/Lab/Category.php @@ -0,0 +1,134 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Category +{ + protected string $root; + + public function __construct( + protected string $id, + string|null $root = null, + protected array $props = [] + ) { + $this->root = $root ?? static::base() . '/' . $this->id; + + if (file_exists($this->root . '/index.php') === true) { + $this->props = array_merge( + require $this->root . '/index.php', + $this->props + ); + } + } + + public static function all(): array + { + // all core lab examples from `kirby/panel/lab` + $examples = A::map( + Dir::inventory(static::base())['children'], + fn ($props) => (new static($props['dirname']))->toArray() + ); + + // all custom lab examples from `site/lab` + $custom = static::factory('site')->toArray(); + + array_push($examples, $custom); + + return $examples; + } + + public static function base(): string + { + return App::instance()->root('panel') . '/lab'; + } + + public function example(string $id, string|null $tab = null): Example + { + return new Example(parent: $this, id: $id, tab: $tab); + } + + public function examples(): array + { + return A::map( + Dir::inventory($this->root)['children'], + fn ($props) => $this->example($props['dirname'])->toArray() + ); + } + + public static function factory(string $id) + { + return match ($id) { + 'site' => static::site(), + default => new static($id) + }; + } + + public function icon(): string + { + return $this->props['icon'] ?? 'palette'; + } + + public function id(): string + { + return $this->id; + } + + public static function installed(): bool + { + return Dir::exists(static::base()) === true; + } + + public function name(): string + { + return $this->props['name'] ?? ucfirst($this->id); + } + + public function root(): string + { + return $this->root; + } + + public static function site(): static + { + return new static( + 'site', + App::instance()->root('site') . '/lab', + [ + 'name' => 'Your examples', + 'icon' => 'live' + ] + ); + } + + public function toArray(): array + { + return [ + 'name' => $this->name(), + 'examples' => $this->examples(), + 'icon' => $this->icon(), + 'path' => Str::after( + $this->root(), + App::instance()->root('index') + ), + ]; + } +} diff --git a/kirby/src/Panel/Lab/Docs.php b/kirby/src/Panel/Lab/Docs.php new file mode 100644 index 0000000..44a6af0 --- /dev/null +++ b/kirby/src/Panel/Lab/Docs.php @@ -0,0 +1,340 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Docs +{ + protected array $json; + protected App $kirby; + + public function __construct( + protected string $name + ) { + $this->kirby = App::instance(); + $this->json = $this->read(); + } + + public static function all(): array + { + $dist = static::root(); + $tmp = static::root(true); + $files = Dir::inventory($dist)['files']; + + if (Dir::exists($tmp) === true) { + $files = [...Dir::inventory($tmp)['files'], ...$files]; + } + + $docs = A::map( + $files, + function ($file) { + $component = 'k-' . Str::camelToKebab(F::name($file['filename'])); + + return [ + 'image' => [ + 'icon' => 'book', + 'back' => 'white', + ], + 'text' => $component, + 'link' => '/lab/docs/' . $component, + ]; + } + ); + + usort($docs, fn ($a, $b) => $a['text'] <=> $b['text']); + + return array_values($docs); + } + + public function deprecated(): string|null + { + return $this->kt($this->json['tags']['deprecated'][0]['description'] ?? ''); + } + + public function description(): string + { + return $this->kt($this->json['description'] ?? ''); + } + + public function docBlock(): string + { + return $this->kt($this->json['docsBlocks'][0] ?? ''); + } + + public function events(): array + { + $events = A::map( + $this->json['events'] ?? [], + fn ($event) => [ + 'name' => $event['name'], + 'description' => $this->kt($event['description'] ?? ''), + 'deprecated' => $this->kt($event['tags']['deprecated'][0]['description'] ?? ''), + 'since' => $event['tags']['since'][0]['description'] ?? null, + 'properties' => A::map( + $event['properties'] ?? [], + fn ($property) => [ + 'name' => $property['name'], + 'type' => $property['type']['names'][0] ?? '', + 'description' => $this->kt($property['description'] ?? '', true), + ] + ), + ] + ); + + usort($events, fn ($a, $b) => $a['name'] <=> $b['name']); + + return $events; + } + + public function examples(): array + { + if (empty($this->json['tags']['examples']) === false) { + return $this->json['tags']['examples']; + } + + return []; + } + + public function file(string $context): string + { + $root = match ($context) { + 'dev' => $this->kirby->root('panel') . '/tmp', + 'dist' => $this->kirby->root('panel') . '/dist/ui', + }; + + $name = Str::after($this->name, 'k-'); + $name = Str::kebabToCamel($name); + return $root . '/' . $name . '.json'; + } + + public function github(): string + { + return 'https://github.com/getkirby/kirby/tree/main/panel/' . $this->json['sourceFile']; + } + + public static function installed(): bool + { + return Dir::exists(static::root()) === true; + } + + protected function kt(string $text, bool $inline = false): string + { + return $this->kirby->kirbytext($text, [ + 'markdown' => [ + 'breaks' => false, + 'inline' => $inline, + ] + ]); + } + + public function lab(): string|null + { + $root = $this->kirby->root('panel') . '/lab'; + + foreach (glob($root . '/{,*/,*/*/,*/*/*/}index.php', GLOB_BRACE) as $example) { + $props = require $example; + + if (($props['docs'] ?? null) === $this->name) { + return Str::before(Str::after($example, $root), 'index.php'); + } + } + + return null; + } + + public function methods(): array + { + $methods = A::map( + $this->json['methods'] ?? [], + fn ($method) => [ + 'name' => $method['name'], + 'description' => $this->kt($method['description'] ?? ''), + 'deprecated' => $this->kt($method['tags']['deprecated'][0]['description'] ?? ''), + 'since' => $method['tags']['since'][0]['description'] ?? null, + 'params' => A::map( + $method['params'] ?? [], + fn ($param) => [ + 'name' => $param['name'], + 'type' => $param['type']['name'] ?? '', + 'description' => $this->kt($param['description'] ?? '', true), + ] + ), + 'returns' => $method['returns']['type']['name'] ?? null, + ] + ); + + usort($methods, fn ($a, $b) => $a['name'] <=> $b['name']); + + return $methods; + } + + public function name(): string + { + return $this->name; + } + + public function prop(string|int $key): array|null + { + $prop = $this->json['props'][$key]; + + // filter private props + if (($prop['tags']['access'][0]['description'] ?? null) === 'private') { + return null; + } + + // filter unset props + if (($type = $prop['type']['name'] ?? null) === 'null') { + return null; + } + + $default = $prop['defaultValue']['value'] ?? null; + $deprecated = $this->kt($prop['tags']['deprecated'][0]['description'] ?? ''); + + return [ + 'name' => Str::camelToKebab($prop['name']), + 'type' => $type, + 'description' => $this->kt($prop['description'] ?? ''), + 'default' => $this->propDefault($default, $type), + 'deprecated' => $deprecated, + 'example' => $prop['tags']['example'][0]['description'] ?? null, + 'required' => $prop['required'] ?? false, + 'since' => $prop['tags']['since'][0]['description'] ?? null, + 'value' => $prop['tags']['value'][0]['description'] ?? null, + 'values' => $prop['values'] ?? null, + ]; + } + + protected function propDefault( + string|null $default, + string|null $type + ): string|null { + if ($default !== null) { + // normalize longform function + if (preg_match('/function\(\) {.*return (.*);.*}/si', $default, $matches) === 1) { + return $matches[1]; + } + + // normalize object shorthand function + if (preg_match('/\(\) => \((.*)\)/si', $default, $matches) === 1) { + return $matches[1]; + } + + // normalize all other defaults from shorthand function + if (preg_match('/\(\) => (.*)/si', $default, $matches) === 1) { + return $matches[1]; + } + + return $default; + } + + // if type is boolean primarily and no default + // value has been set, add `false` as default + // for clarity + if (Str::startsWith($type, 'boolean')) { + return 'false'; + } + + return null; + } + + public function props(): array + { + $props = A::map( + array_keys($this->json['props'] ?? []), + fn ($key) => $this->prop($key) + ); + + // remove empty props + $props = array_filter($props); + + usort($props, fn ($a, $b) => $a['name'] <=> $b['name']); + + // always return an array + return array_values($props); + } + + protected function read(): array + { + $file = $this->file('dev'); + + if (file_exists($file) === false) { + $file = $this->file('dist'); + } + + return Data::read($file); + } + + public static function root(bool $tmp = false): string + { + return App::instance()->root('panel') . '/' . match ($tmp) { + true => 'tmp', + default => 'dist/ui', + }; + } + + public function since(): string|null + { + return $this->json['tags']['since'][0]['description'] ?? null; + } + + public function slots(): array + { + $slots = A::map( + $this->json['slots'] ?? [], + fn ($slot) => [ + 'name' => $slot['name'], + 'description' => $this->kt($slot['description'] ?? ''), + 'deprecated' => $this->kt($slot['tags']['deprecated'][0]['description'] ?? ''), + 'since' => $slot['tags']['since'][0]['description'] ?? null, + 'bindings' => A::map( + $slot['bindings'] ?? [], + fn ($binding) => [ + 'name' => $binding['name'], + 'type' => $binding['type']['name'] ?? '', + 'description' => $this->kt($binding['description'] ?? '', true), + ] + ), + ] + ); + + usort($slots, fn ($a, $b) => $a['name'] <=> $b['name']); + + return $slots; + } + + public function toArray(): array + { + return [ + 'component' => $this->name(), + 'deprecated' => $this->deprecated(), + 'description' => $this->description(), + 'docBlock' => $this->docBlock(), + 'events' => $this->events(), + 'examples' => $this->examples(), + 'github' => $this->github(), + 'methods' => $this->methods(), + 'props' => $this->props(), + 'since' => $this->since(), + 'slots' => $this->slots(), + ]; + } +} diff --git a/kirby/src/Panel/Lab/Example.php b/kirby/src/Panel/Lab/Example.php new file mode 100644 index 0000000..6df026a --- /dev/null +++ b/kirby/src/Panel/Lab/Example.php @@ -0,0 +1,271 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Example +{ + protected string $root; + protected string|null $tab = null; + protected array $tabs; + + public function __construct( + protected Category $parent, + protected string $id, + string|null $tab = null, + ) { + $this->root = $this->parent->root() . '/' . $this->id; + + if ($this->exists() === false) { + throw new NotFoundException('The example could not be found'); + } + + $this->tabs = $this->collectTabs(); + $this->tab = $this->collectTab($tab); + } + + public function collectTab(string|null $tab): string|null + { + if (empty($this->tabs) === true) { + return null; + } + + if (array_key_exists($tab, $this->tabs) === true) { + return $tab; + } + + return array_key_first($this->tabs); + } + + public function collectTabs(): array + { + $tabs = []; + + foreach (Dir::inventory($this->root)['children'] as $child) { + $tabs[$child['dirname']] = [ + 'name' => $child['dirname'], + 'label' => $child['slug'], + 'link' => '/lab/' . $this->parent->id() . '/' . $this->id . '/' . $child['dirname'] + ]; + } + + return $tabs; + } + + public function exists(): bool + { + return is_dir($this->root) === true; + } + + public function file(string $filename): string + { + return $this->parent->root() . '/' . $this->path() . '/' . $filename; + } + + public function github(): string + { + $path = Str::after($this->root(), App::instance()->root('kirby')); + + if ($tab = $this->tab()) { + $path .= '/' . $tab; + } + + return 'https://github.com/getkirby/kirby/tree/main' . $path; + } + + public function id(): string + { + return $this->id; + } + + public function load(string $filename): array|null + { + if ($file = $this->file($filename)) { + return F::load($file); + } + + return null; + } + + public function module(): string + { + return $this->url() . '/index.vue'; + } + + public function path(): string + { + return match ($this->tab) { + null => $this->id, + default => $this->id . '/' . $this->tab + }; + } + + public function props(): array + { + if ($this->tab !== null) { + $props = $this->load('../index.php'); + } + + return array_replace_recursive( + $props ?? [], + $this->load('index.php') ?? [] + ); + } + + public function read(string $filename): string|null + { + $file = $this->file($filename); + + if (is_file($file) === false) { + return null; + } + + return F::read($file); + } + + public function root(): string + { + return $this->root; + } + + public function serve(): Response + { + return new Response($this->vue()['script'], 'application/javascript'); + } + + public function tab(): string|null + { + return $this->tab; + } + + public function tabs(): array + { + return $this->tabs; + } + + public function template(string $filename): string|null + { + $file = $this->file($filename); + + if (is_file($file) === false) { + return null; + } + + $data = $this->props(); + return (new Template($file))->render($data); + } + + public function title(): string + { + return basename($this->id); + } + + public function toArray(): array + { + return [ + 'image' => [ + 'icon' => $this->parent->icon(), + 'back' => 'white', + ], + 'text' => $this->title(), + 'link' => $this->url() + ]; + } + + public function url(): string + { + return '/lab/' . $this->parent->id() . '/' . $this->path(); + } + + public function vue(): array + { + // read the index.vue file (or programmabel Vue PHP file) + $file = $this->read('index.vue'); + $file ??= $this->template('index.vue.php'); + $file ??= ''; + + // extract parts + $parts['template'] = $this->vueTemplate($file); + $parts['examples'] = $this->vueExamples($parts['template']); + $parts['script'] = $this->vueScript($file); + $parts['style'] = $this->vueStyle($file); + + return $parts; + } + + public function vueExamples(string|null $template): array + { + $template ??= ''; + $examples = []; + + if (preg_match_all('!(.*?)<\/k-lab-example>!s', $template, $matches)) { + foreach ($matches[1] as $key => $name) { + $code = $matches[2][$key]; + + // only use the code between the @code and @code-end comments + if (preg_match('$(.*?)$s', $code, $match)) { + $code = $match[1]; + } + + if (preg_match_all('/^(\t*)\S/m', $code, $indents)) { + // get minimum indent + $indents = array_map(fn ($i) => strlen($i), $indents[1]); + $indents = min($indents); + + // strip minimum indent from each line + $code = preg_replace('/^\t{' . $indents . '}/m', '', $code); + } + + $examples[$name] = trim($code); + } + } + + return $examples; + } + + public function vueScript(string $file): string + { + if (preg_match('!!s', $file, $match)) { + return trim($match[1]); + } + + return 'export default {}'; + } + + public function vueStyle(string $file): string|null + { + if (preg_match('!!s', $file, $match)) { + return trim($match[1]); + } + + return null; + } + + public function vueTemplate(string $file): string|null + { + if (preg_match('!!s', $file, $match)) { + return preg_replace('!^\n!', '', $match[1]); + } + + return null; + } +} diff --git a/kirby/src/Panel/Lab/Snippet.php b/kirby/src/Panel/Lab/Snippet.php new file mode 100644 index 0000000..0739eb7 --- /dev/null +++ b/kirby/src/Panel/Lab/Snippet.php @@ -0,0 +1,26 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Snippet extends BaseSnippet +{ + public static function root(): string + { + return __DIR__ . '/snippets'; + } +} diff --git a/kirby/src/Panel/Lab/Template.php b/kirby/src/Panel/Lab/Template.php new file mode 100644 index 0000000..71cf484 --- /dev/null +++ b/kirby/src/Panel/Lab/Template.php @@ -0,0 +1,34 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Template extends BaseTemplate +{ + public function __construct( + public string $file + ) { + parent::__construct( + name: basename($this->file) + ); + } + + public function file(): string|null + { + return $this->file; + } +} diff --git a/kirby/src/Panel/Menu.php b/kirby/src/Panel/Menu.php new file mode 100644 index 0000000..c362665 --- /dev/null +++ b/kirby/src/Panel/Menu.php @@ -0,0 +1,221 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Menu +{ + public function __construct( + protected array $areas = [], + protected array $permissions = [], + protected string|null $current = null + ) { + } + + /** + * Returns all areas that are configured for the menu + * @internal + */ + public function areas(): array + { + // get from config option which areas should be listed in the menu + $kirby = App::instance(); + $areas = $kirby->option('panel.menu'); + + if ($areas instanceof Closure) { + $areas = $areas($kirby); + } + + // if no config is defined… + if ($areas === null) { + // ensure that some defaults are on top in the right order + $defaults = ['site', 'languages', 'users', 'system']; + // add all other areas after that + $additionals = array_diff(array_keys($this->areas), $defaults); + $areas = array_merge($defaults, $additionals); + } + + $result = []; + + foreach ($areas as $id => $area) { + // separator, keep as is in array + if ($area === '-') { + $result[] = '-'; + continue; + } + + // for a simple id, get global area definition + if (is_numeric($id) === true) { + $id = $area; + $area = $this->areas[$id] ?? null; + } + + // did not receive custom entry definition in config, + // but also is not a global area + if ($area === null) { + continue; + } + + // merge area definition (e.g. from config) + // with global area definition + if (is_array($area) === true) { + $area = array_merge( + $this->areas[$id] ?? [], + ['menu' => true], + $area + ); + $area = Panel::area($id, $area); + } + + $result[] = $area; + } + + return $result; + } + + /** + * Transforms an area definition into a menu entry + * @internal + */ + public function entry(array $area): array|false + { + // areas without access permissions get skipped entirely + if ($this->hasPermission($area['id']) === false) { + return false; + } + + // check menu setting from the area definition + $menu = $area['menu'] ?? false; + + // menu setting can be a callback + // that returns true, false or 'disabled' + if ($menu instanceof Closure) { + $menu = $menu($this->areas, $this->permissions, $this->current); + } + + // false will remove the area/entry entirely + //just like with disabled permissions + if ($menu === false) { + return false; + } + + $menu = match ($menu) { + 'disabled' => ['disabled' => true], + true => [], + default => $menu + }; + + $entry = array_merge([ + 'current' => $this->isCurrent( + $area['id'], + $area['current'] ?? null + ), + 'icon' => $area['icon'] ?? null, + 'link' => $area['link'] ?? null, + 'dialog' => $area['dialog'] ?? null, + 'drawer' => $area['drawer'] ?? null, + 'text' => $area['label'], + ], $menu); + + // unset the link (which is always added by default to an area) + // if a dialog or drawer should be opened instead + if (isset($entry['dialog']) || isset($entry['drawer'])) { + unset($entry['link']); + } + + return array_filter($entry); + } + + /** + * Returns all menu entries + */ + public function entries(): array + { + $entries = []; + $areas = $this->areas(); + + foreach ($areas as $area) { + if ($area === '-') { + $entries[] = '-'; + } elseif ($entry = $this->entry($area)) { + $entries[] = $entry; + } + } + + $entries[] = '-'; + + return array_merge($entries, $this->options()); + } + + /** + * Checks if the access permission to a specific area is granted. + * Defaults to allow access. + * @internal + */ + public function hasPermission(string $id): bool + { + return $this->permissions['access'][$id] ?? true; + } + + /** + * Whether the menu entry should receive aria-current + * @internal + */ + public function isCurrent( + string $id, + bool|Closure|null $callback = null + ): bool { + if ($callback !== null) { + if ($callback instanceof Closure) { + $callback = $callback($this->current); + } + + return $callback; + } + + return $this->current === $id; + } + + /** + * Default options entries for bottom of menu + * @internal + */ + public function options(): array + { + $options = [ + [ + 'icon' => 'edit-line', + 'dialog' => 'changes', + 'text' => I18n::translate('changes'), + ], + [ + 'current' => $this->isCurrent('account'), + 'icon' => 'account', + 'link' => 'account', + 'disabled' => $this->hasPermission('account') === false, + 'text' => I18n::translate('view.account'), + ], + [ + 'icon' => 'logout', + 'link' => 'logout', + 'text' => I18n::translate('logout') + ] + ]; + + return $options; + } +} diff --git a/kirby/src/Panel/Model.php b/kirby/src/Panel/Model.php new file mode 100644 index 0000000..7338405 --- /dev/null +++ b/kirby/src/Panel/Model.php @@ -0,0 +1,421 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class Model +{ + public function __construct( + protected ModelWithContent $model + ) { + } + + /** + * Get the content values for the model + */ + public function content(): array + { + return Form::for($this->model)->values(); + } + + /** + * Returns the drag text from a custom callback + * if the callback is defined in the config + * @internal + * + * @param string $type markdown or kirbytext + */ + public function dragTextFromCallback(string $type, ...$args): string|null + { + $option = 'panel.' . $type . '.' . $this->model::CLASS_ALIAS . 'DragText'; + $callback = $this->model->kirby()->option($option); + + if ($callback instanceof Closure) { + return $callback($this->model, ...$args); + } + + return null; + } + + /** + * Returns the correct drag text type + * depending on the given type or the + * configuration + * + * @internal + * + * @param string|null $type (`auto`|`kirbytext`|`markdown`) + */ + public function dragTextType(string|null $type = null): string + { + $type ??= 'auto'; + + if ($type === 'auto') { + $kirby = $this->model->kirby(); + $type = $kirby->option('panel.kirbytext', true) ? 'kirbytext' : 'markdown'; + } + + return $type === 'markdown' ? 'markdown' : 'kirbytext'; + } + + /** + * Returns the setup for a dropdown option + * which is used in the changes dropdown + * for example. + */ + public function dropdownOption(): array + { + return [ + 'icon' => 'page', + 'image' => $this->image(['back' => 'black']), + 'link' => $this->url(true), + 'text' => $this->model->id(), + ]; + } + + /** + * Returns the Panel image definition + * @internal + */ + public function image( + string|array|false|null $settings = [], + string $layout = 'list' + ): array|null { + // completely switched off + if ($settings === false) { + return null; + } + + // skip image thumbnail if option + // is explicitly set to show the icon + if ($settings === 'icon') { + $settings = ['query' => false]; + } elseif (is_string($settings) === true) { + // convert string settings to proper array + $settings = ['query' => $settings]; + } + + // merge with defaults and blueprint option + $settings = array_merge( + $this->imageDefaults(), + $settings ?? [], + $this->model->blueprint()->image() ?? [], + ); + + if ($image = $this->imageSource($settings['query'] ?? null)) { + // main url + $settings['url'] = $image->url(); + + if ($image->isResizable() === true) { + // only create srcsets for resizable files + $settings['src'] = static::imagePlaceholder(); + $settings['srcset'] = $this->imageSrcset($image, $layout, $settings); + } elseif ($image->isViewable() === true) { + $settings['src'] = $image->url(); + } + } + + unset($settings['query']); + + // resolve remaining options defined as query + return A::map($settings, function ($option) { + if (is_string($option) === false) { + return $option; + } + + return $this->model->toString($option); + }); + } + + /** + * Default settings for Panel image + */ + protected function imageDefaults(): array + { + return [ + 'back' => 'pattern', + 'color' => 'gray-500', + 'cover' => false, + 'icon' => 'page' + ]; + } + + /** + * Data URI placeholder string for Panel image + * @internal + */ + public static function imagePlaceholder(): string + { + return 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw'; + } + + /** + * Returns the image file object based on provided query + * @internal + */ + protected function imageSource( + string|null $query = null + ): CmsFile|Asset|null { + $image = $this->model->query($query ?? null); + + // validate the query result + if ( + $image instanceof CmsFile || + $image instanceof Asset + ) { + return $image; + } + + return null; + } + + /** + * Provides the correct srcset string based on + * the layout and settings + * @internal + */ + protected function imageSrcset( + CmsFile|Asset $image, + string $layout, + array $settings + ): string|null { + // depending on layout type, set different sizes + // to have multiple options for the srcset attribute + $sizes = match ($layout) { + 'cards' => [352, 864, 1408], + 'cardlets' => [96, 192], + default => [38, 76] + }; + + // no additional modfications needed if `cover: false` + if (($settings['cover'] ?? false) === false) { + return $image->srcset($sizes); + } + + // for card layouts with `cover: true` provide + // crops based on the card ratio + if ($layout === 'cards') { + $ratio = explode('/', $settings['ratio'] ?? '1/1'); + $ratio = $ratio[0] / $ratio[1]; + + return $image->srcset([ + $sizes[0] . 'w' => [ + 'width' => $sizes[0], + 'height' => round($sizes[0] / $ratio), + 'crop' => true + ], + $sizes[1] . 'w' => [ + 'width' => $sizes[1], + 'height' => round($sizes[1] / $ratio), + 'crop' => true + ], + $sizes[2] . 'w' => [ + 'width' => $sizes[2], + 'height' => round($sizes[2] / $ratio), + 'crop' => true + ] + ]); + } + + // for list and cardlets with `cover: true` + // provide square crops in two resolutions + return $image->srcset([ + '1x' => [ + 'width' => $sizes[0], + 'height' => $sizes[0], + 'crop' => true + ], + '2x' => [ + 'width' => $sizes[1], + 'height' => $sizes[1], + 'crop' => true + ] + ]); + } + + /** + * Checks for disabled dropdown options according + * to the given permissions + */ + public function isDisabledDropdownOption( + string $action, + array $options, + array $permissions + ): bool { + $option = $options[$action] ?? true; + + return + $permissions[$action] === false || + $option === false || + $option === 'false'; + } + + /** + * Returns lock info for the Panel + * + * @return array|false array with lock info, + * false if locking is not supported + */ + public function lock(): array|false + { + return $this->model->lock()?->toArray() ?? false; + } + + /** + * Returns an array of all actions + * that can be performed in the Panel + * This also checks for the lock status + * + * @param array $unlock An array of options that will be force-unlocked + */ + public function options(array $unlock = []): array + { + $options = $this->model->permissions()->toArray(); + + if ($this->model->isLocked()) { + foreach ($options as $key => $value) { + if (in_array($key, $unlock)) { + continue; + } + + $options[$key] = false; + } + } + + return $options; + } + + /** + * Returns the full path without leading slash + */ + abstract public function path(): string; + + /** + * Prepares the response data for page pickers + * and page fields + */ + public function pickerData(array $params = []): array + { + return [ + 'id' => $this->model->id(), + 'image' => $this->image( + $params['image'] ?? [], + $params['layout'] ?? 'list' + ), + 'info' => $this->model->toSafeString($params['info'] ?? false), + 'link' => $this->url(true), + 'sortable' => true, + 'text' => $this->model->toSafeString($params['text'] ?? false), + 'uuid' => $this->model->uuid()?->toString() ?? $this->model->id(), + ]; + } + + /** + * Returns the data array for the + * view's component props + * @internal + */ + public function props(): array + { + $blueprint = $this->model->blueprint(); + $request = $this->model->kirby()->request(); + $tabs = $blueprint->tabs(); + $tab = $blueprint->tab($request->get('tab')) ?? $tabs[0] ?? null; + + $props = [ + 'lock' => $this->lock(), + 'permissions' => $this->model->permissions()->toArray(), + 'tabs' => $tabs, + ]; + + // only send the tab if it exists + // this will let the vue component define + // a proper default value + if ($tab) { + $props['tab'] = $tab; + } + + return $props; + } + + /** + * Returns link url and title + * for model (e.g. used for prev/next navigation) + * @internal + */ + public function toLink(string $title = 'title'): array + { + return [ + 'link' => $this->url(true), + 'title' => $title = (string)$this->model->{$title}() + ]; + } + + /** + * Returns link url and title + * for optional sibling model and + * preserves tab selection + * + * @internal + */ + protected function toPrevNextLink( + ModelWithContent|null $model = null, + string $title = 'title' + ): array|null { + if ($model === null) { + return null; + } + + $data = $model->panel()->toLink($title); + + if ($tab = $model->kirby()->request()->get('tab')) { + $uri = new Uri($data['link'], [ + 'query' => ['tab' => $tab] + ]); + + $data['link'] = $uri->toString(); + } + + return $data; + } + + /** + * Returns the url to the editing view + * in the Panel + * + * @internal + */ + public function url(bool $relative = false): string + { + if ($relative === true) { + return '/' . $this->path(); + } + + return $this->model->kirby()->url('panel') . '/' . $this->path(); + } + + /** + * Returns the data array for + * this model's Panel view + * + * @internal + */ + abstract public function view(): array; +} diff --git a/kirby/src/Panel/Page.php b/kirby/src/Panel/Page.php new file mode 100644 index 0000000..72c564c --- /dev/null +++ b/kirby/src/Panel/Page.php @@ -0,0 +1,369 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Page extends Model +{ + /** + * @var \Kirby\Cms\Page + */ + protected ModelWithContent $model; + + /** + * Breadcrumb array + */ + public function breadcrumb(): array + { + $parents = $this->model->parents()->flip()->merge($this->model); + + return $parents->values( + fn ($parent) => [ + 'label' => $parent->title()->toString(), + 'link' => $parent->panel()->url(true), + ] + ); + } + + /** + * Provides a kirbytag or markdown + * tag for the page, which will be + * used in the panel, when the page + * gets dragged onto a textarea + * + * @internal + * @param string|null $type (`auto`|`kirbytext`|`markdown`) + */ + public function dragText(string|null $type = null): string + { + $type = $this->dragTextType($type); + + if ($callback = $this->dragTextFromCallback($type)) { + return $callback; + } + + $title = $this->model->title(); + + // type: markdown + if ($type === 'markdown') { + $url = $this->model->permalink() ?? $this->model->url(); + return '[' . $title . '](' . $url . ')'; + } + + // type: kirbytext + $link = $this->model->uuid() ?? $this->model->uri(); + return '(link: ' . $link . ' text: ' . $title . ')'; + } + + /** + * Provides options for the page dropdown + */ + public function dropdown(array $options = []): array + { + $page = $this->model; + $request = $page->kirby()->request(); + $defaults = $request->get(['view', 'sort', 'delete']); + $options = array_merge($defaults, $options); + + $permissions = $this->options(['preview']); + $view = $options['view'] ?? 'view'; + $url = $this->url(true); + $result = []; + + if ($view === 'list') { + $result['preview'] = [ + 'link' => $page->previewUrl(), + 'target' => '_blank', + 'icon' => 'open', + 'text' => I18n::translate('open'), + 'disabled' => $this->isDisabledDropdownOption('preview', $options, $permissions) + ]; + $result[] = '-'; + } + + $result['changeTitle'] = [ + 'dialog' => [ + 'url' => $url . '/changeTitle', + 'query' => [ + 'select' => 'title' + ] + ], + 'icon' => 'title', + 'text' => I18n::translate('rename'), + 'disabled' => $this->isDisabledDropdownOption('changeTitle', $options, $permissions) + ]; + + $result['changeSlug'] = [ + 'dialog' => [ + 'url' => $url . '/changeTitle', + 'query' => [ + 'select' => 'slug' + ] + ], + 'icon' => 'url', + 'text' => I18n::translate('page.changeSlug'), + 'disabled' => $this->isDisabledDropdownOption('changeSlug', $options, $permissions) + ]; + + $result['changeStatus'] = [ + 'dialog' => $url . '/changeStatus', + 'icon' => 'preview', + 'text' => I18n::translate('page.changeStatus'), + 'disabled' => $this->isDisabledDropdownOption('changeStatus', $options, $permissions) + ]; + + $siblings = $page->parentModel()->children()->listed()->not($page); + + $result['changeSort'] = [ + 'dialog' => $url . '/changeSort', + 'icon' => 'sort', + 'text' => I18n::translate('page.sort'), + 'disabled' => $siblings->count() === 0 || $this->isDisabledDropdownOption('sort', $options, $permissions) + ]; + + $result['changeTemplate'] = [ + 'dialog' => $url . '/changeTemplate', + 'icon' => 'template', + 'text' => I18n::translate('page.changeTemplate'), + 'disabled' => $this->isDisabledDropdownOption('changeTemplate', $options, $permissions) + ]; + + $result[] = '-'; + + $result['move'] = [ + 'dialog' => $url . '/move', + 'icon' => 'parent', + 'text' => I18n::translate('page.move'), + 'disabled' => $this->isDisabledDropdownOption('move', $options, $permissions) + ]; + + $result['duplicate'] = [ + 'dialog' => $url . '/duplicate', + 'icon' => 'copy', + 'text' => I18n::translate('duplicate'), + 'disabled' => $this->isDisabledDropdownOption('duplicate', $options, $permissions) + ]; + + $result[] = '-'; + + $result['delete'] = [ + 'dialog' => $url . '/delete', + 'icon' => 'trash', + 'text' => I18n::translate('delete'), + 'disabled' => $this->isDisabledDropdownOption('delete', $options, $permissions) + ]; + + return $result; + } + + /** + * Returns the setup for a dropdown option + * which is used in the changes dropdown + * for example. + */ + public function dropdownOption(): array + { + return [ + 'text' => $this->model->title()->value(), + ] + parent::dropdownOption(); + } + + /** + * Returns the escaped Id, which is + * used in the panel to make routing work properly + */ + public function id(): string + { + return str_replace('/', '+', $this->model->id()); + } + + /** + * Default settings for the page's Panel image + */ + protected function imageDefaults(): array + { + $defaults = []; + + if ($icon = $this->model->blueprint()->icon()) { + $defaults['icon'] = $icon; + } + + return array_merge(parent::imageDefaults(), $defaults); + } + + /** + * Returns the image file object based on provided query + * + * @internal + */ + protected function imageSource( + string|null $query = null + ): CmsFile|Asset|null { + $query ??= 'page.image'; + return parent::imageSource($query); + } + + /** + * Returns the full path without leading slash + * + * @internal + */ + public function path(): string + { + return 'pages/' . $this->id(); + } + + /** + * Prepares the response data for page pickers + * and page fields + */ + public function pickerData(array $params = []): array + { + $params['text'] ??= '{{ page.title }}'; + + return array_merge(parent::pickerData($params), [ + 'dragText' => $this->dragText(), + 'hasChildren' => $this->model->hasChildren(), + 'url' => $this->model->url() + ]); + } + + /** + * The best applicable position for + * the position/status dialog + */ + public function position(): int + { + return + $this->model->num() ?? + $this->model->parentModel()->children()->listed()->not($this->model)->count() + 1; + } + + /** + * Returns navigation array with + * previous and next page + * based on blueprint definition + * + * @internal + */ + public function prevNext(): array + { + $page = $this->model; + + // create siblings collection based on + // blueprint navigation + $siblings = function (string $direction) use ($page) { + $navigation = $page->blueprint()->navigation(); + $sortBy = $navigation['sortBy'] ?? null; + $status = $navigation['status'] ?? null; + $template = $navigation['template'] ?? null; + $direction = $direction === 'prev' ? 'prev' : 'next'; + + // if status is defined in navigation, + // all items in the collection are used + // (drafts, listed and unlisted) otherwise + // it depends on the status of the page + $siblings = $status !== null ? $page->parentModel()->childrenAndDrafts() : $page->siblings(); + + // sort the collection if custom sortBy + // defined in navigation otherwise + // default sorting will apply + if ($sortBy !== null) { + $siblings = $siblings->sort(...$siblings::sortArgs($sortBy)); + } + + $siblings = $page->{$direction . 'All'}($siblings); + + if (empty($navigation) === false) { + $statuses = (array)($status ?? $page->status()); + $templates = (array)($template ?? $page->intendedTemplate()); + + // do not filter if template navigation is all + if (in_array('all', $templates) === false) { + $siblings = $siblings->filter('intendedTemplate', 'in', $templates); + } + + // do not filter if status navigation is all + if (in_array('all', $statuses) === false) { + $siblings = $siblings->filter('status', 'in', $statuses); + } + } else { + $siblings = $siblings + ->filter('intendedTemplate', $page->intendedTemplate()) + ->filter('status', $page->status()); + } + + return $siblings->filter('isListable', true); + }; + + return [ + 'next' => fn () => $this->toPrevNextLink($siblings('next')->first()), + 'prev' => fn () => $this->toPrevNextLink($siblings('prev')->last()) + ]; + } + + /** + * Returns the data array for the + * view's component props + * + * @internal + */ + public function props(): array + { + $page = $this->model; + + return array_merge( + parent::props(), + $this->prevNext(), + [ + 'blueprint' => $page->intendedTemplate()->name(), + 'model' => [ + 'content' => $this->content(), + 'id' => $page->id(), + 'link' => $this->url(true), + 'parent' => $page->parentModel()->panel()->url(true), + 'previewUrl' => $page->previewUrl(), + 'status' => $page->status(), + 'title' => $page->title()->toString(), + ], + 'status' => function () use ($page) { + if ($status = $page->status()) { + return $page->blueprint()->status()[$status] ?? null; + } + }, + ] + ); + } + + /** + * Returns the data array for + * this model's Panel view + * + * @internal + */ + public function view(): array + { + $page = $this->model; + + return [ + 'breadcrumb' => $page->panel()->breadcrumb(), + 'component' => 'k-page-view', + 'props' => $this->props(), + 'title' => $page->title()->toString(), + ]; + } +} diff --git a/kirby/src/Panel/PageCreateDialog.php b/kirby/src/Panel/PageCreateDialog.php new file mode 100644 index 0000000..68a7bf1 --- /dev/null +++ b/kirby/src/Panel/PageCreateDialog.php @@ -0,0 +1,313 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class PageCreateDialog +{ + protected PageBlueprint $blueprint; + protected Page $model; + protected Page|Site $parent; + protected string $parentId; + protected string|null $sectionId; + protected string|null $slug; + protected string|null $template; + protected string|null $title; + protected Page|Site $view; + protected string|null $viewId; + + public static array $fieldTypes = [ + 'checkboxes', + 'date', + 'email', + 'info', + 'line', + 'link', + 'list', + 'number', + 'multiselect', + 'radio', + 'range', + 'select', + 'slug', + 'tags', + 'tel', + 'text', + 'toggles', + 'time', + 'url' + ]; + + public function __construct( + string|null $parentId, + string|null $sectionId, + string|null $template, + string|null $viewId, + + // optional + string|null $slug = null, + string|null $title = null, + ) { + $this->parentId = $parentId ?? 'site'; + $this->parent = Find::parent($this->parentId); + $this->sectionId = $sectionId; + $this->slug = $slug; + $this->template = $template; + $this->title = $title; + $this->viewId = $viewId; + $this->view = Find::parent($this->viewId ?? $this->parentId); + } + + /** + * Get the blueprint settings for the new page + */ + public function blueprint(): PageBlueprint + { + // create a temporary page object + return $this->blueprint ??= $this->model()->blueprint(); + } + + /** + * Get an array of all blueprints for the parent view + */ + public function blueprints(): array + { + return A::map( + $this->view->blueprints($this->sectionId), + function ($blueprint) { + $blueprint['name'] ??= $blueprint['value'] ?? null; + return $blueprint; + } + ); + } + + /** + * All the default fields for the dialog + */ + public function coreFields(): array + { + $title = $this->blueprint()->create()['title']['label'] ?? 'title'; + + return [ + 'title' => Field::title([ + 'label' => I18n::translate($title, $title), + 'required' => true, + 'preselect' => true + ]), + 'slug' => Field::slug([ + 'required' => true, + 'sync' => 'title', + 'path' => $this->parent instanceof Page ? '/' . $this->parent->id() . '/' : '/' + ]), + 'parent' => Field::hidden(), + 'section' => Field::hidden(), + 'template' => Field::hidden(), + 'view' => Field::hidden(), + ]; + } + + /** + * Loads custom fields for the page type + */ + public function customFields(): array + { + $custom = []; + $ignore = ['title', 'slug', 'parent', 'template']; + $blueprint = $this->blueprint(); + $fields = $blueprint->fields(); + + foreach ($blueprint->create()['fields'] ?? [] as $name) { + if (!$field = ($fields[$name] ?? null)) { + throw new InvalidArgumentException('Unknown field "' . $name . '" in create dialog'); + } + + if (in_array($field['type'], static::$fieldTypes) === false) { + throw new InvalidArgumentException('Field type "' . $field['type'] . '" not supported in create dialog'); + } + + if (in_array($name, $ignore) === true) { + throw new InvalidArgumentException('Field name "' . $name . '" not allowed as custom field in create dialog'); + } + + // switch all fields to 1/1 + $field['width'] = '1/1'; + + // add the field to the form + $custom[$name] = $field; + } + + // create form so that field props, options etc. + // can be properly resolved + $form = new Form([ + 'fields' => $custom, + 'model' => $this->model(), + 'strict' => true + ]); + + return $form->fields()->toArray(); + } + + /** + * Loads all the fields for the dialog + */ + public function fields(): array + { + return array_merge( + $this->coreFields(), + $this->customFields() + ); + } + + /** + * Provides all the props for the + * dialog, including the fields and + * initial values + */ + public function load(): array + { + $blueprints = $this->blueprints(); + + $this->template ??= $blueprints[0]['name']; + + $status = $this->blueprint()->create()['status'] ?? 'draft'; + $status = $this->blueprint()->status()[$status]['label'] ?? I18n::translate('page.status.' . $status); + + return [ + 'component' => 'k-page-create-dialog', + 'props' => [ + 'blueprints' => $blueprints, + 'fields' => $this->fields(), + 'submitButton' => I18n::template('page.create', [ + 'status' => $status + ]), + 'template' => $this->template, + 'value' => $this->value() + ] + ]; + } + + /** + * Temporary model for the page to + * be created, used to properly render + * the blueprint for fields + */ + public function model(): Page + { + return $this->model ??= Page::factory([ + 'slug' => 'new', + 'template' => $this->template, + 'model' => $this->template, + 'parent' => $this->parent instanceof Page ? $this->parent : null + ]); + } + + /** + * Prepares and cleans up the input data + */ + public function sanitize(array $input): array + { + $input['slug'] ??= $this->slug ?? ''; + $input['title'] ??= $this->title ?? ''; + + $content = [ + 'title' => trim($input['title']), + ]; + + foreach ($this->customFields() as $name => $field) { + $content[$name] = $input[$name] ?? null; + } + + return [ + 'content' => $content, + 'slug' => $input['slug'], + 'template' => $this->template, + ]; + } + + /** + * Submits the dialog form and creates the new page + */ + public function submit(array $input): array + { + $input = $this->sanitize($input); + $status = $this->blueprint()->create()['status'] ?? 'draft'; + + // validate the input before creating the page + $this->validate($input, $status); + + $page = $this->parent->createChild($input); + + if ($status !== 'draft') { + // grant all permissions as the status is set in the blueprint and + // should not be treated as if the user would try to change it + $page->kirby()->impersonate( + 'kirby', + fn () => $page->changeStatus($status) + ); + } + + $payload = [ + 'event' => 'page.create' + ]; + + // add redirect, if not explicitly disabled + if (($this->blueprint()->create()['redirect'] ?? null) !== false) { + $payload['redirect'] = $page->panel()->url(true); + } + + return $payload; + } + + public function validate(array $input, string $status = 'draft'): bool + { + // basic validation + PageRules::validateTitleLength($input['content']['title']); + PageRules::validateSlugLength($input['slug']); + + // if the page is supposed to be published directly, + // ensure that all field validations are met + if ($status !== 'draft') { + // create temporary form to validate the input + $form = Form::for($this->model(), ['values' => $input['content']]); + + if ($form->isInvalid() === true) { + throw new InvalidArgumentException([ + 'key' => 'page.changeStatus.incomplete' + ]); + } + } + + return true; + } + + public function value(): array + { + return [ + 'parent' => $this->parentId, + 'section' => $this->sectionId, + 'slug' => $this->slug ?? '', + 'template' => $this->template, + 'title' => $this->title ?? '', + 'view' => $this->viewId, + ]; + } +} diff --git a/kirby/src/Panel/Panel.php b/kirby/src/Panel/Panel.php new file mode 100644 index 0000000..cb3698b --- /dev/null +++ b/kirby/src/Panel/Panel.php @@ -0,0 +1,593 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Panel +{ + /** + * Normalize a panel area + */ + public static function area(string $id, array|string $area): array + { + $area['id'] = $id; + $area['label'] ??= $id; + $area['breadcrumb'] ??= []; + $area['breadcrumbLabel'] ??= $area['label']; + $area['title'] = $area['label']; + $area['menu'] ??= false; + $area['link'] ??= $id; + $area['search'] ??= null; + + return $area; + } + + /** + * Collect all registered areas + */ + public static function areas(): array + { + $kirby = App::instance(); + $system = $kirby->system(); + $user = $kirby->user(); + $areas = $kirby->load()->areas(); + + // the system is not ready + if ( + $system->isOk() === false || + $system->isInstalled() === false + ) { + return [ + 'installation' => static::area( + 'installation', + $areas['installation'] + ), + ]; + } + + // not yet authenticated + if (!$user) { + return [ + 'logout' => static::area('logout', $areas['logout']), + // login area last because it defines a fallback route + 'login' => static::area('login', $areas['login']), + ]; + } + + unset($areas['installation'], $areas['login']); + + // Disable the language area for single-language installations + // This does not check for installed languages. Otherwise you'd + // not be able to add the first language through the view + if (!$kirby->option('languages')) { + unset($areas['languages']); + } + + $result = []; + + foreach ($areas as $id => $area) { + $result[$id] = static::area($id, $area); + } + + return $result; + } + + /** + * Check for access permissions + */ + public static function firewall( + User|null $user = null, + string|null $areaId = null + ): bool { + // a user has to be logged in + if ($user === null) { + throw new PermissionException(['key' => 'access.panel']); + } + + // get all access permissions for the user role + $permissions = $user->role()->permissions()->toArray()['access']; + + // check for general panel access + if (($permissions['panel'] ?? true) !== true) { + throw new PermissionException(['key' => 'access.panel']); + } + + // don't check if the area is not defined + if (empty($areaId) === true) { + return true; + } + + // undefined area permissions means access + if (isset($permissions[$areaId]) === false) { + return true; + } + + // no access + if ($permissions[$areaId] !== true) { + throw new PermissionException(['key' => 'access.view']); + } + + return true; + } + + + /** + * Redirect to a Panel url + * + * @throws \Kirby\Panel\Redirect + * @codeCoverageIgnore + */ + public static function go(string|null $url = null, int $code = 302): void + { + throw new Redirect(static::url($url), $code); + } + + /** + * Check if the given user has access to the panel + * or to a given area + */ + public static function hasAccess( + User|null $user = null, + string|null $area = null + ): bool { + try { + static::firewall($user, $area); + return true; + } catch (Throwable) { + return false; + } + } + + /** + * Checks for a Fiber request + * via get parameters or headers + */ + public static function isFiberRequest(): bool + { + $request = App::instance()->request(); + + if ($request->method() === 'GET') { + return + (bool)($request->get('_json') ?? + $request->header('X-Fiber')); + } + + return false; + } + + /** + * Returns a JSON response + * for Fiber calls + */ + public static function json(array $data, int $code = 200): Response + { + $request = App::instance()->request(); + + return Response::json($data, $code, $request->get('_pretty'), [ + 'X-Fiber' => 'true', + 'Cache-Control' => 'no-store, private' + ]); + } + + /** + * Checks for a multilanguage installation + */ + public static function multilang(): bool + { + // multilang setup check + $kirby = App::instance(); + return $kirby->option('languages') || $kirby->multilang(); + } + + /** + * Returns the referrer path if present + */ + public static function referrer(): string + { + $request = App::instance()->request(); + + $referrer = $request->header('X-Fiber-Referrer') + ?? $request->get('_referrer') + ?? ''; + + return '/' . trim($referrer, '/'); + } + + /** + * Creates a Response object from the result of + * a Panel route call + */ + public static function response($result, array $options = []): Response + { + // pass responses directly down to the Kirby router + if ($result instanceof Response) { + return $result; + } + + // interpret missing/empty results as not found + if ($result === null || $result === false) { + $result = new NotFoundException('The data could not be found'); + + // interpret strings as errors + } elseif (is_string($result) === true) { + $result = new Exception($result); + } + + // handle different response types (view, dialog, ...) + return match ($options['type'] ?? null) { + 'dialog' => Dialog::response($result, $options), + 'drawer' => Drawer::response($result, $options), + 'dropdown' => Dropdown::response($result, $options), + 'request' => Request::response($result, $options), + 'search' => Search::response($result, $options), + default => View::response($result, $options) + }; + } + + /** + * Router for the Panel views + */ + public static function router(string|null $path = null): Response|null + { + $kirby = App::instance(); + + if ($kirby->option('panel') === false) { + return null; + } + + // set the translation for Panel UI before + // gathering areas and routes, so that the + // `t()` helper can already be used + static::setTranslation(); + + // set the language in multi-lang installations + static::setLanguage(); + + $areas = static::areas(); + $routes = static::routes($areas); + + // create a micro-router for the Panel + return Router::execute($path, $method = $kirby->request()->method(), $routes, function ($route) use ($areas, $kirby, $method, $path) { + // route needs authentication? + $auth = $route->attributes()['auth'] ?? true; + $areaId = $route->attributes()['area'] ?? null; + $type = $route->attributes()['type'] ?? 'view'; + $area = $areas[$areaId] ?? null; + + // call the route action to check the result + try { + // trigger hook + $route = $kirby->apply( + 'panel.route:before', + compact('route', 'path', 'method'), + 'route' + ); + + // check for access before executing area routes + if ($auth !== false) { + static::firewall($kirby->user(), $areaId); + } + + $result = $route->action()->call($route, ...$route->arguments()); + } catch (Throwable $e) { + $result = $e; + } + + $response = static::response($result, [ + 'area' => $area, + 'areas' => $areas, + 'path' => $path, + 'type' => $type + ]); + + return $kirby->apply( + 'panel.route:after', + compact('route', 'path', 'method', 'response'), + 'response' + ); + }); + } + + /** + * Extract the routes from the given array + * of active areas. + */ + public static function routes(array $areas): array + { + $kirby = App::instance(); + + // the browser incompatibility + // warning is always needed + $routes = [ + [ + 'pattern' => 'browser', + 'auth' => false, + 'action' => fn () => new Response( + Tpl::load($kirby->root('kirby') . '/views/browser.php') + ), + ] + ]; + + // register all routes from areas + foreach ($areas as $areaId => $area) { + $routes = array_merge( + $routes, + static::routesForViews($areaId, $area), + static::routesForSearches($areaId, $area), + static::routesForDialogs($areaId, $area), + static::routesForDrawers($areaId, $area), + static::routesForDropdowns($areaId, $area), + static::routesForRequests($areaId, $area), + ); + } + + // if the Panel is already installed and/or the + // user is authenticated, those areas won't be + // included, which is why we add redirect routes + // to main Panel view as fallbacks + $routes[] = [ + 'pattern' => [ + '/', + 'installation', + 'login', + ], + 'action' => fn () => Panel::go(Home::url()), + 'auth' => false + ]; + + // catch all route + $routes[] = [ + 'pattern' => '(:all)', + 'action' => fn (string $pattern) => 'Could not find Panel view for route: ' . $pattern + ]; + + return $routes; + } + + /** + * Extract all routes from an area + */ + public static function routesForDialogs(string $areaId, array $area): array + { + $dialogs = $area['dialogs'] ?? []; + $routes = []; + + foreach ($dialogs as $dialogId => $dialog) { + $routes = array_merge($routes, Dialog::routes( + id: $dialogId, + areaId: $areaId, + prefix: 'dialogs', + options: $dialog + )); + } + + return $routes; + } + + /** + * Extract all routes from an area + */ + public static function routesForDrawers(string $areaId, array $area): array + { + $drawers = $area['drawers'] ?? []; + $routes = []; + + foreach ($drawers as $drawerId => $drawer) { + $routes = array_merge($routes, Drawer::routes( + id: $drawerId, + areaId: $areaId, + prefix: 'drawers', + options: $drawer + )); + } + + return $routes; + } + + /** + * Extract all routes for dropdowns + */ + public static function routesForDropdowns(string $areaId, array $area): array + { + $dropdowns = $area['dropdowns'] ?? []; + $routes = []; + + foreach ($dropdowns as $dropdownId => $dropdown) { + $routes = array_merge($routes, Dropdown::routes( + id: $dropdownId, + areaId: $areaId, + prefix: 'dropdowns', + options: $dropdown + )); + } + + return $routes; + } + + /** + * Extract all routes from an area + */ + public static function routesForRequests(string $areaId, array $area): array + { + $routes = $area['requests'] ?? []; + + foreach ($routes as $key => $route) { + $routes[$key]['area'] = $areaId; + $routes[$key]['type'] = 'request'; + } + + return $routes; + } + + /** + * Extract all routes for searches + */ + public static function routesForSearches(string $areaId, array $area): array + { + $searches = $area['searches'] ?? []; + $routes = []; + + foreach ($searches as $name => $params) { + // create the full routing pattern + $pattern = 'search/' . $name; + + // load event + $routes[] = [ + 'pattern' => $pattern, + 'type' => 'search', + 'area' => $areaId, + 'action' => function () use ($params) { + $kirby = App::instance(); + $request = $kirby->request(); + $query = $request->get('query'); + $limit = (int)$request->get('limit', $kirby->option('panel.search.limit', 10)); + $page = (int)$request->get('page', 1); + + return $params['query']($query, $limit, $page); + } + ]; + } + + return $routes; + } + + /** + * Extract all views from an area + */ + public static function routesForViews(string $areaId, array $area): array + { + $views = $area['views'] ?? []; + $routes = []; + + foreach ($views as $view) { + $view['area'] = $areaId; + $view['type'] = 'view'; + + $when = $view['when'] ?? null; + unset($view['when']); + + // enable the route by default, but if there is a + // when condition closure, it must return `true` + if ( + $when instanceof Closure === false || + $when($view, $area) === true + ) { + $routes[] = $view; + } + } + + return $routes; + } + + /** + * Set the current language in multi-lang + * installations based on the session or the + * query language query parameter + */ + public static function setLanguage(): string|null + { + $kirby = App::instance(); + + // language switcher + if (static::multilang()) { + $fallback = 'en'; + + if ($defaultLanguage = $kirby->defaultLanguage()) { + $fallback = $defaultLanguage->code(); + } + + $session = $kirby->session(); + $sessionLanguage = $session->get('panel.language', $fallback); + $language = $kirby->request()->get('language') ?? $sessionLanguage; + + // keep the language for the next visit + if ($language !== $sessionLanguage) { + $session->set('panel.language', $language); + } + + // activate the current language in Kirby + $kirby->setCurrentLanguage($language); + + return $language; + } + + return null; + } + + /** + * Set the currently active Panel translation + * based on the current user or config + */ + public static function setTranslation(): string + { + $kirby = App::instance(); + + // use the user language for the default translation or + // fall back to the language from the config + $translation = $kirby->user()?->language() ?? + $kirby->panelLanguage(); + + $kirby->setCurrentTranslation($translation); + + return $translation; + } + + /** + * Creates an absolute Panel URL + * independent of the Panel slug config + */ + public static function url(string|null $url = null, array $options = []): string + { + // only touch relative paths + if (Url::isAbsolute($url) === false) { + $kirby = App::instance(); + $slug = $kirby->option('panel.slug', 'panel'); + $path = trim($url, '/'); + + $baseUri = new Uri($kirby->url()); + $basePath = trim($baseUri->path()->toString(), '/'); + + // removes base path if relative path contains it + if (empty($basePath) === false && Str::startsWith($path, $basePath) === true) { + $path = Str::after($path, $basePath); + } + // add the panel slug prefix if it it's not + // included in the path yet + elseif (Str::startsWith($path, $slug . '/') === false) { + $path = $slug . '/' . $path; + } + + // create an absolute URL + $url = CmsUrl::to($path, $options); + } + + return $url; + } +} diff --git a/kirby/src/Panel/Plugins.php b/kirby/src/Panel/Plugins.php new file mode 100644 index 0000000..f264f73 --- /dev/null +++ b/kirby/src/Panel/Plugins.php @@ -0,0 +1,139 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Plugins +{ + /** + * Cache of all collected plugin files + */ + public array|null $files = null; + + /** + * Collects and returns the plugin files for all plugins + */ + public function files(): array + { + if ($this->files !== null) { + return $this->files; + } + + $this->files = []; + + foreach (App::instance()->plugins() as $plugin) { + $this->files[] = $plugin->root() . '/index.css'; + $this->files[] = $plugin->root() . '/index.js'; + // During plugin development, kirbyup adds an index.dev.mjs as entry point, which + // Kirby will load instead of the regular index.js. Since kirbyup is based on Vite, + // it can't use the standard index.js as entry for its development server: + // Vite requires an entry of type module so it can use JavaScript imports, + // but Kirbyup needs index.js to load as a regular script, synchronously. + $this->files[] = $plugin->root() . '/index.dev.mjs'; + } + + return $this->files; + } + + /** + * Returns the last modification + * of the collected plugin files + */ + public function modified(): int + { + $files = $this->files(); + $modified = [0]; + + foreach ($files as $file) { + $modified[] = F::modified($file); + } + + return max($modified); + } + + /** + * Read the files from all plugins and concatenate them + */ + public function read(string $type): string + { + $dist = []; + + foreach ($this->files() as $file) { + // filter out files with a different type + if (F::extension($file) !== $type) { + continue; + } + + // filter out empty files and files that don't exist + $content = F::read($file); + if (!$content) { + continue; + } + + if ($type === 'mjs') { + // index.dev.mjs files are turned into data URIs so they + // can be imported without having to copy them to /media + // (avoids having to clean the files from /media again) + $content = F::uri($file); + } + + if ($type === 'js') { + // filter out all index.js files that shouldn't be loaded + // because an index.dev.mjs exists + if (F::exists(preg_replace('/\.js$/', '.dev.mjs', $file)) === true) { + continue; + } + + $content = trim($content); + + // make sure that each plugin is ended correctly + if (Str::endsWith($content, ';') === false) { + $content .= ';'; + } + } + + $dist[] = $content; + } + + if ($type === 'mjs') { + // if no index.dev.mjs modules exist, we MUST return an empty string instead + // of loading an empty array; this is because the module loader code uses + // top level await, which is not compatible with Kirby's minimum browser + // version requirements and therefore must not appear in a default setup + if (empty($dist)) { + return ''; + } + + $modules = Json::encode($dist); + $modulePromise = "Promise.all($modules.map(url => import(url)))"; + return "try { await $modulePromise } catch (e) { console.error(e) }" . PHP_EOL; + } + + return implode(PHP_EOL . PHP_EOL, $dist); + } + + /** + * Absolute url to the cache file + * This is used by the panel to link the plugins + */ + public function url(string $type): string + { + return App::instance()->url('media') . '/plugins/index.' . $type . '?' . $this->modified(); + } +} diff --git a/kirby/src/Panel/Redirect.php b/kirby/src/Panel/Redirect.php new file mode 100644 index 0000000..d00cd6f --- /dev/null +++ b/kirby/src/Panel/Redirect.php @@ -0,0 +1,42 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Redirect extends Exception +{ + /** + * Returns the HTTP code for the redirect + */ + public function code(): int + { + $codes = [301, 302, 303, 307, 308]; + + if (in_array($this->getCode(), $codes) === true) { + return $this->getCode(); + } + + return 302; + } + + /** + * Returns the URL for the redirect + */ + public function location(): string + { + return $this->getMessage(); + } +} diff --git a/kirby/src/Panel/Request.php b/kirby/src/Panel/Request.php new file mode 100644 index 0000000..9656d7d --- /dev/null +++ b/kirby/src/Panel/Request.php @@ -0,0 +1,24 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Request +{ + /** + * Renders request responses + */ + public static function response($data, array $options = []): Response + { + $data = Json::responseData($data); + return Panel::json($data, $data['code'] ?? 200); + } +} diff --git a/kirby/src/Panel/Search.php b/kirby/src/Panel/Search.php new file mode 100644 index 0000000..f9b4295 --- /dev/null +++ b/kirby/src/Panel/Search.php @@ -0,0 +1,41 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Search extends Json +{ + protected static string $key = '$search'; + + public static function response($data, array $options = []): Response + { + if ( + is_array($data) === true && + array_key_exists('results', $data) === false + ) { + $data = [ + 'results' => $data, + 'pagination' => [ + 'page' => 1, + 'limit' => $total = count($data), + 'total' => $total + ] + ]; + } + + return parent::response($data, $options); + } +} diff --git a/kirby/src/Panel/Site.php b/kirby/src/Panel/Site.php new file mode 100644 index 0000000..68f7892 --- /dev/null +++ b/kirby/src/Panel/Site.php @@ -0,0 +1,91 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Site extends Model +{ + /** + * @var \Kirby\Cms\Site + */ + protected ModelWithContent $model; + + /** + * Returns the setup for a dropdown option + * which is used in the changes dropdown + * for example. + */ + public function dropdownOption(): array + { + return [ + 'icon' => 'home', + 'text' => $this->model->title()->value(), + ] + parent::dropdownOption(); + } + + /** + * Returns the image file object based on provided query + * + * @internal + */ + protected function imageSource( + string|null $query = null + ): CmsFile|Asset|null { + $query ??= 'site.image'; + return parent::imageSource($query); + } + + /** + * Returns the full path without leading slash + */ + public function path(): string + { + return 'site'; + } + + /** + * Returns the data array for the + * view's component props + * + * @internal + */ + public function props(): array + { + return array_merge(parent::props(), [ + 'blueprint' => 'site', + 'model' => [ + 'content' => $this->content(), + 'link' => $this->url(true), + 'previewUrl' => $this->model->previewUrl(), + 'title' => $this->model->title()->toString(), + ] + ]); + } + + /** + * Returns the data array for + * this model's Panel view + * + * @internal + */ + public function view(): array + { + return [ + 'component' => 'k-site-view', + 'props' => $this->props() + ]; + } +} diff --git a/kirby/src/Panel/User.php b/kirby/src/Panel/User.php new file mode 100644 index 0000000..e0a5149 --- /dev/null +++ b/kirby/src/Panel/User.php @@ -0,0 +1,271 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class User extends Model +{ + /** + * @var \Kirby\Cms\User + */ + protected ModelWithContent $model; + + /** + * Breadcrumb array + */ + public function breadcrumb(): array + { + return [ + [ + 'label' => $this->model->username(), + 'link' => $this->url(true), + ] + ]; + } + + /** + * Provides options for the user dropdown + */ + public function dropdown(array $options = []): array + { + $account = $this->model->isLoggedIn(); + $i18nPrefix = $account ? 'account' : 'user'; + $permissions = $this->options(['preview']); + $url = $this->url(true); + $result = []; + + $result[] = [ + 'dialog' => $url . '/changeName', + 'icon' => 'title', + 'text' => I18n::translate($i18nPrefix . '.changeName'), + 'disabled' => $this->isDisabledDropdownOption('changeName', $options, $permissions) + ]; + + $result[] = '-'; + + $result[] = [ + 'dialog' => $url . '/changeEmail', + 'icon' => 'email', + 'text' => I18n::translate('user.changeEmail'), + 'disabled' => $this->isDisabledDropdownOption('changeEmail', $options, $permissions) + ]; + + $result[] = [ + 'dialog' => $url . '/changeRole', + 'icon' => 'bolt', + 'text' => I18n::translate('user.changeRole'), + 'disabled' => $this->isDisabledDropdownOption('changeRole', $options, $permissions) + ]; + + $result[] = [ + 'dialog' => $url . '/changeLanguage', + 'icon' => 'translate', + 'text' => I18n::translate('user.changeLanguage'), + 'disabled' => $this->isDisabledDropdownOption('changeLanguage', $options, $permissions) + ]; + + $result[] = '-'; + + $result[] = [ + 'dialog' => $url . '/changePassword', + 'icon' => 'key', + 'text' => I18n::translate('user.changePassword'), + 'disabled' => $this->isDisabledDropdownOption('changePassword', $options, $permissions) + ]; + + if ($this->model->kirby()->system()->is2FAWithTOTP() === true) { + if ($account || $this->model->kirby()->user()->isAdmin()) { + if ($this->model->secret('totp') !== null) { + $result[] = [ + 'dialog' => $url . '/totp/disable', + 'icon' => 'qr-code', + 'text' => I18n::translate('login.totp.disable.option'), + ]; + } elseif ($account) { + $result[] = [ + 'dialog' => $url . '/totp/enable', + 'icon' => 'qr-code', + 'text' => I18n::translate('login.totp.enable.option') + ]; + } + } + } + + $result[] = '-'; + + $result[] = [ + 'dialog' => $url . '/delete', + 'icon' => 'trash', + 'text' => I18n::translate($i18nPrefix . '.delete'), + 'disabled' => $this->isDisabledDropdownOption('delete', $options, $permissions) + ]; + + return $result; + } + + /** + * Returns the setup for a dropdown option + * which is used in the changes dropdown + * for example. + */ + public function dropdownOption(): array + { + return [ + 'icon' => 'user', + 'text' => $this->model->username(), + ] + parent::dropdownOption(); + } + + public function home(): string|null + { + if ($home = ($this->model->blueprint()->home() ?? null)) { + $url = $this->model->toString($home); + return Url::to($url); + } + + return Panel::url('site'); + } + + /** + * Default settings for the user's Panel image + */ + protected function imageDefaults(): array + { + return array_merge(parent::imageDefaults(), [ + 'back' => 'black', + 'icon' => 'user', + 'ratio' => '1/1', + ]); + } + + /** + * Returns the image file object based on provided query + * @internal + */ + protected function imageSource( + string|null $query = null + ): CmsFile|Asset|null { + if ($query === null) { + return $this->model->avatar(); + } + + return parent::imageSource($query); + } + + /** + * Returns the full path without leading slash + */ + public function path(): string + { + // path to your own account + if ($this->model->isLoggedIn() === true) { + return 'account'; + } + + return 'users/' . $this->model->id(); + } + + /** + * Returns prepared data for the panel user picker + */ + public function pickerData(array $params = []): array + { + $params['text'] ??= '{{ user.username }}'; + + return array_merge(parent::pickerData($params), [ + 'email' => $this->model->email(), + 'username' => $this->model->username(), + ]); + } + + /** + * Returns navigation array with + * previous and next user + * + * @internal + */ + public function prevNext(): array + { + $user = $this->model; + + return [ + 'next' => fn () => $this->toPrevNextLink($user->next(), 'username'), + 'prev' => fn () => $this->toPrevNextLink($user->prev(), 'username') + ]; + } + + /** + * Returns the data array for the + * view's component props + * + * @internal + */ + public function props(): array + { + $user = $this->model; + $account = $user->isLoggedIn(); + + return array_merge( + parent::props(), + $account ? [] : $this->prevNext(), + [ + 'blueprint' => $this->model->role()->name(), + 'model' => [ + 'account' => $account, + 'avatar' => $user->avatar()?->url(), + 'content' => $this->content(), + 'email' => $user->email(), + 'id' => $user->id(), + 'language' => $this->translation()->name(), + 'link' => $this->url(true), + 'name' => $user->name()->toString(), + 'role' => $user->role()->title(), + 'username' => $user->username(), + ] + ] + ); + } + + /** + * Returns the Translation object + * for the selected Panel language + */ + public function translation(): Translation + { + $kirby = $this->model->kirby(); + $lang = $this->model->language(); + return $kirby->translation($lang); + } + + /** + * Returns the data array for + * this model's Panel view + * + * @internal + */ + public function view(): array + { + return [ + 'breadcrumb' => $this->breadcrumb(), + 'component' => 'k-user-view', + 'props' => $this->props(), + 'title' => $this->model->username(), + ]; + } +} diff --git a/kirby/src/Panel/UserTotpDisableDialog.php b/kirby/src/Panel/UserTotpDisableDialog.php new file mode 100644 index 0000000..7050cc7 --- /dev/null +++ b/kirby/src/Panel/UserTotpDisableDialog.php @@ -0,0 +1,114 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UserTotpDisableDialog +{ + public App $kirby; + public User $user; + + public function __construct( + string|null $id = null + ) { + $this->kirby = App::instance(); + $this->user = $id ? Find::user($id) : $this->kirby->user(); + } + + /** + * Returns the Panel dialog state when opening the dialog + */ + public function load(): array + { + $currentUser = $this->kirby->user(); + $submitBtn = [ + 'text' => I18n::translate('disable'), + 'icon' => 'protected', + 'theme' => 'negative' + ]; + + // admins can disable TOTP for other users without + // entering their password (but not for themselves) + if ( + $currentUser->isAdmin() === true && + $currentUser->is($this->user) === false + ) { + $name = $this->user->name()->or($this->user->email()); + + return [ + 'component' => 'k-remove-dialog', + 'props' => [ + 'text' => I18n::template('login.totp.disable.admin', ['user' => Escape::html($name)]), + 'submitButton' => $submitBtn, + ] + ]; + } + + // everybody else + return [ + 'component' => 'k-form-dialog', + 'props' => [ + 'fields' => [ + 'password' => [ + 'type' => 'password', + 'required' => true, + 'counter' => false, + 'label' => I18n::translate('login.totp.disable.label'), + 'help' => I18n::translate('login.totp.disable.help'), + ] + ], + 'submitButton' => $submitBtn, + ] + ]; + } + + /** + * Removes the user's TOTP secret when the dialog is submitted + */ + public function submit(): array + { + $password = $this->kirby->request()->get('password'); + + try { + if ($this->kirby->user()->is($this->user) === true) { + $this->user->validatePassword($password); + } elseif ($this->kirby->user()->isAdmin() === false) { + throw new PermissionException('You are not allowed to disable TOTP for other users'); + } + + // Remove the TOTP secret from the account + $this->user->changeTotp(null); + + return [ + 'message' => I18n::translate('login.totp.disable.success') + ]; + } catch (InvalidArgumentException $e) { + // Catch and re-throw exception so that any + // Unauthenticated exception for incorrect passwords + // does not trigger a logout + throw new InvalidArgumentException([ + 'key' => $e->getKey(), + 'data' => $e->getData(), + 'fallback' => $e->getMessage(), + 'previous' => $e + ]); + } + } +} diff --git a/kirby/src/Panel/UserTotpEnableDialog.php b/kirby/src/Panel/UserTotpEnableDialog.php new file mode 100644 index 0000000..e2917db --- /dev/null +++ b/kirby/src/Panel/UserTotpEnableDialog.php @@ -0,0 +1,95 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class UserTotpEnableDialog +{ + public App $kirby; + public Totp $totp; + public User $user; + + public function __construct() + { + $this->kirby = App::instance(); + $this->user = $this->kirby->user(); + } + + /** + * Returns the Panel dialog state when opening the dialog + */ + public function load(): array + { + return [ + 'component' => 'k-totp-dialog', + 'props' => [ + 'qr' => $this->qr()->toSvg(size: '100%'), + 'value' => ['secret' => $this->secret()] + ] + ]; + } + + /** + * Creates a QR code with a new TOTP secret for the user + */ + public function qr(): QrCode + { + $issuer = $this->kirby->site()->title(); + $label = $this->user->email(); + $uri = $this->totp()->uri($issuer, $label); + return new QrCode($uri); + } + + public function secret(): string + { + return $this->totp()->secret(); + } + + /** + * Changes the user's TOTP secret when the dialog is submitted + */ + public function submit(): array + { + $secret = $this->kirby->request()->get('secret'); + $confirm = $this->kirby->request()->get('confirm'); + + if ($confirm === null) { + throw new InvalidArgumentException( + ['key' => 'login.totp.confirm.missing'] + ); + } + + if ($this->totp($secret)->verify($confirm) === false) { + throw new InvalidArgumentException( + ['key' => 'login.totp.confirm.invalid'] + ); + } + + $this->user->changeTotp($secret); + + return [ + 'message' => I18n::translate('login.totp.enable.success') + ]; + } + + public function totp(string|null $secret = null): Totp + { + return $this->totp ??= new Totp($secret); + } +} diff --git a/kirby/src/Panel/View.php b/kirby/src/Panel/View.php new file mode 100644 index 0000000..a2fcebc --- /dev/null +++ b/kirby/src/Panel/View.php @@ -0,0 +1,384 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class View +{ + /** + * Filters the data array based on headers or + * query parameters. Requests can return only + * certain data fields that way or globals can + * be injected on demand. + */ + public static function apply(array $data): array + { + $request = App::instance()->request(); + $only = $request->header('X-Fiber-Only') ?? $request->get('_only'); + + if (empty($only) === false) { + return static::applyOnly($data, $only); + } + + $globals = + $request->header('X-Fiber-Globals') ?? + $request->get('_globals'); + + if (empty($globals) === false) { + return static::applyGlobals($data, $globals); + } + + return A::apply($data); + } + + /** + * Checks if globals should be included in a JSON Fiber request. They are normally + * only loaded with the full document request, but sometimes need to be updated. + * + * A global request can be activated with the `X-Fiber-Globals` header or the + * `_globals` query parameter. + */ + public static function applyGlobals( + array $data, + string|null $globals = null + ): array { + // split globals string into an array of fields + $globalKeys = Str::split($globals, ','); + + // add requested globals + if (empty($globalKeys) === true) { + return $data; + } + + $globals = static::globals(); + + foreach ($globalKeys as $globalKey) { + if (isset($globals[$globalKey]) === true) { + $data[$globalKey] = $globals[$globalKey]; + } + } + + // merge with shared data + return A::apply($data); + } + + /** + * Checks if the request should only return a limited + * set of data. This can be activated with the `X-Fiber-Only` + * header or the `_only` query parameter in a request. + * + * Such requests can fetch shared data or globals. + * Globals will be loaded on demand. + */ + public static function applyOnly( + array $data, + string|null $only = null + ): array { + // split include string into an array of fields + $onlyKeys = Str::split($only, ','); + + // if a full request is made, return all data + if (empty($onlyKeys) === true) { + return $data; + } + + // otherwise filter data based on + // dot notation, e.g. `$props.tab.columns` + $result = []; + + // check if globals are requested and need to be merged + if (Str::contains($only, '$')) { + $data = array_merge_recursive(static::globals(), $data); + } + + // make sure the data is already resolved to make + // nested data fetching work + $data = A::apply($data); + + // build a new array with all requested data + foreach ($onlyKeys as $onlyKey) { + $result[$onlyKey] = A::get($data, $onlyKey); + } + + // Nest dotted keys in array but ignore $translation + return A::nest($result, ['$translation']); + } + + /** + * Creates the shared data array for the individual views + * The full shared data is always sent on every JSON and + * full document request unless the `X-Fiber-Only` header or + * the `_only` query parameter is set. + */ + public static function data(array $view = [], array $options = []): array + { + $kirby = App::instance(); + + // multilang setup check + $multilang = Panel::multilang(); + + // get the authenticated user + $user = $kirby->user(); + + // user permissions + $permissions = $user?->role()->permissions()->toArray() ?? []; + + // current content language + $language = $kirby->language(); + + // shared data for all requests + return [ + '$direction' => function () use ($kirby, $multilang, $language, $user) { + if ($multilang === true && $language && $user) { + $default = $kirby->defaultLanguage(); + + if ( + $language->direction() !== $default->direction() && + $language->code() !== $user->language() + ) { + return $language->direction(); + } + } + }, + '$dialog' => null, + '$drawer' => null, + '$language' => function () use ($kirby, $multilang, $language) { + if ($multilang === true && $language) { + return [ + 'code' => $language->code(), + 'default' => $language->isDefault(), + 'direction' => $language->direction(), + 'name' => $language->name(), + 'rules' => $language->rules(), + ]; + } + }, + '$languages' => function () use ($kirby, $multilang): array { + if ($multilang === true) { + return $kirby->languages()->values(fn ($language) => [ + 'code' => $language->code(), + 'default' => $language->isDefault(), + 'direction' => $language->direction(), + 'name' => $language->name(), + 'rules' => $language->rules(), + ]); + } + + return []; + }, + '$menu' => function () use ($options, $permissions) { + $menu = new Menu( + $options['areas'] ?? [], + $permissions, + $options['area']['id'] ?? null + ); + return $menu->entries(); + }, + '$permissions' => $permissions, + '$license' => $kirby->system()->license()->status()->value(), + '$multilang' => $multilang, + '$searches' => static::searches($options['areas'] ?? [], $permissions), + '$url' => $kirby->request()->url()->toString(), + '$user' => function () use ($user) { + if ($user) { + return [ + 'email' => $user->email(), + 'id' => $user->id(), + 'language' => $user->language(), + 'role' => $user->role()->id(), + 'username' => $user->username(), + ]; + } + + return null; + }, + '$view' => function () use ($kirby, $options, $view) { + $defaults = [ + 'breadcrumb' => [], + 'code' => 200, + 'path' => Str::after($kirby->path(), '/'), + 'props' => [], + 'query' => App::instance()->request()->query()->toArray(), + 'referrer' => Panel::referrer(), + 'search' => $kirby->option('panel.search.type', 'pages'), + 'timestamp' => (int)(microtime(true) * 1000), + ]; + + $view = array_replace_recursive( + $defaults, + $options['area'] ?? [], + $view + ); + + // make sure that views and dialogs are gone + unset( + $view['dialogs'], + $view['drawers'], + $view['dropdowns'], + $view['requests'], + $view['searches'], + $view['views'] + ); + + // resolve all callbacks in the view array + return A::apply($view); + } + ]; + } + + /** + * Renders the error view with provided message + */ + public static function error(string $message, int $code = 404) + { + return [ + 'code' => $code, + 'component' => 'k-error-view', + 'error' => $message, + 'props' => [ + 'error' => $message, + 'layout' => Panel::hasAccess(App::instance()->user()) ? 'inside' : 'outside' + ], + 'title' => 'Error' + ]; + } + + /** + * Creates global data for the Panel. + * This will be injected in the full Panel + * view via the script tag. Global data + * is only requested once on the first page load. + * It can be loaded partially later if needed, + * but is otherwise not included in Fiber calls. + */ + public static function globals(): array + { + $kirby = App::instance(); + + return [ + '$config' => fn () => [ + 'debug' => $kirby->option('debug', false), + 'kirbytext' => $kirby->option('panel.kirbytext', true), + 'translation' => $kirby->option('panel.language', 'en'), + ], + '$system' => function () use ($kirby) { + $locales = []; + + foreach ($kirby->translations() as $translation) { + $locales[$translation->code()] = $translation->locale(); + } + + return [ + 'ascii' => Str::$ascii, + 'csrf' => $kirby->auth()->csrfFromSession(), + 'isLocal' => $kirby->system()->isLocal(), + 'locales' => $locales, + 'slugs' => Str::$language, + 'title' => $kirby->site()->title()->or('Kirby Panel')->toString() + ]; + }, + '$translation' => function () use ($kirby) { + if ($user = $kirby->user()) { + $translation = $kirby->translation($user->language()); + } else { + $translation = $kirby->translation($kirby->panelLanguage()); + } + + return [ + 'code' => $translation->code(), + 'data' => $translation->dataWithFallback(), + 'direction' => $translation->direction(), + 'name' => $translation->name(), + ]; + }, + '$urls' => fn () => [ + 'api' => $kirby->url('api'), + 'site' => $kirby->url('index') + ] + ]; + } + + /** + * Renders the main panel view either as + * JSON response or full HTML document based + * on the request header or query params + */ + public static function response($data, array $options = []): Response + { + // handle redirects + if ($data instanceof Redirect) { + return Response::redirect($data->location(), $data->code()); + + // handle Kirby exceptions + } elseif ($data instanceof Exception) { + $data = static::error($data->getMessage(), $data->getHttpCode()); + + // handle regular exceptions + } elseif ($data instanceof Throwable) { + $data = static::error($data->getMessage(), 500); + + // only expect arrays from here on + } elseif (is_array($data) === false) { + $data = static::error('Invalid Panel response', 500); + } + + // get all data for the request + $fiber = static::data($data, $options); + + // if requested, send $fiber data as JSON + if (Panel::isFiberRequest() === true) { + // filter data, if only or globals headers or + // query parameters are set + $fiber = static::apply($fiber); + + return Panel::json($fiber, $fiber['$view']['code'] ?? 200); + } + + // load globals for the full document response + $globals = static::globals(); + + // resolve and merge globals and shared data + $fiber = array_merge_recursive(A::apply($globals), A::apply($fiber)); + + // render the full HTML document + return Document::response($fiber); + } + + public static function searches(array $areas, array $permissions): array + { + $searches = []; + + foreach ($areas as $areaId => $area) { + // by default, all areas are accessible unless + // the permissions are explicitly set to false + if (($permissions['access'][$areaId] ?? true) !== false) { + foreach ($area['searches'] ?? [] as $id => $params) { + $searches[$id] = [ + 'icon' => $params['icon'] ?? 'search', + 'label' => $params['label'] ?? Str::ucfirst($id), + 'id' => $id + ]; + } + } + } + return $searches; + } +} diff --git a/kirby/src/Parsley/Element.php b/kirby/src/Parsley/Element.php new file mode 100644 index 0000000..649c5a3 --- /dev/null +++ b/kirby/src/Parsley/Element.php @@ -0,0 +1,159 @@ +, + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Element +{ + public function __construct( + protected DOMElement $node, + protected array $marks = [] + ) { + } + + /** + * The returns the attribute value or + * the given fallback if the attribute does not exist + */ + public function attr( + string $attr, + string|null $fallback = null + ): string|null { + if ($this->node->hasAttribute($attr) === true) { + return $this->node->getAttribute($attr) ?? $fallback; + } + + return $fallback; + } + + /** + * Returns a list of all child elements + */ + public function children(): DOMNodeList + { + return $this->node->childNodes; + } + + /** + * Returns an array with all class names + */ + public function classList(): array + { + return Str::split($this->className(), ' '); + } + + /** + * Returns the value of the class attribute + */ + public function className(): string|null + { + return $this->attr('class'); + } + + /** + * Returns the original dom element + */ + public function element(): DOMElement + { + return $this->node; + } + + /** + * Returns an array with all nested elements + * that could be found for the given query + */ + public function filter(string $query): array + { + $result = []; + + if ($queryResult = $this->query($query)) { + foreach ($queryResult as $node) { + $result[] = new static($node); + } + } + + return $result; + } + + /** + * Tries to find a single nested element by + * query and otherwise returns null + */ + public function find(string $query): static|null + { + if ($result = $this->query($query)[0]) { + return new static($result); + } + + return null; + } + + /** + * Returns the inner HTML of the element + * + * @param array|null $marks List of allowed marks + */ + public function innerHtml(array|null $marks = null): string + { + $marks ??= $this->marks; + $inline = new Inline($this->node, $marks); + return $inline->innerHtml(); + } + + /** + * Returns the contents as plain text + */ + public function innerText(): string + { + return trim($this->node->textContent); + } + + /** + * Returns the full HTML for the element + */ + public function outerHtml(array|null $marks = null): string + { + return $this->node->ownerDocument->saveHtml($this->node); + } + + /** + * Searches nested elements + */ + public function query(string $query): DOMNodeList|null + { + $path = new DOMXPath($this->node->ownerDocument); + return $path->query($query, $this->node); + } + + /** + * Removes the element from the DOM + */ + public function remove(): void + { + $this->node->parentNode->removeChild($this->node); + } + + /** + * Returns the name of the element + */ + public function tagName(): string + { + return $this->node->tagName; + } +} diff --git a/kirby/src/Parsley/Inline.php b/kirby/src/Parsley/Inline.php new file mode 100644 index 0000000..32e6b08 --- /dev/null +++ b/kirby/src/Parsley/Inline.php @@ -0,0 +1,161 @@ +, + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Inline +{ + protected string $html = ''; + protected array $marks = []; + + public function __construct(DOMNode $node, array $marks = []) + { + $this->createMarkRules($marks); + + $html = static::parseNode($node, $this->marks) ?? ''; + + // only trim HTML if it doesn't consist of only spaces + if (trim($html) !== '') { + $html = trim($html); + } + + $this->html = $html; + } + + /** + * Loads all mark rules + */ + protected function createMarkRules(array $marks): array + { + foreach ($marks as $mark) { + $this->marks[$mark['tag']] = $mark; + } + + return $this->marks; + } + + /** + * Get all allowed attributes for a DOMElement + * as clean array + */ + public static function parseAttrs( + DOMElement $node, + array $marks = [] + ): array { + $attrs = []; + $mark = $marks[$node->tagName]; + $defaults = $mark['defaults'] ?? []; + + foreach ($mark['attrs'] ?? [] as $attr) { + $attrs[$attr] = match ($node->hasAttribute($attr)) { + true => $node->getAttribute($attr), + default => $defaults[$attr] ?? null + }; + } + + return $attrs; + } + + /** + * Parses all children and creates clean HTML + * for each of them. + */ + public static function parseChildren( + DOMNodeList $children, + array $marks + ): string { + $html = ''; + foreach ($children as $child) { + $html .= static::parseNode($child, $marks); + } + return $html; + } + + /** + * Go through all child elements and create + * clean inner HTML for them + */ + public static function parseInnerHtml( + DOMElement $node, + array $marks = [] + ): string|null { + $html = static::parseChildren($node->childNodes, $marks); + + // trim the inner HTML for paragraphs + if ($node->tagName === 'p') { + $html = trim($html); + } + + // return null for empty inner HTML + if ($html === '') { + return null; + } + + return $html; + } + + /** + * Converts the given node to clean HTML + */ + public static function parseNode(DOMNode $node, array $marks = []): string|null + { + if ($node instanceof DOMText) { + return Html::encode($node->textContent); + } + + if ($node instanceof DOMElement) { + // unknown marks + if (array_key_exists($node->tagName, $marks) === false) { + return static::parseChildren($node->childNodes, $marks); + } + + // collect all allowed attributes + $attrs = static::parseAttrs($node, $marks); + + // close self-closing elements + if (Html::isVoid($node->tagName) === true) { + return '<' . $node->tagName . Html::attr($attrs, null, ' ') . ' />'; + } + + $innerHtml = static::parseInnerHtml($node, $marks); + + // skip empty paragraphs + if ($innerHtml === null && $node->tagName === 'p') { + return null; + } + + // create the outer html for the element + $html = '<' . $node->tagName . Html::attr($attrs, null, ' ') . '>'; + $html .= $innerHtml; + $html .= 'tagName . '>'; + return $html; + } + + return null; + } + + /** + * Returns the HTML contents of the element + */ + public function innerHtml(): string + { + return $this->html; + } +} diff --git a/kirby/src/Parsley/Parsley.php b/kirby/src/Parsley/Parsley.php new file mode 100644 index 0000000..3f2242e --- /dev/null +++ b/kirby/src/Parsley/Parsley.php @@ -0,0 +1,300 @@ +, + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Parsley +{ + protected array $blocks = []; + protected DOMDocument $doc; + protected Dom $dom; + protected array $inline = []; + protected array $marks = []; + protected array $nodes = []; + protected Schema $schema; + protected array $skip = []; + + public static bool $useXmlExtension = true; + + public function __construct(string $html, Schema|null $schema = null) + { + // fail gracefully if the XML extension is not installed + // or should be skipped + if ($this->useXmlExtension() === false) { + $this->blocks[] = [ + 'type' => 'markdown', + 'content' => ['text' => $html] + ]; + return; + } + + if (!preg_match('//', $html)) { + $html = '
' . $html . '
'; + } + + $this->dom = new Dom($html); + $this->doc = $this->dom->document(); + $this->schema = $schema ?? new Plain(); + $this->skip = $this->schema->skip(); + $this->marks = $this->schema->marks(); + $this->inline = []; + + // load all allowed nodes from the schema + $this->createNodeRules($this->schema->nodes()); + + // start parsing at the top level and go through + // all children of the document + foreach ($this->doc->childNodes as $childNode) { + $this->parseNode($childNode); + } + + // needs to be called at last to fetch remaining + // inline elements after parsing has ended + $this->endInlineBlock(); + } + + /** + * Returns all detected blocks + */ + public function blocks(): array + { + return $this->blocks; + } + + /** + * Load all node rules from the schema + */ + public function createNodeRules(array $nodes): array + { + foreach ($nodes as $node) { + $this->nodes[$node['tag']] = $node; + } + + return $this->nodes; + } + + /** + * Checks if the given element contains + * any other block level elements + */ + public function containsBlock(DOMNode $element): bool + { + if ($element->hasChildNodes() === false) { + return false; + } + + foreach ($element->childNodes as $childNode) { + if ( + $this->isBlock($childNode) === true || + $this->containsBlock($childNode) + ) { + return true; + } + } + + return false; + } + + /** + * Takes all inline elements in the inline cache + * and combines them in a final block. The block + * will either be merged with the previous block + * if the type matches, or will be appended. + * + * The inline cache will be reset afterwards + */ + public function endInlineBlock(): void + { + if (empty($this->inline) === true) { + return; + } + + $html = []; + + foreach ($this->inline as $inline) { + $node = new Inline($inline, $this->marks); + $html[] = $node->innerHTML(); + } + + $innerHTML = implode(' ', $html); + + if ($fallback = $this->fallback($innerHTML)) { + $this->mergeOrAppend($fallback); + } + + $this->inline = []; + } + + /** + * Creates a fallback block type for the given + * element. The element can either be a element object + * or a simple HTML/plain text string + */ + public function fallback(Element|string $element): array|null + { + if ($fallback = $this->schema->fallback($element)) { + return $fallback; + } + + return null; + } + + /** + * Checks if the given DOMNode is a block element + */ + public function isBlock(DOMNode $element): bool + { + if ($element instanceof DOMElement) { + return array_key_exists($element->tagName, $this->nodes) === true; + } + + return false; + } + + /** + * Checks if the given DOMNode is an inline element + */ + public function isInline(DOMNode $element): bool + { + if ($element instanceof DOMText) { + return true; + } + + if ($element instanceof DOMElement) { + // all spans will be treated as inline elements + if ($element->tagName === 'span') { + return true; + } + + if ($this->containsBlock($element) === true) { + return false; + } + + if ($element->tagName === 'p') { + return false; + } + + $marks = array_column($this->marks, 'tag'); + return in_array($element->tagName, $marks); + } + + return false; + } + + public function mergeOrAppend(array $block): void + { + $lastIndex = count($this->blocks) - 1; + $lastItem = $this->blocks[$lastIndex] ?? null; + + // merge with previous block + if ( + $block['type'] === 'text' && + $lastItem && + $lastItem['type'] === 'text' + ) { + $this->blocks[$lastIndex]['content']['text'] .= ' ' . $block['content']['text']; + + // append + } else { + $this->blocks[] = $block; + } + } + + /** + * Parses the given DOM node and tries to + * convert it to a block or a list of blocks + */ + public function parseNode(DOMNode $element): bool + { + $skip = ['DOMComment', 'DOMDocumentType']; + + // unwanted element types + if (in_array(get_class($element), $skip) === true) { + return false; + } + + // inline context + if ($this->isInline($element) === true) { + $this->inline[] = $element; + return true; + } + + $this->endInlineBlock(); + + // known block nodes + if ($this->isBlock($element) === true) { + /** + * @var DOMElement $element + */ + if ($parser = ($this->nodes[$element->tagName]['parse'] ?? null)) { + if ($result = $parser(new Element($element, $this->marks))) { + $this->blocks[] = $result; + } + } + return true; + } + + // has only unknown children (div, etc.) + if ($this->containsBlock($element) === false) { + /** + * @var DOMElement $element + */ + if (in_array($element->tagName, $this->skip) === true) { + return false; + } + + $wrappers = [ + 'body', + 'head', + 'html', + ]; + + // wrapper elements should never be converted + // to a simple fallback block. Their children + // have to be parsed individually. + if (in_array($element->tagName, $wrappers) === false) { + $node = new Element($element, $this->marks); + + if ($block = $this->fallback($node)) { + $this->mergeOrAppend($block); + } + + return true; + } + } + + // parse all children + foreach ($element->childNodes as $childNode) { + $this->parseNode($childNode); + } + + return true; + } + + public function useXmlExtension(): bool + { + if (static::$useXmlExtension !== true) { + return false; + } + + return Dom::isSupported(); + } +} diff --git a/kirby/src/Parsley/Schema.php b/kirby/src/Parsley/Schema.php new file mode 100644 index 0000000..3cf74f1 --- /dev/null +++ b/kirby/src/Parsley/Schema.php @@ -0,0 +1,53 @@ +, + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Schema +{ + /** + * Returns the fallback block when no + * other block type can be detected + */ + public function fallback(Element|string $element): array|null + { + return null; + } + + /** + * Returns a list of allowed inline marks + * and their parsing rules + */ + public function marks(): array + { + return []; + } + + /** + * Returns a list of allowed nodes and + * their parsing rules + */ + public function nodes(): array + { + return []; + } + + /** + * Returns a list of all elements that should be + * skipped and not be parsed at all + */ + public function skip(): array + { + return []; + } +} diff --git a/kirby/src/Parsley/Schema/Blocks.php b/kirby/src/Parsley/Schema/Blocks.php new file mode 100644 index 0000000..a72106c --- /dev/null +++ b/kirby/src/Parsley/Schema/Blocks.php @@ -0,0 +1,371 @@ +, + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Blocks extends Plain +{ + public function blockquote(Element $node): array + { + $text = []; + + // get all the text for the quote + foreach ($node->children() as $child) { + if ($child instanceof DOMText) { + $text[] = trim($child->textContent); + } + + if ( + $child instanceof DOMElement && + $child->tagName !== 'footer' + ) { + $element = new Element($child); + $text[] = $element->innerHTML($this->marks()); + } + } + + // filter empty blocks and separate text blocks with breaks + $text = implode('', array_filter($text)); + + // get the citation from the footer + $citation = $node->find('footer')?->innerHTML($this->marks()); + + return [ + 'content' => [ + 'citation' => $citation, + 'text' => $text + ], + 'type' => 'quote', + ]; + } + + /** + * Creates the fallback block type + * if no other block can be found + */ + public function fallback(Element|string $element): array|null + { + if ($element instanceof Element) { + $html = $element->innerHtml(); + + // wrap the inner HTML in a p tag if it doesn't + // contain one yet. + if (Str::contains($html, '

') === false) { + $html = '

' . $html . '

'; + } + } elseif (is_string($element) === true) { + $html = trim($element); + + if (Str::length($html) === 0) { + return null; + } + + $html = '

' . $html . '

'; + } else { + return null; + } + + return [ + 'content' => [ + 'text' => $html, + ], + 'type' => 'text', + ]; + } + + /** + * Converts a heading element to a heading block + */ + public function heading(Element $node): array + { + $content = [ + 'level' => strtolower($node->tagName()), + 'text' => $node->innerHTML() + ]; + + if ($id = $node->attr('id')) { + $content['id'] = $id; + } + + ksort($content); + + return [ + 'content' => $content, + 'type' => 'heading', + ]; + } + + public function iframe(Element $node): array + { + $src = $node->attr('src'); + $figcaption = $node->find('ancestor::figure[1]//figcaption'); + $caption = $figcaption?->innerHTML($this->marks()); + + // avoid parsing the caption twice + $figcaption?->remove(); + + // reverse engineer video URLs + if (preg_match('!player.vimeo.com\/video\/([0-9]+)!i', $src, $array) === 1) { + $src = 'https://vimeo.com/' . $array[1]; + } elseif (preg_match('!youtube.com\/embed\/([a-zA-Z0-9_-]+)!', $src, $array) === 1) { + $src = 'https://youtube.com/watch?v=' . $array[1]; + } elseif (preg_match('!youtube-nocookie.com\/embed\/([a-zA-Z0-9_-]+)!', $src, $array) === 1) { + $src = 'https://youtube.com/watch?v=' . $array[1]; + } else { + $src = false; + } + + // correct video URL + if ($src) { + return [ + 'content' => [ + 'caption' => $caption, + 'url' => $src + ], + 'type' => 'video', + ]; + } + + return [ + 'content' => [ + 'text' => $node->outerHTML() + ], + 'type' => 'markdown', + ]; + } + + public function img(Element $node): array + { + $link = $node->find('ancestor::a')?->attr('href'); + $figcaption = $node->find('ancestor::figure[1]//figcaption'); + $caption = $figcaption?->innerHTML($this->marks()); + + // avoid parsing the caption twice + $figcaption?->remove(); + + return [ + 'content' => [ + 'alt' => $node->attr('alt'), + 'caption' => $caption, + 'link' => $link, + 'location' => 'web', + 'src' => $node->attr('src'), + ], + 'type' => 'image', + ]; + } + + /** + * Converts a list element to HTML + */ + public function list(Element $node): string + { + $html = []; + + foreach ($node->filter('li') as $li) { + $innerHtml = ''; + + foreach ($li->children() as $child) { + if ($child instanceof DOMText) { + $innerHtml .= $child->textContent; + } elseif ($child instanceof DOMElement) { + $child = new Element($child); + $list = ['ul', 'ol']; + $innerHtml .= match (in_array($child->tagName(), $list)) { + true => $this->list($child), + default => $child->innerHTML($this->marks()) + }; + } + } + + $html[] = '
  • ' . trim($innerHtml) . '
  • '; + } + + $outerHtml = '<' . $node->tagName() . '>'; + $outerHtml .= implode($html); + $outerHtml .= 'tagName() . '>'; + return $outerHtml; + } + + /** + * Returns a list of allowed inline marks + * and their parsing rules + */ + public function marks(): array + { + return [ + [ + 'tag' => 'a', + 'attrs' => ['href', 'rel', 'target', 'title'], + 'defaults' => [ + 'rel' => 'noreferrer' + ] + ], + [ + 'tag' => 'abbr', + ], + [ + 'tag' => 'b' + ], + [ + 'tag' => 'br', + ], + [ + 'tag' => 'code' + ], + [ + 'tag' => 'del', + ], + [ + 'tag' => 'em', + ], + [ + 'tag' => 'i', + ], + [ + 'tag' => 'p', + ], + [ + 'tag' => 'strike', + ], + [ + 'tag' => 'sub', + ], + [ + 'tag' => 'sup', + ], + [ + 'tag' => 'strong', + ], + [ + 'tag' => 'u', + ], + ]; + } + + /** + * Returns a list of allowed nodes and + * their parsing rules + * + * @codeCoverageIgnore + */ + public function nodes(): array + { + return [ + [ + 'tag' => 'blockquote', + 'parse' => fn (Element $node) => $this->blockquote($node) + ], + [ + 'tag' => 'h1', + 'parse' => fn (Element $node) => $this->heading($node) + ], + [ + 'tag' => 'h2', + 'parse' => fn (Element $node) => $this->heading($node) + ], + [ + 'tag' => 'h3', + 'parse' => fn (Element $node) => $this->heading($node) + ], + [ + 'tag' => 'h4', + 'parse' => fn (Element $node) => $this->heading($node) + ], + [ + 'tag' => 'h5', + 'parse' => fn (Element $node) => $this->heading($node) + ], + [ + 'tag' => 'h6', + 'parse' => fn (Element $node) => $this->heading($node) + ], + [ + 'tag' => 'hr', + 'parse' => fn (Element $node) => ['type' => 'line'] + ], + [ + 'tag' => 'iframe', + 'parse' => fn (Element $node) => $this->iframe($node) + ], + [ + 'tag' => 'img', + 'parse' => fn (Element $node) => $this->img($node) + ], + [ + 'tag' => 'ol', + 'parse' => fn (Element $node) => [ + 'content' => [ + 'text' => $this->list($node) + ], + 'type' => 'list', + ] + ], + [ + 'tag' => 'pre', + 'parse' => fn (Element $node) => $this->pre($node) + ], + [ + 'tag' => 'table', + 'parse' => fn (Element $node) => $this->table($node) + ], + [ + 'tag' => 'ul', + 'parse' => fn (Element $node) => [ + 'content' => [ + 'text' => $this->list($node) + ], + 'type' => 'list', + ] + ], + ]; + } + + public function pre(Element $node): array + { + $language = 'text'; + + if ($code = $node->find('//code')) { + foreach ($code->classList() as $className) { + if (preg_match('!language-(.*?)!', $className)) { + $language = str_replace('language-', '', $className); + break; + } + } + } + + return [ + 'content' => [ + 'code' => $node->innerText(), + 'language' => $language + ], + 'type' => 'code', + ]; + } + + public function table(Element $node): array + { + return [ + 'content' => [ + 'text' => $node->outerHTML(), + ], + 'type' => 'markdown', + ]; + } +} diff --git a/kirby/src/Parsley/Schema/Plain.php b/kirby/src/Parsley/Schema/Plain.php new file mode 100644 index 0000000..183556f --- /dev/null +++ b/kirby/src/Parsley/Schema/Plain.php @@ -0,0 +1,64 @@ +, + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Plain extends Schema +{ + /** + * Creates the fallback block type + * if no other block can be found + */ + public function fallback(Element|string $element): array|null + { + if ($element instanceof Element) { + $text = $element->innerText(); + } elseif (is_string($element) === true) { + $text = trim($element); + + if (Str::length($text) === 0) { + return null; + } + } else { + return null; + } + + return [ + 'content' => [ + 'text' => $text + ], + 'type' => 'text', + ]; + } + + /** + * Returns a list of all elements that + * should be skipped during parsing + */ + public function skip(): array + { + return [ + 'base', + 'link', + 'meta', + 'script', + 'style', + 'title' + ]; + } +} diff --git a/kirby/src/Query/Argument.php b/kirby/src/Query/Argument.php new file mode 100644 index 0000000..d9ca493 --- /dev/null +++ b/kirby/src/Query/Argument.php @@ -0,0 +1,117 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Argument +{ + public function __construct( + public mixed $value + ) { + } + + /** + * Sanitizes argument string into actual + * PHP type/object as new Argument instance + */ + public static function factory(string $argument): static + { + $argument = trim($argument); + + // remove grouping parantheses + if ( + Str::startsWith($argument, '(') && + Str::endsWith($argument, ')') + ) { + $argument = trim(substr($argument, 1, -1)); + } + + // string with single quotes + if ( + Str::startsWith($argument, "'") && + Str::endsWith($argument, "'") + ) { + $string = substr($argument, 1, -1); + $string = str_replace("\'", "'", $string); + return new static($string); + } + + // string with double quotes + if ( + Str::startsWith($argument, '"') && + Str::endsWith($argument, '"') + ) { + $string = substr($argument, 1, -1); + $string = str_replace('\"', '"', $string); + return new static($string); + } + + // array: split and recursive sanitizing + if ( + Str::startsWith($argument, '[') && + Str::endsWith($argument, ']') + ) { + $array = substr($argument, 1, -1); + $array = Arguments::factory($array); + return new static($array); + } + + // numeric + if (is_numeric($argument) === true) { + if (strpos($argument, '.') === false) { + return new static((int)$argument); + } + + return new static((float)$argument); + } + + // Closure + if (Str::startsWith($argument, '() =>')) { + $query = Str::after($argument, '() =>'); + $query = trim($query); + return new static(fn () => $query); + } + + return new static(match ($argument) { + 'null' => null, + 'true' => true, + 'false' => false, + + // resolve parameter for objects and methods itself + default => new Query($argument) + }); + } + + /** + * Return the argument value and + * resolves nested objects to scaler types + */ + public function resolve(array|object $data = []): mixed + { + // don't resolve the Closure immediately, instead + // resolve it to the sub-query and create a new Closure + // that resolves the sub-query with the same data set once called + if ($this->value instanceof Closure) { + $query = ($this->value)(); + return fn () => static::factory($query)->resolve($data); + } + + if (is_object($this->value) === true) { + return $this->value->resolve($data); + } + + return $this->value; + } +} diff --git a/kirby/src/Query/Arguments.php b/kirby/src/Query/Arguments.php new file mode 100644 index 0000000..c78dd22 --- /dev/null +++ b/kirby/src/Query/Arguments.php @@ -0,0 +1,59 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Arguments extends Collection +{ + // skip all matches inside of parantheses + public const NO_PNTH = '\([^)]+\)(*SKIP)(*FAIL)'; + // skip all matches inside of square brackets + public const NO_SQBR = '\[[^]]+\](*SKIP)(*FAIL)'; + // skip all matches inside of double quotes + public const NO_DLQU = '\"(?:[^"\\\\]|\\\\.)*\"(*SKIP)(*FAIL)'; + // skip all matches inside of single quotes + public const NO_SLQU = '\'(?:[^\'\\\\]|\\\\.)*\'(*SKIP)(*FAIL)'; + // skip all matches inside of any of the above skip groups + public const OUTSIDE = + self::NO_PNTH . '|' . self::NO_SQBR . '|' . + self::NO_DLQU . '|' . self::NO_SLQU; + + /** + * Splits list of arguments into individual + * Argument instances while respecting skip groups + */ + public static function factory(string $arguments): static + { + $arguments = A::map( + // split by comma, but not inside skip groups + preg_split('!,|' . self::OUTSIDE . '!', $arguments), + fn ($argument) => Argument::factory($argument) + ); + + return new static($arguments); + } + + /** + * Resolve each argument, so that they can + * passed together to the actual method call + */ + public function resolve(array|object $data = []): array + { + return A::map( + $this->data, + fn ($argument) => $argument->resolve($data) + ); + } +} diff --git a/kirby/src/Query/Expression.php b/kirby/src/Query/Expression.php new file mode 100644 index 0000000..f205c30 --- /dev/null +++ b/kirby/src/Query/Expression.php @@ -0,0 +1,119 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Expression +{ + public function __construct( + public array $parts + ) { + } + + /** + * Parses an expression string into its parts + */ + public static function factory(string $expression, Query $parent = null): static|Segments + { + // split into different expression parts and operators + $parts = static::parse($expression); + + // shortcut: if expression has only one part, directly + // continue with the segments chain + if (count($parts) === 1) { + return Segments::factory(query: $parts[0], parent: $parent); + } + + // turn all non-operator parts into an Argument + // which takes care of converting string, arrays booleans etc. + // into actual types and treats all other parts as their own queries + $parts = A::map( + $parts, + fn ($part) => + in_array($part, ['?', ':', '?:', '??']) + ? $part + : Argument::factory($part) + ); + + return new static(parts: $parts); + } + + /** + * Splits a comparison string into an array + * of expressions and operators + * @internal + */ + public static function parse(string $string): array + { + // split by multiples of `?` and `:`, but not inside skip groups + // (parantheses, quotes etc.) + return preg_split( + '/\s+([\?\:]+)\s+|' . Arguments::OUTSIDE . '/', + trim($string), + flags: PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY + ); + } + + /** + * Resolves the expression by evaluating + * the supported comparisons and consecutively + * resolving the resulting query/argument + */ + public function resolve(array|object $data = []): mixed + { + $base = null; + + foreach ($this->parts as $index => $part) { + // `a ?? b` + // if the base/previous (e.g. `a`) isn't null, + // stop the expression chain and return `a` + if ($part === '??') { + if ($base !== null) { + return $base; + } + + continue; + } + + // `a ?: b` + // if `a` isn't false, return `a`, otherwise `b` + if ($part === '?:') { + if ($base != false) { + return $base; + } + + return $this->parts[$index + 1]->resolve($data); + } + + // `a ? b : c` + // if `a` isn't false, return `b`, otherwise `c` + if ($part === '?') { + if (($this->parts[$index + 2] ?? null) !== ':') { + throw new LogicException('Query: Incomplete ternary operator (missing matching `? :`)'); + } + + if ($base != false) { + return $this->parts[$index + 1]->resolve($data); + } + + return $this->parts[$index + 3]->resolve($data); + } + + $base = $part->resolve($data); + } + + return $base; + } +} diff --git a/kirby/src/Query/Query.php b/kirby/src/Query/Query.php new file mode 100644 index 0000000..ab6381c --- /dev/null +++ b/kirby/src/Query/Query.php @@ -0,0 +1,142 @@ +, + * Nico Hoffmann + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Query +{ + /** + * Default data entries + */ + public static array $entries = []; + + /** + * Creates a new Query object + */ + public function __construct( + public string|null $query = null + ) { + if ($query !== null) { + $this->query = trim($query); + } + } + + /** + * Creates a new Query object + */ + public static function factory(string|null $query): static + { + return new static(query: $query); + } + + /** + * Method to help classes that extend Query + * to intercept a segment's result. + */ + public function intercept(mixed $result): mixed + { + return $result; + } + + /** + * Returns the query result if anything + * can be found, otherwise returns null + * + * @throws \Kirby\Exception\BadMethodCallException If an invalid method is accessed by the query + */ + public function resolve(array|object $data = []): mixed + { + if (empty($this->query) === true) { + return $data; + } + + // merge data with default entries + if (is_array($data) === true) { + $data = array_merge(static::$entries, $data); + } + + // direct data array access via key + if ( + is_array($data) === true && + array_key_exists($this->query, $data) === true + ) { + $value = $data[$this->query]; + + if ($value instanceof Closure) { + $value = $value(); + } + + return $value; + } + + // loop through all segments to resolve query + return Expression::factory($this->query, $this)->resolve($data); + } +} + +/** + * Default entries/functions + */ +Query::$entries['kirby'] = function (): App { + return App::instance(); +}; + +Query::$entries['collection'] = function (string $name): Collection|null { + return App::instance()->collection($name); +}; + +Query::$entries['file'] = function (string $id): File|null { + return App::instance()->file($id); +}; + +Query::$entries['page'] = function (string $id): Page|null { + return App::instance()->page($id); +}; + +Query::$entries['qr'] = function (string $data): QrCode { + return new QrCode($data); +}; + +Query::$entries['site'] = function (): Site { + return App::instance()->site(); +}; + +Query::$entries['t'] = function ( + string $key, + string|array $fallback = null, + string $locale = null +): string|null { + return I18n::translate($key, $fallback, $locale); +}; + +Query::$entries['user'] = function (string $id = null): User|null { + return App::instance()->user($id); +}; diff --git a/kirby/src/Query/Segment.php b/kirby/src/Query/Segment.php new file mode 100644 index 0000000..89e7574 --- /dev/null +++ b/kirby/src/Query/Segment.php @@ -0,0 +1,182 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Segment +{ + public function __construct( + public string $method, + public int $position, + public Arguments|null $arguments = null, + ) { + } + + /** + * Throws an exception for an access to an invalid method + * @internal + * + * @param mixed $data Variable on which the access was tried + * @param string $name Name of the method/property that was accessed + * @param string $label Type of the name (`method`, `property` or `method/property`) + * + * @throws \Kirby\Exception\BadMethodCallException + */ + public static function error(mixed $data, string $name, string $label): void + { + $type = strtolower(gettype($data)); + + if ($type === 'double') { + $type = 'float'; + } + + $nonExisting = in_array($type, ['array', 'object']) ? 'non-existing ' : ''; + + $error = 'Access to ' . $nonExisting . $label . ' "' . $name . '" on ' . $type; + + throw new BadMethodCallException($error); + } + + /** + * Parses a segment into the property/method name and its arguments + * + * @param int $position String position of the segment inside the full query + */ + public static function factory( + string $segment, + int $position = 0 + ): static { + if (Str::endsWith($segment, ')') === false) { + return new static(method: $segment, position: $position); + } + + // the args are everything inside the *outer* parentheses + $args = Str::substr($segment, Str::position($segment, '(') + 1, -1); + + return new static( + method: Str::before($segment, '('), + position: $position, + arguments: Arguments::factory($args) + ); + } + + /** + * Automatically resolves the segment depending on the + * segment position and the type of the base + * + * @param mixed $base Current value of the query chain + */ + public function resolve(mixed $base = null, array|object $data = []): mixed + { + // resolve arguments to array + $args = $this->arguments?->resolve($data) ?? []; + + // 1st segment, use $data as base + if ($this->position === 0) { + $base = $data; + } + + if (is_array($base) === true) { + return $this->resolveArray($base, $args); + } + + if (is_object($base) === true) { + return $this->resolveObject($base, $args); + } + + // trying to access further segments on a scalar/null value + static::error($base, $this->method, 'method/property'); + } + + /** + * Resolves segment by calling the corresponding array key + */ + protected function resolveArray(array $array, array $args): mixed + { + // the directly provided array takes precedence + // to look up a matching entry + if (array_key_exists($this->method, $array) === true) { + $value = $array[$this->method]; + + // if this is a Closure we can directly use it, as + // Closures from the $array should always have priority + // over the Query::$entries Closures + if ($value instanceof Closure) { + return $value(...$args); + } + + // if we have no arguments to pass, we also can directly + // use the value from the $array as it must not be different + // to the one from Query::$entries with the same name + if ($args === []) { + return $value; + } + } + + // fallback time: only if we are handling the first segment, + // we can also try to resolve the segment with an entry from the + // default Query::$entries + if ($this->position === 0) { + if (array_key_exists($this->method, Query::$entries) === true) { + return Query::$entries[$this->method](...$args); + } + } + + // if we have not been able to return anything so far, + // we just need to differntiate between two different error messages + + // this one is in case the original array contained the key, + // but was not a Closure while the segment had arguments + if ( + array_key_exists($this->method, $array) && + $args !== [] + ) { + throw new InvalidArgumentException('Cannot access array element "' . $this->method . '" with arguments'); + } + + // last, the standard error for trying to access something + // that does not exist + static::error($array, $this->method, 'property'); + } + + /** + * Resolves segment by calling the method/ + * accessing the property on the base object + */ + protected function resolveObject(object $object, array $args): mixed + { + if ( + method_exists($object, $this->method) === true || + method_exists($object, '__call') === true + ) { + return $object->{$this->method}(...$args); + } + + if ( + $args === [] && + ( + property_exists($object, $this->method) === true || + method_exists($object, '__get') === true + ) + ) { + return $object->{$this->method}; + } + + $label = ($args === []) ? 'method/property' : 'method'; + static::error($object, $this->method, $label); + } +} diff --git a/kirby/src/Query/Segments.php b/kirby/src/Query/Segments.php new file mode 100644 index 0000000..d2af470 --- /dev/null +++ b/kirby/src/Query/Segments.php @@ -0,0 +1,100 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Segments extends Collection +{ + public function __construct( + array $data = [], + protected Query|null $parent = null, + ) { + parent::__construct($data); + } + + /** + * Split query string into segments by dot + * but not inside (nested) parens + */ + public static function factory(string $query, Query $parent = null): static + { + $segments = static::parse($query); + $position = 0; + + $segments = A::map( + $segments, + function ($segment) use (&$position) { + // leave connectors as they are + if (in_array($segment, ['.', '?.']) === true) { + return $segment; + } + + // turn all other parts into Segment objects + // and pass their position in the chain (ignoring connectors) + $position++; + return Segment::factory($segment, $position - 1); + } + ); + + return new static($segments, $parent); + } + + /** + * Splits the string of a segment chaing into an + * array of segments as well as conenctors (`.` or `?.`) + * @internal + */ + public static function parse(string $string): array + { + return preg_split( + '/(\??\.)|(\(([^()]+|(?2))*+\))(*SKIP)(*FAIL)/', + trim($string), + flags: PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY + ); + } + + /** + * Resolves the segments chain by looping through + * each segment call to be applied to the value of + * all previous segment calls, returning gracefully at + * `?.` when current value is `null` + */ + public function resolve(array|object $data = []) + { + $value = null; + + foreach ($this->data as $segment) { + // optional chaining: stop if current value is null + if ($segment === '?.' && $value === null) { + return null; + } + + // for regular connectors and optional chaining on non-null, + // just skip this connecting segment + if ($segment === '.' || $segment === '?.') { + continue; + } + + // offer possibility to intercept on objects + if ($value !== null) { + $value = $this->parent?->intercept($value) ?? $value; + } + + $value = $segment->resolve($value, $data); + } + + return $value; + } +} diff --git a/kirby/src/Sane/DomHandler.php b/kirby/src/Sane/DomHandler.php new file mode 100644 index 0000000..2fe2e09 --- /dev/null +++ b/kirby/src/Sane/DomHandler.php @@ -0,0 +1,171 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + * + * @SuppressWarnings(PHPMD.LongVariable) + */ +class DomHandler extends Handler +{ + /** + * List of all MIME types that may + * be used in data URIs + */ + public static array $allowedDataUris = [ + 'data:image/png', + 'data:image/gif', + 'data:image/jpg', + 'data:image/jpe', + 'data:image/pjp', + 'data:img/png', + 'data:img/gif', + 'data:img/jpg', + 'data:img/jpe', + 'data:img/pjp', + ]; + + /** + * Allowed hostnames for HTTP(S) URLs + * + * @var array|true + */ + public static array|bool $allowedDomains = true; + + /** + * Whether URLs that begin with `/` should be allowed even if the + * site index URL is in a subfolder (useful when using the HTML + * `` element where the sanitized code will be rendered) + */ + public static bool $allowHostRelativeUrls = true; + + /** + * Names of allowed XML processing instructions + */ + public static array $allowedPIs = []; + + /** + * The document type (`'HTML'` or `'XML'`) + * (to be set in child classes) + */ + protected static string $type = 'XML'; + + /** + * Sanitizes the given string + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + * + * @throws \Kirby\Exception\InvalidArgumentException If the file couldn't be parsed + */ + public static function sanitize(string $string, bool $isExternal = false): string + { + $dom = static::parse($string); + $dom->sanitize(static::options($isExternal)); + return $dom->toString(); + } + + /** + * Validates file contents + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + * + * @throws \Kirby\Exception\InvalidArgumentException If the file couldn't be parsed + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + */ + public static function validate(string $string, bool $isExternal = false): void + { + $dom = static::parse($string); + $errors = $dom->sanitize(static::options($isExternal)); + + // there may be multiple errors, we can only throw one of them at a time + if (count($errors) > 0) { + throw $errors[0]; + } + } + + /** + * Custom callback for additional attribute sanitization + * @internal + * + * @return array Array with exception objects for each modification + */ + public static function sanitizeAttr(DOMAttr $attr, array $options): array + { + // to be extended in child classes + return []; + } + + /** + * Custom callback for additional element sanitization + * @internal + * + * @return array Array with exception objects for each modification + */ + public static function sanitizeElement(DOMElement $element, array $options): array + { + // to be extended in child classes + return []; + } + + /** + * Custom callback for additional doctype validation + * @internal + */ + public static function validateDoctype(DOMDocumentType $doctype, array $options): void + { + // to be extended in child classes + } + + /** + * Returns the sanitization options for the handler + * (to be extended in child classes) + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + */ + protected static function options(bool $isExternal): array + { + $options = [ + 'allowedDataUris' => static::$allowedDataUris, + 'allowedDomains' => static::$allowedDomains, + 'allowHostRelativeUrls' => static::$allowHostRelativeUrls, + 'allowedPIs' => static::$allowedPIs, + 'attrCallback' => [static::class, 'sanitizeAttr'], + 'doctypeCallback' => [static::class, 'validateDoctype'], + 'elementCallback' => [static::class, 'sanitizeElement'], + ]; + + // never allow host-relative URLs in external files as we + // cannot set a `` element for them when accessed directly + if ($isExternal === true) { + $options['allowHostRelativeUrls'] = false; + } + + return $options; + } + + /** + * Parses the given string into a `Toolkit\Dom` object + * + * @throws \Kirby\Exception\InvalidArgumentException If the file couldn't be parsed + */ + protected static function parse(string $string): Dom + { + return new Dom($string, static::$type); + } +} diff --git a/kirby/src/Sane/Handler.php b/kirby/src/Sane/Handler.php new file mode 100644 index 0000000..7dfcd98 --- /dev/null +++ b/kirby/src/Sane/Handler.php @@ -0,0 +1,84 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +abstract class Handler +{ + /** + * Sanitizes the given string + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + */ + abstract public static function sanitize(string $string, bool $isExternal = false): string; + + /** + * Sanitizes the contents of a file by overwriting + * the file with the sanitized version + * + * @throws \Kirby\Exception\Exception If the file does not exist + * @throws \Kirby\Exception\Exception On other errors + */ + public static function sanitizeFile(string $file): void + { + $content = static::readFile($file); + $sanitized = static::sanitize($content, isExternal: true); + F::write($file, $sanitized); + } + + /** + * Validates file contents + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\Exception On other errors + */ + abstract public static function validate(string $string, bool $isExternal = false): void; + + /** + * Validates the contents of a file + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\Exception If the file does not exist + * @throws \Kirby\Exception\Exception On other errors + */ + public static function validateFile(string $file): void + { + $content = static::readFile($file); + static::validate($content, isExternal: true); + } + + /** + * Reads the contents of a file + * for sanitization or validation + * + * @throws \Kirby\Exception\Exception If the file does not exist + */ + protected static function readFile(string $file): string + { + $contents = F::read($file); + + if ($contents === false) { + throw new Exception('The file "' . $file . '" does not exist'); + } + + return $contents; + } +} diff --git a/kirby/src/Sane/Html.php b/kirby/src/Sane/Html.php new file mode 100644 index 0000000..0766e36 --- /dev/null +++ b/kirby/src/Sane/Html.php @@ -0,0 +1,126 @@ +, + * Lukas Bestle + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Html extends DomHandler +{ + /** + * Global list of allowed attribute prefixes + */ + public static array $allowedAttrPrefixes = [ + 'aria-', + 'data-', + ]; + + /** + * Global list of allowed attributes + */ + public static array $allowedAttrs = [ + 'class', + 'id', + ]; + + /** + * Associative array of all allowed tag names with the value + * of either an array with the list of all allowed attributes + * for this tag, `true` to allow any attribute from the + * `allowedAttrs` list or `false` to allow the tag without + * any attributes + */ + public static array $allowedTags = [ + 'a' => ['href', 'rel', 'title', 'target'], + 'abbr' => ['title'], + 'b' => true, + 'body' => true, + 'blockquote' => true, + 'br' => true, + 'code' => true, + 'dl' => true, + 'dd' => true, + 'del' => true, + 'div' => true, + 'dt' => true, + 'em' => true, + 'footer' => true, + 'h1' => true, + 'h2' => true, + 'h3' => true, + 'h4' => true, + 'h5' => true, + 'h6' => true, + 'hr' => true, + 'html' => true, + 'i' => true, + 'ins' => true, + 'li' => true, + 'small' => true, + 'span' => true, + 'strong' => true, + 'sub' => true, + 'sup' => true, + 'ol' => true, + 'p' => true, + 'pre' => true, + 's' => true, + 'u' => true, + 'ul' => true, + ]; + + /** + * Array of explicitly disallowed tags + * + * IMPORTANT: Use lower-case names here because + * of the case-insensitive matching + */ + public static array $disallowedTags = [ + 'iframe', + 'meta', + 'object', + 'script', + 'style', + ]; + + /** + * List of attributes that may contain URLs + */ + public static array $urlAttrs = [ + 'href', + 'src', + 'xlink:href', + ]; + + /** + * The document type (`'HTML'` or `'XML'`) + */ + protected static string $type = 'HTML'; + + /** + * Returns the sanitization options for the handler + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + */ + protected static function options(bool $isExternal): array + { + return array_merge(parent::options($isExternal), [ + 'allowedAttrPrefixes' => static::$allowedAttrPrefixes, + 'allowedAttrs' => static::$allowedAttrs, + 'allowedNamespaces' => [], + 'allowedPIs' => [], + 'allowedTags' => static::$allowedTags, + 'disallowedTags' => static::$disallowedTags, + 'urlAttrs' => static::$urlAttrs, + ]); + } +} diff --git a/kirby/src/Sane/Sane.php b/kirby/src/Sane/Sane.php new file mode 100644 index 0000000..c079e2a --- /dev/null +++ b/kirby/src/Sane/Sane.php @@ -0,0 +1,211 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Sane +{ + /** + * Handler Type Aliases + */ + public static array $aliases = [ + 'application/xml' => 'xml', + 'image/svg' => 'svg', + 'image/svg+xml' => 'svg', + 'text/html' => 'html', + 'text/xml' => 'xml', + ]; + + /** + * All registered handlers + */ + public static array $handlers = [ + 'html' => Html::class, + 'svg' => Svg::class, + 'svgz' => Svgz::class, + 'xml' => Xml::class, + ]; + + /** + * Handler getter + * + * @param bool $lazy If set to `true`, `null` is returned for undefined handlers + * + * @throws \Kirby\Exception\NotFoundException If no handler was found and `$lazy` was set to `false` + */ + public static function handler( + string $type, + bool $lazy = false + ): Handler|null { + // normalize the type + $type = mb_strtolower($type); + + // find a handler or alias + $handler = static::$handlers[$type] ?? null; + + if ($alias = static::$aliases[$type] ?? null) { + $handler ??= static::$handlers[$alias] ?? null; + } + + if (empty($handler) === false && class_exists($handler) === true) { + return new $handler(); + } + + if ($lazy === true) { + return null; + } + + throw new NotFoundException('Missing handler for type: "' . $type . '"'); + } + + /** + * Sanitizes the given string with the specified handler + * @since 3.6.0 + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + */ + public static function sanitize(string $string, string $type, bool $isExternal = false): string + { + return static::handler($type)->sanitize($string, $isExternal); + } + + /** + * Sanitizes the contents of a file by overwriting + * the file with the sanitized version; + * the sane handlers are automatically chosen by + * the extension and MIME type if not specified + * @since 3.6.0 + * + * @param string|bool $typeLazy Explicit handler type string, + * `true` for lazy autodetection or + * `false` for normal autodetection + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\LogicException If more than one handler applies + * @throws \Kirby\Exception\NotFoundException If the handler was not found + * @throws \Kirby\Exception\Exception On other errors + */ + public static function sanitizeFile( + string $file, + string|bool $typeLazy = false + ): void { + if (is_string($typeLazy) === true) { + static::handler($typeLazy)->sanitizeFile($file); + return; + } + + // try to find exactly one matching handler + $handlers = static::handlersForFile($file, $typeLazy === true); + switch (count($handlers)) { + case 0: + // lazy autodetection didn't find a handler + break; + case 1: + $handlers[0]->sanitizeFile($file); + break; + default: + // more than one matching handler; + // sanitizing with all handlers will not leave much in the output + $handlerNames = array_map('get_class', $handlers); + throw new LogicException( + 'Cannot sanitize file as more than one handler applies: ' . + implode(', ', $handlerNames) + ); + } + } + + /** + * Validates file contents with the specified handler + * + * @param bool $isExternal Whether the string is from an external file + * that may be accessed directly + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\NotFoundException If the handler was not found + * @throws \Kirby\Exception\Exception On other errors + */ + public static function validate(string $string, string $type, bool $isExternal = false): void + { + static::handler($type)->validate($string, $isExternal); + } + + /** + * Validates the contents of a file; + * the sane handlers are automatically chosen by + * the extension and MIME type if not specified + * + * @param string|bool $typeLazy Explicit handler type string, + * `true` for lazy autodetection or + * `false` for normal autodetection + * + * @throws \Kirby\Exception\InvalidArgumentException If the file didn't pass validation + * @throws \Kirby\Exception\NotFoundException If the handler was not found + * @throws \Kirby\Exception\Exception On other errors + */ + public static function validateFile( + string $file, + string|bool $typeLazy = false + ): void { + if (is_string($typeLazy) === true) { + static::handler($typeLazy)->validateFile($file); + return; + } + + $handlers = static::handlersForFile($file, $typeLazy === true); + + foreach ($handlers as $handler) { + $handler->validateFile($file); + } + } + + /** + * Returns all handler objects that apply to the given file based on + * file extension and MIME type + * + * @param bool $lazy If set to `true`, undefined handlers are skipped + * @return array<\Kirby\Sane\Handler> + */ + protected static function handlersForFile( + string $file, + bool $lazy = false + ): array { + $handlers = $handlerClasses = []; + + // all values that can be used for the handler search; + // filter out all empty options + $options = array_filter([F::extension($file), F::mime($file)]); + + foreach ($options as $option) { + $handler = static::handler($option, $lazy); + $handlerClass = $handler ? get_class($handler) : null; + + // ensure that each handler class is only returned once + if ( + $handler && + in_array($handlerClass, $handlerClasses) === false + ) { + $handlers[] = $handler; + $handlerClasses[] = $handlerClass; + } + } + + return $handlers; + } +} diff --git a/kirby/src/Sane/Svg.php b/kirby/src/Sane/Svg.php new file mode 100644 index 0000000..1a947ec --- /dev/null +++ b/kirby/src/Sane/Svg.php @@ -0,0 +1,501 @@ +, + * Lukas Bestle + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Svg extends Xml +{ + /** + * Allow and block lists are inspired by DOMPurify + * + * @link https://github.com/cure53/DOMPurify + * @copyright 2015 Mario Heiderich + * @license https://www.apache.org/licenses/LICENSE-2.0 + */ + + /** + * Global list of allowed attribute prefixes + */ + public static array $allowedAttrPrefixes = [ + 'aria-', + 'data-', + ]; + + /** + * Global list of allowed attributes + */ + public static array $allowedAttrs = [ + // core attributes + 'id', + 'lang', + 'tabindex', + 'xml:id', + 'xml:lang', + 'xml:space', + + // styling attributes + 'class', + 'style', + + // conditional processing attributes + 'systemLanguage', + + // presentation attributes + 'alignment-baseline', + 'baseline-shift', + 'clip', + 'clip-path', + 'clip-rule', + 'color', + 'color-interpolation', + 'color-interpolation-filters', + 'color-profile', + 'color-rendering', + 'd', + 'direction', + 'display', + 'dominant-baseline', + 'enable-background', + 'fill', + 'fill-opacity', + 'fill-rule', + 'filter', + 'flood-color', + 'flood-opacity', + 'font-family', + 'font-size', + 'font-size-adjust', + 'font-stretch', + 'font-style', + 'font-variant', + 'font-weight', + 'image-rendering', + 'kerning', + 'letter-spacing', + 'lighting-color', + 'marker-end', + 'marker-mid', + 'marker-start', + 'mask', + 'opacity', + 'overflow', + 'paint-order', + 'shape-rendering', + 'stop-color', + 'stop-opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'text-anchor', + 'text-decoration', + 'text-rendering', + 'transform', + 'visibility', + 'word-spacing', + 'writing-mode', + + // animation attribute target attributes + 'attributeName', + 'attributeType', + + // animation timing attributes + 'begin', + 'dur', + 'end', + 'max', + 'min', + 'repeatCount', + 'repeatDur', + 'restart', + + // animation value attributes + 'by', + 'from', + 'keySplines', + 'keyTimes', + 'to', + 'values', + + // animation addition attributes + 'accumulate', + 'additive', + + // filter primitive attributes + 'height', + 'result', + 'width', + 'x', + 'y', + + // transfer function attributes + 'amplitude', + 'exponent', + 'intercept', + 'offset', + 'slope', + 'tableValues', + 'type', + + // other attributes specific to one or multiple elements + 'azimuth', + 'baseFrequency', + 'bias', + 'clipPathUnits', + 'cx', + 'cy', + 'diffuseConstant', + 'divisor', + 'dx', + 'dy', + 'edgeMode', + 'elevation', + 'filterUnits', + 'fr', + 'fx', + 'fy', + 'g1', + 'g2', + 'glyph-name', + 'glyphRef', + 'gradientTransform', + 'gradientUnits', + 'href', + 'hreflang', + 'in', + 'in2', + 'k', + 'k1', + 'k2', + 'k3', + 'k4', + 'kernelMatrix', + 'kernelUnitLength', + 'keyPoints', + 'lengthAdjust', + 'limitingConeAngle', + 'markerHeight', + 'markerUnits', + 'markerWidth', + 'maskContentUnits', + 'maskUnits', + 'media', + 'method', + 'mode', + 'numOctaves', + 'operator', + 'order', + 'orient', + 'orientation', + 'path', + 'pathLength', + 'patternContentUnits', + 'patternTransform', + 'patternUnits', + 'points', + 'pointsAtX', + 'pointsAtY', + 'pointsAtZ', + 'preserveAlpha', + 'preserveAspectRatio', + 'primitiveUnits', + 'r', + 'radius', + 'refX', + 'refY', + 'rotate', + 'rx', + 'ry', + 'scale', + 'seed', + 'side', + 'spacing', + 'specularConstant', + 'specularExponent', + 'spreadMethod', + 'startOffset', + 'stdDeviation', + 'stitchTiles', + 'surfaceScale', + 'targetX', + 'targetY', + 'textLength', + 'u1', + 'u2', + 'unicode', + 'version', + 'vert-adv-y', + 'vert-origin-x', + 'vert-origin-y', + 'viewBox', + 'x1', + 'x2', + 'xChannelSelector', + 'xlink:href', + 'xlink:title', + 'y1', + 'y2', + 'yChannelSelector', + 'z', + 'zoomAndPan', + ]; + + /** + * Allowed hostnames for HTTP(S) URLs + * + * @var array|true + */ + public static array|bool $allowedDomains = []; + + /** + * Associative array of all allowed namespace URIs + */ + public static array $allowedNamespaces = [ + '' => 'http://www.w3.org/2000/svg', + 'xlink' => 'http://www.w3.org/1999/xlink' + ]; + + /** + * Associative array of all allowed tag names with the value + * of either an array with the list of all allowed attributes + * for this tag, `true` to allow any attribute from the + * `allowedAttrs` list or `false` to allow the tag without + * any attributes + */ + public static array $allowedTags = [ + 'a' => true, + 'altGlyph' => true, + 'altGlyphDef' => true, + 'altGlyphItem' => true, + 'animateColor' => true, + 'animateMotion' => true, + 'animateTransform' => true, + 'circle' => true, + 'clipPath' => true, + 'defs' => true, + 'desc' => true, + 'ellipse' => true, + 'feBlend' => true, + 'feColorMatrix' => true, + 'feComponentTransfer' => true, + 'feComposite' => true, + 'feConvolveMatrix' => true, + 'feDiffuseLighting' => true, + 'feDisplacementMap' => true, + 'feDistantLight' => true, + 'feFlood' => true, + 'feFuncA' => true, + 'feFuncB' => true, + 'feFuncG' => true, + 'feFuncR' => true, + 'feGaussianBlur' => true, + 'feMerge' => true, + 'feMergeNode' => true, + 'feMorphology' => true, + 'feOffset' => true, + 'fePointLight' => true, + 'feSpecularLighting' => true, + 'feSpotLight' => true, + 'feTile' => true, + 'feTurbulence' => true, + 'filter' => true, + 'font' => true, + 'g' => true, + 'glyph' => true, + 'glyphRef' => true, + 'hkern' => true, + 'image' => true, + 'line' => true, + 'linearGradient' => true, + 'marker' => true, + 'mask' => true, + 'metadata' => true, + 'mpath' => true, + 'path' => true, + 'pattern' => true, + 'polygon' => true, + 'polyline' => true, + 'radialGradient' => true, + 'rect' => true, + 'stop' => true, + 'style' => true, + 'svg' => true, + 'switch' => true, + 'symbol' => true, + 'text' => true, + 'textPath' => true, + 'title' => true, + 'tref' => true, + 'tspan' => true, + 'use' => true, + 'view' => true, + 'vkern' => true, + ]; + + /** + * Array of explicitly disallowed tags + * + * IMPORTANT: Use lower-case names here because + * of the case-insensitive matching + */ + public static array $disallowedTags = [ + 'animate', + 'color-profile', + 'cursor', + 'discard', + 'fedropshadow', + 'feimage', + 'font-face', + 'font-face-format', + 'font-face-name', + 'font-face-src', + 'font-face-uri', + 'foreignobject', + 'hatch', + 'hatchpath', + 'mesh', + 'meshgradient', + 'meshpatch', + 'meshrow', + 'missing-glyph', + 'script', + 'set', + 'solidcolor', + 'unknown', + ]; + + /** + * Custom callback for additional attribute sanitization + * @internal + * + * @return array Array with exception objects for each modification + */ + public static function sanitizeAttr(DOMAttr $attr, array $options): array + { + $element = $attr->ownerElement; + $name = $attr->name; + $value = $attr->value; + $errors = []; + + // block nested elements ("Billion Laughs" DoS attack) + if ( + $element->localName === 'use' && + Str::contains($name, 'href') !== false && + Str::startsWith($value, '#') === true + ) { + // find the target (used element) + $id = str_replace('"', '', mb_substr($value, 1)); + $path = new DOMXPath($attr->ownerDocument); + $target = $path->query('//*[@id="' . $id . '"]')->item(0); + + // the target must not contain any other elements + if ( + $target instanceof DOMElement && + $target->getElementsByTagName('use')->count() > 0 + ) { + $errors[] = new InvalidArgumentException( + 'Nested "use" elements are not allowed' . + ' (used in line ' . $element->getLineNo() . ')' + ); + $element->removeAttributeNode($attr); + } + } + + return $errors; + } + + /** + * Custom callback for additional element sanitization + * @internal + * + * @return array Array with exception objects for each modification + */ + public static function sanitizeElement(DOMElement $element, array $options): array + { + $errors = []; + + // check for URLs inside + * + * text + */ + public static function css(string $string): string + { + return static::escaper()->escapeCss($string); + } + + /** + * Get the escaper instance (and create if needed) + */ + protected static function escaper(): Escaper + { + return static::$escaper ??= new Escaper('utf-8'); + } + + /** + * Escape HTML element content + * + * This can be used to put untrusted data directly into the HTML body somewhere. + * This includes inside normal tags like div, p, b, td, etc. + * + * Escapes &, <, >, ", and ' with HTML entity encoding to prevent switching + * into any execution context, such as script, style, or event handlers. + * + * ...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE... + *
    ...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...
    + */ + public static function html(string $string): string + { + return static::escaper()->escapeHtml($string); + } + + /** + * Escape JavaScript data values + * + * This can be used to put dynamically generated JavaScript code + * into both script blocks and event-handler attributes. + * + * + * + *
    + */ + public static function js(string $string): string + { + return static::escaper()->escapeJs($string); + } + + /** + * Escape URL parameter values + * + * This can be used to put untrusted data into HTTP GET parameter values. + * This should not be used to escape an entire URI. + * + * link + */ + public static function url(string $string): string + { + return rawurlencode($string); + } + + /** + * Escape XML element content + * + * Removes offending characters that could be wrongfully interpreted as XML markup. + * + * The following characters are reserved in XML and will be replaced with their + * corresponding XML entities: + * + * ' is replaced with ' + * " is replaced with " + * & is replaced with & + * < is replaced with < + * > is replaced with > + */ + public static function xml(string $string): string + { + return htmlspecialchars($string, ENT_QUOTES | ENT_XML1, 'UTF-8'); + } +} diff --git a/kirby/src/Toolkit/Facade.php b/kirby/src/Toolkit/Facade.php new file mode 100644 index 0000000..b1547ec --- /dev/null +++ b/kirby/src/Toolkit/Facade.php @@ -0,0 +1,30 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +abstract class Facade +{ + /** + * Returns the instance that should be + * available statically + */ + abstract public static function instance(); + + /** + * Proxy for all public instance calls + */ + public static function __callStatic(string $method, array $args = null) + { + return static::instance()->$method(...$args); + } +} diff --git a/kirby/src/Toolkit/Html.php b/kirby/src/Toolkit/Html.php new file mode 100644 index 0000000..cacd86c --- /dev/null +++ b/kirby/src/Toolkit/Html.php @@ -0,0 +1,658 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://opensource.org/licenses/MIT + */ +class Html extends Xml +{ + /** + * An internal store for an HTML entities translation table + */ + public static array|null $entities; + + /** + * List of HTML tags that can be used inline + */ + public static array $inlineList = [ + 'b', + 'i', + 'small', + 'abbr', + 'cite', + 'code', + 'dfn', + 'em', + 'kbd', + 'strong', + 'samp', + 'var', + 'a', + 'bdo', + 'br', + 'img', + 'q', + 'span', + 'sub', + 'sup' + ]; + + /** + * Closing string for void tags; + * can be used to switch to trailing slashes if required + * + * ```php + * Html::$void = ' />' + * ``` + * + * @var string + */ + public static $void = '>'; + + /** + * List of HTML tags that are considered to be self-closing + * + * @var array + */ + public static $voidList = [ + 'area', + 'base', + 'br', + 'col', + 'command', + 'embed', + 'hr', + 'img', + 'input', + 'keygen', + 'link', + 'meta', + 'param', + 'source', + 'track', + 'wbr' + ]; + + /** + * Generic HTML tag generator + * Can be called like `Html::p('A paragraph', ['class' => 'text'])` + * + * @param string $tag Tag name + * @param array $arguments Further arguments for the Html::tag() method + */ + public static function __callStatic( + string $tag, + array $arguments = [] + ): string { + if (static::isVoid($tag) === true) { + return static::tag($tag, null, ...$arguments); + } + + return static::tag($tag, ...$arguments); + } + + /** + * Generates an `` tag; automatically supports mailto: and tel: links + * + * @param string $href The URL for the `` tag + * @param string|array|null $text The optional text; if `null`, the URL will be used as text + * @param array $attr Additional attributes for the tag + * @return string The generated HTML + */ + public static function a(string $href, $text = null, array $attr = []): string + { + if (Str::startsWith($href, 'mailto:')) { + return static::email(substr($href, 7), $text, $attr); + } + + if (Str::startsWith($href, 'tel:')) { + return static::tel(substr($href, 4), $text, $attr); + } + + return static::link($href, $text, $attr); + } + + /** + * Generates a single attribute or a list of attributes + * + * @param string|array $name String: A single attribute with that name will be generated. + * Key-value array: A list of attributes will be generated. Don't pass a second argument in that case. + * @param mixed $value If used with a `$name` string, pass the value of the attribute here. + * If used with a `$name` array, this can be set to `false` to disable attribute sorting. + * @param string|null $before An optional string that will be prepended if the result is not empty + * @param string|null $after An optional string that will be appended if the result is not empty + * @return string|null The generated HTML attributes string + */ + public static function attr( + string|array $name, + $value = null, + string|null $before = null, + string|null $after = null + ): string|null { + // HTML supports boolean attributes without values + if (is_array($name) === false && is_bool($value) === true) { + return $value === true ? strtolower($name) : null; + } + + // HTML attribute names are case-insensitive + if (is_string($name) === true) { + $name = strtolower($name); + } + + // all other cases can share the XML variant + $attr = parent::attr($name, $value); + + if ($attr === null) { + return null; + } + + // HTML supports named entities + $entities = parent::entities(); + $html = array_keys($entities); + $xml = array_values($entities); + $attr = str_replace($xml, $html, $attr); + + if ($attr) { + return $before . $attr . $after; + } + + return null; + } + + /** + * Converts lines in a string into HTML breaks + */ + public static function breaks(string $string): string + { + return nl2br($string); + } + + /** + * Generates an `` tag with `mailto:` + * + * @param string $email The email address + * @param string|array|null $text The optional text; if `null`, the email address will be used as text + * @param array $attr Additional attributes for the tag + * @return string The generated HTML + */ + public static function email( + string $email, + string|array|null $text = null, + array $attr = [] + ): string { + if (empty($email) === true) { + return ''; + } + + if (empty($text) === true) { + // show only the email address without additional parameters + $address = Str::contains($email, '?') ? Str::before($email, '?') : $email; + + $text = [Str::encode($address)]; + } + + $email = Str::encode($email); + $attr = array_merge([ + 'href' => [ + 'value' => 'mailto:' . $email, + 'escape' => false + ] + ], $attr); + + // add rel=noopener to target blank links to improve security + $attr['rel'] = static::rel($attr['rel'] ?? null, $attr['target'] ?? null); + + return static::tag('a', $text, $attr); + } + + /** + * Converts a string to an HTML-safe string + * + * @param bool $keepTags If true, existing tags won't be escaped + * @return string The HTML string + * + * @psalm-suppress ParamNameMismatch + */ + public static function encode( + string|null $string, + bool $keepTags = false + ): string { + if ($string === null) { + return ''; + } + + if ($keepTags === true) { + $list = static::entities(); + unset($list['"'], $list['<'], $list['>'], $list['&']); + + $search = array_keys($list); + $values = array_values($list); + + return str_replace($search, $values, $string); + } + + return htmlentities($string, ENT_QUOTES, 'utf-8'); + } + + /** + * Returns the entity translation table + */ + public static function entities(): array + { + return self::$entities ??= get_html_translation_table(HTML_ENTITIES); + } + + /** + * Creates a `
    ` tag with optional caption + * + * @param string|array $content Contents of the `
    ` tag + * @param string|array $caption Optional `
    ` text to use + * @param array $attr Additional attributes for the `
    ` tag + * @return string The generated HTML + */ + public static function figure( + string|array $content, + string|array|null $caption = '', + array $attr = [] + ): string { + if ($caption) { + $figcaption = static::tag('figcaption', $caption); + + if (is_string($content) === true) { + $content = [static::encode($content, false)]; + } + + $content[] = $figcaption; + } + + return static::tag('figure', $content, $attr); + } + + /** + * Embeds a GitHub Gist + * + * @param string $url Gist URL + * @param string|null $file Optional specific file to embed + * @param array $attr Additional attributes for the ` + + + + + diff --git a/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details.html.php b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details.html.php new file mode 100644 index 0000000..a85e451 --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details.html.php @@ -0,0 +1,2 @@ +render($frame_code) ?> +render($env_details) ?> \ No newline at end of file diff --git a/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details_outer.html.php b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details_outer.html.php new file mode 100644 index 0000000..8162d8c --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details_outer.html.php @@ -0,0 +1,3 @@ +
    + render($panel_details) ?> +
    \ No newline at end of file diff --git a/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left.html.php b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left.html.php new file mode 100644 index 0000000..7e652e4 --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left.html.php @@ -0,0 +1,4 @@ +render($header_outer); +$tpl->render($frames_description); +$tpl->render($frames_container); diff --git a/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left_outer.html.php b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left_outer.html.php new file mode 100644 index 0000000..77b575c --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left_outer.html.php @@ -0,0 +1,3 @@ +
    + render($panel_left) ?> +
    \ No newline at end of file diff --git a/kirby/vendor/filp/whoops/src/Whoops/Run.php b/kirby/vendor/filp/whoops/src/Whoops/Run.php new file mode 100644 index 0000000..0862768 --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Run.php @@ -0,0 +1,597 @@ + + */ + +namespace Whoops; + +use InvalidArgumentException; +use Throwable; +use Whoops\Exception\ErrorException; +use Whoops\Handler\CallbackHandler; +use Whoops\Handler\Handler; +use Whoops\Handler\HandlerInterface; +use Whoops\Inspector\CallableInspectorFactory; +use Whoops\Inspector\InspectorFactory; +use Whoops\Inspector\InspectorFactoryInterface; +use Whoops\Inspector\InspectorInterface; +use Whoops\Util\Misc; +use Whoops\Util\SystemFacade; + +final class Run implements RunInterface +{ + /** + * @var bool + */ + private $isRegistered; + + /** + * @var bool + */ + private $allowQuit = true; + + /** + * @var bool + */ + private $sendOutput = true; + + /** + * @var integer|false + */ + private $sendHttpCode = 500; + + /** + * @var integer|false + */ + private $sendExitCode = 1; + + /** + * @var HandlerInterface[] + */ + private $handlerStack = []; + + /** + * @var array + * @psalm-var list + */ + private $silencedPatterns = []; + + /** + * @var SystemFacade + */ + private $system; + + /** + * In certain scenarios, like in shutdown handler, we can not throw exceptions. + * + * @var bool + */ + private $canThrowExceptions = true; + + /** + * The inspector factory to create inspectors. + * + * @var InspectorFactoryInterface + */ + private $inspectorFactory; + + /** + * @var array + */ + private $frameFilters = []; + + public function __construct(SystemFacade $system = null) + { + $this->system = $system ?: new SystemFacade; + $this->inspectorFactory = new InspectorFactory(); + } + + /** + * Explicitly request your handler runs as the last of all currently registered handlers. + * + * @param callable|HandlerInterface $handler + * + * @return Run + */ + public function appendHandler($handler) + { + array_unshift($this->handlerStack, $this->resolveHandler($handler)); + return $this; + } + + /** + * Explicitly request your handler runs as the first of all currently registered handlers. + * + * @param callable|HandlerInterface $handler + * + * @return Run + */ + public function prependHandler($handler) + { + return $this->pushHandler($handler); + } + + /** + * Register your handler as the last of all currently registered handlers (to be executed first). + * Prefer using appendHandler and prependHandler for clarity. + * + * @param callable|HandlerInterface $handler + * + * @return Run + * + * @throws InvalidArgumentException If argument is not callable or instance of HandlerInterface. + */ + public function pushHandler($handler) + { + $this->handlerStack[] = $this->resolveHandler($handler); + return $this; + } + + /** + * Removes and returns the last handler pushed to the handler stack. + * + * @see Run::removeFirstHandler(), Run::removeLastHandler() + * + * @return HandlerInterface|null + */ + public function popHandler() + { + return array_pop($this->handlerStack); + } + + /** + * Removes the first handler. + * + * @return void + */ + public function removeFirstHandler() + { + array_pop($this->handlerStack); + } + + /** + * Removes the last handler. + * + * @return void + */ + public function removeLastHandler() + { + array_shift($this->handlerStack); + } + + /** + * Returns an array with all handlers, in the order they were added to the stack. + * + * @return array + */ + public function getHandlers() + { + return $this->handlerStack; + } + + /** + * Clears all handlers in the handlerStack, including the default PrettyPage handler. + * + * @return Run + */ + public function clearHandlers() + { + $this->handlerStack = []; + return $this; + } + + public function getFrameFilters() + { + return $this->frameFilters; + } + + public function clearFrameFilters() + { + $this->frameFilters = []; + return $this; + } + + /** + * Registers this instance as an error handler. + * + * @return Run + */ + public function register() + { + if (!$this->isRegistered) { + // Workaround PHP bug 42098 + // https://bugs.php.net/bug.php?id=42098 + class_exists("\\Whoops\\Exception\\ErrorException"); + class_exists("\\Whoops\\Exception\\FrameCollection"); + class_exists("\\Whoops\\Exception\\Frame"); + class_exists("\\Whoops\\Exception\\Inspector"); + class_exists("\\Whoops\\Inspector\\InspectorFactory"); + + $this->system->setErrorHandler([$this, self::ERROR_HANDLER]); + $this->system->setExceptionHandler([$this, self::EXCEPTION_HANDLER]); + $this->system->registerShutdownFunction([$this, self::SHUTDOWN_HANDLER]); + + $this->isRegistered = true; + } + + return $this; + } + + /** + * Unregisters all handlers registered by this Whoops\Run instance. + * + * @return Run + */ + public function unregister() + { + if ($this->isRegistered) { + $this->system->restoreExceptionHandler(); + $this->system->restoreErrorHandler(); + + $this->isRegistered = false; + } + + return $this; + } + + /** + * Should Whoops allow Handlers to force the script to quit? + * + * @param bool|int $exit + * + * @return bool + */ + public function allowQuit($exit = null) + { + if (func_num_args() == 0) { + return $this->allowQuit; + } + + return $this->allowQuit = (bool) $exit; + } + + /** + * Silence particular errors in particular files. + * + * @param array|string $patterns List or a single regex pattern to match. + * @param int $levels Defaults to E_STRICT | E_DEPRECATED. + * + * @return Run + */ + public function silenceErrorsInPaths($patterns, $levels = 10240) + { + $this->silencedPatterns = array_merge( + $this->silencedPatterns, + array_map( + function ($pattern) use ($levels) { + return [ + "pattern" => $pattern, + "levels" => $levels, + ]; + }, + (array) $patterns + ) + ); + + return $this; + } + + /** + * Returns an array with silent errors in path configuration. + * + * @return array + */ + public function getSilenceErrorsInPaths() + { + return $this->silencedPatterns; + } + + /** + * Should Whoops send HTTP error code to the browser if possible? + * Whoops will by default send HTTP code 500, but you may wish to + * use 502, 503, or another 5xx family code. + * + * @param bool|int $code + * + * @return int|false + * + * @throws InvalidArgumentException + */ + public function sendHttpCode($code = null) + { + if (func_num_args() == 0) { + return $this->sendHttpCode; + } + + if (!$code) { + return $this->sendHttpCode = false; + } + + if ($code === true) { + $code = 500; + } + + if ($code < 400 || 600 <= $code) { + throw new InvalidArgumentException( + "Invalid status code '$code', must be 4xx or 5xx" + ); + } + + return $this->sendHttpCode = $code; + } + + /** + * Should Whoops exit with a specific code on the CLI if possible? + * Whoops will exit with 1 by default, but you can specify something else. + * + * @param int $code + * + * @return int + * + * @throws InvalidArgumentException + */ + public function sendExitCode($code = null) + { + if (func_num_args() == 0) { + return $this->sendExitCode; + } + + if ($code < 0 || 255 <= $code) { + throw new InvalidArgumentException( + "Invalid status code '$code', must be between 0 and 254" + ); + } + + return $this->sendExitCode = (int) $code; + } + + /** + * Should Whoops push output directly to the client? + * If this is false, output will be returned by handleException. + * + * @param bool|int $send + * + * @return bool + */ + public function writeToOutput($send = null) + { + if (func_num_args() == 0) { + return $this->sendOutput; + } + + return $this->sendOutput = (bool) $send; + } + + /** + * Handles an exception, ultimately generating a Whoops error page. + * + * @param Throwable $exception + * + * @return string Output generated by handlers. + */ + public function handleException($exception) + { + // Walk the registered handlers in the reverse order + // they were registered, and pass off the exception + $inspector = $this->getInspector($exception); + + // Capture output produced while handling the exception, + // we might want to send it straight away to the client, + // or return it silently. + $this->system->startOutputBuffering(); + + // Just in case there are no handlers: + $handlerResponse = null; + $handlerContentType = null; + + try { + foreach (array_reverse($this->handlerStack) as $handler) { + $handler->setRun($this); + $handler->setInspector($inspector); + $handler->setException($exception); + + // The HandlerInterface does not require an Exception passed to handle() + // and neither of our bundled handlers use it. + // However, 3rd party handlers may have already relied on this parameter, + // and removing it would be possibly breaking for users. + $handlerResponse = $handler->handle($exception); + + // Collect the content type for possible sending in the headers. + $handlerContentType = method_exists($handler, 'contentType') ? $handler->contentType() : null; + + if (in_array($handlerResponse, [Handler::LAST_HANDLER, Handler::QUIT])) { + // The Handler has handled the exception in some way, and + // wishes to quit execution (Handler::QUIT), or skip any + // other handlers (Handler::LAST_HANDLER). If $this->allowQuit + // is false, Handler::QUIT behaves like Handler::LAST_HANDLER + break; + } + } + + $willQuit = $handlerResponse == Handler::QUIT && $this->allowQuit(); + } finally { + $output = $this->system->cleanOutputBuffer(); + } + + // If we're allowed to, send output generated by handlers directly + // to the output, otherwise, and if the script doesn't quit, return + // it so that it may be used by the caller + if ($this->writeToOutput()) { + // @todo Might be able to clean this up a bit better + if ($willQuit) { + // Cleanup all other output buffers before sending our output: + while ($this->system->getOutputBufferLevel() > 0) { + $this->system->endOutputBuffering(); + } + + // Send any headers if needed: + if (Misc::canSendHeaders() && $handlerContentType) { + header("Content-Type: {$handlerContentType}"); + } + } + + $this->writeToOutputNow($output); + } + + if ($willQuit) { + // HHVM fix for https://github.com/facebook/hhvm/issues/4055 + $this->system->flushOutputBuffer(); + + $this->system->stopExecution( + $this->sendExitCode() + ); + } + + return $output; + } + + /** + * Converts generic PHP errors to \ErrorException instances, before passing them off to be handled. + * + * This method MUST be compatible with set_error_handler. + * + * @param int $level + * @param string $message + * @param string|null $file + * @param int|null $line + * + * @return bool + * + * @throws ErrorException + */ + public function handleError($level, $message, $file = null, $line = null) + { + if ($level & $this->system->getErrorReportingLevel()) { + foreach ($this->silencedPatterns as $entry) { + $pathMatches = (bool) preg_match($entry["pattern"], $file); + $levelMatches = $level & $entry["levels"]; + if ($pathMatches && $levelMatches) { + // Ignore the error, abort handling + // See https://github.com/filp/whoops/issues/418 + return true; + } + } + + // XXX we pass $level for the "code" param only for BC reasons. + // see https://github.com/filp/whoops/issues/267 + $exception = new ErrorException($message, /*code*/ $level, /*severity*/ $level, $file, $line); + if ($this->canThrowExceptions) { + throw $exception; + } else { + $this->handleException($exception); + } + // Do not propagate errors which were already handled by Whoops. + return true; + } + + // Propagate error to the next handler, allows error_get_last() to + // work on silenced errors. + return false; + } + + /** + * Special case to deal with Fatal errors and the like. + * + * @return void + */ + public function handleShutdown() + { + // If we reached this step, we are in shutdown handler. + // An exception thrown in a shutdown handler will not be propagated + // to the exception handler. Pass that information along. + $this->canThrowExceptions = false; + + $error = $this->system->getLastError(); + if ($error && Misc::isLevelFatal($error['type'])) { + // If there was a fatal error, + // it was not handled in handleError yet. + $this->allowQuit = false; + $this->handleError( + $error['type'], + $error['message'], + $error['file'], + $error['line'] + ); + } + } + + + /** + * @param InspectorFactoryInterface $factory + * + * @return void + */ + public function setInspectorFactory(InspectorFactoryInterface $factory) + { + $this->inspectorFactory = $factory; + } + + public function addFrameFilter($filterCallback) + { + if (!is_callable($filterCallback)) { + throw new \InvalidArgumentException(sprintf( + "A frame filter must be of type callable, %s type given.", + gettype($filterCallback) + )); + } + + $this->frameFilters[] = $filterCallback; + return $this; + } + + /** + * @param Throwable $exception + * + * @return InspectorInterface + */ + private function getInspector($exception) + { + return $this->inspectorFactory->create($exception); + } + + /** + * Resolves the giving handler. + * + * @param callable|HandlerInterface $handler + * + * @return HandlerInterface + * + * @throws InvalidArgumentException + */ + private function resolveHandler($handler) + { + if (is_callable($handler)) { + $handler = new CallbackHandler($handler); + } + + if (!$handler instanceof HandlerInterface) { + throw new InvalidArgumentException( + "Handler must be a callable, or instance of " + . "Whoops\\Handler\\HandlerInterface" + ); + } + + return $handler; + } + + /** + * Echo something to the browser. + * + * @param string $output + * + * @return Run + */ + private function writeToOutputNow($output) + { + if ($this->sendHttpCode() && Misc::canSendHeaders()) { + $this->system->setHttpResponseCode( + $this->sendHttpCode() + ); + } + + echo $output; + + return $this; + } +} diff --git a/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php b/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php new file mode 100644 index 0000000..0ef3e3f --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/RunInterface.php @@ -0,0 +1,158 @@ + + */ + +namespace Whoops; + +use InvalidArgumentException; +use Whoops\Exception\ErrorException; +use Whoops\Handler\HandlerInterface; + +interface RunInterface +{ + const EXCEPTION_HANDLER = "handleException"; + const ERROR_HANDLER = "handleError"; + const SHUTDOWN_HANDLER = "handleShutdown"; + + /** + * Pushes a handler to the end of the stack + * + * @throws InvalidArgumentException If argument is not callable or instance of HandlerInterface + * @param Callable|HandlerInterface $handler + * @return Run + */ + public function pushHandler($handler); + + /** + * Removes the last handler in the stack and returns it. + * Returns null if there"s nothing else to pop. + * + * @return null|HandlerInterface + */ + public function popHandler(); + + /** + * Returns an array with all handlers, in the + * order they were added to the stack. + * + * @return array + */ + public function getHandlers(); + + /** + * Clears all handlers in the handlerStack, including + * the default PrettyPage handler. + * + * @return Run + */ + public function clearHandlers(); + + /** + * @return array + */ + public function getFrameFilters(); + + /** + * @return Run + */ + public function clearFrameFilters(); + + /** + * Registers this instance as an error handler. + * + * @return Run + */ + public function register(); + + /** + * Unregisters all handlers registered by this Whoops\Run instance + * + * @return Run + */ + public function unregister(); + + /** + * Should Whoops allow Handlers to force the script to quit? + * + * @param bool|int $exit + * @return bool + */ + public function allowQuit($exit = null); + + /** + * Silence particular errors in particular files + * + * @param array|string $patterns List or a single regex pattern to match + * @param int $levels Defaults to E_STRICT | E_DEPRECATED + * @return \Whoops\Run + */ + public function silenceErrorsInPaths($patterns, $levels = 10240); + + /** + * Should Whoops send HTTP error code to the browser if possible? + * Whoops will by default send HTTP code 500, but you may wish to + * use 502, 503, or another 5xx family code. + * + * @param bool|int $code + * @return int|false + */ + public function sendHttpCode($code = null); + + /** + * Should Whoops exit with a specific code on the CLI if possible? + * Whoops will exit with 1 by default, but you can specify something else. + * + * @param int $code + * @return int + */ + public function sendExitCode($code = null); + + /** + * Should Whoops push output directly to the client? + * If this is false, output will be returned by handleException + * + * @param bool|int $send + * @return bool + */ + public function writeToOutput($send = null); + + /** + * Handles an exception, ultimately generating a Whoops error + * page. + * + * @param \Throwable $exception + * @return string Output generated by handlers + */ + public function handleException($exception); + + /** + * Converts generic PHP errors to \ErrorException + * instances, before passing them off to be handled. + * + * This method MUST be compatible with set_error_handler. + * + * @param int $level + * @param string $message + * @param string $file + * @param int $line + * + * @return bool + * @throws ErrorException + */ + public function handleError($level, $message, $file = null, $line = null); + + /** + * Special case to deal with Fatal errors and the like. + */ + public function handleShutdown(); + + /** + * Registers a filter callback in the frame filters stack. + * + * @param callable $filterCallback + * @return \Whoops\Run + */ + public function addFrameFilter($filterCallback); +} diff --git a/kirby/vendor/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php b/kirby/vendor/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php new file mode 100644 index 0000000..8c828fd --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php @@ -0,0 +1,36 @@ + + */ + +namespace Whoops\Util; + +/** + * Used as output callable for Symfony\Component\VarDumper\Dumper\HtmlDumper::dump() + * + * @see TemplateHelper::dump() + */ +class HtmlDumperOutput +{ + private $output; + + public function __invoke($line, $depth) + { + // A negative depth means "end of dump" + if ($depth >= 0) { + // Adds a two spaces indentation to the line + $this->output .= str_repeat(' ', $depth) . $line . "\n"; + } + } + + public function getOutput() + { + return $this->output; + } + + public function clear() + { + $this->output = null; + } +} diff --git a/kirby/vendor/filp/whoops/src/Whoops/Util/Misc.php b/kirby/vendor/filp/whoops/src/Whoops/Util/Misc.php new file mode 100644 index 0000000..001a687 --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Util/Misc.php @@ -0,0 +1,77 @@ + + */ + +namespace Whoops\Util; + +class Misc +{ + /** + * Can we at this point in time send HTTP headers? + * + * Currently this checks if we are even serving an HTTP request, + * as opposed to running from a command line. + * + * If we are serving an HTTP request, we check if it's not too late. + * + * @return bool + */ + public static function canSendHeaders() + { + return isset($_SERVER["REQUEST_URI"]) && !headers_sent(); + } + + public static function isAjaxRequest() + { + return ( + !empty($_SERVER['HTTP_X_REQUESTED_WITH']) + && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); + } + + /** + * Check, if possible, that this execution was triggered by a command line. + * @return bool + */ + public static function isCommandLine() + { + return PHP_SAPI == 'cli'; + } + + /** + * Translate ErrorException code into the represented constant. + * + * @param int $error_code + * @return string + */ + public static function translateErrorCode($error_code) + { + $constants = get_defined_constants(true); + if (array_key_exists('Core', $constants)) { + foreach ($constants['Core'] as $constant => $value) { + if (substr($constant, 0, 2) == 'E_' && $value == $error_code) { + return $constant; + } + } + } + return "E_UNKNOWN"; + } + + /** + * Determine if an error level is fatal (halts execution) + * + * @param int $level + * @return bool + */ + public static function isLevelFatal($level) + { + $errors = E_ERROR; + $errors |= E_PARSE; + $errors |= E_CORE_ERROR; + $errors |= E_CORE_WARNING; + $errors |= E_COMPILE_ERROR; + $errors |= E_COMPILE_WARNING; + return ($level & $errors) > 0; + } +} diff --git a/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php b/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php new file mode 100644 index 0000000..9eb0acf --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Util/SystemFacade.php @@ -0,0 +1,144 @@ + + */ + +namespace Whoops\Util; + +class SystemFacade +{ + /** + * Turns on output buffering. + * + * @return bool + */ + public function startOutputBuffering() + { + return ob_start(); + } + + /** + * @param callable $handler + * @param int $types + * + * @return callable|null + */ + public function setErrorHandler(callable $handler, $types = 'use-php-defaults') + { + // Since PHP 5.4 the constant E_ALL contains all errors (even E_STRICT) + if ($types === 'use-php-defaults') { + $types = E_ALL; + } + return set_error_handler($handler, $types); + } + + /** + * @param callable $handler + * + * @return callable|null + */ + public function setExceptionHandler(callable $handler) + { + return set_exception_handler($handler); + } + + /** + * @return void + */ + public function restoreExceptionHandler() + { + restore_exception_handler(); + } + + /** + * @return void + */ + public function restoreErrorHandler() + { + restore_error_handler(); + } + + /** + * @param callable $function + * + * @return void + */ + public function registerShutdownFunction(callable $function) + { + register_shutdown_function($function); + } + + /** + * @return string|false + */ + public function cleanOutputBuffer() + { + return ob_get_clean(); + } + + /** + * @return int + */ + public function getOutputBufferLevel() + { + return ob_get_level(); + } + + /** + * @return bool + */ + public function endOutputBuffering() + { + return ob_end_clean(); + } + + /** + * @return void + */ + public function flushOutputBuffer() + { + flush(); + } + + /** + * @return int + */ + public function getErrorReportingLevel() + { + return error_reporting(); + } + + /** + * @return array|null + */ + public function getLastError() + { + return error_get_last(); + } + + /** + * @param int $httpCode + * + * @return int + */ + public function setHttpResponseCode($httpCode) + { + if (!headers_sent()) { + // Ensure that no 'location' header is present as otherwise this + // will override the HTTP code being set here, and mask the + // expected error page. + header_remove('location'); + } + + return http_response_code($httpCode); + } + + /** + * @param int $exitStatus + */ + public function stopExecution($exitStatus) + { + exit($exitStatus); + } +} diff --git a/kirby/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php b/kirby/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php new file mode 100644 index 0000000..8e4df32 --- /dev/null +++ b/kirby/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php @@ -0,0 +1,349 @@ + + */ + +namespace Whoops\Util; + +use Symfony\Component\VarDumper\Caster\Caster; +use Symfony\Component\VarDumper\Cloner\AbstractCloner; +use Symfony\Component\VarDumper\Cloner\VarCloner; +use Symfony\Component\VarDumper\Dumper\HtmlDumper; +use Whoops\Exception\Frame; + +/** + * Exposes useful tools for working with/in templates + */ +class TemplateHelper +{ + /** + * An array of variables to be passed to all templates + * @var array + */ + private $variables = []; + + /** + * @var HtmlDumper + */ + private $htmlDumper; + + /** + * @var HtmlDumperOutput + */ + private $htmlDumperOutput; + + /** + * @var AbstractCloner + */ + private $cloner; + + /** + * @var string + */ + private $applicationRootPath; + + public function __construct() + { + // root path for ordinary composer projects + $this->applicationRootPath = dirname(dirname(dirname(dirname(dirname(dirname(__DIR__)))))); + } + + /** + * Escapes a string for output in an HTML document + * + * @param string $raw + * @return string + */ + public function escape($raw) + { + $flags = ENT_QUOTES; + + // HHVM has all constants defined, but only ENT_IGNORE + // works at the moment + if (defined("ENT_SUBSTITUTE") && !defined("HHVM_VERSION")) { + $flags |= ENT_SUBSTITUTE; + } else { + // This is for 5.3. + // The documentation warns of a potential security issue, + // but it seems it does not apply in our case, because + // we do not blacklist anything anywhere. + $flags |= ENT_IGNORE; + } + + $raw = str_replace(chr(9), ' ', $raw); + + return htmlspecialchars($raw, $flags, "UTF-8"); + } + + /** + * Escapes a string for output in an HTML document, but preserves + * URIs within it, and converts them to clickable anchor elements. + * + * @param string $raw + * @return string + */ + public function escapeButPreserveUris($raw) + { + $escaped = $this->escape($raw); + return preg_replace( + "@([A-z]+?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@", + "
    $1", + $escaped + ); + } + + /** + * Makes sure that the given string breaks on the delimiter. + * + * @param string $delimiter + * @param string $s + * @return string + */ + public function breakOnDelimiter($delimiter, $s) + { + $parts = explode($delimiter, $s); + foreach ($parts as &$part) { + $part = '' . $part . ''; + } + + return implode($delimiter, $parts); + } + + /** + * Replace the part of the path that all files have in common. + * + * @param string $path + * @return string + */ + public function shorten($path) + { + if ($this->applicationRootPath != "/") { + $path = str_replace($this->applicationRootPath, '…', $path); + } + + return $path; + } + + private function getDumper() + { + if (!$this->htmlDumper && class_exists('Symfony\Component\VarDumper\Cloner\VarCloner')) { + $this->htmlDumperOutput = new HtmlDumperOutput(); + // re-use the same var-dumper instance, so it won't re-render the global styles/scripts on each dump. + $this->htmlDumper = new HtmlDumper($this->htmlDumperOutput); + + $styles = [ + 'default' => 'color:#FFFFFF; line-height:normal; font:12px "Inconsolata", "Fira Mono", "Source Code Pro", Monaco, Consolas, "Lucida Console", monospace !important; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: normal', + 'num' => 'color:#BCD42A', + 'const' => 'color: #4bb1b1;', + 'str' => 'color:#BCD42A', + 'note' => 'color:#ef7c61', + 'ref' => 'color:#A0A0A0', + 'public' => 'color:#FFFFFF', + 'protected' => 'color:#FFFFFF', + 'private' => 'color:#FFFFFF', + 'meta' => 'color:#FFFFFF', + 'key' => 'color:#BCD42A', + 'index' => 'color:#ef7c61', + ]; + $this->htmlDumper->setStyles($styles); + } + + return $this->htmlDumper; + } + + /** + * Format the given value into a human readable string. + * + * @param mixed $value + * @return string + */ + public function dump($value) + { + $dumper = $this->getDumper(); + + if ($dumper) { + // re-use the same DumpOutput instance, so it won't re-render the global styles/scripts on each dump. + // exclude verbose information (e.g. exception stack traces) + if (class_exists('Symfony\Component\VarDumper\Caster\Caster')) { + $cloneVar = $this->getCloner()->cloneVar($value, Caster::EXCLUDE_VERBOSE); + // Symfony VarDumper 2.6 Caster class dont exist. + } else { + $cloneVar = $this->getCloner()->cloneVar($value); + } + + $dumper->dump( + $cloneVar, + $this->htmlDumperOutput + ); + + $output = $this->htmlDumperOutput->getOutput(); + $this->htmlDumperOutput->clear(); + + return $output; + } + + return htmlspecialchars(print_r($value, true)); + } + + /** + * Format the args of the given Frame as a human readable html string + * + * @param Frame $frame + * @return string the rendered html + */ + public function dumpArgs(Frame $frame) + { + // we support frame args only when the optional dumper is available + if (!$this->getDumper()) { + return ''; + } + + $html = ''; + $numFrames = count($frame->getArgs()); + + if ($numFrames > 0) { + $html = '
      '; + foreach ($frame->getArgs() as $j => $frameArg) { + $html .= '
    1. '. $this->dump($frameArg) .'
    2. '; + } + $html .= '
    '; + } + + return $html; + } + + /** + * Convert a string to a slug version of itself + * + * @param string $original + * @return string + */ + public function slug($original) + { + $slug = str_replace(" ", "-", $original); + $slug = preg_replace('/[^\w\d\-\_]/i', '', $slug); + return strtolower($slug); + } + + /** + * Given a template path, render it within its own scope. This + * method also accepts an array of additional variables to be + * passed to the template. + * + * @param string $template + */ + public function render($template, array $additionalVariables = null) + { + $variables = $this->getVariables(); + + // Pass the helper to the template: + $variables["tpl"] = $this; + + if ($additionalVariables !== null) { + $variables = array_replace($variables, $additionalVariables); + } + + call_user_func(function () { + extract(func_get_arg(1)); + require func_get_arg(0); + }, $template, $variables); + } + + /** + * Sets the variables to be passed to all templates rendered + * by this template helper. + */ + public function setVariables(array $variables) + { + $this->variables = $variables; + } + + /** + * Sets a single template variable, by its name: + * + * @param string $variableName + * @param mixed $variableValue + */ + public function setVariable($variableName, $variableValue) + { + $this->variables[$variableName] = $variableValue; + } + + /** + * Gets a single template variable, by its name, or + * $defaultValue if the variable does not exist + * + * @param string $variableName + * @param mixed $defaultValue + * @return mixed + */ + public function getVariable($variableName, $defaultValue = null) + { + return isset($this->variables[$variableName]) ? + $this->variables[$variableName] : $defaultValue; + } + + /** + * Unsets a single template variable, by its name + * + * @param string $variableName + */ + public function delVariable($variableName) + { + unset($this->variables[$variableName]); + } + + /** + * Returns all variables for this helper + * + * @return array + */ + public function getVariables() + { + return $this->variables; + } + + /** + * Set the cloner used for dumping variables. + * + * @param AbstractCloner $cloner + */ + public function setCloner($cloner) + { + $this->cloner = $cloner; + } + + /** + * Get the cloner used for dumping variables. + * + * @return AbstractCloner + */ + public function getCloner() + { + if (!$this->cloner) { + $this->cloner = new VarCloner(); + } + return $this->cloner; + } + + /** + * Set the application root path. + * + * @param string $applicationRootPath + */ + public function setApplicationRootPath($applicationRootPath) + { + $this->applicationRootPath = $applicationRootPath; + } + + /** + * Return the application root path. + * + * @return string + */ + public function getApplicationRootPath() + { + return $this->applicationRootPath; + } +} diff --git a/kirby/vendor/laminas/laminas-escaper/COPYRIGHT.md b/kirby/vendor/laminas/laminas-escaper/COPYRIGHT.md new file mode 100644 index 0000000..0a8cccc --- /dev/null +++ b/kirby/vendor/laminas/laminas-escaper/COPYRIGHT.md @@ -0,0 +1 @@ +Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/) diff --git a/kirby/vendor/laminas/laminas-escaper/LICENSE.md b/kirby/vendor/laminas/laminas-escaper/LICENSE.md new file mode 100644 index 0000000..10b40f1 --- /dev/null +++ b/kirby/vendor/laminas/laminas-escaper/LICENSE.md @@ -0,0 +1,26 @@ +Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of Laminas Foundation nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/kirby/vendor/laminas/laminas-escaper/composer.json b/kirby/vendor/laminas/laminas-escaper/composer.json new file mode 100644 index 0000000..16cf063 --- /dev/null +++ b/kirby/vendor/laminas/laminas-escaper/composer.json @@ -0,0 +1,68 @@ +{ + "name": "laminas/laminas-escaper", + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "license": "BSD-3-Clause", + "keywords": [ + "laminas", + "escaper" + ], + "homepage": "https://laminas.dev", + "support": { + "docs": "https://docs.laminas.dev/laminas-escaper/", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "source": "https://github.com/laminas/laminas-escaper", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "chat": "https://laminas.dev/chat", + "forum": "https://discourse.laminas.dev" + }, + "config": { + "sort-packages": true, + "platform": { + "php": "8.1.99" + }, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "composer/package-versions-deprecated": true, + "infection/extension-installer": true + } + }, + "extra": { + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "ext-ctype": "*", + "ext-mbstring": "*" + }, + "require-dev": { + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" + }, + "autoload": { + "psr-4": { + "Laminas\\Escaper\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "LaminasTest\\Escaper\\": "test/" + } + }, + "scripts": { + "check": [ + "@cs-check", + "@test" + ], + "cs-check": "phpcs", + "cs-fix": "phpcbf", + "static-analysis": "psalm --shepherd --stats", + "test": "phpunit --colors=always", + "test-coverage": "phpunit --colors=always --coverage-clover clover.xml" + }, + "conflict": { + "zendframework/zend-escaper": "*" + } +} diff --git a/kirby/vendor/laminas/laminas-escaper/src/Escaper.php b/kirby/vendor/laminas/laminas-escaper/src/Escaper.php new file mode 100644 index 0000000..c4964cb --- /dev/null +++ b/kirby/vendor/laminas/laminas-escaper/src/Escaper.php @@ -0,0 +1,424 @@ + + */ + protected static $htmlNamedEntityMap = [ + 34 => 'quot', // quotation mark + 38 => 'amp', // ampersand + 60 => 'lt', // less-than sign + 62 => 'gt', // greater-than sign + ]; + + /** + * Current encoding for escaping. If not UTF-8, we convert strings from this encoding + * pre-escaping and back to this encoding post-escaping. + * + * @var string + */ + protected $encoding = 'utf-8'; + + /** + * Holds the value of the special flags passed as second parameter to + * htmlspecialchars(). + * + * @var int + */ + protected $htmlSpecialCharsFlags; + + /** + * Static Matcher which escapes characters for HTML Attribute contexts + * + * @var callable + * @psalm-var callable(array):string + */ + protected $htmlAttrMatcher; + + /** + * Static Matcher which escapes characters for Javascript contexts + * + * @var callable + * @psalm-var callable(array):string + */ + protected $jsMatcher; + + /** + * Static Matcher which escapes characters for CSS Attribute contexts + * + * @var callable + * @psalm-var callable(array):string + */ + protected $cssMatcher; + + /** + * List of all encoding supported by this class + * + * @var array + */ + protected $supportedEncodings = [ + 'iso-8859-1', + 'iso8859-1', + 'iso-8859-5', + 'iso8859-5', + 'iso-8859-15', + 'iso8859-15', + 'utf-8', + 'cp866', + 'ibm866', + '866', + 'cp1251', + 'windows-1251', + 'win-1251', + '1251', + 'cp1252', + 'windows-1252', + '1252', + 'koi8-r', + 'koi8-ru', + 'koi8r', + 'big5', + '950', + 'gb2312', + '936', + 'big5-hkscs', + 'shift_jis', + 'sjis', + 'sjis-win', + 'cp932', + '932', + 'euc-jp', + 'eucjp', + 'eucjp-win', + 'macroman', + ]; + + /** + * Constructor: Single parameter allows setting of global encoding for use by + * the current object. + * + * @throws Exception\InvalidArgumentException + */ + public function __construct(?string $encoding = null) + { + if ($encoding !== null) { + if ($encoding === '') { + throw new Exception\InvalidArgumentException( + static::class . ' constructor parameter does not allow a blank value' + ); + } + + $encoding = strtolower($encoding); + if (! in_array($encoding, $this->supportedEncodings)) { + throw new Exception\InvalidArgumentException( + 'Value of \'' . $encoding . '\' passed to ' . static::class + . ' constructor parameter is invalid. Provide an encoding supported by htmlspecialchars()' + ); + } + + $this->encoding = $encoding; + } + + // We take advantage of ENT_SUBSTITUTE flag to correctly deal with invalid UTF-8 sequences. + $this->htmlSpecialCharsFlags = ENT_QUOTES | ENT_SUBSTITUTE; + + // set matcher callbacks + $this->htmlAttrMatcher = + /** @param array $matches */ + function (array $matches): string { + return $this->htmlAttrMatcher($matches); + }; + $this->jsMatcher = + /** @param array $matches */ + function (array $matches): string { + return $this->jsMatcher($matches); + }; + $this->cssMatcher = + /** @param array $matches */ + function (array $matches): string { + return $this->cssMatcher($matches); + }; + } + + /** + * Return the encoding that all output/input is expected to be encoded in. + * + * @return string + */ + public function getEncoding() + { + return $this->encoding; + } + + /** + * Escape a string for the HTML Body context where there are very few characters + * of special meaning. Internally this will use htmlspecialchars(). + * + * @return string + */ + public function escapeHtml(string $string) + { + return htmlspecialchars($string, $this->htmlSpecialCharsFlags, $this->encoding); + } + + /** + * Escape a string for the HTML Attribute context. We use an extended set of characters + * to escape that are not covered by htmlspecialchars() to cover cases where an attribute + * might be unquoted or quoted illegally (e.g. backticks are valid quotes for IE). + * + * @return string + */ + public function escapeHtmlAttr(string $string) + { + $string = $this->toUtf8($string); + if ($string === '' || ctype_digit($string)) { + return $string; + } + + $result = preg_replace_callback('/[^a-z0-9,\.\-_]/iSu', $this->htmlAttrMatcher, $string); + return $this->fromUtf8($result); + } + + /** + * Escape a string for the Javascript context. This does not use json_encode(). An extended + * set of characters are escaped beyond ECMAScript's rules for Javascript literal string + * escaping in order to prevent misinterpretation of Javascript as HTML leading to the + * injection of special characters and entities. The escaping used should be tolerant + * of cases where HTML escaping was not applied on top of Javascript escaping correctly. + * Backslash escaping is not used as it still leaves the escaped character as-is and so + * is not useful in a HTML context. + * + * @return string + */ + public function escapeJs(string $string) + { + $string = $this->toUtf8($string); + if ($string === '' || ctype_digit($string)) { + return $string; + } + + $result = preg_replace_callback('/[^a-z0-9,\._]/iSu', $this->jsMatcher, $string); + return $this->fromUtf8($result); + } + + /** + * Escape a string for the URI or Parameter contexts. This should not be used to escape + * an entire URI - only a subcomponent being inserted. The function is a simple proxy + * to rawurlencode() which now implements RFC 3986 since PHP 5.3 completely. + * + * @return string + */ + public function escapeUrl(string $string) + { + return rawurlencode($string); + } + + /** + * Escape a string for the CSS context. CSS escaping can be applied to any string being + * inserted into CSS and escapes everything except alphanumerics. + * + * @return string + */ + public function escapeCss(string $string) + { + $string = $this->toUtf8($string); + if ($string === '' || ctype_digit($string)) { + return $string; + } + + $result = preg_replace_callback('/[^a-z0-9]/iSu', $this->cssMatcher, $string); + return $this->fromUtf8($result); + } + + /** + * Callback function for preg_replace_callback that applies HTML Attribute + * escaping to all matches. + * + * @param array $matches + * @return string + */ + protected function htmlAttrMatcher($matches) + { + $chr = $matches[0]; + $ord = ord($chr); + + /** + * The following replaces characters undefined in HTML with the + * hex entity for the Unicode replacement character. + */ + if ( + ($ord <= 0x1f && $chr !== "\t" && $chr !== "\n" && $chr !== "\r") + || ($ord >= 0x7f && $ord <= 0x9f) + ) { + return '�'; + } + + /** + * Check if the current character to escape has a name entity we should + * replace it with while grabbing the integer value of the character. + */ + if (strlen($chr) > 1) { + $chr = $this->convertEncoding($chr, 'UTF-32BE', 'UTF-8'); + } + + $hex = bin2hex($chr); + $ord = hexdec($hex); + if (isset(static::$htmlNamedEntityMap[$ord])) { + return '&' . static::$htmlNamedEntityMap[$ord] . ';'; + } + + /** + * Per OWASP recommendations, we'll use upper hex entities + * for any other characters where a named entity does not exist. + */ + if ($ord > 255) { + return sprintf('&#x%04X;', $ord); + } + return sprintf('&#x%02X;', $ord); + } + + /** + * Callback function for preg_replace_callback that applies Javascript + * escaping to all matches. + * + * @param array $matches + * @return string + */ + protected function jsMatcher($matches) + { + $chr = $matches[0]; + if (strlen($chr) === 1) { + return sprintf('\\x%02X', ord($chr)); + } + $chr = $this->convertEncoding($chr, 'UTF-16BE', 'UTF-8'); + $hex = strtoupper(bin2hex($chr)); + if (strlen($hex) <= 4) { + return sprintf('\\u%04s', $hex); + } + $highSurrogate = substr($hex, 0, 4); + $lowSurrogate = substr($hex, 4, 4); + return sprintf('\\u%04s\\u%04s', $highSurrogate, $lowSurrogate); + } + + /** + * Callback function for preg_replace_callback that applies CSS + * escaping to all matches. + * + * @param array $matches + * @return string + */ + protected function cssMatcher($matches) + { + $chr = $matches[0]; + if (strlen($chr) === 1) { + $ord = ord($chr); + } else { + $chr = $this->convertEncoding($chr, 'UTF-32BE', 'UTF-8'); + $ord = hexdec(bin2hex($chr)); + } + return sprintf('\\%X ', $ord); + } + + /** + * Converts a string to UTF-8 from the base encoding. The base encoding is set via this + * + * @param string $string + * @throws Exception\RuntimeException + * @return string + */ + protected function toUtf8($string) + { + if ($this->getEncoding() === 'utf-8') { + $result = $string; + } else { + $result = $this->convertEncoding($string, 'UTF-8', $this->getEncoding()); + } + + if (! $this->isUtf8($result)) { + throw new Exception\RuntimeException( + sprintf('String to be escaped was not valid UTF-8 or could not be converted: %s', $result) + ); + } + + return $result; + } + + /** + * Converts a string from UTF-8 to the base encoding. The base encoding is set via this + * + * @param string $string + * @return string + */ + protected function fromUtf8($string) + { + if ($this->getEncoding() === 'utf-8') { + return $string; + } + + return $this->convertEncoding($string, $this->getEncoding(), 'UTF-8'); + } + + /** + * Checks if a given string appears to be valid UTF-8 or not. + * + * @param string $string + * @return bool + */ + protected function isUtf8($string) + { + return $string === '' || preg_match('/^./su', $string); + } + + /** + * Encoding conversion helper which wraps mb_convert_encoding + * + * @param string $string + * @param string $to + * @param array|string $from + * @return string + */ + protected function convertEncoding($string, $to, $from) + { + $result = mb_convert_encoding($string, $to, $from); + + if ($result === false) { + return ''; // return non-fatal blank string on encoding errors from users + } + + return $result; + } +} diff --git a/kirby/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php b/kirby/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php new file mode 100644 index 0000000..8f5fd89 --- /dev/null +++ b/kirby/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php @@ -0,0 +1,11 @@ + $color >> 16 & 0xFF, + 'g' => $color >> 8 & 0xFF, + 'b' => $color & 0xFF, + ]; + } + + /** + * @param array $components + * + * @return int + */ + public static function fromRgbToInt(array $components) + { + return ($components['r'] * 65536) + ($components['g'] * 256) + ($components['b']); + } +} diff --git a/kirby/vendor/league/color-extractor/src/ColorExtractor.php b/kirby/vendor/league/color-extractor/src/ColorExtractor.php new file mode 100644 index 0000000..364a3bd --- /dev/null +++ b/kirby/vendor/league/color-extractor/src/ColorExtractor.php @@ -0,0 +1,282 @@ +palette = $palette; + } + + /** + * @param int $colorCount + * + * @return array + */ + public function extract($colorCount = 1) + { + if ($colorCount === 0) { + return []; + } + + if (!$this->isInitialized()) { + $this->initialize(); + } + + return self::mergeColors($this->sortedColors, $colorCount, 100 / $colorCount); + } + + /** + * @return bool + */ + protected function isInitialized() + { + return $this->sortedColors !== null; + } + + protected function initialize() + { + $queue = new \SplPriorityQueue(); + $this->sortedColors = new \SplFixedArray(count($this->palette)); + + $i = 0; + foreach ($this->palette as $color => $count) { + $labColor = self::intColorToLab($color); + $queue->insert( + $color, + (sqrt($labColor['a'] * $labColor['a'] + $labColor['b'] * $labColor['b']) ?: 1) * + (1 - $labColor['L'] / 200) * + sqrt($count) + ); + ++$i; + } + + $i = 0; + while ($queue->valid()) { + $this->sortedColors[$i] = $queue->current(); + $queue->next(); + ++$i; + } + } + + /** + * @param \SplFixedArray $colors + * @param int $limit + * @param int $maxDelta + * + * @return array + */ + protected static function mergeColors(\SplFixedArray $colors, $limit, $maxDelta) + { + $limit = min(count($colors), $limit); + if ($limit === 0) { + return []; + } + if ($limit === 1) { + return [$colors[0]]; + } + $labCache = new \SplFixedArray($limit - 1); + $mergedColors = []; + + foreach ($colors as $color) { + $hasColorBeenMerged = false; + + $colorLab = self::intColorToLab($color); + + foreach ($mergedColors as $i => $mergedColor) { + if (self::ciede2000DeltaE($colorLab, $labCache[$i]) < $maxDelta) { + $hasColorBeenMerged = true; + break; + } + } + + if ($hasColorBeenMerged) { + continue; + } + + $mergedColorCount = count($mergedColors); + $mergedColors[] = $color; + + if ($mergedColorCount + 1 == $limit) { + break; + } + + $labCache[$mergedColorCount] = $colorLab; + } + + return $mergedColors; + } + + /** + * @param array $firstLabColor + * @param array $secondLabColor + * + * @return float + */ + protected static function ciede2000DeltaE($firstLabColor, $secondLabColor) + { + $C1 = sqrt(pow($firstLabColor['a'], 2) + pow($firstLabColor['b'], 2)); + $C2 = sqrt(pow($secondLabColor['a'], 2) + pow($secondLabColor['b'], 2)); + $Cb = ($C1 + $C2) / 2; + + $G = .5 * (1 - sqrt(pow($Cb, 7) / (pow($Cb, 7) + pow(25, 7)))); + + $a1p = (1 + $G) * $firstLabColor['a']; + $a2p = (1 + $G) * $secondLabColor['a']; + + $C1p = sqrt(pow($a1p, 2) + pow($firstLabColor['b'], 2)); + $C2p = sqrt(pow($a2p, 2) + pow($secondLabColor['b'], 2)); + + $h1p = $a1p == 0 && $firstLabColor['b'] == 0 ? 0 : atan2($firstLabColor['b'], $a1p); + $h2p = $a2p == 0 && $secondLabColor['b'] == 0 ? 0 : atan2($secondLabColor['b'], $a2p); + + $LpDelta = $secondLabColor['L'] - $firstLabColor['L']; + $CpDelta = $C2p - $C1p; + + if ($C1p * $C2p == 0) { + $hpDelta = 0; + } elseif (abs($h2p - $h1p) <= 180) { + $hpDelta = $h2p - $h1p; + } elseif ($h2p - $h1p > 180) { + $hpDelta = $h2p - $h1p - 360; + } else { + $hpDelta = $h2p - $h1p + 360; + } + + $HpDelta = 2 * sqrt($C1p * $C2p) * sin($hpDelta / 2); + + $Lbp = ($firstLabColor['L'] + $secondLabColor['L']) / 2; + $Cbp = ($C1p + $C2p) / 2; + + if ($C1p * $C2p == 0) { + $hbp = $h1p + $h2p; + } elseif (abs($h1p - $h2p) <= 180) { + $hbp = ($h1p + $h2p) / 2; + } elseif ($h1p + $h2p < 360) { + $hbp = ($h1p + $h2p + 360) / 2; + } else { + $hbp = ($h1p + $h2p - 360) / 2; + } + + $T = 1 - .17 * cos($hbp - 30) + .24 * cos(2 * $hbp) + .32 * cos(3 * $hbp + 6) - .2 * cos(4 * $hbp - 63); + + $sigmaDelta = 30 * exp(-pow(($hbp - 275) / 25, 2)); + + $Rc = 2 * sqrt(pow($Cbp, 7) / (pow($Cbp, 7) + pow(25, 7))); + + $Sl = 1 + ((.015 * pow($Lbp - 50, 2)) / sqrt(20 + pow($Lbp - 50, 2))); + $Sc = 1 + .045 * $Cbp; + $Sh = 1 + .015 * $Cbp * $T; + + $Rt = -sin(2 * $sigmaDelta) * $Rc; + + return sqrt( + pow($LpDelta / $Sl, 2) + + pow($CpDelta / $Sc, 2) + + pow($HpDelta / $Sh, 2) + + $Rt * ($CpDelta / $Sc) * ($HpDelta / $Sh) + ); + } + + /** + * @param int $color + * + * @return array + */ + protected static function intColorToLab($color) + { + return self::xyzToLab( + self::srgbToXyz( + self::rgbToSrgb( + [ + 'R' => ($color >> 16) & 0xFF, + 'G' => ($color >> 8) & 0xFF, + 'B' => $color & 0xFF, + ] + ) + ) + ); + } + + /** + * @param int $value + * + * @return float + */ + protected static function rgbToSrgbStep($value) + { + $value /= 255; + + return $value <= .03928 ? + $value / 12.92 : + pow(($value + .055) / 1.055, 2.4); + } + + /** + * @param array $rgb + * + * @return array + */ + protected static function rgbToSrgb($rgb) + { + return [ + 'R' => self::rgbToSrgbStep($rgb['R']), + 'G' => self::rgbToSrgbStep($rgb['G']), + 'B' => self::rgbToSrgbStep($rgb['B']), + ]; + } + + /** + * @param array $rgb + * + * @return array + */ + protected static function srgbToXyz($rgb) + { + return [ + 'X' => (.4124564 * $rgb['R']) + (.3575761 * $rgb['G']) + (.1804375 * $rgb['B']), + 'Y' => (.2126729 * $rgb['R']) + (.7151522 * $rgb['G']) + (.0721750 * $rgb['B']), + 'Z' => (.0193339 * $rgb['R']) + (.1191920 * $rgb['G']) + (.9503041 * $rgb['B']), + ]; + } + + /** + * @param float $value + * + * @return float + */ + protected static function xyzToLabStep($value) + { + return $value > 216 / 24389 ? pow($value, 1 / 3) : 841 * $value / 108 + 4 / 29; + } + + /** + * @param array $xyz + * + * @return array + */ + protected static function xyzToLab($xyz) + { + //http://en.wikipedia.org/wiki/Illuminant_D65#Definition + $Xn = .95047; + $Yn = 1; + $Zn = 1.08883; + + // http://en.wikipedia.org/wiki/Lab_color_space#CIELAB-CIEXYZ_conversions + return [ + 'L' => 116 * self::xyzToLabStep($xyz['Y'] / $Yn) - 16, + 'a' => 500 * (self::xyzToLabStep($xyz['X'] / $Xn) - self::xyzToLabStep($xyz['Y'] / $Yn)), + 'b' => 200 * (self::xyzToLabStep($xyz['Y'] / $Yn) - self::xyzToLabStep($xyz['Z'] / $Zn)), + ]; + } +} diff --git a/kirby/vendor/league/color-extractor/src/Palette.php b/kirby/vendor/league/color-extractor/src/Palette.php new file mode 100644 index 0000000..5c5266f --- /dev/null +++ b/kirby/vendor/league/color-extractor/src/Palette.php @@ -0,0 +1,180 @@ +colors); + } + + /** + * @return \Traversable + */ + public function getIterator(): \Traversable + { + return new \ArrayIterator($this->colors); + } + + /** + * @return int + */ + public function getColorCount($color) + { + if (!array_key_exists($color, $this->colors)) { + return 0; + } + + return $this->colors[$color]; + } + + /** + * @param int $limit = null + * + * @return array + */ + public function getMostUsedColors($limit = null) + { + return array_slice($this->colors, 0, $limit, true); + } + + /** + * @param string $filename + * @param int|null $backgroundColor + * + * @return Palette + * + * @throws \InvalidArgumentException + */ + public static function fromFilename($filename, $backgroundColor = null) + { + if (!is_readable($filename)) { + throw new \InvalidArgumentException('Filename must be a valid path and should be readable'); + } + + return self::fromContents(file_get_contents($filename), $backgroundColor); + } + + /** + * @param string $url + * @param int|null $backgroundColor + * + * @return Palette + * + * @throws \RuntimeException + */ + public static function fromUrl($url, $backgroundColor = null) + { + if (!function_exists('curl_init')){ + return self::fromContents(file_get_contents($url)); + } + + $ch = curl_init(); + try { + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $contents = curl_exec($ch); + if ($contents === false) { + throw new \RuntimeException('Failed to fetch image from URL'); + } + } finally { + curl_close($ch); + } + + return self::fromContents($contents, $backgroundColor); + } + + /** + * Create instance with file contents + * + * @param string $contents + * @param int|null $backgroundColor + * + * @return Palette + */ + public static function fromContents($contents, $backgroundColor = null) { + $image = imagecreatefromstring($contents); + $palette = self::fromGD($image, $backgroundColor); + imagedestroy($image); + + return $palette; + } + + /** + * @param \GDImage|resource $image + * @param int|null $backgroundColor + * + * @return Palette + * + * @throws \InvalidArgumentException + */ + public static function fromGD($image, ?int $backgroundColor = null) + { + if (!$image instanceof \GDImage && (!is_resource($image) || get_resource_type($image) !== 'gd')) { + throw new \InvalidArgumentException('Image must be a gd resource'); + } + if ($backgroundColor !== null && (!is_numeric($backgroundColor) || $backgroundColor < 0 || $backgroundColor > 16777215)) { + throw new \InvalidArgumentException(sprintf('"%s" does not represent a valid color', $backgroundColor)); + } + + $palette = new self(); + + $areColorsIndexed = !imageistruecolor($image); + $imageWidth = imagesx($image); + $imageHeight = imagesy($image); + $palette->colors = []; + + $backgroundColorRed = ($backgroundColor >> 16) & 0xFF; + $backgroundColorGreen = ($backgroundColor >> 8) & 0xFF; + $backgroundColorBlue = $backgroundColor & 0xFF; + + for ($x = 0; $x < $imageWidth; ++$x) { + for ($y = 0; $y < $imageHeight; ++$y) { + $color = imagecolorat($image, $x, $y); + if ($areColorsIndexed) { + $colorComponents = imagecolorsforindex($image, $color); + $color = ($colorComponents['alpha'] * 16777216) + + ($colorComponents['red'] * 65536) + + ($colorComponents['green'] * 256) + + ($colorComponents['blue']); + } + + if ($alpha = $color >> 24) { + if ($backgroundColor === null) { + continue; + } + + $alpha /= 127; + $color = (int) (($color >> 16 & 0xFF) * (1 - $alpha) + $backgroundColorRed * $alpha) * 65536 + + (int) (($color >> 8 & 0xFF) * (1 - $alpha) + $backgroundColorGreen * $alpha) * 256 + + (int) (($color & 0xFF) * (1 - $alpha) + $backgroundColorBlue * $alpha); + } + + isset($palette->colors[$color]) ? + $palette->colors[$color] += 1 : + $palette->colors[$color] = 1; + } + } + + arsort($palette->colors); + + return $palette; + } + + protected function __construct() + { + $this->colors = []; + } +} diff --git a/kirby/vendor/michelf/php-smartypants/License.md b/kirby/vendor/michelf/php-smartypants/License.md new file mode 100644 index 0000000..20aad72 --- /dev/null +++ b/kirby/vendor/michelf/php-smartypants/License.md @@ -0,0 +1,36 @@ +PHP SmartyPants Lib +Copyright (c) 2005-2016 Michel Fortin + +All rights reserved. + +Original SmartyPants +Copyright (c) 2003-2004 John Gruber + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +* Neither the name "SmartyPants" nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +This software is provided by the copyright holders and contributors "as +is" and any express or implied warranties, including, but not limited +to, the implied warranties of merchantability and fitness for a +particular purpose are disclaimed. In no event shall the copyright owner +or contributors be liable for any direct, indirect, incidental, special, +exemplary, or consequential damages (including, but not limited to, +procurement of substitute goods or services; loss of use, data, or +profits; or business interruption) however caused and on any theory of +liability, whether in contract, strict liability, or tort (including +negligence or otherwise) arising in any way out of the use of this +software, even if advised of the possibility of such damage. diff --git a/kirby/vendor/michelf/php-smartypants/Michelf/SmartyPants.inc.php b/kirby/vendor/michelf/php-smartypants/Michelf/SmartyPants.inc.php new file mode 100644 index 0000000..b4ee661 --- /dev/null +++ b/kirby/vendor/michelf/php-smartypants/Michelf/SmartyPants.inc.php @@ -0,0 +1,9 @@ + +# +# Original SmartyPants +# Copyright (c) 2003-2004 John Gruber +# +# +namespace Michelf; + + +# +# SmartyPants Parser Class +# + +class SmartyPants { + + ### Version ### + + const SMARTYPANTSLIB_VERSION = "1.8.1"; + + + ### Presets + + # SmartyPants does nothing at all + const ATTR_DO_NOTHING = 0; + # "--" for em-dashes; no en-dash support + const ATTR_EM_DASH = 1; + # "---" for em-dashes; "--" for en-dashes + const ATTR_LONG_EM_DASH_SHORT_EN = 2; + # "--" for em-dashes; "---" for en-dashes + const ATTR_SHORT_EM_DASH_LONG_EN = 3; + # "--" for em-dashes; "---" for en-dashes + const ATTR_STUPEFY = -1; + + # The default preset: ATTR_EM_DASH + const ATTR_DEFAULT = SmartyPants::ATTR_EM_DASH; + + + ### Standard Function Interface ### + + public static function defaultTransform($text, $attr = SmartyPants::ATTR_DEFAULT) { + # + # Initialize the parser and return the result of its transform method. + # This will work fine for derived classes too. + # + # Take parser class on which this function was called. + $parser_class = \get_called_class(); + + # try to take parser from the static parser list + static $parser_list; + $parser =& $parser_list[$parser_class][$attr]; + + # create the parser if not already set + if (!$parser) + $parser = new $parser_class($attr); + + # Transform text using parser. + return $parser->transform($text); + } + + + ### Configuration Variables ### + + # Partial regex for matching tags to skip + public $tags_to_skip = 'pre|code|kbd|script|style|math'; + + # Options to specify which transformations to make: + public $do_nothing = 0; # disable all transforms + public $do_quotes = 0; + public $do_backticks = 0; # 1 => double only, 2 => double & single + public $do_dashes = 0; # 1, 2, or 3 for the three modes described above + public $do_ellipses = 0; + public $do_stupefy = 0; + public $convert_quot = 0; # should we translate " entities into normal quotes? + + # Smart quote characters: + # Opening and closing smart double-quotes. + public $smart_doublequote_open = '“'; + public $smart_doublequote_close = '”'; + public $smart_singlequote_open = '‘'; + public $smart_singlequote_close = '’'; # Also apostrophe. + + # ``Backtick quotes'' + public $backtick_doublequote_open = '“'; // replacement for `` + public $backtick_doublequote_close = '”'; // replacement for '' + public $backtick_singlequote_open = '‘'; // replacement for ` + public $backtick_singlequote_close = '’'; // replacement for ' (also apostrophe) + + # Other punctuation + public $em_dash = '—'; + public $en_dash = '–'; + public $ellipsis = '…'; + + ### Parser Implementation ### + + public function __construct($attr = SmartyPants::ATTR_DEFAULT) { + # + # Initialize a parser with certain attributes. + # + # Parser attributes: + # 0 : do nothing + # 1 : set all + # 2 : set all, using old school en- and em- dash shortcuts + # 3 : set all, using inverted old school en and em- dash shortcuts + # + # q : quotes + # b : backtick quotes (``double'' only) + # B : backtick quotes (``double'' and `single') + # d : dashes + # D : old school dashes + # i : inverted old school dashes + # e : ellipses + # w : convert " entities to " for Dreamweaver users + # + if ($attr == "0") { + $this->do_nothing = 1; + } + else if ($attr == "1") { + # Do everything, turn all options on. + $this->do_quotes = 1; + $this->do_backticks = 1; + $this->do_dashes = 1; + $this->do_ellipses = 1; + } + else if ($attr == "2") { + # Do everything, turn all options on, use old school dash shorthand. + $this->do_quotes = 1; + $this->do_backticks = 1; + $this->do_dashes = 2; + $this->do_ellipses = 1; + } + else if ($attr == "3") { + # Do everything, turn all options on, use inverted old school dash shorthand. + $this->do_quotes = 1; + $this->do_backticks = 1; + $this->do_dashes = 3; + $this->do_ellipses = 1; + } + else if ($attr == "-1") { + # Special "stupefy" mode. + $this->do_stupefy = 1; + } + else { + $chars = preg_split('//', $attr); + foreach ($chars as $c){ + if ($c == "q") { $this->do_quotes = 1; } + else if ($c == "b") { $this->do_backticks = 1; } + else if ($c == "B") { $this->do_backticks = 2; } + else if ($c == "d") { $this->do_dashes = 1; } + else if ($c == "D") { $this->do_dashes = 2; } + else if ($c == "i") { $this->do_dashes = 3; } + else if ($c == "e") { $this->do_ellipses = 1; } + else if ($c == "w") { $this->convert_quot = 1; } + else { + # Unknown attribute option, ignore. + } + } + } + } + + public function transform($text) { + + if ($this->do_nothing) { + return $text; + } + + $tokens = $this->tokenizeHTML($text); + $result = ''; + $in_pre = 0; # Keep track of when we're inside
     or  tags.
    +
    +		$prev_token_last_char = ""; # This is a cheat, used to get some context
    +									# for one-character tokens that consist of 
    +									# just a quote char. What we do is remember
    +									# the last character of the previous text
    +									# token, to use as context to curl single-
    +									# character quote tokens correctly.
    +
    +		foreach ($tokens as $cur_token) {
    +			if ($cur_token[0] == "tag") {
    +				# Don't mess with quotes inside tags.
    +				$result .= $cur_token[1];
    +				if (preg_match('@<(/?)(?:'.$this->tags_to_skip.')[\s>]@', $cur_token[1], $matches)) {
    +					$in_pre = isset($matches[1]) && $matches[1] == '/' ? 0 : 1;
    +				}
    +			} else {
    +				$t = $cur_token[1];
    +				$last_char = substr($t, -1); # Remember last char of this token before processing.
    +				if (! $in_pre) {
    +					$t = $this->educate($t, $prev_token_last_char);
    +				}
    +				$prev_token_last_char = $last_char;
    +				$result .= $t;
    +			}
    +		}
    +
    +		return $result;
    +	}
    +
    +
    +	function decodeEntitiesInConfiguration() {
    +	#
    +	#   Utility function that converts entities in configuration variables to
    +	#   UTF-8 characters.
    +	#
    +		$output_config_vars = array(
    +			'smart_doublequote_open',
    +			'smart_doublequote_close',
    +			'smart_singlequote_open',
    +			'smart_singlequote_close',
    +			'backtick_doublequote_open',
    +			'backtick_doublequote_close',
    +			'backtick_singlequote_open',
    +			'backtick_singlequote_close',
    +			'em_dash',
    +			'en_dash',
    +			'ellipsis',
    +		);
    +		foreach ($output_config_vars as $var) {
    +			$this->$var = html_entity_decode($this->$var);
    +		}
    +	}
    +
    +
    +	protected function educate($t, $prev_token_last_char) {
    +		$t = $this->processEscapes($t);
    +
    +		if ($this->convert_quot) {
    +			$t = preg_replace('/"/', '"', $t);
    +		}
    +
    +		if ($this->do_dashes) {
    +			if ($this->do_dashes == 1) $t = $this->educateDashes($t);
    +			if ($this->do_dashes == 2) $t = $this->educateDashesOldSchool($t);
    +			if ($this->do_dashes == 3) $t = $this->educateDashesOldSchoolInverted($t);
    +		}
    +
    +		if ($this->do_ellipses) $t = $this->educateEllipses($t);
    +
    +		# Note: backticks need to be processed before quotes.
    +		if ($this->do_backticks) {
    +			$t = $this->educateBackticks($t);
    +			if ($this->do_backticks == 2) $t = $this->educateSingleBackticks($t);
    +		}
    +
    +		if ($this->do_quotes) {
    +			if ($t == "'") {
    +				# Special case: single-character ' token
    +				if (preg_match('/\S/', $prev_token_last_char)) {
    +					$t = $this->smart_singlequote_close;
    +				}
    +				else {
    +					$t = $this->smart_singlequote_open;
    +				}
    +			}
    +			else if ($t == '"') {
    +				# Special case: single-character " token
    +				if (preg_match('/\S/', $prev_token_last_char)) {
    +					$t = $this->smart_doublequote_close;
    +				}
    +				else {
    +					$t = $this->smart_doublequote_open;
    +				}
    +			}
    +			else {
    +				# Normal case:
    +				$t = $this->educateQuotes($t);
    +			}
    +		}
    +
    +		if ($this->do_stupefy) $t = $this->stupefyEntities($t);
    +		
    +		return $t;
    +	}
    +
    +
    +	protected function educateQuotes($_) {
    +	#
    +	#   Parameter:  String.
    +	#
    +	#   Returns:    The string, with "educated" curly quote HTML entities.
    +	#
    +	#   Example input:  "Isn't this fun?"
    +	#   Example output: “Isn’t this fun?”
    +	#
    +		$dq_open  = $this->smart_doublequote_open;
    +		$dq_close = $this->smart_doublequote_close;
    +		$sq_open  = $this->smart_singlequote_open;
    +		$sq_close = $this->smart_singlequote_close;
    +	
    +		# Make our own "punctuation" character class, because the POSIX-style
    +		# [:PUNCT:] is only available in Perl 5.6 or later:
    +		$punct_class = "[!\"#\\$\\%'()*+,-.\\/:;<=>?\\@\\[\\\\\]\\^_`{|}~]";
    +
    +		# Special case if the very first character is a quote
    +		# followed by punctuation at a non-word-break. Close the quotes by brute force:
    +		$_ = preg_replace(
    +			array("/^'(?=$punct_class\\B)/", "/^\"(?=$punct_class\\B)/"),
    +			array($sq_close,                 $dq_close), $_);
    +
    +		# Special case for double sets of quotes, e.g.:
    +		#   

    He said, "'Quoted' words in a larger quote."

    + $_ = preg_replace( + array("/\"'(?=\w)/", "/'\"(?=\w)/"), + array($dq_open.$sq_open, $sq_open.$dq_open), $_); + + # Special case for decade abbreviations (the '80s): + $_ = preg_replace("/'(?=\\d{2}s)/", $sq_close, $_); + + $close_class = '[^\ \t\r\n\[\{\(\-]'; + $dec_dashes = '&\#8211;|&\#8212;'; + + # Get most opening single quotes: + $_ = preg_replace("{ + ( + \\s | # a whitespace char, or +   | # a non-breaking space entity, or + -- | # dashes, or + &[mn]dash; | # named dash entities + $dec_dashes | # or decimal entities + &\\#x201[34]; # or hex + ) + ' # the quote + (?=\\w) # followed by a word character + }x", '\1'.$sq_open, $_); + # Single closing quotes: + $_ = preg_replace("{ + ($close_class)? + ' + (?(1)| # If $1 captured, then do nothing; + (?=\\s | s\\b) # otherwise, positive lookahead for a whitespace + ) # char or an 's' at a word ending position. This + # is a special case to handle something like: + # \"Custer's Last Stand.\" + }xi", '\1'.$sq_close, $_); + + # Any remaining single quotes should be opening ones: + $_ = str_replace("'", $sq_open, $_); + + + # Get most opening double quotes: + $_ = preg_replace("{ + ( + \\s | # a whitespace char, or +   | # a non-breaking space entity, or + -- | # dashes, or + &[mn]dash; | # named dash entities + $dec_dashes | # or decimal entities + &\\#x201[34]; # or hex + ) + \" # the quote + (?=\\w) # followed by a word character + }x", '\1'.$dq_open, $_); + + # Double closing quotes: + $_ = preg_replace("{ + ($close_class)? + \" + (?(1)|(?=\\s)) # If $1 captured, then do nothing; + # if not, then make sure the next char is whitespace. + }x", '\1'.$dq_close, $_); + + # Any remaining quotes should be opening ones. + $_ = str_replace('"', $dq_open, $_); + + return $_; + } + + + protected function educateBackticks($_) { + # + # Parameter: String. + # Returns: The string, with ``backticks'' -style double quotes + # translated into HTML curly quote entities. + # + # Example input: ``Isn't this fun?'' + # Example output: “Isn't this fun?” + # + + $_ = str_replace(array("``", "''",), + array($this->backtick_doublequote_open, + $this->backtick_doublequote_close), $_); + return $_; + } + + + protected function educateSingleBackticks($_) { + # + # Parameter: String. + # Returns: The string, with `backticks' -style single quotes + # translated into HTML curly quote entities. + # + # Example input: `Isn't this fun?' + # Example output: ‘Isn’t this fun?’ + # + + $_ = str_replace(array("`", "'",), + array($this->backtick_singlequote_open, + $this->backtick_singlequote_close), $_); + return $_; + } + + + protected function educateDashes($_) { + # + # Parameter: String. + # + # Returns: The string, with each instance of "--" translated to + # an em-dash HTML entity. + # + + $_ = str_replace('--', $this->em_dash, $_); + return $_; + } + + + protected function educateDashesOldSchool($_) { + # + # Parameter: String. + # + # Returns: The string, with each instance of "--" translated to + # an en-dash HTML entity, and each "---" translated to + # an em-dash HTML entity. + # + + # em en + $_ = str_replace(array("---", "--",), + array($this->em_dash, $this->en_dash), $_); + return $_; + } + + + protected function educateDashesOldSchoolInverted($_) { + # + # Parameter: String. + # + # Returns: The string, with each instance of "--" translated to + # an em-dash HTML entity, and each "---" translated to + # an en-dash HTML entity. Two reasons why: First, unlike the + # en- and em-dash syntax supported by + # EducateDashesOldSchool(), it's compatible with existing + # entries written before SmartyPants 1.1, back when "--" was + # only used for em-dashes. Second, em-dashes are more + # common than en-dashes, and so it sort of makes sense that + # the shortcut should be shorter to type. (Thanks to Aaron + # Swartz for the idea.) + # + + # en em + $_ = str_replace(array("---", "--",), + array($this->en_dash, $this->em_dash), $_); + return $_; + } + + + protected function educateEllipses($_) { + # + # Parameter: String. + # Returns: The string, with each instance of "..." translated to + # an ellipsis HTML entity. Also converts the case where + # there are spaces between the dots. + # + # Example input: Huh...? + # Example output: Huh…? + # + + $_ = str_replace(array("...", ". . .",), $this->ellipsis, $_); + return $_; + } + + + protected function stupefyEntities($_) { + # + # Parameter: String. + # Returns: The string, with each SmartyPants HTML entity translated to + # its ASCII counterpart. + # + # Example input: “Hello — world.” + # Example output: "Hello -- world." + # + + # en-dash em-dash + $_ = str_replace(array('–', '—'), + array('-', '--'), $_); + + # single quote open close + $_ = str_replace(array('‘', '’'), "'", $_); + + # double quote open close + $_ = str_replace(array('“', '”'), '"', $_); + + $_ = str_replace('…', '...', $_); # ellipsis + + return $_; + } + + + protected function processEscapes($_) { + # + # Parameter: String. + # Returns: The string, with after processing the following backslash + # escape sequences. This is useful if you want to force a "dumb" + # quote or other character to appear. + # + # Escape Value + # ------ ----- + # \\ \ + # \" " + # \' ' + # \. . + # \- - + # \` ` + # + $_ = str_replace( + array('\\\\', '\"', "\'", '\.', '\-', '\`'), + array('\', '"', ''', '.', '-', '`'), $_); + + return $_; + } + + + protected function tokenizeHTML($str) { + # + # Parameter: String containing HTML markup. + # Returns: An array of the tokens comprising the input + # string. Each token is either a tag (possibly with nested, + # tags contained therein, such as , or a + # run of text between tags. Each element of the array is a + # two-element array; the first is either 'tag' or 'text'; + # the second is the actual value. + # + # + # Regular expression derived from the _tokenize() subroutine in + # Brad Choate's MTRegex plugin. + # + # + $index = 0; + $tokens = array(); + + $match = '(?s:)|'. # comment + '(?s:<\?.*?\?>)|'. # processing instruction + # regular tags + '(?:<[/!$]?[-a-zA-Z0-9:]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)'; + + $parts = preg_split("{($match)}", $str, -1, PREG_SPLIT_DELIM_CAPTURE); + + foreach ($parts as $part) { + if (++$index % 2 && $part != '') + $tokens[] = array('text', $part); + else + $tokens[] = array('tag', $part); + } + return $tokens; + } + +} diff --git a/kirby/vendor/michelf/php-smartypants/Michelf/SmartyPantsTypographer.inc.php b/kirby/vendor/michelf/php-smartypants/Michelf/SmartyPantsTypographer.inc.php new file mode 100644 index 0000000..9b3d274 --- /dev/null +++ b/kirby/vendor/michelf/php-smartypants/Michelf/SmartyPantsTypographer.inc.php @@ -0,0 +1,10 @@ + +# +# Original SmartyPants +# Copyright (c) 2003-2004 John Gruber +# +# +namespace Michelf; + + +# +# SmartyPants Typographer Parser Class +# +class SmartyPantsTypographer extends \Michelf\SmartyPants { + + ### Configuration Variables ### + + # Options to specify which transformations to make: + public $do_comma_quotes = 0; + public $do_guillemets = 0; + public $do_geresh_gershayim = 0; + public $do_space_emdash = 0; + public $do_space_endash = 0; + public $do_space_colon = 0; + public $do_space_semicolon = 0; + public $do_space_marks = 0; + public $do_space_frenchquote = 0; + public $do_space_thousand = 0; + public $do_space_unit = 0; + + # Quote characters for replacing ASCII approximations + public $doublequote_low = "„"; // replacement for ,, + public $guillemet_leftpointing = "«"; // replacement for << + public $guillemet_rightpointing = "»"; // replacement for >> + public $geresh = "׳"; + public $gershayim = "״"; + + # Space characters for different places: + # Space around em-dashes. "He_—_or she_—_should change that." + public $space_emdash = " "; + # Space around en-dashes. "He_–_or she_–_should change that." + public $space_endash = " "; + # Space before a colon. "He said_: here it is." + public $space_colon = " "; + # Space before a semicolon. "That's what I said_; that's what he said." + public $space_semicolon = " "; + # Space before a question mark and an exclamation mark: "¡_Holà_! What_?" + public $space_marks = " "; + # Space inside french quotes. "Voici la «_chose_» qui m'a attaqué." + public $space_frenchquote = " "; + # Space as thousand separator. "On compte 10_000 maisons sur cette liste." + public $space_thousand = " "; + # Space before a unit abreviation. "This 12_kg of matter costs 10_$." + public $space_unit = " "; + + + # Expression of a space (breakable or not): + public $space = '(?: | | |�*160;|�*[aA]0;)'; + + + ### Parser Implementation ### + + public function __construct($attr = SmartyPants::ATTR_DEFAULT) { + # + # Initialize a SmartyPantsTypographer_Parser with certain attributes. + # + # Parser attributes: + # 0 : do nothing + # 1 : set all, except dash spacing + # 2 : set all, except dash spacing, using old school en- and em- dash shortcuts + # 3 : set all, except dash spacing, using inverted old school en and em- dash shortcuts + # + # Punctuation: + # q -> quotes + # b -> backtick quotes (``double'' only) + # B -> backtick quotes (``double'' and `single') + # c -> comma quotes (,,double`` only) + # g -> guillemets (<> only) + # d -> dashes + # D -> old school dashes + # i -> inverted old school dashes + # e -> ellipses + # w -> convert " entities to " for Dreamweaver users + # + # Spacing: + # : -> colon spacing +- + # ; -> semicolon spacing +- + # m -> question and exclamation marks spacing +- + # h -> em-dash spacing +- + # H -> en-dash spacing +- + # f -> french quote spacing +- + # t -> thousand separator spacing - + # u -> unit spacing +- + # (you can add a plus sign after some of these options denoted by + to + # add the space when it is not already present, or you can add a minus + # sign to completly remove any space present) + # + # Initialize inherited SmartyPants parser. + parent::__construct($attr); + + if ($attr == "1" || $attr == "2" || $attr == "3") { + # Do everything, turn all options on. + $this->do_comma_quotes = 1; + $this->do_guillemets = 1; + $this->do_geresh_gershayim = 1; + $this->do_space_emdash = 1; + $this->do_space_endash = 1; + $this->do_space_colon = 1; + $this->do_space_semicolon = 1; + $this->do_space_marks = 1; + $this->do_space_frenchquote = 1; + $this->do_space_thousand = 1; + $this->do_space_unit = 1; + } + else if ($attr == "-1") { + # Special "stupefy" mode. + $this->do_stupefy = 1; + } + else { + $chars = preg_split('//', $attr); + foreach ($chars as $c){ + if ($c == "c") { $current =& $this->do_comma_quotes; } + else if ($c == "g") { $current =& $this->do_guillemets; } + else if ($c == "G") { $current =& $this->do_geresh_gershayim; } + else if ($c == ":") { $current =& $this->do_space_colon; } + else if ($c == ";") { $current =& $this->do_space_semicolon; } + else if ($c == "m") { $current =& $this->do_space_marks; } + else if ($c == "h") { $current =& $this->do_space_emdash; } + else if ($c == "H") { $current =& $this->do_space_endash; } + else if ($c == "f") { $current =& $this->do_space_frenchquote; } + else if ($c == "t") { $current =& $this->do_space_thousand; } + else if ($c == "u") { $current =& $this->do_space_unit; } + else if ($c == "+") { + $current = 2; + unset($current); + } + else if ($c == "-") { + $current = -1; + unset($current); + } + else { + # Unknown attribute option, ignore. + } + $current = 1; + } + } + } + + + function decodeEntitiesInConfiguration() { + parent::decodeEntitiesInConfiguration(); + $output_config_vars = array( + 'doublequote_low', + 'guillemet_leftpointing', + 'guillemet_rightpointing', + 'space_emdash', + 'space_endash', + 'space_colon', + 'space_semicolon', + 'space_marks', + 'space_frenchquote', + 'space_thousand', + 'space_unit', + ); + foreach ($output_config_vars as $var) { + $this->$var = html_entity_decode($this->$var); + } + } + + + function educate($t, $prev_token_last_char) { + # must happen before regular smart quotes + if ($this->do_geresh_gershayim) $t = $this->educateGereshGershayim($t); + + $t = parent::educate($t, $prev_token_last_char); + + if ($this->do_comma_quotes) $t = $this->educateCommaQuotes($t); + if ($this->do_guillemets) $t = $this->educateGuillemets($t); + + if ($this->do_space_emdash) $t = $this->spaceEmDash($t); + if ($this->do_space_endash) $t = $this->spaceEnDash($t); + if ($this->do_space_colon) $t = $this->spaceColon($t); + if ($this->do_space_semicolon) $t = $this->spaceSemicolon($t); + if ($this->do_space_marks) $t = $this->spaceMarks($t); + if ($this->do_space_frenchquote) $t = $this->spaceFrenchQuotes($t); + if ($this->do_space_thousand) $t = $this->spaceThousandSeparator($t); + if ($this->do_space_unit) $t = $this->spaceUnit($t); + + return $t; + } + + + protected function educateCommaQuotes($_) { + # + # Parameter: String. + # Returns: The string, with ,,comma,, -style double quotes + # translated into HTML curly quote entities. + # + # Example input: ,,Isn't this fun?,, + # Example output: „Isn't this fun?„ + # + # Note: this is meant to be used alongside with backtick quotes; there is + # no language that use only lower quotations alone mark like in the example. + # + $_ = str_replace(",,", $this->doublequote_low, $_); + return $_; + } + + + protected function educateGuillemets($_) { + # + # Parameter: String. + # Returns: The string, with << guillemets >> -style quotes + # translated into HTML guillemets entities. + # + # Example input: << Isn't this fun? >> + # Example output: „ Isn't this fun? „ + # + $_ = preg_replace("/(?:<|<){2}/", $this->guillemet_leftpointing, $_); + $_ = preg_replace("/(?:>|>){2}/", $this->guillemet_rightpointing, $_); + return $_; + } + + + protected function educateGereshGershayim($_) { + # + # Parameter: String, UTF-8 encoded. + # Returns: The string, where simple a or double quote surrounded by + # two hebrew characters is replaced into a typographic + # geresh or gershayim punctuation mark. + # + # Example input: צה"ל / צ'ארלס + # Example output: צה״ל / צ׳ארלס + # + // surrounding code points can be U+0590 to U+05BF and U+05D0 to U+05F2 + // encoded in UTF-8: D6.90 to D6.BF and D7.90 to D7.B2 + $_ = preg_replace('/(?<=\xD6[\x90-\xBF]|\xD7[\x90-\xB2])\'(?=\xD6[\x90-\xBF]|\xD7[\x90-\xB2])/', $this->geresh, $_); + $_ = preg_replace('/(?<=\xD6[\x90-\xBF]|\xD7[\x90-\xB2])"(?=\xD6[\x90-\xBF]|\xD7[\x90-\xB2])/', $this->gershayim, $_); + return $_; + } + + + protected function spaceFrenchQuotes($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # inside french-style quotes, only french quotes. + # + # Example input: Quotes in « French », »German« and »Finnish» style. + # Example output: Quotes in «_French_», »German« and »Finnish» style. + # + $opt = ( $this->do_space_frenchquote == 2 ? '?' : '' ); + $chr = ( $this->do_space_frenchquote != -1 ? $this->space_frenchquote : '' ); + + # Characters allowed immediatly outside quotes. + $outside_char = $this->space . '|\s|[.,:;!?\[\](){}|@*~=+-]|¡|¿'; + + $_ = preg_replace( + "/(^|$outside_char)(«|«|›|‹)$this->space$opt/", + "\\1\\2$chr", $_); + $_ = preg_replace( + "/$this->space$opt(»|»|‹|›)($outside_char|$)/", + "$chr\\1\\2", $_); + return $_; + } + + + protected function spaceColon($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # before colons. + # + # Example input: Ingredients : fun. + # Example output: Ingredients_: fun. + # + $opt = ( $this->do_space_colon == 2 ? '?' : '' ); + $chr = ( $this->do_space_colon != -1 ? $this->space_colon : '' ); + + $_ = preg_replace("/$this->space$opt(:)(\\s|$)/m", + "$chr\\1\\2", $_); + return $_; + } + + + protected function spaceSemicolon($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # before semicolons. + # + # Example input: There he goes ; there she goes. + # Example output: There he goes_; there she goes. + # + $opt = ( $this->do_space_semicolon == 2 ? '?' : '' ); + $chr = ( $this->do_space_semicolon != -1 ? $this->space_semicolon : '' ); + + $_ = preg_replace("/$this->space(;)(?=\\s|$)/m", + " \\1", $_); + $_ = preg_replace("/((?:^|\\s)(?>[^&;\\s]+|&#?[a-zA-Z0-9]+;)*)". + " $opt(;)(?=\\s|$)/m", + "\\1$chr\\2", $_); + return $_; + } + + + protected function spaceMarks($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # around question and exclamation marks. + # + # Example input: ¡ Holà ! What ? + # Example output: ¡_Holà_! What_? + # + $opt = ( $this->do_space_marks == 2 ? '?' : '' ); + $chr = ( $this->do_space_marks != -1 ? $this->space_marks : '' ); + + // Regular marks. + $_ = preg_replace("/$this->space$opt([?!]+)/", "$chr\\1", $_); + + // Inverted marks. + $imarks = "(?:¡|¡|¡|&#x[Aa]1;|¿|¿|¿|&#x[Bb][Ff];)"; + $_ = preg_replace("/($imarks+)$this->space$opt/", "\\1$chr", $_); + + return $_; + } + + + protected function spaceEmDash($_) { + # + # Parameters: String, two replacement characters separated by a hyphen (`-`), + # and forcing flag. + # + # Returns: The string, with appropriates spaces replaced + # around dashes. + # + # Example input: Then — without any plan — the fun happend. + # Example output: Then_—_without any plan_—_the fun happend. + # + $opt = ( $this->do_space_emdash == 2 ? '?' : '' ); + $chr = ( $this->do_space_emdash != -1 ? $this->space_emdash : '' ); + $_ = preg_replace("/$this->space$opt(—|—)$this->space$opt/", + "$chr\\1$chr", $_); + return $_; + } + + + protected function spaceEnDash($_) { + # + # Parameters: String, two replacement characters separated by a hyphen (`-`), + # and forcing flag. + # + # Returns: The string, with appropriates spaces replaced + # around dashes. + # + # Example input: Then — without any plan — the fun happend. + # Example output: Then_—_without any plan_—_the fun happend. + # + $opt = ( $this->do_space_endash == 2 ? '?' : '' ); + $chr = ( $this->do_space_endash != -1 ? $this->space_endash : '' ); + $_ = preg_replace("/$this->space$opt(–|–)$this->space$opt/", + "$chr\\1$chr", $_); + return $_; + } + + + protected function spaceThousandSeparator($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # inside numbers (thousand separator in french). + # + # Example input: Il y a 10 000 insectes amusants dans ton jardin. + # Example output: Il y a 10_000 insectes amusants dans ton jardin. + # + $chr = ( $this->do_space_thousand != -1 ? $this->space_thousand : '' ); + $_ = preg_replace('/([0-9]) ([0-9])/', "\\1$chr\\2", $_); + return $_; + } + + + protected $units = ' + ### Metric units (with prefixes) + (?: + p | + µ | µ | &\#0*181; | &\#[xX]0*[Bb]5; | + [mcdhkMGT] + )? + (?: + [mgstAKNJWCVFSTHBL]|mol|cd|rad|Hz|Pa|Wb|lm|lx|Bq|Gy|Sv|kat| + Ω | Ohm | Ω | &\#0*937; | &\#[xX]0*3[Aa]9; + )| + ### Computers units (KB, Kb, TB, Kbps) + [kKMGT]?(?:[oBb]|[oBb]ps|flops)| + ### Money + ¢ | ¢ | &\#0*162; | &\#[xX]0*[Aa]2; | + M?(?: + £ | £ | &\#0*163; | &\#[xX]0*[Aa]3; | + ¥ | ¥ | &\#0*165; | &\#[xX]0*[Aa]5; | + € | € | &\#0*8364; | &\#[xX]0*20[Aa][Cc]; | + $ + )| + ### Other units + (?: ° | ° | &\#0*176; | &\#[xX]0*[Bb]0; ) [CF]? | + %|pt|pi|M?px|em|en|gal|lb|[NSEOW]|[NS][EOW]|ha|mbar + '; //x + + protected function spaceUnit($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # before unit symbols. + # + # Example input: Get 3 mol of fun for 3 $. + # Example output: Get 3_mol of fun for 3_$. + # + $opt = ( $this->do_space_unit == 2 ? '?' : '' ); + $chr = ( $this->do_space_unit != -1 ? $this->space_unit : '' ); + + $_ = preg_replace('/ + (?:([0-9])[ ]'.$opt.') # Number followed by space. + ('.$this->units.') # Unit. + (?![a-zA-Z0-9]) # Negative lookahead for other unit characters. + /x', + "\\1$chr\\2", $_); + + return $_; + } + + + protected function spaceAbbr($_) { + # + # Parameters: String, replacement character, and forcing flag. + # Returns: The string, with appropriates spaces replaced + # around abbreviations. + # + # Example input: Fun i.e. something pleasant. + # Example output: Fun i.e._something pleasant. + # + $opt = ( $this->do_space_abbr == 2 ? '?' : '' ); + + $_ = preg_replace("/(^|\s)($this->abbr_after) $opt/m", + "\\1\\2$this->space_abbr", $_); + $_ = preg_replace("/( )$opt($this->abbr_sp_before)(?![a-zA-Z'])/m", + "\\1$this->space_abbr\\2", $_); + return $_; + } + + + protected function stupefyEntities($_) { + # + # Adding angle quotes and lower quotes to SmartyPants's stupefy mode. + # + $_ = parent::stupefyEntities($_); + + $_ = str_replace(array('„', '«', '»'), '"', $_); + + return $_; + } + + + protected function processEscapes($_) { + # + # Adding a few more escapes to SmartyPants's escapes: + # + # Escape Value + # ------ ----- + # \, , + # \< < + # \> > + # + $_ = parent::processEscapes($_); + + $_ = str_replace( + array('\,', '\<', '\>', '\<', '\>'), + array(',', '<', '>', '<', '>'), $_); + + return $_; + } +} diff --git a/kirby/vendor/michelf/php-smartypants/composer.json b/kirby/vendor/michelf/php-smartypants/composer.json new file mode 100644 index 0000000..2c2e6c1 --- /dev/null +++ b/kirby/vendor/michelf/php-smartypants/composer.json @@ -0,0 +1,26 @@ +{ + "name": "michelf/php-smartypants", + "type": "library", + "description": "PHP SmartyPants", + "homepage": "https://michelf.ca/projects/php-smartypants/", + "keywords": ["quotes", "dashes", "spaces", "typography", "typographer"], + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Michel Fortin", + "email": "michel.fortin@michelf.ca", + "homepage": "https://michelf.ca/", + "role": "Developer" + }, + { + "name": "John Gruber", + "homepage": "https://daringfireball.net/" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-0": { "Michelf": "" } + } +} diff --git a/kirby/vendor/phpmailer/phpmailer/LICENSE b/kirby/vendor/phpmailer/phpmailer/LICENSE new file mode 100644 index 0000000..f166cc5 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/LICENSE @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! \ No newline at end of file diff --git a/kirby/vendor/phpmailer/phpmailer/composer.json b/kirby/vendor/phpmailer/phpmailer/composer.json new file mode 100644 index 0000000..fa170a0 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/composer.json @@ -0,0 +1,79 @@ +{ + "name": "phpmailer/phpmailer", + "type": "library", + "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "authors": [ + { + "name": "Marcus Bointon", + "email": "phpmailer@synchromedia.co.uk" + }, + { + "name": "Jim Jagielski", + "email": "jimjag@gmail.com" + }, + { + "name": "Andy Prevost", + "email": "codeworxtech@users.sourceforge.net" + }, + { + "name": "Brent R. Matzelle" + } + ], + "funding": [ + { + "url": "https://github.com/Synchro", + "type": "github" + } + ], + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + }, + "require": { + "php": ">=5.5.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "doctrine/annotations": "^1.2.6 || ^1.13.3", + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.7.2", + "yoast/phpunit-polyfills": "^1.0.4" + }, + "suggest": { + "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", + "ext-openssl": "Needed for secure SMTP sending and DKIM signing", + "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", + "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", + "league/oauth2-google": "Needed for Google XOAUTH2 authentication", + "psr/log": "For optional PSR-3 debug logging", + "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication", + "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + }, + "autoload": { + "psr-4": { + "PHPMailer\\PHPMailer\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "PHPMailer\\Test\\": "test/" + } + }, + "license": "LGPL-2.1-only", + "scripts": { + "check": "./vendor/bin/phpcs", + "test": "./vendor/bin/phpunit --no-coverage", + "coverage": "./vendor/bin/phpunit", + "lint": [ + "@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . --show-deprecated -e php,phps --exclude vendor --exclude .git --exclude build" + ] + } +} diff --git a/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php b/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php new file mode 100644 index 0000000..cda0445 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/get_oauth_token.php @@ -0,0 +1,182 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * Get an OAuth2 token from an OAuth2 provider. + * * Install this script on your server so that it's accessible + * as [https/http]:////get_oauth_token.php + * e.g.: http://localhost/phpmailer/get_oauth_token.php + * * Ensure dependencies are installed with 'composer install' + * * Set up an app in your Google/Yahoo/Microsoft account + * * Set the script address as the app's redirect URL + * If no refresh token is obtained when running this file, + * revoke access to your app and run the script again. + */ + +namespace PHPMailer\PHPMailer; + +/** + * Aliases for League Provider Classes + * Make sure you have added these to your composer.json and run `composer install` + * Plenty to choose from here: + * @see http://oauth2-client.thephpleague.com/providers/thirdparty/ + */ +//@see https://github.com/thephpleague/oauth2-google +use League\OAuth2\Client\Provider\Google; +//@see https://packagist.org/packages/hayageek/oauth2-yahoo +use Hayageek\OAuth2\Client\Provider\Yahoo; +//@see https://github.com/stevenmaguire/oauth2-microsoft +use Stevenmaguire\OAuth2\Client\Provider\Microsoft; +//@see https://github.com/greew/oauth2-azure-provider +use Greew\OAuth2\Client\Provider\Azure; + +if (!isset($_GET['code']) && !isset($_POST['provider'])) { + ?> + + +
    +

    Select Provider

    + +
    + +
    + +
    + +
    +

    Enter id and secret

    +

    These details are obtained by setting up an app in your provider's developer console. +

    +

    ClientId:

    +

    ClientSecret:

    +

    TenantID (only relevant for Azure):

    + +
    + + + $clientId, + 'clientSecret' => $clientSecret, + 'redirectUri' => $redirectUri, + 'accessType' => 'offline' +]; + +$options = []; +$provider = null; + +switch ($providerName) { + case 'Google': + $provider = new Google($params); + $options = [ + 'scope' => [ + 'https://mail.google.com/' + ] + ]; + break; + case 'Yahoo': + $provider = new Yahoo($params); + break; + case 'Microsoft': + $provider = new Microsoft($params); + $options = [ + 'scope' => [ + 'wl.imap', + 'wl.offline_access' + ] + ]; + break; + case 'Azure': + $params['tenantId'] = $tenantId; + + $provider = new Azure($params); + $options = [ + 'scope' => [ + 'https://outlook.office.com/SMTP.Send', + 'offline_access' + ] + ]; + break; +} + +if (null === $provider) { + exit('Provider missing'); +} + +if (!isset($_GET['code'])) { + //If we don't have an authorization code then get one + $authUrl = $provider->getAuthorizationUrl($options); + $_SESSION['oauth2state'] = $provider->getState(); + header('Location: ' . $authUrl); + exit; + //Check given state against previously stored one to mitigate CSRF attack +} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { + unset($_SESSION['oauth2state']); + unset($_SESSION['provider']); + exit('Invalid state'); +} else { + unset($_SESSION['provider']); + //Try to get an access token (using the authorization code grant) + $token = $provider->getAccessToken( + 'authorization_code', + [ + 'code' => $_GET['code'] + ] + ); + //Use this to interact with an API on the users behalf + //Use this to get a new access token if the old one expires + echo 'Refresh Token: ', $token->getRefreshToken(); +} diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php new file mode 100644 index 0000000..0b2a72d --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php @@ -0,0 +1,26 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'خطأ SMTP : لا يمكن تأكيد الهوية.'; +$PHPMAILER_LANG['connect_host'] = 'خطأ SMTP: لا يمكن الاتصال بالخادم SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'خطأ SMTP: لم يتم قبول المعلومات .'; +$PHPMAILER_LANG['empty_message'] = 'نص الرسالة فارغ'; +$PHPMAILER_LANG['encoding'] = 'ترميز غير معروف: '; +$PHPMAILER_LANG['execute'] = 'لا يمكن تنفيذ : '; +$PHPMAILER_LANG['file_access'] = 'لا يمكن الوصول للملف: '; +$PHPMAILER_LANG['file_open'] = 'خطأ في الملف: لا يمكن فتحه: '; +$PHPMAILER_LANG['from_failed'] = 'خطأ على مستوى عنوان المرسل : '; +$PHPMAILER_LANG['instantiate'] = 'لا يمكن توفير خدمة البريد.'; +$PHPMAILER_LANG['invalid_address'] = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' برنامج الإرسال غير مدعوم.'; +$PHPMAILER_LANG['provide_address'] = 'يجب توفير عنوان البريد الإلكتروني لمستلم واحد على الأقل.'; +$PHPMAILER_LANG['recipients_failed'] = 'خطأ SMTP: الأخطاء التالية فشل في الارسال لكل من : '; +$PHPMAILER_LANG['signing'] = 'خطأ في التوقيع: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() غير ممكن.'; +$PHPMAILER_LANG['smtp_error'] = 'خطأ على مستوى الخادم SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'لا يمكن تعيين أو إعادة تعيين متغير: '; +$PHPMAILER_LANG['extension_missing'] = 'الإضافة غير موجودة: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php new file mode 100644 index 0000000..327dfba --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php @@ -0,0 +1,35 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP ত্ৰুটি: প্ৰমাণীকৰণ কৰিব নোৱাৰি'; +$PHPMAILER_LANG['buggy_php'] = 'আপোনাৰ PHP সংস্কৰণ এটা বাগৰ দ্বাৰা প্ৰভাৱিত হয় যাৰ ফলত নষ্ট বাৰ্তা হব পাৰে । ইয়াক সমাধান কৰিবলে, প্ৰেৰণ কৰিবলে SMTP ব্যৱহাৰ কৰক, আপোনাৰ php.ini ত mail.add_x_header বিকল্প নিষ্ক্ৰিয় কৰক, MacOS বা Linux লৈ সলনি কৰক, বা আপোনাৰ PHP সংস্কৰণ 7.0.17+ বা 7.1.3+ লৈ সলনি কৰক ।'; +$PHPMAILER_LANG['connect_host'] = 'SMTP ত্ৰুটি: SMTP চাৰ্ভাৰৰ সৈতে সংযোগ কৰিবলে অক্ষম'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP ত্ৰুটি: তথ্য গ্ৰহণ কৰা হোৱা নাই'; +$PHPMAILER_LANG['empty_message'] = 'বাৰ্তাৰ মূখ্য অংশ খালী।'; +$PHPMAILER_LANG['encoding'] = 'অজ্ঞাত এনকোডিং: '; +$PHPMAILER_LANG['execute'] = 'এক্সিকিউট কৰিব নোৱাৰি: '; +$PHPMAILER_LANG['extension_missing'] = 'সম্প্ৰসাৰণ নোহোৱা হৈছে: '; +$PHPMAILER_LANG['file_access'] = 'ফাইল অভিগম কৰিবলে অক্ষম: '; +$PHPMAILER_LANG['file_open'] = 'ফাইল ত্ৰুটি: ফাইল খোলিবলৈ অক্ষম: '; +$PHPMAILER_LANG['from_failed'] = 'নিম্নলিখিত প্ৰেৰকৰ ঠিকনা(সমূহ) ব্যৰ্থ: '; +$PHPMAILER_LANG['instantiate'] = 'মেইল ফাংচনৰ এটা উদাহৰণ সৃষ্টি কৰিবলে অক্ষম'; +$PHPMAILER_LANG['invalid_address'] = 'প্ৰেৰণ কৰিব নোৱাৰি: অবৈধ ইমেইল ঠিকনা: '; +$PHPMAILER_LANG['invalid_header'] = 'অবৈধ হেডাৰৰ নাম বা মান'; +$PHPMAILER_LANG['invalid_hostentry'] = 'অবৈধ হোষ্টেন্ট্ৰি: '; +$PHPMAILER_LANG['invalid_host'] = 'অবৈধ হস্ট:'; +$PHPMAILER_LANG['mailer_not_supported'] = 'মেইলাৰ সমৰ্থিত নহয়।'; +$PHPMAILER_LANG['provide_address'] = 'আপুনি অন্ততঃ এটা গন্তব্য ইমেইল ঠিকনা দিব লাগিব'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP ত্ৰুটি: নিম্নলিখিত গন্তব্যস্থানসমূহ ব্যৰ্থ: '; +$PHPMAILER_LANG['signing'] = 'স্বাক্ষৰ কৰাত ব্যৰ্থ: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP কড: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'অতিৰিক্ত SMTP তথ্য: '; +$PHPMAILER_LANG['smtp_detail'] = 'বিৱৰণ:'; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP সংযোগ() ব্যৰ্থ'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP চাৰ্ভাৰৰ ত্ৰুটি: '; +$PHPMAILER_LANG['variable_set'] = 'চলক নিৰ্ধাৰণ কৰিব পৰা নগল: '; +$PHPMAILER_LANG['extension_missing'] = 'অনুপস্থিত সম্প্ৰসাৰণ: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php new file mode 100644 index 0000000..552167e --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela prijava.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Nije moguće spojiti se sa SMTP serverom.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; +$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; +$PHPMAILER_LANG['encoding'] = 'Nepoznata kriptografija: '; +$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; +$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; +$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; +$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje sa navedenih e-mail adresa nije uspjelo: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedene e-mail adrese nije uspjelo: '; +$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; +$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; +$PHPMAILER_LANG['provide_address'] = 'Definišite barem jednu adresu primaoca.'; +$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP server nije uspjelo.'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP greška: '; +$PHPMAILER_LANG['variable_set'] = 'Nije moguće postaviti varijablu ili je vratiti nazad: '; +$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php new file mode 100644 index 0000000..9e92dda --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Памылка SMTP: памылка ідэнтыфікацыі.'; +$PHPMAILER_LANG['connect_host'] = 'Памылка SMTP: нельга ўстанавіць сувязь з SMTP-серверам.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Памылка SMTP: звесткі непрынятыя.'; +$PHPMAILER_LANG['empty_message'] = 'Пустое паведамленне.'; +$PHPMAILER_LANG['encoding'] = 'Невядомая кадыроўка тэксту: '; +$PHPMAILER_LANG['execute'] = 'Нельга выканаць каманду: '; +$PHPMAILER_LANG['file_access'] = 'Няма доступу да файла: '; +$PHPMAILER_LANG['file_open'] = 'Нельга адкрыць файл: '; +$PHPMAILER_LANG['from_failed'] = 'Няправільны адрас адпраўніка: '; +$PHPMAILER_LANG['instantiate'] = 'Нельга прымяніць функцыю mail().'; +$PHPMAILER_LANG['invalid_address'] = 'Нельга даслаць паведамленне, няправільны email атрымальніка: '; +$PHPMAILER_LANG['provide_address'] = 'Запоўніце, калі ласка, правільны email атрымальніка.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' - паштовы сервер не падтрымліваецца.'; +$PHPMAILER_LANG['recipients_failed'] = 'Памылка SMTP: няправільныя атрымальнікі: '; +$PHPMAILER_LANG['signing'] = 'Памылка подпісу паведамлення: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Памылка сувязі з SMTP-серверам.'; +$PHPMAILER_LANG['smtp_error'] = 'Памылка SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Нельга ўстанавіць або перамяніць значэнне пераменнай: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php new file mode 100644 index 0000000..c41f675 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: Не може да се удостовери пред сървъра.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: Не може да се свърже с SMTP хоста.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: данните не са приети.'; +$PHPMAILER_LANG['empty_message'] = 'Съдържанието на съобщението е празно'; +$PHPMAILER_LANG['encoding'] = 'Неизвестно кодиране: '; +$PHPMAILER_LANG['execute'] = 'Не може да се изпълни: '; +$PHPMAILER_LANG['file_access'] = 'Няма достъп до файл: '; +$PHPMAILER_LANG['file_open'] = 'Файлова грешка: Не може да се отвори файл: '; +$PHPMAILER_LANG['from_failed'] = 'Следните адреси за подател са невалидни: '; +$PHPMAILER_LANG['instantiate'] = 'Не може да се инстанцира функцията mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.'; +$PHPMAILER_LANG['provide_address'] = 'Трябва да предоставите поне един email адрес за получател.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: Следните адреси за Получател са невалидни: '; +$PHPMAILER_LANG['signing'] = 'Грешка при подписване: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP провален connect().'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP сървърна грешка: '; +$PHPMAILER_LANG['variable_set'] = 'Не може да се установи или възстанови променлива: '; +$PHPMAILER_LANG['extension_missing'] = 'Липсва разширение: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php new file mode 100644 index 0000000..4736510 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php @@ -0,0 +1,35 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP ত্রুটি: প্রমাণীকরণ করতে অক্ষম৷'; +$PHPMAILER_LANG['buggy_php'] = 'আপনার PHP সংস্করণ একটি বাগ দ্বারা প্রভাবিত হয় যার ফলে দূষিত বার্তা হতে পারে। এটি ঠিক করতে, পাঠাতে SMTP ব্যবহার করুন, আপনার php.ini এ mail.add_x_header বিকল্পটি নিষ্ক্রিয় করুন, MacOS বা Linux-এ স্যুইচ করুন, অথবা আপনার PHP সংস্করণকে 7.0.17+ বা 7.1.3+ এ পরিবর্তন করুন।'; +$PHPMAILER_LANG['connect_host'] = 'SMTP ত্রুটি: SMTP সার্ভারের সাথে সংযোগ করতে অক্ষম৷'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP ত্রুটি: ডেটা গ্রহণ করা হয়নি৷'; +$PHPMAILER_LANG['empty_message'] = 'বার্তার অংশটি খালি।'; +$PHPMAILER_LANG['encoding'] = 'অজানা এনকোডিং: '; +$PHPMAILER_LANG['execute'] = 'নির্বাহ করতে অক্ষম: '; +$PHPMAILER_LANG['extension_missing'] = 'এক্সটেনশন অনুপস্থিত:'; +$PHPMAILER_LANG['file_access'] = 'ফাইল অ্যাক্সেস করতে অক্ষম: '; +$PHPMAILER_LANG['file_open'] = 'ফাইল ত্রুটি: ফাইল খুলতে অক্ষম: '; +$PHPMAILER_LANG['from_failed'] = 'নিম্নলিখিত প্রেরকের ঠিকানা(গুলি) ব্যর্থ হয়েছে: '; +$PHPMAILER_LANG['instantiate'] = 'মেল ফাংশনের একটি উদাহরণ তৈরি করতে অক্ষম৷'; +$PHPMAILER_LANG['invalid_address'] = 'পাঠাতে অক্ষম: অবৈধ ইমেল ঠিকানা: '; +$PHPMAILER_LANG['invalid_header'] = 'অবৈধ হেডার নাম বা মান'; +$PHPMAILER_LANG['invalid_hostentry'] = 'অবৈধ হোস্টেন্ট্রি: '; +$PHPMAILER_LANG['invalid_host'] = 'অবৈধ হোস্ট:'; +$PHPMAILER_LANG['mailer_not_supported'] = 'মেইলার সমর্থিত নয়।'; +$PHPMAILER_LANG['provide_address'] = 'আপনাকে অবশ্যই অন্তত একটি গন্তব্য ইমেল ঠিকানা প্রদান করতে হবে৷'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP ত্রুটি: নিম্নলিখিত গন্তব্যগুলি ব্যর্থ হয়েছে: '; +$PHPMAILER_LANG['signing'] = 'স্বাক্ষর করতে ব্যর্থ হয়েছে: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP কোড: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'অতিরিক্ত SMTP তথ্য:'; +$PHPMAILER_LANG['smtp_detail'] = 'বর্ণনা: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP সংযোগ() ব্যর্থ হয়েছে৷'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP সার্ভার ত্রুটি: '; +$PHPMAILER_LANG['variable_set'] = 'পরিবর্তনশীল সেট করা যায়নি: '; +$PHPMAILER_LANG['extension_missing'] = 'অনুপস্থিত এক্সটেনশন: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php new file mode 100644 index 0000000..3468485 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Error SMTP: No s’ha pogut autenticar.'; +$PHPMAILER_LANG['connect_host'] = 'Error SMTP: No es pot connectar al servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Dades no acceptades.'; +$PHPMAILER_LANG['empty_message'] = 'El cos del missatge està buit.'; +$PHPMAILER_LANG['encoding'] = 'Codificació desconeguda: '; +$PHPMAILER_LANG['execute'] = 'No es pot executar: '; +$PHPMAILER_LANG['file_access'] = 'No es pot accedir a l’arxiu: '; +$PHPMAILER_LANG['file_open'] = 'Error d’Arxiu: No es pot obrir l’arxiu: '; +$PHPMAILER_LANG['from_failed'] = 'La(s) següent(s) adreces de remitent han fallat: '; +$PHPMAILER_LANG['instantiate'] = 'No s’ha pogut crear una instància de la funció Mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Adreça d’email invalida: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat'; +$PHPMAILER_LANG['provide_address'] = 'S’ha de proveir almenys una adreça d’email com a destinatari.'; +$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Els següents destinataris han fallat: '; +$PHPMAILER_LANG['signing'] = 'Error al signar: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Ha fallat el SMTP Connect().'; +$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'No s’ha pogut establir o restablir la variable: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php new file mode 100644 index 0000000..e770a1a --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php @@ -0,0 +1,28 @@ + + * Rewrite and extension of the work by Mikael Stokkebro + * + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Login mislykkedes.'; +$PHPMAILER_LANG['buggy_php'] = 'Din version af PHP er berørt af en fejl, som gør at dine beskeder muligvis vises forkert. For at rette dette kan du skifte til SMTP, slå mail.add_x_header headeren i din php.ini fil fra, skifte til MacOS eller Linux eller opgradere din version af PHP til 7.0.17+ eller 7.1.3+.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Forbindelse til SMTP serveren kunne ikke oprettes.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data blev ikke accepteret.'; +$PHPMAILER_LANG['empty_message'] = 'Meddelelsen er uden indhold'; +$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: '; +$PHPMAILER_LANG['execute'] = 'Kunne ikke afvikle: '; +$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: '; +$PHPMAILER_LANG['file_access'] = 'Kunne ikke tilgå filen: '; +$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: '; +$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: '; +$PHPMAILER_LANG['instantiate'] = 'Email funktionen kunne ikke initialiseres.'; +$PHPMAILER_LANG['invalid_address'] = 'Udgyldig adresse: '; +$PHPMAILER_LANG['invalid_header'] = 'Ugyldig header navn eller værdi'; +$PHPMAILER_LANG['invalid_hostentry'] = 'Ugyldig hostentry: '; +$PHPMAILER_LANG['invalid_host'] = 'Ugyldig vært: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.'; +$PHPMAILER_LANG['provide_address'] = 'Indtast mindst en modtagers email adresse.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere fejlede: '; +$PHPMAILER_LANG['signing'] = 'Signeringsfejl: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP kode: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'Yderligere SMTP info: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fejlede.'; +$PHPMAILER_LANG['smtp_detail'] = 'Detalje: '; +$PHPMAILER_LANG['smtp_error'] = 'SMTP server fejl: '; +$PHPMAILER_LANG['variable_set'] = 'Kunne ikke definere eller nulstille variablen: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php new file mode 100644 index 0000000..e7e59d2 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php @@ -0,0 +1,28 @@ + + * @author Crystopher Glodzienski Cardoso + */ + +$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.'; +$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.'; +$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.'; +$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: '; +$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: '; +$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: '; +$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: '; +$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: '; +$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.'; +$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.'; +$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: '; +$PHPMAILER_LANG['signing'] = 'Error al firmar: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.'; +$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: '; +$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: '; +$PHPMAILER_LANG['smtp_code'] = 'Código del servidor SMTP: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'Información adicional del servidor SMTP: '; +$PHPMAILER_LANG['invalid_header'] = 'Nombre o valor de encabezado no válido'; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php new file mode 100644 index 0000000..93addc9 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php @@ -0,0 +1,28 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Viga: Autoriseerimise viga.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Viga: Vigased andmed.'; +$PHPMAILER_LANG['empty_message'] = 'Tühi kirja sisu'; +$PHPMAILER_LANG["encoding"] = 'Tundmatu kodeering: '; +$PHPMAILER_LANG['execute'] = 'Tegevus ebaõnnestus: '; +$PHPMAILER_LANG['file_access'] = 'Pole piisavalt õiguseid järgneva faili avamiseks: '; +$PHPMAILER_LANG['file_open'] = 'Faili Viga: Faili avamine ebaõnnestus: '; +$PHPMAILER_LANG['from_failed'] = 'Järgnev saatja e-posti aadress on vigane: '; +$PHPMAILER_LANG['instantiate'] = 'mail funktiooni käivitamine ebaõnnestus.'; +$PHPMAILER_LANG['invalid_address'] = 'Saatmine peatatud, e-posti address vigane: '; +$PHPMAILER_LANG['provide_address'] = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: '; +$PHPMAILER_LANG["signing"] = 'Viga allkirjastamisel: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() ebaõnnestus.'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri viga: '; +$PHPMAILER_LANG['variable_set'] = 'Ei õnnestunud määrata või lähtestada muutujat: '; +$PHPMAILER_LANG['extension_missing'] = 'Nõutud laiendus on puudu: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php new file mode 100644 index 0000000..295a47f --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php @@ -0,0 +1,28 @@ + + * @author Mohammad Hossein Mojtahedi + */ + +$PHPMAILER_LANG['authenticate'] = 'خطای SMTP: احراز هویت با شکست مواجه شد.'; +$PHPMAILER_LANG['connect_host'] = 'خطای SMTP: اتصال به سرور SMTP برقرار نشد.'; +$PHPMAILER_LANG['data_not_accepted'] = 'خطای SMTP: داده‌ها نا‌درست هستند.'; +$PHPMAILER_LANG['empty_message'] = 'بخش متن پیام خالی است.'; +$PHPMAILER_LANG['encoding'] = 'کد‌گذاری نا‌شناخته: '; +$PHPMAILER_LANG['execute'] = 'امکان اجرا وجود ندارد: '; +$PHPMAILER_LANG['file_access'] = 'امکان دسترسی به فایل وجود ندارد: '; +$PHPMAILER_LANG['file_open'] = 'خطای File: امکان بازکردن فایل وجود ندارد: '; +$PHPMAILER_LANG['from_failed'] = 'آدرس فرستنده اشتباه است: '; +$PHPMAILER_LANG['instantiate'] = 'امکان معرفی تابع ایمیل وجود ندارد.'; +$PHPMAILER_LANG['invalid_address'] = 'آدرس ایمیل معتبر نیست: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer پشتیبانی نمی‌شود.'; +$PHPMAILER_LANG['provide_address'] = 'باید حداقل یک آدرس گیرنده وارد کنید.'; +$PHPMAILER_LANG['recipients_failed'] = 'خطای SMTP: ارسال به آدرس گیرنده با خطا مواجه شد: '; +$PHPMAILER_LANG['signing'] = 'خطا در امضا: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'خطا در اتصال به SMTP.'; +$PHPMAILER_LANG['smtp_error'] = 'خطا در SMTP Server: '; +$PHPMAILER_LANG['variable_set'] = 'امکان ارسال یا ارسال مجدد متغیر‌ها وجود ندارد: '; +$PHPMAILER_LANG['extension_missing'] = 'افزونه موجود نیست: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php new file mode 100644 index 0000000..6d1e637 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP feilur: Kundi ikki góðkenna.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP feilur: Data ikki góðkent.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Ókend encoding: '; +$PHPMAILER_LANG['execute'] = 'Kundi ikki útføra: '; +$PHPMAILER_LANG['file_access'] = 'Kundi ikki tilganga fílu: '; +$PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: '; +$PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: '; +$PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.'; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.'; +$PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php new file mode 100644 index 0000000..0d367fc --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php @@ -0,0 +1,37 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Erro SMTP: Non puido ser autentificado.'; +$PHPMAILER_LANG['connect_host'] = 'Erro SMTP: Non puido conectar co servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Erro SMTP: Datos non aceptados.'; +$PHPMAILER_LANG['empty_message'] = 'Corpo da mensaxe vacía'; +$PHPMAILER_LANG['encoding'] = 'Codificación descoñecida: '; +$PHPMAILER_LANG['execute'] = 'Non puido ser executado: '; +$PHPMAILER_LANG['file_access'] = 'Nob puido acceder ó arquivo: '; +$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: No puido abrir o arquivo: '; +$PHPMAILER_LANG['from_failed'] = 'A(s) seguinte(s) dirección(s) de remitente(s) deron erro: '; +$PHPMAILER_LANG['instantiate'] = 'Non puido crear unha instancia da función Mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Non puido envia-lo correo: dirección de email inválida: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer non está soportado.'; +$PHPMAILER_LANG['provide_address'] = 'Debe engadir polo menos unha dirección de email coma destino.'; +$PHPMAILER_LANG['recipients_failed'] = 'Erro SMTP: Os seguintes destinos fallaron: '; +$PHPMAILER_LANG['signing'] = 'Erro ó firmar: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallou.'; +$PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Non puidemos axustar ou reaxustar a variábel: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php new file mode 100644 index 0000000..b123aa5 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'שגיאת SMTP: פעולת האימות נכשלה.'; +$PHPMAILER_LANG['connect_host'] = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'שגיאת SMTP: מידע לא התקבל.'; +$PHPMAILER_LANG['empty_message'] = 'גוף ההודעה ריק'; +$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה: '; +$PHPMAILER_LANG['encoding'] = 'קידוד לא מוכר: '; +$PHPMAILER_LANG['execute'] = 'לא הצלחתי להפעיל את: '; +$PHPMAILER_LANG['file_access'] = 'לא ניתן לגשת לקובץ: '; +$PHPMAILER_LANG['file_open'] = 'שגיאת קובץ: לא ניתן לגשת לקובץ: '; +$PHPMAILER_LANG['from_failed'] = 'כתובות הנמענים הבאות נכשלו: '; +$PHPMAILER_LANG['instantiate'] = 'לא הצלחתי להפעיל את פונקציית המייל.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' אינה נתמכת.'; +$PHPMAILER_LANG['provide_address'] = 'חובה לספק לפחות כתובת אחת של מקבל המייל.'; +$PHPMAILER_LANG['recipients_failed'] = 'שגיאת SMTP: הנמענים הבאים נכשלו: '; +$PHPMAILER_LANG['signing'] = 'שגיאת חתימה: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +$PHPMAILER_LANG['smtp_error'] = 'שגיאת שרת SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'לא ניתן לקבוע או לשנות את המשתנה: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php new file mode 100644 index 0000000..d2856e0 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php @@ -0,0 +1,35 @@ + + * Rewrite and extension of the work by Jayanti Suthar + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। '; +$PHPMAILER_LANG['buggy_php'] = 'PHP का आपका संस्करण एक बग से प्रभावित है जिसके परिणामस्वरूप संदेश दूषित हो सकते हैं. इसे ठीक करने हेतु, भेजने के लिए SMTP का उपयोग करे, अपने php.ini में mail.add_x_header विकल्प को अक्षम करें, MacOS या Linux पर जाए, या अपने PHP संस्करण को 7.0.17+ या 7.1.3+ बदले.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। '; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। '; +$PHPMAILER_LANG['empty_message'] = 'संदेश खाली है। '; +$PHPMAILER_LANG['encoding'] = 'अज्ञात एन्कोडिंग प्रकार। '; +$PHPMAILER_LANG['execute'] = 'आदेश को निष्पादित करने में विफल। '; +$PHPMAILER_LANG['extension_missing'] = 'एक्सटेन्षन गायब है: '; +$PHPMAILER_LANG['file_access'] = 'फ़ाइल उपलब्ध नहीं है। '; +$PHPMAILER_LANG['file_open'] = 'फ़ाइल त्रुटि: फाइल को खोला नहीं जा सका। '; +$PHPMAILER_LANG['from_failed'] = 'प्रेषक का पता गलत है। '; +$PHPMAILER_LANG['instantiate'] = 'मेल फ़ंक्शन कॉल नहीं कर सकता है।'; +$PHPMAILER_LANG['invalid_address'] = 'पता गलत है। '; +$PHPMAILER_LANG['invalid_header'] = 'अमान्य हेडर नाम या मान'; +$PHPMAILER_LANG['invalid_hostentry'] = 'अमान्य hostentry: '; +$PHPMAILER_LANG['invalid_host'] = 'अमान्य होस्ट: '; +$PHPMAILER_LANG['mailer_not_supported'] = 'मेल सर्वर के साथ काम नहीं करता है। '; +$PHPMAILER_LANG['provide_address'] = 'आपको कम से कम एक प्राप्तकर्ता का ई-मेल पता प्रदान करना होगा।'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP त्रुटि: निम्न प्राप्तकर्ताओं को पते भेजने में विफल। '; +$PHPMAILER_LANG['signing'] = 'साइनअप त्रुटि: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP कोड: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'अतिरिक्त SMTP जानकारी: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP का connect () फ़ंक्शन विफल हुआ। '; +$PHPMAILER_LANG['smtp_detail'] = 'विवरण: '; +$PHPMAILER_LANG['smtp_error'] = 'SMTP सर्वर त्रुटि। '; +$PHPMAILER_LANG['variable_set'] = 'चर को बना या संशोधित नहीं किया जा सकता। '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php new file mode 100644 index 0000000..cacb6c3 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela autentikacija.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Ne mogu se spojiti na SMTP poslužitelj.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; +$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; +$PHPMAILER_LANG['encoding'] = 'Nepoznati encoding: '; +$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; +$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; +$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; +$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: '; +$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; +$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; +$PHPMAILER_LANG['provide_address'] = 'Definirajte barem jednu adresu primatelja.'; +$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP poslužitelj nije uspjelo.'; +$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP poslužitelja: '; +$PHPMAILER_LANG['variable_set'] = 'Ne mogu postaviti varijablu niti ju vratiti nazad: '; +$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php new file mode 100644 index 0000000..e6b58b0 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.'; +$PHPMAILER_LANG['empty_message'] = 'Հաղորդագրությունը դատարկ է'; +$PHPMAILER_LANG['encoding'] = 'Կոդավորման անհայտ տեսակ: '; +$PHPMAILER_LANG['execute'] = 'Չհաջողվեց իրականացնել հրամանը: '; +$PHPMAILER_LANG['file_access'] = 'Ֆայլը հասանելի չէ: '; +$PHPMAILER_LANG['file_open'] = 'Ֆայլի սխալ: ֆայլը չհաջողվեց բացել: '; +$PHPMAILER_LANG['from_failed'] = 'Ուղարկողի հետևյալ հասցեն սխալ է: '; +$PHPMAILER_LANG['instantiate'] = 'Հնարավոր չէ կանչել mail ֆունկցիան.'; +$PHPMAILER_LANG['invalid_address'] = 'Հասցեն սխալ է: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' փոստային սերվերի հետ չի աշխատում.'; +$PHPMAILER_LANG['provide_address'] = 'Անհրաժեշտ է տրամադրել գոնե մեկ ստացողի e-mail հասցե.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP -ի սխալ: չի հաջողվել ուղարկել հետևյալ ստացողների հասցեներին: '; +$PHPMAILER_LANG['signing'] = 'Ստորագրման սխալ: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP -ի connect() ֆունկցիան չի հաջողվել'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP սերվերի սխալ: '; +$PHPMAILER_LANG['variable_set'] = 'Չի հաջողվում ստեղծել կամ վերափոխել փոփոխականը: '; +$PHPMAILER_LANG['extension_missing'] = 'Հավելվածը բացակայում է: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php new file mode 100644 index 0000000..212a11f --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php @@ -0,0 +1,31 @@ + + * @author @januridp + * @author Ian Mustafa + */ + +$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.'; +$PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung ke host SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima.'; +$PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong'; +$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: '; +$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: '; +$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: '; +$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: '; +$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: '; +$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.'; +$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: '; +$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: '; +$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung'; +$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: '; +$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.'; +$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: '; +$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php new file mode 100644 index 0000000..08a6b73 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php @@ -0,0 +1,28 @@ + + * @author Stefano Sabatini + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.'; +$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto'; +$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: '; +$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: '; +$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: '; +$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: '; +$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail'; +$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: '; +$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente'; +$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: '; +$PHPMAILER_LANG['signing'] = 'Errore nella firma: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.'; +$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: '; +$PHPMAILER_LANG['extension_missing'] = 'Estensione mancante: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php new file mode 100644 index 0000000..c76f526 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php @@ -0,0 +1,29 @@ + + * @author Yoshi Sakai + * @author Arisophy + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: 認証できませんでした。'; +$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPホストに接続できませんでした。'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データが受け付けられませんでした。'; +$PHPMAILER_LANG['empty_message'] = 'メール本文が空です。'; +$PHPMAILER_LANG['encoding'] = '不明なエンコーディング: '; +$PHPMAILER_LANG['execute'] = '実行できませんでした: '; +$PHPMAILER_LANG['file_access'] = 'ファイルにアクセスできません: '; +$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: '; +$PHPMAILER_LANG['from_failed'] = 'Fromアドレスを登録する際にエラーが発生しました: '; +$PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。'; +$PHPMAILER_LANG['invalid_address'] = '不正なメールアドレス: '; +$PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。'; +$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: '; +$PHPMAILER_LANG['signing'] = '署名エラー: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP接続に失敗しました。'; +$PHPMAILER_LANG['smtp_error'] = 'SMTPサーバーエラー: '; +$PHPMAILER_LANG['variable_set'] = '変数が存在しません: '; +$PHPMAILER_LANG['extension_missing'] = '拡張機能が見つかりません: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php new file mode 100644 index 0000000..51fe403 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP შეცდომა: ავტორიზაცია შეუძლებელია.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP შეცდომა: SMTP სერვერთან დაკავშირება შეუძლებელია.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP შეცდომა: მონაცემები არ იქნა მიღებული.'; +$PHPMAILER_LANG['encoding'] = 'კოდირების უცნობი ტიპი: '; +$PHPMAILER_LANG['execute'] = 'შეუძლებელია შემდეგი ბრძანების შესრულება: '; +$PHPMAILER_LANG['file_access'] = 'შეუძლებელია წვდომა ფაილთან: '; +$PHPMAILER_LANG['file_open'] = 'ფაილური სისტემის შეცდომა: არ იხსნება ფაილი: '; +$PHPMAILER_LANG['from_failed'] = 'გამგზავნის არასწორი მისამართი: '; +$PHPMAILER_LANG['instantiate'] = 'mail ფუნქციის გაშვება ვერ ხერხდება.'; +$PHPMAILER_LANG['provide_address'] = 'გთხოვთ მიუთითოთ ერთი ადრესატის e-mail მისამართი მაინც.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' - საფოსტო სერვერის მხარდაჭერა არ არის.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP შეცდომა: შემდეგ მისამართებზე გაგზავნა ვერ მოხერხდა: '; +$PHPMAILER_LANG['empty_message'] = 'შეტყობინება ცარიელია'; +$PHPMAILER_LANG['invalid_address'] = 'არ გაიგზავნა, e-mail მისამართის არასწორი ფორმატი: '; +$PHPMAILER_LANG['signing'] = 'ხელმოწერის შეცდომა: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: '; +$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: '; +$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php new file mode 100644 index 0000000..8c97dd9 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP 오류: 인증할 수 없습니다.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP 오류: SMTP 호스트에 접속할 수 없습니다.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 오류: 데이터가 받아들여지지 않았습니다.'; +$PHPMAILER_LANG['empty_message'] = '메세지 내용이 없습니다'; +$PHPMAILER_LANG['encoding'] = '알 수 없는 인코딩: '; +$PHPMAILER_LANG['execute'] = '실행 불가: '; +$PHPMAILER_LANG['file_access'] = '파일 접근 불가: '; +$PHPMAILER_LANG['file_open'] = '파일 오류: 파일을 열 수 없습니다: '; +$PHPMAILER_LANG['from_failed'] = '다음 From 주소에서 오류가 발생했습니다: '; +$PHPMAILER_LANG['instantiate'] = 'mail 함수를 인스턴스화할 수 없습니다'; +$PHPMAILER_LANG['invalid_address'] = '잘못된 주소: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.'; +$PHPMAILER_LANG['provide_address'] = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: '; +$PHPMAILER_LANG['signing'] = '서명 오류: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 연결을 실패하였습니다.'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP 서버 오류: '; +$PHPMAILER_LANG['variable_set'] = '변수 설정 및 초기화 불가: '; +$PHPMAILER_LANG['extension_missing'] = '확장자 없음: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php new file mode 100644 index 0000000..4f115b1 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP klaida: autentifikacija nepavyko.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP klaida: nepavyksta prisijungti prie SMTP stoties.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP klaida: duomenys nepriimti.'; +$PHPMAILER_LANG['empty_message'] = 'Laiško turinys tuščias'; +$PHPMAILER_LANG['encoding'] = 'Neatpažinta koduotė: '; +$PHPMAILER_LANG['execute'] = 'Nepavyko įvykdyti komandos: '; +$PHPMAILER_LANG['file_access'] = 'Byla nepasiekiama: '; +$PHPMAILER_LANG['file_open'] = 'Bylos klaida: Nepavyksta atidaryti: '; +$PHPMAILER_LANG['from_failed'] = 'Neteisingas siuntėjo adresas: '; +$PHPMAILER_LANG['instantiate'] = 'Nepavyko paleisti mail funkcijos.'; +$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.'; +$PHPMAILER_LANG['provide_address'] = 'Nurodykite bent vieną gavėjo adresą.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: '; +$PHPMAILER_LANG['signing'] = 'Prisijungimo klaida: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP susijungimo klaida'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP stoties klaida: '; +$PHPMAILER_LANG['variable_set'] = 'Nepavyko priskirti reikšmės kintamajam: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php new file mode 100644 index 0000000..679b18c --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP kļūda: Autorizācija neizdevās.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Kļūda: Nevar izveidot savienojumu ar SMTP serveri.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Kļūda: Nepieņem informāciju.'; +$PHPMAILER_LANG['empty_message'] = 'Ziņojuma teksts ir tukšs'; +$PHPMAILER_LANG['encoding'] = 'Neatpazīts kodējums: '; +$PHPMAILER_LANG['execute'] = 'Neizdevās izpildīt komandu: '; +$PHPMAILER_LANG['file_access'] = 'Fails nav pieejams: '; +$PHPMAILER_LANG['file_open'] = 'Faila kļūda: Nevar atvērt failu: '; +$PHPMAILER_LANG['from_failed'] = 'Nepareiza sūtītāja adrese: '; +$PHPMAILER_LANG['instantiate'] = 'Nevar palaist sūtīšanas funkciju.'; +$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.'; +$PHPMAILER_LANG['provide_address'] = 'Lūdzu, norādiet vismaz vienu adresātu.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: '; +$PHPMAILER_LANG['signing'] = 'Autorizācijas kļūda: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP savienojuma kļūda'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP servera kļūda: '; +$PHPMAILER_LANG['variable_set'] = 'Nevar piešķirt mainīgā vērtību: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php new file mode 100644 index 0000000..8a94f6a --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.'; +$PHPMAILER_LANG['empty_message'] = 'Tsy misy ny votoaty mailaka.'; +$PHPMAILER_LANG['encoding'] = 'Tsy fantatra encoding: '; +$PHPMAILER_LANG['execute'] = 'Tsy afaka manatanteraka ity baiko manaraka ity: '; +$PHPMAILER_LANG['file_access'] = 'Tsy nahomby ny fidirana amin\'ity rakitra ity: '; +$PHPMAILER_LANG['file_open'] = 'Hadisoana diso: Tsy afaka nanokatra ity file manaraka ity: '; +$PHPMAILER_LANG['from_failed'] = 'Ny adiresy iraka manaraka dia diso: '; +$PHPMAILER_LANG['instantiate'] = 'Tsy afaka nanomboka ny hetsika mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Tsy mety ny adiresy: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tsy manohana.'; +$PHPMAILER_LANG['provide_address'] = 'Alefaso azafady iray adiresy iray farafahakeliny.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Tsy mety ireo mpanaraka ireto: '; +$PHPMAILER_LANG['signing'] = 'Error nandritra ny sonia:'; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Tsy nahomby ny fifandraisana tamin\'ny server SMTP.'; +$PHPMAILER_LANG['smtp_error'] = 'Fahadisoana tamin\'ny server SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Tsy azo atao ny mametraka na mamerina ny variable: '; +$PHPMAILER_LANG['extension_missing'] = 'Tsy hita ny ampahany: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php new file mode 100644 index 0000000..04d262c --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Ralat SMTP: Tidak dapat pengesahan.'; +$PHPMAILER_LANG['connect_host'] = 'Ralat SMTP: Tidak dapat menghubungi hos pelayan SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Ralat SMTP: Data tidak diterima oleh pelayan.'; +$PHPMAILER_LANG['empty_message'] = 'Tiada isi untuk mesej'; +$PHPMAILER_LANG['encoding'] = 'Pengekodan tidak diketahui: '; +$PHPMAILER_LANG['execute'] = 'Tidak dapat melaksanakan: '; +$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses fail: '; +$PHPMAILER_LANG['file_open'] = 'Ralat Fail: Tidak dapat membuka fail: '; +$PHPMAILER_LANG['from_failed'] = 'Berikut merupakan ralat dari alamat e-mel: '; +$PHPMAILER_LANG['instantiate'] = 'Tidak dapat memberi contoh fungsi e-mel.'; +$PHPMAILER_LANG['invalid_address'] = 'Alamat emel tidak sah: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' jenis penghantar emel tidak disokong.'; +$PHPMAILER_LANG['provide_address'] = 'Anda perlu menyediakan sekurang-kurangnya satu alamat e-mel penerima.'; +$PHPMAILER_LANG['recipients_failed'] = 'Ralat SMTP: Penerima e-mel berikut telah gagal: '; +$PHPMAILER_LANG['signing'] = 'Ralat pada tanda tangan: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() telah gagal.'; +$PHPMAILER_LANG['smtp_error'] = 'Ralat pada pelayan SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Tidak boleh menetapkan atau menetapkan semula pembolehubah: '; +$PHPMAILER_LANG['extension_missing'] = 'Sambungan hilang: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php new file mode 100644 index 0000000..c9621a1 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php @@ -0,0 +1,33 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP-fout: authenticatie mislukt.'; +$PHPMAILER_LANG['buggy_php'] = 'PHP versie gededecteerd die onderhavig is aan een bug die kan resulteren in gecorrumpeerde berichten. Om dit te voorkomen, gebruik SMTP voor het verzenden van berichten, zet de mail.add_x_header optie in uw php.ini file uit, gebruik MacOS of Linux, of pas de gebruikte PHP versie aan naar versie 7.0.17+ or 7.1.3+.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP-fout: kon niet verbinden met SMTP-host.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-fout: data niet geaccepteerd.'; +$PHPMAILER_LANG['empty_message'] = 'Berichttekst is leeg'; +$PHPMAILER_LANG['encoding'] = 'Onbekende codering: '; +$PHPMAILER_LANG['execute'] = 'Kon niet uitvoeren: '; +$PHPMAILER_LANG['extension_missing'] = 'Extensie afwezig: '; +$PHPMAILER_LANG['file_access'] = 'Kreeg geen toegang tot bestand: '; +$PHPMAILER_LANG['file_open'] = 'Bestandsfout: kon bestand niet openen: '; +$PHPMAILER_LANG['from_failed'] = 'Het volgende afzendersadres is mislukt: '; +$PHPMAILER_LANG['instantiate'] = 'Kon mailfunctie niet initialiseren.'; +$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres: '; +$PHPMAILER_LANG['invalid_header'] = 'Ongeldige header naam of waarde'; +$PHPMAILER_LANG['invalid_hostentry'] = 'Ongeldige hostentry: '; +$PHPMAILER_LANG['invalid_host'] = 'Ongeldige host: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.'; +$PHPMAILER_LANG['provide_address'] = 'Er moet minstens één ontvanger worden opgegeven.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: de volgende ontvangers zijn mislukt: '; +$PHPMAILER_LANG['signing'] = 'Signeerfout: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP code: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'Aanvullende SMTP informatie: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Verbinding mislukt.'; +$PHPMAILER_LANG['smtp_detail'] = 'Detail: '; +$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfout: '; +$PHPMAILER_LANG['variable_set'] = 'Kan de volgende variabele niet instellen of resetten: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php new file mode 100644 index 0000000..cb7b2c2 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php @@ -0,0 +1,33 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Erro do SMTP: Não foi possível realizar a autenticação.'; +$PHPMAILER_LANG['connect_host'] = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Erro do SMTP: Os dados foram rejeitados.'; +$PHPMAILER_LANG['empty_message'] = 'A mensagem no e-mail está vazia.'; +$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; +$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; +$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder o ficheiro: '; +$PHPMAILER_LANG['file_open'] = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: '; +$PHPMAILER_LANG['from_failed'] = 'Ocorreram falhas nos endereços dos seguintes remententes: '; +$PHPMAILER_LANG['instantiate'] = 'Não foi possível iniciar uma instância da função mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; +$PHPMAILER_LANG['provide_address'] = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.'; +$PHPMAILER_LANG['recipients_failed'] = 'Erro do SMTP: O endereço do seguinte destinatário falhou: '; +$PHPMAILER_LANG['signing'] = 'Erro ao assinar: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; +$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; +$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php new file mode 100644 index 0000000..5239865 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php @@ -0,0 +1,38 @@ + + * @author Lucas Guimarães + * @author Phelipe Alves + * @author Fabio Beneditto + * @author Geidson Benício Coelho + */ + +$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.'; +$PHPMAILER_LANG['buggy_php'] = 'Sua versão do PHP é afetada por um bug que por resultar em messagens corrompidas. Para corrigir, mude para enviar usando SMTP, desative a opção mail.add_x_header em seu php.ini, mude para MacOS ou Linux, ou atualize seu PHP para versão 7.0.17+ ou 7.1.3+ '; +$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.'; +$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia'; +$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; +$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; +$PHPMAILER_LANG['extension_missing'] = 'Extensão não existe: '; +$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: '; +$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: '; +$PHPMAILER_LANG['from_failed'] = 'Os seguintes remetentes falharam: '; +$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.'; +$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: '; +$PHPMAILER_LANG['invalid_header'] = 'Nome ou valor de cabeçalho inválido'; +$PHPMAILER_LANG['invalid_hostentry'] = 'hostentry inválido: '; +$PHPMAILER_LANG['invalid_host'] = 'host inválido: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; +$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.'; +$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: '; +$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; +$PHPMAILER_LANG['smtp_code'] = 'Código do servidor SMTP: '; +$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'Informações adicionais do servidor SMTP: '; +$PHPMAILER_LANG['smtp_detail'] = 'Detalhes do servidor SMTP: '; +$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php new file mode 100644 index 0000000..45bef91 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php @@ -0,0 +1,33 @@ + + * @author Foster Snowhill + */ + +$PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: ошибка авторизации.'; +$PHPMAILER_LANG['connect_host'] = 'Ошибка SMTP: не удается подключиться к SMTP-серверу.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Ошибка SMTP: данные не приняты.'; +$PHPMAILER_LANG['encoding'] = 'Неизвестная кодировка: '; +$PHPMAILER_LANG['execute'] = 'Невозможно выполнить команду: '; +$PHPMAILER_LANG['file_access'] = 'Нет доступа к файлу: '; +$PHPMAILER_LANG['file_open'] = 'Файловая ошибка: не удаётся открыть файл: '; +$PHPMAILER_LANG['from_failed'] = 'Неверный адрес отправителя: '; +$PHPMAILER_LANG['instantiate'] = 'Невозможно запустить функцию mail().'; +$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один email-адрес получателя.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.'; +$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: не удалась отправка таким адресатам: '; +$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение'; +$PHPMAILER_LANG['invalid_address'] = 'Не отправлено из-за неправильного формата email-адреса: '; +$PHPMAILER_LANG['signing'] = 'Ошибка подписи: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером'; +$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: '; +$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или сбросить переменную: '; +$PHPMAILER_LANG['extension_missing'] = 'Расширение отсутствует: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php new file mode 100644 index 0000000..dce502a --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php @@ -0,0 +1,34 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP දෝෂය: සත්‍යාපනය අසාර්ථක විය.'; +$PHPMAILER_LANG['buggy_php'] = 'ඔබගේ PHP version එකෙහි පවතින දෝෂයක් නිසා email පණිවිඩ දෝෂ සහගත වීමේ හැකියාවක් ඇත. මෙය විසදීම සදහා SMTP භාවිතා කිරීම, mail.add_x_header INI setting එක අක්‍රීය කිරීම, MacOS හෝ Linux වලට මාරු වීම, හෝ ඔබගේ PHP version එක 7.0.17+ හෝ 7.1.3+ වලට අලුත් කිරීම කරගන්න.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP දෝෂය: සම්බන්ධ වීමට නොහැකි විය.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP දෝෂය: දත්ත පිළිගනු නොලැබේ.'; +$PHPMAILER_LANG['empty_message'] = 'පණිවිඩ අන්තර්ගතය හිස්'; +$PHPMAILER_LANG['encoding'] = 'නොදන්නා කේතනය: '; +$PHPMAILER_LANG['execute'] = 'ක්‍රියාත්මක කළ නොහැකි විය: '; +$PHPMAILER_LANG['extension_missing'] = 'Extension එක නොමැත: '; +$PHPMAILER_LANG['file_access'] = 'File එකට ප්‍රවේශ විය නොහැකි විය: '; +$PHPMAILER_LANG['file_open'] = 'File දෝෂය: File එක විවෘත කළ නොහැක: '; +$PHPMAILER_LANG['from_failed'] = 'පහත From ලිපිනයන් අසාර්ථක විය: '; +$PHPMAILER_LANG['instantiate'] = 'mail function එක ක්‍රියාත්මක කළ නොහැක.'; +$PHPMAILER_LANG['invalid_address'] = 'වලංගු නොවන ලිපිනය: '; +$PHPMAILER_LANG['invalid_header'] = 'වලංගු නොවන header නාමයක් හෝ අගයක්'; +$PHPMAILER_LANG['invalid_hostentry'] = 'වලංගු නොවන hostentry එකක්: '; +$PHPMAILER_LANG['invalid_host'] = 'වලංගු නොවන host එකක්: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer සහාය නොදක්වයි.'; +$PHPMAILER_LANG['provide_address'] = 'ඔබ අවම වශයෙන් එක් ලබන්නෙකුගේ ඊමේල් ලිපිනයක් සැපයිය යුතුය.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP දෝෂය: පහත ලබන්නන් අසමත් විය: '; +$PHPMAILER_LANG['signing'] = 'Sign කිරීමේ දෝෂය: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP කේතය: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'අමතර SMTP තොරතුරු: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP සම්බන්ධය අසාර්ථක විය.'; +$PHPMAILER_LANG['smtp_detail'] = 'තොරතුරු: '; +$PHPMAILER_LANG['smtp_error'] = 'SMTP දෝෂය: '; +$PHPMAILER_LANG['variable_set'] = 'Variable එක සැකසීමට හෝ නැවත සැකසීමට නොහැක: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php new file mode 100644 index 0000000..028f5bc --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php @@ -0,0 +1,30 @@ + + * @author Peter Orlický + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Chyba autentifikácie.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Nebolo možné nadviazať spojenie so SMTP serverom.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dáta neboli prijaté'; +$PHPMAILER_LANG['empty_message'] = 'Prázdne telo správy.'; +$PHPMAILER_LANG['encoding'] = 'Neznáme kódovanie: '; +$PHPMAILER_LANG['execute'] = 'Nedá sa vykonať: '; +$PHPMAILER_LANG['file_access'] = 'Súbor nebol nájdený: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre čítanie: '; +$PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: '; +$PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.'; +$PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostiteľa je nesprávny: '; +$PHPMAILER_LANG['invalid_host'] = 'Hostiteľ je nesprávny: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.'; +$PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne '; +$PHPMAILER_LANG['signing'] = 'Chyba prihlasovania: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zlyhalo.'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP chyba serveru: '; +$PHPMAILER_LANG['variable_set'] = 'Nemožno nastaviť alebo resetovať premennú: '; +$PHPMAILER_LANG['extension_missing'] = 'Chýba rozšírenie: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php new file mode 100644 index 0000000..3e00c25 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php @@ -0,0 +1,36 @@ + + * @author Filip Š + * @author Blaž Oražem + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; +$PHPMAILER_LANG['buggy_php'] = 'Na vašo PHP različico vpliva napaka, ki lahko povzroči poškodovana sporočila. Če želite težavo odpraviti, preklopite na pošiljanje prek SMTP, onemogočite možnost mail.add_x_header v vaši php.ini datoteki, preklopite na MacOS ali Linux, ali nadgradite vašo PHP zaličico na 7.0.17+ ali 7.1.3+.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP napaka: Vzpostavljanje povezave s SMTP gostiteljem ni uspelo.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP napaka: Strežnik zavrača podatke.'; +$PHPMAILER_LANG['empty_message'] = 'E-poštno sporočilo nima vsebine.'; +$PHPMAILER_LANG['encoding'] = 'Nepoznan tip kodiranja: '; +$PHPMAILER_LANG['execute'] = 'Operacija ni uspela: '; +$PHPMAILER_LANG['extension_missing'] = 'Manjkajoča razširitev: '; +$PHPMAILER_LANG['file_access'] = 'Nimam dostopa do datoteke: '; +$PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: '; +$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: '; +$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.'; +$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: '; +$PHPMAILER_LANG['invalid_header'] = 'Neveljavno ime ali vrednost glave'; +$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: '; +$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.'; +$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: '; +$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: '; +$PHPMAILER_LANG['smtp_code'] = 'SMTP koda: '; +$PHPMAILER_LANG['smtp_code_ex'] = 'Dodatne informacije o SMTP: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.'; +$PHPMAILER_LANG['smtp_detail'] = 'Podrobnosti: '; +$PHPMAILER_LANG['smtp_error'] = 'Napaka SMTP strežnika: '; +$PHPMAILER_LANG['variable_set'] = 'Ne morem nastaviti oz. ponastaviti spremenljivke: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php new file mode 100644 index 0000000..0b5280f --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php @@ -0,0 +1,28 @@ + + * @author Miloš Milanović + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: аутентификација није успела.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: повезивање са SMTP сервером није успело.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: подаци нису прихваћени.'; +$PHPMAILER_LANG['empty_message'] = 'Садржај поруке је празан.'; +$PHPMAILER_LANG['encoding'] = 'Непознато кодирање: '; +$PHPMAILER_LANG['execute'] = 'Није могуће извршити наредбу: '; +$PHPMAILER_LANG['file_access'] = 'Није могуће приступити датотеци: '; +$PHPMAILER_LANG['file_open'] = 'Није могуће отворити датотеку: '; +$PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: '; +$PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.'; +$PHPMAILER_LANG['invalid_address'] = 'Порука није послата. Неисправна адреса: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.'; +$PHPMAILER_LANG['provide_address'] = 'Дефинишите бар једну адресу примаоца.'; +$PHPMAILER_LANG['signing'] = 'Грешка приликом пријаве: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Повезивање са SMTP сервером није успело.'; +$PHPMAILER_LANG['smtp_error'] = 'Грешка SMTP сервера: '; +$PHPMAILER_LANG['variable_set'] = 'Није могуће задати нити ресетовати променљиву: '; +$PHPMAILER_LANG['extension_missing'] = 'Недостаје проширење: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php new file mode 100644 index 0000000..6213832 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php @@ -0,0 +1,28 @@ + + * @author Miloš Milanović + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP greška: autentifikacija nije uspela.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP greška: povezivanje sa SMTP serverom nije uspelo.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP greška: podaci nisu prihvaćeni.'; +$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; +$PHPMAILER_LANG['encoding'] = 'Nepoznato kodiranje: '; +$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; +$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; +$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; +$PHPMAILER_LANG['from_failed'] = 'SMTP greška: slanje sa sledećih adresa nije uspelo: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP greška: slanje na sledeće adrese nije uspelo: '; +$PHPMAILER_LANG['instantiate'] = 'Nije moguće pokrenuti mail funkciju.'; +$PHPMAILER_LANG['invalid_address'] = 'Poruka nije poslata. Neispravna adresa: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' majler nije podržan.'; +$PHPMAILER_LANG['provide_address'] = 'Definišite bar jednu adresu primaoca.'; +$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Povezivanje sa SMTP serverom nije uspelo.'; +$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP servera: '; +$PHPMAILER_LANG['variable_set'] = 'Nije moguće zadati niti resetovati promenljivu: '; +$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php new file mode 100644 index 0000000..9872c19 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: '; +$PHPMAILER_LANG['execute'] = 'Kunde inte köra: '; +$PHPMAILER_LANG['file_access'] = 'Ingen åtkomst till fil: '; +$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: '; +$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: '; +$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.'; +$PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: '; +$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: '; +$PHPMAILER_LANG['signing'] = 'Signeringsfel: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP serverfel: '; +$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: '; +$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php new file mode 100644 index 0000000..d15bed1 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php @@ -0,0 +1,28 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.'; +$PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe'; +$PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: '; +$PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: '; +$PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: '; +$PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: '; +$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.'; +$PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: '; +$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.'; +$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: '; +$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.'; +$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: '; +$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: '; +$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php new file mode 100644 index 0000000..f938f80 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php @@ -0,0 +1,31 @@ + + * @fixed by Boris Yurchenko + */ + +$PHPMAILER_LANG['authenticate'] = 'Помилка SMTP: помилка авторизації.'; +$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається під\'єднатися до SMTP-серверу.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Помилка SMTP: дані не прийнято.'; +$PHPMAILER_LANG['encoding'] = 'Невідоме кодування: '; +$PHPMAILER_LANG['execute'] = 'Неможливо виконати команду: '; +$PHPMAILER_LANG['file_access'] = 'Немає доступу до файлу: '; +$PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: '; +$PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: '; +$PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail().'; +$PHPMAILER_LANG['provide_address'] = 'Будь ласка, введіть хоча б одну email-адресу отримувача.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; +$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: не вдалося відправлення для таких отримувачів: '; +$PHPMAILER_LANG['empty_message'] = 'Пусте повідомлення'; +$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через неправильний формат email-адреси: '; +$PHPMAILER_LANG['signing'] = 'Помилка підпису: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання з SMTP-сервером'; +$PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; +$PHPMAILER_LANG['variable_set'] = 'Неможливо встановити або скинути змінну: '; +$PHPMAILER_LANG['extension_missing'] = 'Розширення відсутнє: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php new file mode 100644 index 0000000..d65576e --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php @@ -0,0 +1,27 @@ + + */ + +$PHPMAILER_LANG['authenticate'] = 'Lỗi SMTP: Không thể xác thực.'; +$PHPMAILER_LANG['connect_host'] = 'Lỗi SMTP: Không thể kết nối máy chủ SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Lỗi SMTP: Dữ liệu không được chấp nhận.'; +$PHPMAILER_LANG['empty_message'] = 'Không có nội dung'; +$PHPMAILER_LANG['encoding'] = 'Mã hóa không xác định: '; +$PHPMAILER_LANG['execute'] = 'Không thực hiện được: '; +$PHPMAILER_LANG['file_access'] = 'Không thể truy cập tệp tin '; +$PHPMAILER_LANG['file_open'] = 'Lỗi Tập tin: Không thể mở tệp tin: '; +$PHPMAILER_LANG['from_failed'] = 'Lỗi địa chỉ gửi đi: '; +$PHPMAILER_LANG['instantiate'] = 'Không dùng được các hàm gửi thư.'; +$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.'; +$PHPMAILER_LANG['provide_address'] = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.'; +$PHPMAILER_LANG['recipients_failed'] = 'Lỗi SMTP: lỗi địa chỉ người nhận: '; +$PHPMAILER_LANG['signing'] = 'Lỗi đăng nhập: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Lỗi kết nối với SMTP'; +$PHPMAILER_LANG['smtp_error'] = 'Lỗi máy chủ smtp '; +$PHPMAILER_LANG['variable_set'] = 'Không thể thiết lập hoặc thiết lập lại biến: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php new file mode 100644 index 0000000..35e4e70 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php @@ -0,0 +1,29 @@ + + * @author Peter Dave Hello <@PeterDaveHello/> + * @author Jason Chiang + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP 錯誤:登入失敗。'; +$PHPMAILER_LANG['connect_host'] = 'SMTP 錯誤:無法連線到 SMTP 主機。'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 錯誤:無法接受的資料。'; +$PHPMAILER_LANG['empty_message'] = '郵件內容為空'; +$PHPMAILER_LANG['encoding'] = '未知編碼: '; +$PHPMAILER_LANG['execute'] = '無法執行:'; +$PHPMAILER_LANG['file_access'] = '無法存取檔案:'; +$PHPMAILER_LANG['file_open'] = '檔案錯誤:無法開啟檔案:'; +$PHPMAILER_LANG['from_failed'] = '發送地址錯誤:'; +$PHPMAILER_LANG['instantiate'] = '未知函數呼叫。'; +$PHPMAILER_LANG['invalid_address'] = '因為電子郵件地址無效,無法傳送: '; +$PHPMAILER_LANG['mailer_not_supported'] = '不支援的發信客戶端。'; +$PHPMAILER_LANG['provide_address'] = '必須提供至少一個收件人地址。'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP 錯誤:以下收件人地址錯誤:'; +$PHPMAILER_LANG['signing'] = '電子簽章錯誤: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 連線失敗'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP 伺服器錯誤: '; +$PHPMAILER_LANG['variable_set'] = '無法設定或重設變數: '; +$PHPMAILER_LANG['extension_missing'] = '遺失模組 Extension: '; diff --git a/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php new file mode 100644 index 0000000..03d4911 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php @@ -0,0 +1,36 @@ + + * @author young + * @author Teddysun + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:登录失败。'; +$PHPMAILER_LANG['buggy_php'] = '您的 PHP 版本存在漏洞,可能会导致消息损坏。为修复此问题,请切换到使用 SMTP 发送,在您的 php.ini 中禁用 mail.add_x_header 选项。切换到 MacOS 或 Linux,或将您的 PHP 升级到 7.0.17+ 或 7.1.3+ 版本。'; +$PHPMAILER_LANG['connect_host'] = 'SMTP 错误:无法连接到 SMTP 主机。'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误:数据不被接受。'; +$PHPMAILER_LANG['empty_message'] = '邮件正文为空。'; +$PHPMAILER_LANG['encoding'] = '未知编码:'; +$PHPMAILER_LANG['execute'] = '无法执行:'; +$PHPMAILER_LANG['extension_missing'] = '缺少扩展名:'; +$PHPMAILER_LANG['file_access'] = '无法访问文件:'; +$PHPMAILER_LANG['file_open'] = '文件错误:无法打开文件:'; +$PHPMAILER_LANG['from_failed'] = '发送地址错误:'; +$PHPMAILER_LANG['instantiate'] = '未知函数调用。'; +$PHPMAILER_LANG['invalid_address'] = '发送失败,电子邮箱地址是无效的:'; +$PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。'; +$PHPMAILER_LANG['provide_address'] = '必须提供至少一个收件人地址。'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误:收件人地址错误:'; +$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP服务器连接失败。'; +$PHPMAILER_LANG['smtp_error'] = 'SMTP服务器出错:'; +$PHPMAILER_LANG['variable_set'] = '无法设置或重置变量:'; +$PHPMAILER_LANG['invalid_header'] = '无效的标题名称或值'; +$PHPMAILER_LANG['invalid_hostentry'] = '无效的hostentry: '; +$PHPMAILER_LANG['invalid_host'] = '无效的主机:'; +$PHPMAILER_LANG['signing'] = '签名错误:'; +$PHPMAILER_LANG['smtp_code'] = 'SMTP代码: '; +$PHPMAILER_LANG['smtp_code_ex'] = '附加SMTP信息: '; +$PHPMAILER_LANG['smtp_detail'] = '详情:'; diff --git a/kirby/vendor/phpmailer/phpmailer/src/DSNConfigurator.php b/kirby/vendor/phpmailer/phpmailer/src/DSNConfigurator.php new file mode 100644 index 0000000..566c961 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/src/DSNConfigurator.php @@ -0,0 +1,245 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2023 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +/** + * Configure PHPMailer with DSN string. + * + * @see https://en.wikipedia.org/wiki/Data_source_name + * + * @author Oleg Voronkovich + */ +class DSNConfigurator +{ + /** + * Create new PHPMailer instance configured by DSN. + * + * @param string $dsn DSN + * @param bool $exceptions Should we throw external exceptions? + * + * @return PHPMailer + */ + public static function mailer($dsn, $exceptions = null) + { + static $configurator = null; + + if (null === $configurator) { + $configurator = new DSNConfigurator(); + } + + return $configurator->configure(new PHPMailer($exceptions), $dsn); + } + + /** + * Configure PHPMailer instance with DSN string. + * + * @param PHPMailer $mailer PHPMailer instance + * @param string $dsn DSN + * + * @return PHPMailer + */ + public function configure(PHPMailer $mailer, $dsn) + { + $config = $this->parseDSN($dsn); + + $this->applyConfig($mailer, $config); + + return $mailer; + } + + /** + * Parse DSN string. + * + * @param string $dsn DSN + * + * @throws Exception If DSN is malformed + * + * @return array Configuration + */ + private function parseDSN($dsn) + { + $config = $this->parseUrl($dsn); + + if (false === $config || !isset($config['scheme']) || !isset($config['host'])) { + throw new Exception('Malformed DSN'); + } + + if (isset($config['query'])) { + parse_str($config['query'], $config['query']); + } + + return $config; + } + + /** + * Apply configuration to mailer. + * + * @param PHPMailer $mailer PHPMailer instance + * @param array $config Configuration + * + * @throws Exception If scheme is invalid + */ + private function applyConfig(PHPMailer $mailer, $config) + { + switch ($config['scheme']) { + case 'mail': + $mailer->isMail(); + break; + case 'sendmail': + $mailer->isSendmail(); + break; + case 'qmail': + $mailer->isQmail(); + break; + case 'smtp': + case 'smtps': + $mailer->isSMTP(); + $this->configureSMTP($mailer, $config); + break; + default: + throw new Exception( + sprintf( + 'Invalid scheme: "%s". Allowed values: "mail", "sendmail", "qmail", "smtp", "smtps".', + $config['scheme'] + ) + ); + } + + if (isset($config['query'])) { + $this->configureOptions($mailer, $config['query']); + } + } + + /** + * Configure SMTP. + * + * @param PHPMailer $mailer PHPMailer instance + * @param array $config Configuration + */ + private function configureSMTP($mailer, $config) + { + $isSMTPS = 'smtps' === $config['scheme']; + + if ($isSMTPS) { + $mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + } + + $mailer->Host = $config['host']; + + if (isset($config['port'])) { + $mailer->Port = $config['port']; + } elseif ($isSMTPS) { + $mailer->Port = SMTP::DEFAULT_SECURE_PORT; + } + + $mailer->SMTPAuth = isset($config['user']) || isset($config['pass']); + + if (isset($config['user'])) { + $mailer->Username = $config['user']; + } + + if (isset($config['pass'])) { + $mailer->Password = $config['pass']; + } + } + + /** + * Configure options. + * + * @param PHPMailer $mailer PHPMailer instance + * @param array $options Options + * + * @throws Exception If option is unknown + */ + private function configureOptions(PHPMailer $mailer, $options) + { + $allowedOptions = get_object_vars($mailer); + + unset($allowedOptions['Mailer']); + unset($allowedOptions['SMTPAuth']); + unset($allowedOptions['Username']); + unset($allowedOptions['Password']); + unset($allowedOptions['Hostname']); + unset($allowedOptions['Port']); + unset($allowedOptions['ErrorInfo']); + + $allowedOptions = \array_keys($allowedOptions); + + foreach ($options as $key => $value) { + if (!in_array($key, $allowedOptions)) { + throw new Exception( + sprintf( + 'Unknown option: "%s". Allowed values: "%s"', + $key, + implode('", "', $allowedOptions) + ) + ); + } + + switch ($key) { + case 'AllowEmpty': + case 'SMTPAutoTLS': + case 'SMTPKeepAlive': + case 'SingleTo': + case 'UseSendmailOptions': + case 'do_verp': + case 'DKIM_copyHeaderFields': + $mailer->$key = (bool) $value; + break; + case 'Priority': + case 'SMTPDebug': + case 'WordWrap': + $mailer->$key = (int) $value; + break; + default: + $mailer->$key = $value; + break; + } + } + } + + /** + * Parse a URL. + * Wrapper for the built-in parse_url function to work around a bug in PHP 5.5. + * + * @param string $url URL + * + * @return array|false + */ + protected function parseUrl($url) + { + if (\PHP_VERSION_ID >= 50600 || false === strpos($url, '?')) { + return parse_url($url); + } + + $chunks = explode('?', $url); + if (is_array($chunks)) { + $result = parse_url($chunks[0]); + if (is_array($result)) { + $result['query'] = $chunks[1]; + } + return $result; + } + + return false; + } +} diff --git a/kirby/vendor/phpmailer/phpmailer/src/Exception.php b/kirby/vendor/phpmailer/phpmailer/src/Exception.php new file mode 100644 index 0000000..52eaf95 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/src/Exception.php @@ -0,0 +1,40 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +/** + * PHPMailer exception handler. + * + * @author Marcus Bointon + */ +class Exception extends \Exception +{ + /** + * Prettify error message output. + * + * @return string + */ + public function errorMessage() + { + return '' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "
    \n"; + } +} diff --git a/kirby/vendor/phpmailer/phpmailer/src/OAuth.php b/kirby/vendor/phpmailer/phpmailer/src/OAuth.php new file mode 100644 index 0000000..c1d5b77 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/src/OAuth.php @@ -0,0 +1,139 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +use League\OAuth2\Client\Grant\RefreshToken; +use League\OAuth2\Client\Provider\AbstractProvider; +use League\OAuth2\Client\Token\AccessToken; + +/** + * OAuth - OAuth2 authentication wrapper class. + * Uses the oauth2-client package from the League of Extraordinary Packages. + * + * @see http://oauth2-client.thephpleague.com + * + * @author Marcus Bointon (Synchro/coolbru) + */ +class OAuth implements OAuthTokenProvider +{ + /** + * An instance of the League OAuth Client Provider. + * + * @var AbstractProvider + */ + protected $provider; + + /** + * The current OAuth access token. + * + * @var AccessToken + */ + protected $oauthToken; + + /** + * The user's email address, usually used as the login ID + * and also the from address when sending email. + * + * @var string + */ + protected $oauthUserEmail = ''; + + /** + * The client secret, generated in the app definition of the service you're connecting to. + * + * @var string + */ + protected $oauthClientSecret = ''; + + /** + * The client ID, generated in the app definition of the service you're connecting to. + * + * @var string + */ + protected $oauthClientId = ''; + + /** + * The refresh token, used to obtain new AccessTokens. + * + * @var string + */ + protected $oauthRefreshToken = ''; + + /** + * OAuth constructor. + * + * @param array $options Associative array containing + * `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements + */ + public function __construct($options) + { + $this->provider = $options['provider']; + $this->oauthUserEmail = $options['userName']; + $this->oauthClientSecret = $options['clientSecret']; + $this->oauthClientId = $options['clientId']; + $this->oauthRefreshToken = $options['refreshToken']; + } + + /** + * Get a new RefreshToken. + * + * @return RefreshToken + */ + protected function getGrant() + { + return new RefreshToken(); + } + + /** + * Get a new AccessToken. + * + * @return AccessToken + */ + protected function getToken() + { + return $this->provider->getAccessToken( + $this->getGrant(), + ['refresh_token' => $this->oauthRefreshToken] + ); + } + + /** + * Generate a base64-encoded OAuth token. + * + * @return string + */ + public function getOauth64() + { + //Get a new token if it's not available or has expired + if (null === $this->oauthToken || $this->oauthToken->hasExpired()) { + $this->oauthToken = $this->getToken(); + } + + return base64_encode( + 'user=' . + $this->oauthUserEmail . + "\001auth=Bearer " . + $this->oauthToken . + "\001\001" + ); + } +} diff --git a/kirby/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php b/kirby/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php new file mode 100644 index 0000000..1155507 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php @@ -0,0 +1,44 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +/** + * OAuthTokenProvider - OAuth2 token provider interface. + * Provides base64 encoded OAuth2 auth strings for SMTP authentication. + * + * @see OAuth + * @see SMTP::authenticate() + * + * @author Peter Scopes (pdscopes) + * @author Marcus Bointon (Synchro/coolbru) + */ +interface OAuthTokenProvider +{ + /** + * Generate a base64-encoded OAuth token ensuring that the access token has not expired. + * The string to be base 64 encoded should be in the form: + * "user=\001auth=Bearer \001\001" + * + * @return string + */ + public function getOauth64(); +} diff --git a/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php b/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php new file mode 100644 index 0000000..ba4bcd4 --- /dev/null +++ b/kirby/vendor/phpmailer/phpmailer/src/PHPMailer.php @@ -0,0 +1,5252 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +/** + * PHPMailer - PHP email creation and transport class. + * + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + */ +class PHPMailer +{ + const CHARSET_ASCII = 'us-ascii'; + const CHARSET_ISO88591 = 'iso-8859-1'; + const CHARSET_UTF8 = 'utf-8'; + + const CONTENT_TYPE_PLAINTEXT = 'text/plain'; + const CONTENT_TYPE_TEXT_CALENDAR = 'text/calendar'; + const CONTENT_TYPE_TEXT_HTML = 'text/html'; + const CONTENT_TYPE_MULTIPART_ALTERNATIVE = 'multipart/alternative'; + const CONTENT_TYPE_MULTIPART_MIXED = 'multipart/mixed'; + const CONTENT_TYPE_MULTIPART_RELATED = 'multipart/related'; + + const ENCODING_7BIT = '7bit'; + const ENCODING_8BIT = '8bit'; + const ENCODING_BASE64 = 'base64'; + const ENCODING_BINARY = 'binary'; + const ENCODING_QUOTED_PRINTABLE = 'quoted-printable'; + + const ENCRYPTION_STARTTLS = 'tls'; + const ENCRYPTION_SMTPS = 'ssl'; + + const ICAL_METHOD_REQUEST = 'REQUEST'; + const ICAL_METHOD_PUBLISH = 'PUBLISH'; + const ICAL_METHOD_REPLY = 'REPLY'; + const ICAL_METHOD_ADD = 'ADD'; + const ICAL_METHOD_CANCEL = 'CANCEL'; + const ICAL_METHOD_REFRESH = 'REFRESH'; + const ICAL_METHOD_COUNTER = 'COUNTER'; + const ICAL_METHOD_DECLINECOUNTER = 'DECLINECOUNTER'; + + /** + * Email priority. + * Options: null (default), 1 = High, 3 = Normal, 5 = low. + * When null, the header is not set at all. + * + * @var int|null + */ + public $Priority; + + /** + * The character set of the message. + * + * @var string + */ + public $CharSet = self::CHARSET_ISO88591; + + /** + * The MIME Content-type of the message. + * + * @var string + */ + public $ContentType = self::CONTENT_TYPE_PLAINTEXT; + + /** + * The message encoding. + * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". + * + * @var string + */ + public $Encoding = self::ENCODING_8BIT; + + /** + * Holds the most recent mailer error message. + * + * @var string + */ + public $ErrorInfo = ''; + + /** + * The From email address for the message. + * + * @var string + */ + public $From = ''; + + /** + * The From name of the message. + * + * @var string + */ + public $FromName = ''; + + /** + * The envelope sender of the message. + * This will usually be turned into a Return-Path header by the receiver, + * and is the address that bounces will be sent to. + * If not empty, will be passed via `-f` to sendmail or as the 'MAIL FROM' value over SMTP. + * + * @var string + */ + public $Sender = ''; + + /** + * The Subject of the message. + * + * @var string + */ + public $Subject = ''; + + /** + * An HTML or plain text message body. + * If HTML then call isHTML(true). + * + * @var string + */ + public $Body = ''; + + /** + * The plain-text message body. + * This body can be read by mail clients that do not have HTML email + * capability such as mutt & Eudora. + * Clients that can read HTML will view the normal Body. + * + * @var string + */ + public $AltBody = ''; + + /** + * An iCal message part body. + * Only supported in simple alt or alt_inline message types + * To generate iCal event structures, use classes like EasyPeasyICS or iCalcreator. + * + * @see http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ + * @see http://kigkonsult.se/iCalcreator/ + * + * @var string + */ + public $Ical = ''; + + /** + * Value-array of "method" in Contenttype header "text/calendar" + * + * @var string[] + */ + protected static $IcalMethods = [ + self::ICAL_METHOD_REQUEST, + self::ICAL_METHOD_PUBLISH, + self::ICAL_METHOD_REPLY, + self::ICAL_METHOD_ADD, + self::ICAL_METHOD_CANCEL, + self::ICAL_METHOD_REFRESH, + self::ICAL_METHOD_COUNTER, + self::ICAL_METHOD_DECLINECOUNTER, + ]; + + /** + * The complete compiled MIME message body. + * + * @var string + */ + protected $MIMEBody = ''; + + /** + * The complete compiled MIME message headers. + * + * @var string + */ + protected $MIMEHeader = ''; + + /** + * Extra headers that createHeader() doesn't fold in. + * + * @var string + */ + protected $mailHeader = ''; + + /** + * Word-wrap the message body to this number of chars. + * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. + * + * @see static::STD_LINE_LENGTH + * + * @var int + */ + public $WordWrap = 0; + + /** + * Which method to use to send mail. + * Options: "mail", "sendmail", or "smtp". + * + * @var string + */ + public $Mailer = 'mail'; + + /** + * The path to the sendmail program. + * + * @var string + */ + public $Sendmail = '/usr/sbin/sendmail'; + + /** + * Whether mail() uses a fully sendmail-compatible MTA. + * One which supports sendmail's "-oi -f" options. + * + * @var bool + */ + public $UseSendmailOptions = true; + + /** + * The email address that a reading confirmation should be sent to, also known as read receipt. + * + * @var string + */ + public $ConfirmReadingTo = ''; + + /** + * The hostname to use in the Message-ID header and as default HELO string. + * If empty, PHPMailer attempts to find one with, in order, + * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value + * 'localhost.localdomain'. + * + * @see PHPMailer::$Helo + * + * @var string + */ + public $Hostname = ''; + + /** + * An ID to be used in the Message-ID header. + * If empty, a unique id will be generated. + * You can set your own, but it must be in the format "", + * as defined in RFC5322 section 3.6.4 or it will be ignored. + * + * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 + * + * @var string + */ + public $MessageID = ''; + + /** + * The message Date to be used in the Date header. + * If empty, the current date will be added. + * + * @var string + */ + public $MessageDate = ''; + + /** + * SMTP hosts. + * Either a single hostname or multiple semicolon-delimited hostnames. + * You can also specify a different port + * for each host by using this format: [hostname:port] + * (e.g. "smtp1.example.com:25;smtp2.example.com"). + * You can also specify encryption type, for example: + * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). + * Hosts will be tried in order. + * + * @var string + */ + public $Host = 'localhost'; + + /** + * The default SMTP server port. + * + * @var int + */ + public $Port = 25; + + /** + * The SMTP HELO/EHLO name used for the SMTP connection. + * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find + * one with the same method described above for $Hostname. + * + * @see PHPMailer::$Hostname + * + * @var string + */ + public $Helo = ''; + + /** + * What kind of encryption to use on the SMTP connection. + * Options: '', static::ENCRYPTION_STARTTLS, or static::ENCRYPTION_SMTPS. + * + * @var string + */ + public $SMTPSecure = ''; + + /** + * Whether to enable TLS encryption automatically if a server supports it, + * even if `SMTPSecure` is not set to 'tls'. + * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. + * + * @var bool + */ + public $SMTPAutoTLS = true; + + /** + * Whether to use SMTP authentication. + * Uses the Username and Password properties. + * + * @see PHPMailer::$Username + * @see PHPMailer::$Password + * + * @var bool + */ + public $SMTPAuth = false; + + /** + * Options array passed to stream_context_create when connecting via SMTP. + * + * @var array + */ + public $SMTPOptions = []; + + /** + * SMTP username. + * + * @var string + */ + public $Username = ''; + + /** + * SMTP password. + * + * @var string + */ + public $Password = ''; + + /** + * SMTP authentication type. Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2. + * If not specified, the first one from that list that the server supports will be selected. + * + * @var string + */ + public $AuthType = ''; + + /** + * SMTP SMTPXClient command attibutes + * + * @var array + */ + protected $SMTPXClient = []; + + /** + * An implementation of the PHPMailer OAuthTokenProvider interface. + * + * @var OAuthTokenProvider + */ + protected $oauth; + + /** + * The SMTP server timeout in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. + * + * @var int + */ + public $Timeout = 300; + + /** + * Comma separated list of DSN notifications + * 'NEVER' under no circumstances a DSN must be returned to the sender. + * If you use NEVER all other notifications will be ignored. + * 'SUCCESS' will notify you when your mail has arrived at its destination. + * 'FAILURE' will arrive if an error occurred during delivery. + * 'DELAY' will notify you if there is an unusual delay in delivery, but the actual + * delivery's outcome (success or failure) is not yet decided. + * + * @see https://tools.ietf.org/html/rfc3461 See section 4.1 for more information about NOTIFY + */ + public $dsn = ''; + + /** + * SMTP class debug output mode. + * Debug output level. + * Options: + * @see SMTP::DEBUG_OFF: No output + * @see SMTP::DEBUG_CLIENT: Client messages + * @see SMTP::DEBUG_SERVER: Client and server messages + * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status + * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed + * + * @see SMTP::$do_debug + * + * @var int + */ + public $SMTPDebug = 0; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
    `, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * By default PHPMailer will use `echo` if run from a `cli` or `cli-server` SAPI, `html` otherwise. + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * ```php + * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * ``` + * + * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug` + * level output is used: + * + * ```php + * $mail->Debugoutput = new myPsr3Logger; + * ``` + * + * @see SMTP::$Debugoutput + * + * @var string|callable|\Psr\Log\LoggerInterface + */ + public $Debugoutput = 'echo'; + + /** + * Whether to keep the SMTP connection open after each message. + * If this is set to true then the connection will remain open after a send, + * and closing the connection will require an explicit call to smtpClose(). + * It's a good idea to use this if you are sending multiple messages as it reduces overhead. + * See the mailing list example for how to use it. + * + * @var bool + */ + public $SMTPKeepAlive = false; + + /** + * Whether to split multiple to addresses into multiple messages + * or send them all in one message. + * Only supported in `mail` and `sendmail` transports, not in SMTP. + * + * @var bool + * + * @deprecated 6.0.0 PHPMailer isn't a mailing list manager! + */ + public $SingleTo = false; + + /** + * Storage for addresses when SingleTo is enabled. + * + * @var array + */ + protected $SingleToArray = []; + + /** + * Whether to generate VERP addresses on send. + * Only applicable when sending via SMTP. + * + * @see https://en.wikipedia.org/wiki/Variable_envelope_return_path + * @see http://www.postfix.org/VERP_README.html Postfix VERP info + * + * @var bool + */ + public $do_verp = false; + + /** + * Whether to allow sending messages with an empty body. + * + * @var bool + */ + public $AllowEmpty = false; + + /** + * DKIM selector. + * + * @var string + */ + public $DKIM_selector = ''; + + /** + * DKIM Identity. + * Usually the email address used as the source of the email. + * + * @var string + */ + public $DKIM_identity = ''; + + /** + * DKIM passphrase. + * Used if your key is encrypted. + * + * @var string + */ + public $DKIM_passphrase = ''; + + /** + * DKIM signing domain name. + * + * @example 'example.com' + * + * @var string + */ + public $DKIM_domain = ''; + + /** + * DKIM Copy header field values for diagnostic use. + * + * @var bool + */ + public $DKIM_copyHeaderFields = true; + + /** + * DKIM Extra signing headers. + * + * @example ['List-Unsubscribe', 'List-Help'] + * + * @var array + */ + public $DKIM_extraHeaders = []; + + /** + * DKIM private key file path. + * + * @var string + */ + public $DKIM_private = ''; + + /** + * DKIM private key string. + * + * If set, takes precedence over `$DKIM_private`. + * + * @var string + */ + public $DKIM_private_string = ''; + + /** + * Callback Action function name. + * + * The function that handles the result of the send email action. + * It is called out by send() for each email sent. + * + * Value can be any php callable: http://www.php.net/is_callable + * + * Parameters: + * bool $result result of the send action + * array $to email addresses of the recipients + * array $cc cc email addresses + * array $bcc bcc email addresses + * string $subject the subject + * string $body the email body + * string $from email address of sender + * string $extra extra information of possible use + * "smtp_transaction_id' => last smtp transaction id + * + * @var string + */ + public $action_function = ''; + + /** + * What to put in the X-Mailer header. + * Options: An empty string for PHPMailer default, whitespace/null for none, or a string to use. + * + * @var string|null + */ + public $XMailer = ''; + + /** + * Which validator to use by default when validating email addresses. + * May be a callable to inject your own validator, but there are several built-in validators. + * The default validator uses PHP's FILTER_VALIDATE_EMAIL filter_var option. + * + * @see PHPMailer::validateAddress() + * + * @var string|callable + */ + public static $validator = 'php'; + + /** + * An instance of the SMTP sender class. + * + * @var SMTP + */ + protected $smtp; + + /** + * The array of 'to' names and addresses. + * + * @var array + */ + protected $to = []; + + /** + * The array of 'cc' names and addresses. + * + * @var array + */ + protected $cc = []; + + /** + * The array of 'bcc' names and addresses. + * + * @var array + */ + protected $bcc = []; + + /** + * The array of reply-to names and addresses. + * + * @var array + */ + protected $ReplyTo = []; + + /** + * An array of all kinds of addresses. + * Includes all of $to, $cc, $bcc. + * + * @see PHPMailer::$to + * @see PHPMailer::$cc + * @see PHPMailer::$bcc + * + * @var array + */ + protected $all_recipients = []; + + /** + * An array of names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $all_recipients + * and one of $to, $cc, or $bcc. + * This array is used only for addresses with IDN. + * + * @see PHPMailer::$to + * @see PHPMailer::$cc + * @see PHPMailer::$bcc + * @see PHPMailer::$all_recipients + * + * @var array + */ + protected $RecipientsQueue = []; + + /** + * An array of reply-to names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $ReplyTo. + * This array is used only for addresses with IDN. + * + * @see PHPMailer::$ReplyTo + * + * @var array + */ + protected $ReplyToQueue = []; + + /** + * The array of attachments. + * + * @var array + */ + protected $attachment = []; + + /** + * The array of custom headers. + * + * @var array + */ + protected $CustomHeader = []; + + /** + * The most recent Message-ID (including angular brackets). + * + * @var string + */ + protected $lastMessageID = ''; + + /** + * The message's MIME type. + * + * @var string + */ + protected $message_type = ''; + + /** + * The array of MIME boundary strings. + * + * @var array + */ + protected $boundary = []; + + /** + * The array of available text strings for the current language. + * + * @var array + */ + protected $language = []; + + /** + * The number of errors encountered. + * + * @var int + */ + protected $error_count = 0; + + /** + * The S/MIME certificate file path. + * + * @var string + */ + protected $sign_cert_file = ''; + + /** + * The S/MIME key file path. + * + * @var string + */ + protected $sign_key_file = ''; + + /** + * The optional S/MIME extra certificates ("CA Chain") file path. + * + * @var string + */ + protected $sign_extracerts_file = ''; + + /** + * The S/MIME password for the key. + * Used only if the key is encrypted. + * + * @var string + */ + protected $sign_key_pass = ''; + + /** + * Whether to throw exceptions for errors. + * + * @var bool + */ + protected $exceptions = false; + + /** + * Unique ID used for message ID and boundaries. + * + * @var string + */ + protected $uniqueid = ''; + + /** + * The PHPMailer Version number. + * + * @var string + */ + const VERSION = '6.9.1'; + + /** + * Error severity: message only, continue processing. + * + * @var int + */ + const STOP_MESSAGE = 0; + + /** + * Error severity: message, likely ok to continue processing. + * + * @var int + */ + const STOP_CONTINUE = 1; + + /** + * Error severity: message, plus full stop, critical error reached. + * + * @var int + */ + const STOP_CRITICAL = 2; + + /** + * The SMTP standard CRLF line break. + * If you want to change line break format, change static::$LE, not this. + */ + const CRLF = "\r\n"; + + /** + * "Folding White Space" a white space string used for line folding. + */ + const FWS = ' '; + + /** + * SMTP RFC standard line ending; Carriage Return, Line Feed. + * + * @var string + */ + protected static $LE = self::CRLF; + + /** + * The maximum line length supported by mail(). + * + * Background: mail() will sometimes corrupt messages + * with headers longer than 65 chars, see #818. + * + * @var int + */ + const MAIL_MAX_LINE_LENGTH = 63; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1. + * + * @var int + */ + const MAX_LINE_LENGTH = 998; + + /** + * The lower maximum line length allowed by RFC 2822 section 2.1.1. + * This length does NOT include the line break + * 76 means that lines will be 77 or 78 chars depending on whether + * the line break format is LF or CRLF; both are valid. + * + * @var int + */ + const STD_LINE_LENGTH = 76; + + /** + * Constructor. + * + * @param bool $exceptions Should we throw external exceptions? + */ + public function __construct($exceptions = null) + { + if (null !== $exceptions) { + $this->exceptions = (bool) $exceptions; + } + //Pick an appropriate debug output format automatically + $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html'); + } + + /** + * Destructor. + */ + public function __destruct() + { + //Close any open SMTP connection nicely + $this->smtpClose(); + } + + /** + * Call mail() in a safe_mode-aware fashion. + * Also, unless sendmail_path points to sendmail (or something that + * claims to be sendmail), don't pass params (not a perfect fix, + * but it will do). + * + * @param string $to To + * @param string $subject Subject + * @param string $body Message Body + * @param string $header Additional Header(s) + * @param string|null $params Params + * + * @return bool + */ + private function mailPassthru($to, $subject, $body, $header, $params) + { + //Check overloading of mail function to avoid double-encoding + if ((int)ini_get('mbstring.func_overload') & 1) { + $subject = $this->secureHeader($subject); + } else { + $subject = $this->encodeHeader($this->secureHeader($subject)); + } + //Calling mail() with null params breaks + $this->edebug('Sending with mail()'); + $this->edebug('Sendmail path: ' . ini_get('sendmail_path')); + $this->edebug("Envelope sender: {$this->Sender}"); + $this->edebug("To: {$to}"); + $this->edebug("Subject: {$subject}"); + $this->edebug("Headers: {$header}"); + if (!$this->UseSendmailOptions || null === $params) { + $result = @mail($to, $subject, $body, $header); + } else { + $this->edebug("Additional params: {$params}"); + $result = @mail($to, $subject, $body, $header, $params); + } + $this->edebug('Result: ' . ($result ? 'true' : 'false')); + return $result; + } + + /** + * Output debugging info via a user-defined method. + * Only generates output if debug output is enabled. + * + * @see PHPMailer::$Debugoutput + * @see PHPMailer::$SMTPDebug + * + * @param string $str + */ + protected function edebug($str) + { + if ($this->SMTPDebug <= 0) { + return; + } + //Is this a PSR-3 logger? + if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) { + $this->Debugoutput->debug($str); + + return; + } + //Avoid clash with built-in function names + if (is_callable($this->Debugoutput) && !in_array($this->Debugoutput, ['error_log', 'html', 'echo'])) { + call_user_func($this->Debugoutput, $str, $this->SMTPDebug); + + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + /** @noinspection ForgottenDebugOutputInspection */ + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ), "
    \n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/\r\n|\r/m', "\n", $str); + echo gmdate('Y-m-d H:i:s'), + "\t", + //Trim trailing space + trim( + //Indent for readability, except for trailing break + str_replace( + "\n", + "\n \t ", + trim($str) + ) + ), + "\n"; + } + } + + /** + * Sets message type to HTML or plain. + * + * @param bool $isHtml True for HTML mode + */ + public function isHTML($isHtml = true) + { + if ($isHtml) { + $this->ContentType = static::CONTENT_TYPE_TEXT_HTML; + } else { + $this->ContentType = static::CONTENT_TYPE_PLAINTEXT; + } + } + + /** + * Send messages using SMTP. + */ + public function isSMTP() + { + $this->Mailer = 'smtp'; + } + + /** + * Send messages using PHP's mail() function. + */ + public function isMail() + { + $this->Mailer = 'mail'; + } + + /** + * Send messages using $Sendmail. + */ + public function isSendmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (false === stripos($ini_sendmail_path, 'sendmail')) { + $this->Sendmail = '/usr/sbin/sendmail'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'sendmail'; + } + + /** + * Send messages using qmail. + */ + public function isQmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (false === stripos($ini_sendmail_path, 'qmail')) { + $this->Sendmail = '/var/qmail/bin/qmail-inject'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'qmail'; + } + + /** + * Add a "To" address. + * + * @param string $address The email address to send to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addAddress($address, $name = '') + { + return $this->addOrEnqueueAnAddress('to', $address, $name); + } + + /** + * Add a "CC" address. + * + * @param string $address The email address to send to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('cc', $address, $name); + } + + /** + * Add a "BCC" address. + * + * @param string $address The email address to send to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addBCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('bcc', $address, $name); + } + + /** + * Add a "Reply-To" address. + * + * @param string $address The email address to reply to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addReplyTo($address, $name = '') + { + return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer + * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still + * be modified after calling this function), addition of such addresses is delayed until send(). + * Addresses that have been added already return false, but do not throw exceptions. + * + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address + * @param string $name An optional username associated with the address + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + protected function addOrEnqueueAnAddress($kind, $address, $name) + { + $pos = false; + if ($address !== null) { + $address = trim($address); + $pos = strrpos($address, '@'); + } + if (false === $pos) { + //At-sign is missing. + $error_message = sprintf( + '%s (%s): %s', + $this->lang('invalid_address'), + $kind, + $address + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + if ($name !== null && is_string($name)) { + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + } else { + $name = ''; + } + $params = [$kind, $address, $name]; + //Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + //Domain is assumed to be whatever is after the last @ symbol in the address + if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) { + if ('Reply-To' !== $kind) { + if (!array_key_exists($address, $this->RecipientsQueue)) { + $this->RecipientsQueue[$address] = $params; + + return true; + } + } elseif (!array_key_exists($address, $this->ReplyToQueue)) { + $this->ReplyToQueue[$address] = $params; + + return true; + } + + return false; + } + + //Immediately add standard addresses without IDN. + return call_user_func_array([$this, 'addAnAddress'], $params); + } + + /** + * Set the boundaries to use for delimiting MIME parts. + * If you override this, ensure you set all 3 boundaries to unique values. + * The default boundaries include a "=_" sequence which cannot occur in quoted-printable bodies, + * as suggested by https://www.rfc-editor.org/rfc/rfc2045#section-6.7 + * + * @return void + */ + public function setBoundaries() + { + $this->uniqueid = $this->generateId(); + $this->boundary[1] = 'b1=_' . $this->uniqueid; + $this->boundary[2] = 'b2=_' . $this->uniqueid; + $this->boundary[3] = 'b3=_' . $this->uniqueid; + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. + * Addresses that have been added already return false, but do not throw exceptions. + * + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + protected function addAnAddress($kind, $address, $name = '') + { + if (!in_array($kind, ['to', 'cc', 'bcc', 'Reply-To'])) { + $error_message = sprintf( + '%s: %s', + $this->lang('Invalid recipient kind'), + $kind + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + if (!static::validateAddress($address)) { + $error_message = sprintf( + '%s (%s): %s', + $this->lang('invalid_address'), + $kind, + $address + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + if ('Reply-To' !== $kind) { + if (!array_key_exists(strtolower($address), $this->all_recipients)) { + $this->{$kind}[] = [$address, $name]; + $this->all_recipients[strtolower($address)] = true; + + return true; + } + } elseif (!array_key_exists(strtolower($address), $this->ReplyTo)) { + $this->ReplyTo[strtolower($address)] = [$address, $name]; + + return true; + } + + return false; + } + + /** + * Parse and validate a string containing one or more RFC822-style comma-separated email addresses + * of the form "display name
    " into an array of name/address pairs. + * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. + * Note that quotes in the name part are removed. + * + * @see http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation + * + * @param string $addrstr The address list string + * @param bool $useimap Whether to use the IMAP extension to parse the list + * @param string $charset The charset to use when decoding the address list string. + * + * @return array + */ + public static function parseAddresses($addrstr, $useimap = true, $charset = self::CHARSET_ISO88591) + { + $addresses = []; + if ($useimap && function_exists('imap_rfc822_parse_adrlist')) { + //Use this built-in parser if it's available + $list = imap_rfc822_parse_adrlist($addrstr, ''); + // Clear any potential IMAP errors to get rid of notices being thrown at end of script. + imap_errors(); + foreach ($list as $address) { + if ( + '.SYNTAX-ERROR.' !== $address->host && + static::validateAddress($address->mailbox . '@' . $address->host) + ) { + //Decode the name part if it's present and encoded + if ( + property_exists($address, 'personal') && + //Check for a Mbstring constant rather than using extension_loaded, which is sometimes disabled + defined('MB_CASE_UPPER') && + preg_match('/^=\?.*\?=$/s', $address->personal) + ) { + $origCharset = mb_internal_encoding(); + mb_internal_encoding($charset); + //Undo any RFC2047-encoded spaces-as-underscores + $address->personal = str_replace('_', '=20', $address->personal); + //Decode the name + $address->personal = mb_decode_mimeheader($address->personal); + mb_internal_encoding($origCharset); + } + + $addresses[] = [ + 'name' => (property_exists($address, 'personal') ? $address->personal : ''), + 'address' => $address->mailbox . '@' . $address->host, + ]; + } + } + } else { + //Use this simpler parser + $list = explode(',', $addrstr); + foreach ($list as $address) { + $address = trim($address); + //Is there a separate name part? + if (strpos($address, '<') === false) { + //No separate name, just use the whole thing + if (static::validateAddress($address)) { + $addresses[] = [ + 'name' => '', + 'address' => $address, + ]; + } + } else { + list($name, $email) = explode('<', $address); + $email = trim(str_replace('>', '', $email)); + $name = trim($name); + if (static::validateAddress($email)) { + //Check for a Mbstring constant rather than using extension_loaded, which is sometimes disabled + //If this name is encoded, decode it + if (defined('MB_CASE_UPPER') && preg_match('/^=\?.*\?=$/s', $name)) { + $origCharset = mb_internal_encoding(); + mb_internal_encoding($charset); + //Undo any RFC2047-encoded spaces-as-underscores + $name = str_replace('_', '=20', $name); + //Decode the name + $name = mb_decode_mimeheader($name); + mb_internal_encoding($origCharset); + } + $addresses[] = [ + //Remove any surrounding quotes and spaces from the name + 'name' => trim($name, '\'" '), + 'address' => $email, + ]; + } + } + } + } + + return $addresses; + } + + /** + * Set the From and FromName properties. + * + * @param string $address + * @param string $name + * @param bool $auto Whether to also set the Sender address, defaults to true + * + * @throws Exception + * + * @return bool + */ + public function setFrom($address, $name = '', $auto = true) + { + $address = trim((string)$address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + //Don't validate now addresses with IDN. Will be done in send(). + $pos = strrpos($address, '@'); + if ( + (false === $pos) + || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported()) + && !static::validateAddress($address)) + ) { + $error_message = sprintf( + '%s (From): %s', + $this->lang('invalid_address'), + $address + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + $this->From = $address; + $this->FromName = $name; + if ($auto && empty($this->Sender)) { + $this->Sender = $address; + } + + return true; + } + + /** + * Return the Message-ID header of the last email. + * Technically this is the value from the last time the headers were created, + * but it's also the message ID of the last sent message except in + * pathological cases. + * + * @return string + */ + public function getLastMessageID() + { + return $this->lastMessageID; + } + + /** + * Check that a string looks like an email address. + * Validation patterns supported: + * * `auto` Pick best pattern automatically; + * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0; + * * `pcre` Use old PCRE implementation; + * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; + * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. + * * `noregex` Don't use a regex: super fast, really dumb. + * Alternatively you may pass in a callable to inject your own validator, for example: + * + * ```php + * PHPMailer::validateAddress('user@example.com', function($address) { + * return (strpos($address, '@') !== false); + * }); + * ``` + * + * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. + * + * @param string $address The email address to check + * @param string|callable $patternselect Which pattern to use + * + * @return bool + */ + public static function validateAddress($address, $patternselect = null) + { + if (null === $patternselect) { + $patternselect = static::$validator; + } + //Don't allow strings as callables, see SECURITY.md and CVE-2021-3603 + if (is_callable($patternselect) && !is_string($patternselect)) { + return call_user_func($patternselect, $address); + } + //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 + if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) { + return false; + } + switch ($patternselect) { + case 'pcre': //Kept for BC + case 'pcre8': + /* + * A more complex and more permissive version of the RFC5322 regex on which FILTER_VALIDATE_EMAIL + * is based. + * In addition to the addresses allowed by filter_var, also permits: + * * dotless domains: `a@b` + * * comments: `1234 @ local(blah) .machine .example` + * * quoted elements: `'"test blah"@example.org'` + * * numeric TLDs: `a@b.123` + * * unbracketed IPv4 literals: `a@192.168.0.1` + * * IPv6 literals: 'first.last@[IPv6:a1::]' + * Not all of these will necessarily work for sending! + * + * @see http://squiloople.com/2009/12/20/email-address-validation/ + * @copyright 2009-2010 Michael Rushton + * Feel free to use and redistribute this code. But please keep this copyright notice. + */ + return (bool) preg_match( + '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . + '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . + '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . + '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . + '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . + '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . + '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . + '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', + $address + ); + case 'html5': + /* + * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. + * + * @see https://html.spec.whatwg.org/#e-mail-state-(type=email) + */ + return (bool) preg_match( + '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . + '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', + $address + ); + case 'php': + default: + return filter_var($address, FILTER_VALIDATE_EMAIL) !== false; + } + } + + /** + * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the + * `intl` and `mbstring` PHP extensions. + * + * @return bool `true` if required functions for IDN support are present + */ + public static function idnSupported() + { + return function_exists('idn_to_ascii') && function_exists('mb_convert_encoding'); + } + + /** + * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. + * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. + * This function silently returns unmodified address if: + * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) + * - Conversion to punycode is impossible (e.g. required PHP functions are not available) + * or fails for any reason (e.g. domain contains characters not allowed in an IDN). + * + * @see PHPMailer::$CharSet + * + * @param string $address The email address to convert + * + * @return string The encoded address in ASCII form + */ + public function punyencodeAddress($address) + { + //Verify we have required functions, CharSet, and at-sign. + $pos = strrpos($address, '@'); + if ( + !empty($this->CharSet) && + false !== $pos && + static::idnSupported() + ) { + $domain = substr($address, ++$pos); + //Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + if ($this->has8bitChars($domain) && @mb_check_encoding($domain, $this->CharSet)) { + //Convert the domain from whatever charset it's in to UTF-8 + $domain = mb_convert_encoding($domain, self::CHARSET_UTF8, $this->CharSet); + //Ignore IDE complaints about this line - method signature changed in PHP 5.4 + $errorcode = 0; + if (defined('INTL_IDNA_VARIANT_UTS46')) { + //Use the current punycode standard (appeared in PHP 7.2) + $punycode = idn_to_ascii( + $domain, + \IDNA_DEFAULT | \IDNA_USE_STD3_RULES | \IDNA_CHECK_BIDI | + \IDNA_CHECK_CONTEXTJ | \IDNA_NONTRANSITIONAL_TO_ASCII, + \INTL_IDNA_VARIANT_UTS46 + ); + } elseif (defined('INTL_IDNA_VARIANT_2003')) { + //Fall back to this old, deprecated/removed encoding + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_2003); + } else { + //Fall back to a default we don't know about + $punycode = idn_to_ascii($domain, $errorcode); + } + if (false !== $punycode) { + return substr($address, 0, $pos) . $punycode; + } + } + } + + return $address; + } + + /** + * Create a message and send it. + * Uses the sending method specified by $Mailer. + * + * @throws Exception + * + * @return bool false on error - See the ErrorInfo property for details of the error + */ + public function send() + { + try { + if (!$this->preSend()) { + return false; + } + + return $this->postSend(); + } catch (Exception $exc) { + $this->mailHeader = ''; + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + + return false; + } + } + + /** + * Prepare a message for sending. + * + * @throws Exception + * + * @return bool + */ + public function preSend() + { + if ( + 'smtp' === $this->Mailer + || ('mail' === $this->Mailer && (\PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) + ) { + //SMTP mandates RFC-compliant line endings + //and it's also used with mail() on Windows + static::setLE(self::CRLF); + } else { + //Maintain backward compatibility with legacy Linux command line mailers + static::setLE(PHP_EOL); + } + //Check for buggy PHP versions that add a header with an incorrect line break + if ( + 'mail' === $this->Mailer + && ((\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70017) + || (\PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70103)) + && ini_get('mail.add_x_header') === '1' + && stripos(PHP_OS, 'WIN') === 0 + ) { + trigger_error($this->lang('buggy_php'), E_USER_WARNING); + } + + try { + $this->error_count = 0; //Reset errors + $this->mailHeader = ''; + + //Dequeue recipient and Reply-To addresses with IDN + foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { + $params[1] = $this->punyencodeAddress($params[1]); + call_user_func_array([$this, 'addAnAddress'], $params); + } + if (count($this->to) + count($this->cc) + count($this->bcc) < 1) { + throw new Exception($this->lang('provide_address'), self::STOP_CRITICAL); + } + + //Validate From, Sender, and ConfirmReadingTo addresses + foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { + if ($this->{$address_kind} === null) { + $this->{$address_kind} = ''; + continue; + } + $this->{$address_kind} = trim($this->{$address_kind}); + if (empty($this->{$address_kind})) { + continue; + } + $this->{$address_kind} = $this->punyencodeAddress($this->{$address_kind}); + if (!static::validateAddress($this->{$address_kind})) { + $error_message = sprintf( + '%s (%s): %s', + $this->lang('invalid_address'), + $address_kind, + $this->{$address_kind} + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + } + + //Set whether the message is multipart/alternative + if ($this->alternativeExists()) { + $this->ContentType = static::CONTENT_TYPE_MULTIPART_ALTERNATIVE; + } + + $this->setMessageType(); + //Refuse to send an empty message unless we are specifically allowing it + if (!$this->AllowEmpty && empty($this->Body)) { + throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL); + } + + //Trim subject consistently + $this->Subject = trim($this->Subject); + //Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + $this->MIMEHeader = ''; + $this->MIMEBody = $this->createBody(); + //createBody may have added some headers, so retain them + $tempheaders = $this->MIMEHeader; + $this->MIMEHeader = $this->createHeader(); + $this->MIMEHeader .= $tempheaders; + + //To capture the complete message when using mail(), create + //an extra header list which createHeader() doesn't fold in + if ('mail' === $this->Mailer) { + if (count($this->to) > 0) { + $this->mailHeader .= $this->addrAppend('To', $this->to); + } else { + $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + $this->mailHeader .= $this->headerLine( + 'Subject', + $this->encodeHeader($this->secureHeader($this->Subject)) + ); + } + + //Sign with DKIM if enabled + if ( + !empty($this->DKIM_domain) + && !empty($this->DKIM_selector) + && (!empty($this->DKIM_private_string) + || (!empty($this->DKIM_private) + && static::isPermittedPath($this->DKIM_private) + && file_exists($this->DKIM_private) + ) + ) + ) { + $header_dkim = $this->DKIM_Add( + $this->MIMEHeader . $this->mailHeader, + $this->encodeHeader($this->secureHeader($this->Subject)), + $this->MIMEBody + ); + $this->MIMEHeader = static::stripTrailingWSP($this->MIMEHeader) . static::$LE . + static::normalizeBreaks($header_dkim) . static::$LE; + } + + return true; + } catch (Exception $exc) { + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + + return false; + } + } + + /** + * Actually send a message via the selected mechanism. + * + * @throws Exception + * + * @return bool + */ + public function postSend() + { + try { + //Choose the mailer and send through it + switch ($this->Mailer) { + case 'sendmail': + case 'qmail': + return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); + case 'smtp': + return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); + case 'mail': + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + default: + $sendMethod = $this->Mailer . 'Send'; + if (method_exists($this, $sendMethod)) { + return $this->{$sendMethod}($this->MIMEHeader, $this->MIMEBody); + } + + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + } + } catch (Exception $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true && $this->smtp->connected()) { + $this->smtp->reset(); + } + if ($this->exceptions) { + throw $exc; + } + } + + return false; + } + + /** + * Send mail using the $Sendmail program. + * + * @see PHPMailer::$Sendmail + * + * @param string $header The message headers + * @param string $body The message body + * + * @throws Exception + * + * @return bool + */ + protected function sendmailSend($header, $body) + { + if ($this->Mailer === 'qmail') { + $this->edebug('Sending with qmail'); + } else { + $this->edebug('Sending with sendmail'); + } + $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + //A space after `-f` is optional, but there is a long history of its presence + //causing problems, so we don't use one + //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html + //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html + //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html + //Example problem: https://www.drupal.org/node/1057954 + + //PHP 5.6 workaround + $sendmail_from_value = ini_get('sendmail_from'); + if (empty($this->Sender) && !empty($sendmail_from_value)) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); + } + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { + if ($this->Mailer === 'qmail') { + $sendmailFmt = '%s -f%s'; + } else { + $sendmailFmt = '%s -oi -f%s -t'; + } + } else { + //allow sendmail to choose a default envelope sender. It may + //seem preferable to force it to use the From header as with + //SMTP, but that introduces new problems (see + //), and + //it has historically worked this way. + $sendmailFmt = '%s -oi -t'; + } + + $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + $this->edebug('Sendmail path: ' . $this->Sendmail); + $this->edebug('Sendmail command: ' . $sendmail); + $this->edebug('Envelope sender: ' . $this->Sender); + $this->edebug("Headers: {$header}"); + + if ($this->SingleTo) { + foreach ($this->SingleToArray as $toAddr) { + $mail = @popen($sendmail, 'w'); + if (!$mail) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + $this->edebug("To: {$toAddr}"); + fwrite($mail, 'To: ' . $toAddr . "\n"); + fwrite($mail, $header); + fwrite($mail, $body); + $result = pclose($mail); + $addrinfo = static::parseAddresses($toAddr, true, $this->CharSet); + $this->doCallback( + ($result === 0), + [[$addrinfo['address'], $addrinfo['name']]], + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); + if (0 !== $result) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + } else { + $mail = @popen($sendmail, 'w'); + if (!$mail) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fwrite($mail, $header); + fwrite($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result === 0), + $this->to, + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); + if (0 !== $result) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + + return true; + } + + /** + * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. + * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. + * + * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report + * + * @param string $string The string to be validated + * + * @return bool + */ + protected static function isShellSafe($string) + { + //It's not possible to use shell commands safely (which includes the mail() function) without escapeshellarg, + //but some hosting providers disable it, creating a security problem that we don't want to have to deal with, + //so we don't. + if (!function_exists('escapeshellarg') || !function_exists('escapeshellcmd')) { + return false; + } + + if ( + escapeshellcmd($string) !== $string + || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) + ) { + return false; + } + + $length = strlen($string); + + for ($i = 0; $i < $length; ++$i) { + $c = $string[$i]; + + //All other characters have a special meaning in at least one common shell, including = and +. + //Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + //Note that this does permit non-Latin alphanumeric characters based on the current locale. + if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { + return false; + } + } + + return true; + } + + /** + * Check whether a file path is of a permitted type. + * Used to reject URLs and phar files from functions that access local file paths, + * such as addAttachment. + * + * @param string $path A relative or absolute path to a file + * + * @return bool + */ + protected static function isPermittedPath($path) + { + //Matches scheme definition from https://tools.ietf.org/html/rfc3986#section-3.1 + return !preg_match('#^[a-z][a-z\d+.-]*://#i', $path); + } + + /** + * Check whether a file path is safe, accessible, and readable. + * + * @param string $path A relative or absolute path to a file + * + * @return bool + */ + protected static function fileIsAccessible($path) + { + if (!static::isPermittedPath($path)) { + return false; + } + $readable = is_file($path); + //If not a UNC path (expected to start with \\), check read permission, see #2069 + if (strpos($path, '\\\\') !== 0) { + $readable = $readable && is_readable($path); + } + return $readable; + } + + /** + * Send mail using the PHP mail() function. + * + * @see http://www.php.net/manual/en/book.mail.php + * + * @param string $header The message headers + * @param string $body The message body + * + * @throws Exception + * + * @return bool + */ + protected function mailSend($header, $body) + { + $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; + + $toArr = []; + foreach ($this->to as $toaddr) { + $toArr[] = $this->addrFormat($toaddr); + } + $to = trim(implode(', ', $toArr)); + + //If there are no To-addresses (e.g. when sending only to BCC-addresses) + //the following should be added to get a correct DKIM-signature. + //Compare with $this->preSend() + if ($to === '') { + $to = 'undisclosed-recipients:;'; + } + + $params = null; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + //A space after `-f` is optional, but there is a long history of its presence + //causing problems, so we don't use one + //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html + //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html + //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html + //Example problem: https://www.drupal.org/node/1057954 + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + + //PHP 5.6 workaround + $sendmail_from_value = ini_get('sendmail_from'); + if (empty($this->Sender) && !empty($sendmail_from_value)) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); + } + if (!empty($this->Sender) && static::validateAddress($this->Sender)) { + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + } + $result = false; + if ($this->SingleTo && count($toArr) > 1) { + foreach ($toArr as $toAddr) { + $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); + $addrinfo = static::parseAddresses($toAddr, true, $this->CharSet); + $this->doCallback( + $result, + [[$addrinfo['address'], $addrinfo['name']]], + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); + } + } else { + $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); + $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); + } + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + if (!$result) { + throw new Exception($this->lang('instantiate'), self::STOP_CRITICAL); + } + + return true; + } + + /** + * Get an instance to use for SMTP operations. + * Override this function to load your own SMTP implementation, + * or set one with setSMTPInstance. + * + * @return SMTP + */ + public function getSMTPInstance() + { + if (!is_object($this->smtp)) { + $this->smtp = new SMTP(); + } + + return $this->smtp; + } + + /** + * Provide an instance to use for SMTP operations. + * + * @return SMTP + */ + public function setSMTPInstance(SMTP $smtp) + { + $this->smtp = $smtp; + + return $this->smtp; + } + + /** + * Provide SMTP XCLIENT attributes + * + * @param string $name Attribute name + * @param ?string $value Attribute value + * + * @return bool + */ + public function setSMTPXclientAttribute($name, $value) + { + if (!in_array($name, SMTP::$xclient_allowed_attributes)) { + return false; + } + if (isset($this->SMTPXClient[$name]) && $value === null) { + unset($this->SMTPXClient[$name]); + } elseif ($value !== null) { + $this->SMTPXClient[$name] = $value; + } + + return true; + } + + /** + * Get SMTP XCLIENT attributes + * + * @return array + */ + public function getSMTPXclientAttributes() + { + return $this->SMTPXClient; + } + + /** + * Send mail via SMTP. + * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. + * + * @see PHPMailer::setSMTPInstance() to use a different class. + * + * @uses \PHPMailer\PHPMailer\SMTP + * + * @param string $header The message headers + * @param string $body The message body + * + * @throws Exception + * + * @return bool + */ + protected function smtpSend($header, $body) + { + $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; + $bad_rcpt = []; + if (!$this->smtpConnect($this->SMTPOptions)) { + throw new Exception($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); + } + //Sender already validated in preSend() + if ('' === $this->Sender) { + $smtp_from = $this->From; + } else { + $smtp_from = $this->Sender; + } + if (count($this->SMTPXClient)) { + $this->smtp->xclient($this->SMTPXClient); + } + if (!$this->smtp->mail($smtp_from)) { + $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); + throw new Exception($this->ErrorInfo, self::STOP_CRITICAL); + } + + $callbacks = []; + //Attempt to send to all recipients + foreach ([$this->to, $this->cc, $this->bcc] as $togroup) { + foreach ($togroup as $to) { + if (!$this->smtp->recipient($to[0], $this->dsn)) { + $error = $this->smtp->getError(); + $bad_rcpt[] = ['to' => $to[0], 'error' => $error['detail']]; + $isSent = false; + } else { + $isSent = true; + } + + $callbacks[] = ['issent' => $isSent, 'to' => $to[0], 'name' => $to[1]]; + } + } + + //Only send the DATA command if we have viable recipients + if ((count($this->all_recipients) > count($bad_rcpt)) && !$this->smtp->data($header . $body)) { + throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL); + } + + $smtp_transaction_id = $this->smtp->getLastTransactionID(); + + if ($this->SMTPKeepAlive) { + $this->smtp->reset(); + } else { + $this->smtp->quit(); + $this->smtp->close(); + } + + foreach ($callbacks as $cb) { + $this->doCallback( + $cb['issent'], + [[$cb['to'], $cb['name']]], + [], + [], + $this->Subject, + $body, + $this->From, + ['smtp_transaction_id' => $smtp_transaction_id] + ); + } + + //Create error message for any bad addresses + if (count($bad_rcpt) > 0) { + $errstr = ''; + foreach ($bad_rcpt as $bad) { + $errstr .= $bad['to'] . ': ' . $bad['error']; + } + throw new Exception($this->lang('recipients_failed') . $errstr, self::STOP_CONTINUE); + } + + return true; + } + + /** + * Initiate a connection to an SMTP server. + * Returns false if the operation failed. + * + * @param array $options An array of options compatible with stream_context_create() + * + * @throws Exception + * + * @uses \PHPMailer\PHPMailer\SMTP + * + * @return bool + */ + public function smtpConnect($options = null) + { + if (null === $this->smtp) { + $this->smtp = $this->getSMTPInstance(); + } + + //If no options are provided, use whatever is set in the instance + if (null === $options) { + $options = $this->SMTPOptions; + } + + //Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + if ($this->Host === null) { + $this->Host = 'localhost'; + } + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = []; + if ( + !preg_match( + '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', + trim($hostentry), + $hostinfo + ) + ) { + $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry)); + //Not a valid host entry + continue; + } + //$hostinfo[1]: optional ssl or tls prefix + //$hostinfo[2]: the hostname + //$hostinfo[3]: optional port number + //The host string prefix can temporarily override the current setting for SMTPSecure + //If it's not specified, the default value is used + + //Check the host name is a valid name or IP address before trying to use it + if (!static::isValidHost($hostinfo[2])) { + $this->edebug($this->lang('invalid_host') . ' ' . $hostinfo[2]); + continue; + } + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = (static::ENCRYPTION_STARTTLS === $this->SMTPSecure); + if ('ssl' === $hostinfo[1] || ('' === $hostinfo[1] && static::ENCRYPTION_SMTPS === $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; //Can't have SSL and TLS at the same time + $secure = static::ENCRYPTION_SMTPS; + } elseif ('tls' === $hostinfo[1]) { + $tls = true; + //TLS doesn't use a prefix + $secure = static::ENCRYPTION_STARTTLS; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA256'); + if (static::ENCRYPTION_STARTTLS === $secure || static::ENCRYPTION_SMTPS === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new Exception($this->lang('extension_missing') . 'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[2]; + $port = $this->Port; + if ( + array_key_exists(3, $hostinfo) && + is_numeric($hostinfo[3]) && + $hostinfo[3] > 0 && + $hostinfo[3] < 65536 + ) { + $port = (int) $hostinfo[3]; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + //* it's not disabled + //* we are not connecting to localhost + //* we have openssl extension + //* we are not already using SSL + //* the server offers STARTTLS + if ( + $this->SMTPAutoTLS && + $this->Host !== 'localhost' && + $sslext && + $secure !== 'ssl' && + $this->smtp->getServerExt('STARTTLS') + ) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + $message = $this->getSmtpErrorMessage('connect_host'); + throw new Exception($message); + } + //We must resend EHLO after TLS negotiation + $this->smtp->hello($hello); + } + if ( + $this->SMTPAuth && !$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->oauth + ) + ) { + throw new Exception($this->lang('authenticate')); + } + + return true; + } catch (Exception $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + //We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + //If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + //As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions && null !== $lastexception) { + throw $lastexception; + } + if ($this->exceptions) { + // no exception was thrown, likely $this->smtp->connect() failed + $message = $this->getSmtpErrorMessage('connect_host'); + throw new Exception($message); + } + + return false; + } + + /** + * Close the active SMTP session if one exists. + */ + public function smtpClose() + { + if ((null !== $this->smtp) && $this->smtp->connected()) { + $this->smtp->quit(); + $this->smtp->close(); + } + } + + /** + * Set the language for error messages. + * The default language is English. + * + * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") + * Optionally, the language code can be enhanced with a 4-character + * script annotation and/or a 2-character country annotation. + * @param string $lang_path Path to the language file directory, with trailing separator (slash) + * Do not set this from user input! + * + * @return bool Returns true if the requested language was loaded, false otherwise. + */ + public function setLanguage($langcode = 'en', $lang_path = '') + { + //Backwards compatibility for renamed language codes + $renamed_langcodes = [ + 'br' => 'pt_br', + 'cz' => 'cs', + 'dk' => 'da', + 'no' => 'nb', + 'se' => 'sv', + 'rs' => 'sr', + 'tg' => 'tl', + 'am' => 'hy', + ]; + + if (array_key_exists($langcode, $renamed_langcodes)) { + $langcode = $renamed_langcodes[$langcode]; + } + + //Define full set of translatable strings in English + $PHPMAILER_LANG = [ + 'authenticate' => 'SMTP Error: Could not authenticate.', + 'buggy_php' => 'Your version of PHP is affected by a bug that may result in corrupted messages.' . + ' To fix it, switch to sending using SMTP, disable the mail.add_x_header option in' . + ' your php.ini, switch to MacOS or Linux, or upgrade your PHP to version 7.0.17+ or 7.1.3+.', + 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', + 'data_not_accepted' => 'SMTP Error: data not accepted.', + 'empty_message' => 'Message body empty', + 'encoding' => 'Unknown encoding: ', + 'execute' => 'Could not execute: ', + 'extension_missing' => 'Extension missing: ', + 'file_access' => 'Could not access file: ', + 'file_open' => 'File Error: Could not open file: ', + 'from_failed' => 'The following From address failed: ', + 'instantiate' => 'Could not instantiate mail function.', + 'invalid_address' => 'Invalid address: ', + 'invalid_header' => 'Invalid header name or value', + 'invalid_hostentry' => 'Invalid hostentry: ', + 'invalid_host' => 'Invalid host: ', + 'mailer_not_supported' => ' mailer is not supported.', + 'provide_address' => 'You must provide at least one recipient email address.', + 'recipients_failed' => 'SMTP Error: The following recipients failed: ', + 'signing' => 'Signing Error: ', + 'smtp_code' => 'SMTP code: ', + 'smtp_code_ex' => 'Additional SMTP info: ', + 'smtp_connect_failed' => 'SMTP connect() failed.', + 'smtp_detail' => 'Detail: ', + 'smtp_error' => 'SMTP server error: ', + 'variable_set' => 'Cannot set or reset variable: ', + ]; + if (empty($lang_path)) { + //Calculate an absolute path so it can work if CWD is not here + $lang_path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR; + } + + //Validate $langcode + $foundlang = true; + $langcode = strtolower($langcode); + if ( + !preg_match('/^(?P[a-z]{2})(?P + + + + + + $icon): ?> + + + + + + + + + + + + +
    + + + + + + + + $js): ?> + + + + + + + + + diff --git a/kirby/views/php.php b/kirby/views/php.php new file mode 100644 index 0000000..3eefa03 --- /dev/null +++ b/kirby/views/php.php @@ -0,0 +1,11 @@ + + +

    + This page is currently offline. We are very sorry for the inconvenience and will fix it as soon as possible. +

    +

    + Advice for developers and administrators:
    + Change the PHP version to one supported by your version of Kirby +

    + + diff --git a/kirby/views/snippets/footer.php b/kirby/views/snippets/footer.php new file mode 100644 index 0000000..308b1d0 --- /dev/null +++ b/kirby/views/snippets/footer.php @@ -0,0 +1,2 @@ + + diff --git a/kirby/views/snippets/header.php b/kirby/views/snippets/header.php new file mode 100644 index 0000000..5592609 --- /dev/null +++ b/kirby/views/snippets/header.php @@ -0,0 +1,42 @@ + + + + + + + Error + + + + + diff --git a/media/index.html b/media/index.html new file mode 100644 index 0000000..e69de29 diff --git a/site/accounts/index.html b/site/accounts/index.html new file mode 100644 index 0000000..e69de29 diff --git a/site/blueprints/files/default.yml b/site/blueprints/files/default.yml new file mode 100644 index 0000000..1b79e98 --- /dev/null +++ b/site/blueprints/files/default.yml @@ -0,0 +1,12 @@ +fields: + crop: + width: 1/3 + label: Image Crop + type: imagecrop + minSize: + width: 350 + height: 450 + targetSize: + width: 350 + height: 450 + preserveAspectRatio: true diff --git a/site/blueprints/pages/board.yml b/site/blueprints/pages/board.yml new file mode 100644 index 0000000..bcd3110 --- /dev/null +++ b/site/blueprints/pages/board.yml @@ -0,0 +1,15 @@ +title: Board + +create: + status: listed + +sections: + fields: + type: fields + fields: + game: + label: Current Game + type: pages + query: site.find('seasons').getAllGames + text: "{{ page.parent.title }}: {{ page.type }} {{ page.player.toPages.first.surname }} vs. {{ page.player.toPages.last.surname }}" + multiple: false diff --git a/site/blueprints/pages/boards.yml b/site/blueprints/pages/boards.yml new file mode 100644 index 0000000..af8f4c2 --- /dev/null +++ b/site/blueprints/pages/boards.yml @@ -0,0 +1,10 @@ +title: Boards + +create: + status: listed + +sections: + pages: + type: pages + label: Boards + template: board diff --git a/site/blueprints/pages/default.yml b/site/blueprints/pages/default.yml new file mode 100644 index 0000000..0cb0129 --- /dev/null +++ b/site/blueprints/pages/default.yml @@ -0,0 +1,21 @@ +title: Default Page + +columns: + main: + width: 2/3 + sections: + fields: + type: fields + fields: + text: + type: textarea + size: huge + sidebar: + width: 1/3 + sections: + pages: + type: pages + template: default + files: + type: files + diff --git a/site/blueprints/pages/member.yml b/site/blueprints/pages/member.yml new file mode 100644 index 0000000..a98f20a --- /dev/null +++ b/site/blueprints/pages/member.yml @@ -0,0 +1,48 @@ +title: Member + +create: + title: + label: Member ID + fields: + - forename + - surname + - nickname + - number + redirect: false + status: listed + +# columns: +# main: +# width: 2/3 +sections: + fields: + type: fields + width: 2/3 + fields: + forename: + label: First name + type: text + width: 1/6 + surname: + label: Last Name + type: text + width: 1/6 + nickname: + label: Nickname + type: text + width: 2/6 + number: + label: Number + type: number + width: 1/6 + pic: + label: Picture + type: files + width: 1/6 + multiple: false + query: page.images + files: + width: 1/3 + sections: + files: + type: files diff --git a/site/blueprints/pages/members.yml b/site/blueprints/pages/members.yml new file mode 100644 index 0000000..06d175b --- /dev/null +++ b/site/blueprints/pages/members.yml @@ -0,0 +1,12 @@ +title: Members + +create: + status: listed + +sections: + pages: + type: pages + label: Members + template: member + text: "[{{ page.title }}] {{ page.forename }} {{ page.surname }} ({{ page.nickname }})" + sortBy: number asc diff --git a/site/blueprints/pages/season.yml b/site/blueprints/pages/season.yml new file mode 100644 index 0000000..a5fdf2a --- /dev/null +++ b/site/blueprints/pages/season.yml @@ -0,0 +1,12 @@ +title: Season + +create: + status: listed + +sections: + pages: + type: pages + label: Tournaments + template: tournament + # text: "{{ page.type }} {{ page.surname }} ({{ page.nickname }})" + # sortBy: page.surname diff --git a/site/blueprints/pages/seasons.yml b/site/blueprints/pages/seasons.yml new file mode 100644 index 0000000..971d18c --- /dev/null +++ b/site/blueprints/pages/seasons.yml @@ -0,0 +1,12 @@ +title: Seasons + +create: + status: listed + +sections: + pages: + type: pages + label: Seasons + template: season + # text: "{{ page.type }} {{ page.surname }} ({{ page.nickname }})" + # sortBy: page.surname diff --git a/site/blueprints/pages/tournament.yml b/site/blueprints/pages/tournament.yml new file mode 100644 index 0000000..7d7abe6 --- /dev/null +++ b/site/blueprints/pages/tournament.yml @@ -0,0 +1,33 @@ +title: Tournament + +create: + status: listed + +sections: + fields: + type: fields + fields: + participants: + width: 1/2 + label: Participants + type: pages + query: site.find('members') + text: "{{ page.forename }} {{ page.surname }} ({{ page.nickname }})" + date: + width: 1/2 + label: Date + type: date + # layout: + # type: layout + # layouts: + # - "1/6, 1/6, 1/6, 1/6, 1/6, 1/6" + # fieldsets: + # - heading + # - simple_game + + pages: + type: pages + label: Games + template: xoi + text: "[{{ page.startdate.toDate('d.m.') }}] {{ page.players.toPages.first.forename }} {{ page.players.toPages.first.surname }} vs. {{ page.players.toPages.nth(1).forename }} {{ page.players.toPages.nth(1).surname }}" + sortBy: startdate desc diff --git a/site/blueprints/pages/xoi.yml b/site/blueprints/pages/xoi.yml new file mode 100644 index 0000000..5714aaa --- /dev/null +++ b/site/blueprints/pages/xoi.yml @@ -0,0 +1,89 @@ +title: Game + +create: + status: listed + +sections: + fields: + type: fields + fields: + max: + width: 2/12 + label: Game Max + type: select + default: "501" + options: + - "301" + - "501" + - "701" + sets: + width: 1/12 + label: Sets + type: number + default: 1 + legs: + width: 1/12 + label: Legs + type: number + default: 7 + in: + width: 1/12 + label: In + type: select + default: "Straight" + options: + - "Straight" + - "Double" + - "Master" + out: + width: 1/12 + label: Out + type: select + default: "Double" + options: + - "Straight" + - "Double" + - "Master" + players: + width: 6/12 + label: Players + type: pages + multiple: true + query: site.find('members') + text: "{{ page.forename }} {{ page.surname }} ({{ page.nickname }})" + startdate: + width: 6/12 + label: Start + type: date + time: + step: + unit: minute + size: 1 + enddate: + width: 6/12 + label: End + type: date + time: + step: + unit: minute + size: 1 + # bulled: + # width: 2/12 + # label: Bulled + # type: toggle + # text: + # - Nope + # - "Yes" + rounds: + label: Rounds + type: json + width: 3/6 + stats: + label: Stats + type: json + width: 3/6 + comment: + label: Comment + type: textarea + size: small + width: 6/6 diff --git a/site/blueprints/site.yml b/site/blueprints/site.yml new file mode 100644 index 0000000..b7da661 --- /dev/null +++ b/site/blueprints/site.yml @@ -0,0 +1,5 @@ +title: Site + +sections: + pages: + type: pages diff --git a/site/blueprints/users/api.yml b/site/blueprints/users/api.yml new file mode 100644 index 0000000..e69de29 diff --git a/site/cache/index.html b/site/cache/index.html new file mode 100644 index 0000000..e69de29 diff --git a/site/config/config.php b/site/config/config.php new file mode 100644 index 0000000..c5c8fa0 --- /dev/null +++ b/site/config/config.php @@ -0,0 +1,16 @@ + true, + 'panel' =>[ + 'install' => true + ], + 'api' => [ + 'allowInsecure' => true, + 'basicAuth' => true, + ], + 'auth' => false, + 'kql' => [ + 'auth' => false + ] +]; diff --git a/site/controllers/home.php b/site/controllers/home.php new file mode 100644 index 0000000..362da11 --- /dev/null +++ b/site/controllers/home.php @@ -0,0 +1,40 @@ +request()->is('POST')) { + $action = $kirby->request()->get("action"); + if ($action == "createGame") { + // $name = $kirby->request()->get("name"); + $name = Uuid::generate($length = 8); + $tournament = $kirby->request()->get("tournament"); + $content = [ + 'title' => $name + ]; + try { + + $kirby->impersonate('kirby'); + $id = $site->find($tournament)->createChild([ + 'content' => $content, + 'slug' => Str::slug($name), + 'template' => 'xoi', + 'isDraft' => false + ]); + $json["status"] = "ok"; + $json["url"] = $id->url(); + } catch (\Exception $e) { + $error = $e->getMessage(); + } + } + $data = $kirby->request()->get("name"); + } + return [ + 'type' => $type, + 'json' => $json, + 'error' => $error + ]; +}; diff --git a/site/controllers/xoi.php b/site/controllers/xoi.php new file mode 100644 index 0000000..b7b3c05 --- /dev/null +++ b/site/controllers/xoi.php @@ -0,0 +1,175 @@ +enddate()->isEmpty()) { + $error = "Game ended"; + $json["status"] = "error"; + $json["error"] = $error; + return $json; + } + $throws = $kirby->request()->get("throws"); + if (is_null($throws) || !is_array($throws)) { + $error = "You have to pass throws as array"; + if ($error != "") { + $json["status"] = "error"; + $json["error"] = $error; + } + return $json; + } + $checkoutTries = $kirby->request()->get("checkoutTries") ? intval($kirby->request()->get("checkoutTries")) : 0; + $done = $kirby->request()->get("done"); + $numDarts = 3; + if ($kirby->request()->get("numDarts")) { + $numDarts = intval($kirby->request()->get("numDarts")); + } elseif (!$done) { + $numDarts = count($throws); + } + try { + $page->addThrows($throws, $numDarts, $checkoutTries, $done); + } catch (\Exception $e) { + $error = $e->getMessage(); + } + if ($error != "") { + $json["status"] = "error"; + $json["error"] = $error; + } + return $json; +} + +function deleteLastThrow($page, $site, $kirby){ + $json["status"] = "ok"; + $error = ""; + if (!$page->enddate()->isEmpty()) { + $error = "Game ended"; + $json["status"] = "error"; + $json["error"] = $error; + return $json; + } + $game = $page->rounds()->parseJSON(); + $set = &$game["sets"][count($game["sets"])-1]; + $leg = &$set["legs"][count($set["legs"])-1]; + $visit = &$leg["visits"][count($leg["visits"])-1]; + + $completeVisit = $kirby->request()->get("visit"); + if (count($visit['throws']) > 0 && !$completeVisit) { + array_pop($visit['throws']); + $kirby->impersonate('kirby'); + $page = $page->update([ + 'rounds' => json_encode($game), + ]); + } else { + // delete last visit. This means, delete 2 lasts and insert one. + array_pop($leg["visits"]); + if (count($leg["visits"]) == 0){ + array_pop($set["legs"]); + if (count($set["legs"]) == 0){ + array_pop($game["sets"]); + if (count($game["sets"]) == 0){ + $page = $page->initGame(false); + $page->recalcStats(); + return $json; + } + } + } + $kirby->impersonate('kirby'); + $page = $page->update([ + 'rounds' => json_encode($game), + ]); + $page = $page->clearLastVisit(); + } + $page = $page->recalcStats(); + if ($error != "") { + $json["status"] = "error"; + $json["error"] = $error; + } + return $json; +} + +function init($page, $site, $kirby){ + $json["status"] = "ok"; + $error = ""; + if ($page->rounds()->toString() != "") { + $error = "Game already started, can not update"; + $json["status"] = "error"; + $json["error"] = $error; + return $json; + } + $players = $kirby->request()->get("players"); + if (is_null($players) || !is_array($players) || count($players) == 0) { + $error = "Players not given."; + $json["status"] = "error"; + $json["error"] = $error; + return $json; + } + foreach ($players as $i => $player) { + try { + if (page($player)->intendedTemplate() != "member") { + $error = "Player is not a member ".page($player)->template(); + $json["status"] = "error"; + $json["error"] = $error; + return $json; + } + } catch (\Exception $e) { + $error = "Player not found".$e; + $json["status"] = "error"; + $json["error"] = $error; + return $json; + } + } + $page = $page->reorderPlayer($players); + $page->initGame(); + + if ($error != "") { + $json["status"] = "error"; + $json["error"] = $error; + } + return $json; +} + +function update($page, $site, $kirby){ + $json["status"] = "ok"; + $error = ""; + + // TODO check data for valid fields + $kirby->impersonate('kirby'); + $data = $kirby->request()->get("data"); + $page = $page->update($data); + + if ($error != "") { + $json["status"] = "error"; + $json["error"] = $error; + } + return $json; +} + +return function ($page, $site, $kirby) { + $error = ""; + $json = []; + $type = "html"; + if ($kirby->request()->is('POST')) { + $type = "json"; + $action = $kirby->request()->get("action"); + if ($action == "update") { + $json = update($page, $site, $kirby); + } elseif ($action == "init") { + $json = init($page, $site, $kirby); + } elseif ($action == "addThrows") { + $json = addThrows($page, $site, $kirby); + } elseif ($action == "deleteLastThrow") { + $json = deleteLastThrow($page, $site, $kirby); + } else { + $json["error"] = "No known action defined"; + $json["status"] = "error"; + } + } + + return [ + 'type' => $type, + 'json' => $json, + 'error' => $error + ]; +}; diff --git a/site/models/season.php b/site/models/season.php new file mode 100644 index 0000000..27967f2 --- /dev/null +++ b/site/models/season.php @@ -0,0 +1,16 @@ +children() as $key => $value) { + $children->add($value->children()); + } + return $children; + } + public function getRunningTournaments() { + return $this->children()->filter( + fn ($child) => $child->date()->isEmpty() or $child->date()->toDate()+(60*60*24) > time() + ); + } +} diff --git a/site/models/seasons.php b/site/models/seasons.php new file mode 100644 index 0000000..40ee0f6 --- /dev/null +++ b/site/models/seasons.php @@ -0,0 +1,24 @@ +children() as $key => $value) { + $children->add($value->getAllGames()); + } + return $children; + } + /** + * @kql-allowed + */ + public function getRunningTournaments() { + $children = new Pages(); + foreach ($this->children() as $key => $value) { + $children->add($value->getRunningTournaments()); + } + return $children; + } +} diff --git a/site/models/tournament.php b/site/models/tournament.php new file mode 100644 index 0000000..654890b --- /dev/null +++ b/site/models/tournament.php @@ -0,0 +1,39 @@ +children()->filter( + fn ($child) => $child->enddate()->isEmpty() + ); + } + + /** + * @kql-allowed + */ + public function getStats($uuid) { + $lol = $this->children()->filter( + fn ($child) => count($child->players()->toPages()->filter( fn ($player) => $player->uuid()->toString() == $uuid ) ) + ); + $statsSum = []; + foreach ($lol as $key => $value) { + if ($value->stats()->isEmpty()) { + continue; + } + $stats = $value->stats()->parseJSON()["stats"]; + if ($stats[0]["player"] == $uuid) { + $i = 0; + } else if ($stats[1]["player"] == $uuid) { + $i = 1; + } + if (count($statsSum) == 0){ + $statsSum = $stats[$i]; + continue; + } + $statsSum = $value->addStats($statsSum, $stats[$i]); + } + return $statsSum;//$lol;//$stats[1]["player"]$player->uuid()->toString(); + } +} diff --git a/site/models/xoi.php b/site/models/xoi.php new file mode 100644 index 0000000..177205b --- /dev/null +++ b/site/models/xoi.php @@ -0,0 +1,413 @@ +playerUUIDs()) == 2){ + return [$this->parent()->getStats($this->playerUUIDs()[0]),$this->parent()->getStats($this->playerUUIDs()[1])]; + } + return []; + } + + public function reorderPlayer($order){ + kirby()->impersonate('kirby'); + return $this->update([ + "players" => $order + ]); + } + public function playerUUIDs(){ + $pp = $this->players()->toPages(); + $players = []; + foreach ($pp as $i => $p) { + $players[] = $p->uuid()->toString(); + } + return $players; + } + + public function getPlayerPos($playerUUIDs, $uuid) + { + $k = 0; + foreach ($playerUUIDs as $i => $playeruuid) { + if ($playeruuid == $uuid) { + break; + } + $k++; + } + return $k; + } + // entity can be visit, leg or set + public function nextPlayer($playerUUIDs, $uuid) + { + $k = $this->getPlayerPos($playerUUIDs, $uuid); + return $playerUUIDs[($k+1)%count($playerUUIDs)]; + } + + public function updateStats(&$stats, $visit){ + $playerUUIDs = $this->playerUUIDs(); + $k = $this->getPlayerPos($playerUUIDs, $visit["player"]); + + $todos = [&$stats["stats"][$k]]; + $todos[] = &last($stats["sets"])["stats"][$k]; + $todos[] = &last(last($stats["sets"])["legs"])["stats"][$k]; + + foreach ($todos as $i => $value) { + $todos[$i]["average"][0] += $visit["sum"]; + $todos[$i]["average"][1] += $visit["numDarts"]; + if ($visit["visit"] < 4) { + $todos[$i]["first9"][0] += $visit["sum"]; + $todos[$i]["first9"][1] += $visit["numDarts"]; + } + if ($visit["toGo"][$k] == 0) { + $todos[$i]["checkouts"][0] += 1; + $todos[$i]["checkoutPoints"][] += $visit["sum"]; + } + $todos[$i]["checkouts"][1] += $visit["checkoutTries"]; + if ($visit["sum"] == 180) { + $todos[$i]["180"] += 1; + } elseif ($visit["sum"] >= 140) { + $todos[$i]["140+"] += 1; + } elseif ($visit["sum"] >= 100) { + $todos[$i]["100+"] += 1; + } elseif ($visit["sum"] >= 60) { + $todos[$i]["60+"] += 1; + } + } + return $stats; + } + + private function newVisit($player, $round) + { + return array( + 'player' => $player, + 'throws' => [], + 'visit' => $round, + 'checkoutTries' => 0, + 'numDarts' => 0, + ); + } + + public function calcPoints($throw) + { + $throw = trim($throw); + if ($throw == "") { + return 0; + } + if ($throw == "SB"){ + return 25; + } + if ($throw == "DB"){ + return 50; + } + if ($throw[0] == "S" || $throw[0] == "O" || $throw[0] == "I"){ + return intval(substr($throw, 1)); + } + if ($throw[0] == "D"){ + return 2*intval(substr($throw, 1)); + } + if ($throw[0] == "T"){ + return 3*intval(substr($throw, 1)); + } + if ($throw[0] == "M"){ + return 0; + } else { + // TODO: Check for Na + return intval($throw); + } + } + + public function sumPoints($throws) + { + $sum = 0; + foreach ($throws as $i => $throw) { + $points = $this->calcPoints($throw); + $sum += $points; + } + return $sum; + } + + public function getWinner($points, $mode) + { + $sum = 0; + $k = 0; + $max = -1; + foreach ($points as $i => $point) { + $sum += $point; + if ($max < $point) { + $max = $point; + $maxidx = $k; + } + $k++; + } + if ($max > $mode/$k) { + return $maxidx; + } + if ($sum == $mode) { + return -2; + } + return -1; + } + + public function clearLastVisit() + { + $game = $this->rounds()->parseJSON(); + $set = &$game["sets"][count($game["sets"])-1]; + $leg = &$set["legs"][count($set["legs"])-1]; + $visit = &$leg["visits"][count($leg["visits"])-1]; + $visit["throws"] = []; + $visit["checkoutTries"] = 0; + $visit["numDarts"] = 0; + unset($visit["sum"]); + unset($visit["toGo"]); + return $this->storeGame($game); + } + + public function addThrows($throws, $numDarts, $checkoutTries, $done=true) + { + $game = $this->rounds()->parseJSON(); + $set = &$game["sets"][count($game["sets"])-1]; + $leg = &$set["legs"][count($set["legs"])-1]; + $visit = &$leg["visits"][count($leg["visits"])-1]; + $current_throws = $visit['throws']; + if (count($current_throws)+count($throws) > 3) { + $error = "Two many throws given: ".count($current_throws)." + ".count($throws)." > 3"; + throw new \Exception($error, 1); + } + $new_throws = array_merge($current_throws, $throws); + + $playerUUIDs = $this->playerUUIDs(); + $k = $this->getPlayerPos($playerUUIDs, $visit["player"]); + if (count($leg["visits"])-2 < 0) { + $toGo = array_fill(0, count($playerUUIDs), $this->max()->toInt()); + } else { + $toGo = $leg["visits"][count($leg["visits"])-2]["toGo"]; + } + + $visit["numDarts"] += $numDarts; + $visit["throws"] = $new_throws; + $visit["checkoutTries"] += $checkoutTries; + $visit["sum"] = $this->sumPoints($visit["throws"]); + + $rest = $toGo[$k] - $visit["sum"]; + if ($rest < 0 or ($this->out()->toString() == "Double" && $rest == 1)) { + $visit["sum"] = 0; + } else { + $toGo[$k] = $rest; + } + $visit["toGo"] = $toGo; + if (!$done) { + $this->storeGame($game); + return; + } + + $stats = $this->stats()->parseJSON(); + $page = $this->updateStats($stats, $visit); + $update = []; + if ($rest != 0) { + // Normal case...next players turn + $nextPlayer = $this->nextPlayer($playerUUIDs, $visit["player"]); + $isNextRound = 0; + if (last(last($game["sets"])["legs"])['visits'][0]["player"] == $nextPlayer) { + $isNextRound = 1; + } + $newVisit = $this->newVisit($nextPlayer, $visit["visit"]+$isNextRound); + last(last($game["sets"])["legs"])['visits'][] = $newVisit; + } else { + // rest == 0 leg finished + // updates Stats...this is maybe the wrong place to store points + $newlegp = $leg["points"]; + $newlegp[$k] += 1; + $winner = $this->getWinner($newlegp, $this->legs()->toInt()); + if ($winner != -1) { + $newsetp = $set["points"]; + $newsetp[$k] += 1; + $winner = $this->getWinner($newsetp, $this->sets()->toInt()); + if ($winner != -1) { + if ($winner == -2) { + $stats["winner"] = "DRAW"; + } else { + $stats["winner"] = $visit["player"]; + } + // Game Over + $update = [ + "enddate" => date("Y-m-d H:i:s") + ]; + } else { + // new Set + $this->addNewSet($game, $newsetp); + $stats = $this->addNewSetStats($stats); + $stats = $this->addNewLegStats($stats); + } + } else { + // new Leg + $this->addNewLeg($game, $newlegp); + $stats = $this->addNewLegStats($stats); + } + } + $page = $this->storeGame($game); + $page = $page->storeStats($stats); + $page->update($update); + } + + private function newSingleStats($player) + { + return array( + "player" => $player, + "average" => [0, 0], + "first9" => [0, 0], + "checkouts" => [0, 0], + "checkoutPoints" => [], + "60+" => 0, + "100+" => 0, + "140+" => 0, + "180" => 0 + ); + } + private function newStats(){ + $playerUUIDs = $this->playerUUIDs(); + $stats = array( + // "winner" => "", + "stats" => [] + ); + foreach ($playerUUIDs as $i => $player) { + $n = $this->newSingleStats($player); + $stats["stats"][] = $n; + } + return $stats; + } + + private function addNewSet(&$game, $points){ + $playerUUIDs = $this->playerUUIDs(); + $set = &$game["sets"][count($game["sets"])-1]; + $leg = &$set["legs"][count($set["legs"])-1]; + $p = $this->nextPlayer($playerUUIDs, $set["legs"][0]["visits"][0]["player"]); + $game["sets"][] = array( + 'points' => $points, + 'legs' => [ + array( + 'points' => array_fill(0, count($playerUUIDs), 0), + 'visits' => [$this->newVisit($p, 1)] + ) + ] + ); + return $game; + } + private function addNewLeg(&$game, $points){ + $playerUUIDs = $this->playerUUIDs(); + $set = &$game["sets"][count($game["sets"])-1]; + $leg = &$set["legs"][count($set["legs"])-1]; + $p = $this->nextPlayer($playerUUIDs, $leg["visits"][0]["player"]); + $set["legs"][] = array( + 'points' => $points, + 'visits' => [$this->newVisit($p, 1)] + ); + return $game; + } + + private function addNewSetStats(&$stats){ + $stats["sets"][] = $this->newStats(); + $stats["sets"][0]["legs"] = []; + return $stats; + } + private function addNewLegStats(&$stats){ + last($stats["sets"])["legs"][] = $this->newStats(); + return $stats; + } + + public function recalcStats(){ + $game = $this->rounds()->parseJSON(); + $page = $this->initStats(); + $stats = $page->stats()->parseJSON(); + $lastset = count($game["sets"])-1; + foreach ($game["sets"] as $i => $set) { + $lastleg = count($set["legs"])-1; + foreach ($set["legs"] as $j => $leg) { + $lastvisit = count($leg["visits"])-1; + foreach ($leg["visits"] as $k => $visit) { + if (!($k == $lastvisit && $j == $lastleg && $i == $lastset)) { + $this->updateStats($stats, $visit); + } + if ($k == $lastvisit && $j != $lastleg) { + $this->addNewLegStats($stats); + } + } + if ($j == $lastleg && $i != $lastset) { + $this->addNewSetStats($stats); + } + } + } + return $this->storeStats($stats); + } + + private function initStats() + { + $stats = $this->newStats(); + $stats["sets"] = []; + $this->addNewSetStats($stats); + $this->addNewLegStats($stats); + return $this->storeStats($stats); + } + + public function initGame($startTime = true) { + $playerUUIDs = $this->playerUUIDs(); + $game = array('sets' => [array( + 'points' => array_fill(0, count($playerUUIDs), 0), + 'legs' => [ + array( + 'points' => array_fill(0, count($playerUUIDs), 0), + 'visits' => [$this->newVisit($playerUUIDs[0], 1)] + ) + ] + ) + ]); + + $page = $this->initStats(); + $update = [ + 'rounds' => json_encode($game) + ]; + if ($startTime) { + $update['startdate'] = date("Y-m-d H:i:s"); + } + kirby()->impersonate('kirby'); + return $page->update($update); + } + + public function storeStats($stats) + { + kirby()->impersonate('kirby'); + return $this->update([ + "stats" => json_encode($stats) + ]); + + } + public function storeGame($game) + { + kirby()->impersonate('kirby'); + return $this->update([ + "rounds" => json_encode($game) + ]); + } +} diff --git a/site/plugins/jsonField/.editorconfig b/site/plugins/jsonField/.editorconfig new file mode 100644 index 0000000..3b762c9 --- /dev/null +++ b/site/plugins/jsonField/.editorconfig @@ -0,0 +1,20 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.php] +indent_size = 4 + +[*.md,*.txt] +trim_trailing_whitespace = false +insert_final_newline = false + +[composer.json] +indent_size = 4 diff --git a/site/plugins/jsonField/.gitattributes b/site/plugins/jsonField/.gitattributes new file mode 100644 index 0000000..033ba13 --- /dev/null +++ b/site/plugins/jsonField/.gitattributes @@ -0,0 +1,11 @@ +# Note: You need to uncomment the lines you want to use; the other lines can be deleted + +# Git +# .gitattributes export-ignore +# .gitignore export-ignore + +# Tests +# /.coveralls.yml export-ignore +# /.travis.yml export-ignore +# /phpunit.xml.dist export-ignore +# /tests/ export-ignore diff --git a/site/plugins/jsonField/.gitignore b/site/plugins/jsonField/.gitignore new file mode 100644 index 0000000..4d81cf5 --- /dev/null +++ b/site/plugins/jsonField/.gitignore @@ -0,0 +1,14 @@ +# OS files +.DS_Store + +# npm modules +/node_modules + +# Parcel cache folder +.cache + +# Composer files +/vendor + +# kirbyup temp development entry +/index.dev.mjs diff --git a/site/plugins/jsonField/LICENSE.md b/site/plugins/jsonField/LICENSE.md new file mode 100755 index 0000000..8e663d7 --- /dev/null +++ b/site/plugins/jsonField/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/site/plugins/jsonField/README.md b/site/plugins/jsonField/README.md new file mode 100755 index 0000000..ad2b202 --- /dev/null +++ b/site/plugins/jsonField/README.md @@ -0,0 +1,117 @@ +# Kirby Pluginkit: Example plugin for Kirby + +> Variant "Panel plugin setup" + +This is a boilerplate for a Kirby Panel plugin that can be installed via all three [supported installation methods](https://getkirby.com/docs/guide/plugins/plugin-setup-basic#the-three-plugin-installation-methods). + +You can find a list of Pluginkit variants on the [`master` branch](https://github.com/getkirby/pluginkit/tree/master). + +**** + +## How to use the Pluginkit + +1. Fork this repository +2. Change the plugin name and description in the `composer.json` +3. Change the plugin name in the `index.php` and `src/index.js` +4. Change the license if you don't want to publish under MIT +5. Add your plugin code to the `index.php` and `src/index.js` +6. Update this `README` with instructions for your plugin + +### Install the development and build setup + +We use [kirbyup](https://github.com/johannschopplich/kirbyup) for the development and build setup. + +You can start developing directly. kirbyup will be fetched remotely with your first `npm run` command, which may take a short amount of time. + +### Development + +You can start the dev process with: + +```bash +npm run dev +``` + +This will automatically update the `index.js` and `index.css` of your plugin as soon as you make changes. +Reload the Panel to see your code changes reflected. + +With kirbyup 2.0.0+ and Kirby 3.7.4+ you can alternatively use hot module reloading (HMR): + +```bash +npm run serve +``` + +This will start a development server that updates the page as soon as you make changes. Some updates are instant, like CSS or Vue template changes, others require a reload of the page, which happens automatically. + +> [!NOTE] +> The live reload functionality requires top level await, [which is only supported in modern browsers](https://caniuse.com/mdn-javascript_operators_await_top_level). If you're developing in older browsers, use `npm run dev` and reload the page manually to see changes. + +### Production + +As soon as you are happy with your plugin, you should build the final version with: + +```bash +npm run build +``` + +This will automatically create a minified and optimized version of your `index.js` and `index.css` +which you can ship with your plugin. + +We have a tutorial on how to build your own plugin based on the Pluginkit [in the Kirby documentation](https://getkirby.com/docs/guide/plugins/plugin-setup-basic). + +### Build reproducibility + +While kirbyup will stay backwards compatible, exact build reproducibility may be of importance to you. If so, we recommend to target a specific package version, rather than using npx: + +```json +{ + "scripts": { + "dev": "kirbyup src/index.js --watch", + "build": "kirbyup src/index.js" + }, + "devDependencies": { + "kirbyup": "^3.1.0" + } +} +``` + +What follows is an example README for your plugin. + +**** + +## Installation + +### Download + +Download and copy this repository to `/site/plugins/{{ plugin-name }}`. + +### Git submodule + +```bash +git submodule add https://github.com/{{ your-name }}/{{ plugin-name }}.git site/plugins/{{ plugin-name }} +``` + +### Composer + +```bash +composer require {{ your-name }}/{{ plugin-name }} +``` + +## Setup + +*Additional instructions on how to configure the plugin (e.g. blueprint setup, config options, etc.)* + +## Options + +*Document the options and APIs that this plugin offers* + +## Development + +*Add instructions on how to help working on the plugin (e.g. npm setup, Composer dev dependencies, etc.)* + +## License + +MIT + +## Credits + +- [Your Name](https://github.com/ghost) diff --git a/site/plugins/jsonField/SECURITY.md b/site/plugins/jsonField/SECURITY.md new file mode 100644 index 0000000..3726336 --- /dev/null +++ b/site/plugins/jsonField/SECURITY.md @@ -0,0 +1,18 @@ +# Security Policy + +## Supported Versions + +*Use this section to tell people about which versions of your project are currently being supported with security updates.* + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +*Use this section to tell people how to report a vulnerability.* + +*Tell them where to go, how often they can expect to get an update on a reported vulnerability, what to expect if the vulnerability is accepted or declined, etc.* diff --git a/site/plugins/jsonField/composer.json b/site/plugins/jsonField/composer.json new file mode 100755 index 0000000..bfc40ab --- /dev/null +++ b/site/plugins/jsonField/composer.json @@ -0,0 +1,16 @@ +{ + "name": "getkirby/pluginkit", + "description": "Kirby Example Plugin", + "license": "MIT", + "type": "kirby-plugin", + "version": "1.0.0", + "authors": [ + { + "name": "Your Name", + "email": "you@example.com" + } + ], + "require": { + "getkirby/composer-installer": "^1.1" + } +} diff --git a/site/plugins/jsonField/index.css b/site/plugins/jsonField/index.css new file mode 100644 index 0000000..aebd96f --- /dev/null +++ b/site/plugins/jsonField/index.css @@ -0,0 +1,2 @@ + +/* optional scoped styles for the component */ diff --git a/site/plugins/jsonField/index.js b/site/plugins/jsonField/index.js new file mode 100644 index 0000000..d1fd9f1 --- /dev/null +++ b/site/plugins/jsonField/index.js @@ -0,0 +1,100 @@ +(function() { + "use strict"; + function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { + var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports; + if (render) { + options.render = render; + options.staticRenderFns = staticRenderFns; + options._compiled = true; + } + if (functionalTemplate) { + options.functional = true; + } + if (scopeId) { + options._scopeId = "data-v-" + scopeId; + } + var hook; + if (moduleIdentifier) { + hook = function(context) { + context = context || // cached call + this.$vnode && this.$vnode.ssrContext || // stateful + this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; + if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") { + context = __VUE_SSR_CONTEXT__; + } + if (injectStyles) { + injectStyles.call(this, context); + } + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier); + } + }; + options._ssrRegister = hook; + } else if (injectStyles) { + hook = shadowMode ? function() { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ); + } : injectStyles; + } + if (hook) { + if (options.functional) { + options._injectStyles = hook; + var originalRender = options.render; + options.render = function renderWithStyleInjection(h, context) { + hook.call(context); + return originalRender(h, context); + }; + } else { + var existing = options.beforeCreate; + options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; + } + } + return { + exports: scriptExports, + options + }; + } + const _sfc_main = { + props: { + after: String, + before: String, + disabled: Boolean, + help: String, + icon: String, + label: String, + required: Boolean, + when: String, + value: String + }, + methods: { + onInput(value) { + this.$emit("input", value); + } + } + }; + var _sfc_render = function render() { + var _vm = this, _c = _vm._self._c; + return _c("k-field", { staticClass: "k-doi-field", attrs: { "disabled": _vm.disabled, "help": _vm.help, "label": _vm.label, "required": _vm.required, "when": _vm.when } }, [_c("k-input", { attrs: { "after": _vm.after, "before": _vm.before, "icon": _vm.icon, "theme": "field", "type": "text", "name": "textfield", "value": _vm.value }, on: { "input": _vm.onInput } })], 1); + }; + var _sfc_staticRenderFns = []; + _sfc_render._withStripped = true; + var __component__ = /* @__PURE__ */ normalizeComponent( + _sfc_main, + _sfc_render, + _sfc_staticRenderFns, + false, + null, + null, + null, + null + ); + __component__.options.__file = "/home/ugo/Desktop/dart/redo/site/plugins/jsonField/src/components/jsonField.vue"; + const JSONField = __component__.exports; + panel.plugin("ucomeugo/jsonField", { + fields: { + json: JSONField + } + }); +})(); diff --git a/site/plugins/jsonField/index.php b/site/plugins/jsonField/index.php new file mode 100755 index 0000000..7df46b1 --- /dev/null +++ b/site/plugins/jsonField/index.php @@ -0,0 +1,15 @@ + [ + 'json' => [ + // here we could define the backend logic for our field if needed + ] + ], + 'fieldMethods' => [ + 'parseJSON' => function ($field) { + // $field->value = json_decode($field->value); + return json_decode($field->value, true); + } + ] +]); diff --git a/site/plugins/jsonField/package-lock.json b/site/plugins/jsonField/package-lock.json new file mode 100644 index 0000000..238ba3d --- /dev/null +++ b/site/plugins/jsonField/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "jsonField", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/site/plugins/jsonField/package.json b/site/plugins/jsonField/package.json new file mode 100644 index 0000000..bdbe47f --- /dev/null +++ b/site/plugins/jsonField/package.json @@ -0,0 +1,7 @@ +{ + "scripts": { + "dev": "npx -y kirbyup src/index.js --watch", + "serve": "npx -y kirbyup serve src/index.js", + "build": "npx -y kirbyup src/index.js" + } +} diff --git a/site/plugins/jsonField/src/components/jsonField.vue b/site/plugins/jsonField/src/components/jsonField.vue new file mode 100755 index 0000000..ce22f54 --- /dev/null +++ b/site/plugins/jsonField/src/components/jsonField.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/site/plugins/jsonField/src/index.js b/site/plugins/jsonField/src/index.js new file mode 100755 index 0000000..3768da5 --- /dev/null +++ b/site/plugins/jsonField/src/index.js @@ -0,0 +1,7 @@ +import JSONField from "./components/jsonField.vue"; + +panel.plugin('ucomeugo/jsonField', { + fields: { + json: JSONField + } +}); diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/.gitignore b/site/plugins/kirby-plugin-image-crop-field-2.0.5/.gitignore new file mode 100644 index 0000000..fa7e9b2 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/.gitignore @@ -0,0 +1,6 @@ +vendor +vendor/* +composer.lock +node_modules +.cache +.DS_Store \ No newline at end of file diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/LICENSE.md b/site/plugins/kirby-plugin-image-crop-field-2.0.5/LICENSE.md new file mode 100644 index 0000000..15bc72f --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/README.md b/site/plugins/kirby-plugin-image-crop-field-2.0.5/README.md new file mode 100644 index 0000000..ae90ed1 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/README.md @@ -0,0 +1,135 @@ +# Kirby Image Crop Field + +This plugin provides a field for cropping images visually and very flexibly. + +![kirby-plugin-image-crop-field](https://user-images.githubusercontent.com/10421363/59161680-0b683280-8ae6-11e9-8bc4-5b9145f34387.gif) + +The field is based on [vue-cropperjs](https://github.com/Agontuk/vue-cropperjs +) and [gumlet/php-image-resize](https://github.com/gumlet/php-image-resize). + +## Installation + +Use one of the alternatives below. + +### Download + +Download and copy this repository to `/site/plugins/kirby-plugin-image-crop-field. + +### Git submodule + +``` +git submodule add https://github.com/steirico/kirby-plugin-image-crop-field.git site/plugins/kirby-plugin-image-crop-field +``` + +### Composer + +``` +composer require steirico/kirby-plugin-image-crop-field +``` + +## Usage + +### File Blueprint Usage + +The plugin defines the new field type `imagecrop` which can be used in [file blueprints](https://getkirby.com/docs/reference/panel/blueprints/file). +Define an appropriate file blueprint for images and add the field as follow: + +> `/site/blueprints/files/image.yml`: +> ```yaml +> fields: +> crop: +> label: Image Crop +> type: imagecrop +> minSize: +> width: 700 +> height: 250 +> targetSize: +> width: 1400 +> height: 500 +> preserveAspectRatio: true +> ``` + +### Blueprint Options + +#### `minSize` + +Defines the minimum allowed size of the area that can be cropped from the original image. + +* `width`: Minimum allowed width, bigger or equal to `1` +* `height`: Minimum allowed height, bigger or equal to `1` + +Defaults: + +* `width`: `1` +* `height`: `1` + + +#### `targetSize` + +Target size of the image after it has been cropped. The resulting image will be scaled to `width` as defined by `targetSize.width` and `height` as defined by `targetSize.height`. + +* `width`: Width of the target image, bigger or equal to `1` +* `height`: Minimum allowed height, bigger or equal to `1` + +For both, `width` and `height`, negative values are interpreted as absolute values. + +Defaults: The resulting image represents the cropped area and is not scaled. + +#### `preserveAspectRatio` + +Whether to preserve the aspect ratio of the crop area as defined by `minSize.width / minSize.height` or to allow free cropping: + +* `true`: Preserve aspect ratio +* `false`: Free cropping + +Default: `false` + +### Cropped Image in the Panel + +The plugin provides the [file method](https://getkirby.com/docs/reference/plugins/extensions/file-methods) called `croppedImage`. Applied as any other file method, `croppedImage` provides a `file` object of the cropped version of origin image. + +The following configuration previews the cropped image in a `files sections`: + +> `/site/blueprints/pages/album.yml`: +> ```yaml +> title: Album +> +> sections: +> images: +> type: files +> layout: cards +> template: image +> info: "{{ file.dimensions }}" +> image: +> ratio: 16/9 +> cover: false +> query: file.croppedImage +> min: 1 +> size: small +>``` + +### Use Cropped Image in Templates and Snippets + +Use the the [file method](https://getkirby.com/docs/reference/plugins/extensions/file-methods) called `croppedImage` in order to work with the cropped image in templates and snippets: + +> ```html +>
    +> image()->croppedImage() ?> +>
    + + +## Issues + +Feel free to file an [issue](https://github.com/steirico/kirby-plugin-image-crop-field/issues) if you encounter any problems or unexpected behavior. + +Currently there is a know issue that crooped images apear twice when geting images by `$page->images()`. + +## License + +MIT + +## Credits + +* [Rico Steiner](https://github.com/steirico) +* [vue-cropperjs](https://github.com/Agontuk/vue-cropperjs) +* [gumlet/php-image-resize](https://github.com/gumlet/php-image-resize) diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/composer.json b/site/plugins/kirby-plugin-image-crop-field-2.0.5/composer.json new file mode 100644 index 0000000..720d70b --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/composer.json @@ -0,0 +1,32 @@ +{ + "name": "steirico/kirby-plugin-image-crop-field", + "description": "A image cropping field for kirby.", + "keywords": [ + "kirby3", + "plugin", + "field", + "image", "crop" + ], + "authors": [ + { + "name": "Rico Steiner", + "email": "rico@vweb.ch" + } + ], + "version": "2.0.5", + "type": "kirby-plugin", + "license": "MIT", + "autoload": { + "classmap": [ + "fields/", + "lib/" + ], + "files": [ + "config.php" + ] + }, + "require": { + "gumlet/php-image-resize": "2.0.*", + "getkirby/composer-installer": "^1.1" + } +} diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/config.php b/site/plugins/kirby-plugin-image-crop-field-2.0.5/config.php new file mode 100644 index 0000000..7eabce3 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/config.php @@ -0,0 +1,56 @@ + [ + 'croppedImage' => function() { + return CroppedImage::croppedImage($this); + }, + ], + 'fields' => [ + 'imagecrop' => [ + 'props' => [ + 'image' => function() { + return $this->model()->url(); + }, + + 'minSize' => function(array $minSize = []) { + $width = max(A::get($minSize, 'width', 1), 1); + $height = max(A::get($minSize, 'height', 1), 1); + return array( + 'width' => $width, + 'height' => $height + ); + }, + + 'targetSize' => function(array $targetSize = []) { + return $targetSize; + }, + + 'preserveAspectRatio' => function(bool $preserveAspectRatio = false){ + return $preserveAspectRatio; + }, + + 'value' => function($value = []){ + $method = kirby()->request()->method(); + if(($method == "PATCH") || ($method == "POST")) { + new CroppedImage($this->model()); + } + + if(is_array($value)){ + return $value; + } else { + return Data::decode($value, 'yaml'); + } + } + ] + ], + ], + 'hooks' => [ + 'file.delete:before' => function ($file) { + $croppedImage = $file->croppedImage(); + if ($croppedImage->exists()) { + $croppedImage->delete(); + } + } + ] +]); \ No newline at end of file diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/fields/CroppedImage.php b/site/plugins/kirby-plugin-image-crop-field-2.0.5/fields/CroppedImage.php new file mode 100644 index 0000000..357f439 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/fields/CroppedImage.php @@ -0,0 +1,168 @@ +__debuginfo(); + $this->original = $original; + $cropData = $this->getCropData(); + + if(is_array($cropData) && count($cropData) != 0){ + $w = A::get($cropData, "width", $original->width()); + $h = A::get($cropData, "height", $original->height()); + $x = A::get($cropData, "x", 0); + $y = A::get($cropData, "y", 0); + + $originalParts = pathinfo($original->root()); + $croppedFileName = sprintf("%s-cropped-w%sh%s-x%sy%s.%s", + $originalParts['filename'], + $w, $h, $x, $y, + $original->extension() + ); + $croppedPath = dirname($original->root()); + $croppedRoot = $croppedPath . '/' . $croppedFileName; + + $oldRoot = $croppedPath . '/' . $original->filename(); + $oldCropped = F::similar($oldRoot, "-cropped-*"); + + $props = array( + 'root' => $croppedRoot, + 'filename' => $croppedFileName, + 'parent' => $original->parent() + ); + + parent::__construct($props); + + if(!$this->exists()){ + if(!file_exists($croppedPath)){ + mkdir($croppedPath, 0770, true); + } + + foreach($oldCropped as $old){ + F::remove($old); + } + + $cropped = new ImageResize($original->root()); + $cropped->freecrop($w, $h, $x, $y)->setMemory()->save($croppedRoot); + unset($cropped); + + $cropConfig = $this->getCropField(); + $targetSize = $cropConfig["targetSize"]; + + if(is_array($targetSize)){ + $targetW = abs(A::get($targetSize, "width", 0)); + $targetH = abs(A::get($targetSize, "height", 0)); + if(0 < $targetW){ + $image = new ImageResize($croppedRoot); + $image->resizeToWidth($targetW, $allow_enlarge = true)->setMemory()->save($croppedRoot); + unset($image); + } + + if(0 < $targetH){ + $image = new ImageResize($croppedRoot); + $image->resizeToHeight($targetH, $allow_enlarge = true)->setMemory()->save($croppedRoot); + unset($image); + } + } + } + } else { + $original->propertyData["filename"] = F::safeName($original->filename()); + parent::__construct($this->original->propertiesToArray()); + } + } + + public function getCropData() { + if($this->cropData){ + return $this->cropData; + } + + if($this->original){ + $field = $this->getCropField(); + $fieldName = $field["name"]; + if($fieldName) { + $this->cropData = $this->original->content()->{$fieldName}()->yaml(); + return $this->cropData; + } else { + return array(); + } + } + + return null; + } + + public function getCropField() { + if($this->cropField){ + return $this->cropField; + } + + if($this->original){ + $fields = $this->original->blueprint()->fields(); + + foreach($fields as $field){ + if($field["type"] == CroppedImage::FIELD_TYPE){ + $this->cropField = $field; + return $this->cropField; + } + } + } + + return null; + } + + public function delete(bool $force = false): bool { + //taken from src/kirby/src/Cms/FileActions.php + // remove all versions in the media folder + $this->unpublish(); + + // remove the lock of the old file + if ($lock = $this->lock()) { + $lock->remove(); + } + + if ($this->kirby()->multilang() === true) { + foreach ($this->translations() as $translation) { + F::remove($this->contentFile($translation->code())); + } + } else { + F::remove($this->contentFile()); + } + + F::remove($this->root()); + + // remove the file from the sibling collection + $this->parent()->files()->remove($this); + + return true; + } + + public static function croppedImage($requestedFile) { + $media = new CroppedImage($requestedFile); + if($media && $media->exists()){ + return $media; + } else { + return $requestedFile; + } + } + + public function __debuginfo(): array { + try { + $parent = $this->toArray(); + } catch(Throwable $e) { + $parent = []; + } + + return array_merge($parent, [ + 'original' => $this->original, + 'cropField' => $this->cropField, + 'cropData' => $this->cropData + ]); + } +} \ No newline at end of file diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/index.css b/site/plugins/kirby-plugin-image-crop-field-2.0.5/index.css new file mode 100644 index 0000000..777ccf0 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/index.css @@ -0,0 +1,9 @@ +/*! + * Cropper.js v1.5.11 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2021-02-17T11:53:21.992Z + */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/index.js b/site/plugins/kirby-plugin-image-crop-field-2.0.5/index.js new file mode 100644 index 0000000..5205076 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/index.js @@ -0,0 +1,14 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;ct.length)&&(e=t.length);for(var i=0,a=new Array(e);i0&&t<1/0};function H(t){return void 0===t}function N(e){return"object"===t(e)&&null!==e}var z=Object.prototype.hasOwnProperty;function L(t){if(!N(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&z.call(i,"isPrototypeOf")}catch(a){return!1}}function Y(t){return"function"==typeof t}var X=Array.prototype.slice;function R(t){return Array.from?Array.from(t):X.call(t)}function S(t,e){return t&&Y(e)&&(Array.isArray(t)||E(t.length)?R(t).forEach(function(i,a){e.call(t,i,a,t)}):N(t)&&Object.keys(t).forEach(function(i){e.call(t,t[i],i,t)})),t}var j=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),a=1;a0&&i.forEach(function(e){N(e)&&Object.keys(e).forEach(function(i){t[i]=e[i]})}),t},A=/\.\d*(?:0|9){12}\d*$/;function I(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return A.test(t)?Math.round(t*e)/e:t}var P=/^width|height|left|top|marginLeft|marginTop$/;function U(t,e){var i=t.style;S(e,function(t,e){P.test(e)&&E(t)&&(t="".concat(t,"px")),i[e]=t})}function q(t,e){if(e)if(E(t.length))S(t,function(t){q(t,e)});else if(t.classList)t.classList.add(e);else{var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function $(t,e){e&&(E(t.length)?S(t,function(t){$(t,e)}):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function Q(t,e,i){e&&(E(t.length)?S(t,function(t){Q(t,e,i)}):i?q(t,e):$(t,e))}var K=/([a-z\d])([A-Z])/g;function Z(t){return t.replace(K,"$1-$2").toLowerCase()}function G(t,e){return N(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(Z(e)))}function V(t,e,i){N(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(Z(e)),i)}var F=/\s\s*/,J=function(){var t=!1;if(h){var e=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(t){e=t}});s.addEventListener("test",i,a),s.removeEventListener("test",i,a)}return t}();function _(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=i;e.trim().split(F).forEach(function(e){if(!J){var o=t.listeners;o&&o[e]&&o[e][i]&&(n=o[e][i],delete o[e][i],0===Object.keys(o[e]).length&&delete o[e],0===Object.keys(o).length&&delete t.listeners)}t.removeEventListener(e,n,a)})}function tt(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=i;e.trim().split(F).forEach(function(e){if(a.once&&!J){var o=t.listeners,r=void 0===o?{}:o;n=function(){delete r[e][i],t.removeEventListener(e,n,a);for(var o=arguments.length,h=new Array(o),s=0;s1&&void 0!==arguments[1]?arguments[1]:"contain",o=W(a),r=W(i);if(o&&r){var h=i*e;"contain"===n&&h>a||"cover"===n&&h=8&&(o=s+l)}}}if(o){var p,d,m=i.getUint16(o,a);for(d=0;d=0?n:200),height:Math.max(i.offsetHeight,o>=0?o:100)};this.containerData=r,U(a,{width:r.width,height:r.height}),q(t,m),$(a,m)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,a=Math.abs(e.rotate)%180==90,n=a?e.naturalHeight:e.naturalWidth,o=a?e.naturalWidth:e.naturalHeight,r=n/o,h=t.width,s=t.height;t.height*r>t.width?3===i?h=t.height*r:s=t.width/r:3===i?s=t.width/r:h=t.height*r;var c={aspectRatio:r,naturalWidth:n,naturalHeight:o,width:h,height:s};this.canvasData=c,this.limited=1===i||2===i,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=j({},c)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=i.viewMode,h=n.aspectRatio,s=this.cropped&&o;if(t){var c=Number(i.minCanvasWidth)||0,l=Number(i.minCanvasHeight)||0;r>1?(c=Math.max(c,a.width),l=Math.max(l,a.height),3===r&&(l*h>c?c=l*h:l=c/h)):r>0&&(c?c=Math.max(c,s?o.width:0):l?l=Math.max(l,s?o.height:0):s&&(c=o.width,(l=o.height)*h>c?c=l*h:l=c/h));var p=ct({aspectRatio:h,width:c,height:l});c=p.width,l=p.height,n.minWidth=c,n.minHeight=l,n.maxWidth=1/0,n.maxHeight=1/0}if(e)if(r>(s?0:1)){var d=a.width-n.width,m=a.height-n.height;n.minLeft=Math.min(0,d),n.minTop=Math.min(0,m),n.maxLeft=Math.max(0,d),n.maxTop=Math.max(0,m),s&&this.limited&&(n.minLeft=Math.min(o.left,o.left+(o.width-n.width)),n.minTop=Math.min(o.top,o.top+(o.height-n.height)),n.maxLeft=o.left,n.maxTop=o.top,2===r&&(n.width>=a.width&&(n.minLeft=Math.min(0,d),n.maxLeft=Math.max(0,d)),n.height>=a.height&&(n.minTop=Math.min(0,m),n.maxTop=Math.max(0,m))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var n=function(t){var e=t.width,i=t.height,a=t.degree;if(90==(a=Math.abs(a)%180))return{width:i,height:e};var n=a%90*Math.PI/180,o=Math.sin(n),r=Math.cos(n),h=e*r+i*o,s=e*o+i*r;return a>90?{width:s,height:h}:{width:h,height:s}}({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),o=n.width,r=n.height,h=i.width*(o/i.naturalWidth),s=i.height*(r/i.naturalHeight);i.left-=(h-i.width)/2,i.top-=(s-i.height)/2,i.width=h,i.height=s,i.aspectRatio=o/r,i.naturalWidth=o,i.naturalHeight=r,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?n.height=n.width/i:n.width=n.height*i),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=e.left+(e.width-n.width)/2,n.top=e.top+(e.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=j({},n)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=this.limited,h=i.aspectRatio;if(t){var s=Number(i.minCropBoxWidth)||0,c=Number(i.minCropBoxHeight)||0,l=r?Math.min(a.width,n.width,n.width+n.left,a.width-n.left):a.width,p=r?Math.min(a.height,n.height,n.height+n.top,a.height-n.top):a.height;s=Math.min(s,a.width),c=Math.min(c,a.height),h&&(s&&c?c*h>s?c=s/h:s=c*h:s?c=s/h:c&&(s=c*h),p*h>l?p=l/h:l=p*h),o.minWidth=Math.min(s,l),o.minHeight=Math.min(c,p),o.maxWidth=l,o.maxHeight=p}e&&(r?(o.minLeft=Math.max(0,n.left),o.minTop=Math.max(0,n.top),o.maxLeft=Math.min(a.width,n.left+n.width)-o.width,o.maxTop=Math.min(a.height,n.top+n.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=a.width-o.width,o.maxTop=a.height-o.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?"move":"all"),U(this.cropBox,j({width:i.width,height:i.height},ht({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),et(this.element,"crop",this.getData())}},ut={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,n=t.alt||"The image to preview",o=document.createElement("img");if(e&&(o.crossOrigin=e),o.src=a,o.alt=n,this.viewBox.appendChild(o),this.viewBoxImage=o,i){var r=i;"string"==typeof i?r=t.ownerDocument.querySelectorAll(i):i.querySelector&&(r=[i]),this.previews=r,S(r,function(t){var i=document.createElement("img");V(t,b,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=a,i.alt=n,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)})}},resetPreview:function(){S(this.previews,function(t){var e=G(t,b);U(t,{width:e.width,height:e.height}),t.innerHTML=e.html,function(t,e){if(N(t[e]))try{delete t[e]}catch(i){t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=void 0}else t.removeAttribute("data-".concat(Z(e)))}(t,b)})},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,n=i.height,o=t.width,r=t.height,h=i.left-e.left-t.left,s=i.top-e.top-t.top;this.cropped&&!this.disabled&&(U(this.viewBoxImage,j({width:o,height:r},ht(j({translateX:-h,translateY:-s},t)))),S(this.previews,function(e){var i=G(e,b),c=i.width,l=i.height,p=c,d=l,m=1;a&&(d=n*(m=c/a)),n&&d>l&&(p=a*(m=l/n),d=l),U(e,{width:p,height:d}),U(e.getElementsByTagName("img")[0],j({width:o*m,height:r*m},ht(j({translateX:-h*m,translateY:-s*m},t))))}))}},gt={bind:function(){var t=this.element,e=this.options,i=this.cropper;Y(e.cropstart)&&tt(t,"cropstart",e.cropstart),Y(e.cropmove)&&tt(t,"cropmove",e.cropmove),Y(e.cropend)&&tt(t,"cropend",e.cropend),Y(e.crop)&&tt(t,"crop",e.crop),Y(e.zoom)&&tt(t,"zoom",e.zoom),tt(i,y,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&tt(i,"wheel",this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&tt(i,"dblclick",this.onDblclick=this.dblclick.bind(this)),tt(t.ownerDocument,x,this.onCropMove=this.cropMove.bind(this)),tt(t.ownerDocument,M,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&tt(window,"resize",this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;Y(e.cropstart)&&_(t,"cropstart",e.cropstart),Y(e.cropmove)&&_(t,"cropmove",e.cropmove),Y(e.cropend)&&_(t,"cropend",e.cropend),Y(e.crop)&&_(t,"crop",e.crop),Y(e.zoom)&&_(t,"zoom",e.zoom),_(i,y,this.onCropStart),e.zoomable&&e.zoomOnWheel&&_(i,"wheel",this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&_(i,"dblclick",this.onDblclick),_(t.ownerDocument,x,this.onCropMove),_(t.ownerDocument,M,this.onCropEnd),e.responsive&&_(window,"resize",this.onResize)}},ft={resize:function(){if(!this.disabled){var t,e,i=this.options,a=this.container,n=this.containerData,o=a.offsetWidth/n.width;if(1!==o||a.offsetHeight!==n.height)i.restore&&(t=this.getCanvasData(),e=this.getCropBoxData()),this.render(),i.restore&&(this.setCanvasData(S(t,function(e,i){t[i]=e*o})),this.setCropBoxData(S(e,function(t,i){e[i]=t*o})))}},dblclick:function(){var t,e;this.disabled||"none"===this.options.dragMode||this.setDragMode((t=this.dragBox,e=p,(t.classList?t.classList.contains(e):t.className.indexOf(e)>-1)?"move":"crop"))},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout(function(){e.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(E(e)&&1!==e||E(i)&&0!==i||t.ctrlKey))){var a,n=this.options,o=this.pointers;t.changedTouches?S(t.changedTouches,function(t){o[t.identifier]=st(t)}):o[t.pointerId||0]=st(t),a=Object.keys(o).length>1&&n.zoomable&&n.zoomOnTouch?"zoom":G(t.target,w),C.test(a)&&!1!==et(this.element,"cropstart",{originalEvent:t,action:a})&&(t.preventDefault(),this.action=a,this.cropping=!1,"crop"===a&&(this.cropping=!0,q(this.dragBox,f)))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==et(this.element,"cropmove",{originalEvent:t,action:e})&&(t.changedTouches?S(t.changedTouches,function(t){j(i[t.identifier]||{},st(t,!0))}):j(i[t.pointerId||0]||{},st(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?S(t.changedTouches,function(t){delete i[t.identifier]}):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,Q(this.dragBox,f,this.cropped&&this.options.modal)),et(this.element,"cropend",{originalEvent:t,action:e}))}}},vt={change:function(t){var e,i=this.options,a=this.canvasData,o=this.containerData,r=this.cropBoxData,h=this.pointers,s=this.action,c=i.aspectRatio,l=r.left,p=r.top,d=r.width,u=r.height,g=l+d,f=p+u,v=0,w=0,b=o.width,y=o.height,x=!0;!c&&t.shiftKey&&(c=d&&u?d/u:1),this.limited&&(v=r.minLeft,w=r.minTop,b=v+Math.min(o.width,a.width,a.left+a.width),y=w+Math.min(o.height,a.height,a.top+a.height));var M=h[Object.keys(h)[0]],C={x:M.endX-M.startX,y:M.endY-M.startY},D=function(t){switch(t){case"e":g+C.x>b&&(C.x=b-g);break;case"w":l+C.xy&&(C.y=y-f)}};switch(s){case"all":l+=C.x,p+=C.y;break;case"e":if(C.x>=0&&(g>=b||c&&(p<=w||f>=y))){x=!1;break}D("e"),(d+=C.x)<0&&(s="w",l-=d=-d),c&&(u=d/c,p+=(r.height-u)/2);break;case"n":if(C.y<=0&&(p<=w||c&&(l<=v||g>=b))){x=!1;break}D("n"),u-=C.y,p+=C.y,u<0&&(s="s",p-=u=-u),c&&(d=u*c,l+=(r.width-d)/2);break;case"w":if(C.x<=0&&(l<=v||c&&(p<=w||f>=y))){x=!1;break}D("w"),d-=C.x,l+=C.x,d<0&&(s="e",l-=d=-d),c&&(u=d/c,p+=(r.height-u)/2);break;case"s":if(C.y>=0&&(f>=y||c&&(l<=v||g>=b))){x=!1;break}D("s"),(u+=C.y)<0&&(s="n",p-=u=-u),c&&(d=u*c,l+=(r.width-d)/2);break;case"ne":if(c){if(C.y<=0&&(p<=w||g>=b)){x=!1;break}D("n"),u-=C.y,p+=C.y,d=u*c}else D("n"),D("e"),C.x>=0?gw&&(u-=C.y,p+=C.y):(u-=C.y,p+=C.y);d<0&&u<0?(s="sw",p-=u=-u,l-=d=-d):d<0?(s="nw",l-=d=-d):u<0&&(s="se",p-=u=-u);break;case"nw":if(c){if(C.y<=0&&(p<=w||l<=v)){x=!1;break}D("n"),u-=C.y,p+=C.y,d=u*c,l+=r.width-d}else D("n"),D("w"),C.x<=0?l>v?(d-=C.x,l+=C.x):C.y<=0&&p<=w&&(x=!1):(d-=C.x,l+=C.x),C.y<=0?p>w&&(u-=C.y,p+=C.y):(u-=C.y,p+=C.y);d<0&&u<0?(s="se",p-=u=-u,l-=d=-d):d<0?(s="ne",l-=d=-d):u<0&&(s="sw",p-=u=-u);break;case"sw":if(c){if(C.x<=0&&(l<=v||f>=y)){x=!1;break}D("w"),d-=C.x,l+=C.x,u=d/c}else D("s"),D("w"),C.x<=0?l>v?(d-=C.x,l+=C.x):C.y>=0&&f>=y&&(x=!1):(d-=C.x,l+=C.x),C.y>=0?f=0&&(g>=b||f>=y)){x=!1;break}D("e"),u=(d+=C.x)/c}else D("s"),D("e"),C.x>=0?g=0&&f>=y&&(x=!1):d+=C.x,C.y>=0?fMath.abs(i)&&(i=s)})}),i}(h),t),x=!1;break;case"crop":if(!C.x||!C.y){x=!1;break}e=it(this.cropper),l=M.startX-e.left,p=M.startY-e.top,d=r.minWidth,u=r.minHeight,C.x>0?s=C.y>0?"se":"ne":C.x<0&&(l-=d,s=C.y>0?"sw":"nw"),C.y<0&&(p-=u),this.cropped||($(this.cropBox,m),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}x&&(r.width=d,r.height=u,r.left=l,r.top=p,this.action=s,this.renderCropBox()),S(h,function(t){t.startX=t.endX,t.startY=t.endY})}},wt={crop:function(){return!this.ready||this.cropped||this.disabled||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&q(this.dragBox,f),$(this.cropBox,m),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=j({},this.initialImageData),this.canvasData=j({},this.initialCanvasData),this.cropBoxData=j({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(j(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),$(this.dragBox,f),q(this.cropBox,m)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,S(this.previews,function(e){e.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,$(this.cropper,d)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,q(this.cropper,d)),this},destroy:function(){var t=this.element;return t.cropper?(t.cropper=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,a=i.left,n=i.top;return this.moveTo(H(t)?t:a+Number(t),H(e)?e:n+Number(e))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(E(t)&&(i.left=t,a=!0),E(e)&&(i.top=e,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var a=this.options,n=this.canvasData,o=n.width,r=n.height,h=n.naturalWidth,s=n.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&a.zoomable){var c=h*t,l=s*t;if(!1===et(this.element,"zoom",{ratio:t,oldRatio:o/h,originalEvent:i}))return this;if(i){var p=this.pointers,d=it(this.cropper),m=p&&Object.keys(p).length?function(t){var e=0,i=0,a=0;return S(t,function(t){var n=t.startX,o=t.startY;e+=n,i+=o,a+=1}),{pageX:e/=a,pageY:i/=a}}(p):{pageX:i.pageX,pageY:i.pageY};n.left-=(c-o)*((m.pageX-d.left-n.left)/o),n.top-=(l-r)*((m.pageY-d.top-n.top)/r)}else L(e)&&E(e.x)&&E(e.y)?(n.left-=(c-o)*((e.x-n.left)/o),n.top-=(l-r)*((e.y-n.top)/r)):(n.left-=(c-o)/2,n.top-=(l-r)/2);n.width=c,n.height=l,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return E(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,E(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(E(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.imageData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(E(t)&&(i.scaleX=t,a=!0),E(e)&&(i.scaleY=e,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,a=this.imageData,n=this.canvasData,o=this.cropBoxData;if(this.ready&&this.cropped){t={x:o.left-n.left,y:o.top-n.top,width:o.width,height:o.height};var r=a.width/a.naturalWidth;if(S(t,function(e,i){t[i]=e/r}),e){var h=Math.round(t.y+t.height),s=Math.round(t.x+t.width);t.x=Math.round(t.x),t.y=Math.round(t.y),t.width=s-t.x,t.height=h-t.y}}else t={x:0,y:0,width:0,height:0};return i.rotatable&&(t.rotate=a.rotate||0),i.scalable&&(t.scaleX=a.scaleX||1,t.scaleY=a.scaleY||1),t},setData:function(t){var e=this.options,i=this.imageData,a=this.canvasData,n={};if(this.ready&&!this.disabled&&L(t)){var o=!1;e.rotatable&&E(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,o=!0),e.scalable&&(E(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,o=!0),E(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var r=i.width/i.naturalWidth;E(t.x)&&(n.left=t.x*r+a.left),E(t.y)&&(n.top=t.y*r+a.top),E(t.width)&&(n.width=t.width*r),E(t.height)&&(n.height=t.height*r),this.setCropBoxData(n)}return this},getContainerData:function(){return this.ready?j({},this.containerData):{}},getImageData:function(){return this.sized?j({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&S(["left","top","width","height","naturalWidth","naturalHeight"],function(i){e[i]=t[i]}),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&L(t)&&(E(t.left)&&(e.left=t.left),E(t.top)&&(e.top=t.top),E(t.width)?(e.width=t.width,e.height=t.width/i):E(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t,e=this.cropBoxData;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(t){var e,i,a=this.cropBoxData,n=this.options.aspectRatio;return this.ready&&this.cropped&&!this.disabled&&L(t)&&(E(t.left)&&(a.left=t.left),E(t.top)&&(a.top=t.top),E(t.width)&&t.width!==a.width&&(e=!0,a.width=t.width),E(t.height)&&t.height!==a.height&&(i=!0,a.height=t.height),n&&(e?a.height=a.width/n:i&&(a.width=a.height*n)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=function(t,e,i,a){var n=e.aspectRatio,r=e.naturalWidth,h=e.naturalHeight,s=e.rotate,c=void 0===s?0:s,l=e.scaleX,p=void 0===l?1:l,d=e.scaleY,m=void 0===d?1:d,u=i.aspectRatio,g=i.naturalWidth,f=i.naturalHeight,v=a.fillColor,w=void 0===v?"transparent":v,b=a.imageSmoothingEnabled,y=void 0===b||b,x=a.imageSmoothingQuality,M=void 0===x?"low":x,C=a.maxWidth,D=void 0===C?1/0:C,B=a.maxHeight,k=void 0===B?1/0:B,O=a.minWidth,T=void 0===O?0:O,E=a.minHeight,W=void 0===E?0:E,H=document.createElement("canvas"),N=H.getContext("2d"),z=ct({aspectRatio:u,width:D,height:k}),L=ct({aspectRatio:u,width:T,height:W},"cover"),Y=Math.min(z.width,Math.max(L.width,g)),X=Math.min(z.height,Math.max(L.height,f)),R=ct({aspectRatio:n,width:D,height:k}),S=ct({aspectRatio:n,width:T,height:W},"cover"),j=Math.min(R.width,Math.max(S.width,r)),A=Math.min(R.height,Math.max(S.height,h)),P=[-j/2,-A/2,j,A];return H.width=I(Y),H.height=I(X),N.fillStyle=w,N.fillRect(0,0,Y,X),N.save(),N.translate(Y/2,X/2),N.rotate(c*Math.PI/180),N.scale(p,m),N.imageSmoothingEnabled=y,N.imageSmoothingQuality=M,N.drawImage.apply(N,[t].concat(o(P.map(function(t){return Math.floor(I(t))})))),N.restore(),H}(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(),n=a.x,r=a.y,h=a.width,s=a.height,c=i.width/Math.floor(e.naturalWidth);1!==c&&(n*=c,r*=c,h*=c,s*=c);var l=h/s,p=ct({aspectRatio:l,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),d=ct({aspectRatio:l,width:t.minWidth||0,height:t.minHeight||0},"cover"),m=ct({aspectRatio:l,width:t.width||(1!==c?i.width:h),height:t.height||(1!==c?i.height:s)}),u=m.width,g=m.height;u=Math.min(p.width,Math.max(d.width,u)),g=Math.min(p.height,Math.max(d.height,g));var f=document.createElement("canvas"),v=f.getContext("2d");f.width=I(u),f.height=I(g),v.fillStyle=t.fillColor||"transparent",v.fillRect(0,0,u,g);var w=t.imageSmoothingEnabled,b=void 0===w||w,y=t.imageSmoothingQuality;v.imageSmoothingEnabled=b,y&&(v.imageSmoothingQuality=y);var x,M,C,D,B,k,O=i.width,T=i.height,E=n,W=r;E<=-h||E>O?(E=0,x=0,C=0,B=0):E<=0?(C=-E,E=0,B=x=Math.min(O,h+E)):E<=O&&(C=0,B=x=Math.min(h,O-E)),x<=0||W<=-s||W>T?(W=0,M=0,D=0,k=0):W<=0?(D=-W,W=0,k=M=Math.min(T,s+W)):W<=T&&(D=0,k=M=Math.min(s,T-W));var H=[E,W,x,M];if(B>0&&k>0){var N=u/h;H.push(C*N,D*N,B*N,k*N)}return v.drawImage.apply(v,[i].concat(o(H.map(function(t){return Math.floor(I(t))})))),f},setAspectRatio:function(t){var e=this.options;return this.disabled||H(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.ready&&!this.disabled){var n="crop"===t,o=e.movable&&"move"===t;t=n||o?t:"none",e.dragMode=t,V(i,w,t),Q(i,p,n),Q(i,v,o),e.cropBoxMovable||(V(a,w,t),Q(a,p,n),Q(a,v,o))}return this}},bt=s.Cropper,yt=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!e||!k.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=j({},O,L(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}var i,a,n;return i=t,n=[{key:"noConflict",value:function(){return window.Cropper=bt,t}},{key:"setDefaults",value:function(t){j(O,L(t)&&t)}}],(a=[{key:"init",value:function(){var t,e=this.element,i=e.tagName.toLowerCase();if(!e.cropper){if(e.cropper=this,"img"===i){if(this.isImg=!0,t=e.getAttribute("src")||"",this.originalUrl=t,!t)return;t=e.src}else"canvas"===i&&window.HTMLCanvasElement&&(t=e.toDataURL());this.load(t)}}},{key:"load",value:function(t){var e=this;if(t){this.url=t,this.imageData={};var i=this.element,a=this.options;if(a.rotatable||a.scalable||(a.checkOrientation=!1),a.checkOrientation&&window.ArrayBuffer)if(D.test(t))B.test(t)?this.read((n=t.replace(pt,""),o=atob(n),r=new ArrayBuffer(o.length),S(h=new Uint8Array(r),function(t,e){h[e]=o.charCodeAt(e)}),r)):this.clone();else{var n,o,r,h,s=new XMLHttpRequest,c=this.clone.bind(this);this.reloading=!0,this.xhr=s,s.onabort=c,s.onerror=c,s.ontimeout=c,s.onprogress=function(){"image/jpeg"!==s.getResponseHeader("content-type")&&s.abort()},s.onload=function(){e.read(s.response)},s.onloadend=function(){e.reloading=!1,e.xhr=null},a.checkCrossOrigin&&ot(t)&&i.crossOrigin&&(t=rt(t)),s.open("GET",t,!0),s.responseType="arraybuffer",s.withCredentials="use-credentials"===i.crossOrigin,s.send()}else this.clone()}}},{key:"read",value:function(t){var e=this.options,i=this.imageData,a=dt(t),n=0,o=1,r=1;if(a>1){this.url=function(t,e){for(var i=[],a=new Uint8Array(t);a.length>0;)i.push(lt.apply(null,R(a.subarray(0,8192)))),a=a.subarray(8192);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}(t,"image/jpeg");var h=function(t){var e=0,i=1,a=1;switch(t){case 2:i=-1;break;case 3:e=-180;break;case 4:a=-1;break;case 5:e=90,a=-1;break;case 6:e=90;break;case 7:e=90,i=-1;break;case 8:e=-90}return{rotate:e,scaleX:i,scaleY:a}}(a);n=h.rotate,o=h.scaleX,r=h.scaleY}e.rotatable&&(i.rotate=n),e.scalable&&(i.scaleX=o,i.scaleY=r),this.clone()}},{key:"clone",value:function(){var t=this.element,e=this.url,i=t.crossOrigin,a=e;this.options.checkCrossOrigin&&ot(e)&&(i||(i="anonymous"),a=rt(e)),this.crossOrigin=i,this.crossOriginUrl=a;var n=document.createElement("img");i&&(n.crossOrigin=i),n.src=a||e,n.alt=t.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),q(n,u),t.parentNode.insertBefore(n,t.nextSibling)}},{key:"start",value:function(){var t=this,e=this.image;e.onload=null,e.onerror=null,this.sizing=!0;var i=s.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(s.navigator.userAgent),a=function(e,i){j(t.imageData,{naturalWidth:e,naturalHeight:i,aspectRatio:e/i}),t.initialImageData=j({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(!e.naturalWidth||i){var n=document.createElement("img"),o=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){a(n.width,n.height),i||o.removeChild(n)},n.src=e.src,i||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",o.appendChild(n))}else a(e.naturalWidth,e.naturalHeight)}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(this.sized&&!this.ready){var t=this.element,e=this.options,i=this.image,a=t.parentNode,n=document.createElement("div");n.innerHTML='
    ';var o=n.querySelector(".".concat("cropper","-container")),r=o.querySelector(".".concat("cropper","-canvas")),h=o.querySelector(".".concat("cropper","-drag-box")),s=o.querySelector(".".concat("cropper","-crop-box")),c=s.querySelector(".".concat("cropper","-face"));this.container=a,this.cropper=o,this.canvas=r,this.dragBox=h,this.cropBox=s,this.viewBox=o.querySelector(".".concat("cropper","-view-box")),this.face=c,r.appendChild(i),q(t,m),a.insertBefore(o,t.nextSibling),this.isImg||$(i,u),this.initPreview(),this.bind(),e.initialAspectRatio=Math.max(0,e.initialAspectRatio)||NaN,e.aspectRatio=Math.max(0,e.aspectRatio)||NaN,e.viewMode=Math.max(0,Math.min(3,Math.round(e.viewMode)))||0,q(s,m),e.guides||q(s.getElementsByClassName("".concat("cropper","-dashed")),m),e.center||q(s.getElementsByClassName("".concat("cropper","-center")),m),e.background&&q(o,"".concat("cropper","-bg")),e.highlight||q(c,g),e.cropBoxMovable&&(q(c,v),V(c,w,"all")),e.cropBoxResizable||(q(s.getElementsByClassName("".concat("cropper","-line")),m),q(s.getElementsByClassName("".concat("cropper","-point")),m)),this.render(),this.ready=!0,this.setDragMode(e.dragMode),e.autoCrop&&this.crop(),this.setData(e.data),Y(e.ready)&&tt(t,"ready",e.ready,{once:!0}),et(t,"ready")}}},{key:"unbuild",value:function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),$(this.element,m))}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}])&&e(i.prototype,a),n&&e(i,n),t}();return j(yt.prototype,mt,ut,gt,ft,vt,wt),yt}); +},{}],"gzqx":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("cropperjs"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=e[o]);return r}var n="undefined"==typeof window?[String,Array]:[String,Array,Element,NodeList];exports.default={render:function(e){var t=this.crossorigin||void 0;return e("div",{style:this.containerStyle},[e("img",{ref:"img",attrs:{src:this.src,alt:this.alt||"image",style:"max-width: 100%",crossorigin:t},on:this.$listeners,style:this.imgStyle})])},props:{containerStyle:Object,src:{type:String,default:""},alt:String,imgStyle:Object,viewMode:Number,dragMode:String,initialAspectRatio:Number,aspectRatio:Number,data:Object,preview:n,responsive:{type:Boolean,default:!0},restore:{type:Boolean,default:!0},checkCrossOrigin:{type:Boolean,default:!0},checkOrientation:{type:Boolean,default:!0},crossorigin:{type:String},modal:{type:Boolean,default:!0},guides:{type:Boolean,default:!0},center:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0},background:{type:Boolean,default:!0},autoCrop:{type:Boolean,default:!0},autoCropArea:Number,movable:{type:Boolean,default:!0},rotatable:{type:Boolean,default:!0},scalable:{type:Boolean,default:!0},zoomable:{type:Boolean,default:!0},zoomOnTouch:{type:Boolean,default:!0},zoomOnWheel:{type:Boolean,default:!0},wheelZoomRatio:Number,cropBoxMovable:{type:Boolean,default:!0},cropBoxResizable:{type:Boolean,default:!0},toggleDragModeOnDblclick:{type:Boolean,default:!0},minCanvasWidth:Number,minCanvasHeight:Number,minCropBoxWidth:Number,minCropBoxHeight:Number,minContainerWidth:Number,minContainerHeight:Number,ready:Function,cropstart:Function,cropmove:Function,cropend:Function,crop:Function,zoom:Function},mounted:function(){var e=this.$options.props,r=(e.containerStyle,e.src,e.alt,e.imgStyle,o(e,["containerStyle","src","alt","imgStyle"])),n={};for(var a in r)void 0!==this[a]&&(n[a]=this[a]);this.cropper=new t.default(this.$refs.img,n)},methods:{reset:function(){return this.cropper.reset()},clear:function(){return this.cropper.clear()},initCrop:function(){return this.cropper.crop()},replace:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.cropper.replace(e,t)},enable:function(){return this.cropper.enable()},disable:function(){return this.cropper.disable()},destroy:function(){return this.cropper.destroy()},move:function(e,t){return this.cropper.move(e,t)},moveTo:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return this.cropper.moveTo(e,t)},relativeZoom:function(e,t){return this.cropper.zoom(e,t)},zoomTo:function(e,t){return this.cropper.zoomTo(e,t)},rotate:function(e){return this.cropper.rotate(e)},rotateTo:function(e){return this.cropper.rotateTo(e)},scaleX:function(e){return this.cropper.scaleX(e)},scaleY:function(e){return this.cropper.scaleY(e)},scale:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return this.cropper.scale(e,t)},getData:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.cropper.getData(e)},setData:function(e){return this.cropper.setData(e)},getContainerData:function(){return this.cropper.getContainerData()},getImageData:function(){return this.cropper.getImageData()},getCanvasData:function(){return this.cropper.getCanvasData()},setCanvasData:function(e){return this.cropper.setCanvasData(e)},getCropBoxData:function(){return this.cropper.getCropBoxData()},setCropBoxData:function(e){return this.cropper.setCropBoxData(e)},getCroppedCanvas:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.cropper.getCroppedCanvas(e)},setAspectRatio:function(e){return this.cropper.setAspectRatio(e)},setDragMode:function(e){return this.cropper.setDragMode(e)}}}; +},{"cropperjs":"iUPs"}],"c7uD":[function(require,module,exports) { + +},{}],"Amhf":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("vue-cropperjs"));function t(e){return e&&e.__esModule?e:{default:e}}require("cropperjs/dist/cropper.css");var i={components:{VueCropper:e.default},props:{label:String,image:String,value:Object,minSize:Object,preserveAspectRatio:Boolean,isCropping:Boolean},computed:{data:function(){return this.value},aspectRatio:function(){return this.preserveAspectRatio?this.minSize.width/this.minSize.height:NaN}},watch:{value:function(){this.isCropping||this.$refs.cropper.setData(this.value)}},methods:{cropmove:function(e){var t=!1,i=this.$refs.cropper.getData(!0);this.isCropping=!0,i.widthimageInfo = getimagesize($filename); + $this->memoryLimit = self::getMemory(); + $this->setMemory(); + self::$runCount++; + self::setExecutionTime(); + parent::__construct($filename); + } + + /** + * Inspired by corey34 seen at https://github.com/gumlet/php-image-resize/issues/55#issuecomment-437035599 + */ + public function setMemory() { + if($this->memoryLimit == -1){ + return $this; + } else { + $w = max($this->imageInfo[0], $this->dest_w, $this->source_w, $this->original_w, 1); + $h = max($this->imageInfo[1], $this->dest_h, $this->source_h, $this->original_h, 1); + + if (array_key_exists("channels", $this->imageInfo)) { + $channels = $this->imageInfo['channels']; + } else { + $channels = 3; + } + + $memoryNeeded = round(($w * $h * $this->imageInfo['bits'] * $channels / 8 + self::K64) * self::TWEAKFACTOR); + + $memoryUsage = memory_get_usage(true); + $newLimit = $memoryUsage + $memoryNeeded; + + if ($newLimit > $this->memoryLimit) { + $newLimit = ceil($newLimit / self::MB); + ini_set( 'memory_limit', $newLimit . "M" ); + $this->memoryLimit = $newLimit; + return $this; + } else { + return $this; + } + } + } + + private static function setExecutionTime(){ + $val = (int)ini_get('max_execution_time'); + set_time_limit($val + self::$runCount * self::INCREASE_SEC); + } + + private static function getMemory() { + $val = ini_get('memory_limit'); + $val = trim($val); + $last = strtolower($val[strlen($val)-1]); + $val = (int)$val; + + switch($last) { + // The 'G' modifier is available since PHP 5.1.0 + case 'g': + $val *= 1024; + case 'm': + $val *= 1024; + case 'k': + $val *= 1024; + } + + return $val; + } +} \ No newline at end of file diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/package-lock.json b/site/plugins/kirby-plugin-image-crop-field-2.0.5/package-lock.json new file mode 100644 index 0000000..4a6a2a3 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/package-lock.json @@ -0,0 +1,9361 @@ +{ + "name": "kirby-plugin-image-crop-field", + "version": "2.0.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", + "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==", + "dev": true + }, + "@babel/core": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", + "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.15", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.14", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", + "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "dev": true, + "requires": { + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", + "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/parser": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz", + "integrity": "sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==", + "dev": true + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", + "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz", + "integrity": "sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-flow": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz", + "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.13.12" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + } + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.15.tgz", + "integrity": "sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.14", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz", + "integrity": "sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.15", + "@babel/types": "^7.13.14", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + } + }, + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dev": true, + "requires": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", + "dev": true + }, + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + } + } + }, + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@vue/component-compiler-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", + "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ajv": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", + "dev": true, + "requires": { + "entities": "^1.1.2" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "browserslist": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", + "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001271", + "electron-to-chromium": "^1.3.878", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "dependencies": { + "electron-to-chromium": { + "version": "1.3.885", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.885.tgz", + "integrity": "sha512-JXKFJcVWrdHa09n4CNZYfYaK6EW5aAew7/wr3L1OnsD1L+JHL+RCtd7QgIsxUbFPeTwPlvnpqNNTOLkoefmtXg==", + "dev": true + } + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001274", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001274.tgz", + "integrity": "sha512-+Nkvv0fHyhISkiMIjnyjmf5YJcQ1IQHZN6U9TLUMroWR38FNwpsC51Gb68yueafX1V6ifOisInSgP9WJFS13ew==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "core-js-compat": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.1.tgz", + "integrity": "sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg==", + "dev": true, + "requires": { + "browserslist": "^4.16.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cropperjs": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.11.tgz", + "integrity": "sha512-SJUeBBhtNBnnn+UrLKluhFRIXLJn7XFPv8QN1j49X5t+BIMwkgvDev541f96bmu8Xe0TgCx3gON22KmY/VddaA==" + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "deasync": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", + "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "denque": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", + "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.345", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz", + "integrity": "sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "dev": true + }, + "htmlnano": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", + "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", + "dev": true, + "requires": { + "cssnano": "^4.1.11", + "posthtml": "^0.15.1", + "purgecss": "^2.3.0", + "relateurl": "^0.2.7", + "srcset": "^3.0.0", + "svgo": "^1.3.2", + "terser": "^5.6.1", + "timsort": "^0.3.0", + "uncss": "^0.17.3" + }, + "dependencies": { + "posthtml": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.1.tgz", + "integrity": "sha512-QSnUnvnnRv+wt7T9igqNG7GPcc+ZsbX93X+9aPldzgiuQfqIXTbnD47FY8pAtq4gjB9QZrDadDuG8jusmOPpYA==", + "dev": true, + "requires": { + "posthtml-parser": "^0.6.0", + "posthtml-render": "^1.2.3" + } + }, + "posthtml-parser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.6.0.tgz", + "integrity": "sha512-5ffwKQNgtVHdhZniWxu+1ryvaZv5l25HPLUV6W5xy5nYVWMXtvjtwRnbSpfbKFvbyl7XI+d4AqkjmonkREqnXA==", + "dev": true, + "requires": { + "htmlparser2": "^5.0.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + } + } + }, + "htmlparser2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.3.0", + "domutils": "^2.4.2", + "entities": "^2.0.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", + "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.1.0.tgz", + "integrity": "sha512-/6/kmsGlMY4Tup/nGVutdrK9yQi4YjWVcVeoQmixpzjOUK1U7pQkvAPHBJeUxOgxF0J8f8lwCJSlCfD0V4CMGQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domutils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.2.tgz", + "integrity": "sha512-MHTthCb1zj8f1GVfRpeZUbohQf/HdBos0oX5gZcQFepOZPLLRyj6Wn7XS7EMnY7CVpwv8863u2vyE83Hfu28HQ==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.1.0" + }, + "dependencies": { + "domhandler": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.1.0.tgz", + "integrity": "sha512-/6/kmsGlMY4Tup/nGVutdrK9yQi4YjWVcVeoQmixpzjOUK1U7pQkvAPHBJeUxOgxF0J8f8lwCJSlCfD0V4CMGQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dev": true, + "requires": { + "html-tags": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz", + "integrity": "sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parcel-bundler": { + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz", + "integrity": "sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.10.0", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + }, + "dependencies": { + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "posthtml-render": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.3.1.tgz", + "integrity": "sha512-eSToKjNLu0FiF76SSGMHjOFXYzAc/CJqi677Sq6hYvcvFCBtD6de/W5l+0IYPf7ypscqAfjCttxvTdMJt5Gj8Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", + "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "dev": true, + "requires": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "redis": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", + "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", + "requires": { + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + }, + "dependencies": { + "redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "requires": { + "redis-errors": "^1.0.0" + } + } + } + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" + }, + "redis-url": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/redis-url/-/redis-url-0.2.0.tgz", + "integrity": "sha1-G3otrMw+qCZLH7ZWwNkB2cqcVHA=", + "requires": { + "redis": ">= 0.0.1" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.43.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", + "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0" + } + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, + "sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", + "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", + "dev": true + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "src": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/src/-/src-1.1.2.tgz", + "integrity": "sha1-eKvdHAjKyibMbPRb1YC1bZOs+38=", + "requires": { + "redis-url": "~0.2.0", + "underscore": "~1.6.0", + "uuid": "~1.4.1" + } + }, + "srcset": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.0.tgz", + "integrity": "sha512-D59vF08Qzu/C4GAOXVgMTLfgryt5fyWo93FZyhEWANo0PokFz/iWdDe13mX3O5TRf6l8vMTqckAfR4zPiaH0yQ==", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "dev": true, + "requires": { + "escodegen": "^1.11.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + }, + "dependencies": { + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dev": true, + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "uuid": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-1.4.2.tgz", + "integrity": "sha1-RTAZ9oaWam34PNxSROfJkOzDMvw=" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" + }, + "vue-cropperjs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vue-cropperjs/-/vue-cropperjs-4.2.0.tgz", + "integrity": "sha512-dvwCBtjGMiznkNIK2GFd1SQm1x+wmtWg4g4t+NrJSPj/fpHnubXxAUOIvY7lMFeR2lawRLsigCaGZrcXCzuTKA==", + "requires": { + "cropperjs": "^1.5.6" + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + } + } +} diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/package.json b/site/plugins/kirby-plugin-image-crop-field-2.0.5/package.json new file mode 100644 index 0000000..b74b316 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/package.json @@ -0,0 +1,42 @@ +{ + "name": "kirby-plugin-image-crop-field", + "description": "A image cropping field for kirby.", + "author": "Rico Steiner ", + "version": "2.0.5", + "type": "kirby-field", + "license": "MIT", + "scripts": { + "watch": "parcel watch src/main.js --out-dir ./ --out-file index.js --no-source-maps", + "build": "parcel build src/main.js --out-dir ./ --out-file index.js --no-source-maps" + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "last 2 versions" + ], + "posthtml": { + "recognizeSelfClosing": true + }, + "devDependencies": { + "@vue/component-compiler-utils": "^2.3.0", + "babel-core": "^6.26.3", + "babel-preset-env": "^1.7.0", + "browserslist": "^4.17.5", + "caniuse-lite": "^1.0.30001274", + "node-sass": "^4.14.1", + "parcel-bundler": "^1.12.5", + "sass": "^1.43.4", + "sass-loader": "^7.3.1", + "stylus": "^0.54.8", + "vue-hot-reload-api": "^2.3.4", + "vue-template-compiler": "^2.6.14" + }, + "dependencies": { + "src": "^1.1.2", + "vue": "^2.6.14", + "vue-cropperjs": "^4.2.0" + } +} diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/src/fields/ImageCrop.vue b/site/plugins/kirby-plugin-image-crop-field-2.0.5/src/fields/ImageCrop.vue new file mode 100644 index 0000000..1a0040e --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/src/fields/ImageCrop.vue @@ -0,0 +1,110 @@ + + + \ No newline at end of file diff --git a/site/plugins/kirby-plugin-image-crop-field-2.0.5/src/main.js b/site/plugins/kirby-plugin-image-crop-field-2.0.5/src/main.js new file mode 100644 index 0000000..3be1ca0 --- /dev/null +++ b/site/plugins/kirby-plugin-image-crop-field-2.0.5/src/main.js @@ -0,0 +1,8 @@ +import ImageCrop from './fields/ImageCrop.vue' + + +panel.plugin("steirico/kirby-plugin-image-crop-field", { + fields: { + imagecrop: ImageCrop + } +}); diff --git a/site/plugins/kql-2.1.0/LICENSE.md b/site/plugins/kql-2.1.0/LICENSE.md new file mode 100755 index 0000000..4ebd321 --- /dev/null +++ b/site/plugins/kql-2.1.0/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Bastian Allgeier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/site/plugins/kql-2.1.0/README.md b/site/plugins/kql-2.1.0/README.md new file mode 100755 index 0000000..1e10ec2 --- /dev/null +++ b/site/plugins/kql-2.1.0/README.md @@ -0,0 +1,987 @@ +# Kirby QL + +Kirby's Query Language API combines the flexibility of Kirby's data structures, the power of GraphQL and the simplicity of REST. + +The Kirby QL API takes POST requests with standard JSON objects and returns highly customized results that fit your application. + +## Playground + +You can play in our [KQL sandbox](https://kql.getkirby.com). The sandbox is based on the Kirby starterkit. + +> ℹ️ Source code of the playground is [available on GitHub](https://github.com/getkirby/kql.getkirby.com). + +## Example + +Given a POST request to: `/api/query` + +```json +{ + "query": "page('photography').children", + "select": { + "url": true, + "title": true, + "text": "page.text.markdown", + "images": { + "query": "page.images", + "select": { + "url": true + } + } + }, + "pagination": { + "limit": 10 + } +} +``` + +
    +🆗 Response + +```json +{ + "code": 200, + "result": { + "data": [ + { + "url": "https://example.com/photography/trees", + "title": "Trees", + "text": "Lorem ipsum …", + "images": [ + { + "url": "https://example.com/media/pages/photography/trees/1353177920-1579007734/cheesy-autumn.jpg" + }, + { + "url": "https://example.com/media/pages/photography/trees/1940579124-1579007734/last-tree-standing.jpg" + }, + { + "url": "https://example.com/media/pages/photography/trees/3506294441-1579007734/monster-trees-in-the-fog.jpg" + } + ] + }, + { + "url": "https://example.com/photography/sky", + "title": "Sky", + "text": "

    Dolor sit amet

    …", + "images": [ + { + "url": "https://example.com/media/pages/photography/sky/183363500-1579007734/blood-moon.jpg" + }, + { + "url": "https://example.com/media/pages/photography/sky/3904851178-1579007734/coconut-milkyway.jpg" + } + ] + } + ], + "pagination": { + "page": 1, + "pages": 1, + "offset": 0, + "limit": 10, + "total": 2 + } + }, + "status": "ok" +} +``` + +
    + +## Installation + +### Manual + +[Download](https://github.com/getkirby/kql/releases) and copy this repository to `/site/plugins/kql` of your Kirby installation. + +### Composer + +```bash +composer require getkirby/kql +``` + +## Documentation + +### API Endpoint + +KQL adds a new `query` API endpoint to your Kirby API (i.e. `yoursite.com/api/query`). This endpoint [requires authentication](https://getkirby.com/docs/guide/api/authentication). + +You can switch off authentication in your config at your own risk: + +```php +return [ + 'kql' => [ + 'auth' => false + ] +]; +``` + +### Sending POST Requests + +You can use any HTTP request library in your language of choice to make regular POST requests to your `/api/query` endpoint. In this example, we are using [the `fetch` API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) and JavaScript to retrieve data from our Kirby installation. + +```js +const api = "https://yoursite.com/api/query"; +const username = "apiuser"; +const password = "strong-secret-api-password"; + +const headers = { + Authorization: "Basic " + Buffer.from(`${username}:${password}`).toString("base64"), + "Content-Type": "application/json", + Accept: "application/json", +}; + +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('notes').children", + select: { + title: true, + text: "page.text.kirbytext", + slug: true, + date: "page.date.toDate('d.m.Y')", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +### `query` + +With the query, you can fetch data from anywhere in your Kirby site. You can query fields, pages, files, users, languages, roles and more. + +#### Queries Without Selects + +When you don't pass the select option, Kirby will try to come up with the most useful result set for you. This is great for simple queries. + +##### Fetching the Site Title + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.title", + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: "Kirby Starterkit", + status: "ok" +} +``` + +
    + +##### Fetching a List of Page IDs + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.children", + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: [ + "photography", + "notes", + "about", + "error", + "home" + ], + status: "ok" +} +``` + +
    + +#### Running Field Methods + +Queries can even execute field methods. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.title.upper", + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: "KIRBY STARTERKIT", + status: "ok" +} +``` + +
    + +### `select` + +KQL becomes really powerful by its flexible way to control the result set with the select option. + +#### Select Single Properties and Fields + +To include a property or field in your results, list them as an array. Check out our [reference for available properties](https://getkirby.com/docs/reference) for pages, users, files, etc. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.children", + select: ["title", "url"], + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Photography", + url: "/photography" + }, + { + title: "Notes", + url: "/notes" + }, + { + title: "About us", + url: "/about" + }, + { + title: "Error", + url: "/error" + }, + { + title: "Home", + url: "/" + } + ], + pagination: { + page: 1, + pages: 1, + offset: 0, + limit: 100, + total: 5 + } + }, + status: "ok" +} +``` + +
    + +You can also use the object notation and pass true for each key/property you want to include. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.children", + select: { + title: true, + url: true, + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Photography", + url: "/photography" + }, + { + title: "Notes", + url: "/notes" + }, + { + title: "About us", + url: "/about" + }, + { + title: "Error", + url: "/error" + }, + { + title: "Home", + url: "/" + } + ], + pagination: { ... } + }, + status: "ok" +} +``` + +
    + +#### Using Queries for Properties and Fields + +Instead of passing true, you can also pass a string query to specify what you want to return for each key in your select object. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.children", + select: { + title: "page.title", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Photography", + }, + { + title: "Notes", + }, + ... + ], + pagination: { ... } + }, + status: "ok" +} +``` + +
    + +#### Executing Field Methods + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site.children", + select: { + title: "page.title.upper", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "PHOTOGRAPHY", + }, + { + title: "NOTES", + }, + ... + ], + pagination: { ... } + }, + status: "ok" +} +``` + +
    + +#### Creating Aliases + +String queries are a perfect way to create aliases or return variations of the same field or property multiple times. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('notes').children", + select: { + title: "page.title", + upperCaseTitle: "page.title.upper", + lowerCaseTitle: "page.title.lower", + guid: "page.id", + date: "page.date.toDate('d.m.Y')", + timestamp: "page.date.toTimestamp", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Explore the universe", + upperCaseTitle: "EXPLORE THE UNIVERSE", + lowerCaseTitle: "explore the universe", + guid: "notes/explore-the-universe", + date: "21.04.2018", + timestamp: 1524316200 + }, + { ... }, + { ... }, + ... + ], + pagination: { ... } + }, + status: "ok" +} +``` + +
    + +#### Subqueries + +With such string queries you can of course also include nested data + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('photography').children", + select: { + title: "page.title", + images: "page.images", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Trees", + images: [ + "photography/trees/cheesy-autumn.jpg", + "photography/trees/last-tree-standing.jpg", + "photography/trees/monster-trees-in-the-fog.jpg", + "photography/trees/sharewood-forest.jpg", + "photography/trees/stay-in-the-car.jpg" + ] + }, + { ... }, + { ... }, + ... + ], + pagination: { ... } + }, + status: "ok" +} +``` + +
    + +#### Subqueries With Selects + +You can also pass an object with a `query` and a `select` option + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('photography').children", + select: { + title: "page.title", + images: { + query: "page.images", + select: { + filename: true, + }, + }, + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Trees", + images: { + { + filename: "cheesy-autumn.jpg" + }, + { + filename: "last-tree-standing.jpg" + }, + { + filename: "monster-trees-in-the-fog.jpg" + }, + { + filename: "sharewood-forest.jpg" + }, + { + filename: "stay-in-the-car.jpg" + } + } + }, + { ... }, + { ... }, + ... + ], + pagination: { ... } + }, + status: "ok" +} +``` + +
    + +### Pagination + +Whenever you query a collection (pages, files, users, roles, languages) you can limit the resultset and also paginate through entries. You've probably already seen the pagination object in the results above. It is included in all results for collections, even if you didn't specify any pagination settings. + +#### `limit` + +You can specify a custom limit with the limit option. The default limit for collections is 100 entries. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('notes').children", + pagination: { + limit: 5, + }, + select: { + title: "page.title", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Across the ocean" + }, + { + title: "A night in the forest" + }, + { + title: "In the jungle of Sumatra" + }, + { + title: "Through the desert" + }, + { + title: "Himalaya and back" + } + ], + pagination: { + page: 1, + pages: 2, + offset: 0, + limit: 5, + total: 7 + } + }, + status: "ok" +} +``` + +
    + +#### `page` + +You can jump to any page in the resultset with the `page` option. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('notes').children", + pagination: { + page: 2, + limit: 5, + }, + select: { + title: "page.title", + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +
    +🆗 Response + +```js +{ + code: 200, + result: { + data: [ + { + title: "Chasing waterfalls" + }, + { + title: "Exploring the universe" + } + ], + pagination: { + page: 2, + pages: 2, + offset: 5, + limit: 5, + total: 7 + } + }, + status: "ok" +} +``` + +
    + +### Pagination in Subqueries + +Pagination settings also work for subqueries. + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "page('photography').children", + select: { + title: "page.title", + images: { + query: "page.images", + pagination: { + page: 2, + limit: 5, + }, + select: { + filename: true, + }, + }, + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +### Multiple Queries in a Single Call + +With the power of selects and subqueries you can basically query the entire site in a single request + +```js +const response = await fetch(api, { + method: "post", + body: JSON.stringify({ + query: "site", + select: { + title: "site.title", + url: "site.url", + notes: { + query: "page('notes').children.listed", + select: { + title: true, + url: true, + date: "page.date.toDate('d.m.Y')", + text: "page.text.kirbytext", + }, + }, + photography: { + query: "page('photography').children.listed", + select: { + title: true, + images: { + query: "page.images", + select: { + url: true, + alt: true, + caption: "file.caption.kirbytext", + }, + }, + }, + }, + about: { + text: "page.text.kirbytext", + }, + }, + }), + headers, +}); + +console.log(await response.json()); +``` + +### Allowing Methods + +KQL is very strict with allowed methods by default. Custom page methods, file methods or model methods are not allowed to make sure you don't miss an important security issue by accident. You can allow additional methods though. + +#### Allow List + +The most straight forward way is to define allowed methods in your config. + +```php +return [ + 'kql' => [ + 'methods' => [ + 'allowed' => [ + 'MyCustomPage::cover' + ] + ] + ] +]; +``` + +#### DocBlock Comment + +You can also add a comment to your methods' doc blocks to allow them: + +```php +class MyCustomPage extends Page +{ + /** + * @kql-allowed + */ + public function cover() + { + return $this->images()->findBy('name', 'cover') ?? $this->image(); + } +} +``` + +This works for model methods as well as for custom page methods, file methods or other methods defined in plugins. + +```php +Kirby::plugin('your-name/your-plugin', [ + 'pageMethods' => [ + /** + * @kql-allowed + */ + 'cover' => function () { + return $this->images()->findBy('name', 'cover') ?? $this->image(); + } + ] +]); +``` + +### Blocking Methods + +You can block individual class methods that would normally be accessible by listing them in your config: + +```php +return [ + 'kql' => [ + 'methods' => [ + 'blocked' => [ + 'Kirby\Cms\Page::url' + ] + ] + ] +]; +``` + +### Blocking Classes + +Sometimes you might want to reduce access to various parts of the system. This can be done by blocking individual methods (see above) or by blocking entire classes. + +```php +return [ + 'kql' => [ + 'classes' => [ + 'blocked' => [ + 'Kirby\Cms\User' + ] + ] + ] +]; +``` + +Now, access to any user is blocked. + +### Custom Classes and Interceptors + +If you want to add support for a custom class or a class in Kirby's source that is not supported yet, you can list your own interceptors in your config + +```php +return [ + 'kql' => [ + 'interceptors' => [ + 'Kirby\Cms\System' => 'SystemInterceptor' + ] + ] +]; +``` + +You can put the class for such a custom interceptor in a plugin for example. + +```php +class SystemInterceptor extends Kirby\Kql\Interceptors\Interceptor +{ + public const CLASS_ALIAS = 'system'; + + protected $toArray = [ + 'isInstallable', + ]; + + public function allowedMethods(): array + { + return [ + 'isInstallable', + ]; + } +} +``` + +Interceptor classes are pretty straight forward. With the `CLASS_ALIAS` you can give objects with that class a short name for KQL queries. The `$toArray` property lists all methods that should be rendered if you don't run a subquery. I.e. in this case `kirby.system` would render an array with the `isInstallable` value. + +The `allowedMethods` method must return an array of all methods that can be access for this object. In addition to that you can also create your own custom methods in an interceptor that will then become available in KQL. + +```php +class SystemInterceptor extends Kirby\Kql\Interceptors\Interceptor +{ + ... + + public function isReady() + { + return 'yes it is!'; + } +} +``` + +This custom method can now be used with `kirby.system.isReady` in KQL and will return `yes it is!` + +### Unintercepted Classes + +If you want to fully allow access to an entire class without putting an interceptor in between, you can add the class to the allow list in your config: + +```php +return [ + 'kql' => [ + 'classes' => [ + 'allowed' => [ + 'Kirby\Cms\System' + ] + ] + ] +]; +``` + +This will introduce full access to all public class methods. This can be very risky though and you should avoid this if possible. + +### No Mutations + +KQL only offers access to data in your site. It does not support any mutations. All destructive methods are blocked and cannot be accessed in queries. + +## Plugins + +- [KQL + 11ty](https://github.com/getkirby/eleventykit) +- [KQL + Nuxt](https://nuxt-kql.jhnn.dev) + +## What's Kirby? +- **[getkirby.com](https://getkirby.com)** – Get to know the CMS. +- **[Try it](https://getkirby.com/try)** – Take a test ride with our online demo. Or download one of our kits to get started. +- **[Documentation](https://getkirby.com/docs/guide)** – Read the official guide, reference and cookbook recipes. +- **[Issues](https://github.com/getkirby/kirby/issues)** – Report bugs and other problems. +- **[Feedback](https://feedback.getkirby.com)** – You have an idea for Kirby? Share it. +- **[Forum](https://forum.getkirby.com)** – Whenever you get stuck, don't hesitate to reach out for questions and support. +- **[Discord](https://chat.getkirby.com)** – Hang out and meet the community. +- **[Mastodon](https://mastodon.social/@getkirby)** – Spread the word. +- **[Instagram](https://www.instagram.com/getkirby/)** – Share your creations: #madewithkirby. + +--- + +## License + +[MIT](./LICENSE) License © 2020-2023 [Bastian Allgeier](https://getkirby.com) diff --git a/site/plugins/kql-2.1.0/composer.json b/site/plugins/kql-2.1.0/composer.json new file mode 100755 index 0000000..6939d91 --- /dev/null +++ b/site/plugins/kql-2.1.0/composer.json @@ -0,0 +1,73 @@ +{ + "name": "getkirby/kql", + "description": "Kirby Query Language", + "license": "MIT", + "type": "kirby-plugin", + "version": "2.1.0", + "keywords": [ + "kirby", + "cms", + "api", + "json", + "query", + "headless" + ], + "authors": [ + { + "name": "Bastian Allgeier", + "email": "bastian@getkirby.com" + }, + { + "name": "Nico Hoffmann", + "email": "nico@getkirby.com" + } + ], + "homepage": "https://getkirby.com", + "support": { + "email": "support@getkirby.com", + "issues": "https://github.com/getkirby/kql/issues", + "forum": "https://forum.getkirby.com", + "source": "https://github.com/getkirby/kql" + }, + "require": { + "php": ">=8.0.0 <8.3.0", + "getkirby/cms": ">=3.8.2", + "getkirby/composer-installer": "^1.2.1" + }, + "autoload": { + "psr-4": { + "Kirby\\": [ + "tests/" + ] + } + }, + "config": { + "allow-plugins": { + "getkirby/composer-installer": true + }, + "optimize-autoloader": true + }, + "extra": { + "installer-name": "kql", + "kirby-cms-path": false + }, + "scripts": { + "analyze": [ + "@analyze:composer", + "@analyze:psalm", + "@analyze:phpcpd", + "@analyze:phpmd" + ], + "analyze:composer": "composer validate --strict --no-check-version --no-check-all", + "analyze:phpcpd": "phpcpd --fuzzy --exclude tests --exclude vendor .", + "analyze:phpmd": "phpmd . ansi phpmd.xml.dist --exclude 'dependencies/*,tests/*,vendor/*'", + "analyze:psalm": "psalm", + "ci": [ + "@fix", + "@analyze", + "@test" + ], + "fix": "php-cs-fixer fix", + "test": "phpunit --stderr --coverage-html=tests/coverage" + } +} diff --git a/site/plugins/kql-2.1.0/extensions/aliases.php b/site/plugins/kql-2.1.0/extensions/aliases.php new file mode 100644 index 0000000..e3f1330 --- /dev/null +++ b/site/plugins/kql-2.1.0/extensions/aliases.php @@ -0,0 +1,8 @@ + function ($kirby) { + return [ + [ + 'pattern' => 'query', + 'method' => 'POST|GET', + 'auth' => $kirby->option('kql.auth') === false ? false : true, + 'action' => function () use ($kirby) { + $input = $kirby->request()->get(); + $result = Kql::run($input); + + return [ + 'code' => 200, + 'result' => $result, + 'status' => 'ok', + ]; + } + ] + ]; + } +]; diff --git a/site/plugins/kql-2.1.0/extensions/autoload.php b/site/plugins/kql-2.1.0/extensions/autoload.php new file mode 100644 index 0000000..274e1f0 --- /dev/null +++ b/site/plugins/kql-2.1.0/extensions/autoload.php @@ -0,0 +1,21 @@ + require_once 'extensions/api.php' +]); diff --git a/site/plugins/kql-2.1.0/src/Kql/Help.php b/site/plugins/kql-2.1.0/src/Kql/Help.php new file mode 100644 index 0000000..faa6f21 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Help.php @@ -0,0 +1,152 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Help +{ + /** + * Provides information about passed value + * depending on its type + */ + public static function for($value): array + { + if (is_array($value) === true) { + return static::forArray($value); + } + + if (is_object($value) === true) { + return static::forObject($value); + } + + return [ + 'type' => gettype($value), + 'value' => $value + ]; + } + + /** + * @internal + */ + public static function forArray(array $array): array + { + return [ + 'type' => 'array', + 'keys' => array_keys($array), + ]; + } + + /** + * Gathers information for method about + * name, parameters, return type etc. + * @internal + */ + public static function forMethod(object $object, string $method): array + { + $reflection = new ReflectionMethod($object, $method); + $returns = $reflection->getReturnType()?->getName(); + $params = []; + + foreach ($reflection->getParameters() as $param) { + $name = $param->getName(); + $required = $param->isOptional() === false; + $type = $param->hasType() ? $param->getType()->getName() : null; + $default = null; + + if ($param->isDefaultValueAvailable()) { + $default = $param->getDefaultValue(); + } + + $call = ''; + + if ($type !== null) { + $call = $type . ' '; + } + + $call .= '$' . $name; + + if ($required === false && $default !== null) { + $call .= ' = ' . var_export($default, true); + } + + $p['call'] = $call; + + $params[$name] = compact('name', 'type', 'required', 'default', 'call'); + } + + $call = '.' . $method; + + if (empty($params) === false) { + $call .= '(' . implode(', ', array_column($params, 'call')) . ')'; + } + + return [ + 'call' => $call, + 'name' => $method, + 'params' => $params, + 'returns' => $returns + ]; + } + + /** + * Gathers informations for each unique method + * @internal + */ + public static function forMethods(object $object, array $methods): array + { + $methods = array_unique($methods); + $reflection = []; + + sort($methods); + + foreach ($methods as $methodName) { + if (method_exists($object, $methodName) === false) { + continue; + } + + $reflection[$methodName] = static::forMethod($object, $methodName); + } + + return $reflection; + } + + /** + * Retrieves info for objects either from Interceptor (to + * only list allowed methods) or via reflection + * @internal + */ + public static function forObject(object $object): array + { + // get interceptor object to only return info on allowed methods + $interceptor = Interceptor::replace($object); + + if ($interceptor instanceof Interceptor) { + return $interceptor->__debugInfo(); + } + + // for original classes, use reflection + $class = new ReflectionClass($object); + $methods = A::map( + $class->getMethods(), + fn ($method) => static::forMethod($object, $method->getName()) + ); + + return [ + 'type' => $class->getName(), + 'methods' => $methods + ]; + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptor.php b/site/plugins/kql-2.1.0/src/Kql/Interceptor.php new file mode 100644 index 0000000..7f6e774 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptor.php @@ -0,0 +1,295 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +abstract class Interceptor +{ + public const CLASS_ALIAS = null; + + protected $toArray = []; + + public function __construct(protected $object) + { + } + + /** + * Magic caller that prevents access + * to restricted methods + */ + public function __call(string $method, array $args = []) + { + if ($this->isAllowedMethod($method) === true) { + return $this->object->$method(...$args); + } + + $this->forbiddenMethod($method); + } + + /** + * Return information about corresponding object + * incl. information about allowed methods + */ + public function __debugInfo(): array + { + $help = Help::forMethods($this->object, $this->allowedMethods()); + + return [ + 'type' => $this::CLASS_ALIAS, + 'methods' => $help, + 'value' => $this->toArray() + ]; + } + + /** + * Returns list of allowed classes. Specific list + * to be implemented in specific interceptor child classes. + * @codeCoverageIgnore + */ + public function allowedMethods(): array + { + return []; + } + + /** + * Returns class name for Interceptor that responds + * to passed name string of a Kirby core class + * @internal + */ + public static function class(string $class): string + { + return str_replace('Kirby\\', 'Kirby\\Kql\\Interceptors\\', $class); + } + + /** + * Throws exception for accessing a restricted method + * @throws \Kirby\Exception\PermissionException + */ + protected function forbiddenMethod(string $method) + { + $name = get_class($this->object) . '::' . $method . '()'; + throw new PermissionException('The method "' . $name . '" is not allowed in the API context'); + } + + /** + * Checks if method is allowed to call + */ + public function isAllowedMethod($method) + { + $kirby = App::instance(); + $name = strtolower(get_class($this->object) . '::' . $method); + + // get list of blocked methods from config + $blocked = $kirby->option('kql.methods.blocked', []); + $blocked = array_map('strtolower', $blocked); + + // check in the block list from the config + if (in_array($name, $blocked) === true) { + return false; + } + + // check in class allow list + if (in_array($method, $this->allowedMethods()) === true) { + return true; + } + + // get list of explicitly allowed methods from config + $allowed = $kirby->option('kql.methods.allowed', []); + $allowed = array_map('strtolower', $allowed); + + // check in the allow list from the config + if (in_array($name, $allowed) === true) { + return true; + } + + // support for model methods with docblock comment + if ($this->isAllowedCallable($method) === true) { + return true; + } + + // support for custom methods with docblock comment + if ($this->isAllowedCustomMethod($method) === true) { + return true; + } + + return false; + } + + /** + * Checks if closure or object method is allowed + */ + protected function isAllowedCallable($method): bool + { + try { + $ref = match (true) { + $method instanceof Closure + => new ReflectionFunction($method), + is_string($method) === true + => new ReflectionMethod($this->object, $method), + default + => throw new InvalidArgumentException('Invalid method') + }; + + if ($comment = $ref->getDocComment()) { + if (Str::contains($comment, '@kql-allowed') === true) { + return true; + } + } + } catch (Throwable) { + return false; + } + + return false; + } + + protected function isAllowedCustomMethod(string $method): bool + { + // has no custom methods + if (property_exists($this->object, 'methods') === false) { + return false; + } + + // does not have that method + if (!$call = $this->method($method)) { + return false; + } + + // check for a docblock comment + if ($this->isAllowedCallable($call) === true) { + return true; + } + + return false; + } + + /** + * Returns a registered method by name, either from + * the current class or from a parent class ordered by + * inheritance order (top to bottom) + */ + protected function method(string $method) + { + if (isset($this->object::$methods[$method]) === true) { + return $this->object::$methods[$method]; + } + + foreach (class_parents($this->object) as $parent) { + if (isset($parent::$methods[$method]) === true) { + return $parent::$methods[$method]; + } + } + + return null; + } + + /** + * Tries to replace a Kirby core object with the + * corresponding interceptor. + * @throws \Kirby\Exception\InvalidArgumentException for non-objects + * @throws \Kirby\Exception\PermissionException when accessing blocked class + */ + public static function replace($object) + { + if (is_object($object) === false) { + throw new InvalidArgumentException('Unsupported value: ' . gettype($object)); + } + + $kirby = App::instance(); + $class = get_class($object); + $name = strtolower($class); + + // 1. Is $object class explicitly blocked? + // get list of blocked classes from config + $blocked = $kirby->option('kql.classes.blocked', []); + $blocked = array_map('strtolower', $blocked); + + // check in the block list from the config + if (in_array($name, $blocked) === true) { + throw new PermissionException('Access to the class "' . $class . '" is blocked'); + } + + // 2. Is $object already an interceptor? + // directly return interceptor objects + if ($object instanceof Interceptor) { + return $object; + } + + // 3. Does an interceptor class for $object exist? + // check for an interceptor class + $interceptors = $kirby->option('kql.interceptors', []); + $interceptors = array_change_key_case($interceptors, CASE_LOWER); + // load an interceptor from config if it exists and otherwise fall back to a built-in interceptor + $interceptor = $interceptors[$name] ?? static::class($class); + + // check for a valid interceptor class + if ($class !== $interceptor && class_exists($interceptor) === true) { + return new $interceptor($object); + } + + // 4. Also check for parent classes of $object + // go through parents of the current object to use their interceptors as fallback + foreach (class_parents($object) as $parent) { + $interceptor = static::class($parent); + + if (class_exists($interceptor) === true) { + return new $interceptor($object); + } + } + + // 5. $object has no interceptor but is explicitly allowed? + // check for a class in the allow list + $allowed = $kirby->option('kql.classes.allowed', []); + $allowed = array_map('strtolower', $allowed); + + // return the plain object if it is allowed + if (in_array($name, $allowed) === true) { + return $object; + } + + // 6. None of the above? Block class. + throw new PermissionException('Access to the class "' . $class . '" is not supported'); + } + + public function toArray(): array|null + { + $toArray = []; + + // filter methods which cannot be called + foreach ($this->toArray as $method) { + if ($this->isAllowedMethod($method) === true) { + $toArray[] = $method; + } + } + + return Kql::select($this, $toArray); + } + + /** + * Mirrors by default ::toArray but can be + * implemented differently by specifc interceptor. + * KQL will prefer ::toResponse over ::toArray + */ + public function toResponse() + { + return $this->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/App.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/App.php new file mode 100644 index 0000000..e984dbb --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/App.php @@ -0,0 +1,39 @@ +allowedMethodsForSiblings(), + [ + 'content', + 'id', + 'isEmpty', + 'isHidden', + 'isNotEmpty', + 'toField', + 'toHtml', + 'parent', + 'type' + ] + ); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blocks.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blocks.php new file mode 100755 index 0000000..9112d6c --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blocks.php @@ -0,0 +1,24 @@ +object->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blueprint.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blueprint.php new file mode 100644 index 0000000..d05aea0 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Blueprint.php @@ -0,0 +1,72 @@ +object->fields(); + } + + public function sections(): array + { + return array_keys($this->object->sections()); + } + + public function tab(string $name): ?array + { + if ($tab = $this->object->tab($name)) { + foreach ($tab['columns'] as $columnIndex => $column) { + $tab['columns'][$columnIndex]['sections'] = array_keys($column['sections']); + } + + return $tab; + } + + return null; + } + + public function tabs(): array + { + $tabs = []; + + foreach ($this->object->tabs() as $tab) { + $tabs[$tab['name']] = $this->tab($tab['name']); + } + + return $tabs; + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Collection.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Collection.php new file mode 100644 index 0000000..0608365 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Collection.php @@ -0,0 +1,49 @@ +object->keys(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/File.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/File.php new file mode 100644 index 0000000..fadd56e --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/File.php @@ -0,0 +1,71 @@ +allowedMethodsForModels(), + $this->allowedMethodsForParents(), + $this->allowedMethodsForSiblings(), + [ + 'blur', + 'bw', + 'crop', + 'dataUri', + 'dimensions', + 'exif', + 'extension', + 'filename', + 'files', + 'grayscale', + 'greyscale', + 'height', + 'html', + 'isPortrait', + 'isLandscape', + 'isSquare', + 'mime', + 'name', + 'niceSize', + 'orientation', + 'ratio', + 'resize', + 'size', + 'srcset', + 'template', + 'templateSiblings', + 'thumb', + 'type', + 'width' + ] + ); + } + + public function dimensions(): array + { + return $this->object->dimensions()->toArray(); + } + + public function exif(): array + { + return $this->object->exif()->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/FileVersion.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/FileVersion.php new file mode 100644 index 0000000..f37eb79 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/FileVersion.php @@ -0,0 +1,8 @@ +allowedMethodsForSiblings(), + [ + 'attrs', + 'columns', + 'id', + 'isEmpty', + 'isNotEmpty', + 'parent' + ] + ); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumn.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumn.php new file mode 100755 index 0000000..33b1b23 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumn.php @@ -0,0 +1,30 @@ +allowedMethodsForSiblings(), + [ + 'blocks', + 'id', + 'isEmpty', + 'isNotEmpty', + 'span', + 'width' + ] + ); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumns.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumns.php new file mode 100755 index 0000000..4d74820 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/LayoutColumns.php @@ -0,0 +1,13 @@ +object->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Layouts.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Layouts.php new file mode 100755 index 0000000..167412b --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Layouts.php @@ -0,0 +1,13 @@ +object->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Model.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Model.php new file mode 100644 index 0000000..79e51ab --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Model.php @@ -0,0 +1,113 @@ +isAllowedMethod($method) === true) { + return $this->object->$method(...$args); + } + + if (method_exists($this->object, $method) === false) { + return $this->object->content()->get($method); + } + + $this->forbiddenMethod($method); + } + + protected function allowedMethodsForChildren() + { + return [ + 'children', + 'childrenAndDrafts', + 'draft', + 'drafts', + 'find', + 'findPageOrDraft', + 'grandChildren', + 'hasChildren', + 'hasDrafts', + 'hasListedChildren', + 'hasUnlistedChildren', + 'index', + 'search', + ]; + } + + protected function allowedMethodsForFiles() + { + return [ + 'audio', + 'code', + 'documents', + 'file', + 'files', + 'hasAudio', + 'hasCode', + 'hasDocuments', + 'hasFiles', + 'hasImages', + 'hasVideos', + 'image', + 'images', + 'videos' + ]; + } + + protected function allowedMethodsForModels() + { + return [ + 'apiUrl', + 'blueprint', + 'content', + 'dragText', + 'exists', + 'id', + 'mediaUrl', + 'modified', + 'permissions', + 'panel', + 'permalink', + 'previewUrl', + 'url', + ]; + } + + protected function allowedMethodsForSiblings() + { + return [ + 'indexOf', + 'next', + 'nextAll', + 'prev', + 'prevAll', + 'siblings', + 'hasNext', + 'hasPrev', + 'isFirst', + 'isLast', + 'isNth' + ]; + } + + protected function allowedMethodsForParents() + { + return [ + 'parent', + 'parentId', + 'parentModel', + 'site', + ]; + } + + public function uuid(): string + { + return $this->object->uuid()->toString(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Page.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Page.php new file mode 100644 index 0000000..429bcfb --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Page.php @@ -0,0 +1,68 @@ +allowedMethodsForChildren(), + $this->allowedMethodsForFiles(), + $this->allowedMethodsForModels(), + $this->allowedMethodsForParents(), + $this->allowedMethodsForSiblings(), + [ + 'blueprints', + 'depth', + 'hasTemplate', + 'intendedTemplate', + 'isDraft', + 'isErrorPage', + 'isHomePage', + 'isHomeOrErrorPage', + 'isListed', + 'isReadable', + 'isSortable', + 'isUnlisted', + 'num', + 'slug', + 'status', + 'template', + 'title', + 'uid', + 'uri', + ] + ); + } + + public function intendedTemplate(): string + { + return $this->object->intendedTemplate()->name(); + } + + public function template(): string + { + return $this->object->template()->name(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Pages.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Pages.php new file mode 100644 index 0000000..2936226 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Pages.php @@ -0,0 +1,34 @@ +object->permissions()->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Site.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Site.php new file mode 100644 index 0000000..0ae094c --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Site.php @@ -0,0 +1,36 @@ +allowedMethodsForChildren(), + $this->allowedMethodsForFiles(), + $this->allowedMethodsForModels(), + [ + 'blueprints', + 'breadcrumb', + 'errorPage', + 'errorPageId', + 'homePage', + 'homePageId', + 'page', + 'pages', + 'title', + ] + ); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Structure.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Structure.php new file mode 100644 index 0000000..31e5971 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Structure.php @@ -0,0 +1,13 @@ +object->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/StructureObject.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/StructureObject.php new file mode 100644 index 0000000..517d8cc --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/StructureObject.php @@ -0,0 +1,20 @@ +allowedMethodsForSiblings(), + [ + 'content', + 'id', + 'parent', + ] + ); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Translation.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Translation.php new file mode 100755 index 0000000..5c0d75a --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Translation.php @@ -0,0 +1,35 @@ +allowedMethodsForFiles(), + $this->allowedMethodsForModels(), + $this->allowedMethodsForSiblings(), + [ + 'avatar', + 'email', + 'id', + 'isAdmin', + 'language', + 'modified', + 'name', + 'role', + 'username', + ] + ); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Users.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Users.php new file mode 100644 index 0000000..7178268 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Cms/Users.php @@ -0,0 +1,18 @@ +isAllowedMethod($method) === true) { + return $this->object->$method(...$args); + } + + if (method_exists($this->object, $method) === false) { + return $this->object->get($method); + } + + $this->forbiddenMethod($method); + } + + public function allowedMethods(): array + { + return [ + 'data', + 'fields', + 'has', + 'get', + 'keys', + 'not', + ]; + } + + public function toArray(): array + { + return $this->object->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Content/Field.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Content/Field.php new file mode 100644 index 0000000..05c589e --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Content/Field.php @@ -0,0 +1,52 @@ +isAllowedMethod($method) === true) { + return $this->object->$method(...$args); + } + + // field methods + $methods = array_keys($this->object::$methods); + $method = strtolower($method); + + if (in_array($method, $methods) === true) { + return $this->object->$method(...$args); + } + + // aliases + $aliases = array_keys($this->object::$aliases); + $alias = strtolower($method); + + if (in_array($alias, $aliases) === true) { + return $this->object->$method(...$args); + } + + $this->forbiddenMethod($method); + } + + public function allowedMethods(): array + { + return [ + 'exists', + 'isEmpty', + 'isNotEmpty', + 'key', + 'or', + 'value' + ]; + } + + public function toResponse() + { + return $this->object->toString(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Panel/Model.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Panel/Model.php new file mode 100755 index 0000000..006d47f --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Panel/Model.php @@ -0,0 +1,30 @@ + $this->dragText(), + 'image' => $this->image(), + 'path' => $this->path(), + 'url' => $this->url(), + ]; + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Interceptors/Toolkit/Obj.php b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Toolkit/Obj.php new file mode 100755 index 0000000..0ac2861 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Interceptors/Toolkit/Obj.php @@ -0,0 +1,24 @@ +object->toArray(); + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Kql.php b/site/plugins/kql-2.1.0/src/Kql/Kql.php new file mode 100644 index 0000000..55d1016 --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Kql.php @@ -0,0 +1,226 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Kql +{ + public static function fetch($model, $key, $selection) + { + // simple key/value + if ($selection === true) { + return static::render($model->$key()); + } + + // selection without additional query + if ( + is_array($selection) === true && + empty($selection['query']) === true + ) { + return static::select( + $model->$key(), + $selection['select'] ?? null, + $selection['options'] ?? [] + ); + } + + // nested queries + return static::run($selection, $model); + } + + /** + * Returns helpful information about the object + * type as well as, if available, values and methods + */ + public static function help($object): array + { + return Help::for($object); + } + + public static function query(string $query, $model = null) + { + $model ??= App::instance()->site(); + $data = [$model::CLASS_ALIAS => $model]; + + return Query::factory($query)->resolve($data); + } + + public static function render($value) + { + if (is_object($value) === true) { + // replace actual object with intercepting proxy class + $object = Interceptor::replace($value); + + if (method_exists($object, 'toResponse') === true) { + return $object->toResponse(); + } + + if (method_exists($object, 'toArray') === true) { + return $object->toArray(); + } + + throw new Exception('The object "' . get_class($object) . '" cannot be rendered. Try querying one of its methods instead.'); + } + + return $value; + } + + public static function run($input, $model = null) + { + // string queries + if (is_string($input) === true) { + $result = static::query($input, $model); + return static::render($result); + } + + // multiple queries + if (isset($input['queries']) === true) { + $result = []; + + foreach ($input['queries'] as $name => $query) { + $result[$name] = static::run($query); + } + + return $result; + } + + $query = $input['query'] ?? 'site'; + $select = $input['select'] ?? null; + $options = ['pagination' => $input['pagination'] ?? null]; + + // check for invalid queries + if (is_string($query) === false) { + throw new Exception('The query must be a string'); + } + + $result = static::query($query, $model); + return static::select($result, $select, $options); + } + + public static function select( + $data, + array|string|null $select = null, + array $options = [] + ) { + if ($select === null) { + return static::render($data); + } + + if ($select === '?') { + return static::help($data); + } + + if ($data instanceof Collection) { + return static::selectFromCollection($data, $select, $options); + } + + if (is_object($data) === true) { + return static::selectFromObject($data, $select); + } + + if (is_array($data) === true) { + return static::selectFromArray($data, $select); + } + } + + /** + * @internal + */ + public static function selectFromArray(array $array, array $select): array + { + $result = []; + + foreach ($select as $key => $selection) { + if ($selection === false) { + continue; + } + + if (is_int($key) === true) { + $key = $selection; + $selection = true; + } + + $result[$key] = $array[$key] ?? null; + } + + return $result; + } + + /** + * @internal + */ + public static function selectFromCollection( + Collection $collection, + array|string $select, + array $options = [] + ): array { + if ($options['pagination'] ?? false) { + $collection = $collection->paginate($options['pagination']); + } + + $data = []; + + foreach ($collection as $model) { + $data[] = static::selectFromObject($model, $select); + } + + if ($pagination = $collection->pagination()) { + return [ + 'data' => $data, + 'pagination' => [ + 'page' => $pagination->page(), + 'pages' => $pagination->pages(), + 'offset' => $pagination->offset(), + 'limit' => $pagination->limit(), + 'total' => $pagination->total(), + ], + ]; + } + + return $data; + } + + /** + * @internal + */ + public static function selectFromObject( + object $object, + array|string $select + ): array { + // replace actual object with intercepting proxy class + $object = Interceptor::replace($object); + $result = []; + + if (is_string($select) === true) { + $select = Str::split($select); + } + + foreach ($select as $key => $selection) { + if ($selection === false) { + continue; + } + + if (is_int($key) === true) { + $key = $selection; + $selection = true; + } + + $result[$key] = static::fetch($object, $key, $selection); + } + + return $result; + } +} diff --git a/site/plugins/kql-2.1.0/src/Kql/Query.php b/site/plugins/kql-2.1.0/src/Kql/Query.php new file mode 100644 index 0000000..e4eebcb --- /dev/null +++ b/site/plugins/kql-2.1.0/src/Kql/Query.php @@ -0,0 +1,29 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier + * @license https://getkirby.com/license + */ +class Query extends BaseQuery +{ + /** + * Intercepts the chain of segments called + * on each other by replacing objects with + * their corresponding Interceptor which + * handles blocking calls to restricted methods + */ + public function intercept(mixed $result): mixed + { + return is_object($result) ? Interceptor::replace($result): $result; + } +} diff --git a/site/plugins/thumb/index.php b/site/plugins/thumb/index.php new file mode 100644 index 0000000..05d23ec --- /dev/null +++ b/site/plugins/thumb/index.php @@ -0,0 +1,15 @@ + [ + /** + * @kql-allowed + */ + 'thumbnail' => function ($width) { + return $this->thumb([ + 'width' => $width + // other stuff you need + ]); + } + ] +]); diff --git a/site/sessions/index.html b/site/sessions/index.html new file mode 100644 index 0000000..e69de29 diff --git a/site/snippets/footer.php b/site/snippets/footer.php new file mode 100644 index 0000000..b605728 --- /dev/null +++ b/site/snippets/footer.php @@ -0,0 +1,2 @@ + + diff --git a/site/snippets/header.php b/site/snippets/header.php new file mode 100644 index 0000000..9b16e41 --- /dev/null +++ b/site/snippets/header.php @@ -0,0 +1,42 @@ +response()->type('application/json'); + header("Content-Type: application/json"); + echo json_encode($json); + exit(); +}?> + + + + + YGDC - <?= $title ?> + "> + + + url() == $page->url()): ?> + + + diff --git a/site/templates/board.php b/site/templates/board.php new file mode 100644 index 0000000..3b7526d --- /dev/null +++ b/site/templates/board.php @@ -0,0 +1,12 @@ + $page->title()]) ?> + +
    +

    Under Construction

    +
      + find("seasons")->getAllGames() as $key => $value): ?> +
    • title() ?>
    • + +
    +
    + + diff --git a/site/templates/default.php b/site/templates/default.php new file mode 100644 index 0000000..4cb627d --- /dev/null +++ b/site/templates/default.php @@ -0,0 +1,24 @@ + "???"]) ?> + +

    title() ?>

    + + +getStats($page->children()->first()->players()->toPages()->first()->uuid()->toString())); + +?> +children() as $page) { +// echo json_decode($page->stats()->toString())->stats[0]->average[0]; +// echo "/"; +// echo json_decode($page->stats()->toString())->stats[0]->average[1]; +// echo "
    "; +// echo json_decode($page->stats()->toString())->stats[1]->average[0]; +// echo "/"; +// echo json_decode($page->stats()->toString())->stats[1]->average[1]; +// echo "
    "; +// }; + +?> diff --git a/site/templates/home.php b/site/templates/home.php new file mode 100644 index 0000000..c98c80d --- /dev/null +++ b/site/templates/home.php @@ -0,0 +1,35 @@ + "Dart Scorer"]) ?> + + +
    +
    + url() ?>"> +
    + +
    + + diff --git a/site/templates/xoi.php b/site/templates/xoi.php new file mode 100644 index 0000000..14c9fba --- /dev/null +++ b/site/templates/xoi.php @@ -0,0 +1,36 @@ + "Game"]) ?> + +
    + + +
    + + + diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..8c3ca41 --- /dev/null +++ b/sw.js @@ -0,0 +1,72 @@ +/* + Copyright 2016 Google Inc. All Rights Reserved. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +// Names of the two caches used in this version of the service worker. +// Change to v2, etc. when you update any of the local resources, which will +// in turn trigger the install event again. +const PRECACHE = 'precache-v2'; +const RUNTIME = 'runtime-v2'; +const cacheOn = true; + +// A list of local resources we always want to be cached. +const PRECACHE_URLS = [ +]; + +// The install handler takes care of precaching the resources we always need. +self.addEventListener('install', event => { + event.waitUntil( + caches.open(PRECACHE) + .then(cache => cache.addAll(PRECACHE_URLS)) + .then(self.skipWaiting()) + ); +}); + +// The activate handler takes care of cleaning up old caches. +self.addEventListener('activate', event => { + // const currentCaches = [PRECACHE, RUNTIME]; + const currentCaches = []; + event.waitUntil( + caches.keys().then(cacheNames => { + return cacheNames.filter(cacheName => !currentCaches.includes(cacheName)); + }).then(cachesToDelete => { + return Promise.all(cachesToDelete.map(cacheToDelete => { + return caches.delete(cacheToDelete); + })); + }).then(() => self.clients.claim()) + ); +}); + +// The fetch handler serves responses for same-origin resources from a cache. +// If no response is found, it populates the runtime cache with the response +// from the network before returning it to the page. +self.addEventListener('fetch', event => { + // Skip cross-origin requests, like those for Google Analytics. + if (event.request.url.startsWith(self.location.origin) && !event.request.url.includes("panel") && event.request.method === "GET" && cacheOn) { + event.respondWith( + caches.match(event.request).then(cachedResponse => { + if (cachedResponse) { + return cachedResponse; + } + + return caches.open(RUNTIME).then(cache => { + return fetch(event.request).then(response => { + // Put a copy of the response in the runtime cache. + return cache.put(event.request, response.clone()).then(() => { + return response; + }); + }); + }); + }) + ); + } +}); diff --git a/wsify_linux_amd64 b/wsify_linux_amd64 new file mode 100755 index 0000000000000000000000000000000000000000..724cf0c02925a1ecd2f7253dc28d542546ba4182 GIT binary patch literal 10391460 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�a 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�U zEb)i?OlsJ2?j?1T;!DQ#sNZr)-S$g0HmCoj%IbFZ`!sC1?DESlAZoiMeN#t6ulb8) zIOMNb(T^Zz?7E#=*Y{{#(Zh}p)*)IssWa&+?oN|)m72a&zgB(v*YT!ipm-6hW6}>s zs&V3!bEnqr3P!!^w_I4a<5KCN)GjXjc6G%9nR?M>Kdq~XKRl)v_+LU#`Ik7|xS2Du zPXo|Eu9{lw&N~aiF1R$_TrPAp0HmG@GjN22>Qzv`#r+k9PCZp=)LrT4#@NN zX!rKniWhdq2Cx5T77=d=C402*vo-f~(45$U$vtBa(Ou`**KXHFVa^z%;%jkQh6z0q z1$3B_jup8M`9fcZ@$`Ri`g$!Tbd9ISWdCdtlOgHcp9#!P{vAyd05!*;v;yH=E0j4| zob07D!#VKf_G{%T(IgjCCMf@$!OG9cAuR&+=Z8md;OD+knf>BQ>n7@Y?Jq>G&G#`3RS~amdoiTSy=$08`b%i*9n5%Z4O=SE9o2|O~jk+XG&+`%|6|g^r zE`VRF`C2Q@R1(2-Yy@)d_kk@o(Xpcn-lsGm zpm446e`T1Lzk2NmX5wd7C(c@zSDm+IZ9a!TDlWU-Hwh03O_3#do~0i%IDZ^_uD$A+#G7W*L8 zSqLkGLXn2Rl7QntjJT$QP~93ZlatXcApzj2bejzl8Wk9n!YV?lR5N@qRH#1m(e!G3 z=P2@=R6m5)OKh!9v{xmTS0{pC8ZLGk!D&^g_tdATe!37DSIx;p3k~Ue!efFSFI}uU zld&JQI@C3~fjVQh8dap`l>~*Lt})7?F64$(CnszJbvxN09OO_#uJnkj)tm@qwWG}M z6yk@1oane-C_vnRYc=xVgzfQC;~*%TC=$^v|G7qjRe}#gCW8bPa|*XT&0H1C(8Jz5 zX!j}Z`Bn;=$PFd3dx}dx!Iaw>fIaw6(LF;6f1| zC61FGN!i=}-erl#9vr*+p`0==(W^95-glMXQ{ESg{%^~>eOu+l=bSHscG?dYTz#Za zioGPSoYdA^qIEL%VCo21B+DefMM)+lNJNG13WE1{b*^2$K+GK0*M8BxpjcUOF~zCb zJa`&K2SBeO%lz2I6vDeh>}zFbtHfmfr~Ms)yF5PVSVv|&-x_I~UPUyd-j zLo|{nIE*ZRH$%=c?iXbghYEs^_Y3g?)k6|_?Ejji&Z4ZrXrdLBrPmzK@iC+q8Pra-Dl^k{t&mO0me~a~(UeAl0!WU`1 z_*+o=D`fB5&SROxu#^17=a^u3;)hTj2P0-4fZed~yk2{1g^Oji)*#Po+?qGDH(PIJ zZa?LN)LiRBYc=+AOv#FwlSP0M2J(Vg6CN$FM7A9U>6fE%7r-(dhUjapK_+SW#;MiP zN);Z?sRXP>f1wG)-oiJs%ry8YAe2$bz%MN-5G#-PhYWXv(>7U$JIP(jZlmqHLaeUs zoi?#^e}foNFiiBNu%^&6B4mm6tSoD9X>OTeGh^5D5Y3|NX%dZfxXS;+9ZvTN3nBe0 z!Ckjpagto1|W+kivxESe`RV^Tif8^J%a`7mO5!oS+{;1vKf!m03-)vn)pJ;kxYr zBS0PA1HkS%Gz-k;z5PP40s}jm8Fz37_HHoJmHX4|oeFW0>KfYz&7J-z zn57HWYbG%n>%S_CM0={m3FnKy@n%|F+(|gP_m2<$dwVsIcWE!d7QFmVZMN3>#n&~X z%HKq!GHqtCD4xz+0WfIR_8CGtAO7lSxbr9W8IsjXBf)G8eI3uq!;qkkhxFUQWxD(+ z3o;pNf1xWquIgo-W%e(j$9G*Npo_jRC;flo|I|}MTKuQh`^CR(>frdE_(uAaK(HL+ zdQXO-h<|(p_|H$!gb$E)FFXFQ80es-ry;)b7a-0FC|&$X7QZTMtFw-k>&6|8j1ouZ zubMeYqR0er&BqMiDi`V>}!8ljnAe7=j- z(~!jadgCwEWH4YxKIjCG6C4{G^(JhP&_cb|9&HUe)0r{ND`y?R*R$KJ%2!Q2d1U@$IL(7MH1Y)@)j=bHh}=Ehu(yF*uG8 zS$q{0?y|>CG&?I^v?HEz+VrlvMI*RhKLouG*LETf5#oB#e3i7yfjqPO^4Z!CAw%tZ zjxWhd$C92Qf_WUzfa>iyxH(!Y3gO;_b?Ns49k-OayfZI4kC#dIeaY52sUukk+x-ZJQmkQOp z5*5qbM`@vdagk;6m=i2EJ`djYT6z*w!MWFSgv!7#<9u?UOyF%zE^^wSrehF1Ztvp{ zPbXC9aSpLo)$U&8)l^0A6w#&pm3CNpI)Bn}iGChGy(iQpRwEjtiLP5cbNcz!eqY)o;MJ%Er<;CU6aVXms@9K7s>;8OH||`RlXG1B;eHdU%D;}!o(5x5-_Sq} zk^|Jn3bLw=qq*v@nlM$(r1Ty%Jp#q%m&#tqJk$${m&&0DnG!W2Q;tys-%n{1(xefI zK@$~{Wp*gz`~XcsEoV6Es!4oX)BOId>KZn0v{w;8R@M6HF()Nw3~jGk-Ck4vTDTVEyM~%ys8Wv{#G8|ny{m{G>vf`Ey;ELId1~s8HRUf)xjxk=gr3Y}yz$#zLmXf_{;(=}Wo~u(2l3<|$WfC# z4lLHk@t#1v@>k=Hhf+7qopBApZM6OeJmUJi)@%K+7bWjaTUW&!^BlS}t|8(Qps#lk zzC*9A0;onn)#dH+#s?_B8a$L?6%dp*O)vpCk#GE)P{_wx6)Tl{T*`R4v3;`$l zwTI``5Cl1=ino9qMRyoFanwNfv2VOPsbi^I&Tmidg{743C88w&%^u_~!H>WirhE%! z!MLwMwH52joI(031Y)^D*$_vkIut6nF`j&tr6OUDX6H!VJ2)#L!X7+&S5!0F452^9 z8=FXy{=>n6bNr-aKZI>VFXyN6Z!cX;;U^^z*-v7T2j@=mYx^N151HeErqAeCG^vtv zIO221_Y}?aX^?YhRAtk4Rmo#L8{_tUz)gV|IEZT*D#sUnW4)o>hdrY4x%*SHKc*j1 zI>*ST<630PF0NVDlBfZOdv%DLPD{e=%V0Y$^`Vq3*@d$z)&MiajZ=|>NJLfTj?~q1 zENIfl>k_@Lx16H%Ux>t4sgw13v0nRQbD3GJsqMME2M@h+X-wT%RVT8jnCYA;Dx39M z)6nbfZK&8Ao?gYH9RxT*paV2}6o#zrD0@!uuX_}SM3d7`br7ej#Enb|W;p*)c;$i+ zC3h+a!)6aqdJ~j-(&x`WN_#PITv5a+{ht$=U10P!L&mS9D9uZ2amCE0C?USyn#J*( zY`IEsQLH|D_B6*DKoaJUj!Vv_r?Vh6YDZz6=2VW(6p-r|nn6z+eIxHAW=C-LSB^Is zVx?XXw-BTShQ*kuseKK}g5Zf-AsLB@14|7;vZT8gh-UnSBjZ9IrP}WduS>b&+t`tl zGSoo?ona%-0++dkY(PkR2!n8S^g;OSB!pexAux@?!5SvkQ@5U5!bGH`UmxeRq$94k zRP|%cr;`p{J-F|QApbeRVSjdgf}D|jjm(9aEihAC&a%WRbvsTub+R6{#k%yY+X+u) zbz)`eZ9HCfs%|7#wbPb7BoSel1{`NzLxcfJimEkjio|6l&b6i!3R z>UF7Rl`D}^5H+?LNIq1$*s}KfLHuF1ImG|E#p`($Q$_RBO0e+S20KjcBv@rmuqdKK zu*xU}?FAD5H*&QdTbeslYnqTpM#jM#{e?0zfk(;6L{dAw&vxppXL@l9td@Ri?u#)c|~5XU$~4!KE_(oNz#a7|A88EDLJYW6(t#+ zM86#%HEdc6bjy=Xv@4)lvHO)ETYR`Ht-#iNgeWd2E_A7JLz;S4`Qs{Tl3s=M?zEA9Va!1nRVU9Z z7{vfKoSjV!03!;j5)~EINliPN9QnbVA;Jx4jsqd#jpkK}FRBx-rp`tyR_W}AwLzMY zzv{#~Hjo7C?e@iBEmsaVE?!V)BrB>(j@B%H7f>uR6cZIgR4?n{3HDnDcUr#JRNAk@ zB7Vs=T(c3x93Dwd?F}WN1A$VU%faXk9S(Mt7#;5EOb5^CFd8~=9Oav}9(4Gw)}a*9 z0a4G;VYJ2ghRy10h*-0B2yx04POE6SU%VtNhL%xsU13(sJX$u|Vjx}Pp1W7{vBtI7 z?Tf)uuBo{;u&8l&@uEfGN>=~}94WH!oXLLsqy zrXEmluV*k4_x;qB)xw)L`}8mgvdlen5^11qIAK{oCR9z6dPQ|k+L zpCn>o@UBAn%R0X5Gs5E~xU%Ye8D4tXKJ;*hdG{V3p&~9>X$%ss1~%ka2ZS_V-c1j` z_auMp{&}E#KIm39eoL?X1j1A{^{7dn$J*vpw9Pdr8Fmq#P*9z`xS)nGCVI)H{j9Gm4~@4ysC=$ZX<@A{z}yFmQiu^onq*O0bRUvs4f0T$R{To%j&5BKR4& zm;%}uoMX42g5ark*B;bxwFc7#DKverpTA|YD!q)oXLVz$+Kx4)S=q#zUH*DYIgjsc z*Y&MQOc@R7ibOgxrmmn)p_BNqN?mVb@cCV;mK{Vv%I;Rt(DW+?A_QLMrK2>j7puWn zv$j2p8mg05(bzBf@M~M86|c%i`um?}wNLRzHNRiiw<^Jj@SIc_RsWf31e*L+RpM#2 zy4EUHO+T}{^)xX3N|h}VtNl^+ovF>{e}^Wq0ktG_F}}O}&JE^YcrrhHY_nJ4-pQBIImEHfL`!-I>MNJzOPfzuk4= z>=wfNx^wpS%f6qp^GK^nP8kw$mM`;laJGo*O_(Fj-bVR^DNy|ayX(T)YohA2IXeW- z61ZiY-P3COnc5n0c1Vi3ZHM?$^k7#>aHw4)&dvu)oNW>`{c$HblLxLz9kEfl6?uZC z7^p`)JREyub1plX{o$SF1B=CR4IF40OnXf&7!l^#+pe=P#UGR?xjsxT3*Jsq6K_4OkADgzgcbhHWQ@p-_*LY1+-{5-S@iajV=DzcA^xshu+9=X) zc#R72a+;6{aO!W+B=|cXZds2Ro80DWq4mV+oot34ik}@Sq_U+-Q`4gInG@w+@;)I ze&j9(yGyCN6uZlA?h<#GJa@@;mo1!{Y#SQJX0PPfg2-Q;gMH~WaCZb8>AIdZZBXa6 z5Vez0vsWpGN*;Cs0th*C0)1;CYq{b=%1bYC3#c8_6~&AE56gSlSeRMr264Ib^egB<5G(9KKw$m(rPgjB4;&*(`-z6E1 zAEW3l!EFf*CQxCo@Vs6*pAs!9OP?B>ZbBsAn+Ws}d=u3<6C>Vy3Q55fYaH#RsTI;? z06v?UAhuPMQ4n9j8lnrwsB=!wGH>Z|l@(KGUb{z(jp*K2?|Qk`iI|Q<^W-G)(j0#gTdX%APP2K%*N8ZY#iGo-1c&Xuccfb(BX9mR z%R4p~*%@0p`mz6yvv+}ysyP4u6G$W~af1bo3K}(P@YZ0lP3mm}v7TtqfL7zB8bvKy zY!MPb1x?rlSP!dU`L^ELQtd^pZPhB?H4)^Zwt`p%wFtJ=v#zz?x!98b`}54%%}D@% zef@d8$k}twoM)bSZu87D&&*JTHtyQjjg{qi{vYy_BhT|{38LkRav^2vC2gAG0{~ge zZ2dZy(Lshbo=SIn?)A|M(F0U#kaX~!kEJkO z@X=f(!Xaj#gpsLJs=yX6;bFkF#wsU?aleS5N&DZd8J18W@iL~!+N{>#ja!6N zd<9Qzn=B3C%srlP=1<2R{DNN>ByURSLOIbAZZesV1Tbw8hpwZu6J- z5sH%hCHkAUqx@*gKlp*Vt3LS>P+rlrTgG3i;GdgD^-_&xM9;`5m_!OutYfwGI!P!% zIciC-42LH+D9$~TNNgZe)ZV||A62B)8hh6JgT^Gg#w1tOu}~zru0HuD`+0CQ4>ooT zX;k&qE7@~~gGZ`YPGK^~E6x0cza^O!;!Bk_=KC1xvfX@fJ_xDqznCcXuYre2uc}Tg zO?nl6@y1IO9BGJWV`nNm+sZb^{o*COt@9g7iLY4;8thF&sb74rds9-EnxqX)Iu3Sk zXbiL94E*-;hs-w6*TfaF*b1-d++=x5!q?xAyj~r?_KU~bQ_ism<~=+mOi1G7aqejY zxDeTD&;af_FWEpG>Xqh3zj!FGd31PPc+4VK8)R~I;lbtc24JBGSv{{$zKqAL{6%u1 zgQ0fa6b$CdkTMv^HS>yJy!2v&y9-D(WNuaL=@YX4GB;^ji?rN-azk$&CJT1y{VU<4 zIy5VIo}2V={d!Wrlv){n`Ma=~n`qfWh7SX5fxLwm^&~E7?VCNFnI6p_2wR--7ti@zW;bHt$;oDP%{_?1?az zP#p|0P_ILn-T4*H0$C+rl5MD={?mT(1AyQNWr5fQ5MJh9hh*@2Smw4KYw6cj`VY#8 z)%tBp3#d)D>8>XEN!PoBYDc_wa`L&F5g&DZIG}dKvXhgmYP#MpsTuJ}ZE}GMkLDnn z#L9f675*FE(>1)C!8y=zN%mnp@)ZDH*&JtA8h=t%^`}$6$^2WX zSG`sTjhtJ;`ubRh?2*hMJv*KH_t59e(>?bof>fE`_Xvx~yyaFHe>d!_Cl2ueH)4E? zaTE$I7w=xPr<*CQ^+7Un!4i8!kWC@a#dfnP_=8==V>COxP4fn+!j(6NIrgc->z^47 zbQ$kgS+Y-x&C@@E8`HzJbuwT*6gGRbKz60~eg~KsdZufNbef`e3{vuXaxWGELD(x+q|@40`3>N5ATfllcd7+eSlxTez#6=LfYOa0SHue%;* zzYy!t&=UK1p-D-LxBNS15;)iFd(r`ppiE7sr#)54oyQOtjZ>V_(x@_B%`%TFSw6}+ zs$fGurVY(7APhg)Z2^A1ORk{{n!d#^beLza*t3^|7r16RdC;XFH?kju)p|X)vZWYY z%q&@I5@miyne=#M$v<`+#R!v8q^3xSgn1r{%uZ9O6DUQxc=6#XhlwQ9o|?bqpIVhX z9XV9B>!pjJZ~f0SAB&j3#1D#Y)^Ru{ivuccs|wQa8^@zGNE z5k`HK8F?9G<-vv@{W|hdYxof?KoC|okMoOXyRRGgS_ZqCFA>5E>2xOAo5^}Q(2?3p zkH>yFt9%nVi%>I|%{5)m<6s8AGE4p9ks(CB+YKU`P0!p9ZO&H#wDY52tUj6sm4Z|B zi{sNUq8|m{*3A)mT&Z7-Qo4gf^~&H;T}c)=WDL)U$Krk#$a}s!zk7#&n4RYChQ!xJMYJ&&WuY*J&M#NPmBA* zK0gnk;fd?3sQ?|M@OmC28dg{{ZSaZ0E5gFB@dT3#WOeGp9^^4QZCT+5c~wWJ?hm`e zK)9#UJ1;pFt$d~VJWK`cK*y_>v>fCQn_@tfGJPtNnC*-e+P#hZL2U(i9^TTm&Pcxj zAb(igeZq+C)DjMiq391)w9AZrdq02J0ao|5MNCPlP!VTsQ>adb?$q!S%X~aHnrym4 zZ2vkpY4y+OF7IW}hlcM<^**Ne|1nA6#JEzMSskT6~Vi_2p3Z=qIg~M zzw#YcS@E~6&t4HcXJy`_Sn#O*Tt$>KeYT*d3eSoLvq+}O3zn=kga6VMps+kUn%Pc% zz7*59^FJj&5VgU{4=!iDk8g?lY4XEng-kdY7fXq|zuzbUxgt(r#`A{TiFsB}c*jJ9#R>a@4^K5S8R(rQW@0y)>oYE2*%#cx-7yQck1Hb=1SOq=e@zP^33v-1(qait6 zwC#$S9ldTRKTDnb5Q&(`D4g*t=BAeYykU!nN2GB(eQ@x_a5oBU@Vx>$@W$aU;K|R! z7s(5J)}DF3OCb2g*^wcS`j2m$=pZ?mPH<|(gUdyL{Nk#!U;)MEYzAky;GP~Lv=T^4 z`(m;3*gBxrr$(2^r&yrYF>No@SXgj0uTb`BUUC%j9*zo8r-`<)0)CUsa!EE!qD1ua zGQ6C;pzzahG)e!}VxLxeNk*q*HtD&@kXY(5YPH}GCnXHWB`1)f(JdA`FZk!|ZQYp_ z!G{DfG>eZZSRQOtM1$p&O-O`4?8o1gd`)IvzGYX?D+y(XT}L+skA@|`DI;_3Og{5* zbgX|Nsf&l*>3@sy&Y4VF>CNfIdX#Ns(Eo6;B#UYAtIH6C11QnMYWvm4Km3>Ix7~X2 zD!<5YC?LXxe|eZ=eUrA8anPmG*8x|ZT!}yAeBc6;PTdXISniS33`Zg*>aNN>tVUPB zp33mWmGD7BaL)~=|c}zR(&NsplTm_WDX7KAyp_5&4yEkBZtl+}4<>0!|x&8pc`je|TXZu}FyQY-P_hj)1q{aUW74AA!XG(NgN+# zR{O=7ajJQ`d|!-ZV`=7AOkOaABAJ^k7i2|H#0?|b^h5*`Tp#BP@RV44CAR%lSZ;&w z%GFY?2ifyXfO>GqHeytt=h+g$x=Y~LSs};z@JmVD+xK^6tO6{H?i3X~@&10?^ez6ZcVK^YNd&C*)V)hR)VoO;Q?^d zdVF)mQ{k1s_+xsmb@-{V747}n`JJ3^MTye|cdoM*-`+pc0$W(N1ou~jY4Vcj?qw|d z4D!_Ej6T>7Dll6^n9~E#!MtQUm_G_(PB)l?1oQqk`Sa7A!Mrtu*%*9=`vYeV-VWw| zAaoNxeklECgRuwUq#9W*?-C}dD+aHa#Bw;ih28rbZ_*-*iJ z6y5}P?F43Bh1y;c^m733&+Cil@DL!T5F}q*53I`taO}W*qFd>)i*n6dmYj-ue?=Y&v9U1?>-R)49$iq(e)u%l`?FH3G8DqDY$!Q zV385##)AG1=8fCIJltSrXK`No8?e4Ffa7)s&=a20q~MP_^*2>`!gerU11+`D=^M>& z5!e!e{ZilTsQC@TvmrR&!Te}j-?q;(m^hEt@Nxls77hjX?F=9qOh72u%>n$)b^u3& z0BH{xu8}eNp#Yw{Gk{G3SQb3~sVfzcLu)U{2o-W>p9iIR@q%vP3O{*|bBLu}70; z@nQNRG5rbB2w?iaO??@(5#)rDN*UxtxUxyeDkbaP+GbNWI)RFJzM zYjD55$)zUU7Wzu3=9bZypNT}krsv!%V{ zZHv^7RPn0^Drk$S@VoJexc#ntyvSZ^qS+s~o0lRfnsaS@QK5mZ+4FIs=DNzV!9@9d zWdc-c@#v>pfsV))Db8l=qrp`#8HJU(1YzEC>o|H-v^aQL(wdBJzZ1AkY^{kU zR`P>G3ivf#FjE7^u^rI*z1W;};ES;*HujGtZdVDGFvuvy7C-Ymmw0=3^Dc>vn-VJv zGzZ`0jlTg(bT=2<7qc|e$gRAm2Cz7iEhrgaFi;DA%{BqK`Suk&6fO81(#ylXk0%Hv z)XGbCaVQM_BM2k~E;XdCP9AaXEOz;b-Mu06ER z@>%lmkuGX#sPs~|ui&Rv!G~F-$@Ltlq-UJBU8@mJtbHvb(Zm)AatlA$*NIdp>6Q0`!VF|tBY^`L{M-3b^dOj7ftRT2X6{HILEsv;5>oY?xs=gzv2FXNT5#jP5; z>1c(AxpG1fqH%LO-y&UkQ;zTp-y3ylp3a?mn=4ahn|}yPjwsIm(It6D6u-=~>J>Bg z3-&D`jisR6!UB6}sE!*yiSg<5CBfH0fwrF$?SG4e+u7=N7VtKE+R@1jMEM;*tv)Zf z7a*B?;15ABA!9U4F^$Yg~XWDqv zWA;8LATFn;hmg&CX}mee4IA1vc9V*p*wU~0IKS|<8Ubi#cdhI|;et;Ic7SSn1s23i z)@}g}Joe8tuoJomzvCCVt)0Ti20>5(t7P$Xl2P0bC=AR8 zNo>e;WEr0RAup3Fx`KXoD0;BuC8PC2Z${*-T%Wx!$vOlqA}V1*5I=kK zC^x~?4&s=9MFiZuyjy`7S`U-m$E0*?ByP{}NxF?de=zbn$~bos%?_(}wk^Gz(o1tv zB657eLLgXsWcWq;4$TDSN@Sl->-AJZ8k-g4S^5C}B!2?kO+cKPOU^EmHUPB=8e>If zmxT8@0cv&1Kij5;vK+-0U)UarBAd68f!Xc z_Ub<2X_>@A_Qply_@s|;PA6j4Q&F&m4YZl+{KQ={?y__oz0^fyv}QZ@@QPkX_7@;7 z)GL24Rru;daRduH^o_AjHNyd+DW~%nk<-02ri+*f=`7N(*e!0(B*E844!D zF%-qOoT!ZyW9=>6>hXB4Zlm*s$Z#rak`aHV)S)GUtm^dUF?a!7ffCQ zX-M3lcNTiD{?-X-5z0i??2v+bOir@k1us?bLh9UZt$mvFOQW11vk*$DHzPXRJDIWc zDTY=uPfJGf9;`G>4e6jVry)q!+TS3H4(#twyOe!Huu1LSr5K#Kpr}!?rYPl!F zZh24?9^S8V;fJnlwSRd=ApdkKY3tcOL4Q_YRRaDuG5FRa>uxGEo(D@ zM57XeT17lI`wJeFP(nOtr_%P$^fWHZ3jcfjrFr@3^Y|S+1Vv-J_mYp;>}S=aUjARm z;!@iS8!BP?TH>KSmzgW=ZB~OPlle;P$@)NX#kKL`28z+3=ca^Zg-fXl@-f}r-tV#a zs2F{Huai=BB!H2e$#5#s0aNOSb5(1e+>}uvY{3fRRGmo#kDq}m$Vf_Jd$rHbhvh5H zrXjv1z$(^<9iy=!J@lk^YJX1d5MMQl zij{oj=HLm>h)1|Wa%#plc&R(BE^Uxo{b?*Q%{~(u8W1K|+NnoqeViyh&hY?;kF=Liu=(lc8YvxNXTKYbdj$p2#HHg8~Lh)V?2+h`-rvwA4Or4 zu@433r(>V&c9eZ$O=<8d{l0?%uY;*T6h{vusW0BcP3zl9EkZ@AJp9l~kCeA0gC`!u z6+PAuk00P~`vK1t(w-m6TH8{I-jW`f3iiMxS*>n1pY_9YDWQK^0aVad_g*R++>viQ zmB=(;=BuE2@%x!zghi;kf-PxTOsfw=0Kr`t^<@AHt|`XF$;oxFmElWp$e`#}yjkA( z=h3u1#a3Eso8@GA`TtKM?hNBoy@cXcA^ATFh2yc4lHQV$-Wc(Bv>%?@ue7xEA^gb^ z;b#Q2jR?)0XA~jAWeik;vJ#3fHk*$gpl^v8cs3(erf)RZJ^J4yW6&wQk(~*lkR`V4 z*K%mqmknJJMCp$2Nw9iLfR{udQ|5Ato40BJ*|$ia`_Mh;Z69N^XKK`t_yC#H%vp** zJ<>yx_dM@d?$@1`Yg@^j2ivOl&ENb^Kfu$$`p`wI}pIuJ+X6;k&}Jeyde0 zw_=&S)~`qOD^)-XitiZU#)(K?ts5*NdkSTz3KuQTu4Az=n@D$6x7%mHG!LVMot9%3 zw6OINKG$DWnK-2E>cAxcS1Dd!Oq26{iwYXffx}OO=(D3psl(2;N%$*&)&AoD|x}u zsLZ(b5F?Oa%o6@ob=e0`uZTGA$ZKBkqn*?+$JOxn>-yI4hn3M98dO6D$3A$?eQ^GE zH59uVQiYA5M_?VU%0EF>$< zaIfA@HH!=DzJU`*pWn(iQVr#kwOHUPu9%jK*R-4;ejjWDSMUz#0fSk>J5_kck0j*s z(^7@6|0Zs~%WzXM7rOX`&+(9Yt7JncR}`E})oO4!iJbcdI!_&A=yYhcYvx9yei`oZ zw7950_&GD~tJ4R{LgqdT>V9U7J?J|ymSJY^5enudGCnDXb`W49T`IPxh^D~kykL{r zOFd0!b27WDppGT%qUCHTwJCh1#(h@{&P_48$p_of-8Z1N9vzIZnxlEYQ+ z%ajUsd&b_L{JY58GQF*N*xGd}*jRe2A@tSwoapemVmo{;i{djEB?X_le?@9E6*)=x zTCd=Br0Pj3cU*ICVel#*>z#DTCU>x##M_2GIO=Xqxf=}J!|S)ECT znpvCEMmuk{s%Lyk!MKexNmN5G)ivCzU#a4yjE*oE&Hc9C z4Nds_DIKegmdZ%m7J7}um9k?jjf8gPEWx75@9O7~S!Pf^FBtq&BVe3|K^6WZ%Oo1j zjD#aKv`r0AQ|N4^*!*fRMGdB3k5fVUNL{hT!$yA{-6JDnlC+Dgpmy_P865Hb1sa30 z?Uw=*bPgJlx=3)#4T;UgEk8gi!*v!!>M1&|QX%`jJ^zVLwT_7K?y<$U>;q{yxculH zw>FD0m7$^}T?DJh%*m|n)3QFd(1*yevP>=2w9nf!@Gnz!HtwYzL{J*Ky{@e%v3`$3qt5E58zSvn`%O9CzhGf0 zTU^?Rf6aznIk1lJl0)Z%KRoJN@r1Bqy2GUvOM-QXUXF;p?GZcq_8gxal&Rg<0nqc0 z#PTjJS`y5R!_pVCjpy3y``BztqV5#}qChy-H!03GFdG@lddgmkK#uF$cBNyY{bg>X z(WUlqivoC+?fEb_HMS9;L*1fE#Pn1)uc&kbM`Ae|QC{6h)@)PHV~rlhPKex7)7VKp z_u*)A>~waT020GM23wS&BhB7RZ}MLQG%6WBYkSU(By~D=_$WCR5sX(ZYu($}&|?a+ z4PY4Bpqvuo&l*XtH{x33vR~zs7Pt3Fm}p!;y23v6-6U%C5}6+Qx=3)VNCGLH!IA#4?X^`W?YKuy zv85@NkfC^j|1@IQ8VYFHV)BKqG!|wH7WwM}lsa}MZwO)DG?=L6isb4Vvp6+tHpK3J znJG!W&h)QMuJvckE~-z}&o0vAS;{f1Np7v(b$Ly4Ni9nPYhn*pbIS5^%|?SU`813ui34@bO`JFBi`fI-nV z=!Gke1ZlVu{5y|a!_=_PxX;|D5!A0UC+!S)ujfW!SE+D_+yeg9=s?OmnRD(lIc>eg zF6SPHoL(BrX&?T)ErR#bU-|UdoI&X3fm0>{{=OIKIsAfETI5ru9LIU{^bu>V=Ggew zZFjkT#`)}BJnd}usKY9S^8?^ok{?{Nhs&@u&_N_?D(dDiS3R6%kL zn-FdK)JwjRX$OtFf14fr7B(ictEg^bU~8k#j-I!N=iW}Tx52sJru_x5P#Vyu{hbVE zXn&LBvr+O1E+lTL{hFfOOfXYZzO6ziHImiWPq`2dN2lNXA}_UIWO`lO<~)AK=KW5^ zlWUb9%gN|p(o<$mtWOR6MqSsIes!s#BcR^(1XjMB@wVuA^F%BDC6p%qU#+-ATX!B+ zaTvS1+03|z1LaNh&ly0!+uv*3+6FGM#5?*nb?lh?F2wyDd<-x~6A^U}OYi65ql3@( zo{``hF{?MlV?SM9ms~d{`CMIcO&!spc^6U|72rrjea0E^bL#n_Wnfj>h?M!%n!WF7 zjdf`J*N3IQ85m_L!TXj9RC;CeH7syF$=MBhEG!vT8_`d^TblPmp%cN<>S0E z9#?Ojf<4}v9`2rXAHcJ=ck(virtYOjiLJz+GRCN_?9YOngpy=VcU!k4Y1&m@Y8q1X zA#b-iDY{8=mO5d;J;Gz;i5$>@6kX#UzH+bd7&%Q6)3u>Lvcvfb{p+5ROtBX(y9vMJ zWa`tpE_!zIqI2SArGZy-khYmcG`g z_^502yVmIM^QfM)gJOR~oY!G=-eAum+aELAaEtxAhO>i&D3e%DSruA33r>{bi8a6b(&g@{Ea(6AekOkU9*Vv+t&2`DYj(DYR)8}m3 zSQGo{^F3|XKDh|%Ry&qyLoG{!Zif3>Fp@KEb;(!tEjtgsQ1P8IDG4Tkh!f zZ|K$S=(SFCP7QnS(OxJnaZg8NQA{_A8mV81Xm!aXT#}k+M7*6W=y4{JN#hvW?^~|N>dg2b0GFAA& zFLP#lbs}rFUni1m!>DLb&`B7wCeD=H@ySjV8#6eS~ZlSrP`&1 zg%18CY~?X5A*e8?6zfbxyp@Rfo2rzD@)MHTAl$-lITU!V{Rf!9UfDdx65_lHws&vp z?z%kbHQ7tv#AGNjp(08`2b^QLu1oSZb#-2WIPOE%Xz&)fSC=Q#e-VtFv| zmsS+!JqfcMd0x*!j}WZvS0kdN~~}Ne_09f=S7L%hyJCp z*?&Y$eihO%H)!CUa4HLVJ~wNP9iWTU_!MS7TV;r#c&Bi#cd^D`w>t<34BipjT+* zyb`My)EV2|Sz`5?l}R0Yq~SlZJox*^A^wuws?2DJV(Nt<=&we%f~u0Hf8k2ShkDr0~h1A;I>9IYQnnNtwQFpeO0)C}hExdHu2! zien|bCBYv%j6!QGpwQo)VDzES<4ztbMISc=r%EqdW%oyths^itzpxYrUVYPaJe(iYI4?RIrlGado`;>{a9R>b94e>9|CW~wpZX6wO&ZR? zGyKUIY=NpnqUtrqEGVZ@MZvS?*60buq5FBtz#@5*GQZ=1x?+7&rP9HW%{en+kPcerzOh8H;V5ULxJyM+XXO_Goj*)`T}ns+kRC68mHmD{WKh+6qAjT^ z@lq3I2>Z)lstWpe-hzc_nJTOwDQc^ee`nvU)#k(NjgCogf;KnN2s)XyygxYF6>DVF z>=zH)htE^B`Q18uXwz!%z!lo%I&39qea?KHXjBw@TJOd`wgUwA#nNe{3_D^Li0v0m zg0-%5qXol*-Da6A_qPiL%f?5{{J!u!c+3j&>ez{qR~EVWS@zYfcSK$tsIO)@@Nbr* zBk!WGPDlFa|0hmAnxy}3JWqjaZkGo3cqTRuWq>}Mxs&Udn)ou-u}Gh#j^Ec~Tt7=2 z;rYkjf&6NP@;}7jwlAH&^wUjp9Xnwba;o9#j9%bLP5UH1x4HZPmo9m$Q=B)YIFC8S z>29u}wOxCMiZlHKCjwyO4C?`Agnp^R8d8O~XN!IOFJ~j%0N2f+BUF#XV~dx`e~l%U zXNAvys=t{^H~5)ygtpt`nX~%eMlIY=f1xWTXJDTF%=}#3N7`%`85>y-EmvbWuOigw z%A8G{AksBt?!uuN_7Jj)rS}Vu`y;>nVMprH^**l6bFoB)@bU}R#1=PP+PW3j<{231 z7q<_wKpROS#gF`4vK~5*H2Sg;Suy|e0CE+WVPkY6CDFlxQoHugA_^({a;AI^y*WJN zsEH}vyzi6-=lK_pG?zqr7;2P>bW!lZk*G(iaEN`4qR)dD>7US-IBaAk&K)C7$OaaI zZ{Hw!c7_CP6PeBeK1MXp7aU211J&N0-f_r&%GmnC6RWwx?i>}u*FZ4mG z#pu6ryS)>@5C5 zlRDbztjcFgGJnt1q}7Z47PRPE&S_ zKpIuR^B0!4^274xCS&xjwJm_+I(B!`80pz9r9j|BC7s$dmy&e71$C*DIi098mQcQ{ zjs|99?TNC}jKYHc_0>Tvp(NasV~fiR>XLu<5*r89yz)U!;ve}nt^dhy>12oT_iNe< z%1`qP-q(&O`(Q?=4#vq~ur_5NTT*xLrPa(|a42f^l4%P#hiA$>P?)kGCk@x-Z~JIW z?7@-cHL-=uPHsoJm2;kXpgvVzbw;xM{q#i=yIhZ?lZ4FAm>$S3z_U{ zOZmKm&Jr=qN0cH#284wmQLy=ECIR&~M7Xy<%?}PBrBz?xt~j$_A?Yd#2IzUJ@VmE0 zrn%*D1Rws!eE?dB-6Gwk3jeSmQVf3Q13WI+;M9!bt7m-7mkwX;E zm|>U4+~vSS@W1cRWw!LSx6Cz!>z5DJU~sr z!BMC!{YG>`*O55F;bQ8sRo)RCvVu1>hlDt)WKSD574wF_fd^L->tI$9k9x?qGe+A) z#Y~9r`Rr)*aCs;6_52e#J8K&Eiso*e!rlO!CYrz1OY&$e9s4U&FCdliR*LGMjzw8y zzpSPP-fQvys3L#QaBWLZwy6yT$-Kf35KHN%i3)RduAefua=W2O?RRc zhHRijjx52&P((#sl;BZFZTm~!^m`E<`b@$yjD#ffuBG)Xze!CNX%I9BUlbgCUidX~ zU9w%oCremIp!7FPk;0q6tSd$&lHMtr%+JweXJ}J@UU1*pQM6aW3WxTyVoDV4dBiw{ zcDv%JS+pmf+Z%1!A(2~^d*egNB)r*6HZ+7ms8Zo;>10;$R3jp5F+PnRvy%e|U|Dbj zF(?R}6SVZ*XwS~LwX^49QOL#6M^^p8pU!X%ndFVPW;e;el*qu)E!#MjeO!VRP7)^J zkB3Aw+%_~&{-L2ZzEiXb{^5G1v+s!54(3AG|0V3knylEcONhQSp*y7^)JL-TIrCk zaXfkO*O6kD&Ne+P=8)c(V!^psnWJDS zjtvcd_n-)D6XXol^YutC6y*IJsZ-Iu(i-=innOt^$e+2c@0rOFc-9Bs5f4cuM zVf^|CHB6AN3_oy!Jnv2`_Es`d%mjHf#e(ZyE4*l!(FFMs;#xZu?Ib1V1Me0VHpXx{M~j&x$CjY*A-4qm_)e-sY2!J*)*EqqWS6uzzQ^o##I*U>!uWK`Zv zP6w-lEQs#!Lk7Lta4v0lLv3J#QiT!;u%{Y|tQ2r}S_+~xlv$~=u+(i?So3>em1Pog zSY7g1@T2{p?!NTBS?ZEsX!LbQ@(SA$!`6ZijH3F~@Xu@wZ$)c(IZDC4@aO^2St3XS zAOZ&BQ_1DA;r!t+ejmhO{oDT7qDTQA3`e}q|)@R@iJ?4_W;}xZZzz@WG zB3?1$l}c3@_x!n4dSh-QEaOBq5!A!oYGgdF$%f(FH$rI+7lvb69i1A@JEU`04(tn| z@FK&`faXq*L$lB)dwS!Y?K&STfRIt@aZ>a;FN z?Mc|ew+48xAr&5{R&(aBGOQG2#@Vtx+QZ>PN$@z!4~1Z9dV<`laQwxiEVN)6nULv+ zEFjt=->LR;9q#3}7}`%h5iYvgm&9w-H5Fdfap>OnCW*iuugV`(3J|_I?qK`9<{xG~ zN^`>5_6;IWl0oX^(8u_=c5f@D|b!4w4hJY9OiK5i!M;K8$X!Zm2bYt8W1)lDdp|i%%CXPgww3A zkx98rOvxk(Jun(TmkDEVD;6kLz z6Dc5?t4`kPWgm#*p@6ZO2kc?BXN0UK=E)gQ{63?ah9yes=*vgi-00YoiX6EXJfHi> z3W$X(()&x?Q-$ZfAL*?uGI@&48}RDcKSa8Jg6*8I;HDIgWg$em6EQ(bG`-8{vrBWg zd26)brEH%!4}7Egxf$<+^-lL+ghrcl`u6caNYnPgTr~%MYtZtnSLxrL zM{~64-SZ5^>c|i*lsK|;I9tcd_r&)8eov=PLSBhJGT=v%GSBx&)p?tx$Q4@6IqNdB zI`ozN-exW8RV61Fi-w5yd;?Vn>1?i}eX$i@U^Orsx`&@Mw5X^}ZzP(J%Oe9v?qu;d zKPl(PQIw?2=XgOsf&AR@2N!?I_%DiU?-AAlsqN7OUUz_K@qB20|mYZ#NJU5V#A^RrH*0C z!tBn~8$Ex>QKK#-xoCB4&WGwC;Bu?sk)@f0!C|$Ow&x(I%B=MiMO~g>TX;T|al)|D z=RH`pML{Gwoq)_^)<=fIG^A~*6b3^f#W0SNo1AY%O5He#S$$!+D2LOed;Y66N2|Au zrw?es)p8A7)+&bNr>~Ya^2~hz70TY@7!$n6Y%5(?X5Ex^Wg85#j4PecTD!50!5s2O+)e?cLj>S#SM2VOBgJeS@N`&gf)%^S z6&uzbDJIDYei9aIvSL-P*t?0o#eNhPYqVm6T(PU)jT9>uG%qaHV8z~_Z;icYJ7@=n z#im=aC9c@j+ZEfYYG|ov#qM;)Ui(R;QX8bMv0``xS<=mN=)JNX>F(u4@Q=BIn$-x5 zQ2GYC6#w>s&$Wu?DC=Nu-z;dlA7=NrNVffP11)27Hy+tm9UR(>5VhN3Tv_95o@9@& za|F5K&ew6pFp`K|d%247dwQK8N3P)Ho!_KFT3aGlMfOrh{wy@(|JbfVCRO~~XHR5n z{&YTaAX)CzQ>=n|>Y`xY3GRDyJOSc9WdIe=MK6!oKm9z_1{afNffU{s4ND&guwbre z>=zC?@j?KD(>)C5DY)SE2+irE@`8&f7~Jl_TomnfEhMsfrj2n^h2!Q#)Zrj~xH$W2 zpRYw;+4%krd*#oaPdRK$dGG{j5!8O>TYYQaNH8eJLg6`I4^oBy{#&G^3FM=^fTrb| z`=neWF%`<4cU`2MDb>xC3tmutImv(mP91||93F2(*SV60nHQXEcw}|^OGm8V&WHfV zw&n%LSh0w1ucl-$5jhObaiH(IC_;>3`sOB!#DnX?6C$tn(W@!$75!(W^U)9m^ZM96 zfkRYVDZ`Wuayf(ZqC-iO!J4GwTQ${Q4|ONhBOq0Fqr+E`5@r52*87)`0(_~g+?80l ziL!E&v2qVPD_4Qf1WuI)MsPAKcZLW{U4{pgmLOy1C6^-|&Ci}5Aq(}g-qpSd=Rks| ziHiXGh8rTq%tC!8vI5T8l%Kd_&pZ?AzjtTGxaHF+Hn7ISv? zURUh<+d`03RVc`B1^+! z6~iBJn>XO|A`J^|zuaKqEF<~N+rfBJ?S)8jBl-7S2mRaaU(_ zq!q<(Hro1gE3CCR(Z_sU1eIhGu__`6!^+d<83qqJTl6FOq8(7kp@nHBzhYq~k0rFl zJmIHa+mes4BcwcV_UW1_l^{p-@fBjh&Q zKW%Eri65U4d1do57uc)dGBUf;tvJAa=+C|>qCfU$BF-#f82%Jie6A@aWd7}ymLE5j zvoS=JD?Pt5_ULpHiMv}qklxbMG|Qkf^DW^Cx_5QD#dtDa0kP$syg8$HW``fkW_BF7 zO?edxYo&&KzAvRL0LJp6sthUrE+>2DA%a|L=>V3&{gMi%hW3;4d!Ap=FMWxE7^%W3 zpM^-j@B*Q>RN?4@RWFU$*ENDB+TKB7=7#Y?*&U||=TzZHLsQy7OwhOl?r-lQTovVQ z`LD}{YS8;K5dOzO4&k`+0e=;uyYEaRL|G5IPrG9Mh~C!nhqg3i{!Deh)^lMuRM;W~ zE~zJYx)44!!l!J+7UqDR&L$k*CX|EE2;o49@6~1*la^I<9Op!Q4b=iPyb^(fG^*8Q~P^h?vZ2 zoTgb{y*xJ0mM3*Dqa@+D%o;nSsmmm58!MSOq8zxP7eGRK$3i`*W`W)^{UCX-ivxuH z=5M28$CI3dgVN)%G?!1ONypn_+Is&CikzgRtT}|`h<^Mf9=l~3+l|HAmANQ_%B3j^ zzDXzS`EtQbzF=WoQ8KiWAhTAQLsO1>AJHvONbSyyc4;c98j@D(%NsfOCf`!Em4!N- zH6^RPO&nCZ^(4|-wW4DJ%eRQ@1A{p~LY|a}S6}_|%=5%+de|9o7W;&=gsU~i zFBwC2gM6y0`s%gUqdymDN@l1#&{)q)f;U*bAl!-D)dPW}SZC|RiL?)7mW}9OoQK11 zDRlN3F3;tq*S1tF7L%q-uuN>fc3%iKa9<4zTu0`zB{aZ}elg;U^rIRaC%?>)!sR%X z{sT`;Ji<<}&o{wc=b4Q^!d=Skf@DAT-G~V?r*+-cR`4B?<qUDwOKBUM&|(82KXm@_x&K>z^4G0C zbKGwWqsKk}(+xtJ(Uzn|5KZ1L0sM|x|tUn)yUV56G_y4LtHXF}Q{Y`~T8fKI~p#{RQ$|s|j z0pogzh=Dnt48F1(z9|bFzD5EFxtMNP5}E`e={$gv;FnAm$sm?t5G$AxKx~kaB5Krb z6fEh>dsViU4kvTJcA5ibws3GVF~W2MYSxQhvDqCC-zwo7oqqz)iv-G3H28+fY3C}D zG`ZxNGL;9*1}Qz7uXqvYqvM=)tNOzE9*_>kLR~cm71cC1rpX5Bh!u!Qa?y)AC;Hi&TRLUEKz70!mi{&Ob21v#*-=4t?QChj=~217{+z ztFJ#|)#h#k`NobR4 zZrD=V43RQ(4XMl&}%5qjTrv~mNLF!q@1JmV72SFca{-|9@8rfMS*8Z}13dv$OKhH17 zCSeHYtX{``R2(NZ$Cg+?>&6@@jXZJDvueZ_Bf2vKYLf#W^SYON)vwLGMCz(7d}jV4XUX7Z(b1S=L%6rRucwfZgR;Xt!gO@CEY6dV=W&JsrrK)@AEn*pc7 z=_qt76_XkqRZ-OGBf3u}Hx;FwK|};N@p?@tz36RX$?KMr>JRMl@;?>{>y;R0vP8#S z3yjiWU=HKdbTSx1tI2xN0_5H_Bdi@e7S>5P#+g$24R}{>qVHsX=o6L?JEnTW%-!o) z#W7pw^JI>!t6n>;EIa0{XY6Y_Pw(6+QV=rdvLq-t)7baladx@Uc{S7KyqZVwXQAhT% zh&}SD{{5;Q_BEVQR_mrL!)_pJ=X!S+tN*O-!bTsVH)gUEmneCXq6YnekGWn%t8@*; z9s|}3pV(}+UKPC|qPhb5zw8#oo^WcU?MAUU3CyipkfTl4yc68If18d}lK$pBJ9(W#g zT@Rkx(PhYtA2=NCoGCuaE2BNtU0Uefl^zXqdFIwFZ?tvGnu`t|J;S8>0e4AmhUz3N zThG{s-ZwjX!!vbA(7P(1PJs_qGyY-qLgvFF$ z?_J@LO`mQInD3bKoS5=lxQD@f#}v2az+qy_L8lv2_OlBEf!$t=M74^cLa^#GE3xhi z_(iv}BYyo()aup0tL=?mlA&@J-nZ^7Kr>N`fU4}B#Bvp4$f{|maEyZd}70u6Td>{E+@7e>viP9YX z0fh$h$NtE>Fts47d$H6UeE>6A7e11drWxfPYgGr-RxN9xJ9>?bjyiIJvP01qNFb}L z?wmPf#4GH3#{L+gIjX><>i9fUds>Y(hIMM|318DjzLuzLa%Bo@jzcpPQgxX}sHZ2h zh^Ao#g|~t1F;dw_!ET>J0xi%n67*{S)U)7apSBy%L}L=qSL3apF<}3Rqqx2*F>(?Pp%7vpTRfrt%K5-Gb^=!EV~YrU?`CwYkt z`7B?vO_N8w$)c@Y6w*kNj<#mzCG7Z6TAMm$RZZ*WU8kK~_tpmr{)e7-fvSzw(wG#bcTWdFrn9uT}fw?8(Fa-X`KK z&E=&6lD{1g+a?0?-k|aY?JF}+_N^wlLh@6>#=M7$TfLFU3TAli&7X^V_m3hb>?$xl zfl>0H*iylIK{jfV=Q*B+uWH$oSMj;^<+VMXAGOBSEE-X3%ql}-*v&2T3Cv37uuv7I zz~x!dCkvpv`y{@^-c2cuEgo9b{w9YgBD^I=ixNRy5-h2c!f8Le3Mo^W4IXm{2ftFw z4K^Y`8|2nXmLw7UGOt52m+P!|NRQ!wFBNzaX6#SlW%owH8ApOiu-nC^`Cn7Jx_bLl zQ|TsqeGftydq+>u7CnDZCYvnaiKV4Wf|ou9%o92C2wpZDh^^=6QaI0_U(Vm;eEm+o z*tK!ch;{6R#8y}XMyyW0(UmC~@nZ5;6-gEBt15D_Ktb){H+mE}f4xbDwC#giMRVeT z<~66>)hu0m`37Fa*z*0O@T#6o_a$7VkXVy23W4h?ftD-&fL-sj5LkvSt+OS<6$wq* zwGr8v8>641leLYq`7p3(f;z{h>}W-UpJ15A$f+=QiRCtKjFB6Dy|#Zi{37+Qlj=#t zIZeY0;VYDwf1o?r8f!UL*+EYpe{oCmkG_A|4@nDcIhYKowyl>yZ`=FHBsDS1g7t(a%oB6HhO zXMGToxNWH@PBx1^UdwzdXy1Yhoti+81B|F;RPC`zQ z-XmJ~LO38{Q5<$uUy&0{s>&imi=75oui9SBH?{tEN@^0Di&*E@Svz+$^SK!RF~F$z z&urqj=h#he^NA*aJ*mp1%;9qIf<@NhhVT-jn@qv*cPU{I6e;!CrI6OVa>Jj!<)fQ` zl2^y>6R}xz3Q)dtTQBQdg!QdUdE4mH`kxF%2iIxG8BFkBJOZrAPtso~l$T|9>e!PO zj)u-TZU-cbThau=XQYSFt5i=m(XC^pmvTgp{bGB%D^R;KlVE6<-h|DmSr%tU)1Jz1 z`EjqxuFF++XINR7IuUZ0Spd&|0mEBig`ZattmQrM=BY#*-xedr1=Daj7*o8o@1g`=F zC};ySIh@JSP0<+Y0aiP&^>^L)?Jgvd=M^p4PFk;{#Q1lQMxebCc2TcplnlJT> zJplkHzUZ}8WVkS38CAuCIM6v25G4I;Xl-^B=`=V-c>n?lll&fzyRb9*Bx}x+eRbid z;7GPr$^6ML{>PiW>loxMA62D~mybFNP4CXU$icbYgDL!>$MM~t^UHQA@lvDEw3?#y zI_n1ufA!wQd7$m)A;S=tv`N?n2QY#anM#C6k(xyRREu z+w!|#^w0c(nS@}bFnC{Q(NE!*mwa7^^-d5nhf#mMN0yWec(xzlL_w zo>pCZbhMV#bC=jOwyfT-Ddj}^k~%g;ip_c#D0SWFU`?sl{Q`1WR_hmzc>{Wc?rh?n zcwMSskd7X%f#lGJk_go=@>P%U^-^IXOHX~T^4!%Iwz6%h8jVePJE+9j%{=bcoCT11 zW2{|ct5`xYzLOzcUJ0Y;)6_DyhVn1yH_&hHSA-Wf(x1_<0EfAfxkaRw%+|3))KCvJ z!X}rb9>F7}d9gLzxeNKHSNvW z2FX!zJ{p-E)xhP*=BmgW2~>rV%(*R& zQc#UFY^%LTgbbUWb}k^-dxs*Fle%NSNcBSeqMdvZ?0=Hk{yFaQ(R*m?`MtYfhmaGhu`$ie8)q=1Lau?2zHcG~@>bixK6XZ;&GV=z;eU$aEDb%EIN}Tv& z=B7(Kg34S8dkOjO(Z{J{r}ZXZ88+Dwd|`;YOWM&QU^$WcC%f4s{y!GpH0Y*NH+_45 zD9{={U#lzk^TYcMb}zp_<64}@e3dME85c8 zGE@HRWl4diWi&M7w#JoK#b z6a%5wwp6mfuGxi8&p(a^OR+SBPql}bNZ}89*+q;RL-vKVR3p>l)e)qI++bfT>=Cw= zo>aY)>rOEf!GG@)Q<-lPiuAQoIwO^hl^n?QYu5FJ?!0>W2jr%~EHy{}!Y)OISKe;4 z4MB!sczTyym(?TxiqD>~qwx}XI}+hbc6Wp;Qv1rpqzYjVlDWat&A`t5zL$g53w~^N zJCaWwO)_hE&Gx6T=<1P1)S&x0M?xbDGE#i>{0sB6axK}Zrf6}(t^9~BUho)~_E%c| zDKyZR20Euk5UZ?Djm}qW{${z^Ug}Je(MU>49lzcmGII`yT0~Ea7DP|P^oDt+RJB)1gH4fSLlsXPuwFsSCT-V zoTZ- z5~&w03ljH8@lz%g{!6fx_#|v|*)E!wPvPLD-PGh2B=sbj zB3c_f72e+(>{)Gn!S3$zkBz9oML9Ld$!srqof_|>52?aCQ%EEU9Qe=1JcS@cHX70D zgtW6|V?-rpP*3K*9QfYj|5n%E*rC5|A4q%E-)t60`Ww4qJe?X-L5aUB;$EKE!j4Gu z3#A9=6>x$>N4xu7sNd7w?_F9sz_8;7?q)#im+U@!AvbWS3~j+dI=7p6TmO18imKPg zQrg#}4%6E8Zb7|2aIZ0`2DIpfSmI#58N+tOUGEf}?w9X5rh4PlmqIQx*xakAu6iX? z9tC`yzvWc_tUX~PU%kzPdityBmSm$Wnh6rQCNDMc+jZ4!P<bI%GMlox;=NDiZ7$yY&VKyJxIr*tbSm{_k2o5H!q_XrA=;-qok?L7OPL1$! z0O3-qH)op`3uZUSL+9>%g?~UQhM9!h!h%rGqWJ5B>pO z%z0iDZ9tPs=5TKe;tuy0PK{KG4CMvi4=Z)J@2X1A3M*X{skF&eTCGakRq2lekUFx{ zyO4K9?B)+;v;Bo38we!XW!NFPBOlYt3ds^BAK@^4P}sd2Dywa*9m*Bt^Z1u++)MNz%xY;3Xz$6>6}v zAT>{vZ9@i9hBl{dsZ0@pvAIn~0yi6uftz5rCWF~y580bfUa4V^uBoF8?qM5+{OeRR`g?uDE-|}M%?~z33ht$XOI^W#9ixJj7;$g}dCT0r%awT1N(4*Y zJ`8PK=0`Tf>0+J(5BCwOG4LYgBwgGL@f%uB3Bvphl3v4ZVs{lC79(f2iV5J*(brL z>p-N9-b+Zj(YvyAd-wN003S%JXcg_NQej8@zlPh}nZ2Qrp&z0GSazI17nl1XD-iUo zLYS3#4v&^!9w4X)Mbrs-K&d;Rp6> z)s%MxIyxsKIKA2vn|-$Uvg0|BV1a4B$e}UmThgy^hYwi1#ulruCVzgQml}Kv+oksN z`ZstUD*#w`!?br1>zEQ-O57oy%th^1Kn{*v3x85s^~aM7ywvI4$(OA!SR&AtQ%pK> z^_P)FU(W2K4F&bSF8PwC$KAH}Ry(@UsNH?5 zyO{gv?RgrnQz5AmCB?{4-KH}=|vpq zM~@sFN;U+Y%n9d51iBm;!5Df=5oo>v6mUTSR8eq@UNOKqCDJt_2zkLi_DwcQ^`z@+ zProTrj13PsZ__%R_Ao$5pRmA{?2P)v)}^lqOGdkNnr?K)ET z1Z{Spbw-*#xwE{Lisg6Bc>sP%3Y?IgsPIfQo%CZP~c3O1f*1o_ofk(LfnON)g6c)0Dsp5WWAQyrU%6f=TsRQsXtBrBGnSg^m^ zv#Yfyiz_LOVqBBBVgy0#5a|8!P{nzvQEVZD6?g?}>3U}L)|9h^1`|L*zpz(~ODL)Y zlM`YHK50}q7*n5VCPK6UaQp_Z-sYi4B%62h3xE8qgtd9fSA3uW!3uz-?{G*{{zQXg54_R(;=T;ne9*oBE!Ny4OHJnk0a`1yW)KfY1)&XM)VaZq$Q6b&A7 zA8ffl!UtRDoQ_*HpR5Mk@3~VbdV1U*10nxr!jAkKC^5i~7ZK1IuC!TLKHzQVm}I>H z(Ho?peAe&LoCa*Dq_0L+cU5;?h|py^1HZzsxfEW~t{!z5Ist4vE&YYts zTruVNaATsNWqn_a;=%~4nZ+pV{~|aBc@C9zSj%)XLa_t?!R*8id_HJ0PE4SIZYiGM zh{%y4q4j6%QCq!!%2>bP0pVDe#c}oDdb@KL#j@~S7DxCU94Gea73%Au)pqGmgVj+K4qY+(TdGRSs1p;-5Na-6 zU2ueU8b{f2e@t;(0@LVsxvqDsIvX)Rex-@BnTYf z?nIak4ow0+$@d0F#Q?gP7&wjU~YY)Lh#hS;DBfd-QH@K2~1z6D>-F&2k8iNIN z9wE5|-_%DP_ciKNnon^rp(?E3i~c{j*d95C+tWNfJuNKg*`t5Sa#ryOaL0S&S4gIV z33@n%hrxy5qBrRn+7>+U61={nhu1r>7wr<;UOeaX#*WUJd!kvB074703>1m5k7cY7 zd4~jwa@n_3?W_U~&YWh^7zhYmF|;;-vN=rave8q=6`zqAFE!~J6^;VodJ*+~wR}9~ z@GX;kxG^oTs=)VaG6iwoM(mFeuJA!Lb#6IG|IHgew#-YN^&(8Slb}U^O2I zJK2Gf%dpO(9exyl6DFzYSCj*5* zE#5-=(R`#MK3&$3j<>_f;yA%m1dRROF!C(I)LK+!N_K5y5$304WbVT^%;7&l@zw8d zdd2F{Gz@w0yxKTm^7nc`eMljNY#ZzP7u9LYG;DGIK^&ku{B19}B^*w82foeN6K76( zqJ8GfS9R%Lr2EKv5rR{j656wm*9bKWZWQc|^AR4?NdC*p$ZHA~@d4pu&9ku48>Jy6 zf5J@L3R}6n`hAz>o{S_tOf51Y|4?I4~&G4;oZxs*-l@lj;A`zl19YHMhW#* zbac+(R9xBKLCE-F{@4N7z4A#QRh^JNtErLnkvZh{x zpO~4mWBJ@FkxG2fC>$DuLxUPk0$XS7rdN5_BhFX?WOso@BvZH9MVlX5fCCIG+WYy# zZhjQM6?c~ea>t2&u|cCs_+Q5V${^0FQ_nAeu1Fi+n63y*O^ILlUB2{E*OXCjhlXZM zOx$&7977}xA9C0bO`MIbU_UNbu2K_;zf?J}tpr3Ri1y@(5-P<-$-`+(Y~YZ|4V-g3 zWc;w`LiyxA+KjS*wF73xG1>iZbaS7cmlTGk{<7}B(*Tj%xIIr5-gBCB8r;g;LaI^d z$;?$5Me~B&%|8|;6H6Nj;(}nX_}|Faxw5{g!WRyS=LNskgM-|IE0$*Gv>9In*FD04 z3#%p5id$0t)bMq1@vj|*w#5Z@*&lMiV(9&f7O1#LF?BU54HCLmrY{!^=4h}zHW_&g zRWcdL24ASGLoT?G#JY4kIt$msaQWkhA{!-=4Wj7!Lj{N{)cU8;A&*WIQaAP0D3agXY_`r^|}Da_7#Fx!QAA4uOT1R zD_RcJ1H=IaVi1bJk@K(_pr`^D54CsZY_M7M_r3{1Q1RffX`Ixvd(fcDziPd3Y_@r9 zy<(;y_?3cJ{J!nbpmQ+8^fwUv8vRnrO@TpP=-DyH@z$stwnEZ(l+jscNTs^xs?kaf6rC$llx{LClOOXo`4Oqk73+VuSe ziU*xp~KQGYYh^$!qYzwrcAC7?_mfzO83wHPd5h4gI0p5j+`8h z?)vJk8{SrKP~v1jGAI2PvI73XvA8WOnW<|&jzyQuPV=hPFTU+TY`0&#e)GvhO*=M- z9mxVlOOu(XJGHW2Q`D>tpvXwlnokE2_d@f5?jW|*jP;v=GZr`oVu4C82Ow8I8&$=c zp4gm4+|(yWRZ@S8!~G-LC)|5EAuz+Gx-m}cVV31u)U%Z4NG!H!4=LCzl3hC8;ekUD zO^fc-tH&1%s8|}fjW!`%<|fi%KT5+HEjkU})h}%%-G_9+&q}S!J=9$eaFa_UWibq2rUbB?&oyDxN;7{7iK{$8z)`u$oGJCi^(V0GJC+#4 zm!!R({m1bLS^evX5DvhD#_5={Oi7om7{jyK8v!=P&#zk^H?y97$7-ZlLP`OUK>(>s z%~&lUEf?1O)FF zB`??%27R+lr%jn>=vI-5x84)bRhiq+>3Ze=a9^M7v^C@P!#g=KxVw3Pcbm6qTc(g@ zR~*?*ZU+bPesXGRFjJFfmN-IQjjn)$nMmYN6UHSy^-r_J(s+MO5lS2R_!WD+o>%`tPjtYGk42<7>R0@YTghZ;qO zJoh`~jfD&hbO;_E8rJZ)U;X{IHDGGkIt%l!fU-t-vg=RRKQU}|ZC zuH3Ddd!T|fLv+-=!%iebYUp36gzG`?{4lvGs}t3za|amBJ1mx}?5^(U8eiSv z9Z-|1D$q+mmJ7~2?~vr+B{j)I3uBxGvAgMcdz|MU zGumi=lG;2SUPf8VJvkN%wQ1<%gOn+w|zV5364lQsid%G?DLV-Clmrge}nLXLCE(Z z6gdc|thO6N$wI&5%?AvqCXHs|W1Z6dmO->H()T+(+U-&*b zHEs#5@e&k-*0^!dHXkHwN~`4@IC@8GDz>JBxH9srI)A>5jgB0auEe7H*|6$ zZ%HhHN@du8HzhkijwRl%NxWgl0>l!})Fl3uJ{?H@&lBvYWl(piCh>et;)%38wg2;b zoRhb_&;;1-9uK<5z3%Zh_qfSDu62)D56a#snyt^h`#0Wo>}k&!zf9Qg-|R>E4fSt& z^^d&cH&Xtq2R2;(SLhP0jv{*6`eN@A0;Np-IO_tUkl|iI0Co5Ln{ScX5}L>>mGML4 zsOD!YdOVJ|K-FEbq4-fs)4NZWzxqa8B5kJY#FB$5f*u*}^w0k1%{fc@5Pq{!?L}Ig zy_GB{y7D|Z(fo`2Y&-I8tKeJB9KNXy>J4?s!IphxBT$EQ-2l{;4a?}tRgtVCt#LzR zRz?#;_EEOfkbjcHobGq$JCALis<;PF?{|w4@fIkGZ@3$_->XGj)|iVNcQGv)ms-E0Ma$6SFaS)Gb_ zWrvq_Xvsc`2x~QE!J<=c1}usu&o7KNFE7d?nqd7vynCNWs=x|x-SP8zl!P_3lN~M^ zOl&4d)4YfNr7yJb9o_(`;xr-{q`?u-yRO!(WE)ITRCw|2xF!wbUr9o0W^P5(`u?-> z9|c=d&n>J>tnK(<06QNqE@>jEa?t0|=5CL3St9YLRFE!XMOE9yV~d1HcV%H^Q&;~; z3mXk`#(brSq+aS^dg2ufux5S_y+t)?dzsZS9K>zus~_BZYy8+hYNzM;OB%dK6>Ql_88$FpWX+)yKZ#6DKdY1 z@i%M!0s{!fS7MTGqFsEF_tP!$Eo!llgErE zY!!*t0}QL69L8;RnXqrra=ABqbu4Oy4;>6M6LT6OQoFngi?*a zE+<9e8*++4VpN2a0O8w+BlMmaaiku}Ar=1D7Mg348Mhro`>~tlu~Tsv_*WxHsefLLAFlhRStT%6Cd{;VqM#?WVcji^@d`<((#iHX7}5 zK$Q*4LYMA~@GYP&WC5xCpZ!rZpaN&30-dkwpeoIr!}Od7r5u8@>=~yW3^KMiOrTF= zx3)v_aaMS!Z8)dIr&s&1T4%Vs(zmzqum{Ay^fjos_xb?oJXu@*5t^rC2RQSw+-F0d z@#?$Cn;B0*p-|;L!t*y8*TghC8GU;$zN)EhVS%+N9c*mkki5jJ@U97XGdAa7COOC% zFLmzX|D3sXkXtzg2*`2G=u{bA-v0Iog&aNVV*RBTB=P=OOP{gF*puu-mJUTfS;mOw7kXMEUKkssYX+F7Ye-85#&g0 z+n()Y12DX&f?cA9(`MB4IohBo!9T*F4io-N4pA({sj#BOyM9T18F#Jj_<3?LSl zx^c%kHu@&&3^4iX7(tj`+%ka6!NvE;0`uWa19JXs=ipc}Z#}~wUBz}X;9GM(6ZI8Z z_sXVr5L#6nO#mRKC(JN)`vXUE8i_{WD?Wi0wBCH4E$wx~#=Py*lkXn#LB&3O@`Os@ z*k*$x6$dc9hw@DAcDw_%+rsz4JqplA{}fuPvBJCq8md+lD~&(!xN|!r^y|45%*R6Y z*r#V6$$0Cx439Q&-<pQi-qUx0p}ie{@fTQydO1X?r**FFx9g+iasslH3tax7*&3%sZA!vK53Q^=N z0&K{fd&ipBx$3n(%f?r{$^Cqf^u+_cJyQ2J{-@Rzp-&o&^WL*h-Y0)WYrK%wWbn-Y&g83v~0P;ciyGTI2h2p1*V4A756~hjTTxGg^KmVYyZ-j$h<% zG!dGzAV$J<(TtFiDn+9SyC4Y!2lOBaYpfyl7vmLq*K!!YuYqQy1|&o6e-U}O0MQ!) zS!snrfk()e?};0cFWu)I7pf_AEFEYVTTf|I@?G;e$am+bf2U|d>Jn%6#=Gb?INP@2 z`hQOSxS})Q5&9+R*)+C|gsaYM<}?XDfJ*^fw!|AFz;^|J{bx3Pz0Z#h^j9pd2&fy> zBacl{*UzurC+ogjslE64(S7N0qnxIVedxK{_Ty*hnIedrrsrh%RV04Vf#Od_F|^du zUu4iiz|>aEm;p1DKU&tLU%94UO{M%4`wC%Skv6ZN`*g@F6v;xLa--ib;oLe~jiXuo zjLcu)>>*^6KY&BS_Kaj$%><*PWHJgfL2e9!5@w{fWBpK+}Mu5k=177-j#iCz1I#AM@bW#X^g z0BSrqq*MAzvh#>^RIQ_3tRLQ;cE;3ggpx*1BfI-?hTv-;}W z?wepk^n?1=7yceSg!R$qHJ@bJ=jA^LKQf=)V7>gSOf$-`*J{4#Uyndt ze@E%8FL_yy)R1cj?8_S?0MGlAJq1#+S_`CUM~9>?l@}ZA;xeIL80b}zHA!!{)q=%6 zyMbcV?)TLZnzdyTC=+yaBuskQP9j^NZ+z@n;Je>TZbWc{!YbNBj>Y56V1Z57OF!$R zpLMD|T|!Z$`GlULPA=a~C$ov&=5Siv(`bp|1qU8!`UmkQrKNP$Uj zu2;c0LsWGd3Keo2#9O*ebNbs z(@`g>yaf!@?l5r;%FbDUjmaAd7%l~H=grZ?WshaU>QhD7Dp(?5a=Bu6ip~y@C4_{;T?iZKA&aq_ar9<@ycRcXl>?T47aw zTT^3Me9Z-IE`B$qa%s(W`o^%i}xc?NzcldT$Vf| z^Vd)ZIQ>9-;QJ64!6h%3_Oa8l@enb@SLf!iI`1NMlj_ZC%pCj{` zA@9Xspxif*28M|U`zcKASh=swEr;FRNYrfH4;bI$1TJ?1uth}9 zGpgyeNdV*^u8lI%Ok=WzlI^{A`!FmN@3m`Tp3Z4?0c8)G=CA+1=nrhygJ&PRPJJNc zq*63%$o+rYANc+ns4LA-*E^m#2HOb5b|HPw|K%gDgR3BYbPvYaoDH0l>+h|8-*MKD zn4774)BU~3d_o544_+ZO{#kJ|RWlCTSVg~N_opXV`=myBhb%loW|56Y)W^d$%3-2D zxT%MzY+xI0lfHcq8@tE5|BoZJ#|^UxDMDxM_BSuENRswHtx+`$p(V?*1c5>cYVB=PIUxf}Zk(B9NXZ1f)EhSCNEIAd} zQuuSE53a|K^dTUT3Uuk2Y$?%vmIQf88)3hsP+npjaU7}<;S<89kOz!*L(&JdcF`!w($0LXDPdvVdkve{&>t+Qj(^|X(5Z7{)laHu zn^RI5OWagaXMp`ny!cqlJA=&87)q&1Yg#{P9L}jHs$B2UxI>~qJhlW0IQ?iZ1&y@i z=|n^@7oAZGi$>9^XiK#A7-aq9e33z7GeydJC0TWHAL`70W3%n#BZir{Ex}G2vr?zB z2>G;@sIoE!Qdy=L8>*M1*=m2g@v3I*8x8MN$G`1vcpYWXj(e4fv^Exsff>#<>>&BH zelz}@@_PhKW`l7u6IRqG^h8$Jn2 zT6W~CMArsPvFtK~z#MW6SKDSUP7Ff0iT5^^EVdn9GCqd5giMW~oVul8-*47clbly( zWKSlsCON)l?AIJlu)Gpa!kv>GqqUm8lT8WfrZbHJ z>kbi?nzAadq|zk5C9mS$-ByOf8F}i2*c6V)RPOC9`lwu_^+}h=LDsHB`gpPnUQ2=M zlr#7b8X&(Uq3DpW)LT+yDe*%4(&GG5&^2=>d{-wA!<)N93agVx7s}tSMNHlw2Ae0| z`|#e5^-;#3L?eArgo>?xvZdwx+ts0*Hrck&&)FqaQqG^?vGMMo3<%{!iMjvP U% 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�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
    s@6b&B|uWp%`4h+hMgksSU8O_%Lo>@>s;{$=BZ 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%0Djl`#S?<}&h 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

    -~sJzBpZd$ZoLE(MyV1 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� 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

    f|75?!oCh@O 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%0D^hZMNpaoviC=9a_S=tf8sVJDrM#f8I8n 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

    SVC-CEdox0M8p^+ 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%0Awp6PgDzv|T1EdEMbE*@1dN;?pOzm?#x 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ⅇF8Lv<%MTUD4Ejr^VyZOv+uKz1H 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

    *yGGSGf9eS7RZdm+rb5@a_J}XwF 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

    0g=L446A8wwL{&2R^M?R( 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

    QXwe$#5Mch8>BaRrCm1Udj~IHFs_ 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⋘;9pgc4`Y{M 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

    }@mP43)rys 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⋙V|HDx>J^KXt!Y+Ut`VA5(i?T*2D9 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�=;Mp>A4Cspw!qf0Lx9miXB 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

    tpA8?KEg1M~Z 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%0D3aLiUZ^W-H!>Y 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

    iA06;BdrGzEhU^ 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 vZOkhFE^gjuR?UP=qw_`3DE><#WaD1 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 z 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