ep_post_data 0.1.16 → 0.1.19

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
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
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 }}
60
+ pnpm link --global
61
+ - name: Remove tests
62
+ working-directory: ./etherpad-lite
63
+ run: rm -rf ./src/tests/backend/specs
45
64
  -
46
- uses: actions/setup-node@v3
47
- with:
48
- node-version: 12
49
- cache: 'npm'
50
- cache-dependency-path: |
51
- src/package-lock.json
52
- src/bin/doc/package-lock.json
53
- node_modules/${{ steps.plugin_name.outputs.plugin_name }}/package-lock.json
54
- -
55
- name: Install plugin dependencies
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,44 +1,36 @@
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
+ test-frontend:
9
10
  runs-on: ubuntu-latest
10
11
 
11
12
  steps:
12
- -
13
- name: Fail if Dependabot
14
- if: github.actor == 'dependabot[bot]'
15
- run: |
16
- cat <<EOF >&2
17
- Frontend tests skipped because Dependabot can't access secrets.
18
- Manually re-run the jobs to run the frontend tests.
19
- For more information, see:
20
- https://github.blog/changelog/2021-02-19-github-actions-workflows-triggered-by-dependabot-prs-will-run-with-read-only-permissions/
21
- EOF
22
- exit 1
23
- -
24
- name: Generate Sauce Labs strings
25
- id: sauce_strings
26
- run: |
27
- printf %s\\n '::set-output name=name::${{github.event.repository.name}} ${{ github.workflow }} - ${{ github.job }}'
28
- printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}'
29
13
  -
30
14
  name: Check out Etherpad core
31
15
  uses: actions/checkout@v3
32
16
  with:
33
17
  repository: ether/etherpad-lite
34
- -
35
- uses: actions/setup-node@v3
18
+ - uses: pnpm/action-setup@v3
19
+ name: Install pnpm
20
+ with:
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
36
29
  with:
37
- node-version: 12
38
- cache: 'npm'
39
- cache-dependency-path: |
40
- src/package-lock.json
41
- src/bin/doc/package-lock.json
30
+ path: ${{ env.STORE_PATH }}
31
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
32
+ restore-keys: |
33
+ ${{ runner.os }}-pnpm-store-
42
34
  -
43
35
  name: Check out the plugin
44
36
  uses: actions/checkout@v3
@@ -68,7 +60,7 @@ jobs:
68
60
  PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
69
61
  run: |
70
62
  cd ./node_modules/"${PLUGIN_NAME}"
71
- npm ci
63
+ pnpm i
72
64
  # Etherpad core dependencies must be installed after installing the
73
65
  # plugin's dependencies, otherwise npm will try to hoist common
74
66
  # dependencies by removing them from src/node_modules and installing them
@@ -80,31 +72,23 @@ jobs:
80
72
  # rules.
81
73
  -
82
74
  name: Install Etherpad core dependencies
83
- run: src/bin/installDeps.sh
84
- -
85
- name: Create settings.json
86
- run: cp settings.json.template settings.json
87
- -
88
- name: Disable import/export rate limiting
89
- run: |
90
- sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json
91
- -
92
- name: Remove standard frontend test files
93
- run: rm -rf src/tests/frontend/specs
94
- -
95
- uses: saucelabs/sauce-connect-action@v2.1.1
96
- with:
97
- username: ${{ secrets.SAUCE_USERNAME }}
98
- accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}
99
- tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }}
100
- -
101
- 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
102
79
  shell: bash
103
- env:
104
- SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
105
- SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
106
- SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }}
107
- TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }}
108
- GIT_HASH: ${{ steps.environment.outputs.sha_short }}
109
80
  run: |
