diff --git a/extensions/nicknames/js/package-lock.json b/extensions/nicknames/js/package-lock.json index dcbae8908..e3d0507e4 100644 --- a/extensions/nicknames/js/package-lock.json +++ b/extensions/nicknames/js/package-lock.json @@ -8,9 +8,14 @@ "name": "@flarum/nicknames", "version": "0.0.0", "dependencies": { - "flarum-webpack-config": "^0.1.0-beta.10", - "webpack": "^4.26.0", - "webpack-cli": "^4.9.0" + "@flarum/prettier-config": "^1.0.0", + "flarum-tsconfig": "^1.0.2", + "flarum-webpack-config": "^1.0.0", + "webpack": "^4.46.0", + "webpack-cli": "^4.9.1" + }, + "devDependencies": { + "prettier": "^2.5.1" } }, "node_modules/@babel/code-frame": { @@ -1634,16 +1639,44 @@ "node": ">=10.0.0" } }, + "node_modules/@flarum/prettier-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@flarum/prettier-config/-/prettier-config-1.0.0.tgz", + "integrity": "sha512-3/AcliIi5jPt4i7COb5hsLv6hm4EeXT9yI9I2EuEvhPi2QR+O9Y/8wrqRuO5mDkRzCIhUY+mjIL/f9770Zwfqg==" + }, "node_modules/@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, + "node_modules/@types/jquery": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.12.tgz", + "integrity": "sha512-AlX/K29WByFhZ3UbVVn8eywPFwhDZGc/qhDWgy5mu4VVr9b+OQZKBegtS6Tqi9pk8A1aXVrYXuLhnjFJX8Wc/w==", + "dependencies": { + "@types/sizzle": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, + "node_modules/@types/mithril": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.0.8.tgz", + "integrity": "sha512-QzVV70DqUhWfLFpMFDBI9rRxtzeUUpbhiFDpUJYSV92AePgl+Qfficgv2MOb1Ceb+lBOQU8+L+Hjf2UielQjEw==" + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + }, + "node_modules/@types/throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -2831,6 +2864,11 @@ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, + "node_modules/dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" + }, "node_modules/debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -3382,24 +3420,35 @@ "node": ">=8" } }, - "node_modules/flarum-webpack-config": { - "version": "0.1.0-beta.16.2", - "resolved": "https://registry.npmjs.org/flarum-webpack-config/-/flarum-webpack-config-0.1.0-beta.16.2.tgz", - "integrity": "sha512-S8jdRB4ApKdIF+fU7l1DIbwjmlXI10WINhaNklhHLaWDo/fUfZwtjg91QW5obEgCCua6VrP8te9+26AGArM+mg==", + "node_modules/flarum-tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flarum-tsconfig/-/flarum-tsconfig-1.0.2.tgz", + "integrity": "sha512-RUaN7D6noLK9vY1F86NIc+IlIP1YAA3bJ4jGR5pIm8UxvLBLW8qrAHzIosuQJgvnge7VgTA5c2LoNefUK/9EiQ==", "dependencies": { - "@babel/core": "^7.14.0", + "@types/jquery": "^3.5.5", + "@types/mithril": "^2.0.7", + "@types/throttle-debounce": "^2.1.0", + "dayjs": "^1.10.4" + } + }, + "node_modules/flarum-webpack-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flarum-webpack-config/-/flarum-webpack-config-1.0.0.tgz", + "integrity": "sha512-T+olIRaIVetPJMP8xlbMnp7tzT/d/ZWI6Mr7twRBdsKbKO7dpKS2+fjnKL6QqNYgOLElT/TWrRSbTp7EiL1yXA==", + "dependencies": { + "@babel/core": "^7.14.3", "@babel/plugin-proposal-class-properties": "^7.13.0", "@babel/plugin-proposal-private-methods": "^7.13.0", "@babel/plugin-transform-object-assign": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.13.12", - "@babel/plugin-transform-runtime": "^7.13.15", - "@babel/preset-env": "^7.14.1", + "@babel/plugin-transform-react-jsx": "^7.14.3", + "@babel/plugin-transform-runtime": "^7.14.3", + "@babel/preset-env": "^7.14.2", "@babel/preset-react": "^7.13.13", "@babel/preset-typescript": "^7.13.0", "@babel/runtime": "^7.14.0", "babel-loader": "^8.2.2", - "typescript": "^4.2.4", - "webpack-bundle-analyzer": "^4.4.1" + "typescript": "^4.3.2", + "webpack-bundle-analyzer": "^4.4.2" }, "peerDependencies": { "webpack": "^4.46.0" @@ -4684,6 +4733,18 @@ "node": ">=0.10.0" } }, + "node_modules/prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -7552,16 +7613,44 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==" }, + "@flarum/prettier-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@flarum/prettier-config/-/prettier-config-1.0.0.tgz", + "integrity": "sha512-3/AcliIi5jPt4i7COb5hsLv6hm4EeXT9yI9I2EuEvhPi2QR+O9Y/8wrqRuO5mDkRzCIhUY+mjIL/f9770Zwfqg==" + }, "@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, + "@types/jquery": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.12.tgz", + "integrity": "sha512-AlX/K29WByFhZ3UbVVn8eywPFwhDZGc/qhDWgy5mu4VVr9b+OQZKBegtS6Tqi9pk8A1aXVrYXuLhnjFJX8Wc/w==", + "requires": { + "@types/sizzle": "*" + } + }, "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, + "@types/mithril": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.0.8.tgz", + "integrity": "sha512-QzVV70DqUhWfLFpMFDBI9rRxtzeUUpbhiFDpUJYSV92AePgl+Qfficgv2MOb1Ceb+lBOQU8+L+Hjf2UielQjEw==" + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + }, + "@types/throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==" + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -8554,6 +8643,11 @@ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, + "dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" + }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -8991,24 +9085,35 @@ "path-exists": "^4.0.0" } }, - "flarum-webpack-config": { - "version": "0.1.0-beta.16.2", - "resolved": "https://registry.npmjs.org/flarum-webpack-config/-/flarum-webpack-config-0.1.0-beta.16.2.tgz", - "integrity": "sha512-S8jdRB4ApKdIF+fU7l1DIbwjmlXI10WINhaNklhHLaWDo/fUfZwtjg91QW5obEgCCua6VrP8te9+26AGArM+mg==", + "flarum-tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flarum-tsconfig/-/flarum-tsconfig-1.0.2.tgz", + "integrity": "sha512-RUaN7D6noLK9vY1F86NIc+IlIP1YAA3bJ4jGR5pIm8UxvLBLW8qrAHzIosuQJgvnge7VgTA5c2LoNefUK/9EiQ==", "requires": { - "@babel/core": "^7.14.0", + "@types/jquery": "^3.5.5", + "@types/mithril": "^2.0.7", + "@types/throttle-debounce": "^2.1.0", + "dayjs": "^1.10.4" + } + }, + "flarum-webpack-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flarum-webpack-config/-/flarum-webpack-config-1.0.0.tgz", + "integrity": "sha512-T+olIRaIVetPJMP8xlbMnp7tzT/d/ZWI6Mr7twRBdsKbKO7dpKS2+fjnKL6QqNYgOLElT/TWrRSbTp7EiL1yXA==", + "requires": { + "@babel/core": "^7.14.3", "@babel/plugin-proposal-class-properties": "^7.13.0", "@babel/plugin-proposal-private-methods": "^7.13.0", "@babel/plugin-transform-object-assign": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.13.12", - "@babel/plugin-transform-runtime": "^7.13.15", - "@babel/preset-env": "^7.14.1", + "@babel/plugin-transform-react-jsx": "^7.14.3", + "@babel/plugin-transform-runtime": "^7.14.3", + "@babel/preset-env": "^7.14.2", "@babel/preset-react": "^7.13.13", "@babel/preset-typescript": "^7.13.0", "@babel/runtime": "^7.14.0", "babel-loader": "^8.2.2", - "typescript": "^4.2.4", - "webpack-bundle-analyzer": "^4.4.1" + "typescript": "^4.3.2", + "webpack-bundle-analyzer": "^4.4.2" } }, "flush-write-stream": { @@ -9984,6 +10089,12 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, + "prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", diff --git a/extensions/nicknames/js/package.json b/extensions/nicknames/js/package.json index e53cf3e0a..3140bf158 100644 --- a/extensions/nicknames/js/package.json +++ b/extensions/nicknames/js/package.json @@ -2,13 +2,21 @@ "name": "@flarum/nicknames", "version": "0.0.0", "private": true, + "prettier": "@flarum/prettier-config", "dependencies": { - "flarum-webpack-config": "^0.1.0-beta.10", - "webpack": "^4.26.0", - "webpack-cli": "^4.9.0" + "@flarum/prettier-config": "^1.0.0", + "flarum-tsconfig": "^1.0.2", + "flarum-webpack-config": "^1.0.0", + "webpack": "^4.46.0", + "webpack-cli": "^4.9.1" + }, + "devDependencies": { + "prettier": "^2.5.1" }, "scripts": { "dev": "webpack --mode development --watch", - "build": "webpack --mode production" + "build": "webpack --mode production", + "format": "prettier --write src", + "format-check": "prettier --check src" } } diff --git a/extensions/nicknames/js/src/admin/index.js b/extensions/nicknames/js/src/admin/index.tsx similarity index 77% rename from extensions/nicknames/js/src/admin/index.js rename to extensions/nicknames/js/src/admin/index.tsx index 65f14efac..929bce351 100644 --- a/extensions/nicknames/js/src/admin/index.js +++ b/extensions/nicknames/js/src/admin/index.tsx @@ -1,3 +1,4 @@ +import app from 'flarum/admin/app'; import Alert from 'flarum/common/components/Alert'; import Link from 'flarum/common/components/Link'; @@ -10,7 +11,7 @@ app.initializers.add('flarum/nicknames', () => { return (
- {app.translator.trans('flarum-nicknames.admin.wrong_driver', {a: })} + {app.translator.trans('flarum-nicknames.admin.wrong_driver', { a: })}
); @@ -18,37 +19,40 @@ app.initializers.add('flarum/nicknames', () => { .registerSetting({ setting: 'flarum-nicknames.set_on_registration', type: 'boolean', - label: app.translator.trans('flarum-nicknames.admin.settings.set_on_registration_label') + label: app.translator.trans('flarum-nicknames.admin.settings.set_on_registration_label'), }) .registerSetting({ setting: 'flarum-nicknames.random_username', type: 'boolean', label: app.translator.trans('flarum-nicknames.admin.settings.random_username_label'), - help: app.translator.trans('flarum-nicknames.admin.settings.random_username_help') + help: app.translator.trans('flarum-nicknames.admin.settings.random_username_help'), }) .registerSetting({ setting: 'flarum-nicknames.unique', type: 'boolean', - label: app.translator.trans('flarum-nicknames.admin.settings.unique_label') + label: app.translator.trans('flarum-nicknames.admin.settings.unique_label'), }) .registerSetting({ setting: 'flarum-nicknames.regex', type: 'text', - label: app.translator.trans('flarum-nicknames.admin.settings.regex_label') + label: app.translator.trans('flarum-nicknames.admin.settings.regex_label'), }) .registerSetting({ setting: 'flarum-nicknames.min', type: 'number', - label: app.translator.trans('flarum-nicknames.admin.settings.min_label') + label: app.translator.trans('flarum-nicknames.admin.settings.min_label'), }) .registerSetting({ setting: 'flarum-nicknames.max', type: 'number', - label: app.translator.trans('flarum-nicknames.admin.settings.max_label') + label: app.translator.trans('flarum-nicknames.admin.settings.max_label'), }) - .registerPermission({ - icon: 'fas fa-user-tag', - label: app.translator.trans('flarum-nicknames.admin.permissions.edit_own_nickname_label'), - permission: 'user.editOwnNickname' - }, 'start') + .registerPermission( + { + icon: 'fas fa-user-tag', + label: app.translator.trans('flarum-nicknames.admin.permissions.edit_own_nickname_label'), + permission: 'user.editOwnNickname', + }, + 'start' + ); }); diff --git a/extensions/nicknames/js/src/forum/components/NicknameModal.js b/extensions/nicknames/js/src/forum/components/NicknameModal.js index 4703c6d75..31e306cc9 100644 --- a/extensions/nicknames/js/src/forum/components/NicknameModal.js +++ b/extensions/nicknames/js/src/forum/components/NicknameModal.js @@ -1,3 +1,4 @@ +import app from 'flarum/forum/app'; import Modal from 'flarum/common/components/Modal'; import Button from 'flarum/common/components/Button'; import Stream from 'flarum/common/utils/Stream'; @@ -21,20 +22,17 @@ export default class NicknameModal extends Modal {
- +
- {Button.component({ - className: 'Button Button--primary Button--block', - type: 'submit', - loading: this.loading, - }, app.translator.trans('flarum-nicknames.forum.change_nickname.submit_button'))} + {Button.component( + { + className: 'Button Button--primary Button--block', + type: 'submit', + loading: this.loading, + }, + app.translator.trans('flarum-nicknames.forum.change_nickname.submit_button') + )}
@@ -51,9 +49,13 @@ export default class NicknameModal extends Modal { this.loading = true; - app.session.user.save({ nickname: this.nickname() }, { - errorHandler: this.onerror.bind(this), - }) + app.session.user + .save( + { nickname: this.nickname() }, + { + errorHandler: this.onerror.bind(this), + } + ) .then(this.hide.bind(this)) .catch(() => { this.loading = false; diff --git a/extensions/nicknames/js/src/forum/index.js b/extensions/nicknames/js/src/forum/index.js index df6e72009..6afd12c1a 100644 --- a/extensions/nicknames/js/src/forum/index.js +++ b/extensions/nicknames/js/src/forum/index.js @@ -1,3 +1,4 @@ +import app from 'flarum/forum/app'; import { extend } from 'flarum/common/extend'; import Button from 'flarum/common/components/Button'; import EditUserModal from 'flarum/common/components/EditUserModal'; @@ -16,7 +17,8 @@ app.initializers.add('flarum/nicknames', () => { if (app.forum.attribute('displayNameDriver') !== 'nickname') return; if (this.user.canEditOwnNickname()) { - items.add('changeNickname', + items.add( + 'changeNickname', @@ -33,13 +35,18 @@ app.initializers.add('flarum/nicknames', () => { extend(EditUserModal.prototype, 'fields', function (items) { if (app.forum.attribute('displayNameDriver') !== 'nickname') return; - items.add('nickname', + items.add( + 'nickname',
- -
, 100); + + , + 100 + ); }); extend(EditUserModal.prototype, 'data', function (data) { @@ -55,17 +62,14 @@ app.initializers.add('flarum/nicknames', () => { if (app.forum.attribute('displayNameDriver') !== 'nickname') return; this.nickname = Stream(this.attrs.username || ''); - }); - extend(SignUpModal.prototype, 'onready', function () { if (app.forum.attribute('displayNameDriver') !== 'nickname') return; if (app.forum.attribute('setNicknameOnRegistration') && app.forum.attribute('randomizeUsernameOnRegistration')) { this.$('[name=nickname]').select(); } - }); extend(SignUpModal.prototype, 'fields', function (items) { @@ -106,5 +110,4 @@ app.initializers.add('flarum/nicknames', () => { } } }); - }); diff --git a/extensions/nicknames/js/tsconfig.json b/extensions/nicknames/js/tsconfig.json new file mode 100644 index 000000000..207c5b382 --- /dev/null +++ b/extensions/nicknames/js/tsconfig.json @@ -0,0 +1,16 @@ +{ + // Use Flarum's tsconfig as a starting point + "extends": "flarum-tsconfig", + // This will match all .ts, .tsx, .d.ts, .js, .jsx files in your `src` folder + // and also tells your Typescript server to read core's global typings for + // access to `dayjs` and `$` in the global namespace. + "include": ["src/**/*", "../vendor/flarum/core/js/dist-typings/@types/**/*"], + "compilerOptions": { + // This will output typings to `dist-typings` + "declarationDir": "./dist-typings", + "baseUrl": ".", + "paths": { + "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] + } + } +}