@networkpro/web 1.21.0 → 1.22.0
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/.editorconfig +1 -3
- package/.env.template +0 -2
- package/.gitattributes +0 -2
- package/.markdownlint.mjs +1 -1
- package/.prettierignore +0 -2
- package/.stylelintignore +0 -2
- package/CHANGELOG.md +89 -1
- package/package.json +8 -8
- package/src/app.html +1 -12
- package/src/lib/components/Logo.svelte +2 -7
- package/src/lib/components/layout/HeaderDefault.svelte +2 -3
- package/src/lib/data/fossData.js +8 -0
- package/src/lib/data/pgpKeys.js +82 -0
- package/src/lib/images.js +46 -17
- package/src/lib/index.js +8 -2
- package/src/lib/pages/AboutContent.svelte +97 -100
- package/src/lib/pages/HomeContent.svelte +11 -8
- package/src/lib/pages/PGPContent.svelte +19 -40
- package/src/lib/pages/ServicesContent.svelte +5 -2
- package/src/lib/styles/css/default.css +1 -1
- package/src/lib/styles/global.min.css +1 -1
- package/src/lib/types/appConstants.js +6 -3
- package/src/routes/relay-[slug]/[...catchall]/+server.js +68 -0
- package/src/service-worker.js +3 -11
- package/static/icon-about.png +0 -0
- package/static/manifest.json +17 -4
- package/static/pgp/support@netwk.pro.asc +77 -0
- package/static/sitemap.xml +5 -5
- package/stylelint.config.js +0 -6
- package/src/lib/img/qr/pgp-github.png +0 -0
- package/src/lib/img/qr/pgp-github.webp +0 -0
- package/static/pgp/pgp-contact.png +0 -0
- package/static/pgp/pgp-contact.webp +0 -0
- package/static/pgp/pgp-github.png +0 -0
- package/static/pgp/pgp-github.webp +0 -0
- package/static/pgp/pgp-security.png +0 -0
- package/static/pgp/pgp-security.webp +0 -0
- package/static/pgp/pgp-support.png +0 -0
- package/static/pgp/pgp-support.webp +0 -0
- package/static/pgp/support@neteng.pro.asc +0 -47
- package/static/pgp/vcard.png +0 -0
- package/static/pgp/vcard.webp +0 -0
- /package/{static → src/lib}/img/powered-by-proton.svg +0 -0
package/.editorconfig
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# ==========================================================================
|
|
2
1
|
# .editorconfig
|
|
3
2
|
#
|
|
4
3
|
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
@@ -8,7 +7,6 @@
|
|
|
8
7
|
# EditorConfig helps developers define and maintain consistent
|
|
9
8
|
# coding styles between different editors and IDEs
|
|
10
9
|
# See http://editorconfig.org/ for full details
|
|
11
|
-
# ==========================================================================
|
|
12
10
|
|
|
13
11
|
; top-most EditorConfig file
|
|
14
12
|
root = true
|
|
@@ -36,7 +34,7 @@ indent_size = 2
|
|
|
36
34
|
indent_size = 2
|
|
37
35
|
|
|
38
36
|
; JavaScript files -
|
|
39
|
-
[*.{mjs,js,ts}]
|
|
37
|
+
[*.{mjs,cjs,js,ts}]
|
|
40
38
|
curly_bracket_next_line = true
|
|
41
39
|
quote_type = single
|
|
42
40
|
|
package/.env.template
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
# ==========================================================================
|
|
2
1
|
# .env.template
|
|
3
2
|
#
|
|
4
3
|
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
4
|
# Environment template for Network Pro
|
|
6
5
|
# Rename to `.env` (or `.env.local`) and customize as needed
|
|
7
|
-
# ==========================================================================
|
|
8
6
|
|
|
9
7
|
# Custom environment mode for scripts and tooling
|
|
10
8
|
# One of: dev, test, ci, preview, prod
|
package/.gitattributes
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# ==========================================================================
|
|
2
1
|
# .gitattributes
|
|
3
2
|
#
|
|
4
3
|
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
@@ -14,7 +13,6 @@
|
|
|
14
13
|
# binary These files are binary and should be left untouched.
|
|
15
14
|
#
|
|
16
15
|
# Note that binary is a macro for -text -diff.
|
|
17
|
-
# ==========================================================================
|
|
18
16
|
|
|
19
17
|
## AUTO-DETECT
|
|
20
18
|
## Handle line endings automatically for files detected as
|
package/.markdownlint.mjs
CHANGED
|
@@ -6,7 +6,7 @@ SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
|
6
6
|
This file is part of Network Pro.
|
|
7
7
|
========================================================================== */
|
|
8
8
|
|
|
9
|
-
import noSmartQuotes from './.md-smart-quotes.js';
|
|
9
|
+
import noSmartQuotes from './.md-smart-quotes.js';
|
|
10
10
|
|
|
11
11
|
export default {
|
|
12
12
|
// Enable all default rules, then override below
|
package/.prettierignore
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
# ==========================================================================
|
|
2
1
|
# .prettierignore
|
|
3
2
|
#
|
|
4
3
|
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
4
|
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
5
|
# This file is part of Network Pro.
|
|
7
|
-
# ==========================================================================
|
|
8
6
|
|
|
9
7
|
# Custom ignores
|
|
10
8
|
.markdownlint.jsonc
|
package/.stylelintignore
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
# ==========================================================================
|
|
2
1
|
# .stylelintignore
|
|
3
2
|
#
|
|
4
3
|
# Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
4
|
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
5
|
# This file is part of Network Pro.
|
|
7
|
-
# ==========================================================================
|
|
8
6
|
|
|
9
7
|
# Report files and test results
|
|
10
8
|
playwright-report
|
package/CHANGELOG.md
CHANGED
|
@@ -22,6 +22,92 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
+
## [1.22.0] - 2025-10-20
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- Introduced **dynamic QR code image imports** using `import.meta.glob` in `src/lib/images.js`.
|
|
30
|
+
- Implemented new `getQR()` helper function for streamlined QR lookups.
|
|
31
|
+
- Added `QR_IMAGES` registry for centralized QR asset management.
|
|
32
|
+
- Created dedicated PGP key data module (`src/lib/data/pgpKeys.js`) with dynamic QR bindings.
|
|
33
|
+
- Added new app constants (`EMAIL_LINK`, `SECURE_LINK`, `PRIVACY_LINK`) to:
|
|
34
|
+
- `src/lib/index.js`
|
|
35
|
+
- `src/lib/types/appConstants.js`
|
|
36
|
+
- Re-exported `src/lib/data/pgpKeys.js` from `src/lib/index.js`.
|
|
37
|
+
- Added favicon and manifest entry for `icon-about.png`.
|
|
38
|
+
- Introduced updated **contact assets block** in `AboutContent.svelte` with enhanced typing.
|
|
39
|
+
- Exported `src/lib/img/powered-by-proton.svg` from `src/lib/images.js`.
|
|
40
|
+
- Added missing JSDoc annotation to `src/lib/data/fossData.js`.
|
|
41
|
+
- Added updated PGP key for `support@netwk.pro` (previously `support@neteng.pro`).
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
|
|
45
|
+
- Bumped project version to `v1.22.0`.
|
|
46
|
+
- Updated generator metadata in `src/app.html` to reflect **SvelteKit 2.47.2**.
|
|
47
|
+
- Refactored **PGPContent.svelte** to use the `getQR()` helper and dynamic QR registry.
|
|
48
|
+
- Refactored **AboutContent.svelte** to use the centralized `PGP_KEYS` dataset and app constants.
|
|
49
|
+
- Split PGP key fingerprints into two lines for improved readability.
|
|
50
|
+
- Enhanced **images.js** with support for eager QR image imports.
|
|
51
|
+
- Replaced static PGP imports with automated dynamic resolution.
|
|
52
|
+
- Updated **manifest.json** to reference the new app icon.
|
|
53
|
+
- Revised layout and text consistency for PGP and contact sections in **AboutContent.svelte**.
|
|
54
|
+
- Updated type definitions in `src/lib/types/appConstants.js` for `CONTACT` constants.
|
|
55
|
+
- Cleaned up unused imports and improved inline JSDoc typings throughout the app.
|
|
56
|
+
- Updated asset references in `IGNORE_PATHS` and `REQUIRED_ASSETS` in `src/service-worker.js`.
|
|
57
|
+
- Added spacing adjustments to the tagline in **Logo.svelte**.
|
|
58
|
+
- Updated **HeaderDefault.svelte** to reference the global constant for the **Blog** link.
|
|
59
|
+
- Revised text and app constant usage in **HomeContent.svelte**.
|
|
60
|
+
- Updated the contact section and **Effective Date** in **ServicesContent.svelte**.
|
|
61
|
+
- Rebuilt `src/lib/styles/global.min.css` using **LightningCSS**.
|
|
62
|
+
- Refreshed `_Last Modified_` timestamps in `static/sitemap.xml`.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Fixed SSR error caused by missing `getQR` reference during page load.
|
|
67
|
+
- Corrected destructuring of `CONTACT` constants during SSR initialization.
|
|
68
|
+
- Fixed fingerprint rendering fallback when fingerprint type was non-array.
|
|
69
|
+
- Adjusted QR image alignment and eager/lazy decoding behavior.
|
|
70
|
+
|
|
71
|
+
### Removed
|
|
72
|
+
|
|
73
|
+
- Deleted outdated static assets from `static/pgp`, replaced with dynamically loaded QR images.
|
|
74
|
+
- Removed redundant manual image imports from legacy sections of `images.js`.
|
|
75
|
+
- Removed unnecessary comment block from the `<head>` section of `src/app.html`.
|
|
76
|
+
- Removed `font-weight: bold` property from the `.fingerprint` CSS class in `src/lib/styles/css/default.css`.
|
|
77
|
+
|
|
78
|
+
### 🧩 Technical Notes
|
|
79
|
+
|
|
80
|
+
- Updated `vite` from `v7.1.10` → `v7.1.11` to address **CVE-2025-62522**.
|
|
81
|
+
- Updated dependencies for SvelteKit `2.47.2` compatibility:
|
|
82
|
+
- `@sveltejs/kit`, `svelte`, `vite`, and `eslint`-related plugins.
|
|
83
|
+
- Cleaned up build cache and service worker registration logic in `src/service-worker.js`.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## [1.21.1] - 2025-10-17
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
|
|
91
|
+
- Introduced universal relay mock handler at `src/routes/relay-[slug]/[...catchall]/+server.js` to consolidate test-only endpoints such as `flags`, `config`, and `config.js`.
|
|
92
|
+
- Added fallback support for `GET`, `HEAD`, and `OPTIONS` methods within the catchall relay handler.
|
|
93
|
+
|
|
94
|
+
### Changed
|
|
95
|
+
|
|
96
|
+
- Bumped project version to `v1.21.1`.
|
|
97
|
+
- Standardized header in various files:
|
|
98
|
+
- `.editorconfig`
|
|
99
|
+
- `.env.template`
|
|
100
|
+
- `.gitattributes`
|
|
101
|
+
- `.gitignore`
|
|
102
|
+
- `.prettierignore`
|
|
103
|
+
- `.stylelintignore`
|
|
104
|
+
|
|
105
|
+
### Removed
|
|
106
|
+
|
|
107
|
+
- Deleted unneeded comments in `stylelint.config.js` and `.markdownlint.mjs`.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
25
111
|
## [1.21.0] - 2025-10-17
|
|
26
112
|
|
|
27
113
|
### Added
|
|
@@ -1145,7 +1231,9 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
1145
1231
|
|
|
1146
1232
|
<!-- Link references -->
|
|
1147
1233
|
|
|
1148
|
-
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.
|
|
1234
|
+
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.22.0...HEAD
|
|
1235
|
+
[1.22.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.22.0
|
|
1236
|
+
[1.21.1]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.21.1
|
|
1149
1237
|
[1.21.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.21.0
|
|
1150
1238
|
[1.20.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.20.0
|
|
1151
1239
|
[1.19.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.19.0
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@networkpro/web",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.22.0",
|
|
5
5
|
"description": "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro Strategies",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"advisory",
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"dompurify": "^3.3.0",
|
|
81
|
-
"posthog-js": "^1.
|
|
81
|
+
"posthog-js": "^1.278.0",
|
|
82
82
|
"semver": "^7.7.3",
|
|
83
|
-
"svelte": "5.
|
|
83
|
+
"svelte": "5.41.1"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@eslint/compat": "^1.4.0",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@lhci/cli": "^0.15.1",
|
|
89
89
|
"@playwright/test": "^1.56.1",
|
|
90
90
|
"@sveltejs/adapter-vercel": "^6.0.0",
|
|
91
|
-
"@sveltejs/kit": "2.47.
|
|
91
|
+
"@sveltejs/kit": "2.47.2",
|
|
92
92
|
"@sveltejs/vite-plugin-svelte": "^6.2.1",
|
|
93
93
|
"@testing-library/jest-dom": "^6.9.1",
|
|
94
94
|
"@testing-library/svelte": "^5.2.8",
|
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"browserslist": "^4.26.3",
|
|
98
98
|
"eslint": "^9.38.0",
|
|
99
99
|
"eslint-config-prettier": "^10.1.8",
|
|
100
|
-
"eslint-plugin-jsdoc": "^61.1.
|
|
101
|
-
"eslint-plugin-svelte": "^3.12.
|
|
100
|
+
"eslint-plugin-jsdoc": "^61.1.5",
|
|
101
|
+
"eslint-plugin-svelte": "^3.12.5",
|
|
102
102
|
"globals": "^16.4.0",
|
|
103
103
|
"jsdom": "26.1.0",
|
|
104
104
|
"lightningcss": "^1.30.2",
|
|
@@ -113,10 +113,10 @@
|
|
|
113
113
|
"stylelint-config-recommended": "^17.0.0",
|
|
114
114
|
"stylelint-order": "^7.0.0",
|
|
115
115
|
"svelte-check": "^4.3.3",
|
|
116
|
-
"svelte-eslint-parser": "^1.
|
|
116
|
+
"svelte-eslint-parser": "^1.4.0",
|
|
117
117
|
"svelte-preprocess": "^6.0.3",
|
|
118
118
|
"typescript": "^5.9.3",
|
|
119
|
-
"vite": "^7.1.
|
|
119
|
+
"vite": "^7.1.11",
|
|
120
120
|
"vite-plugin-lightningcss": "^0.0.5",
|
|
121
121
|
"vite-tsconfig-paths": "^5.1.4",
|
|
122
122
|
"vitest": "^3.2.4"
|
package/src/app.html
CHANGED
|
@@ -24,17 +24,6 @@
|
|
|
24
24
|
sizes="any"
|
|
25
25
|
type="image/x-icon" />
|
|
26
26
|
|
|
27
|
-
<!-- Preconnect to PostHog domains
|
|
28
|
-
<link
|
|
29
|
-
rel="preconnect"
|
|
30
|
-
href="https://us.i.posthog.com"
|
|
31
|
-
crossorigin="anonymous" />
|
|
32
|
-
<link
|
|
33
|
-
rel="preconnect"
|
|
34
|
-
href="https://us-assets.i.posthog.com"
|
|
35
|
-
crossorigin="anonymous" />
|
|
36
|
-
-->
|
|
37
|
-
|
|
38
27
|
<!-- Preload FontAwesome webfonts -->
|
|
39
28
|
<link
|
|
40
29
|
rel="preload"
|
|
@@ -64,7 +53,7 @@
|
|
|
64
53
|
content="bx4ham0zkpvzztzu213bhpt76m9siq" />
|
|
65
54
|
<!-- cspell:enable -->
|
|
66
55
|
|
|
67
|
-
<meta name="generator" content="SvelteKit 2.47.
|
|
56
|
+
<meta name="generator" content="SvelteKit 2.47.2" />
|
|
68
57
|
|
|
69
58
|
<script src="/disableSw.js"></script>
|
|
70
59
|
|
|
@@ -75,12 +75,6 @@ This file is part of Network Pro.
|
|
|
75
75
|
* @type {"high" | "low" | "auto"}
|
|
76
76
|
*/
|
|
77
77
|
export let fetchpriority = 'high';
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Tagline text to display.
|
|
81
|
-
* @type {string}
|
|
82
|
-
*/
|
|
83
|
-
export let tagline = 'Security | Networking | Privacy';
|
|
84
78
|
</script>
|
|
85
79
|
|
|
86
80
|
<!-- BEGIN LOGO AND SITE TITLE -->
|
|
@@ -107,6 +101,7 @@ This file is part of Network Pro.
|
|
|
107
101
|
<div class="spacer"></div>
|
|
108
102
|
|
|
109
103
|
{#if showTagline}
|
|
110
|
-
<h2 class="index-title2"
|
|
104
|
+
<h2 class="index-title2"
|
|
105
|
+
>{['Security', 'Networking', 'Privacy'].join(' \u00A0 | \u00A0 ')}</h2>
|
|
111
106
|
{/if}
|
|
112
107
|
<!-- END LOGO AND SITE TITLE -->
|
|
@@ -15,14 +15,13 @@ This file is part of Network Pro.
|
|
|
15
15
|
|
|
16
16
|
//console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
17
17
|
|
|
18
|
-
const { PAGE } = CONSTANTS;
|
|
18
|
+
const { PAGE, LINKS } = CONSTANTS;
|
|
19
19
|
|
|
20
20
|
const homeLink = base || '/';
|
|
21
21
|
const aboutLink = `${base}/about`;
|
|
22
22
|
const servLink = `${base}/services`;
|
|
23
23
|
const lhubLink = `${base}/links`;
|
|
24
24
|
const fossLink = `${base}/foss-spotlight`;
|
|
25
|
-
const blogLink = 'https://blog.netwk.pro';
|
|
26
25
|
const discussLink =
|
|
27
26
|
'https://github.com/netwk-pro/netwk-pro.github.io/discussions';
|
|
28
27
|
|
|
@@ -46,7 +45,7 @@ This file is part of Network Pro.
|
|
|
46
45
|
{ label: 'services', href: servLink, target: PAGE.SELF, external: false },
|
|
47
46
|
{
|
|
48
47
|
label: 'blog',
|
|
49
|
-
href:
|
|
48
|
+
href: LINKS.BLOG,
|
|
50
49
|
target: PAGE.SELF,
|
|
51
50
|
external: false,
|
|
52
51
|
},
|
package/src/lib/data/fossData.js
CHANGED
|
@@ -6,6 +6,14 @@ SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
|
6
6
|
This file is part of Network Pro.
|
|
7
7
|
========================================================================== */
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* @file fossData.js
|
|
11
|
+
* @description Data for FOSS Spotlight route
|
|
12
|
+
* @module src/lib/data
|
|
13
|
+
* @author Scott Lopez
|
|
14
|
+
* @updated 2025-10-20
|
|
15
|
+
*/
|
|
16
|
+
|
|
9
17
|
// Import FOSS images
|
|
10
18
|
import { acodePng, acodeWbp, cryptomPng, cryptomWbp, eauthPng, eauthWbp, hboardPng, hboardWbp, lsheetPng, lsheetWbp, otphelpPng, otphelpWbp, pmxPng, pmxWbp, squirclePng, squircleWbp, tosPng, tosWbp, urlPng, urlWbp } from "$lib";
|
|
11
19
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/lib/data/pgpKeys.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
|
+
/**
|
|
10
|
+
* @file pgpKeys.js
|
|
11
|
+
* @description Dedicated data module for PGP key definitions
|
|
12
|
+
* @module src/lib/data
|
|
13
|
+
* @author Scott Lopez
|
|
14
|
+
* @updated 2025-10-20
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { getQR } from '$lib';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {{ png?: string; webp?: string }} QrImagePair
|
|
21
|
+
*
|
|
22
|
+
* @typedef {QrImagePair & {
|
|
23
|
+
* id: string;
|
|
24
|
+
* name: string;
|
|
25
|
+
* email: string;
|
|
26
|
+
* fingerprint: string;
|
|
27
|
+
* opgp: string;
|
|
28
|
+
* file: string;
|
|
29
|
+
* }} PgpKeyEntry
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Base definitions for PGP keys. Each `id` must match a QR code image name
|
|
34
|
+
* (e.g. "pgp-support" → pgp-support.png / pgp-support.webp).
|
|
35
|
+
*
|
|
36
|
+
* @type {Array<{
|
|
37
|
+
* id: string;
|
|
38
|
+
* name: string;
|
|
39
|
+
* email: string;
|
|
40
|
+
* fingerprint: string;
|
|
41
|
+
* opgp: string;
|
|
42
|
+
* file: string;
|
|
43
|
+
* }>}
|
|
44
|
+
*/
|
|
45
|
+
const BASE_PGP_KEYS = [
|
|
46
|
+
{
|
|
47
|
+
id: 'pgp-support',
|
|
48
|
+
name: 'General Contact & Support',
|
|
49
|
+
email: 'support (at) netwk.pro',
|
|
50
|
+
fingerprint: '6590 B992 E2E3 EFF1 2738 7BCE 2AF0 93E9 DEC6 1BA0',
|
|
51
|
+
opgp: 'https://keys.openpgp.org/search?q=support%40netwk.pro',
|
|
52
|
+
file: '/pgp/support@netwk.pro.asc',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: 'pgp-contact',
|
|
56
|
+
name: 'Secure Email',
|
|
57
|
+
email: 'contact (at) s.neteng.pro',
|
|
58
|
+
fingerprint: 'DF11 8BAA 6C2D 9DCD EBDC 2DDC F993 7349 9495 F957',
|
|
59
|
+
opgp: 'https://keys.openpgp.org/search?q=contact%40s.neteng.pro',
|
|
60
|
+
file: '/pgp/contact@s.neteng.pro.asc',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 'pgp-security',
|
|
64
|
+
name: 'Security Contact',
|
|
65
|
+
email: 'security (at) s.neteng.pro',
|
|
66
|
+
fingerprint: 'B7FE 1D4E 6CAB 3E71 4A9F DF6E 48CB 7290 C00D 0DA5',
|
|
67
|
+
opgp: 'https://keys.openpgp.org/search?q=security%40s.neteng.pro',
|
|
68
|
+
file: '/pgp/security@s.neteng.pro.asc',
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Full list of enriched PGP keys, each with dynamically resolved QR images.
|
|
74
|
+
*
|
|
75
|
+
* @type {PgpKeyEntry[]}
|
|
76
|
+
*/
|
|
77
|
+
export const PGP_KEYS = BASE_PGP_KEYS.map((entry) => ({
|
|
78
|
+
...entry,
|
|
79
|
+
...getQR(entry.id),
|
|
80
|
+
}));
|
|
81
|
+
|
|
82
|
+
// cspell:ignore EBDC
|
package/src/lib/images.js
CHANGED
|
@@ -13,7 +13,7 @@ This file is part of Network Pro.
|
|
|
13
13
|
* @description Provides convenient access to images in the src/lib/img directory
|
|
14
14
|
* @module src/lib
|
|
15
15
|
* @author Scott Lopez
|
|
16
|
-
* @updated 2025-
|
|
16
|
+
* @updated 2025-10-20
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
// Import favicon images
|
|
@@ -33,6 +33,7 @@ import bySvg from '$lib/img/by.svg';
|
|
|
33
33
|
import ccSvg from '$lib/img/cc.svg';
|
|
34
34
|
import obtainiumPng from '$lib/img/obtainium.png';
|
|
35
35
|
import obtainiumWbp from '$lib/img/obtainium.webp';
|
|
36
|
+
import protonPower from '$lib/img/powered-by-proton.svg';
|
|
36
37
|
|
|
37
38
|
// Import images for posts
|
|
38
39
|
import acodePng from '$lib/img/posts/acode.png';
|
|
@@ -56,15 +57,47 @@ import tosWbp from '$lib/img/posts/tosdr.webp';
|
|
|
56
57
|
import urlPng from '$lib/img/posts/urlcheck.png';
|
|
57
58
|
import urlWbp from '$lib/img/posts/urlcheck.webp';
|
|
58
59
|
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
import
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
// ================================================================
|
|
61
|
+
// Dynamic QR code image imports
|
|
62
|
+
// ================================================================
|
|
63
|
+
|
|
64
|
+
// Dynamically import all QR code images in src/lib/img/qr
|
|
65
|
+
const qrModules = import.meta.glob('$lib/img/qr/*.{png,webp}', { eager: true });
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Aggregated QR code image lookup.
|
|
69
|
+
* Example: QR_IMAGES['pgp-support'].png → blob URL
|
|
70
|
+
* @typedef {'png' | 'webp'} QRExtension
|
|
71
|
+
* @type {Record<string, { png?: string; webp?: string }>}
|
|
72
|
+
*/
|
|
73
|
+
export const QR_IMAGES = {};
|
|
74
|
+
|
|
75
|
+
// Populate QR_IMAGES
|
|
76
|
+
for (const [path, mod] of Object.entries(qrModules)) {
|
|
77
|
+
// Ensure we’re dealing with an ES module with a default export
|
|
78
|
+
const module = /** @type {{ default: string }} */ (mod);
|
|
79
|
+
|
|
80
|
+
const file = path.split('/').pop();
|
|
81
|
+
if (!file) continue; // file is possibly undefined
|
|
82
|
+
|
|
83
|
+
const [name, ext] = file.split('.');
|
|
84
|
+
if (!QR_IMAGES[name]) QR_IMAGES[name] = {};
|
|
85
|
+
|
|
86
|
+
if (ext === 'png' || ext === 'webp') {
|
|
87
|
+
QR_IMAGES[name][ext] = module.default;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Retrieve QR code image pair (png/webp) by name.
|
|
93
|
+
* Safely returns an empty object if not found.
|
|
94
|
+
*
|
|
95
|
+
* @param {string} name - Base filename (e.g., "pgp-support" or "vcard")
|
|
96
|
+
* @returns {{ png?: string; webp?: string }}
|
|
97
|
+
*/
|
|
98
|
+
export function getQR(name) {
|
|
99
|
+
return QR_IMAGES[name] ?? {};
|
|
100
|
+
}
|
|
68
101
|
|
|
69
102
|
// Re-export all imports
|
|
70
103
|
export {
|
|
@@ -87,19 +120,15 @@ export {
|
|
|
87
120
|
lsheetPng,
|
|
88
121
|
lsheetWbp, obtainiumPng,
|
|
89
122
|
obtainiumWbp, otphelpPng,
|
|
90
|
-
otphelpWbp,
|
|
91
|
-
pgpContactWbp, pgpSecurityPng,
|
|
92
|
-
pgpSecurityWbp, pgpSupportPng,
|
|
93
|
-
pgpSupportWbp, pmxPng,
|
|
123
|
+
otphelpWbp, pmxPng,
|
|
94
124
|
pmxWbp,
|
|
125
|
+
protonPower,
|
|
95
126
|
squirclePng,
|
|
96
127
|
squircleWbp,
|
|
97
128
|
tosPng,
|
|
98
129
|
tosWbp,
|
|
99
130
|
urlPng,
|
|
100
|
-
urlWbp
|
|
101
|
-
vcfPng,
|
|
102
|
-
vcfWbp
|
|
131
|
+
urlWbp
|
|
103
132
|
};
|
|
104
133
|
|
|
105
134
|
// cspell:ignore eauth hboard cryptom tosdr otphelp
|
package/src/lib/index.js
CHANGED
|
@@ -16,7 +16,7 @@ This file is part of Network Pro.
|
|
|
16
16
|
* and re-exported here for flat `$lib` imports.
|
|
17
17
|
* @module src/lib
|
|
18
18
|
* @author Scott Lopez
|
|
19
|
-
* @updated 2025-10-
|
|
19
|
+
* @updated 2025-10-20
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
// Re-export all images so they can be imported directly from `$lib`
|
|
@@ -30,6 +30,9 @@ export * from './components/index.js';
|
|
|
30
30
|
// Re-export all pages so they can be imported directly from `$lib`
|
|
31
31
|
export * from './pages/index.js';
|
|
32
32
|
|
|
33
|
+
// Re-export `pgpKeys` data so it can be imported directly from `$lib`
|
|
34
|
+
export { PGP_KEYS } from '$lib/data/pgpKeys.js';
|
|
35
|
+
|
|
33
36
|
// Export utility functions
|
|
34
37
|
// Uncomment and adjust these as needed for your project
|
|
35
38
|
// export * from './utils/formatting.js';
|
|
@@ -53,9 +56,12 @@ export const CONSTANTS = {
|
|
|
53
56
|
YEAR: '2025',
|
|
54
57
|
},
|
|
55
58
|
CONTACT: {
|
|
56
|
-
EMAIL: 'support (at)
|
|
59
|
+
EMAIL: 'support (at) netwk.pro',
|
|
60
|
+
EMAIL_LINK: 'support@netwk.pro',
|
|
57
61
|
SECURE: 'contact (at) s.neteng.pro',
|
|
62
|
+
SECURE_LINK: 'contact@s.neteng.pro',
|
|
58
63
|
PRIVACY: 'privacy (at) netwk.pro',
|
|
64
|
+
PRIVACY_LINK: 'privacy@netwk.pro',
|
|
59
65
|
PHONE: '(623) 252-4350',
|
|
60
66
|
},
|
|
61
67
|
PAGE: {
|