110
- 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,88 +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
- -
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
25
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@v3
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@v3
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: 12
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
- # All of ep_etherpad-lite's devDependencies are installed because the
52
- # plugin might do `require('ep_etherpad-lite/node_modules/${devDep}')`.
53
- # Eventually it would be nice to create an ESLint plugin that prohibits
54
- # Etherpad plugins from piggybacking off of ep_etherpad-lite's
55
- # devDependencies. If we had that, we could change this line to only
56
- # install production dependencies.
57
- -
58
- run: cd ../etherpad-lite/src && npm ci
59
- -
60
- run: npm ci
61
- # This runs some sanity checks and creates a symlink at
62
- # node_modules/ep_etherpad-lite that points to ../../etherpad-lite/src.
63
- # This step must be done after `npm ci` installs the plugin's dependencies
64
- # because npm "helpfully" cleans up such symlinks. :( Installing
65
- # ep_etherpad-lite in the plugin's node_modules prevents lint errors and
66
- # unit test failures if the plugin does `require('ep_etherpad-lite/foo')`.
67
- -
68
- run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src
69
- -
70
- run: npm test
71
- -
72
- run: npm run lint
73
-
74
- publish-npm:
75
- if: github.event_name == 'push'
76
- needs: test
77
- runs-on: ubuntu-latest
78
- steps:
33
+ path: ${{ env.STORE_PATH }}
34
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
35
+ restore-keys: |
36
+ ${{ runner.os }}-pnpm-store-
79
37
  -
80
38
  uses: actions/checkout@v3
81
39
  with:
82
40
  fetch-depth: 0
83
- -
84
- uses: actions/setup-node@v3
85
- with:
86
- node-version: 12
87
- registry-url: https://registry.npmjs.org/
88
- cache: 'npm'
89
41
  -
90
42
  name: Bump version (patch)
91
43
  run: |
@@ -94,13 +46,13 @@ jobs:
94
46
  [ "${NEW_COMMITS}" -gt 0 ] || exit 0
95
47
  git config user.name 'github-actions[bot]'
96
48
  git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
97
- npm ci
98
- npm version patch
49
+ pnpm i
50
+ pnpm version patch
99
51
  git push --follow-tags
100
52
  # This is required if the package has a prepare script that uses something
101
53
  # in dependencies or devDependencies.
102
54
  -
103
- run: npm ci
55
+ run: pnpm i
104
56
  # `npm publish` must come after `git push` otherwise there is a race
105
57
  # condition: If two PRs are merged back-to-back then master/main will be
106
58
  # updated with the commits from the second PR before the first PR's
@@ -112,11 +64,11 @@ jobs:
112
64
  # back-to-back merges will cause the first merge's workflow to fail but
113
65
  # the second's will succeed.
114
66
  -
115
- run: npm publish
116
- env:
117
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
118
- -
119
- name: Add package to etherpad organization
120
- run: npm access grant read-write etherpad:developers
67
+ run: pnpm publish
121
68
  env:
122
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,7 +1,7 @@
1
1
  {
2
2
  "name": "ep_post_data",
3
3
  "description": "Post data into Etherpad using Curl",
4
- "version": "0.1.16",
4
+ "version": "0.1.19",
5
5
  "author": "John McLear",
6
6
  "repository": "git@github.com:johnmclear/ep_post_data.git",
7
7
  "contributors": [
@@ -13,22 +13,19 @@
13
13
  ],
14
14
  "dependencies": {},
15
15
  "engines": {
16
- "node": ">=12.17.0"
16
+ "node": ">=18.0.0"
17
17
  },
18
18
  "funding": {
19
19
  "type": "individual",
20
20
  "url": "https://etherpad.org/"
21
21
  },
22
22
  "devDependencies": {
23
- "eslint": "^8.10.0",
24
- "eslint-config-etherpad": "^3.0.4",
25
- "typescript": "^4.6.2"
23
+ "eslint": "^8.57.0",
24
+ "eslint-config-etherpad": "^4.0.4",
25
+ "typescript": "^5.4.2"
26
26
  },
27
27
  "scripts": {
28
28
  "lint": "eslint .",
29
29
  "lint:fix": "eslint --fix ."
30
- },
31
- "peerDependencies": {
32
- "ep_etherpad-lite": ">=1.8.6"
33
30
  }
34
- }
31
+ }