@networkpro/web 1.14.0 → 1.14.2
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 +5 -0
- package/.editorconfig +65 -0
- package/.env.template +18 -0
- package/.gitattributes +212 -0
- package/.github/COMMIT_GUIDE.md +31 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +74 -0
- package/.github/ISSUE_TEMPLATE/config.yml +32 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +35 -0
- package/.github/ISSUE_TEMPLATE/legal_review.yml +53 -0
- package/.github/workflows/auto-assign.yml +36 -0
- package/.github/workflows/backup-branch.yml +40 -0
- package/.github/workflows/build-and-publish.yml +220 -0
- package/.github/workflows/check-codeql.yml +42 -0
- package/.github/workflows/check-security-txt-expiry.yml +46 -0
- package/.github/workflows/dependency-review.yml +22 -0
- package/.github/workflows/lighthouse.yml +162 -0
- package/.github/workflows/playwright.yml +65 -0
- package/.github/workflows/publish-test.yml +218 -0
- package/.github/workflows/templates/check-codeql.template.yml +47 -0
- package/.github/workflows/templates/publish.template.yml +228 -0
- package/.lighthouserc.cjs +37 -0
- package/.markdownlint.mjs +31 -0
- package/.md-smart-quotes.js +31 -0
- package/.node-version +1 -0
- package/.nvmrc +1 -0
- package/.prettierignore +55 -0
- package/.prettierrc +35 -0
- package/.stylelintignore +43 -0
- package/.svelte-kit/tsconfig.json +49 -0
- package/.vscode/customData.json +73 -0
- package/.vscode/extensions.json +13 -0
- package/.vscode/extensions.jsonc +24 -0
- package/.vscode/settings.json +80 -0
- package/CHANGELOG.md +60 -1
- package/package.json +19 -19
- package/src/lib/components/ui/.gitkeep +0 -0
- package/src/routes/...404/+page.svelte +26 -0
- package/static/.well-known/dnt-policy.txt +218 -0
- package/static/.well-known/gpc.json +4 -0
- package/static/.well-known/humans.txt +21 -0
- package/static/.well-known/security.txt +12 -0
- package/static/.well-known/security.txt.sig +7 -0
|
@@ -0,0 +1,218 @@
|
|
|
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: Test Publishing to Registries
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
# Allow one concurrent deployment
|
|
13
|
+
concurrency:
|
|
14
|
+
group: 'build-and-publish'
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
actions: read
|
|
19
|
+
contents: read
|
|
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
|
+
env:
|
|
29
|
+
ENV_MODE: ci
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout repository
|
|
33
|
+
uses: actions/checkout@v4
|
|
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: Show Node.js and npm versions
|
|
43
|
+
run: |
|
|
44
|
+
echo "Node.js version: $(node -v)"
|
|
45
|
+
echo "npm version: $(npm -v)"
|
|
46
|
+
|
|
47
|
+
- name: Upgrade npm
|
|
48
|
+
run: |
|
|
49
|
+
corepack enable
|
|
50
|
+
npm install -g npm@11.4.2
|
|
51
|
+
|
|
52
|
+
- name: Install Node.js dependencies
|
|
53
|
+
run: npm ci
|
|
54
|
+
|
|
55
|
+
- name: Install jq
|
|
56
|
+
run: sudo apt-get install -y jq
|
|
57
|
+
|
|
58
|
+
- name: Run JSDoc lint check
|
|
59
|
+
id: jsdoc_lint
|
|
60
|
+
continue-on-error: true
|
|
61
|
+
run: |
|
|
62
|
+
set -e
|
|
63
|
+
output=$(npm run lint:jsdoc || true)
|
|
64
|
+
echo "$output" | tee jsdoc-lint-output.txt
|
|
65
|
+
|
|
66
|
+
count=$(echo "$output" | wc -l)
|
|
67
|
+
echo "jsdoc_count=$count" >> "$GITHUB_OUTPUT"
|
|
68
|
+
|
|
69
|
+
- name: ✅ Pass
|
|
70
|
+
if: steps.jsdoc_lint.outputs.jsdoc_count == '0'
|
|
71
|
+
run: echo "JSDoc lint passed successfully!"
|
|
72
|
+
|
|
73
|
+
- name: ⚠️ JSDoc violations detected (non-blocking)
|
|
74
|
+
if: steps.jsdoc_lint.outputs.jsdoc_count != '0'
|
|
75
|
+
run: |
|
|
76
|
+
echo "⚠️ JSDoc lint check failed with ${{ steps.jsdoc_lint.outputs.jsdoc_count }} violations (non-blocking)"
|
|
77
|
+
echo "--- JSDoc Violations ---"
|
|
78
|
+
cat jsdoc-lint-output.txt
|
|
79
|
+
|
|
80
|
+
# Test to ensure the package is working
|
|
81
|
+
- name: Build Node.js project
|
|
82
|
+
run: npm run build
|
|
83
|
+
|
|
84
|
+
# Create Git archive of version-controlled files
|
|
85
|
+
- name: Create clean source archive
|
|
86
|
+
run: git archive --format=tar.gz --output=clean-source.tar.gz HEAD
|
|
87
|
+
|
|
88
|
+
- name: Upload source archive
|
|
89
|
+
uses: actions/upload-artifact@v4
|
|
90
|
+
with:
|
|
91
|
+
name: clean-source
|
|
92
|
+
path: clean-source.tar.gz
|
|
93
|
+
|
|
94
|
+
publish-npmjs:
|
|
95
|
+
needs: build
|
|
96
|
+
runs-on: ubuntu-24.04
|
|
97
|
+
env:
|
|
98
|
+
ENV_MODE: ci
|
|
99
|
+
|
|
100
|
+
steps:
|
|
101
|
+
- name: Download clean source archive
|
|
102
|
+
uses: actions/download-artifact@v4
|
|
103
|
+
with:
|
|
104
|
+
name: clean-source
|
|
105
|
+
path: ./
|
|
106
|
+
|
|
107
|
+
- name: Extract source archive
|
|
108
|
+
run: tar -xzf clean-source.tar.gz
|
|
109
|
+
|
|
110
|
+
- name: Remove extracted source archive
|
|
111
|
+
run: rm clean-source.tar.gz
|
|
112
|
+
|
|
113
|
+
- name: Set up Node.js for npmjs
|
|
114
|
+
uses: actions/setup-node@v4
|
|
115
|
+
with:
|
|
116
|
+
node-version: 24
|
|
117
|
+
registry-url: https://registry.npmjs.org/
|
|
118
|
+
cache: npm
|
|
119
|
+
cache-dependency-path: package-lock.json
|
|
120
|
+
|
|
121
|
+
- name: Show Node.js and npm versions
|
|
122
|
+
run: |
|
|
123
|
+
echo "Node.js version: $(node -v)"
|
|
124
|
+
echo "npm version: $(npm -v)"
|
|
125
|
+
|
|
126
|
+
- name: Upgrade npm
|
|
127
|
+
run: |
|
|
128
|
+
corepack enable
|
|
129
|
+
npm install -g npm@11.4.2
|
|
130
|
+
|
|
131
|
+
- name: Install Node.js dependencies
|
|
132
|
+
run: npm ci
|
|
133
|
+
|
|
134
|
+
- name: Set up Git user
|
|
135
|
+
run: |
|
|
136
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
137
|
+
git config --global user.name "SunDevil311"
|
|
138
|
+
|
|
139
|
+
- name: Verify version not already published
|
|
140
|
+
run: |
|
|
141
|
+
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
|
142
|
+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
143
|
+
echo "Checking if $PACKAGE_NAME@$PACKAGE_VERSION is already published..."
|
|
144
|
+
|
|
145
|
+
npm view $PACKAGE_NAME@$PACKAGE_VERSION > /dev/null && {
|
|
146
|
+
echo "❌ Version $PACKAGE_VERSION already exists on npm. Exiting..."
|
|
147
|
+
exit 1
|
|
148
|
+
} || echo "✅ Version is new. Proceeding with publish."
|
|
149
|
+
|
|
150
|
+
- name: Simulate publish package to npmjs
|
|
151
|
+
run: npm publish --dry-run
|
|
152
|
+
env:
|
|
153
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_NETPRO }}
|
|
154
|
+
|
|
155
|
+
publish-gpr:
|
|
156
|
+
needs: build
|
|
157
|
+
runs-on: ubuntu-24.04
|
|
158
|
+
env:
|
|
159
|
+
ENV_MODE: ci
|
|
160
|
+
|
|
161
|
+
steps:
|
|
162
|
+
- name: Download clean source archive
|
|
163
|
+
uses: actions/download-artifact@v4
|
|
164
|
+
with:
|
|
165
|
+
name: clean-source
|
|
166
|
+
path: ./
|
|
167
|
+
|
|
168
|
+
- name: Extract source archive
|
|
169
|
+
run: tar -xzf clean-source.tar.gz
|
|
170
|
+
|
|
171
|
+
- name: Remove extracted source archive
|
|
172
|
+
run: rm clean-source.tar.gz
|
|
173
|
+
|
|
174
|
+
- name: Set up Node.js for GPR
|
|
175
|
+
uses: actions/setup-node@v4
|
|
176
|
+
with:
|
|
177
|
+
node-version: 24
|
|
178
|
+
registry-url: https://npm.pkg.github.com/
|
|
179
|
+
cache: npm
|
|
180
|
+
cache-dependency-path: package-lock.json
|
|
181
|
+
|
|
182
|
+
- name: Show Node.js and npm versions
|
|
183
|
+
run: |
|
|
184
|
+
echo "Node.js version: $(node -v)"
|
|
185
|
+
echo "npm version: $(npm -v)"
|
|
186
|
+
|
|
187
|
+
- name: Upgrade npm
|
|
188
|
+
run: |
|
|
189
|
+
corepack enable
|
|
190
|
+
npm install -g npm@11.4.2
|
|
191
|
+
|
|
192
|
+
- name: Install Node.js dependencies
|
|
193
|
+
run: npm ci
|
|
194
|
+
|
|
195
|
+
- name: Set up Git user
|
|
196
|
+
run: |
|
|
197
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
198
|
+
git config --global user.name "SunDevil311"
|
|
199
|
+
|
|
200
|
+
- name: Update package name for GPR
|
|
201
|
+
run: |
|
|
202
|
+
sed -i 's/"name": ".*"/"name": "@netwk-pro\/web"/' package.json
|
|
203
|
+
|
|
204
|
+
- name: Verify version not already published
|
|
205
|
+
run: |
|
|
206
|
+
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
|
207
|
+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
208
|
+
echo "Checking if $PACKAGE_NAME@$PACKAGE_VERSION is already published..."
|
|
209
|
+
|
|
210
|
+
npm view $PACKAGE_NAME@$PACKAGE_VERSION > /dev/null && {
|
|
211
|
+
echo "❌ Version $PACKAGE_VERSION already exists on npm. Exiting..."
|
|
212
|
+
exit 1
|
|
213
|
+
} || echo "✅ Version is new. Proceeding with publish."
|
|
214
|
+
|
|
215
|
+
- name: Simulate publish package to GPR
|
|
216
|
+
run: npm publish --dry-run
|
|
217
|
+
env:
|
|
218
|
+
NODE_AUTH_TOKEN: ${{ secrets.NWPRO_GPR }}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# check-codeql.template.yml
|
|
2
|
+
#
|
|
3
|
+
# Reusable GitHub Actions workflow to enforce that the latest CodeQL scan
|
|
4
|
+
# has completed successfully.
|
|
5
|
+
#
|
|
6
|
+
# Version: v1.0.0
|
|
7
|
+
# Maintainer: Scott Lopez <support@neteng.pro>
|
|
8
|
+
# Usage: Copy to `.github/workflows/check-codeql.yml` in your repo or reference directly if shared centrally.
|
|
9
|
+
#
|
|
10
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
11
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
12
|
+
# This file is part of Network Pro
|
|
13
|
+
|
|
14
|
+
name: Reusable CodeQL Status Check
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
actions: read
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
on:
|
|
21
|
+
workflow_call:
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
check:
|
|
25
|
+
name: Check CodeQL Status
|
|
26
|
+
runs-on: ubuntu-24.04
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Check CodeQL Workflow
|
|
30
|
+
env:
|
|
31
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
32
|
+
run: |
|
|
33
|
+
gh --version
|
|
34
|
+
|
|
35
|
+
if ! gh run list --repo "${GITHUB_REPOSITORY}" --workflow "CodeQL" --limit 1 --json conclusion --jq '.[0].conclusion' > codeql_status.txt; then
|
|
36
|
+
echo "::error title=CodeQL Check Failed::Could not retrieve CodeQL run status. Blocking deployment."
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
CODEQL_STATUS=$(cat codeql_status.txt)
|
|
41
|
+
echo "CodeQL status: $CODEQL_STATUS"
|
|
42
|
+
if [[ "$CODEQL_STATUS" != "success" ]]; then
|
|
43
|
+
echo "::error title=CodeQL Check Failed::Latest CodeQL run did not succeed. Blocking deployment."
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
rm -f codeql_status.txt
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# .github/workflows/build-and-publish.yml
|
|
2
|
+
#
|
|
3
|
+
# Reusable GitHub Actions workflow to build and publish a package to npmjs and
|
|
4
|
+
# GPR.
|
|
5
|
+
#
|
|
6
|
+
# Version: v1.0.0
|
|
7
|
+
# Maintainer: Scott Lopez <support@neteng.pro>
|
|
8
|
+
# Usage: Copy to `.github/workflows/publish.yml` in your repo or reference
|
|
9
|
+
# directly if shared centrally.
|
|
10
|
+
#
|
|
11
|
+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
12
|
+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
13
|
+
# This file is part of Network Pro
|
|
14
|
+
|
|
15
|
+
name: Build and Publish to Registries
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
# release:
|
|
19
|
+
# types: [created]
|
|
20
|
+
workflow_dispatch:
|
|
21
|
+
|
|
22
|
+
# Allow one concurrent deployment
|
|
23
|
+
concurrency:
|
|
24
|
+
group: 'build-and-publish'
|
|
25
|
+
cancel-in-progress: true
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
actions: read
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
check-codeql:
|
|
33
|
+
uses: ./.github/workflows/check-codeql.yml
|
|
34
|
+
|
|
35
|
+
build:
|
|
36
|
+
needs: check-codeql
|
|
37
|
+
runs-on: ubuntu-24.04
|
|
38
|
+
env:
|
|
39
|
+
ENV_MODE: ci
|
|
40
|
+
|
|
41
|
+
steps:
|
|
42
|
+
- name: Checkout repository
|
|
43
|
+
uses: actions/checkout@v4
|
|
44
|
+
|
|
45
|
+
- name: Set up Node.js
|
|
46
|
+
uses: actions/setup-node@v4
|
|
47
|
+
with:
|
|
48
|
+
node-version: 24
|
|
49
|
+
cache: npm
|
|
50
|
+
cache-dependency-path: package-lock.json
|
|
51
|
+
|
|
52
|
+
- name: Show Node.js and npm versions
|
|
53
|
+
run: |
|
|
54
|
+
echo "Node.js version: $(node -v)"
|
|
55
|
+
echo "npm version: $(npm -v)"
|
|
56
|
+
|
|
57
|
+
- name: Upgrade npm
|
|
58
|
+
run: |
|
|
59
|
+
corepack enable
|
|
60
|
+
npm install -g npm@11.4.2
|
|
61
|
+
|
|
62
|
+
- name: Install Node.js dependencies
|
|
63
|
+
run: npm ci
|
|
64
|
+
|
|
65
|
+
- name: Install jq
|
|
66
|
+
run: sudo apt-get install -y jq
|
|
67
|
+
|
|
68
|
+
- name: Run JSDoc lint check
|
|
69
|
+
id: jsdoc_lint
|
|
70
|
+
continue-on-error: true
|
|
71
|
+
run: |
|
|
72
|
+
set -e
|
|
73
|
+
output=$(npm run lint:jsdoc || true)
|
|
74
|
+
echo "$output" | tee jsdoc-lint-output.txt
|
|
75
|
+
|
|
76
|
+
count=$(echo "$output" | wc -l)
|
|
77
|
+
echo "jsdoc_count=$count" >> "$GITHUB_OUTPUT"
|
|
78
|
+
|
|
79
|
+
- name: ✅ Pass
|
|
80
|
+
if: steps.jsdoc_lint.outputs.jsdoc_count == '0'
|
|
81
|
+
run: echo "JSDoc lint passed successfully!"
|
|
82
|
+
|
|
83
|
+
- name: ⚠️ JSDoc violations detected (non-blocking)
|
|
84
|
+
if: steps.jsdoc_lint.outputs.jsdoc_count != '0'
|
|
85
|
+
run: |
|
|
86
|
+
echo "⚠️ JSDoc lint check failed with ${{ steps.jsdoc_lint.outputs.jsdoc_count }} violations (non-blocking)"
|
|
87
|
+
echo "--- JSDoc Violations ---"
|
|
88
|
+
cat jsdoc-lint-output.txt
|
|
89
|
+
|
|
90
|
+
# Test to ensure the package is working
|
|
91
|
+
- name: Build Node.js project
|
|
92
|
+
run: npm run build
|
|
93
|
+
|
|
94
|
+
# Create Git archive of version-controlled files
|
|
95
|
+
- name: Create clean source archive
|
|
96
|
+
run: git archive --format=tar.gz --output=clean-source.tar.gz HEAD
|
|
97
|
+
|
|
98
|
+
- name: Upload source archive
|
|
99
|
+
uses: actions/upload-artifact@v4
|
|
100
|
+
with:
|
|
101
|
+
name: clean-source
|
|
102
|
+
path: clean-source.tar.gz
|
|
103
|
+
|
|
104
|
+
publish-npmjs:
|
|
105
|
+
needs: build
|
|
106
|
+
runs-on: ubuntu-24.04
|
|
107
|
+
env:
|
|
108
|
+
ENV_MODE: ci
|
|
109
|
+
|
|
110
|
+
steps:
|
|
111
|
+
- name: Download clean source archive
|
|
112
|
+
uses: actions/download-artifact@v4
|
|
113
|
+
with:
|
|
114
|
+
name: clean-source
|
|
115
|
+
path: ./
|
|
116
|
+
|
|
117
|
+
- name: Extract source archive
|
|
118
|
+
run: tar -xzf clean-source.tar.gz
|
|
119
|
+
|
|
120
|
+
- name: Remove extracted source archive
|
|
121
|
+
run: rm clean-source.tar.gz
|
|
122
|
+
|
|
123
|
+
- name: Set up Node.js for npmjs
|
|
124
|
+
uses: actions/setup-node@v4
|
|
125
|
+
with:
|
|
126
|
+
node-version: 24
|
|
127
|
+
registry-url: https://registry.npmjs.org/
|
|
128
|
+
cache: npm
|
|
129
|
+
cache-dependency-path: package-lock.json
|
|
130
|
+
|
|
131
|
+
- name: Show Node.js and npm versions
|
|
132
|
+
run: |
|
|
133
|
+
echo "Node.js version: $(node -v)"
|
|
134
|
+
echo "npm version: $(npm -v)"
|
|
135
|
+
|
|
136
|
+
- name: Upgrade npm
|
|
137
|
+
run: |
|
|
138
|
+
corepack enable
|
|
139
|
+
npm install -g npm@11.4.2
|
|
140
|
+
|
|
141
|
+
- name: Install Node.js dependencies
|
|
142
|
+
run: npm ci
|
|
143
|
+
|
|
144
|
+
- name: Set up Git user
|
|
145
|
+
run: |
|
|
146
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
147
|
+
git config --global user.name "SunDevil311"
|
|
148
|
+
|
|
149
|
+
- name: Verify version not already published
|
|
150
|
+
run: |
|
|
151
|
+
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
|
152
|
+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
153
|
+
echo "Checking if $PACKAGE_NAME@$PACKAGE_VERSION is already published..."
|
|
154
|
+
|
|
155
|
+
npm view $PACKAGE_NAME@$PACKAGE_VERSION > /dev/null && {
|
|
156
|
+
echo "❌ Version $PACKAGE_VERSION already exists on npm. Exiting..."
|
|
157
|
+
exit 1
|
|
158
|
+
} || echo "✅ Version is new. Proceeding with publish."
|
|
159
|
+
|
|
160
|
+
- name: Publish package to npmjs
|
|
161
|
+
run: npm publish --access public
|
|
162
|
+
env:
|
|
163
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_NETPRO }}
|
|
164
|
+
|
|
165
|
+
publish-gpr:
|
|
166
|
+
needs: build
|
|
167
|
+
runs-on: ubuntu-24.04
|
|
168
|
+
env:
|
|
169
|
+
ENV_MODE: ci
|
|
170
|
+
|
|
171
|
+
steps:
|
|
172
|
+
- name: Download clean source archive
|
|
173
|
+
uses: actions/download-artifact@v4
|
|
174
|
+
with:
|
|
175
|
+
name: clean-source
|
|
176
|
+
path: ./
|
|
177
|
+
|
|
178
|
+
- name: Extract source archive
|
|
179
|
+
run: tar -xzf clean-source.tar.gz
|
|
180
|
+
|
|
181
|
+
- name: Remove extracted source archive
|
|
182
|
+
run: rm clean-source.tar.gz
|
|
183
|
+
|
|
184
|
+
- name: Set up Node.js for GPR
|
|
185
|
+
uses: actions/setup-node@v4
|
|
186
|
+
with:
|
|
187
|
+
node-version: 24
|
|
188
|
+
registry-url: https://npm.pkg.github.com/
|
|
189
|
+
cache: npm
|
|
190
|
+
cache-dependency-path: package-lock.json
|
|
191
|
+
|
|
192
|
+
- name: Show Node.js and npm versions
|
|
193
|
+
run: |
|
|
194
|
+
echo "Node.js version: $(node -v)"
|
|
195
|
+
echo "npm version: $(npm -v)"
|
|
196
|
+
|
|
197
|
+
- name: Upgrade npm
|
|
198
|
+
run: |
|
|
199
|
+
corepack enable
|
|
200
|
+
npm install -g npm@11.4.2
|
|
201
|
+
|
|
202
|
+
- name: Install Node.js dependencies
|
|
203
|
+
run: npm ci
|
|
204
|
+
|
|
205
|
+
- name: Set up Git user
|
|
206
|
+
run: |
|
|
207
|
+
git config --global user.email "github@sl.neteng.cc"
|
|
208
|
+
git config --global user.name "SunDevil311"
|
|
209
|
+
|
|
210
|
+
- name: Update package name for GPR
|
|
211
|
+
run: |
|
|
212
|
+
sed -i 's/"name": ".*"/"name": "@netwk-pro\/web"/' package.json
|
|
213
|
+
|
|
214
|
+
- name: Verify version not already published
|
|
215
|
+
run: |
|
|
216
|
+
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
|
217
|
+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
218
|
+
echo "Checking if $PACKAGE_NAME@$PACKAGE_VERSION is already published..."
|
|
219
|
+
|
|
220
|
+
npm view $PACKAGE_NAME@$PACKAGE_VERSION > /dev/null && {
|
|
221
|
+
echo "❌ Version $PACKAGE_VERSION already exists on npm. Exiting..."
|
|
222
|
+
exit 1
|
|
223
|
+
} || echo "✅ Version is new. Proceeding with publish."
|
|
224
|
+
|
|
225
|
+
- name: Publish package to GPR
|
|
226
|
+
run: npm publish
|
|
227
|
+
env:
|
|
228
|
+
NODE_AUTH_TOKEN: ${{ secrets.NWPRO_GPR }}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
.lighthouserc.cjs
|
|
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
|
+
module.exports = {
|
|
10
|
+
ci: {
|
|
11
|
+
collect: {
|
|
12
|
+
url: ['https://netwk.pro'],
|
|
13
|
+
numberOfRuns: 1,
|
|
14
|
+
settings: {
|
|
15
|
+
onlyCategories: [
|
|
16
|
+
'performance',
|
|
17
|
+
'accessibility',
|
|
18
|
+
'best-practices',
|
|
19
|
+
'seo',
|
|
20
|
+
],
|
|
21
|
+
disableFullPageScreenshot: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
assert: {
|
|
25
|
+
preset: 'none',
|
|
26
|
+
assertions: {
|
|
27
|
+
// Add budget checks by asserting that "resource-summary" does not exceed budget
|
|
28
|
+
'resource-summary': ['error', { budgetPath: 'budget.json' }],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
upload: {
|
|
32
|
+
target: 'filesystem',
|
|
33
|
+
outputDir: './.lighthouseci',
|
|
34
|
+
reporter: ['html', 'json'],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
|
|
23
|
+
// Additional parser options
|
|
24
|
+
options: {
|
|
25
|
+
frontMatter: '^---\\n[\\s\\S]*?\\n---', // YAML front matter regex
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
// Rule-specific configurations
|
|
29
|
+
MD007: { indent: 2 }, // Set consistent unordered list indentation (e.g., 2 spaces)
|
|
30
|
+
MD029: { style: 'ordered' }, // Enforce consistent ordered list numbering
|
|
31
|
+
};
|
|
@@ -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/.node-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
24.3.0
|
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
24.3.0
|
package/.prettierignore
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# .prettierignore
|
|
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
|
+
# Custom ignores
|
|
8
|
+
.markdownlint.jsonc
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# Licenses
|
|
12
|
+
static/bin/license
|
|
13
|
+
|
|
14
|
+
# Minified CSS
|
|
15
|
+
*.min.css
|
|
16
|
+
|
|
17
|
+
# SvelteKit
|
|
18
|
+
.svelte-kit/*
|
|
19
|
+
src/lib/styles
|
|
20
|
+
src/lib/*.js
|
|
21
|
+
src/lib/data/*.js
|
|
22
|
+
|
|
23
|
+
# Node.js dependencies
|
|
24
|
+
node_modules
|
|
25
|
+
|
|
26
|
+
# Build artifacts
|
|
27
|
+
build
|
|
28
|
+
.vite
|
|
29
|
+
.cache
|
|
30
|
+
coverage
|
|
31
|
+
|
|
32
|
+
# Temporary files
|
|
33
|
+
*.lock
|
|
34
|
+
*.tmp
|
|
35
|
+
*.swp
|
|
36
|
+
*.bak
|
|
37
|
+
|
|
38
|
+
# Static assets
|
|
39
|
+
**/*.png
|
|
40
|
+
**/*.jpg
|
|
41
|
+
**/*.jpeg
|
|
42
|
+
**/*.gif
|
|
43
|
+
**/*.svg
|
|
44
|
+
**/*.woff
|
|
45
|
+
**/*.woff2
|
|
46
|
+
**/*.ttf
|
|
47
|
+
**/*.eot
|
|
48
|
+
|
|
49
|
+
# Generated files
|
|
50
|
+
**/*.d.ts
|
|
51
|
+
**/generated/*
|
|
52
|
+
|
|
53
|
+
# Configuration files
|
|
54
|
+
package.json
|
|
55
|
+
package-lock.json
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
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": "preserve",
|
|
17
|
+
"htmlWhitespaceSensitivity": "strict",
|
|
18
|
+
"endOfLine": "lf",
|
|
19
|
+
"singleAttributePerLine": false,
|
|
20
|
+
"plugins": ["prettier-plugin-svelte"],
|
|
21
|
+
"overrides": [
|
|
22
|
+
{
|
|
23
|
+
"files": "*.svelte",
|
|
24
|
+
"options": {
|
|
25
|
+
"parser": "svelte"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"files": "*.jsonc",
|
|
30
|
+
"options": {
|
|
31
|
+
"trailingComma": "none"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|