ep_table_of_contents 0.3.82 → 0.3.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
- name: "Backend tests"
1
+ name: Backend Tests
2
2
 
3
3
  # any branch is useful for testing before a PR is submitted
4
- on: [push, pull_request]
4
+ on:
5
+ workflow_call:
5
6
 
6
7
  jobs:
7
8
  withplugins:
@@ -12,64 +13,80 @@ jobs:
12
13
  || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
13
14
  name: with Plugins
14
15
  runs-on: ubuntu-latest
15
-
16
16
  steps:
17
17
  -
18
18
  name: Install libreoffice
19
- run: |
20
- sudo add-apt-repository -y ppa:libreoffice/ppa
21
- sudo apt update
22
- sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport
19
+ uses: awalsh128/cache-apt-pkgs-action@v1.4.2
20
+ with:
21
+ packages: libreoffice libreoffice-pdfimport
22
+ version: 1.0
23
23
  -
24
24
  name: Install etherpad core
25
- uses: actions/checkout@v4
25
+ uses: actions/checkout@v3
26
26
  with:
27
27
  repository: ether/etherpad-lite
28
+ path: etherpad-lite
29
+ - uses: pnpm/action-setup@v3
30
+ name: Install pnpm
31
+ with:
32
+ version: 8
33
+ run_install: false
34
+ - name: Get pnpm store directory
35
+ shell: bash
36
+ run: |
37
+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
38
+ - uses: actions/cache@v4
39
+ name: Setup pnpm cache
40
+ with:
41
+ path: ${{ env.STORE_PATH }}
42
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
43
+ restore-keys: |
44
+ ${{ runner.os }}-pnpm-store-
28
45
  -
29
46
  name: Checkout plugin repository
30
- uses: actions/checkout@v4
47
+ uses: actions/checkout@v3
31
48
  with:
32
- path: ./node_modules/__tmp
49
+ path: plugin
33
50
  -
34
51
  name: Determine plugin name
35
52
  id: plugin_name
53
+ working-directory: ./plugin
36
54
  run: |
37
- cd ./node_modules/__tmp
38
55
  npx -c 'printf %s\\n "::set-output name=plugin_name::${npm_package_name}"'
39
56
  -
40
- name: Rename plugin directory
57
+ name: Link plugin directory
58
+ working-directory: ./plugin
41
59
  run: |
42
- mv ./node_modules/__tmp ./node_modules/"${PLUGIN_NAME}"
43
- env:
44
- PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
45
- - uses: actions/setup-node@v4
46
- with:
47
- node-version: 20
48
- cache: 'npm'
49
- cache-dependency-path: |
50
- src/package-lock.json
51
- src/bin/doc/package-lock.json
52
- node_modules/${{ steps.plugin_name.outputs.plugin_name }}/package-lock.json
53
- - run: npm install npm@6.14.18 -g
54
- name: Install legacy npm for correct dependency resolution
55
- - name: Install plugin dependencies
60
+ pnpm link --global
61
+ - name: Remove tests
62
+ working-directory: ./etherpad-lite
63
+ run: rm -rf ./src/tests/backend/specs
64
+ -
65
+ name: Install Etherpad core dependencies
66
+ working-directory: ./etherpad-lite
67
+ run: bin/installDeps.sh
68
+ - name: Link plugin to etherpad-lite
69
+ working-directory: ./etherpad-lite
56
70
  run: |
57
- cd ./node_modules/"${PLUGIN_NAME}"
58
- npm ci
71
+ pnpm link --global $PLUGIN_NAME
72
+ pnpm run install-plugins --path ../../plugin
59
73
  env:
60
74
  PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
61
- # Etherpad core dependencies must be installed after installing the
62
- # plugin's dependencies, otherwise npm will try to hoist common
63
- # dependencies by removing them from src/node_modules and installing them
64
- # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears
65
- # to be buggy, because it sometimes removes dependencies from
66
- # src/node_modules but fails to add them to the top-level node_modules.
67
- # Even if npm correctly hoists the dependencies, the hoisting seems to
68
- # confuse tools such as `npm outdated`, `npm update`, and some ESLint
69
- # rules.
70
- -
71
- name: Install Etherpad core dependencies
72
- run: src/bin/installDeps.sh
75
+ - name: Link ep_etherpad-lite
76
+ working-directory: ./etherpad-lite/src
77
+ run: |
78
+ pnpm link --global
79
+ - name: Link etherpad to plugin
80
+ working-directory: ./plugin
81
+ run: |
82
+ pnpm link --global ep_etherpad-lite
73
83
  -
