Skip to content

Commit f2c4bcc

Browse files
Merge branch 'develop' into ndarray-dnanmeanors
Signed-off-by: Neeraj Pathak <[email protected]>
2 parents bc629b6 + 836075d commit f2c4bcc

File tree

1,789 files changed

+67863
-7768
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,789 files changed

+67863
-7768
lines changed

.github/workflows/label_commands.yml

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
#/
2+
# @license Apache-2.0
3+
#
4+
# Copyright (c) 2024 The Stdlib Authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#/
18+
19+
# Workflow name:
20+
name: label_commands
21+
22+
# Workflow triggers:
23+
on:
24+
pull_request_target:
25+
types:
26+
- labeled
27+
28+
# Workflow jobs:
29+
jobs:
30+
31+
# Define a job for removing the label and adding in-progress label:
32+
manage_labels:
33+
34+
# Define a display name:
35+
name: 'Manage labels'
36+
37+
# Define the type of virtual host machine:
38+
runs-on: ubuntu-latest
39+
40+
# Define the conditions under which the job should run:
41+
if: |
42+
github.event.label.name == 'bot: Merge' ||
43+
github.event.label.name == 'bot: Rebase' ||
44+
github.event.label.name == 'bot: Check Files' ||
45+
github.event.label.name == 'bot: Lint Autofix' ||
46+
github.event.label.name == 'bot: Update Copyright Years'
47+
48+
# Define the job's steps:
49+
steps:
50+
51+
- name: 'Remove label'
52+
# Pin action to full length commit SHA
53+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
54+
with:
55+
github-token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
56+
script: |
57+
try {
58+
await github.rest.issues.removeLabel({
59+
'owner': context.repo.owner,
60+
'repo': context.repo.repo,
61+
'issue_number': context.issue.number,
62+
'name': '${{ github.event.label.name }}'
63+
})
64+
} catch ( error ) {
65+
console.log( 'Error removing label: %s', error.message );
66+
}
67+
68+
- name: 'Add in-progress label'
69+
# Pin action to full length commit SHA
70+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
71+
with:
72+
github-token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
73+
script: |
74+
github.rest.issues.addLabels({
75+
'owner': context.repo.owner,
76+
'repo': context.repo.repo,
77+
'issue_number': context.issue.number,
78+
'labels': ['bot: In Progress']
79+
})
80+
81+
# Add initial reaction to comment with slash command:
82+
- name: 'Add initial reaction'
83+
run: |
84+
curl -X POST \
85+
-H "Accept: application/vnd.github.v3+json" \
86+
-H "Authorization: Bearer ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}" \
87+
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/reactions" \
88+
-d '{"content":"eyes"}'
89+
90+
# Define a job for checking for required files:
91+
check_files:
92+
93+
# Define a display name:
94+
name: 'Check for required files'
95+
96+
# Ensure initial reaction job has completed before running this job:
97+
needs: [ manage_labels ]
98+
99+
# Define the conditions under which the job should run:
100+
if: |
101+
github.event.label.name == 'bot: Check Files'
102+
103+
# Run reusable workflow:
104+
uses: ./.github/workflows/check_required_files.yml
105+
with:
106+
pull_request_number: ${{ github.event.pull_request.number }}
107+
user: ${{ github.event.sender.login }}
108+
secrets:
109+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
110+
111+
# Define a job for updating copyright header years:
112+
update_copyright_years:
113+
114+
# Define a display name:
115+
name: 'Update copyright header years'
116+
117+
# Ensure initial reaction job has completed before running this job:
118+
needs: [ manage_labels ]
119+
120+
# Define the conditions under which the job should run:
121+
if: |
122+
github.event.label.name == 'bot: Update Copyright Years'
123+
124+
# Run reusable workflow:
125+
uses: ./.github/workflows/update_pr_copyright_years.yml
126+
with:
127+
pull_request_number: ${{ github.event.pull_request.number }}
128+
secrets:
129+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
130+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
131+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
132+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
133+
134+
# Define a job for auto-fixing lint errors:
135+
fix_lint_errors:
136+
137+
# Define a display name:
138+
name: 'Auto-fix lint errors'
139+
140+
# Ensure initial reaction job has completed before running this job:
141+
needs: [ manage_labels ]
142+
143+
# Define the conditions under which the job should run:
144+
if: |
145+
github.event.label.name == 'bot: Lint Autofix'
146+
147+
# Run reusable workflow:
148+
uses: ./.github/workflows/lint_autofix.yml
149+
with:
150+
pull_request_number: ${{ github.event.pull_request.number }}
151+
secrets:
152+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
153+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
154+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
155+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
156+
157+
# Define a job for merging develop branch:
158+
merge_develop:
159+
160+
# Define a display name:
161+
name: 'Merge changes from develop branch into this PR'
162+
163+
# Ensure initial reaction job has completed before running this job:
164+
needs: [ manage_labels ]
165+
166+
# Define the conditions under which the job should run:
167+
if: |
168+
github.event.label.name == 'bot: Merge'
169+
170+
# Run reusable workflow:
171+
uses: ./.github/workflows/pr_merge_develop.yml
172+
with:
173+
pull_request_number: ${{ github.event.pull_request.number }}
174+
secrets:
175+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
176+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
177+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
178+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
179+
180+
# Define a job for rebasing on develop branch:
181+
rebase_develop:
182+
183+
# Define a display name:
184+
name: 'Rebase this PR on top of develop branch'
185+
186+
# Ensure initial reaction job has completed before running this job:
187+
needs: [ manage_labels ]
188+
189+
# Define the conditions under which the job should run:
190+
if: |
191+
github.event.label.name == 'bot: Rebase'
192+
193+
# Run reusable workflow:
194+
uses: ./.github/workflows/pr_rebase_develop.yml
195+
with:
196+
pull_request_number: ${{ github.event.pull_request.number }}
197+
secrets:
198+
REPO_GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }}
199+
STDLIB_BOT_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
200+
STDLIB_BOT_GPG_PRIVATE_KEY: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
201+
STDLIB_BOT_GPG_PASSPHRASE: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
202+
203+
# Define a job for removing the in-progress label:
204+
remove_progress_label:
205+
206+
# Define a display name:
207+
name: 'Remove in-progress label'
208+
209+
# Define the type of virtual host machine:
210+
runs-on: ubuntu-latest
211+
212+
# Ensure all previous jobs have completed before running this job:
213+
needs: [ manage_labels, check_files, update_copyright_years, fix_lint_errors, merge_develop, rebase_develop ]
214+
215+
# Define the conditions under which the job should run:
216+
if: |
217+
github.event.label.name == 'bot: Merge' ||
218+
github.event.label.name == 'bot: Rebase' ||
219+
github.event.label.name == 'bot: Check Files' ||
220+
github.event.label.name == 'bot: Lint Autofix' ||
221+
github.event.label.name == 'bot: Update Copyright Years'
222+
223+
# Define the job's steps:
224+
steps:
225+
- name: Remove in-progress label
226+
# Run the step regardless of the outcome of previous steps:
227+
if: always()
228+
# Pin action to full length commit SHA
229+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
230+
with:
231+
github-token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
232+
script: |
233+
try {
234+
await github.rest.issues.removeLabel({
235+
'owner': context.repo.owner,
236+
'repo': context.repo.repo,
237+
'issue_number': context.issue.number,
238+
'name': 'bot: In Progress'
239+
})
240+
} catch ( error ) {
241+
console.log( 'Error removing label: %s', error.message );
242+
}

