mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
Merge branch 'develop' into next
* develop: fix text-decoration for abstract attibutes ci(pr-labeler): add required `template` option ci(pr-labeler): replace TimonVS/pr-labeler-action style(pr-labeler): format .github/pr-labeler.yml docs(ci/pr-labeler): warn about security issues ci(release-draft): handle new release-drafter name ci(release-drafter): remove unused `branch` config ci(pr-labeler): limit GITHUB_TOKEN permissions ci(release-draft): limit GITHUB_TOKEN permissions
This commit is contained in:
commit
510549f365
26
.github/pr-labeler.yml
vendored
26
.github/pr-labeler.yml
vendored
@ -1,4 +1,22 @@
|
|||||||
'Type: Bug / Error': ['bug/*', fix/*]
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/release-drafter/release-drafter/master/schema.json
|
||||||
'Type: Enhancement': ['feature/*', 'feat/*']
|
autolabeler:
|
||||||
'Type: Other': ['other/*', 'chore/*', 'test/*', 'refactor/*']
|
- label: 'Type: Bug / Error'
|
||||||
'Area: Documentation': ['docs/*']
|
branch:
|
||||||
|
- '/bug\/.+/'
|
||||||
|
- '/fix\/.+/'
|
||||||
|
- label: 'Type: Enhancement'
|
||||||
|
branch:
|
||||||
|
- '/feature\/.+/'
|
||||||
|
- '/feat\/.+/'
|
||||||
|
- label: 'Type: Other'
|
||||||
|
branch:
|
||||||
|
- '/other\/.+/'
|
||||||
|
- '/chore\/.+/'
|
||||||
|
- '/test\/.+/'
|
||||||
|
- '/refactor\/.+/'
|
||||||
|
- label: 'Area: Documentation'
|
||||||
|
branch:
|
||||||
|
- '/docs\/.+/'
|
||||||
|
|
||||||
|
template: |
|
||||||
|
This field is unused, as we only use this config file for labeling PRs.
|
||||||
|
2
.github/release-drafter.yml
vendored
2
.github/release-drafter.yml
vendored
@ -25,8 +25,6 @@ categories:
|
|||||||
change-template: '- $TITLE (#$NUMBER) @$AUTHOR'
|
change-template: '- $TITLE (#$NUMBER) @$AUTHOR'
|
||||||
sort-by: title
|
sort-by: title
|
||||||
sort-direction: ascending
|
sort-direction: ascending
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
exclude-labels:
|
exclude-labels:
|
||||||
- 'Skip changelog'
|
- 'Skip changelog'
|
||||||
no-changes-template: 'This release contains minor changes and bugfixes.'
|
no-changes-template: 'This release contains minor changes and bugfixes.'
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
name: Validate PR Labeler Configuration
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- .github/workflows/pr-labeler-config-validator.yml
|
|
||||||
- .github/workflows/pr-labeler.yml
|
|
||||||
- .github/pr-labeler.yml
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- .github/workflows/pr-labeler-config-validator.yml
|
|
||||||
- .github/workflows/pr-labeler.yml
|
|
||||||
- .github/pr-labeler.yml
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
pr-labeler:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Validate Configuration
|
|
||||||
uses: Yash-Singh1/pr-labeler-config-validator@releases/v0.0.3
|
|
||||||
with:
|
|
||||||
configuration-path: .github/pr-labeler.yml
|
|
22
.github/workflows/pr-labeler.yml
vendored
22
.github/workflows/pr-labeler.yml
vendored
@ -1,13 +1,31 @@
|
|||||||
name: Apply labels to PR
|
name: Apply labels to PR
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened]
|
# required for pr-labeler to support PRs from forks
|
||||||
|
# ===================== ⛔ ☢️ 🚫 ⚠️ Warning ⚠️ 🚫 ☢️ ⛔ =======================
|
||||||
|
# Be very careful what you put in this GitHub Action workflow file to avoid
|
||||||
|
# malicious PRs from getting access to the Mermaid-js repo.
|
||||||
|
#
|
||||||
|
# Please read the following first before reviewing/merging:
|
||||||
|
# - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target
|
||||||
|
# - https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
|
||||||
|
types: [opened, reopened, synchronize]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pr-labeler:
|
pr-labeler:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read # read permission is required to read config file
|
||||||
|
pull-requests: write # write permission is required to label PRs
|
||||||
steps:
|
steps:
|
||||||
- name: Label PR
|
- name: Label PR
|
||||||
uses: TimonVS/pr-labeler-action@v4
|
uses: release-drafter/release-drafter@v5
|
||||||
|
with:
|
||||||
|
config-name: pr-labeler.yml
|
||||||
|
disable-autolabeler: false
|
||||||
|
disable-releaser: true
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
10
.github/workflows/release-draft.yml
vendored
10
.github/workflows/release-draft.yml
vendored
@ -5,11 +5,19 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- develop
|
- develop
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
draft-release:
|
draft-release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write # write permission is required to create a github release
|
||||||
|
pull-requests: read # required to read PR titles/labels
|
||||||
steps:
|
steps:
|
||||||
- name: Draft Release
|
- name: Draft Release
|
||||||
uses: toolmantim/release-drafter@v5
|
uses: release-drafter/release-drafter@v5
|
||||||
|
with:
|
||||||
|
disable-autolabeler: true
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -681,3 +681,82 @@ describe('given text representing a method, ', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('given text representing an attribute', () => {
|
||||||
|
describe('when the attribute has no modifiers', () => {
|
||||||
|
it('should parse the display text correctly', () => {
|
||||||
|
const str = 'name String';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the attribute has public "+" modifier', () => {
|
||||||
|
it('should parse the display text correctly', () => {
|
||||||
|
const str = '+name String';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('+name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the attribute has protected "#" modifier', () => {
|
||||||
|
it('should parse the display text correctly', () => {
|
||||||
|
const str = '#name String';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('#name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the attribute has private "-" modifier', () => {
|
||||||
|
it('should parse the display text correctly', () => {
|
||||||
|
const str = '-name String';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('-name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the attribute has internal "~" modifier', () => {
|
||||||
|
it('should parse the display text correctly', () => {
|
||||||
|
const str = '~name String';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('~name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the attribute has static "$" modifier', () => {
|
||||||
|
it('should parse the display text correctly and apply static css style', () => {
|
||||||
|
const str = 'name String$';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe(staticCssStyle);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the attribute has abstract "*" modifier', () => {
|
||||||
|
it('should parse the display text correctly and apply abstract css style', () => {
|
||||||
|
const str = 'name String*';
|
||||||
|
|
||||||
|
const displayDetails = new ClassMember(str, 'attribute').getDisplayDetails();
|
||||||
|
|
||||||
|
expect(displayDetails.displayText).toBe('name String');
|
||||||
|
expect(displayDetails.cssStyle).toBe(abstractCssStyle);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@ -106,7 +106,7 @@ export class ClassMember {
|
|||||||
this.visibility = firstChar as Visibility;
|
this.visibility = firstChar as Visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastChar.match(/[*?]/)) {
|
if (lastChar.match(/[$*]/)) {
|
||||||
potentialClassifier = lastChar;
|
potentialClassifier = lastChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user