74
84
  name: Run the backend tests
75
- run: cd src && npm test
85
+ working-directory: ./etherpad-lite
86
+ run: |
87
+ res=$(find .. -path "./node_modules/ep_*/static/tests/backend/specs/**" | wc -l)
88
+ if [ $res -eq 0 ]; then
89
+ echo "No backend tests found"
90
+ else
91
+ pnpm run test
92
+ fi
@@ -1,38 +1,39 @@
1
1
  # Publicly credit Sauce Labs because they generously support open source
2
2
  # projects.
3
- name: "frontend tests powered by Sauce Labs"
3
+ name: Frontend Tests
4
4
 
5
- on: [push]
5
+ on:
6
+ workflow_call:
6
7
 
7
8
  jobs:
8
- test:
9
- if: ${{ github.actor != 'dependabot[bot]' }}
9
+ test-frontend:
10
10
  runs-on: ubuntu-latest
11
11
 
12
12
  steps:
13
- -
14
- name: Generate Sauce Labs strings
15
- id: sauce_strings
16
- run: |
17
- printf %s\\n '::set-output name=name::${{github.event.repository.name}} ${{ github.workflow }} - ${{ github.job }}'
18
- printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}'
19
13
  -
20
14
  name: Check out Etherpad core
21
- uses: actions/checkout@v4
15
+ uses: actions/checkout@v3
22
16
  with:
23
17
  repository: ether/etherpad-lite
24
- - uses: actions/setup-node@v4
18
+ - uses: pnpm/action-setup@v3
19
+ name: Install pnpm
25
20
  with:
26
- node-version: 20
27
- cache: 'npm'
28
- cache-dependency-path: |
29
- src/package-lock.json
30
- src/bin/doc/package-lock.json
31
- - run: npm install npm@6.14.18 -g
32
- name: Install legacy npm for correct dependency resolution
21
+ version: 8
22
+ run_install: false
23
+ - name: Get pnpm store directory
24
+ shell: bash
25
+ run: |
26
+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
27
+ - uses: actions/cache@v4
28
+ name: Setup pnpm cache
29
+ with:
30
+ path: ${{ env.STORE_PATH }}
31
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
32
+ restore-keys: |
33
+ ${{ runner.os }}-pnpm-store-
33
34
  -
34
35
  name: Check out the plugin
35
- uses: actions/checkout@v4
36
+ uses: actions/checkout@v3
36
37
  with:
37
38
  path: ./node_modules/__tmp
38
39
  -
@@ -59,7 +60,7 @@ jobs:
59
60
  PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
60
61
  run: |
61
62
  cd ./node_modules/"${PLUGIN_NAME}"
62
- npm ci
63
+ pnpm i
63
64
  # Etherpad core dependencies must be installed after installing the
64
65
  # plugin's dependencies, otherwise npm will try to hoist common
65
66
  # dependencies by removing them from src/node_modules and installing them
@@ -71,31 +72,23 @@ jobs:
71
72
  # rules.
72
73
  -
73
74
  name: Install Etherpad core dependencies
74
- run: src/bin/installDeps.sh
75
- -
76
- name: Create settings.json
77
- run: cp settings.json.template settings.json
78
- -
79
- name: Disable import/export rate limiting
80
- run: |
81
- sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json
82
- -
83
- name: Remove standard frontend test files
84
- run: rm -rf src/tests/frontend/specs
85
- -
86
- uses: saucelabs/sauce-connect-action@v2.3.6
87
- with:
88
- username: ${{ secrets.SAUCE_USERNAME }}
89
- accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}
90
- tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }}
91
- -
92
- name: Run the frontend tests
75
+ run: bin/installDeps.sh
76
+ - name: Create settings.json
77
+ run: cp ./src/tests/settings.json settings.json
78
+ - name: Run the frontend tests
93
79
  shell: bash
