diff --git a/framework/core/.github/workflows/backend.yml b/framework/core/.github/workflows/backend.yml new file mode 100644 index 000000000..8c4082b3f --- /dev/null +++ b/framework/core/.github/workflows/backend.yml @@ -0,0 +1,15 @@ +name: Core PHP + +on: [workflow_dispatch, push, pull_request] + +# The reusable workflow definitions will be moved to the `flarum/framework` repo soon. +# This will break your current script. +# When this happens, run `flarum-cli audit infra --fix` to update your infrastructure. + +jobs: + run: + uses: flarum/.github/.github/workflows/REUSABLE_backend.yml@main + with: + enable_backend_testing: true + + backend_directory: . \ No newline at end of file diff --git a/framework/core/.github/workflows/frontend.yml b/framework/core/.github/workflows/frontend.yml new file mode 100644 index 000000000..4eb7a70d5 --- /dev/null +++ b/framework/core/.github/workflows/frontend.yml @@ -0,0 +1,20 @@ +name: Core JS + +on: [workflow_dispatch, push, pull_request] + +# The reusable workflow definitions will be moved to the `flarum/framework` repo soon. +# This will break your current script. +# When this happens, run `flarum-cli audit infra --fix` to update your infrastructure. + +jobs: + run: + uses: flarum/.github/.github/workflows/REUSABLE_frontend.yml@main + with: + enable_bundlewatch: true + enable_prettier: true + enable_typescript: true + + frontend_directory: ./js + main_git_branch: main + secrets: + bundlewatch_github_token: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }} \ No newline at end of file diff --git a/framework/core/.github/workflows/js.yml b/framework/core/.github/workflows/js.yml deleted file mode 100644 index cd1e65982..000000000 --- a/framework/core/.github/workflows/js.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: JS - -on: [workflow_dispatch, push, pull_request] - -env: - NODE_VERSION: 16 - -jobs: - prettier: - name: Prettier - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - - name: Install JS dependencies - run: yarn install --immutable - working-directory: ./js - - - name: Check JS formatting - run: yarn run format-check - working-directory: ./js - - typecheck: - name: Typecheck - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - - name: Install JS dependencies - run: yarn --frozen-lockfile - working-directory: ./js - - - name: Typecheck - run: yarn run check-typings - working-directory: ./js - - type-coverage: - name: Type Coverage - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - - name: Install JS dependencies - run: yarn --frozen-lockfile - working-directory: ./js - - - name: Check type coverage - run: yarn run check-typings-coverage - working-directory: ./js - - build-prod: - name: Build and commit - runs-on: ubuntu-latest - needs: [prettier, typecheck, type-coverage] - - # Only commit JS on push to master branch - # Remember to change in `build-test` job too - if: github.ref == 'refs/heads/master' && github.event_name == 'push' - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - # Our action will install npm, cd into `./js`, run `npm run build` and - # `npm run build-typings`, then commit and upload any changes - - name: Build production JS - uses: flarum/action-build@2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - build_script: build - package_manager: yarn - typings_script: build-typings - - build-test: - name: Test build - runs-on: ubuntu-latest - needs: [prettier, typecheck, type-coverage] - - # Inverse check of `build-prod` - # Remember to change in `build-prod` job too - if: github.ref != 'refs/heads/master' || github.event_name != 'push' - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Set up Node - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "yarn" - cache-dependency-path: js/yarn.lock - - # Our action will install npm, cd into `./js`, run `npm run build` and - # `npm run build-typings`, then commit and upload any changes - - name: Build production JS - uses: flarum/action-build@2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - build_script: build - package_manager: yarn - typings_script: build-typings - do_not_commit: true diff --git a/framework/core/.github/workflows/pr_size_change.yml b/framework/core/.github/workflows/pr_size_change.yml deleted file mode 100644 index e35e3fac5..000000000 --- a/framework/core/.github/workflows/pr_size_change.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Bundle size checker - -on: - workflow_dispatch: - - push: - paths: - - "js/**" - pull_request: - paths: - - "js/**" - -jobs: - bundlewatch: - runs-on: ubuntu-latest - - name: Bundlewatch - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: "14" - - - name: Use npm v7 - run: sudo npm install -g npm@7.x.x - - - name: Install JS dependencies - # We need to use `npm install` here. If we don't, the workflow will fail. - run: npm install - working-directory: ./js - - - name: Build production assets - run: npm run build - working-directory: ./js - - - name: Check bundle size change - run: node_modules/.bin/bundlewatch --config .bundlewatch.config.json - working-directory: ./js - env: - BUNDLEWATCH_GITHUB_TOKEN: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }} - CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }} diff --git a/framework/core/.github/workflows/test.yml b/framework/core/.github/workflows/test.yml deleted file mode 100644 index 468265fab..000000000 --- a/framework/core/.github/workflows/test.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: Tests - -on: [push, pull_request] - -jobs: - test: - runs-on: ubuntu-latest - - strategy: - matrix: - php: [7.3, 7.4, '8.0', '8.1'] - service: ['mysql:5.7', mariadb] - prefix: ['', flarum_] - - include: - - service: 'mysql:5.7' - db: MySQL - - service: mariadb - db: MariaDB - - prefix: flarum_ - prefixStr: (prefix) - - exclude: - - php: 7.3 - service: 'mysql:5.7' - prefix: flarum_ - - php: 7.3 - service: mariadb - prefix: flarum_ - - php: 8.0 - service: 'mysql:5.7' - prefix: flarum_ - - php: 8.0 - service: mariadb - prefix: flarum_ - - services: - mysql: - image: ${{ matrix.service }} - ports: - - 13306:3306 - - name: 'PHP ${{ matrix.php }} / ${{ matrix.db }} ${{ matrix.prefixStr }}' - - steps: - - name: Check out code - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@0b9d33cd0782337377999751fc10ea079fdd7104 # pin@v2 - with: - php-version: ${{ matrix.php }} - coverage: xdebug - extensions: curl, dom, gd, json, mbstring, openssl, pdo_mysql, tokenizer, zip - tools: phpunit, composer:v2 - - # The authentication alter is necessary because newer mysql versions use the `caching_sha2_password` driver, - # which isn't supported prior to PHP7.4 - # When we drop support for PHP7.3, we should remove this from the setup. - - name: Create MySQL Database - run: | - sudo systemctl start mysql - mysql -uroot -proot -e 'CREATE DATABASE flarum_test;' --port 13306 - mysql -uroot -proot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';" --port 13306 - - - name: Install Composer dependencies - run: composer install - - - name: Setup Composer tests - run: composer test:setup - env: - DB_PORT: 13306 - DB_PASSWORD: root - DB_PREFIX: ${{ matrix.prefix }} - - - name: Run Composer tests - run: composer test - env: - COMPOSER_PROCESS_TIMEOUT: 600 diff --git a/framework/core/.gitignore b/framework/core/.gitignore index 30e01fbd2..4ebb168a0 100644 --- a/framework/core/.gitignore +++ b/framework/core/.gitignore @@ -1,6 +1,7 @@ /vendor composer.lock composer.phar + .DS_Store Thumbs.db tests/.phpunit.result.cache diff --git a/framework/core/LICENSE b/framework/core/LICENSE.md similarity index 100% rename from framework/core/LICENSE rename to framework/core/LICENSE.md diff --git a/framework/core/composer.json b/framework/core/composer.json index 4459dce50..6114d5a8d 100644 --- a/framework/core/composer.json +++ b/framework/core/composer.json @@ -109,8 +109,21 @@ "dev-master": "1.x-dev" }, "flarum-cli": { + "excludeScaffolding": [ + "LICENSE.md", + "js/tsconfig.json", + "js/webpack.config.js" + ], "modules": { - "backendTesting": true + "backendTesting": true, + "js": true, + "gitConf": true, + "githubActions": true, + "prettier": true, + "typescript": true, + "bundlewatch": true, + "editorConfig": true, + "styleci": true } } }, diff --git a/framework/core/js/admin.js b/framework/core/js/admin.js index c62b84bf5..1f9e14ab9 100644 --- a/framework/core/js/admin.js +++ b/framework/core/js/admin.js @@ -1,2 +1,2 @@ export * from './src/common'; -export * from './src/admin'; \ No newline at end of file +export * from './src/admin'; diff --git a/framework/core/js/forum.js b/framework/core/js/forum.js index 534ceb302..f49b87108 100644 --- a/framework/core/js/forum.js +++ b/framework/core/js/forum.js @@ -1,2 +1,2 @@ export * from './src/common'; -export * from './src/forum'; \ No newline at end of file +export * from './src/forum'; diff --git a/framework/core/js/package.json b/framework/core/js/package.json index f2f66be92..32a32632e 100644 --- a/framework/core/js/package.json +++ b/framework/core/js/package.json @@ -1,51 +1,51 @@ { - "private": true, - "name": "@flarum/core", - "prettier": "@flarum/prettier-config", - "dependencies": { - "@askvortsov/rich-icu-message-formatter": "^0.2.1", - "@ultraq/icu-message-formatter": "^0.12.0", - "bootstrap": "^3.4.1", - "clsx": "^1.1.1", - "color-thief-browser": "^2.0.2", - "dayjs": "^1.10.7", - "focus-trap": "^6.7.1", - "jquery": "^3.6.0", - "jquery.hotkeys": "^0.1.0", - "mithril": "^2.0.4", - "nanoid": "^3.1.30", - "punycode": "^2.1.1", - "textarea-caret": "^3.1.0", - "throttle-debounce": "^3.0.1" - }, - "devDependencies": { - "@flarum/prettier-config": "^1.0.0", - "@types/jquery": "^3.5.10", - "@types/mithril": "^2.0.8", - "@types/punycode": "^2.1.0", - "@types/textarea-caret": "^3.0.1", - "bundlewatch": "^0.3.2", - "cross-env": "^7.0.3", - "expose-loader": "^3.1.0", - "flarum-tsconfig": "^1.0.2", - "flarum-webpack-config": "^2.0.0", - "prettier": "^2.5.1", - "typescript": "^4.5.4", - "typescript-coverage-report": "^0.6.1", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1", - "webpack-merge": "^5.8.0" - }, - "scripts": { - "dev": "webpack --mode development --watch", - "build": "webpack --mode production", - "analyze": "cross-env ANALYZER=true npm run build", - "format": "prettier --write src", - "format-check": "prettier --check src", - "clean-typings": "npx rimraf dist-typings && mkdir dist-typings", - "build-typings": "npm run clean-typings && cp -r src/@types dist-typings/@types && tsc", - "check-typings": "tsc --noEmit --emitDeclarationOnly false", - "check-typings-coverage": "typescript-coverage-report" - }, - "packageManager": "yarn@3.1.1" + "private": true, + "name": "@flarum/core", + "prettier": "@flarum/prettier-config", + "dependencies": { + "@askvortsov/rich-icu-message-formatter": "^0.2.1", + "@ultraq/icu-message-formatter": "^0.12.0", + "bootstrap": "^3.4.1", + "clsx": "^1.1.1", + "color-thief-browser": "^2.0.2", + "dayjs": "^1.10.7", + "focus-trap": "^6.7.1", + "jquery": "^3.6.0", + "jquery.hotkeys": "^0.1.0", + "mithril": "^2.0.4", + "nanoid": "^3.1.30", + "punycode": "^2.1.1", + "textarea-caret": "^3.1.0", + "throttle-debounce": "^3.0.1" + }, + "devDependencies": { + "@flarum/prettier-config": "^1.0.0", + "@types/jquery": "^3.5.10", + "@types/mithril": "^2.0.8", + "@types/punycode": "^2.1.0", + "@types/textarea-caret": "^3.0.1", + "bundlewatch": "^0.3.2", + "cross-env": "^7.0.3", + "expose-loader": "^3.1.0", + "flarum-tsconfig": "^1.0.2", + "flarum-webpack-config": "^2.0.0", + "prettier": "^2.5.1", + "typescript": "^4.5.4", + "typescript-coverage-report": "^0.6.1", + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1", + "webpack-merge": "^5.8.0" + }, + "scripts": { + "dev": "webpack --mode development --watch", + "build": "webpack --mode production", + "analyze": "cross-env ANALYZER=true yarn build", + "format": "prettier --write src", + "format-check": "prettier --check src", + "clean-typings": "npx rimraf dist-typings && mkdir dist-typings", + "build-typings": "npm run clean-typings && cp -r src/@types dist-typings/@types && tsc", + "check-typings": "tsc --noEmit --emitDeclarationOnly false", + "check-typings-coverage": "typescript-coverage-report" + }, + "packageManager": "yarn@3.1.1" }