diff --git a/extensions/package-manager/.gitattributes b/extensions/package-manager/.gitattributes
index 67d307d04..b9a08e27d 100644
--- a/extensions/package-manager/.gitattributes
+++ b/extensions/package-manager/.gitattributes
@@ -1,5 +1,19 @@
-js/src export-ignore
-.git* export-ignore
+.gitattributes export-ignore
+.gitignore export-ignore
+.gitmodules export-ignore
+.github export-ignore
+.travis export-ignore
+.travis.yml export-ignore
+.editorconfig export-ignore
+.styleci.yml export-ignore
-js/dist/*.js -diff
-tests/*
+phpunit.xml export-ignore
+tests export-ignore
+
+js/dist/* -diff
+js/dist/* linguist-generated
+js/dist-typings/* linguist-generated
+js/yarn.lock -diff
+js/package-lock.json -diff
+
+* text=auto eol=lf
diff --git a/extensions/package-manager/.github/workflows/backend.yml b/extensions/package-manager/.github/workflows/backend.yml
new file mode 100644
index 000000000..eaf8723ad
--- /dev/null
+++ b/extensions/package-manager/.github/workflows/backend.yml
@@ -0,0 +1,15 @@
+name: Package Manager 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/extensions/package-manager/.github/workflows/frontend.yml b/extensions/package-manager/.github/workflows/frontend.yml
new file mode 100755
index 000000000..6683d6271
--- /dev/null
+++ b/extensions/package-manager/.github/workflows/frontend.yml
@@ -0,0 +1,23 @@
+name: Package Manager 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@as/support-npm-yarn
+ with:
+ enable_bundlewatch: false
+ enable_prettier: true
+ enable_typescript: true
+
+ frontend_directory: ./js
+ backend_directory: .
+ package_manager: yarn
+ main_git_branch: main
+
+ secrets:
+ bundlewatch_github_token: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
diff --git a/extensions/package-manager/.github/workflows/js.yml b/extensions/package-manager/.github/workflows/js.yml
deleted file mode 100755
index 84e1aa42c..000000000
--- a/extensions/package-manager/.github/workflows/js.yml
+++ /dev/null
@@ -1,91 +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 --frozen-lockfile
- working-directory: ./js
-
- - name: Check JS formatting
- run: yarn run format-check
- working-directory: ./js
-
- build-prod:
- name: Build and commit
- runs-on: ubuntu-latest
- needs: [prettier]
-
- # Only commit JS on push to master branch
- # Remember to change in `build-test` job too
- if: github.ref == 'refs/heads/<%= mainGitBranch %>' && 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]
-
- # Inverse check of `build-prod`
- # Remember to change in `build-prod` job too
- if: github.ref != 'refs/heads/<%= mainGitBranch %>' || 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/extensions/package-manager/.github/workflows/test.yml b/extensions/package-manager/.github/workflows/test.yml
deleted file mode 100755
index ac322a07c..000000000
--- a/extensions/package-manager/.github/workflows/test.yml
+++ /dev/null
@@ -1,85 +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_
- - php: 8.1
- service: 'mysql:5.7'
- prefix: flarum_
- - php: 8.1
- service: mariadb
- prefix: flarum_
-
- services:
- mysql:
- image: ${{ matrix.service }}
- ports:
- - 13306:3306
-
- name: 'PHP ${{ matrix.php }} / ${{ matrix.db }} ${{ matrix.prefixStr }}'
-
- steps:
- - uses: actions/checkout@master
-
- - name: Setup PHP
- uses: shivammathur/setup-php@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 }}
- FLARUM_TEST_TMP_DIR_LOCAL: tests/tmp
-
- - name: Run Composer tests
- run: composer test
- env:
- COMPOSER_PROCESS_TIMEOUT: 600
diff --git a/extensions/package-manager/.gitignore b/extensions/package-manager/.gitignore
index cb0813cde..4ebb168a0 100755
--- a/extensions/package-manager/.gitignore
+++ b/extensions/package-manager/.gitignore
@@ -1,5 +1,12 @@
-js/node_modules
-vendor/
+/vendor
composer.lock
-tests/tmp/
-.phpunit.result.cache
+composer.phar
+
+.DS_Store
+Thumbs.db
+tests/.phpunit.result.cache
+/tests/integration/tmp
+.vagrant
+.idea/*
+.vscode
+js/coverage-ts
diff --git a/extensions/package-manager/.styleci.yml b/extensions/package-manager/.styleci.yml
new file mode 100644
index 000000000..8806a5402
--- /dev/null
+++ b/extensions/package-manager/.styleci.yml
@@ -0,0 +1,14 @@
+preset: recommended
+
+enabled:
+ - logical_not_operators_with_successor_space
+
+disabled:
+ - align_double_arrow
+ - blank_line_after_opening_tag
+ - multiline_array_trailing_comma
+ - new_with_braces
+ - phpdoc_align
+ - phpdoc_order
+ - phpdoc_separation
+ - phpdoc_types
diff --git a/extensions/package-manager/composer.json b/extensions/package-manager/composer.json
index d276c8288..7824630ed 100755
--- a/extensions/package-manager/composer.json
+++ b/extensions/package-manager/composer.json
@@ -2,7 +2,11 @@
"name": "flarum/package-manager",
"description": "A Flarum Package Manager.",
"keywords": [
- "extensions", "composer", "packages", "manager", "updater"
+ "extensions",
+ "composer",
+ "packages",
+ "manager",
+ "updater"
],
"type": "flarum-extension",
"license": "MIT",
@@ -22,7 +26,6 @@
"composer/composer": "^2.0"
},
"require-dev": {
- "flarum/core": "dev-master",
"flarum/testing": "^1.0.0",
"flarum/tags": "*"
},
@@ -34,6 +37,23 @@
"backgroundColor": "#117187",
"color": "#fff"
}
+ },
+ "flarum-cli": {
+ "modules": {
+ "admin": true,
+ "forum": false,
+ "js": true,
+ "jsCommon": false,
+ "css": true,
+ "gitConf": true,
+ "githubActions": true,
+ "prettier": true,
+ "typescript": true,
+ "bundlewatch": false,
+ "backendTesting": true,
+ "editorConfig": true,
+ "styleci": true
+ }
}
},
"autoload": {
@@ -63,5 +83,7 @@
"test:unit": "Runs all unit tests.",
"test:integration": "Runs all integration tests.",
"test:setup": "Sets up a database for use with integration tests. Execute this only once."
- }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
}
diff --git a/extensions/package-manager/js/.gitignore b/extensions/package-manager/js/.gitignore
new file mode 100644
index 000000000..adc90f312
--- /dev/null
+++ b/extensions/package-manager/js/.gitignore
@@ -0,0 +1,9 @@
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
+
+node_modules
diff --git a/extensions/package-manager/js/admin.js b/extensions/package-manager/js/admin.js
deleted file mode 100755
index 13dc041ce..000000000
--- a/extensions/package-manager/js/admin.js
+++ /dev/null
@@ -1 +0,0 @@
-export * from './src/admin';
\ No newline at end of file
diff --git a/extensions/package-manager/js/admin.ts b/extensions/package-manager/js/admin.ts
new file mode 100644
index 000000000..3e69ff3b9
--- /dev/null
+++ b/extensions/package-manager/js/admin.ts
@@ -0,0 +1 @@
+export * from './src/admin';
diff --git a/extensions/package-manager/js/package.json b/extensions/package-manager/js/package.json
index 8755d76b6..01ad726df 100755
--- a/extensions/package-manager/js/package.json
+++ b/extensions/package-manager/js/package.json
@@ -3,20 +3,26 @@
"version": "0.0.0",
"private": true,
"prettier": "@flarum/prettier-config",
- "dependencies": {
- "@flarum/prettier-config": "^1.0.0",
- "flarum-tsconfig": "^1.0.0",
- "flarum-webpack-config": "^1.0.0",
- "webpack": "^4.26.0",
- "webpack-cli": "^3.0.7"
- },
"devDependencies": {
- "prettier": "^2.3.0"
+ "prettier": "^2.5.1",
+ "flarum-webpack-config": "^2.0.0",
+ "webpack": "^5.65.0",
+ "webpack-cli": "^4.9.1",
+ "@flarum/prettier-config": "^1.0.0",
+ "flarum-tsconfig": "^1.0.2",
+ "typescript": "^4.5.4",
+ "typescript-coverage-report": "^0.6.1"
},
"scripts": {
"dev": "webpack --mode development --watch",
"build": "webpack --mode production",
"format": "prettier --write src",
- "format-check": "prettier --check src"
+ "format-check": "prettier --check src",
+ "ci": "yarn install --immutable --immutable-cache",
+ "analyze": "cross-env ANALYZER=true yarn run build",
+ "clean-typings": "npx rimraf dist-typings && mkdir dist-typings",
+ "build-typings": "yarn run clean-typings && tsc && [ -e src/@types ] && cp -r src/@types dist-typings/@types",
+ "check-typings": "tsc --noEmit --emitDeclarationOnly false",
+ "check-typings-coverage": "typescript-coverage-report"
}
}
diff --git a/extensions/package-manager/js/tsconfig.json b/extensions/package-manager/js/tsconfig.json
index a60a30754..ee0d5ef5a 100755
--- a/extensions/package-manager/js/tsconfig.json
+++ b/extensions/package-manager/js/tsconfig.json
@@ -1,16 +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/*"]
- }
+ // 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/**/*", "@types/**/*"],
+ "compilerOptions": {
+ // This will output typings to `dist-typings`
+ "declarationDir": "./dist-typings",
+ "baseUrl": ".",
+ "paths": {
+ "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"]
}
+ }
}
diff --git a/extensions/package-manager/tests/integration/SetupComposer.php b/extensions/package-manager/tests/integration/SetupComposer.php
index 5112e9912..9a1080ce4 100644
--- a/extensions/package-manager/tests/integration/SetupComposer.php
+++ b/extensions/package-manager/tests/integration/SetupComposer.php
@@ -28,7 +28,7 @@ class SetupComposer
'repositories' => [
[
'type' => 'path',
- 'url' => __DIR__.'/../tmp/packages/*',
+ 'url' => __DIR__.'/tmp/packages/*',
]
]
];
diff --git a/extensions/package-manager/tests/phpunit.integration.xml b/extensions/package-manager/tests/phpunit.integration.xml
index 4602db3fd..2d2b64c39 100644
--- a/extensions/package-manager/tests/phpunit.integration.xml
+++ b/extensions/package-manager/tests/phpunit.integration.xml
@@ -19,9 +19,10 @@
./integration
+ ./integration/tmp
-
+