94
- env:
95
- SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
96
- SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
97
- SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }}
98
- TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }}
99
- GIT_HASH: ${{ steps.environment.outputs.sha_short }}
100
80
  run: |
101
- src/tests/frontend/travis/runner.sh
81
+ pnpm run dev &
82
+ connected=false
83
+ can_connect() {
84
+ curl -sSfo /dev/null http://localhost:9001/ || return 1
85
+ connected=true
86
+ }
87
+ now() { date +%s; }
88
+ start=$(now)
89
+ while [ $(($(now) - $start)) -le 15 ] && ! can_connect; do
90
+ sleep 1
91
+ done
92
+ cd src
93
+ pnpm exec playwright install chromium --with-deps
94
+ pnpm run test-ui --project=chromium
@@ -4,90 +4,40 @@
4
4
  name: Node.js Package
5
5
 
6
6
  on:
7
- pull_request:
8
- push:
9
- branches:
10
- - main
11
- - master
7
+ workflow_call:
12
8
 
13
9
  jobs:
14
- test:
10
+ publish-npm:
15
11
  runs-on: ubuntu-latest
16
12
  steps:
17
- # Clone ether/etherpad-lite to ../etherpad-lite so that ep_etherpad-lite
18
- # can be "installed" in this plugin's node_modules. The checkout v2 action
19
- # doesn't support cloning outside of $GITHUB_WORKSPACE (see
20
- # https://github.com/actions/checkout/issues/197), so the repo is first
21
- # cloned to etherpad-lite then moved to ../etherpad-lite. To avoid
22
- # conflicts with this plugin's clone, etherpad-lite must be cloned and
23
- # moved out before this plugin's repo is cloned to $GITHUB_WORKSPACE.
24
- -
25
- uses: actions/checkout@v4
13
+ - uses: actions/setup-node@v4
14
+ with:
15
+ node-version: 20
16
+ registry-url: https://registry.npmjs.org/
17
+ - name: Check out Etherpad core
18
+ uses: actions/checkout@v3
26
19
  with:
27
20
  repository: ether/etherpad-lite
28
- path: etherpad-lite
29
- -
30
- run: mv etherpad-lite ..
31
- # etherpad-lite has been moved outside of $GITHUB_WORKSPACE, so it is now
32
- # safe to clone this plugin's repo to $GITHUB_WORKSPACE.
33
- -
34
- uses: actions/checkout@v4
35
- # This is necessary for actions/setup-node because '..' can't be used in
36
- # cache-dependency-path.
37
- -
38
- name: Create ep_etherpad-lite symlink
21
+ - uses: pnpm/action-setup@v3
22
+ name: Install pnpm
23
+ with:
24
+ version: 8
25
+ run_install: false
26
+ - name: Get pnpm store directory
27
+ shell: bash
39
28
  run: |
40
- mkdir -p node_modules
41
- ln -s ../../etherpad-lite/src node_modules/ep_etherpad-lite
42
- -
43
- uses: actions/setup-node@v4
29
+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
30
+ - uses: actions/cache@v4
31
+ name: Setup pnpm cache
44
32
  with:
45
- node-version: 20
46
- cache: 'npm'
47
- cache-dependency-path: |
48
- node_modules/ep_etherpad-lite/package-lock.json
49
- node_modules/ep_etherpad-lite/bin/doc/package-lock.json
50
- package-lock.json
51
- - run: npm install npm@6.14.18 -g
52
- name: Install legacy npm for correct dependency resolution
53
- # All of ep_etherpad-lite's devDependencies are installed because the
54
- # plugin might do `require('ep_etherpad-lite/node_modules/${devDep}')`.
55
- # Eventually it would be nice to create an ESLint plugin that prohibits
56
- # Etherpad plugins from piggybacking off of ep_etherpad-lite's
57
- # devDependencies. If we had that, we could change this line to only
58
- # install production dependencies.
59
- -
60
- run: cd ../etherpad-lite/src && npm ci
61
- -
62
- run: npm ci
63
- # This runs some sanity checks and creates a symlink at
64
- # node_modules/ep_etherpad-lite that points to ../../etherpad-lite/src.
65
- # This step must be done after `npm ci` installs the plugin's dependencies
66
- # because npm "helpfully" cleans up such symlinks. :( Installing
67
- # ep_etherpad-lite in the plugin's node_modules prevents lint errors and
68
- # unit test failures if the plugin does `require('ep_etherpad-lite/foo')`.
33
+ path: ${{ env.STORE_PATH }}
34
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
35
+ restore-keys: |
36
+ ${{ runner.os }}-pnpm-store-
69
37
  -
