From 770f9370af178e08da4e8ca2ebb9407f184e7de2 Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Fri, 2 Aug 2024 12:49:34 +0100 Subject: [PATCH] fix: 2.0 bugs (#4011) --- extensions/akismet/js/package.json | 2 +- extensions/approval/js/package.json | 2 +- extensions/embed/js/package.json | 2 +- extensions/emoji/js/package.json | 2 +- extensions/flags/js/package.json | 2 +- extensions/likes/js/package.json | 2 +- extensions/lock/js/package.json | 2 +- extensions/markdown/js/package.json | 4 ++-- extensions/mentions/js/package.json | 2 +- extensions/nicknames/js/package.json | 2 +- .../js/src/forum/components/NicknameModal.js | 2 +- extensions/package-manager/js/package.json | 2 +- extensions/pusher/js/package.json | 2 +- extensions/statistics/js/package.json | 2 +- extensions/sticky/js/package.json | 2 +- extensions/subscriptions/js/package.json | 2 +- extensions/suspend/js/package.json | 2 +- .../src/forum/components/SuspendUserModal.js | 4 ++-- .../forum/components/SuspensionInfoModal.js | 2 +- extensions/tags/js/package.json | 2 +- .../tags/js/src/admin/components/TagsPage.js | 3 ++- .../tags/src/Api/DiscussionResourceFields.php | 2 +- framework/core/js/package.json | 2 +- .../core/js/src/admin/AdminApplication.tsx | 2 +- .../js/src/admin/components/AdvancedPage.tsx | 3 ++- .../js/src/admin/components/FormSection.tsx | 21 +++++++++++++++++++ .../src/admin/components/FormSectionGroup.tsx | 17 --------------- framework/core/js/src/common/Model.ts | 2 +- .../js/src/common/components/FormGroup.tsx | 2 +- .../js/src/forum/components/LogInModal.tsx | 3 ++- .../forum/components/UsersSearchSource.tsx | 2 +- .../core/js/src/forum/states/ComposerState.js | 2 ++ framework/core/less/common/Select.less | 2 +- framework/core/less/forum/Post.less | 5 ++--- js-packages/jest-config/package.json | 2 +- js-packages/webpack-config/package.json | 2 +- .../src/RegisterAsyncChunksPlugin.cjs | 12 +++++++++-- php-packages/phpstan/larastan-extension.neon | 13 ------------ php-packages/phpstan/phpstan-baseline.neon | 6 ++++++ phpstan.neon | 5 ----- 40 files changed, 78 insertions(+), 74 deletions(-) create mode 100644 framework/core/js/src/admin/components/FormSection.tsx diff --git a/extensions/akismet/js/package.json b/extensions/akismet/js/package.json index 0ae17ecda..ca7327e83 100644 --- a/extensions/akismet/js/package.json +++ b/extensions/akismet/js/package.json @@ -19,7 +19,7 @@ "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^1.0.2", "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "typescript": "^4.5.4", diff --git a/extensions/approval/js/package.json b/extensions/approval/js/package.json index 2a84b1524..4dec237d1 100644 --- a/extensions/approval/js/package.json +++ b/extensions/approval/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0" diff --git a/extensions/embed/js/package.json b/extensions/embed/js/package.json index b66469f39..5ab81b028 100644 --- a/extensions/embed/js/package.json +++ b/extensions/embed/js/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0" diff --git a/extensions/emoji/js/package.json b/extensions/emoji/js/package.json index e6c4a4627..8eeadf502 100644 --- a/extensions/emoji/js/package.json +++ b/extensions/emoji/js/package.json @@ -10,7 +10,7 @@ "devDependencies": { "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.5.1", "typescript": "^4.5.4", "typescript-coverage-report": "^0.6.1", diff --git a/extensions/flags/js/package.json b/extensions/flags/js/package.json index 862742ea9..d7472275e 100644 --- a/extensions/flags/js/package.json +++ b/extensions/flags/js/package.json @@ -6,7 +6,7 @@ "devDependencies": { "@types/mithril": "^2.0.8", "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0", diff --git a/extensions/likes/js/package.json b/extensions/likes/js/package.json index 6c7640f53..1d2e6dbbd 100644 --- a/extensions/likes/js/package.json +++ b/extensions/likes/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0" diff --git a/extensions/lock/js/package.json b/extensions/lock/js/package.json index 029703f92..740983e34 100644 --- a/extensions/lock/js/package.json +++ b/extensions/lock/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0", diff --git a/extensions/markdown/js/package.json b/extensions/markdown/js/package.json index 92c92eec2..c7973f5ad 100644 --- a/extensions/markdown/js/package.json +++ b/extensions/markdown/js/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "prettier": "@flarum/prettier-config", "dependencies": { - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1" }, @@ -19,7 +19,7 @@ "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^1.0.2", "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1" } diff --git a/extensions/mentions/js/package.json b/extensions/mentions/js/package.json index 8d95ecfda..012dec03d 100644 --- a/extensions/mentions/js/package.json +++ b/extensions/mentions/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0" diff --git a/extensions/nicknames/js/package.json b/extensions/nicknames/js/package.json index 3f884d769..cfced3161 100644 --- a/extensions/nicknames/js/package.json +++ b/extensions/nicknames/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0" diff --git a/extensions/nicknames/js/src/forum/components/NicknameModal.js b/extensions/nicknames/js/src/forum/components/NicknameModal.js index 2304a78bf..ad7390866 100644 --- a/extensions/nicknames/js/src/forum/components/NicknameModal.js +++ b/extensions/nicknames/js/src/forum/components/NicknameModal.js @@ -2,7 +2,7 @@ import app from 'flarum/forum/app'; import FormModal from 'flarum/common/components/FormModal'; import Button from 'flarum/common/components/Button'; import Stream from 'flarum/common/utils/Stream'; -import Form from '@flarum/core/src/common/components/Form'; +import Form from 'flarum/common/components/Form'; export default class NicknameModal extends FormModal { oninit(vnode) { diff --git a/extensions/package-manager/js/package.json b/extensions/package-manager/js/package.json index ad9661a8b..a6df78d89 100644 --- a/extensions/package-manager/js/package.json +++ b/extensions/package-manager/js/package.json @@ -6,7 +6,7 @@ "devDependencies": { "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.5.1", "typescript": "^4.5.4", "typescript-coverage-report": "^0.6.1", diff --git a/extensions/pusher/js/package.json b/extensions/pusher/js/package.json index f8b868ca6..70b62e977 100644 --- a/extensions/pusher/js/package.json +++ b/extensions/pusher/js/package.json @@ -19,7 +19,7 @@ "@flarum/prettier-config": "^1.0.0", "@types/pusher-js": "^5.1.0", "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.5.1", "typescript": "^4.5.4", "typescript-coverage-report": "^0.6.1", diff --git a/extensions/statistics/js/package.json b/extensions/statistics/js/package.json index de4919b8e..3326900e4 100644 --- a/extensions/statistics/js/package.json +++ b/extensions/statistics/js/package.json @@ -10,7 +10,7 @@ "@flarum/prettier-config": "^1.0.0", "@types/mithril": "^2.0.11", "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.7.1", "typescript": "^4.7.4", "typescript-coverage-report": "^0.6.4", diff --git a/extensions/sticky/js/package.json b/extensions/sticky/js/package.json index 9550c4a17..e3a3b90d1 100644 --- a/extensions/sticky/js/package.json +++ b/extensions/sticky/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "webpack": "^5.76.0", "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0" diff --git a/extensions/subscriptions/js/package.json b/extensions/subscriptions/js/package.json index 2f9e4b873..b084bf3c7 100644 --- a/extensions/subscriptions/js/package.json +++ b/extensions/subscriptions/js/package.json @@ -5,7 +5,7 @@ "prettier": "@flarum/prettier-config", "devDependencies": { "@flarum/prettier-config": "^1.0.0", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.7.1", "webpack": "^5.76.0", "webpack-cli": "^4.10.0", diff --git a/extensions/suspend/js/package.json b/extensions/suspend/js/package.json index a0e4f998f..effb14eaa 100644 --- a/extensions/suspend/js/package.json +++ b/extensions/suspend/js/package.json @@ -13,7 +13,7 @@ "devDependencies": { "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^1.0.0", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.5.1", "webpack": "^5.76.0", "webpack-cli": "^4.9.1" diff --git a/extensions/suspend/js/src/forum/components/SuspendUserModal.js b/extensions/suspend/js/src/forum/components/SuspendUserModal.js index eaeb90622..0f434ffaf 100644 --- a/extensions/suspend/js/src/forum/components/SuspendUserModal.js +++ b/extensions/suspend/js/src/forum/components/SuspendUserModal.js @@ -4,10 +4,10 @@ import Button from 'flarum/common/components/Button'; import Stream from 'flarum/common/utils/Stream'; import withAttr from 'flarum/common/utils/withAttr'; import ItemList from 'flarum/common/utils/ItemList'; +import Form from 'flarum/common/components/Form'; +import FieldSet from 'flarum/common/components/FieldSet'; import { getPermanentSuspensionDate } from '../helpers/suspensionHelper'; -import Form from '@flarum/core/src/common/components/Form'; -import FieldSet from '@flarum/core/src/common/components/FieldSet'; export default class SuspendUserModal extends FormModal { oninit(vnode) { diff --git a/extensions/suspend/js/src/forum/components/SuspensionInfoModal.js b/extensions/suspend/js/src/forum/components/SuspensionInfoModal.js index b404258af..bff8f237e 100644 --- a/extensions/suspend/js/src/forum/components/SuspensionInfoModal.js +++ b/extensions/suspend/js/src/forum/components/SuspensionInfoModal.js @@ -2,8 +2,8 @@ import app from 'flarum/forum/app'; import Modal from 'flarum/common/components/Modal'; import Button from 'flarum/common/components/Button'; import fullTime from 'flarum/common/helpers/fullTime'; +import Form from 'flarum/common/components/Form'; import { isPermanentSuspensionDate, localStorageKey } from '../helpers/suspensionHelper'; -import Form from '@flarum/core/src/common/components/Form'; export default class SuspensionInfoModal extends Modal { oninit(vnode) { diff --git a/extensions/tags/js/package.json b/extensions/tags/js/package.json index 761cd8fc7..0b100b010 100644 --- a/extensions/tags/js/package.json +++ b/extensions/tags/js/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.7.1", "typescript": "^4.5.4", "typescript-coverage-report": "^0.6.1", diff --git a/extensions/tags/js/src/admin/components/TagsPage.js b/extensions/tags/js/src/admin/components/TagsPage.js index f48e4a4cd..c414976a6 100644 --- a/extensions/tags/js/src/admin/components/TagsPage.js +++ b/extensions/tags/js/src/admin/components/TagsPage.js @@ -6,11 +6,12 @@ import Button from 'flarum/common/components/Button'; import LoadingIndicator from 'flarum/common/components/LoadingIndicator'; import withAttr from 'flarum/common/utils/withAttr'; import Form from 'flarum/common/components/Form'; +import FormSectionGroup from 'flarum/admin/components/FormSectionGroup'; +import FormSection from 'flarum/admin/components/FormSection'; import EditTagModal from './EditTagModal'; import tagIcon from '../../common/helpers/tagIcon'; import sortTags from '../../common/utils/sortTags'; -import FormSectionGroup, { FormSection } from '@flarum/core/src/admin/components/FormSectionGroup'; function tagItem(tag) { return ( diff --git a/extensions/tags/src/Api/DiscussionResourceFields.php b/extensions/tags/src/Api/DiscussionResourceFields.php index 1bc643ae0..d4027695b 100644 --- a/extensions/tags/src/Api/DiscussionResourceFields.php +++ b/extensions/tags/src/Api/DiscussionResourceFields.php @@ -37,7 +37,7 @@ class DiscussionResourceFields Schema\Relationship\ToMany::make('tags') ->includable() ->writable() - ->required(fn (Context $context, Discussion $discussion) => ! $context->getActor()->can('bypassTagCounts', $discussion)) + ->required(fn (Context $context, Discussion $discussion) => $context->creating() && ! $context->getActor()->can('bypassTagCounts', $discussion)) ->set(function (Discussion $discussion, array $newTags, Context $context) { $actor = $context->getActor(); diff --git a/framework/core/js/package.json b/framework/core/js/package.json index b9bfa7dc7..b8d3ac0da 100644 --- a/framework/core/js/package.json +++ b/framework/core/js/package.json @@ -34,7 +34,7 @@ "cross-env": "^7.0.3", "expose-loader": "^3.1.0", "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", + "flarum-webpack-config": "^3.0.0", "prettier": "^2.5.1", "typescript": "^4.5.4", "typescript-coverage-report": "^0.6.1", diff --git a/framework/core/js/src/admin/AdminApplication.tsx b/framework/core/js/src/admin/AdminApplication.tsx index 77c0f10e2..f87b4c7b3 100644 --- a/framework/core/js/src/admin/AdminApplication.tsx +++ b/framework/core/js/src/admin/AdminApplication.tsx @@ -32,7 +32,7 @@ export type Extension = { extra: { 'flarum-extension': { title: string; - 'database-support': undefined | string[]; + 'database-support'?: string[]; }; }; require?: Record; diff --git a/framework/core/js/src/admin/components/AdvancedPage.tsx b/framework/core/js/src/admin/components/AdvancedPage.tsx index 47d3eeed0..44652cf35 100644 --- a/framework/core/js/src/admin/components/AdvancedPage.tsx +++ b/framework/core/js/src/admin/components/AdvancedPage.tsx @@ -4,7 +4,8 @@ import type { IPageAttrs } from '../../common/components/Page'; import type Mithril from 'mithril'; import Form from '../../common/components/Form'; import extractText from '../../common/utils/extractText'; -import FormSectionGroup, { FormSection } from './FormSectionGroup'; +import FormSectionGroup from './FormSectionGroup'; +import FormSection from './FormSection'; import ItemList from '../../common/utils/ItemList'; import InfoTile from '../../common/components/InfoTile'; import { MaintenanceMode } from '../../common/Application'; diff --git a/framework/core/js/src/admin/components/FormSection.tsx b/framework/core/js/src/admin/components/FormSection.tsx new file mode 100644 index 000000000..f8e43b4ce --- /dev/null +++ b/framework/core/js/src/admin/components/FormSection.tsx @@ -0,0 +1,21 @@ +import Component from '../../common/Component'; +import type { ComponentAttrs } from '../../common/Component'; +import Mithril from 'mithril'; +import classList from '../../common/utils/classList'; + +export interface IFormSectionAttrs extends ComponentAttrs { + label: any; +} + +export default class FormSection extends Component { + view(vnode: Mithril.Vnode) { + const { className, ...attrs } = this.attrs; + + return ( +
+ +
{vnode.children}
+
+ ); + } +} diff --git a/framework/core/js/src/admin/components/FormSectionGroup.tsx b/framework/core/js/src/admin/components/FormSectionGroup.tsx index fa4557415..5153e9f4d 100644 --- a/framework/core/js/src/admin/components/FormSectionGroup.tsx +++ b/framework/core/js/src/admin/components/FormSectionGroup.tsx @@ -16,20 +16,3 @@ export default class FormSectionGroup extends Component { - view(vnode: Mithril.Vnode) { - const { className, ...attrs } = this.attrs; - - return ( -
- -
{vnode.children}
-
- ); - } -} diff --git a/framework/core/js/src/common/Model.ts b/framework/core/js/src/common/Model.ts index ae769edd3..91dcc24b0 100644 --- a/framework/core/js/src/common/Model.ts +++ b/framework/core/js/src/common/Model.ts @@ -367,7 +367,7 @@ export default abstract class Model { */ protected static getIdentifier(model: Model): ModelIdentifier; protected static getIdentifier(model?: Model): ModelIdentifier | null { - if (!model || !('id' in model.data)) return null; + if (!model || !model.data || !('id' in model.data)) return null; return { type: model.data.type, diff --git a/framework/core/js/src/common/components/FormGroup.tsx b/framework/core/js/src/common/components/FormGroup.tsx index cfb71cb7d..555f79785 100644 --- a/framework/core/js/src/common/components/FormGroup.tsx +++ b/framework/core/js/src/common/components/FormGroup.tsx @@ -203,7 +203,7 @@ export default class FormGroup; } else if (customFieldComponents.has(type)) { - return customFieldComponents.get(type)(this.attrs); + return customFieldComponents.get(type)({ ...this.attrs, bidi: this.attrs.stream }); } else { attrs.className = classList('FormControl', attrs.className); diff --git a/framework/core/js/src/forum/components/LogInModal.tsx b/framework/core/js/src/forum/components/LogInModal.tsx index dfe8d8c23..71747c4f5 100644 --- a/framework/core/js/src/forum/components/LogInModal.tsx +++ b/framework/core/js/src/forum/components/LogInModal.tsx @@ -8,6 +8,7 @@ import Stream from '../../common/utils/Stream'; import type Mithril from 'mithril'; import RequestError from '../../common/utils/RequestError'; import type { LoginParams } from '../../common/Session'; +import ForgotPasswordModal from './ForgotPasswordModal'; export interface ILoginModalAttrs extends IFormModalAttrs { identification?: string; @@ -139,7 +140,7 @@ export default class LogInModal import('./ForgotPasswordModal'), attrs); + app.modal.show(ForgotPasswordModal, attrs); } /** diff --git a/framework/core/js/src/forum/components/UsersSearchSource.tsx b/framework/core/js/src/forum/components/UsersSearchSource.tsx index 60f739f51..afcabad54 100644 --- a/framework/core/js/src/forum/components/UsersSearchSource.tsx +++ b/framework/core/js/src/forum/components/UsersSearchSource.tsx @@ -14,7 +14,7 @@ import listItems from '../../common/helpers/listItems'; * The `UsersSearchSource` finds and displays user search results in the search * dropdown. */ -export default class UsersSearchResults implements SearchSource { +export default class UsersSearchSource implements SearchSource { protected results = new Map(); public resource: string = 'users'; diff --git a/framework/core/js/src/forum/states/ComposerState.js b/framework/core/js/src/forum/states/ComposerState.js index 4d88f8cc6..0751aac04 100644 --- a/framework/core/js/src/forum/states/ComposerState.js +++ b/framework/core/js/src/forum/states/ComposerState.js @@ -70,6 +70,8 @@ class ComposerState { } this.body = body; + + return componentClass; } /** diff --git a/framework/core/less/common/Select.less b/framework/core/less/common/Select.less index 64cf21fc7..c334ec829 100644 --- a/framework/core/less/common/Select.less +++ b/framework/core/less/common/Select.less @@ -11,7 +11,7 @@ cursor: pointer; line-height: 1; - .FormSection & { + .FormSection &, &.FormControl { width: 100%; } } diff --git a/framework/core/less/forum/Post.less b/framework/core/less/forum/Post.less index addc96aaf..488db7918 100644 --- a/framework/core/less/forum/Post.less +++ b/framework/core/less/forum/Post.less @@ -34,8 +34,8 @@ .UserCard { position: absolute; - top: 15px; - left: 16px; + top: 0; + left: 0; z-index: var(--zindex-dropdown); transition: opacity 0.2s, transform 0.2s; transform: scale(0.95); @@ -454,7 +454,6 @@ .Post-avatar { .Avatar--size(32px); - display: block; } .Post-main { diff --git a/js-packages/jest-config/package.json b/js-packages/jest-config/package.json index ebeedd6ad..53ee4d11f 100644 --- a/js-packages/jest-config/package.json +++ b/js-packages/jest-config/package.json @@ -9,7 +9,7 @@ "prettier": "@flarum/prettier-config", "dependencies": { "@types/jest": "^29.2.2", - "flarum-webpack-config": "^2.0.1", + "flarum-webpack-config": "^3.0.0", "flat": "^5.0.2", "jest": "^29.3.1", "jest-environment-jsdom": "^29.3.1", diff --git a/js-packages/webpack-config/package.json b/js-packages/webpack-config/package.json index d20384a34..555632040 100644 --- a/js-packages/webpack-config/package.json +++ b/js-packages/webpack-config/package.json @@ -1,7 +1,7 @@ { "name": "flarum-webpack-config", "type": "module", - "version": "2.0.2", + "version": "3.0.0", "description": "Webpack config for Flarum JS and TS transpilation.", "main": "src/index.cjs", "author": "Flarum Team", diff --git a/js-packages/webpack-config/src/RegisterAsyncChunksPlugin.cjs b/js-packages/webpack-config/src/RegisterAsyncChunksPlugin.cjs index 7f2bc144f..6ed79bf36 100644 --- a/js-packages/webpack-config/src/RegisterAsyncChunksPlugin.cjs +++ b/js-packages/webpack-config/src/RegisterAsyncChunksPlugin.cjs @@ -3,6 +3,8 @@ const extensionId = require("./extensionId.cjs"); const {Compilation} = require("webpack"); class RegisterAsyncChunksPlugin { + static registry = {}; + apply(compiler) { compiler.hooks.thisCompilation.tap("RegisterAsyncChunksPlugin", (compilation) => { let alreadyOptimized = false; @@ -80,9 +82,13 @@ class RegisterAsyncChunksPlugin { if (concatenatedModule?.rootModule) { // This is a chunk with many modules, we need to register all of them. concatenatedModule.modules?.forEach((module) => { + if (! module.resource.includes(`${path.sep}src${path.sep}`)) { + return; + } + // The path right after the src/ directory, without the extension. const regPathSep = `\\${path.sep}`; - const urlPath = module.resource.replace(`/.*${regPathSep}src(.*)${regPathSep}\..*/`, '$1'); + const urlPath = module.resource.replace(new RegExp(`.*${regPathSep}src${regPathSep}([^.]+)\..+`), '$1'); if (! registrableModulesUrlPaths.has(urlPath)) { registrableModulesUrlPaths.set(urlPath, [relevantChunk.id, moduleId, namespace, urlPath]); @@ -93,9 +99,11 @@ class RegisterAsyncChunksPlugin { registrableModulesUrlPaths.forEach(([chunkId, moduleId, namespace, urlPath]) => { chunkModuleMemory[sourceChunkId] = chunkModuleMemory[sourceChunkId] || []; - if (! chunkModuleMemory[sourceChunkId].includes(urlPath)) { + if (! chunkModuleMemory[sourceChunkId].includes(urlPath) && ! RegisterAsyncChunksPlugin.registry[`${chunkId}:${moduleId}:${namespace}`]?.includes(urlPath)) { reg.push(`flarum.reg.addChunkModule('${chunkId}', '${moduleId}', '${namespace}', '${urlPath}');`); chunkModuleMemory[sourceChunkId].push(urlPath); + RegisterAsyncChunksPlugin.registry[`${chunkId}:${moduleId}:${namespace}`] ||= []; + RegisterAsyncChunksPlugin.registry[`${chunkId}:${moduleId}:${namespace}`].push(urlPath); } }); diff --git a/php-packages/phpstan/larastan-extension.neon b/php-packages/phpstan/larastan-extension.neon index 869fcd0d0..7009ceacb 100644 --- a/php-packages/phpstan/larastan-extension.neon +++ b/php-packages/phpstan/larastan-extension.neon @@ -52,10 +52,6 @@ conditionalTags: phpstan.rules.rule: %noUnnecessaryCollectionCall% Larastan\Larastan\Rules\OctaneCompatibilityRule: phpstan.rules.rule: %checkOctaneCompatibility% - Larastan\Larastan\Rules\ModelProperties\ModelPropertyRule: - phpstan.rules.rule: %checkModelProperties% - Larastan\Larastan\Rules\ModelProperties\ModelPropertyStaticCallRule: - phpstan.rules.rule: %checkModelProperties% Larastan\Larastan\Rules\UnusedViewsRule: phpstan.rules.rule: %checkUnusedViews% Larastan\Larastan\Rules\ModelAppendsRule: @@ -400,15 +396,9 @@ services: onlyMethods: %noUnnecessaryCollectionCallOnly% excludeMethods: %noUnnecessaryCollectionCallExcept% - - - class: Larastan\Larastan\Rules\ModelProperties\ModelPropertyRule - - class: Larastan\Larastan\Rules\ModelAppendsRule - - - class: Larastan\Larastan\Rules\ModelProperties\ModelPropertyStaticCallRule - - class: Larastan\Larastan\Types\GenericEloquentBuilderTypeNodeResolverExtension tags: @@ -450,9 +440,6 @@ services: - class: Larastan\Larastan\Properties\ModelPropertyHelper - - - class: Larastan\Larastan\Rules\ModelProperties\ModelPropertiesRuleHelper - - class: Larastan\Larastan\Rules\ModelRuleHelper diff --git a/php-packages/phpstan/phpstan-baseline.neon b/php-packages/phpstan/phpstan-baseline.neon index 3f70ccbbb..9add6ef15 100644 --- a/php-packages/phpstan/phpstan-baseline.neon +++ b/php-packages/phpstan/phpstan-baseline.neon @@ -1,5 +1,11 @@ parameters: + reportUnmatchedIgnoredErrors: false ignoreErrors: + - + identifier: missingType.iterableValue + - + identifier: missingType.generics + # Remove this group below with larastan 2.0 (i.e Flarum 2.0) - message: "#Relation '[A-z_-]+' is not found in [A-z\_]+ model.#" reportUnmatched: false diff --git a/phpstan.neon b/phpstan.neon index bee63a2f2..583384be2 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -36,8 +36,3 @@ parameters: excludePaths: - *.blade.php databaseMigrationsPath: ['framework/core/migrations'] - ignoreErrors: - - - identifier: missingType.iterableValue - - - identifier: missingType.generics