66 Commits

Author SHA1 Message Date
Peter Evans
79b63455c0 docs: minor documentation updates
Some checks failed
Publish Docker Image / publish (push) Has been cancelled
2023-03-05 11:19:28 +09:00
Peter Evans
e139363f61 feat: convert relative urls to absolute (#125) (#126)
* feat: convert relative urls to absolute

* test: add tests for conversion of relative urls

Co-authored-by: Marty Winkler <mrtwnklr@users.noreply.github.com>
2023-03-05 11:13:27 +09:00
dependabot[bot]
bbef094b30 build(deps-dev): bump @typescript-eslint/parser from 5.52.0 to 5.53.0 (#124)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.52.0 to 5.53.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.53.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-26 14:59:18 +00:00
dependabot[bot]
21ccfa72b4 build(deps-dev): bump eslint from 8.34.0 to 8.35.0 (#123)
Bumps [eslint](https://github.com/eslint/eslint) from 8.34.0 to 8.35.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.34.0...v8.35.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-26 14:58:48 +00:00
dependabot[bot]
067627a8af build(deps-dev): bump eslint-plugin-github from 4.6.0 to 4.6.1 (#122)
Bumps [eslint-plugin-github](https://github.com/github/eslint-plugin-github) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/github/eslint-plugin-github/releases)
- [Commits](https://github.com/github/eslint-plugin-github/compare/v4.6.0...v4.6.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-github
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-19 14:59:15 +00:00
dependabot[bot]
d514e8a638 build(deps-dev): bump @typescript-eslint/parser from 5.51.0 to 5.52.0 (#121)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.51.0 to 5.52.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.52.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-19 14:58:57 +00:00
dependabot[bot]
d440d6b705 build(deps-dev): bump prettier from 2.8.3 to 2.8.4 (#118)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.3 to 2.8.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.3...2.8.4)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 15:00:03 +00:00
dependabot[bot]
ebb09a6e43 build(deps-dev): bump eslint from 8.33.0 to 8.34.0 (#117)
Bumps [eslint](https://github.com/eslint/eslint) from 8.33.0 to 8.34.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.33.0...v8.34.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 14:58:36 +00:00
dependabot[bot]
842061843e build(deps-dev): bump @typescript-eslint/parser from 5.50.0 to 5.51.0 (#116)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.50.0 to 5.51.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.51.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 14:58:16 +00:00
actions-bot
b360ab3b73 build: update distribution (#115) 2023-02-05 23:23:33 +09:00
dependabot[bot]
7ca13a4f6e build(deps-dev): bump @types/node from 16.18.11 to 16.18.12 (#112)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.18.11 to 16.18.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-05 14:06:50 +00:00
dependabot[bot]
d244f2b158 build(deps): bump node-fetch from 2.6.8 to 2.6.9 (#113)
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.8 to 2.6.9.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.8...v2.6.9)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-05 14:04:58 +00:00
dependabot[bot]
2c16b08205 build(deps-dev): bump @typescript-eslint/parser from 5.49.0 to 5.50.0 (#114)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.49.0 to 5.50.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.50.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-05 14:04:26 +00:00
dependabot[bot]
ebbe765cd1 build(deps-dev): bump typescript from 4.9.4 to 4.9.5 (#111)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.4 to 4.9.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.9.4...v4.9.5)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-05 14:03:16 +00:00
dependabot[bot]
20a27e1287 build(deps-dev): bump @vercel/ncc from 0.36.0 to 0.36.1 (#109)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.36.0 to 0.36.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.36.0...0.36.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-29 14:04:18 +00:00
dependabot[bot]
ffe399573c build(deps-dev): bump eslint from 8.32.0 to 8.33.0 (#108)
Bumps [eslint](https://github.com/eslint/eslint) from 8.32.0 to 8.33.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.32.0...v8.33.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-29 14:02:50 +00:00
dependabot[bot]
692ca5d836 build(deps-dev): bump @typescript-eslint/parser from 5.48.2 to 5.49.0 (#107)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.48.2 to 5.49.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.49.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-29 14:02:39 +00:00
dependabot[bot]
d560591414 build(deps-dev): bump @typescript-eslint/parser from 5.48.1 to 5.48.2 (#106)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.48.1 to 5.48.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.48.2/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-22 14:02:32 +00:00
actions-bot
4b6b64d89b build: update distribution (#105)
Co-authored-by: actions-bot <actions-bot@users.noreply.github.com>
2023-01-16 07:55:16 +09:00
dependabot[bot]
4e40b120de build(deps): bump node-fetch from 2.6.7 to 2.6.8 (#103)
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.7 to 2.6.8.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.7...v2.6.8)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-15 14:02:58 +00:00
dependabot[bot]
fcaa3f84b7 build(deps-dev): bump eslint from 8.31.0 to 8.32.0 (#104)
Bumps [eslint](https://github.com/eslint/eslint) from 8.31.0 to 8.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.31.0...v8.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-15 14:02:30 +00:00
dependabot[bot]
651109f8e8 build(deps-dev): bump prettier from 2.8.2 to 2.8.3 (#102)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.2 to 2.8.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.2...2.8.3)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-15 14:02:16 +00:00
dependabot[bot]
b02c8b39c6 build(deps-dev): bump @typescript-eslint/parser from 5.48.0 to 5.48.1 (#101)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.48.0 to 5.48.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.48.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-15 14:02:10 +00:00
dependabot[bot]
f0e52ee452 build(deps-dev): bump @typescript-eslint/parser from 5.46.0 to 5.48.0 (#100)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.46.0 to 5.48.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.48.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-08 23:51:10 +00:00
dependabot[bot]
f8648cb2f7 build(deps-dev): bump prettier from 2.8.1 to 2.8.2 (#99)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.1...2.8.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-08 23:50:11 +00:00
dependabot[bot]
81ec7f185c build(deps): bump json5 from 1.0.1 to 1.0.2 (#98)
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-08 23:48:37 +00:00
dependabot[bot]
723ac59666 build(deps-dev): bump jest from 27.4.3 to 27.5.1 (#93)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 27.4.3 to 27.5.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.5.1/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 01:58:09 +00:00
dependabot[bot]
841dc674ea build(deps-dev): bump eslint from 8.29.0 to 8.31.0 (#96)
Bumps [eslint](https://github.com/eslint/eslint) from 8.29.0 to 8.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.29.0...v8.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 01:56:25 +00:00
dependabot[bot]
bc803ce02a build(deps-dev): bump @types/node from 16.11.11 to 16.18.11 (#97)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.11.11 to 16.18.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 01:55:19 +00:00
dependabot[bot]
e35d4507cd build(deps-dev): bump eslint-plugin-jest from 25.3.0 to 25.7.0 (#95)
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 25.3.0 to 25.7.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v25.3.0...v25.7.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 01:54:58 +00:00
dependabot[bot]
c3668578c8 build(deps-dev): bump ts-jest from 27.0.7 to 27.1.5 (#94)
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 27.0.7 to 27.1.5.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v27.0.7...v27.1.5)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 01:54:46 +00:00
dependabot[bot]
dec2815534 build(deps-dev): bump jest-circus from 27.4.2 to 27.5.1 (#92)
Bumps [jest-circus](https://github.com/facebook/jest/tree/HEAD/packages/jest-circus) from 27.4.2 to 27.5.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.5.1/packages/jest-circus)

---
updated-dependencies:
- dependency-name: jest-circus
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 01:54:26 +00:00
Peter Evans
f2b6dec597 ci: update dependabot 2023-01-03 10:53:02 +09:00
Peter Evans
22519658ca ci: update dependabot.yml 2022-12-12 09:46:25 +09:00
Peter Evans
3901fb41b0 Merge pull request #87 from peter-evans/update-distribution
Update distribution
2022-12-09 16:27:52 +09:00
actions-bot
2956947109 build: update distribution 2022-12-09 07:26:20 +00:00
dependabot[bot]
4a7ad32d0a build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.46.0 (#85)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.5.0 to 5.46.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.46.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:25:21 +00:00
dependabot[bot]
1c79b7b870 build(deps-dev): bump eslint from 8.3.0 to 8.29.0 (#83)
Bumps [eslint](https://github.com/eslint/eslint) from 8.3.0 to 8.29.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.3.0...v8.29.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:23:37 +00:00
dependabot[bot]
f1bd7c2b9a build(deps-dev): bump eslint-plugin-github from 4.3.5 to 4.6.0 (#88)
Bumps [eslint-plugin-github](https://github.com/github/eslint-plugin-github) from 4.3.5 to 4.6.0.
- [Release notes](https://github.com/github/eslint-plugin-github/releases)
- [Commits](https://github.com/github/eslint-plugin-github/compare/v4.3.5...v4.6.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-github
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:21:21 +00:00
dependabot[bot]
bcd6cafa5b build(deps-dev): bump prettier from 2.5.0 to 2.8.1 (#82)
Bumps [prettier](https://github.com/prettier/prettier) from 2.5.0 to 2.8.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.5.0...2.8.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:20:40 +00:00
dependabot[bot]
a2a89a04dc build(deps): bump minimatch from 3.0.4 to 3.1.2 (#86)
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:20:17 +00:00
dependabot[bot]
a9d3672166 build(deps-dev): bump @vercel/ncc from 0.32.0 to 0.36.0 (#81)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.32.0 to 0.36.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.32.0...0.36.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:19:18 +00:00
dependabot[bot]
3bafe822d0 build(deps-dev): bump typescript from 4.5.2 to 4.9.4 (#80)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.5.2 to 4.9.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.5.2...v4.9.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 07:18:46 +00:00
Peter Evans
fd3ace2386 ci: update workflows 2022-12-09 16:16:59 +09:00
Peter Evans
c5d7e00b1e ci: update workflow 2022-12-09 16:04:11 +09:00
Peter Evans
93b93397c2 Merge pull request #79 from peter-evans/fix-tag-push
Some checks failed
Publish Docker Image / publish (push) Has been cancelled
fix: push all tags
2022-11-07 15:07:34 +09:00
Peter Evans
3103d1465d fix: push all tags 2022-11-07 15:06:08 +09:00
Peter Evans
0b9f9c4786 Merge pull request #76 from peter-evans/fix-any
fix: replace use of any type
2022-10-21 15:12:44 +09:00
Peter Evans
3b9f4f25f0 fix: replace use of any type 2022-10-21 15:10:59 +09:00
Peter Evans
1488116043 Merge pull request #75 from peter-evans/update-distribution
Some checks failed
Publish Docker Image / publish (push) Has been cancelled
Update distribution
2022-10-18 15:21:30 +09:00
peter-evans
4fd465609e build: update distribution 2022-10-18 06:21:05 +00:00
Peter Evans
9404f28f56 Merge pull request #74 from peter-evans/dependabot/npm_and_yarn/actions/core-1.10.0
build(deps): bump @actions/core from 1.9.1 to 1.10.0
2022-10-18 15:19:51 +09:00
dependabot[bot]
eef18f85b1 build(deps): bump @actions/core from 1.9.1 to 1.10.0
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 06:16:47 +00:00
Peter Evans
db792ed6c9 ci: update dependabot 2022-10-18 15:16:21 +09:00
Peter Evans
4fdf852815 docs: add funding 2022-08-26 10:41:06 +09:00
Peter Evans
bc97286b92 Merge pull request #73 from peter-evans/update-distribution
Update distribution
2022-08-19 11:59:20 +09:00
peter-evans
b2ff61bdb1 build: update distribution 2022-08-19 02:59:02 +00:00
Peter Evans
c908a72eaf Merge pull request #72 from peter-evans/dependabot/npm_and_yarn/actions/core-1.9.1
build(deps): bump @actions/core from 1.6.0 to 1.9.1
2022-08-19 11:57:49 +09:00
dependabot[bot]
2c9ccb12d6 build(deps): bump @actions/core from 1.6.0 to 1.9.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.6.0 to 1.9.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 02:56:43 +00:00
Peter Evans
27a09e0234 ci: add workflow permissions 2022-08-19 11:53:46 +09:00
Peter Evans
da890086d3 Merge pull request #71 from peter-evans/rm-byte-limit
Some checks failed
Publish Docker Image / publish (push) Has been cancelled
feat: remove error when content limit exceeded
2022-08-18 12:20:07 +09:00
Peter Evans
afa309ec72 feat: remove error when content limit exceeded 2022-08-18 12:17:06 +09:00
Peter Evans
22ceabb390 docs: add pat scope details 2022-07-21 14:26:40 +09:00
Peter Evans
5edfa5bd9e docs: update to reflect access tokens can be used 2022-07-19 15:46:44 +09:00
Peter Evans
1cf9afbac3 Merge pull request #65 from peter-evans/dependabot/github_actions/peter-evans/create-pull-request-4 2022-03-29 00:31:00 +09:00
dependabot[bot]
8a5577cb53 build(deps): bump peter-evans/create-pull-request from 3 to 4
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 3 to 4.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-28 14:26:09 +00:00
15 changed files with 5228 additions and 1946 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
github: peter-evans

View File

@@ -4,5 +4,18 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: "weekly" interval: "weekly"
day: "sunday"
labels: labels:
- "dependencies" - "dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "sunday"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
labels:
- "dependencies"

View File

@@ -0,0 +1,13 @@
name: Auto-merge Dependabot
on: pull_request
jobs:
automerge:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- uses: peter-evans/enable-pull-request-automerge@v2
with:
token: ${{ secrets.ACTIONS_BOT_TOKEN }}
pull-request-number: ${{ github.event.pull_request.number }}
merge-method: squash

View File

@@ -10,6 +10,11 @@ on:
paths-ignore: paths-ignore:
- 'README.md' - 'README.md'
- 'docs/**' - 'docs/**'
permissions:
pull-requests: write
contents: write
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -18,6 +23,7 @@ jobs:
- uses: actions/setup-node@v3 - uses: actions/setup-node@v3
with: with:
node-version: 16.x node-version: 16.x
cache: npm
- run: npm ci - run: npm ci
- run: npm run build - run: npm run build
- run: npm run format-check - run: npm run format-check
@@ -86,8 +92,9 @@ jobs:
name: dist name: dist
path: dist path: dist
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v3 uses: peter-evans/create-pull-request@v4
with: with:
token: ${{ secrets.ACTIONS_BOT_TOKEN }}
commit-message: 'build: update distribution' commit-message: 'build: update distribution'
title: Update distribution title: Update distribution
body: | body: |

View File

@@ -38,4 +38,4 @@ jobs:
MAJOR_VERSION=$(echo $VERSION | sed -n "s/^\([0-9]*\).[0-9]*.[0-9]*$/\1/p") MAJOR_VERSION=$(echo $VERSION | sed -n "s/^\([0-9]*\).[0-9]*.[0-9]*$/\1/p")
[[ ${#MAJOR_VERSION} -gt 0 ]] && docker tag $IMAGE_NAME $IMAGE_NAME:$MAJOR_VERSION [[ ${#MAJOR_VERSION} -gt 0 ]] && docker tag $IMAGE_NAME $IMAGE_NAME:$MAJOR_VERSION
docker push $IMAGE_NAME docker push $IMAGE_NAME --all-tags

View File

@@ -18,15 +18,20 @@ This is useful if you `docker push` your images to Docker Hub. It provides an ea
### Action inputs ### Action inputs
**Note**: Docker Hub [Personal Access Tokens](https://docs.docker.com/docker-hub/access-tokens/) cannot be used as they are not supported by the API. See [here](https://github.com/docker/hub-feedback/issues/1927) and [here](https://github.com/docker/hub-feedback/issues/1914) for further details. Unfortunately, this means that enabling 2FA on Docker Hub will prevent the action from working.
| Name | Description | Default | | Name | Description | Default |
| --- | --- | --- | | --- | --- | --- |
| `username` | (**required**) Docker Hub username. If updating a Docker Hub repository belonging to an organization, this user must have `Admin` permissions for the repository. | | | `username` | (**required**) Docker Hub username. If updating a Docker Hub repository belonging to an organization, this user must have `Admin` permissions for the repository. | |
| `password` | (**required**) Docker Hub password. | | | `password` | (**required**) Docker Hub password or [Personal Access Token](https://docs.docker.com/docker-hub/access-tokens/) with `read/write/delete` scope. | |
| `repository` | Docker Hub repository in the format `<namespace>/<name>`. | `github.repository` | | `repository` | Docker Hub repository in the format `<namespace>/<name>`. | `github.repository` |
| `short-description` | Docker Hub repository short description. Input exceeding 100 characters will be truncated. | | | `short-description` | Docker Hub repository short description. | |
| `readme-filepath` | Path to the repository readme. | `./README.md` | | `readme-filepath` | Path to the repository readme. | `./README.md` |
| `enable-url-completion` | Enables completion of relative URLs to absolute ones. See also [known Issues](#url-completion-known-issues). | `false` |
| `image-extensions` | File extensions that will be treated as images. | `bmp,gif,jpg,jpeg,png,svg,webp` |
#### Content limits
DockerHub has content limits, which if exceeded will result in the content being automatically truncated.
The readme content is limited to 25,000 bytes, and `short-description` is limited to 100 characters.
#### Specifying the file path #### Specifying the file path
@@ -83,6 +88,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_PASSWORD }} password: ${{ secrets.DOCKERHUB_PASSWORD }}
repository: peterevans/dockerhub-description repository: peterevans/dockerhub-description
short-description: ${{ github.event.repository.description }} short-description: ${{ github.event.repository.description }}
enable-url-completion: true
``` ```
Updates the Docker Hub repository description whenever a new release is created. Updates the Docker Hub repository description whenever a new release is created.
@@ -105,6 +111,38 @@ jobs:
short-description: ${{ github.event.repository.description }} short-description: ${{ github.event.repository.description }}
``` ```
### URL completion known Issues
The completion of relative URLs has some known issues:
1. Relative markdown links in inline-code and code blocks **are also converted**:
```markdown
[link in inline code](#table-of-content)
```
will be converted into
```markdown
[link in inline code](https://github.com/peter-evans/dockerhub-description/blob/main/./README.md#table-of-content)
```
2. Links containing square brackets (`]`) in the text fragment **are not converted**:
```markdown
[[link text with square brackets]](#table-of-content)
```
3. [Reference-style links/images](https://www.markdownguide.org/basic-syntax/#reference-style-links) **are not converted**.
```markdown
[table-of-content][toc]
...
[toc]: #table-of-content "Table of content"
```
## Using the Docker image independently of GitHub Actions ## Using the Docker image independently of GitHub Actions
The image can be executed in other environments independently of GitHub Actions. The image can be executed in other environments independently of GitHub Actions.

View File

@@ -0,0 +1,335 @@
import {completeRelativeUrls} from '../src/readme-helper'
describe('complete relative urls tests', () => {
const GITHUB_SERVER_URL = process.env['GITHUB_SERVER_URL']
const GITHUB_REPOSITORY = process.env['GITHUB_REPOSITORY']
const GITHUB_REF_NAME = process.env['GITHUB_REF_NAME']
const README_FILEPATH = './README.md'
const EXPECTED_REPOSITORY_URL = `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}`
const EXPECTED_BLOB_URL = `${EXPECTED_REPOSITORY_URL}/blob/${GITHUB_REF_NAME}`
const EXPECTED_RAW_URL = `${EXPECTED_REPOSITORY_URL}/raw/${GITHUB_REF_NAME}`
// known issues
test('reference-style links/image sources are not converted', async () => {
const content = [
'table-of-content][toc]',
'',
'[toc]: #table-of-content "Table of content"'
].join('\n')
expect(completeRelativeUrls(content, README_FILEPATH, true, '')).toEqual(
content
)
})
test('links containing square brackets in the text fragment are not converted', async () => {
expect(
completeRelativeUrls(
'[[text with square brackets]](README.md)',
README_FILEPATH,
true,
''
)
).toEqual('[[text with square brackets]](README.md)')
})
test('links containing square brackets in the text fragment are not converted', async () => {
expect(
completeRelativeUrls('`[text](README.md)`', README_FILEPATH, true, '')
).toEqual(`\`[text](${EXPECTED_BLOB_URL}/README.md)\``)
})
// misc
test('do not change content when disabled', async () => {
expect(
completeRelativeUrls('[text](README.md)', README_FILEPATH, false, '')
).toEqual('[text](README.md)')
})
test('do not change link with mailto protocol', async () => {
expect(
completeRelativeUrls(
'[text](mailto:mail@example.com)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](mailto:mail@example.com)`)
})
test('do not change link with ftp protocol', async () => {
expect(
completeRelativeUrls(
'[text](ftp://example.com)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](ftp://example.com)`)
})
test('do not change link with http protocol', async () => {
expect(
completeRelativeUrls(
'[text](http://example.com)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](http://example.com)`)
})
test('do not change link with https protocol', async () => {
expect(
completeRelativeUrls(
'[text](https://example.com)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](https://example.com)`)
})
test('do not change link with protocol-like beginning', async () => {
expect(
completeRelativeUrls(
'[text](abc://example.com)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](abc://example.com)`)
})
test('do not change image from absolute source with absolute link', async () => {
expect(
completeRelativeUrls(
'[![alttext](https://example.com/image.svg)](https://example.com/image.svg)',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext](https://example.com/image.svg)](https://example.com/image.svg)`
)
})
// anchors
test('anchor referencing the current document', async () => {
expect(
completeRelativeUrls(
'[text](#relative-anchor)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](${EXPECTED_BLOB_URL}/README.md#relative-anchor)`)
})
test('anchor referencing the current document with a title', async () => {
expect(
completeRelativeUrls(
'[text](#relative-anchor "the anchor (a title)")',
README_FILEPATH,
true,
''
)
).toEqual(
`[text](${EXPECTED_BLOB_URL}/README.md#relative-anchor "the anchor (a title)")`
)
})
test('anchor referencing the current document with a title and unicode', async () => {
expect(
completeRelativeUrls(
'[text with 🌬](#relative-anchor "the anchor (a title with 🌬)")',
README_FILEPATH,
true,
''
)
).toEqual(
`[text with 🌬](${EXPECTED_BLOB_URL}/README.md#relative-anchor "the anchor (a title with 🌬)")`
)
})
test('anchor referencing another document', async () => {
expect(
completeRelativeUrls(
'[text](OTHER.md#absolute-anchor)',
README_FILEPATH,
true,
''
)
).toEqual(`[text](${EXPECTED_BLOB_URL}/OTHER.md#absolute-anchor)`)
})
test('anchor referencing another document with a title', async () => {
expect(
completeRelativeUrls(
'[text](OTHER.md#absolute-anchor "the anchor (a title)")',
README_FILEPATH,
true,
''
)
).toEqual(
`[text](${EXPECTED_BLOB_URL}/OTHER.md#absolute-anchor "the anchor (a title)")`
)
})
test('anchor with image referencing the current document', async () => {
expect(
completeRelativeUrls(
'[![alttext](image.svg)](#absolute-anchor "the anchor (a title)")',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext](${EXPECTED_RAW_URL}/image.svg)](${EXPECTED_BLOB_URL}/README.md#absolute-anchor "the anchor (a title)")`
)
})
test('anchor with image referencing another document', async () => {
expect(
completeRelativeUrls(
'[![alttext](image.svg)](OTHER.md#absolute-anchor "the anchor (a title)")',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext](${EXPECTED_RAW_URL}/image.svg)](${EXPECTED_BLOB_URL}/OTHER.md#absolute-anchor "the anchor (a title)")`
)
})
// documents
test('text document', async () => {
expect(
completeRelativeUrls('[text](document.yaml)', README_FILEPATH, true, '')
).toEqual(`[text](${EXPECTED_BLOB_URL}/document.yaml)`)
})
test('pdf document', async () => {
expect(
completeRelativeUrls('[text](document.pdf)', README_FILEPATH, true, '')
).toEqual(`[text](${EXPECTED_BLOB_URL}/document.pdf)`)
})
test('document with a title', async () => {
expect(
completeRelativeUrls(
'[text](document.pdf "the document (a title)")',
README_FILEPATH,
true,
''
)
).toEqual(
`[text](${EXPECTED_BLOB_URL}/document.pdf "the document (a title)")`
)
})
test('document with a title and unicode', async () => {
expect(
completeRelativeUrls(
'[text with 🌬](document.pdf "the document (a title with 🌬)")',
README_FILEPATH,
true,
''
)
).toEqual(
`[text with 🌬](${EXPECTED_BLOB_URL}/document.pdf "the document (a title with 🌬)")`
)
})
// images
test('image with supported file extension', async () => {
expect(
completeRelativeUrls(
'![alttext](image.svg)',
README_FILEPATH,
true,
'svg'
)
).toEqual(`![alttext](${EXPECTED_RAW_URL}/image.svg)`)
})
test('image with unsupported file extension', async () => {
expect(
completeRelativeUrls(
'![alttext](image.svg)',
README_FILEPATH,
true,
'jpeg'
)
).toEqual(`![alttext](${EXPECTED_BLOB_URL}/image.svg)`)
})
test('image without alternate text', async () => {
expect(
completeRelativeUrls('![](image.svg)', README_FILEPATH, true, 'svg')
).toEqual(`![](${EXPECTED_RAW_URL}/image.svg)`)
})
test('image with a title', async () => {
expect(
completeRelativeUrls(
'![alttext](image.svg "the image (a title)")',
README_FILEPATH,
true,
'svg'
)
).toEqual(`![alttext](${EXPECTED_RAW_URL}/image.svg "the image (a title)")`)
})
test('image with relative link', async () => {
expect(
completeRelativeUrls(
'[![alttext](image.svg)](image.svg)',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext](${EXPECTED_RAW_URL}/image.svg)](${EXPECTED_BLOB_URL}/image.svg)`
)
})
test('image with a title, unicode and relative link', async () => {
expect(
completeRelativeUrls(
'[![alttext with 🌬](image.🌬.svg "the image.🌬.svg (a title)")](image.🌬.svg)',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext with 🌬](${EXPECTED_RAW_URL}/image.🌬.svg "the image.🌬.svg (a title)")](${EXPECTED_BLOB_URL}/image.🌬.svg)`
)
})
test('image from absolute source with relative link', async () => {
expect(
completeRelativeUrls(
'[![alttext](https://example.com/image.svg)](image.svg)',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext](https://example.com/image.svg)](${EXPECTED_BLOB_URL}/image.svg)`
)
})
test('image with absolute link', async () => {
expect(
completeRelativeUrls(
'[![alttext](image.svg)](https://example.com/image.svg)',
README_FILEPATH,
true,
'svg'
)
).toEqual(
`[![alttext](${EXPECTED_RAW_URL}/image.svg)](https://example.com/image.svg)`
)
})
})

View File

@@ -6,20 +6,26 @@ inputs:
description: Docker Hub username description: Docker Hub username
required: true required: true
password: password:
description: Docker Hub password description: Docker Hub password or Personal Access Token with read/write/delete scope
required: true required: true
repository: repository:
description: > description: >
Docker Hub repository in the format `<namespace>/<name>` Docker Hub repository in the format `<namespace>/<name>`
Default: `github.repository` Default: `github.repository`
short-description: short-description:
description: > description: Docker Hub repository short description
Docker Hub repository short description
Input exceeding 100 characters will be truncated
readme-filepath: readme-filepath:
description: > description: >
Path to the repository readme Path to the repository readme
Default: `./README.md` Default: `./README.md`
enable-url-completion:
description: >
Enables completion of relative URLs to absolute ones
Default: `false`
image-extensions:
description: >
File extensions that will be treated as images
Default: `bmp,gif,jpg,jpeg,png,svg,webp`
runs: runs:
using: 'node16' using: 'node16'
main: 'dist/index.js' main: 'dist/index.js'

2125
dist/index.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -9,3 +9,8 @@ module.exports = {
}, },
verbose: true verbose: true
} }
process.env = Object.assign(process.env, {
GITHUB_SERVER_URL: 'https://github.com',
GITHUB_REPOSITORY: 'peter-evans/dockerhub-description',
GITHUB_REF_NAME: 'main'
})

4351
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@
"format": "prettier --write '**/*.ts'", "format": "prettier --write '**/*.ts'",
"format-check": "prettier --check '**/*.ts'", "format-check": "prettier --check '**/*.ts'",
"lint": "eslint src/**/*.ts", "lint": "eslint src/**/*.ts",
"test": "jest --passWithNoTests" "test": "jest"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@@ -27,22 +27,22 @@
}, },
"homepage": "https://github.com/peter-evans/dockerhub-description#readme", "homepage": "https://github.com/peter-evans/dockerhub-description#readme",
"dependencies": { "dependencies": {
"@actions/core": "^1.6.0", "@actions/core": "^1.10.0",
"node-fetch": "^2.6.7" "node-fetch": "^2.6.9"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^27.0.3", "@types/jest": "^27.0.3",
"@types/node": "^16.11.11", "@types/node": "^16.18.12",
"@typescript-eslint/parser": "^5.5.0", "@typescript-eslint/parser": "^5.53.0",
"@vercel/ncc": "^0.32.0", "@vercel/ncc": "^0.36.1",
"eslint": "^8.3.0", "eslint": "^8.35.0",
"eslint-plugin-github": "^4.3.5", "eslint-plugin-github": "^4.6.1",
"eslint-plugin-jest": "^25.3.0", "eslint-plugin-jest": "^25.7.0",
"jest": "^27.4.3", "jest": "^27.5.1",
"jest-circus": "^27.4.2", "jest-circus": "^27.5.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"prettier": "^2.5.0", "prettier": "^2.8.4",
"ts-jest": "^27.0.7", "ts-jest": "^27.1.5",
"typescript": "^4.5.2" "typescript": "^4.9.5"
} }
} }

View File

@@ -1,6 +1,5 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import * as readmeHelper from './readme-helper'
const README_FILEPATH_DEFAULT = './README.md'
interface Inputs { interface Inputs {
username: string username: string
@@ -8,6 +7,8 @@ interface Inputs {
repository: string repository: string
shortDescription: string shortDescription: string
readmeFilepath: string readmeFilepath: string
enableUrlCompletion: boolean
imageExtensions: string
} }
export function getInputs(): Inputs { export function getInputs(): Inputs {
@@ -16,7 +17,9 @@ export function getInputs(): Inputs {
password: core.getInput('password'), password: core.getInput('password'),
repository: core.getInput('repository'), repository: core.getInput('repository'),
shortDescription: core.getInput('short-description'), shortDescription: core.getInput('short-description'),
readmeFilepath: core.getInput('readme-filepath') readmeFilepath: core.getInput('readme-filepath'),
enableUrlCompletion: Boolean(core.getInput('enable-url-completion')),
imageExtensions: core.getInput('image-extensions')
} }
// Environment variable input alternatives and their aliases // Environment variable input alternatives and their aliases
@@ -50,16 +53,31 @@ export function getInputs(): Inputs {
inputs.readmeFilepath = process.env['README_FILEPATH'] inputs.readmeFilepath = process.env['README_FILEPATH']
} }
if (!inputs.enableUrlCompletion && process.env['ENABLE_URL_COMPLETION']) {
inputs.enableUrlCompletion = Boolean(process.env['ENABLE_URL_COMPLETION'])
}
if (!inputs.imageExtensions && process.env['IMAGE_EXTENSIONS']) {
inputs.imageExtensions = process.env['IMAGE_EXTENSIONS']
}
// Set defaults // Set defaults
if (!inputs.readmeFilepath) { if (!inputs.readmeFilepath) {
inputs.readmeFilepath = README_FILEPATH_DEFAULT inputs.readmeFilepath = readmeHelper.README_FILEPATH_DEFAULT
}
if (!inputs.enableUrlCompletion) {
inputs.enableUrlCompletion = readmeHelper.ENABLE_URL_COMPLETION_DEFAULT
}
if (!inputs.imageExtensions) {
inputs.imageExtensions = readmeHelper.IMAGE_EXTENSIONS_DEFAULT
} }
if (!inputs.repository && process.env['GITHUB_REPOSITORY']) { if (!inputs.repository && process.env['GITHUB_REPOSITORY']) {
inputs.repository = process.env['GITHUB_REPOSITORY'] inputs.repository = process.env['GITHUB_REPOSITORY']
} }
// Docker repositories must be all lower case // Enforce lower case, where needed
inputs.repository = inputs.repository.toLowerCase() inputs.repository = inputs.repository.toLowerCase()
inputs.imageExtensions = inputs.imageExtensions.toLowerCase()
return inputs return inputs
} }

View File

@@ -1,10 +1,13 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import * as inputHelper from './input-helper' import * as inputHelper from './input-helper'
import * as dockerhubHelper from './dockerhub-helper' import * as dockerhubHelper from './dockerhub-helper'
import * as fs from 'fs' import * as readmeHelper from './readme-helper'
import {inspect, TextEncoder} from 'util' import {inspect} from 'util'
const MAX_BYTES = 25000 function getErrorMessage(error: unknown) {
if (error instanceof Error) return error.message
return String(error)
}
async function run(): Promise<void> { async function run(): Promise<void> {
try { try {
@@ -14,15 +17,13 @@ async function run(): Promise<void> {
inputHelper.validateInputs(inputs) inputHelper.validateInputs(inputs)
// Fetch the readme content // Fetch the readme content
const readmeContent = await fs.promises.readFile(inputs.readmeFilepath, { core.info('Reading description source file')
encoding: 'utf8' const readmeContent = await readmeHelper.getReadmeContent(
}) inputs.readmeFilepath,
const byteLength = new TextEncoder().encode(readmeContent).length inputs.enableUrlCompletion,
if (byteLength > MAX_BYTES) { inputs.imageExtensions
throw new Error( )
`File size exceeds the maximum allowed ${MAX_BYTES} bytes` core.debug(readmeContent)
)
}
// Acquire a token for the Docker Hub API // Acquire a token for the Docker Hub API
core.info('Acquiring token') core.info('Acquiring token')
@@ -39,9 +40,9 @@ async function run(): Promise<void> {
readmeContent readmeContent
) )
core.info('Request successful') core.info('Request successful')
} catch (error: any) { } catch (error) {
core.debug(inspect(error)) core.debug(inspect(error))
core.setFailed(error.message) core.setFailed(getErrorMessage(error))
} }
} }

175
src/readme-helper.ts Normal file
View File

@@ -0,0 +1,175 @@
import * as core from '@actions/core'
import * as fs from 'fs'
export const README_FILEPATH_DEFAULT = './README.md'
export const IMAGE_EXTENSIONS_DEFAULT = 'bmp,gif,jpg,jpeg,png,svg,webp'
export const ENABLE_URL_COMPLETION_DEFAULT = false
const TITLE_REGEX = `(?: +"[^"]+")?`
const REPOSITORY_URL = `${process.env['GITHUB_SERVER_URL']}/${process.env['GITHUB_REPOSITORY']}`
const BLOB_PREFIX = `${REPOSITORY_URL}/blob/${process.env['GITHUB_REF_NAME']}/`
const RAW_PREFIX = `${REPOSITORY_URL}/raw/${process.env['GITHUB_REF_NAME']}/`
type Rule = {
/**
* all left of the relative url belonging to the markdown image/link
*/
left: RegExp
/**
* relative url
*/
url: RegExp
/**
* part to prefix the relative url with (excluding github repository url)
*/
absUrlPrefix: string
}
export async function getReadmeContent(
readmeFilepath: string,
enableUrlCompletion: boolean,
imageExtensions: string
): Promise<string> {
// Fetch the readme content
let readmeContent = await fs.promises.readFile(readmeFilepath, {
encoding: 'utf8'
})
readmeContent = completeRelativeUrls(
readmeContent,
readmeFilepath,
enableUrlCompletion,
imageExtensions
)
return readmeContent
}
export function completeRelativeUrls(
readmeContent: string,
readmeFilepath: string,
enableUrlCompletion: boolean,
imageExtensions: string
): string {
if (enableUrlCompletion) {
readmeFilepath = readmeFilepath.replace(/^[.][/]/, '')
// Make relative urls absolute
const rules = [
...getRelativeReadmeAnchorsRules(readmeFilepath),
...getRelativeImageUrlRules(imageExtensions),
...getRelativeUrlRules()
]
readmeContent = applyRules(rules, readmeContent)
}
return readmeContent
}
function applyRules(rules: Rule[], readmeContent: string): string {
rules.forEach(rule => {
const combinedRegex = `${rule.left.source}[(]${rule.url.source}[)]`
core.debug(`rule: ${combinedRegex}`)
const replacement = `$<left>(${rule.absUrlPrefix}$<url>)`
core.debug(`replacement: ${replacement}`)
readmeContent = readmeContent.replace(
new RegExp(combinedRegex, 'giu'),
replacement
)
})
return readmeContent
}
// has to be applied first to avoid wrong results
function getRelativeReadmeAnchorsRules(readmeFilepath: string): Rule[] {
const prefix = `${BLOB_PREFIX}${readmeFilepath}`
// matches e.g.:
// #table-of-content
// #table-of-content "the anchor (a title)"
const url = new RegExp(`(?<url>#[^)]+${TITLE_REGEX})`)
const rules: Rule[] = [
// matches e.g.:
// [#table-of-content](#table-of-content)
// [#table-of-content](#table-of-content "the anchor (a title)")
{
left: /(?<left>\[[^\]]+\])/,
url: url,
absUrlPrefix: prefix
},
// matches e.g.:
// [![media/image.svg](media/image.svg)](#table-of-content)
// [![media/image.svg](media/image.svg "title a")](#table-of-content "title b")
{
left: /(?<left>\[!\[[^\]]*\]\([^)]+\)\])/,
url: url,
absUrlPrefix: prefix
}
]
return rules
}
function getRelativeImageUrlRules(imageExtensions: string): Rule[] {
const extensionsRegex = imageExtensions.replace(/,/g, '|')
// matches e.g.:
// media/image.svg
// media/image.svg "with title"
const url = new RegExp(
`(?<url>[^:)]+[.](?:${extensionsRegex})${TITLE_REGEX})`
)
const rules: Rule[] = [
// matches e.g.:
// ![media/image.svg](media/image.svg)
// ![media/image.svg](media/image.svg "with title")
{
left: /(?<left>!\[[^\]]*\])/,
url: url,
absUrlPrefix: RAW_PREFIX
}
]
return rules
}
function getRelativeUrlRules(): Rule[] {
// matches e.g.:
// .releaserc.yaml
// README.md#table-of-content "title b"
// .releaserc.yaml "the .releaserc.yaml file (a title)"
const url = new RegExp(`(?<url>[^:)]+${TITLE_REGEX})`)
const rules: Rule[] = [
// matches e.g.:
// [.releaserc.yaml](.releaserc.yaml)
// [.releaserc.yaml](.releaserc.yaml "the .releaserc.yaml file (a title)")
{
left: /(?<left>\[[^\]]+\])/,
url: url,
absUrlPrefix: BLOB_PREFIX
},
// matches e.g.:
// [![media/image.svg](media/image.svg)](media/image.svg)
// [![media/image.svg](media/image.svg)](README.md#table-of-content "title b")
// [![media/image.svg](media/image.svg "title a")](media/image.svg)
// [![media/image.svg](media/image.svg "title a")](media/image.svg "title b")
// [![media/image.svg](media/image.svg "title a")](README.md#table-of-content "title b")
{
left: new RegExp(
`(?<left>\\[!\\[[^\\]]*\\]\\([^)]+${TITLE_REGEX}\\)\\])`
),
url: url,
absUrlPrefix: BLOB_PREFIX
}
]
return rules
}