70
- run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src
71
- -
72
- run: npm test
73
- -
74
- run: npm run lint
75
-
76
- publish-npm:
77
- if: github.event_name == 'push'
78
- needs: test
79
- runs-on: ubuntu-latest
80
- steps:
81
- -
82
- uses: actions/checkout@v4
38
+ uses: actions/checkout@v3
83
39
  with:
84
40
  fetch-depth: 0
85
- -
86
- uses: actions/setup-node@v4
87
- with:
88
- node-version: 12
89
- registry-url: https://registry.npmjs.org/
90
- cache: 'npm'
91
41
  -
92
42
  name: Bump version (patch)
93
43
  run: |
@@ -96,13 +46,13 @@ jobs:
96
46
  [ "${NEW_COMMITS}" -gt 0 ] || exit 0
97
47
  git config user.name 'github-actions[bot]'
98
48
  git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
99
- npm ci
100
- npm version patch
49
+ pnpm i
50
+ pnpm version patch
101
51
  git push --follow-tags
102
52
  # This is required if the package has a prepare script that uses something
103
53
  # in dependencies or devDependencies.
104
54
  -
105
- run: npm ci
55
+ run: pnpm i
106
56
  # `npm publish` must come after `git push` otherwise there is a race
107
57
  # condition: If two PRs are merged back-to-back then master/main will be
108
58
  # updated with the commits from the second PR before the first PR's
@@ -114,11 +64,11 @@ jobs:
114
64
  # back-to-back merges will cause the first merge's workflow to fail but
115
65
  # the second's will succeed.
116
66
  -
117
- run: npm publish
118
- env:
119
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
120
- -
121
- name: Add package to etherpad organization
122
- run: npm access grant read-write etherpad:developers
67
+ run: pnpm publish
123
68
  env:
124
69
  NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
70
+ #-
71
+ # name: Add package to etherpad organization
72
+ # run: pnpm access grant read-write etherpad:developers
73
+ # env:
74
+ # NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
@@ -0,0 +1,18 @@
1
+ name: Node.js Package
2
+ on: [push]
3
+
4
+
5
+ jobs:
6
+ backend:
7
+ uses: ./.github/workflows/backend-tests.yml
8
+ secrets: inherit
9
+ frontend:
10
+ uses: ./.github/workflows/frontend-tests.yml
11
+ secrets: inherit
12
+ release:
13
+ if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
14
+ needs:
15
+ - backend
16
+ - frontend
17
+ uses: ./.github/workflows/npmpublish.yml
18
+ secrets: inherit
package/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "ep_table_of_contents",
3
- "version": "0.3.82",
3
+ "version": "0.3.84",
4
4
  "description": "View a table of contents for your pad",
5
5
  "author": {
6
6
  "name": "John McLear",
7
7
  "email": "john@mclear.co.uk",
8
8
  "url": "http://mclear.co.uk"
9
9
  },
10
- "peerDependencies": {
11
- "ep_etherpad-lite": ">=1.8.6"
12
- },
13
10
  "repository": {
14
11
  "type": "git",
15
12
  "url": "https://github.com/JohnMcLear/ep_table_of_contents.git"
@@ -29,15 +26,15 @@
29
26
  "url": "https://etherpad.org/"
30
27
  },
31
28
  "devDependencies": {
32
- "eslint": "^8.56.0",
33
- "eslint-config-etherpad": "^3.0.22",
34
- "typescript": "^4.9.5"
29
+ "eslint": "^8.57.0",
30
+ "eslint-config-etherpad": "^4.0.4",
31
+ "typescript": "^5.4.2"
32
+ },
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
35
  },
36
36
  "scripts": {
37
37
  "lint": "eslint .",
38
38
  "lint:fix": "eslint --fix ."
39
- },
40
- "engines": {
41
- "node": ">=12.17.0"
42
39
  }
43
- }
40
+ }