@networkpro/blog 1.2.8 → 1.3.5
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.
- package/.browserslistrc +12 -0
- package/.editorconfig +60 -0
- package/.gitattributes +199 -0
- package/.github/COMMIT_GUIDE.md +34 -0
- package/.github/ISSUE_TEMPLATE/config.yml +31 -0
- package/.github/workflows/auto-assign.yml +34 -0
- package/.github/workflows/backup-branch.yml +40 -0
- package/.github/workflows/build-and-deploy.yml +85 -0
- package/.github/workflows/check-codeql.yml +40 -0
- package/.github/workflows/dependency-review.yml +21 -0
- package/.github/workflows/publish-test.yml +154 -0
- package/.github/workflows/publish.yml +209 -0
- package/.markdownlint.mjs +32 -0
- package/.md-smart-quotes.js +31 -0
- package/.prettierignore +38 -0
- package/.prettierrc +29 -0
- package/.stylelintignore +34 -0
- package/.vscode/customData.json +69 -0
- package/.vscode/settings.json +40 -0
- package/CHANGELOG.md +105 -1
- package/assets/.gitkeep +0 -0
- package/package.json +1 -1
- package/src/.authors.yml +11 -0
- package/src/posts/drafts/.meta.yml +1 -0
package/.browserslistrc
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# .browserslistrc
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
|
+
# This file is part of Network Pro.
|
|
5
|
+
#
|
|
6
|
+
# Supported browsers
|
|
7
|
+
|
|
8
|
+
defaults and fully supports es6-module
|
|
9
|
+
maintained node versions
|
|
10
|
+
last 2 node major versions
|
|
11
|
+
last 2 versions
|
|
12
|
+
not dead
|
package/.editorconfig
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# .editorconfig
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
|
+
# This file is part of Network Pro.
|
|
5
|
+
#
|
|
6
|
+
# EditorConfig helps developers define and maintain consistent
|
|
7
|
+
# coding styles between different editors and IDEs
|
|
8
|
+
# See http://editorconfig.org/ for full details
|
|
9
|
+
|
|
10
|
+
; top-most EditorConfig file
|
|
11
|
+
root = true
|
|
12
|
+
|
|
13
|
+
; define basic and global for any file
|
|
14
|
+
[*]
|
|
15
|
+
charset = utf-8
|
|
16
|
+
end_of_line = lf
|
|
17
|
+
indent_size = 2
|
|
18
|
+
indent_style = space
|
|
19
|
+
max_line_length = 80
|
|
20
|
+
insert_final_newline = true
|
|
21
|
+
trim_trailing_whitespace = true
|
|
22
|
+
|
|
23
|
+
; DOS/Windows batch scripts -
|
|
24
|
+
[*.{bat,cmd}]
|
|
25
|
+
end_of_line = crlf
|
|
26
|
+
|
|
27
|
+
; Cascading Stylesheets -
|
|
28
|
+
[*.css]
|
|
29
|
+
indent_size = 2
|
|
30
|
+
|
|
31
|
+
; HTML files -
|
|
32
|
+
[*.{html,htm}]
|
|
33
|
+
indent_size = 2
|
|
34
|
+
|
|
35
|
+
; JavaScript files -
|
|
36
|
+
[*.{mjs,js,ts}]
|
|
37
|
+
curly_bracket_next_line = true
|
|
38
|
+
quote_type = single
|
|
39
|
+
|
|
40
|
+
; JSON files (normal and commented version) -
|
|
41
|
+
[*.{json,jsonc}]
|
|
42
|
+
indent_size = 2
|
|
43
|
+
quote_type = double
|
|
44
|
+
|
|
45
|
+
; Make - match it own default syntax
|
|
46
|
+
[Makefile]
|
|
47
|
+
indent_style = tab
|
|
48
|
+
|
|
49
|
+
; Markdown files - preserve trail spaces that means break line
|
|
50
|
+
[*.{md,markdown}]
|
|
51
|
+
trim_trailing_whitespace = false
|
|
52
|
+
|
|
53
|
+
; PowerShell - match defaults for New-ModuleManifest and PSScriptAnalyzer Invoke-Formatter
|
|
54
|
+
[*.{ps1,psd1,psm1}]
|
|
55
|
+
charset = utf-8-bom
|
|
56
|
+
end_of_line = crlf
|
|
57
|
+
|
|
58
|
+
; YML config files - match it own default syntax
|
|
59
|
+
[*.{yaml,yml}]
|
|
60
|
+
indent_size = 2
|
package/.gitattributes
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# .gitattributes
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
|
+
# This file is part of Network Pro.
|
|
5
|
+
#
|
|
6
|
+
## GITATTRIBUTES FOR WEB PROJECTS
|
|
7
|
+
#
|
|
8
|
+
# These settings are for any web project.
|
|
9
|
+
#
|
|
10
|
+
# Details per file setting:
|
|
11
|
+
# text These files should be normalized (i.e. convert CRLF to LF).
|
|
12
|
+
# binary These files are binary and should be left untouched.
|
|
13
|
+
#
|
|
14
|
+
# Note that binary is a macro for -text -diff.
|
|
15
|
+
######################################################################
|
|
16
|
+
|
|
17
|
+
## AUTO-DETECT
|
|
18
|
+
## Handle line endings automatically for files detected as
|
|
19
|
+
## text and leave all files detected as binary untouched.
|
|
20
|
+
## This will handle all files NOT defined below.
|
|
21
|
+
* text=auto
|
|
22
|
+
|
|
23
|
+
## SOURCE CODE
|
|
24
|
+
*.bat text eol=crlf
|
|
25
|
+
*.coffee text
|
|
26
|
+
*.css text
|
|
27
|
+
*.htm text
|
|
28
|
+
*.html text
|
|
29
|
+
*.inc text
|
|
30
|
+
*.ini text
|
|
31
|
+
*.js text
|
|
32
|
+
*.json text
|
|
33
|
+
*.jsx text
|
|
34
|
+
*.less text
|
|
35
|
+
*.od text
|
|
36
|
+
*.onlydata text
|
|
37
|
+
*.php text
|
|
38
|
+
*.pl text
|
|
39
|
+
*.py text
|
|
40
|
+
*.rb text
|
|
41
|
+
*.sass text
|
|
42
|
+
*.scm text
|
|
43
|
+
*.scss text
|
|
44
|
+
*.sh text eol=lf
|
|
45
|
+
*.sql text
|
|
46
|
+
*.styl text
|
|
47
|
+
*.tag text
|
|
48
|
+
*.ts text
|
|
49
|
+
*.tsx text
|
|
50
|
+
*.xml text
|
|
51
|
+
*.xhtml text
|
|
52
|
+
|
|
53
|
+
## DOCKER
|
|
54
|
+
*.dockerignore text
|
|
55
|
+
Dockerfile text
|
|
56
|
+
|
|
57
|
+
## DOCUMENTATION
|
|
58
|
+
*.markdown text
|
|
59
|
+
*.md text
|
|
60
|
+
*.mdwn text
|
|
61
|
+
*.mdown text
|
|
62
|
+
*.mkd text
|
|
63
|
+
*.mkdn text
|
|
64
|
+
*.mdtxt text
|
|
65
|
+
*.mdtext text
|
|
66
|
+
*.txt text
|
|
67
|
+
AUTHORS text
|
|
68
|
+
CHANGELOG text
|
|
69
|
+
CHANGES text
|
|
70
|
+
CONTRIBUTING text
|
|
71
|
+
COPYING text
|
|
72
|
+
copyright text
|
|
73
|
+
*COPYRIGHT* text
|
|
74
|
+
INSTALL text
|
|
75
|
+
license text
|
|
76
|
+
LICENSE text
|
|
77
|
+
NEWS text
|
|
78
|
+
readme text
|
|
79
|
+
*README* text
|
|
80
|
+
TODO text
|
|
81
|
+
|
|
82
|
+
## TEMPLATES
|
|
83
|
+
*.dot text
|
|
84
|
+
*.ejs text
|
|
85
|
+
*.haml text
|
|
86
|
+
*.handlebars text
|
|
87
|
+
*.hbs text
|
|
88
|
+
*.hbt text
|
|
89
|
+
*.jade text
|
|
90
|
+
*.latte text
|
|
91
|
+
*.mustache text
|
|
92
|
+
*.njk text
|
|
93
|
+
*.phtml text
|
|
94
|
+
*.tmpl text
|
|
95
|
+
*.tpl text
|
|
96
|
+
*.twig text
|
|
97
|
+
|
|
98
|
+
## LINTERS
|
|
99
|
+
.babelrc text
|
|
100
|
+
.csslintrc text
|
|
101
|
+
.eslintrc text
|
|
102
|
+
.htmlhintrc text
|
|
103
|
+
.jscsrc text
|
|
104
|
+
.jshintrc text
|
|
105
|
+
.jshintignore text
|
|
106
|
+
.prettierrc text
|
|
107
|
+
.stylelintrc text
|
|
108
|
+
|
|
109
|
+
## CONFIGS
|
|
110
|
+
*.bowerrc text
|
|
111
|
+
*.cnf text
|
|
112
|
+
*.conf text
|
|
113
|
+
*.config text
|
|
114
|
+
.browserslistrc text
|
|
115
|
+
.editorconfig text
|
|
116
|
+
.gitattributes text
|
|
117
|
+
.gitconfig text
|
|
118
|
+
.gitignore text
|
|
119
|
+
.htaccess text
|
|
120
|
+
*.npmignore text
|
|
121
|
+
*.yaml text
|
|
122
|
+
*.yml text
|
|
123
|
+
browserslist text
|
|
124
|
+
Makefile text
|
|
125
|
+
makefile text
|
|
126
|
+
|
|
127
|
+
## HEROKU
|
|
128
|
+
Procfile text
|
|
129
|
+
.slugignore text
|
|
130
|
+
|
|
131
|
+
## GRAPHICS
|
|
132
|
+
*.ai binary
|
|
133
|
+
*.bmp binary
|
|
134
|
+
*.eps binary
|
|
135
|
+
*.gif binary
|
|
136
|
+
*.ico binary
|
|
137
|
+
*.jng binary
|
|
138
|
+
*.jp2 binary
|
|
139
|
+
*.jpg binary
|
|
140
|
+
*.jpeg binary
|
|
141
|
+
*.jpx binary
|
|
142
|
+
*.jxr binary
|
|
143
|
+
*.pdf binary
|
|
144
|
+
*.png binary
|
|
145
|
+
*.psb binary
|
|
146
|
+
*.psd binary
|
|
147
|
+
*.svg text
|
|
148
|
+
*.svgz binary
|
|
149
|
+
*.tif binary
|
|
150
|
+
*.tiff binary
|
|
151
|
+
*.wbmp binary
|
|
152
|
+
*.webp binary
|
|
153
|
+
|
|
154
|
+
## AUDIO
|
|
155
|
+
*.kar binary
|
|
156
|
+
*.m4a binary
|
|
157
|
+
*.mid binary
|
|
158
|
+
*.midi binary
|
|
159
|
+
*.mp3 binary
|
|
160
|
+
*.ogg binary
|
|
161
|
+
*.ra binary
|
|
162
|
+
|
|
163
|
+
## VIDEO
|
|
164
|
+
*.3gpp binary
|
|
165
|
+
*.3gp binary
|
|
166
|
+
*.as binary
|
|
167
|
+
*.asf binary
|
|
168
|
+
*.asx binary
|
|
169
|
+
*.fla binary
|
|
170
|
+
*.flv binary
|
|
171
|
+
*.m4v binary
|
|
172
|
+
*.mng binary
|
|
173
|
+
*.mov binary
|
|
174
|
+
*.mp4 binary
|
|
175
|
+
*.mpeg binary
|
|
176
|
+
*.mpg binary
|
|
177
|
+
*.ogv binary
|
|
178
|
+
*.swc binary
|
|
179
|
+
*.swf binary
|
|
180
|
+
*.webm binary
|
|
181
|
+
|
|
182
|
+
## ARCHIVES
|
|
183
|
+
*.7z binary
|
|
184
|
+
*.gz binary
|
|
185
|
+
*.jar binary
|
|
186
|
+
*.rar binary
|
|
187
|
+
*.tar binary
|
|
188
|
+
*.zip binary
|
|
189
|
+
|
|
190
|
+
## FONTS
|
|
191
|
+
*.ttf binary
|
|
192
|
+
*.eot binary
|
|
193
|
+
*.otf binary
|
|
194
|
+
*.woff binary
|
|
195
|
+
*.woff2 binary
|
|
196
|
+
|
|
197
|
+
## EXECUTABLES
|
|
198
|
+
*.exe binary
|
|
199
|
+
*.pyc binary
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Commit Message Guide
|
|
2
|
+
|
|
3
|
+
To maintain clarity and consistency, use one of the following commit types when
|
|
4
|
+
writing messages. Keep them short and focused — the `CHANGELOG.md` remains the
|
|
5
|
+
source of truth for full details.
|
|
6
|
+
|
|
7
|
+
## Commit Types
|
|
8
|
+
|
|
9
|
+
| Type | Description |
|
|
10
|
+
| ----------- | ------------------------------------------------------------ |
|
|
11
|
+
| `feat:` | A new feature or enhancement |
|
|
12
|
+
| `fix:` | A bug fix |
|
|
13
|
+
| `chore:` | Tooling, build scripts, release prep, or other meta changes |
|
|
14
|
+
| `docs:` | Documentation-only changes |
|
|
15
|
+
| `style:` | Formatting or stylistic changes that don't affect behavior |
|
|
16
|
+
| `refactor:` | Code changes that restructure without changing functionality |
|
|
17
|
+
| `test:` | Adding or updating tests |
|
|
18
|
+
|
|
19
|
+
## Examples
|
|
20
|
+
|
|
21
|
+
- `feat: add cryptomator entry to FOSS spotlight`
|
|
22
|
+
- `fix: correct author metadata in app.html`
|
|
23
|
+
- `chore: prepare v1.13.8 release`
|
|
24
|
+
- `docs: update changelog for v1.13.8`
|
|
25
|
+
- `style: clean up indentation in layout.svelte`
|
|
26
|
+
- `refactor: split utility functions from helpers.js`
|
|
27
|
+
- `test: add unit tests for buildPath util`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
Stick to one type per commit when possible. For mixed changes, pick the most
|
|
32
|
+
meaningful one.
|
|
33
|
+
|
|
34
|
+
Consistency helps, but don’t overthink it — use what makes sense.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
2
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
3
|
+
# This file is part of Network Pro
|
|
4
|
+
|
|
5
|
+
blank_issues_enabled: true
|
|
6
|
+
contact_links:
|
|
7
|
+
- name: 🐛 File a Bug Report
|
|
8
|
+
url: https://github.com/netwk-pro/netwk-pro.github.io/issues/new?template=bug_report.yml
|
|
9
|
+
about: Please open all bug reports in the main repository.
|
|
10
|
+
|
|
11
|
+
- name: ✨ Feature Request
|
|
12
|
+
url: https://github.com/netwk-pro/netwk-pro.github.io/issues/new?template=feature_request.yml
|
|
13
|
+
about: Suggest new or updated features in the main repository.
|
|
14
|
+
|
|
15
|
+
- name: ⚖️ Legal or Compliance Issue
|
|
16
|
+
url: https://github.com/netwk-pro/netwk-pro.github.io/issues/new?template=legal_review.yml
|
|
17
|
+
about: Raise legal or policy-related issues centrally.
|
|
18
|
+
|
|
19
|
+
- name: Ask the Community
|
|
20
|
+
url: https://discuss.neteng.pro
|
|
21
|
+
about: Join the GitHub Discussions forum to get support from the community.
|
|
22
|
+
|
|
23
|
+
- name: Stack Overflow (Internal Team)
|
|
24
|
+
url: https://stack.neteng.pro
|
|
25
|
+
about:
|
|
26
|
+
Search or post questions in our internal Stack Overflow for Teams
|
|
27
|
+
instance.
|
|
28
|
+
|
|
29
|
+
- name: Contact Network Pro
|
|
30
|
+
url: https://netwk.pro/contact?utm_source=github
|
|
31
|
+
about: Contact us directly for help or private inquiries.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# .github/workflows/auto-assign.yml
|
|
2
|
+
#
|
|
3
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
4
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
# This file is part of Network Pro
|
|
6
|
+
#
|
|
7
|
+
# This workflow will auto-assign an issue or PR to a specific user
|
|
8
|
+
# when a new issue or PR is opened.
|
|
9
|
+
|
|
10
|
+
name: Auto Assign
|
|
11
|
+
|
|
12
|
+
on:
|
|
13
|
+
issues:
|
|
14
|
+
types: [opened]
|
|
15
|
+
pull_request:
|
|
16
|
+
types: [opened, edited, synchronize, reopened]
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
issues: write
|
|
20
|
+
contents: read
|
|
21
|
+
pull-requests: write
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
auto-assign:
|
|
25
|
+
runs-on: ubuntu-24.04
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- name: 'Auto-assign issue or PR'
|
|
29
|
+
uses: pozil/auto-assign-issue@v2
|
|
30
|
+
with:
|
|
31
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
32
|
+
assignees: SunDevil311
|
|
33
|
+
numOfAssignee: 1
|
|
34
|
+
allowSelfAssign: true
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# .github/workflows/backup-branch.yml
|
|
2
|
+
#
|
|
3
|
+
# Syncs backup/nightly-snapshot branch with master every day at 10:00 UTC.
|
|
4
|
+
# Only triggers on the default branch and not on PRs
|
|
5
|
+
#
|
|
6
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
7
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
8
|
+
# This file is part of Network Pro
|
|
9
|
+
|
|
10
|
+
name: Nightly Backup Branch Sync
|
|
11
|
+
|
|
12
|
+
on:
|
|
13
|
+
schedule:
|
|
14
|
+
- cron: '0 11 * * *' # Every day at 11:00 AM UTC (4:00 AM MST)
|
|
15
|
+
workflow_dispatch: # Allow manual triggering too
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: write
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
sync-backup:
|
|
22
|
+
name: Sync backup/nightly-snapshot to master
|
|
23
|
+
runs-on: ubuntu-24.04
|
|
24
|
+
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
|
|
25
|
+
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout master branch
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
ref: master
|
|
31
|
+
fetch-depth: 0 # Required to push to another branch
|
|
32
|
+
|
|
33
|
+
- name: Set up Git
|
|
34
|
+
run: |
|
|
35
|
+
git config user.name "SunDevil311"
|
|
36
|
+
git config user.email "github@sl.neteng.cc"
|
|
37
|
+
|
|
38
|
+
- name: Force-push to backup/nightly-snapshot
|
|
39
|
+
run: |
|
|
40
|
+
git push --force origin HEAD:refs/heads/backup/nightly-snapshot
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# .github/workflows/build-and-deploy.yml
|
|
2
|
+
#
|
|
3
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
4
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
# This file is part of Network Pro
|
|
6
|
+
|
|
7
|
+
name: Build Site and Deploy to GH Pages
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
release:
|
|
11
|
+
types: [created]
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
15
|
+
permissions:
|
|
16
|
+
actions: read
|
|
17
|
+
contents: read
|
|
18
|
+
pages: write
|
|
19
|
+
id-token: write
|
|
20
|
+
|
|
21
|
+
# Allow one concurrent deployment
|
|
22
|
+
concurrency:
|
|
23
|
+
group: 'pages'
|
|
24
|
+
cancel-in-progress: true
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
check-codeql:
|
|
28
|
+
uses: ./.github/workflows/check-codeql.yml
|
|
29
|
+
|
|
30
|
+
build:
|
|
31
|
+
needs: check-codeql
|
|
32
|
+
runs-on: ubuntu-24.04
|
|
33
|
+
|
|
34
|
+
steps:
|
|
35
|
+
- name: Checkout repository
|
|
36
|
+
uses: actions/checkout@v4
|
|
37
|
+
with:
|
|
38
|
+
fetch-depth: 0
|
|
39
|
+
|
|
40
|
+
- name: Set up Node.js
|
|
41
|
+
uses: actions/setup-node@v4
|
|
42
|
+
with:
|
|
43
|
+
node-version: lts/*
|
|
44
|
+
check-latest: true
|
|
45
|
+
cache: npm
|
|
46
|
+
cache-dependency-path: package-lock.json
|
|
47
|
+
|
|
48
|
+
- name: Set up Pages
|
|
49
|
+
uses: actions/configure-pages@v5
|
|
50
|
+
|
|
51
|
+
- name: Install Node.js dependencies
|
|
52
|
+
run: npm ci
|
|
53
|
+
|
|
54
|
+
# Begin Material for MkDocs setup
|
|
55
|
+
- name: Set up Python
|
|
56
|
+
uses: actions/setup-python@v5
|
|
57
|
+
with:
|
|
58
|
+
python-version: '3.13'
|
|
59
|
+
|
|
60
|
+
- name: Install Python dependencies
|
|
61
|
+
run: pip install -r requirements.txt
|
|
62
|
+
|
|
63
|
+
# Strict mode disabled for mkdocs-material
|
|
64
|
+
- name: Build MkDocs documentation
|
|
65
|
+
run: mkdocs build
|
|
66
|
+
|
|
67
|
+
- name: Copy package.json to build directory
|
|
68
|
+
run: cp package.json build/
|
|
69
|
+
|
|
70
|
+
- name: Upload artifact
|
|
71
|
+
uses: actions/upload-pages-artifact@v3
|
|
72
|
+
with:
|
|
73
|
+
path: ./build
|
|
74
|
+
|
|
75
|
+
deploy:
|
|
76
|
+
needs: [check-codeql, build]
|
|
77
|
+
environment:
|
|
78
|
+
name: github-pages
|
|
79
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
80
|
+
runs-on: ubuntu-24.04
|
|
81
|
+
|
|
82
|
+
steps:
|
|
83
|
+
- name: Deploy to GitHub Pages
|
|
84
|
+
id: deployment
|
|
85
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# .github/workflows/check-codeql.yml
|
|
2
|
+
#
|
|
3
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
4
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
# This file is part of Network Pro
|
|
6
|
+
|
|
7
|
+
name: CodeQL Status Check
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
actions: read
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
workflow_call:
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
check:
|
|
18
|
+
name: Check CodeQL Status
|
|
19
|
+
runs-on: ubuntu-24.04
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check CodeQL Workflow
|
|
23
|
+
env:
|
|
24
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
run: |
|
|
26
|
+
gh --version
|
|
27
|
+
|
|
28
|
+
if ! gh run list --repo "${GITHUB_REPOSITORY}" --workflow "CodeQL" --limit 1 --json conclusion --jq '.[0].conclusion' > codeql_status.txt; then
|
|
29
|
+
echo "::error title=CodeQL Check Failed::Could not retrieve CodeQL run status. Blocking deployment."
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
CODEQL_STATUS=$(cat codeql_status.txt)
|
|
34
|
+
echo "CodeQL status: $CODEQL_STATUS"
|
|
35
|
+
if [[ "$CODEQL_STATUS" != "success" ]]; then
|
|
36
|
+
echo "::error title=CodeQL Check Failed::Latest CodeQL run did not succeed. Blocking deployment."
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
rm -f codeql_status.txt
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# .github/workflows/dependency-review.yml
|
|
2
|
+
#
|
|
3
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
4
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
# This file is part of Network Pro
|
|
6
|
+
|
|
7
|
+
name: Dependency Review
|
|
8
|
+
on: [pull_request]
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
dependency-review:
|
|
15
|
+
runs-on: ubuntu-24.04
|
|
16
|
+
steps:
|
|
17
|
+
- name: 'Checkout Repository'
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: 'Dependency Review'
|
|
21
|
+
uses: actions/dependency-review-action@v4
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# .github/workflows/publish-test.yml
|
|
2
|
+
#
|
|
3
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
4
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
# This file is part of Network Pro
|
|
6
|
+
|
|
7
|
+
name: Publish to Registries
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
actions: read
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
# Allow one concurrent deployment
|
|
17
|
+
concurrency:
|
|
18
|
+
group: 'publish'
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
check-codeql:
|
|
23
|
+
uses: ./.github/workflows/check-codeql.yml
|
|
24
|
+
|
|
25
|
+
build:
|
|
26
|
+
needs: check-codeql
|
|
27
|
+
runs-on: ubuntu-24.04
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- name: Checkout repository
|
|
31
|
+
uses: actions/checkout@v4
|
|
32
|
+
with:
|
|
33
|
+
fetch-depth: 0
|
|
34
|
+
|
|
35
|
+
- name: Set up Node.js
|
|
36
|
+
uses: actions/setup-node@v4
|
|
37
|
+
with:
|
|
38
|
+
node-version: 24
|
|
39
|
+
cache: npm
|
|
40
|
+
cache-dependency-path: package-lock.json
|
|
41
|
+
|
|
42
|
+
- name: Install Node.js dependencies
|
|
43
|
+
run: npm ci
|
|
44
|
+
|
|
45
|
+
# Ensure MkDocs builds successfully
|
|
46
|
+
- name: Set up Python
|
|
47
|
+
uses: actions/setup-python@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: '3.13'
|
|
50
|
+
|
|
51
|
+
- name: Install Python dependencies
|
|
52
|
+
run: pip install -r requirements.txt
|
|
53
|
+
|
|
54
|
+
# Strict mode disabled for mkdocs-material
|
|
55
|
+
- name: Build MkDocs documentation
|
|
56
|
+
run: mkdocs build
|
|
57
|
+
|
|
58
|
+
# Remove build artifacts
|
|
59
|
+
- name: Clean build directory
|
|
60
|
+
run: rm -rf build/
|
|
61
|
+
|
|
62
|
+
# Create Git archive of version-controlled files
|
|
63
|
+
- name: Create clean source archive
|
|
64
|
+
run: git archive --format=tar.gz --output=clean-source.tar.gz HEAD
|
|
65
|
+
|
|
66
|
+
- name: Upload source archive
|
|
67
|
+
uses: actions/upload-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: clean-source
|
|
70
|
+
path: clean-source.tar.gz
|
|
71
|
+
|
|
72
|
+
publish-npm:
|
|
73
|
+
needs: build
|
|
74
|
+
runs-on: ubuntu-24.04
|
|
75
|
+
|
|
76
|
+
steps:
|
|
77
|
+
- name: Download clean source archive
|
|
78
|
+
uses: actions/download-artifact@v4
|
|
79
|
+
with:
|
|
80
|
+
name: clean-source
|
|
81
|
+
path: ./
|
|
82
|
+
|
|
83
|
+
- name: Extract source archive
|
|
84
|
+
run: tar -xzf clean-source.tar.gz
|
|
85
|
+
|
|
86
|
+
- name: Remove extracted source archive
|
|
87
|
+
run: rm clean-source.tar.gz
|
|
88
|
+
|
|
89
|
+
- name: Set up Node.js for npmjs
|
|
90
|
+
uses: actions/setup-node@v4
|
|
91
|
+
with:
|
|
92
|
+
node-version: 24
|
|
93
|
+
registry-url: https://registry.npmjs.org/
|
|
94
|
+
cache: npm
|
|
95
|
+
|
|
96
|
+
- name: Check for existence of package-lock.json
|
|
97
|
+
run: |
|
|
98
|
+
if [ ! -f package-lock.json ]; then
|
|
99
|
+
echo "Warning: package-lock.json not found";
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
- name: Set up Git user
|
|
103
|
+
run: |
|
|
104
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
105
|
+
git config --global user.name "SunDevil311"
|
|
106
|
+
|
|
107
|
+
- name: Publish package to npmjs
|
|
108
|
+
run: npm publish --dry-run
|
|
109
|
+
env:
|
|
110
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_NETPRO }}
|
|
111
|
+
|
|
112
|
+
publish-gpr:
|
|
113
|
+
needs: build
|
|
114
|
+
runs-on: ubuntu-24.04
|
|
115
|
+
|
|
116
|
+
steps:
|
|
117
|
+
- name: Download clean source archive
|
|
118
|
+
uses: actions/download-artifact@v4
|
|
119
|
+
with:
|
|
120
|
+
name: clean-source
|
|
121
|
+
path: ./
|
|
122
|
+
|
|
123
|
+
- name: Extract source archive
|
|
124
|
+
run: tar -xzf clean-source.tar.gz
|
|
125
|
+
|
|
126
|
+
- name: Remove extracted source archive
|
|
127
|
+
run: rm clean-source.tar.gz
|
|
128
|
+
|
|
129
|
+
- name: Set up Node.js for GPR
|
|
130
|
+
uses: actions/setup-node@v4
|
|
131
|
+
with:
|
|
132
|
+
node-version: 24
|
|
133
|
+
registry-url: https://npm.pkg.github.com/
|
|
134
|
+
cache: npm
|
|
135
|
+
|
|
136
|
+
- name: Check for existence of package-lock.json
|
|
137
|
+
run: |
|
|
138
|
+
if [ ! -f package-lock.json ]; then
|
|
139
|
+
echo "Warning: package-lock.json not found";
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
- name: Set up Git user
|
|
143
|
+
run: |
|
|
144
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
145
|
+
git config --global user.name "SunDevil311"
|
|
146
|
+
|
|
147
|
+
- name: Update package name for GPR
|
|
148
|
+
run: |
|
|
149
|
+
sed -i 's/"name": ".*"/"name": "@netwk-pro\/blog"/' package.json
|
|
150
|
+
|
|
151
|
+
- name: Publish package to GPR
|
|
152
|
+
run: npm publish --dry-run
|
|
153
|
+
env:
|
|
154
|
+
NODE_AUTH_TOKEN: ${{ secrets.NWPRO_GPR }}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# .github/workflows/publish.yml
|
|
2
|
+
#
|
|
3
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
4
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
# This file is part of Network Pro
|
|
6
|
+
|
|
7
|
+
name: Publish to Registries
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
workflow_run:
|
|
11
|
+
workflows: ['Build Site and Deploy to GH Pages']
|
|
12
|
+
types:
|
|
13
|
+
- completed
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
actions: read
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
# Allow one concurrent deployment
|
|
20
|
+
concurrency:
|
|
21
|
+
group: 'publish'
|
|
22
|
+
cancel-in-progress: true
|
|
23
|
+
|
|
24
|
+
# cspell:ignore userconfig
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
build:
|
|
28
|
+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
29
|
+
runs-on: ubuntu-24.04
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout repository
|
|
33
|
+
uses: actions/checkout@v4
|
|
34
|
+
with:
|
|
35
|
+
fetch-depth: 0
|
|
36
|
+
|
|
37
|
+
- name: Set up Node.js
|
|
38
|
+
uses: actions/setup-node@v4
|
|
39
|
+
with:
|
|
40
|
+
node-version: 24
|
|
41
|
+
cache: npm
|
|
42
|
+
cache-dependency-path: package-lock.json
|
|
43
|
+
|
|
44
|
+
- name: Upgrade npm
|
|
45
|
+
run: |
|
|
46
|
+
corepack enable
|
|
47
|
+
npm install -g npm@11.4.1
|
|
48
|
+
|
|
49
|
+
- name: Install Node.js dependencies
|
|
50
|
+
run: npm ci
|
|
51
|
+
|
|
52
|
+
# Ensure MkDocs builds successfully
|
|
53
|
+
- name: Set up Python
|
|
54
|
+
uses: actions/setup-python@v5
|
|
55
|
+
with:
|
|
56
|
+
python-version: '3.13'
|
|
57
|
+
|
|
58
|
+
- name: Install Python dependencies
|
|
59
|
+
run: pip install -r requirements.txt
|
|
60
|
+
|
|
61
|
+
# Strict mode disabled for mkdocs-material
|
|
62
|
+
- name: Build MkDocs documentation
|
|
63
|
+
run: mkdocs build
|
|
64
|
+
|
|
65
|
+
# Remove build artifacts
|
|
66
|
+
#- name: Clean build directory
|
|
67
|
+
# run: rm -rf build/
|
|
68
|
+
|
|
69
|
+
# Create Git archive of version-controlled files
|
|
70
|
+
- name: Create clean source archive
|
|
71
|
+
run: git archive --format=tar.gz --output=clean-source.tar.gz HEAD
|
|
72
|
+
|
|
73
|
+
- name: Upload source archive
|
|
74
|
+
uses: actions/upload-artifact@v4
|
|
75
|
+
with:
|
|
76
|
+
name: clean-source
|
|
77
|
+
path: clean-source.tar.gz
|
|
78
|
+
|
|
79
|
+
publish-npm:
|
|
80
|
+
needs: build
|
|
81
|
+
runs-on: ubuntu-24.04
|
|
82
|
+
|
|
83
|
+
steps:
|
|
84
|
+
- name: Download clean source archive
|
|
85
|
+
uses: actions/download-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: clean-source
|
|
88
|
+
path: ./
|
|
89
|
+
|
|
90
|
+
- name: Extract source archive
|
|
91
|
+
run: tar -xzf clean-source.tar.gz
|
|
92
|
+
|
|
93
|
+
- name: Remove extracted source archive
|
|
94
|
+
run: rm clean-source.tar.gz
|
|
95
|
+
|
|
96
|
+
- name: Set up Node.js for npmjs
|
|
97
|
+
uses: actions/setup-node@v4
|
|
98
|
+
with:
|
|
99
|
+
node-version: 24
|
|
100
|
+
registry-url: https://registry.npmjs.org/
|
|
101
|
+
cache: npm
|
|
102
|
+
cache-dependency-path: package-lock.json
|
|
103
|
+
|
|
104
|
+
- name: Upgrade npm
|
|
105
|
+
run: |
|
|
106
|
+
corepack enable
|
|
107
|
+
npm install -g npm@11.4.1
|
|
108
|
+
|
|
109
|
+
- name: Install Node.js dependencies
|
|
110
|
+
run: npm ci
|
|
111
|
+
|
|
112
|
+
- name: Set up Git user
|
|
113
|
+
run: |
|
|
114
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
115
|
+
git config --global user.name "SunDevil311"
|
|
116
|
+
|
|
117
|
+
- name: Print npm config and registry info
|
|
118
|
+
run: |
|
|
119
|
+
echo "🔍 NPM registry (from config):"
|
|
120
|
+
npm config get registry
|
|
121
|
+
|
|
122
|
+
echo "🔍 NPM user config location:"
|
|
123
|
+
echo "$NPM_CONFIG_USERCONFIG"
|
|
124
|
+
|
|
125
|
+
echo "🔍 .npmrc contents:"
|
|
126
|
+
cat "$NPM_CONFIG_USERCONFIG" || echo "❌ No .npmrc found"
|
|
127
|
+
|
|
128
|
+
echo "🔐 Token prefix:"
|
|
129
|
+
echo "${NODE_AUTH_TOKEN:0:4}********"
|
|
130
|
+
env:
|
|
131
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_NETPRO }}
|
|
132
|
+
|
|
133
|
+
- name: Verify npm authentication
|
|
134
|
+
run: npm whoami
|
|
135
|
+
env:
|
|
136
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_NETPRO }}
|
|
137
|
+
|
|
138
|
+
- name: Publish package to npmjs
|
|
139
|
+
run: npm publish --access public
|
|
140
|
+
env:
|
|
141
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_NETPRO }}
|
|
142
|
+
|
|
143
|
+
publish-gpr:
|
|
144
|
+
needs: build
|
|
145
|
+
runs-on: ubuntu-24.04
|
|
146
|
+
|
|
147
|
+
steps:
|
|
148
|
+
- name: Download clean source archive
|
|
149
|
+
uses: actions/download-artifact@v4
|
|
150
|
+
with:
|
|
151
|
+
name: clean-source
|
|
152
|
+
path: ./
|
|
153
|
+
|
|
154
|
+
- name: Extract source archive
|
|
155
|
+
run: tar -xzf clean-source.tar.gz
|
|
156
|
+
|
|
157
|
+
- name: Remove extracted source archive
|
|
158
|
+
run: rm clean-source.tar.gz
|
|
159
|
+
|
|
160
|
+
- name: Set up Node.js for GPR
|
|
161
|
+
uses: actions/setup-node@v4
|
|
162
|
+
with:
|
|
163
|
+
node-version: 24
|
|
164
|
+
registry-url: https://npm.pkg.github.com/
|
|
165
|
+
cache: npm
|
|
166
|
+
cache-dependency-path: package-lock.json
|
|
167
|
+
|
|
168
|
+
- name: Upgrade npm
|
|
169
|
+
run: |
|
|
170
|
+
corepack enable
|
|
171
|
+
npm install -g npm@11.4.1
|
|
172
|
+
|
|
173
|
+
- name: Install Node.js dependencies
|
|
174
|
+
run: npm ci
|
|
175
|
+
|
|
176
|
+
- name: Set up Git user
|
|
177
|
+
run: |
|
|
178
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
179
|
+
git config --global user.name "SunDevil311"
|
|
180
|
+
|
|
181
|
+
- name: Update package name for GPR
|
|
182
|
+
run: |
|
|
183
|
+
sed -i 's/"name": ".*"/"name": "@netwk-pro\/blog"/' package.json
|
|
184
|
+
|
|
185
|
+
- name: Print npm config and registry info
|
|
186
|
+
run: |
|
|
187
|
+
echo "🔍 NPM registry (from config):"
|
|
188
|
+
npm config get registry
|
|
189
|
+
|
|
190
|
+
echo "🔍 NPM user config location:"
|
|
191
|
+
echo "$NPM_CONFIG_USERCONFIG"
|
|
192
|
+
|
|
193
|
+
echo "🔍 .npmrc contents:"
|
|
194
|
+
cat "$NPM_CONFIG_USERCONFIG" || echo "❌ No .npmrc found"
|
|
195
|
+
|
|
196
|
+
echo "🔐 Token prefix:"
|
|
197
|
+
echo "${NODE_AUTH_TOKEN:0:4}********"
|
|
198
|
+
env:
|
|
199
|
+
NODE_AUTH_TOKEN: ${{ secrets.NWPRO_GPR }}
|
|
200
|
+
|
|
201
|
+
- name: Verify npm authentication
|
|
202
|
+
run: npm whoami --registry=https://npm.pkg.github.com/
|
|
203
|
+
env:
|
|
204
|
+
NODE_AUTH_TOKEN: ${{ secrets.NWPRO_GPR }}
|
|
205
|
+
|
|
206
|
+
- name: Publish package to GPR
|
|
207
|
+
run: npm publish --registry=https://npm.pkg.github.com/
|
|
208
|
+
env:
|
|
209
|
+
NODE_AUTH_TOKEN: ${{ secrets.NWPRO_GPR }}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
.markdownlint.mjs
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
import noSmartQuotes from './.md-smart-quotes.js'; // adjust path as needed
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
// Enable all default rules, then override below
|
|
13
|
+
default: true,
|
|
14
|
+
|
|
15
|
+
// Custom rule: disallow curly (smart) quotes
|
|
16
|
+
customRules: [noSmartQuotes],
|
|
17
|
+
|
|
18
|
+
// Rule exceptions
|
|
19
|
+
MD041: false, // First line in file should be a top-level header
|
|
20
|
+
MD033: false, // Allow inline HTML
|
|
21
|
+
MD013: false, // Ignore line length
|
|
22
|
+
MD025: false, // Multiple top level headers in the same document
|
|
23
|
+
|
|
24
|
+
// Additional parser options
|
|
25
|
+
options: {
|
|
26
|
+
frontMatter: '^---\\n[\\s\\S]*?\\n---', // YAML front matter regex
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
// Rule-specific configurations
|
|
30
|
+
MD007: { indent: 2 }, // Set consistent unordered list indentation (e.g., 2 spaces)
|
|
31
|
+
MD029: { style: 'ordered' }, // Enforce consistent ordered list numbering
|
|
32
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
.md-smart-quotes.js
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
names: ['no-smart-quotes'],
|
|
11
|
+
description: 'Disallow smart quotes (curly quotes)',
|
|
12
|
+
information: new URL('https://github.com/DavidAnson/markdownlint'),
|
|
13
|
+
tags: ['quotes', 'style'],
|
|
14
|
+
function(params, onError) {
|
|
15
|
+
const smartQuoteRegex = /[“”‘’]/g;
|
|
16
|
+
|
|
17
|
+
params.tokens.forEach((token) => {
|
|
18
|
+
if (token.type === 'inline' && smartQuoteRegex.test(token.content)) {
|
|
19
|
+
const matches = [...token.content.matchAll(smartQuoteRegex)];
|
|
20
|
+
matches.forEach((match) => {
|
|
21
|
+
const index = match.index;
|
|
22
|
+
onError({
|
|
23
|
+
lineNumber: token.lineNumber,
|
|
24
|
+
detail: `Smart quote (${match[0]}) detected`,
|
|
25
|
+
range: [index + 1, 1],
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
};
|
package/.prettierignore
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# .prettierignore
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
|
+
# This file is part of Network Pro.
|
|
5
|
+
|
|
6
|
+
# Custom ignores
|
|
7
|
+
.markdownlint.jsonc
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Node.js dependencies
|
|
11
|
+
node_modules
|
|
12
|
+
|
|
13
|
+
# Build artifacts
|
|
14
|
+
dist
|
|
15
|
+
.vite
|
|
16
|
+
.cache
|
|
17
|
+
coverage
|
|
18
|
+
|
|
19
|
+
# Temporary files
|
|
20
|
+
*.lock
|
|
21
|
+
*.tmp
|
|
22
|
+
*.swp
|
|
23
|
+
*.bak
|
|
24
|
+
|
|
25
|
+
# Static assets
|
|
26
|
+
**/*.png
|
|
27
|
+
**/*.jpg
|
|
28
|
+
**/*.jpeg
|
|
29
|
+
**/*.gif
|
|
30
|
+
**/*.svg
|
|
31
|
+
**/*.woff
|
|
32
|
+
**/*.woff2
|
|
33
|
+
**/*.ttf
|
|
34
|
+
**/*.eot
|
|
35
|
+
|
|
36
|
+
# Configuration files
|
|
37
|
+
package.json
|
|
38
|
+
package-lock.json
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"printWidth": 80,
|
|
3
|
+
"tabWidth": 2,
|
|
4
|
+
"useTabs": false,
|
|
5
|
+
"semi": true,
|
|
6
|
+
"singleQuote": true,
|
|
7
|
+
"quoteProps": "as-needed",
|
|
8
|
+
"jsxSingleQuote": true,
|
|
9
|
+
"trailingComma": "all",
|
|
10
|
+
"bracketSpacing": true,
|
|
11
|
+
"objectWrap": "preserve",
|
|
12
|
+
"bracketSameLine": true,
|
|
13
|
+
"arrowParens": "always",
|
|
14
|
+
"requirePragma": false,
|
|
15
|
+
"insertPragma": false,
|
|
16
|
+
"proseWrap": "always",
|
|
17
|
+
"htmlWhitespaceSensitivity": "strict",
|
|
18
|
+
"endOfLine": "lf",
|
|
19
|
+
"embeddedLanguageFormatting": "auto",
|
|
20
|
+
"singleAttributePerLine": false,
|
|
21
|
+
"overrides": [
|
|
22
|
+
{
|
|
23
|
+
"files": "*.jsonc",
|
|
24
|
+
"options": {
|
|
25
|
+
"trailingComma": "none"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
package/.stylelintignore
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# .stylelintignore
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
|
+
# This file is part of Network Pro.
|
|
5
|
+
|
|
6
|
+
# Node.js dependencies
|
|
7
|
+
node_modules
|
|
8
|
+
|
|
9
|
+
# Build artifacts
|
|
10
|
+
build
|
|
11
|
+
.vite
|
|
12
|
+
.cache
|
|
13
|
+
coverage
|
|
14
|
+
|
|
15
|
+
# Temporary files
|
|
16
|
+
*.lock
|
|
17
|
+
*.tmp
|
|
18
|
+
*.swp
|
|
19
|
+
*.bak
|
|
20
|
+
|
|
21
|
+
# Static assets
|
|
22
|
+
**/*.png
|
|
23
|
+
**/*.jpg
|
|
24
|
+
**/*.jpeg
|
|
25
|
+
**/*.gif
|
|
26
|
+
**/*.svg
|
|
27
|
+
**/*.woff
|
|
28
|
+
**/*.woff2
|
|
29
|
+
**/*.ttf
|
|
30
|
+
**/*.eot
|
|
31
|
+
|
|
32
|
+
# Configuration files
|
|
33
|
+
package.json
|
|
34
|
+
package-lock.json
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"selectors": [
|
|
4
|
+
{
|
|
5
|
+
"name": ".fas",
|
|
6
|
+
"description": "FontAwesome v6 solid icon class"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": ".fa-solid",
|
|
10
|
+
"description": "FontAwesome old solid icon class"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": ".fab",
|
|
14
|
+
"description": "FontAwesome v6 brand icon class"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": ".fa-brands",
|
|
18
|
+
"description": "FontAwsome old brand icon class"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": ".fa-square-instagram",
|
|
22
|
+
"description": "FontAwesome brands Instagram icon class"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": ".fa-square-github",
|
|
26
|
+
"description": "FontAwesome brands GitHub icon class"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": ".fa-linkedin",
|
|
30
|
+
"description": "FontAwesome brands LinkedIn icon class"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": ".fa-square-facebook",
|
|
34
|
+
"description": "FontAwesome brands Facebook icon class"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": ".fa-mastodon",
|
|
38
|
+
"description": "FontAwesome brands Pinterest icon class"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": ".fa-arrow-up-right",
|
|
42
|
+
"description": "FontAwesome arrow up right icon class"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": ".fa-arrow-up-right-from-square",
|
|
46
|
+
"description": "FontAwesome arrow up right from square icon class"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": ".fa-2x",
|
|
50
|
+
"description": "FontAwesome 2x extra large icon size class"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": ".fa-lg",
|
|
54
|
+
"description": "FontAwesome large icon size class"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": ".fa-sm",
|
|
58
|
+
"description": "FontAwesome small icon size class"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": ".fa-xs",
|
|
62
|
+
"description": "FontAwesome extra small icon size class"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": ".fa-2xs",
|
|
66
|
+
"description": "FontAwesome 2x extra small icon size class"
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Editor settings
|
|
3
|
+
"editor.defaultFoldingRangeProvider": "esbenp.prettier-vscode",
|
|
4
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
5
|
+
"[markdown]": {
|
|
6
|
+
"editor.defaultFoldingRangeProvider": "esbenp.prettier-vscode",
|
|
7
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
8
|
+
},
|
|
9
|
+
"[json]": {
|
|
10
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
11
|
+
},
|
|
12
|
+
"[jsonc]": {
|
|
13
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
14
|
+
},
|
|
15
|
+
// ESLint configuration
|
|
16
|
+
"eslint.workingDirectories": ["D:\\Netwk-Pro\\git\\blog"],
|
|
17
|
+
"eslint.validate": ["html", "javascript", "javascriptreact", "json", "jsonc"],
|
|
18
|
+
"eslint.lintTask.enable": true,
|
|
19
|
+
"eslint.lintTask.options": "--ext .mjs,.js,.json,.jsonc --config eslint.config.mjs .",
|
|
20
|
+
"eslint.useESLintClass": true,
|
|
21
|
+
"eslint.useFlatConfig": true,
|
|
22
|
+
"eslint.codeActionsOnSave.mode": "problems",
|
|
23
|
+
"eslint.probe": ["javascript", "javascriptreact", "html", "json", "jsonc"],
|
|
24
|
+
// Stylelint configuration
|
|
25
|
+
"stylelint.configBasedir": "D:\\Netwk-Pro\\git\\blog",
|
|
26
|
+
"stylelint.configFile": "stylelint.config.js",
|
|
27
|
+
"stylelint.customSyntax": "postcss-html",
|
|
28
|
+
"stylelint.validate": ["css", "postcss", "html"],
|
|
29
|
+
// Custom CSS data for FontAwesome classes
|
|
30
|
+
"css.customData": [
|
|
31
|
+
".vscode/customData.json" // Path to your custom data file
|
|
32
|
+
],
|
|
33
|
+
// Locations of CSS files for validation
|
|
34
|
+
"css.styleSheets": ["**/*.css", "src/stylesheets/*.css"],
|
|
35
|
+
"files.associations": {
|
|
36
|
+
"/img/*": "html"
|
|
37
|
+
},
|
|
38
|
+
"markdown.validate.enabled": false,
|
|
39
|
+
"markdown.validate.ignoredLinks": []
|
|
40
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,104 @@ formatting may vary.
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
+
## [1.3.5] - 2025-06-24
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Bumped version to `v1.3.5`.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Resolved remaining GitHub Packages authentication issues by explicitly scoping
|
|
28
|
+
`npm whoami` and `npm publish` to the correct registry
|
|
29
|
+
(`https://npm.pkg.github.com/`).
|
|
30
|
+
- Ensured consistent registry usage regardless of `.npmrc` or `package.json`
|
|
31
|
+
configuration.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## [1.3.4] - 2025-06-23
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Bumped version to `v1.3.4`.
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- Removed legacy `.npmrc` file that was overriding registry authentication and
|
|
44
|
+
causing `401 Unauthorized` errors during publishing.
|
|
45
|
+
- Restored default registry handling through `setup-node` for reliable
|
|
46
|
+
token-based authentication to `npmjs.org`.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## [1.3.3] - 2025-06-23
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- Diagnostic logging to verify active registry, token configuration, and
|
|
55
|
+
`.npmrc` state prior to publishing.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- Bumped version to `v1.3.3`.
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- Resolved persistent authentication failure during publish by reintroducing
|
|
64
|
+
`npm ci` and upgrading npm in registry workflows.
|
|
65
|
+
- Adjusted step ordering to ensure environment and Git config are fully
|
|
66
|
+
initialized before registry checks.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## [1.3.2] - 2025-06-23
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- Authentication check (`npm whoami`) before publish to confirm registry access.
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
|
|
78
|
+
- Bumped version to `v1.3.2`.
|
|
79
|
+
|
|
80
|
+
### Fixed
|
|
81
|
+
|
|
82
|
+
- Resolved publishing failure caused by missing lockfile and outdated npm
|
|
83
|
+
version in registry workflows.
|
|
84
|
+
- Reintroduced `npm ci` and upgraded npm to ensure compatibility with scoped
|
|
85
|
+
package publishing.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## [1.3.1]
|
|
90
|
+
|
|
91
|
+
### Changes
|
|
92
|
+
|
|
93
|
+
- Removed `cache-dependency-path` from publish workflows to avoid
|
|
94
|
+
lockfile-related cache issues.
|
|
95
|
+
- Verified presence of `package-lock.json` in the extracted archive and
|
|
96
|
+
maintained default npm caching behavior.
|
|
97
|
+
- Bumped version to `v1.3.1`.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## [1.3.0]
|
|
102
|
+
|
|
103
|
+
### Added
|
|
104
|
+
|
|
105
|
+
- Introduced a test publish workflow (`.github/workflows/publish-test.yml`) to
|
|
106
|
+
validate the `git archive` packaging method via dry-run publishing.
|
|
107
|
+
|
|
108
|
+
### Changed
|
|
109
|
+
|
|
110
|
+
- Bumped version to `v1.3.0`.
|
|
111
|
+
- Reformatted `.github/COMMIT_GUIDE.md` to align with Prettier conventions.
|
|
112
|
+
- Refactored `.github/workflows/publish.yml` to use `git archive` for publishing
|
|
113
|
+
to registries.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
19
117
|
## [1.2.8] - 2025-06-23
|
|
20
118
|
|
|
21
119
|
### Added
|
|
@@ -62,6 +160,12 @@ formatting may vary.
|
|
|
62
160
|
|
|
63
161
|
<!-- Link references -->
|
|
64
162
|
|
|
65
|
-
[Unreleased]: https://github.com/netwk-pro/blog/compare/v1.
|
|
163
|
+
[Unreleased]: https://github.com/netwk-pro/blog/compare/v1.3.5...HEAD
|
|
164
|
+
[1.3.5]: https://github.com/netwk-pro/blog/releases/tag/v1.3.5
|
|
165
|
+
[1.3.4]: https://github.com/netwk-pro/blog/releases/tag/v1.3.4
|
|
166
|
+
[1.3.3]: https://github.com/netwk-pro/blog/releases/tag/v1.3.3
|
|
167
|
+
[1.3.2]: https://github.com/netwk-pro/blog/releases/tag/v1.3.2
|
|
168
|
+
[1.3.1]: https://github.com/netwk-pro/blog/releases/tag/v1.3.1
|
|
169
|
+
[1.3.0]: https://github.com/netwk-pro/blog/releases/tag/v1.3.0
|
|
66
170
|
[1.2.8]: https://github.com/netwk-pro/blog/releases/tag/v1.2.8
|
|
67
171
|
[1.2.7]: https://github.com/netwk-pro/blog/releases/tag/v1.2.7
|
package/assets/.gitkeep
ADDED
|
File without changes
|
package/package.json
CHANGED
package/src/.authors.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
authors:
|
|
2
|
+
team:
|
|
3
|
+
name: Network Pro
|
|
4
|
+
description: Creator
|
|
5
|
+
avatar: https://avatars.githubusercontent.com/u/170266279
|
|
6
|
+
url: https://netwk.pro/
|
|
7
|
+
SunDevil311:
|
|
8
|
+
name: Scott Lopez
|
|
9
|
+
description: Creator
|
|
10
|
+
avatar: https://avatars.githubusercontent.com/u/10506001
|
|
11
|
+
url: https://github.com/SunDevil311
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
draft: true
|