.github/workflows/labeler_needs_changes.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ jobs:
3333
# Define job name:
3434
name: 'Add "Needs Changes" Label when Reviewer Requests Changes'
3535

36-
# Only run this job if the reviewer requested changes:
37-
if: ${{ github.event.review.state == 'changes_requested' }}
36+
# Only run this job if the reviewer requested changes (but do not run on forks due to missing permissions):
37+
if: ${{ github.repository == 'stdlib-js/stdlib' && github.event.review.state == 'changes_requested' }}
3838

3939
# Define job permissions:
4040
permissions:

.github/workflows/run_tests_coverage.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,8 @@ jobs:
293293
git fetch origin $BRANCH_NAME || true
294294
git checkout $BRANCH_NAME || git checkout -b $BRANCH_NAME
295295
296-
# Remove all files from the branch:
297-
git rm -rf .
296+
# Remove all directories except .github and .git from branch:
297+
find . -mindepth 1 -maxdepth 1 -type d -not -name '.github' -not -name '.git' -exec git rm -rf {} +
298298
else
299299
BRANCH_NAME="main"
300300
fi
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#/
2+
# @license Apache-2.0
3+
#
4+
# Copyright (c) 2024 The Stdlib Authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#/
18+
19+
# Workflow name:
20+
name: test_published_package
21+
22+
# Workflow triggers:
23+
on:
24+
# Run workflow on a weekly schedule:
25+
schedule:
26+
- cron: '0 0 * * 0'
27+
28+
# Allow workflow to be manually run:
29+
workflow_dispatch:
30+
31+
# Workflow jobs:
32+
jobs:
33+
test-published:
34+
# Define a display name:
35+
name: 'Test running examples of published package'
36+
37+
# Define the type of virtual host machine:
38+
runs-on: ubuntu-latest
39+
40+
# Define environment variables:
41+
env:
42+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
43+
44+
# Define the job's steps:
45+
steps:
46+
# Checkout the repository:
47+
- name: 'Checkout repository'
48+
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
49+
50+
# Install Node.js:
51+
- name: 'Install Node.js'
52+
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
53+
with:
54+
node-version: 20
55+
timeout-minutes: 5
56+
57+
# Create test directory and run examples:
58+
- name: 'Create test directory and run examples'
59+
run: |
60+
cd ..
61+
mkdir test-published
62+
cd test-published
63+
64+
# Copy example file:
65+
cp $GITHUB_WORKSPACE/examples/index.js .
66+
67+
# Create a minimal package.json
68+
echo '{
69+
"name": "test-published",
70+
"version": "1.0.0",
71+
"main": "index.js",
72+
"dependencies": {}
73+
}' > package.json
74+
75+
# Get package name and modify example file:
76+
PACKAGE_NAME=$(jq -r '.name' $GITHUB_WORKSPACE/package.json)
77+
ESCAPED_PACKAGE_NAME=$(echo "$PACKAGE_NAME" | sed 's/[\/&]/\\&/g')
78+
79+
sed -i "s/require( '.\/..\/lib' )/require( '$ESCAPED_PACKAGE_NAME' )/g" index.js
80+
81+
# Extract and install dependencies:
82+
DEPS=$(grep -oP "require\(\s*'([^']+)'\s*\)" index.js | sed "s/require(\s*'//" | sed "s/'\s*)//" | grep -v "^\.")
83+
for dep in $DEPS; do
84+
npm install $dep --save
85+
done
86+
87+
# Run the example:
88+
node index.js
89+
90+
# Send Slack notification if job fails:
91+
- name: 'Send notification to Slack in case of failure'
92+
uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2
93+
with:
94+
status: ${{ job.status }}
95+
channel: '#npm-ci'
96+
if: failure()

.mailmap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ Pranav Goswami <[email protected]> Pranav
132132

133133
Pranjal Jha <[email protected]> PraneGIT
134134

135+
Prashant Kumar Yadav <[email protected]> JoyBoy
136+
135137
Pratik Singh <[email protected]> Pratik772846
136138

137139
Pratyush Kumar Chouhan <[email protected]> <[email protected]>

0 commit comments

Comments
 (0)