@networkpro/web 1.12.9 → 1.13.1

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.
Files changed (108) hide show
  1. package/CHANGELOG.md +65 -1
  2. package/README.md +26 -18
  3. package/cspell.json +1 -0
  4. package/eslint.config.mjs +48 -48
  5. package/netlify/edge-functions/csp-report.js +31 -31
  6. package/package.json +3 -3
  7. package/playwright.config.js +14 -14
  8. package/postcss.config.mjs +1 -1
  9. package/scripts/auditScripts.js +16 -16
  10. package/scripts/bundleCss.js +5 -5
  11. package/scripts/checkEnv.js +6 -6
  12. package/scripts/checkNode.js +10 -10
  13. package/scripts/checkVersions.js +6 -6
  14. package/scripts/flattenHeaders.js +13 -13
  15. package/scripts/generateTest.js +5 -5
  16. package/scripts/openReport.js +3 -3
  17. package/scripts/validateHeaders.js +13 -13
  18. package/src/app.html +0 -9
  19. package/src/hooks.client.ts +1 -1
  20. package/src/hooks.server.js +31 -32
  21. package/src/lib/components/Badges.svelte +10 -10
  22. package/src/lib/components/CodeBlock.svelte +1 -1
  23. package/src/lib/components/ContainerSection.svelte +1 -1
  24. package/src/lib/components/FullWidthSection.svelte +3 -3
  25. package/src/lib/components/LegalNav.svelte +7 -7
  26. package/src/lib/components/Logo.svelte +9 -9
  27. package/src/lib/components/MetaTags.svelte +4 -4
  28. package/src/lib/components/PWAInstallButton.svelte +4 -4
  29. package/src/lib/components/RedirectPage.svelte +4 -4
  30. package/src/lib/components/SocialMedia.svelte +16 -16
  31. package/src/lib/components/foss/FossItemContent.svelte +27 -58
  32. package/src/lib/components/foss/ObtainiumBlock.svelte +64 -0
  33. package/src/lib/components/layout/Footer.svelte +18 -18
  34. package/src/lib/components/layout/HeaderDefault.svelte +16 -16
  35. package/src/lib/components/layout/HeaderHome.svelte +14 -14
  36. package/src/lib/data/fossData.js +22 -10
  37. package/src/lib/images.js +34 -34
  38. package/src/lib/img/obtainium.png +0 -0
  39. package/src/lib/img/obtainium.webp +0 -0
  40. package/src/lib/index.js +15 -15
  41. package/src/lib/meta.js +29 -29
  42. package/src/lib/pages/AboutContent.svelte +24 -24
  43. package/src/lib/pages/FossContent.svelte +13 -13
  44. package/src/lib/pages/HomeContent.svelte +7 -7
  45. package/src/lib/pages/LicenseContent.svelte +39 -39
  46. package/src/lib/pages/PGPContent.svelte +23 -23
  47. package/src/lib/pages/PrivacyContent.svelte +39 -39
  48. package/src/lib/pages/PrivacyDashboard.svelte +12 -12
  49. package/src/lib/pages/TermsConditionsContent.svelte +29 -29
  50. package/src/lib/pages/TermsUseContent.svelte +26 -26
  51. package/src/lib/registerServiceWorker.js +25 -25
  52. package/src/lib/stores/posthog.js +13 -13
  53. package/src/lib/stores/trackingPreferences.js +19 -19
  54. package/src/lib/styles/css/default.css +30 -0
  55. package/src/lib/styles/global.min.css +1 -1
  56. package/src/lib/types/fossTypes.js +9 -2
  57. package/src/lib/unregisterServiceWorker.js +1 -1
  58. package/src/lib/utils/purify.js +4 -4
  59. package/src/lib/utils/utm.js +2 -2
  60. package/src/routes/+error.svelte +4 -4
  61. package/src/routes/+layout.js +6 -6
  62. package/src/routes/+layout.svelte +29 -29
  63. package/src/routes/+page.server.js +2 -2
  64. package/src/routes/+page.svelte +9 -9
  65. package/src/routes/about/+page.server.js +2 -2
  66. package/src/routes/about/+page.svelte +7 -7
  67. package/src/routes/api/mock-csp/+server.js +3 -3
  68. package/src/routes/consultation/+page.svelte +5 -5
  69. package/src/routes/contact/+page.svelte +5 -5
  70. package/src/routes/foss-spotlight/+page.server.js +2 -2
  71. package/src/routes/foss-spotlight/+page.svelte +7 -7
  72. package/src/routes/license/+page.server.js +2 -2
  73. package/src/routes/license/+page.svelte +7 -7
  74. package/src/routes/pgp/+page.server.js +2 -2
  75. package/src/routes/pgp/+page.svelte +7 -7
  76. package/src/routes/pgp/[key]/+server.js +9 -9
  77. package/src/routes/privacy/+page.server.js +2 -2
  78. package/src/routes/privacy/+page.svelte +7 -7
  79. package/src/routes/privacy-dashboard/+page.server.js +2 -2
  80. package/src/routes/privacy-dashboard/+page.svelte +8 -8
  81. package/src/routes/privacy-rights/+page.svelte +5 -5
  82. package/src/routes/status/+page.server.js +2 -2
  83. package/src/routes/terms-conditions/+page.server.js +2 -2
  84. package/src/routes/terms-conditions/+page.svelte +7 -7
  85. package/src/routes/terms-of-use/+page.server.js +2 -2
  86. package/src/routes/terms-of-use/+page.svelte +7 -7
  87. package/src/service-worker.js +86 -86
  88. package/static/bin/heliboard.json +8 -0
  89. package/static/disableSw.js +2 -2
  90. package/static/offline.html +7 -7
  91. package/stylelint.config.js +56 -56
  92. package/svelte.config.js +6 -6
  93. package/tests/e2e/app.spec.js +27 -27
  94. package/tests/e2e/mobile.spec.js +18 -18
  95. package/tests/e2e/shared/helpers.js +4 -4
  96. package/tests/internal/auditCoverage.test.js +24 -24
  97. package/tests/unit/checkEnv.test.js +10 -10
  98. package/tests/unit/checkVersions.test.js +4 -4
  99. package/tests/unit/csp-report.test.js +24 -24
  100. package/tests/unit/demo.test.js +3 -3
  101. package/tests/unit/lib/utils/purify.test.js +12 -12
  102. package/tests/unit/routes/page.svelte.test.js +10 -10
  103. package/tests/unit/unregisterServiceWorker.test.js +5 -5
  104. package/tests/unit/utm.test.js +13 -13
  105. package/vite.config.js +5 -5
  106. package/vitest-setup-client.js +4 -4
  107. package/vitest.config.client.js +15 -15
  108. package/vitest.config.server.js +13 -13
@@ -7,14 +7,14 @@ This file is part of Network Pro.
7
7
  ========================================================================== -->
8
8
 
9
9
  <script>
10
- import { base } from "$app/paths";
10
+ import { base } from '$app/paths';
11
11
 
12
12
  // Log the base path to verify its value
13
13
  //console.log("Base path:", base);
14
14
 
15
15
  const aboutLink = `${base}/about`;
16
16
  const fossLink = `${base}/foss-spotlight`;
17
- const blogLink = "https://blog.netwk.pro";
17
+ const blogLink = 'https://blog.netwk.pro';
18
18
 
19
19
  /**
20
20
  * Navigation link object.
@@ -30,24 +30,24 @@ This file is part of Network Pro.
30
30
  * @type {NavItem[]}
31
31
  */
32
32
  const nav = [
33
- { label: "about", href: aboutLink, target: "_self", external: false },
34
- { label: "foss", href: fossLink, target: "_self", external: false },
33
+ { label: 'about', href: aboutLink, target: '_self', external: false },
34
+ { label: 'foss', href: fossLink, target: '_self', external: false },
35
35
  {
36
- label: "blog",
36
+ label: 'blog',
37
37
  href: blogLink,
38
- target: "_self",
38
+ target: '_self',
39
39
  external: false,
40
40
  },
41
41
  {
42
- label: "discussions",
43
- href: "https://github.com/netwk-pro/netwk-pro.github.io/discussions",
44
- target: "_blank",
42
+ label: 'discussions',
43
+ href: 'https://github.com/netwk-pro/netwk-pro.github.io/discussions',
44
+ target: '_blank',
45
45
  external: true,
46
46
  },
47
47
  {
48
- label: "link hub",
49
- href: "https://linktr.ee/neteng_pro",
50
- target: "_blank",
48
+ label: 'link hub',
49
+ href: 'https://linktr.ee/neteng_pro',
50
+ target: '_blank',
51
51
  external: true,
52
52
  },
53
53
  ];
@@ -56,7 +56,7 @@ This file is part of Network Pro.
56
56
  * Relation attribute for external links.
57
57
  * @type {string}
58
58
  */
59
- const rel = "noopener noreferrer";
59
+ const rel = 'noopener noreferrer';
60
60
  </script>
61
61
 
62
62
  <!-- BEGIN HOME HEADER -->
@@ -74,7 +74,7 @@ This file is part of Network Pro.
74
74
  {/if}
75
75
  <!-- Separator logic -->
76
76
  {#if index < nav.length - 1}
77
- {#if label === "blog"}
77
+ {#if label === 'blog'}
78
78
  <br />
79
79
  {:else}
80
80
  <span class="goldseparator">|</span>
@@ -7,14 +7,23 @@ This file is part of Network Pro.
7
7
  ========================================================================== */
8
8
 
9
9
  // Import FOSS images
10
- import { base } from "$app/paths";
11
10
  import { acodePng, acodeWbp, eauthPng, eauthWbp, hboardPng, hboardWbp, lsheetPng, lsheetWbp, pmxPng, pmxWbp, squirclePng, squircleWbp, tosPng, tosWbp, urlPng, urlWbp } from "$lib";
12
11
 
12
+ // cspell:disable
13
13
  /**
14
- * URL to the LinkSheet config file, using the base path
14
+ * External URL to add HeliBoard to Obtainium
15
15
  * @type {string}
16
16
  */
17
- const lsheetDl = `${base}/bin/linksheet.json`;
17
+ const hboardLink = "obtainium://app/%7B%22id%22%3A%22helium314.keyboard%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FHelium314%2FHeliBoard%22%2C%22author%22%3A%22Helium314%22%2C%22name%22%3A%22HeliBoard%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22release%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22HeliBoard%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22HeliBoard%20is%20a%20privacy-conscious%20and%20customizable%20open-source%20keyboard%2C%20based%20on%20AOSP%20%2F%20OpenBoard.%20Does%20not%20use%20internet%20permission%2C%20and%20thus%20is%20100%25%20offline.%5C%22%2C%5C%22appAuthor%5C%22%3A%5C%22Helium314%5C%22%7D%22%7D";
18
+ //cspell:enable
19
+
20
+ // cspell:disable
21
+ /**
22
+ * External URL to add LinkSheet Nightly to Obtainium
23
+ * @type {string}
24
+ */
25
+ const lsheetLink = "obtainium://app/%7B%22id%22%3A%22fe.linksheet.nightly%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FLinkSheet%2Fnightly%22%2C%22author%22%3A%221fexd%22%2C%22name%22%3A%22LinkSheet%20Nightly%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Atrue%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Afalse%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22LinkSheet.Nightly%5C%22%2C%5C%22invertAPKFilter%5C%22%3Atrue%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22LinkSheet%20Nightly%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22Restore%20link%20control%20on%20Android%2012%2B%5C%22%2C%5C%22appAuthor%5C%22%3A%5C%221fexd%5C%22%7D%22%7D";
26
+ //cspell:enable
18
27
 
19
28
  export const fossData = [
20
29
  {
@@ -138,6 +147,11 @@ export const fossData = [
138
147
  </p>
139
148
 
140
149
  `,
150
+ obtainium: {
151
+ label: "Obtainium App Config",
152
+ href: hboardLink,
153
+ download: "/bin/heliboard.json"
154
+ },
141
155
  links: [
142
156
  {
143
157
  label: "GitHub",
@@ -511,14 +525,12 @@ export const fossData = [
511
525
  ],
512
526
  detailsDescription: `
513
527
  `,
528
+ obtainium: {
529
+ label: "Obtainium App Config",
530
+ href: lsheetLink,
531
+ download: "/bin/linksheet.json"
532
+ },
514
533
  links: [
515
- {
516
- imgAlt: "Obtainium",
517
- hideLabels: true, // Special flag to control rendering
518
- downloadText: "Obtainium App Config",
519
- downloadHref:
520
- {lsheetDl},
521
- },
522
534
  {
523
535
  label: "GitHub",
524
536
  href: "https://github.com/LinkSheet/LinkSheet",
package/src/lib/images.js CHANGED
@@ -19,50 +19,50 @@ This file is part of Network Pro.
19
19
  */
20
20
 
21
21
  // Import favicon images
22
- import faviconSvg from "$lib/img/favicon.svg";
23
- import appleTouchIcon from "$lib/img/icon-180x180.png";
22
+ import faviconSvg from '$lib/img/favicon.svg';
23
+ import appleTouchIcon from '$lib/img/icon-180x180.png';
24
24
 
25
25
  // Import logo image
26
- import logoPng from "$lib/img/logo-web.png";
27
- import logoWbp from "$lib/img/logo-web.webp";
26
+ import logoPng from '$lib/img/logo-web.png';
27
+ import logoWbp from '$lib/img/logo-web.webp';
28
28
 
29
29
  // Import badges
30
- import ccBadge from "$lib/img/badges/cc-by-badge.png";
31
- import gplBadge from "$lib/img/badges/gpl-badge.svg";
30
+ import ccBadge from '$lib/img/badges/cc-by-badge.png';
31
+ import gplBadge from '$lib/img/badges/gpl-badge.svg';
32
32
 
33
33
  // Import general images
34
- import bySvg from "$lib/img/by.svg";
35
- import ccSvg from "$lib/img/cc.svg";
36
- import obtainiumPng from "$lib/img/obtainium.png";
37
- import obtainiumWbp from "$lib/img/obtainium.webp";
34
+ import bySvg from '$lib/img/by.svg';
35
+ import ccSvg from '$lib/img/cc.svg';
36
+ import obtainiumPng from '$lib/img/obtainium.png';
37
+ import obtainiumWbp from '$lib/img/obtainium.webp';
38
38
 
39
39
  // Import images for posts
40
- import acodePng from "$lib/img/posts/acode.png";
41
- import acodeWbp from "$lib/img/posts/acode.webp";
42
- import eauthPng from "$lib/img/posts/eauth.png";
43
- import eauthWbp from "$lib/img/posts/eauth.webp";
44
- import hboardPng from "$lib/img/posts/hboard.png";
45
- import hboardWbp from "$lib/img/posts/hboard.webp";
46
- import lsheetPng from "$lib/img/posts/linksheet.png";
47
- import lsheetWbp from "$lib/img/posts/linksheet.webp";
48
- import pmxPng from "$lib/img/posts/pmx.png";
49
- import pmxWbp from "$lib/img/posts/pmx.webp";
50
- import squirclePng from "$lib/img/posts/squircle.png";
51
- import squircleWbp from "$lib/img/posts/squircle.webp";
52
- import tosPng from "$lib/img/posts/tosdr.png";
53
- import tosWbp from "$lib/img/posts/tosdr.webp";
54
- import urlPng from "$lib/img/posts/urlcheck.png";
55
- import urlWbp from "$lib/img/posts/urlcheck.webp";
40
+ import acodePng from '$lib/img/posts/acode.png';
41
+ import acodeWbp from '$lib/img/posts/acode.webp';
42
+ import eauthPng from '$lib/img/posts/eauth.png';
43
+ import eauthWbp from '$lib/img/posts/eauth.webp';
44
+ import hboardPng from '$lib/img/posts/hboard.png';
45
+ import hboardWbp from '$lib/img/posts/hboard.webp';
46
+ import lsheetPng from '$lib/img/posts/linksheet.png';
47
+ import lsheetWbp from '$lib/img/posts/linksheet.webp';
48
+ import pmxPng from '$lib/img/posts/pmx.png';
49
+ import pmxWbp from '$lib/img/posts/pmx.webp';
50
+ import squirclePng from '$lib/img/posts/squircle.png';
51
+ import squircleWbp from '$lib/img/posts/squircle.webp';
52
+ import tosPng from '$lib/img/posts/tosdr.png';
53
+ import tosWbp from '$lib/img/posts/tosdr.webp';
54
+ import urlPng from '$lib/img/posts/urlcheck.png';
55
+ import urlWbp from '$lib/img/posts/urlcheck.webp';
56
56
 
57
57
  // Import QR code images
58
- import pgpContactPng from "$lib/img/qr/pgp-contact.png";
59
- import pgpContactWbp from "$lib/img/qr/pgp-contact.webp";
60
- import pgpSecurityPng from "$lib/img/qr/pgp-security.png";
61
- import pgpSecurityWbp from "$lib/img/qr/pgp-security.webp";
62
- import pgpSupportPng from "$lib/img/qr/pgp-support.png";
63
- import pgpSupportWbp from "$lib/img/qr/pgp-support.webp";
64
- import vcfPng from "$lib/img/qr/vcard.png";
65
- import vcfWbp from "$lib/img/qr/vcard.webp";
58
+ import pgpContactPng from '$lib/img/qr/pgp-contact.png';
59
+ import pgpContactWbp from '$lib/img/qr/pgp-contact.webp';
60
+ import pgpSecurityPng from '$lib/img/qr/pgp-security.png';
61
+ import pgpSecurityWbp from '$lib/img/qr/pgp-security.webp';
62
+ import pgpSupportPng from '$lib/img/qr/pgp-support.png';
63
+ import pgpSupportWbp from '$lib/img/qr/pgp-support.webp';
64
+ import vcfPng from '$lib/img/qr/vcard.png';
65
+ import vcfWbp from '$lib/img/qr/vcard.webp';
66
66
 
67
67
  // Re-export all imports
68
68
  export {
Binary file
Binary file
package/src/lib/index.js CHANGED
@@ -18,7 +18,7 @@ This file is part of Network Pro.
18
18
 
19
19
  // Re-export images from dedicated images.js file
20
20
  // This maintains backward compatibility with existing imports
21
- export * from "./images.js";
21
+ export * from './images.js';
22
22
 
23
23
  // Export utility functions
24
24
  // Uncomment and adjust these as needed for your project
@@ -38,27 +38,27 @@ export * from "./images.js";
38
38
  /** @type {AppConstants} */
39
39
  export const CONSTANTS = {
40
40
  COMPANY_INFO: {
41
- NAME: "Network Pro Strategies",
42
- APP_NAME: "Network Pro",
43
- YEAR: "2025",
41
+ NAME: 'Network Pro Strategies',
42
+ APP_NAME: 'Network Pro',
43
+ YEAR: '2025',
44
44
  },
45
45
  CONTACT: {
46
- EMAIL: "support (at) neteng.pro",
47
- SECURE: "contact (at) s.neteng.pro",
48
- PRIVACY: "privacy (at) netwk.pro",
49
- PHONE: "(623) 252-4350",
46
+ EMAIL: 'support (at) neteng.pro',
47
+ SECURE: 'contact (at) s.neteng.pro',
48
+ PRIVACY: 'privacy (at) netwk.pro',
49
+ PHONE: '(623) 252-4350',
50
50
  },
51
51
  PAGE: {
52
- BLANK: "_blank",
53
- REL: "noopener noreferrer",
54
- SELF: "_self",
52
+ BLANK: '_blank',
53
+ REL: 'noopener noreferrer',
54
+ SELF: '_self',
55
55
  },
56
56
  NAV: {
57
- BACKTOP: "Back to top",
58
- HREFTOP: "#top",
57
+ BACKTOP: 'Back to top',
58
+ HREFTOP: '#top',
59
59
  },
60
60
  LINKS: {
61
- HOME: "https://netwk.pro",
62
- BLOG: "https://blog.netwk.pro",
61
+ HOME: 'https://netwk.pro',
62
+ BLOG: 'https://blog.netwk.pro',
63
63
  },
64
64
  };
package/src/lib/meta.js CHANGED
@@ -16,59 +16,59 @@ This file is part of Network Pro.
16
16
  * @type {Record<string, MetaData>}
17
17
  */
18
18
  const meta = {
19
- "/": {
19
+ '/': {
20
20
  title:
21
- "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™",
21
+ 'Security, Networking, Privacy — Network Pro Strategies',
22
22
  description:
23
- "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™",
23
+ 'Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™',
24
24
  },
25
- "/about": {
26
- title: "About Us — Network Pro™",
27
- description: "About Us | Security, Networking, Privacy — Network Pro™",
25
+ '/about': {
26
+ title: 'About Us — Network Pro™',
27
+ description: 'About Us | Security, Networking, Privacy — Network Pro™',
28
28
  },
29
- "/privacy": {
30
- title: "Privacy Policy — Network Pro™",
29
+ '/privacy': {
30
+ title: 'Privacy Policy — Network Pro™',
31
31
  description:
32
- "Privacy Policy | Security, Networking, Privacy — Network Pro™",
32
+ 'Privacy Policy | Security, Networking, Privacy — Network Pro™',
33
33
  },
34
- "/terms-of-use": {
35
- title: "Website Terms of Use — Network Pro™",
34
+ '/terms-of-use': {
35
+ title: 'Website Terms of Use — Network Pro™',
36
36
  description:
37
- "Website Terms of Use | Security, Networking, Privacy — Network Pro™",
37
+ 'Website Terms of Use | Security, Networking, Privacy — Network Pro™',
38
38
  },
39
- "/license": {
40
- title: "Legal, Copyright, and Licensing — Network Pro™",
39
+ '/license': {
40
+ title: 'Legal, Copyright, and Licensing — Network Pro™',
41
41
  description:
42
- "Legal, Copyright, and Licensing | Security, Networking, Privacy — Network Pro™",
42
+ 'Legal, Copyright, and Licensing | Security, Networking, Privacy — Network Pro™',
43
43
  },
44
- "/terms-conditions": {
45
- title: "Consulting Terms and Conditions — Network Pro™",
44
+ '/terms-conditions': {
45
+ title: 'Consulting Terms and Conditions — Network Pro™',
46
46
  description:
47
- "Terms and Conditions | Security, Networking, Privacy — Network Pro™",
47
+ 'Terms and Conditions | Security, Networking, Privacy — Network Pro™',
48
48
  },
49
- "/foss-spotlight": {
50
- title: "FOSS Spotlight — Network Pro™",
49
+ '/foss-spotlight': {
50
+ title: 'FOSS Spotlight — Network Pro™',
51
51
  description:
52
- "FOSS Spotlight | Security, Networking, Privacy — Network Pro™",
52
+ 'FOSS Spotlight | Security, Networking, Privacy — Network Pro™',
53
53
  },
54
- "/privacy-dashboard": {
55
- title: "Privacy Dashboard — Network Pro™",
54
+ '/privacy-dashboard': {
55
+ title: 'Privacy Dashboard — Network Pro™',
56
56
  description:
57
- "Privacy Dashboard | Security, Networking, Privacy — Network Pro™",
57
+ 'Privacy Dashboard | Security, Networking, Privacy — Network Pro™',
58
58
  },
59
- "/pgp": {
60
- title: "Public PGP Keys — Network Pro™",
59
+ '/pgp': {
60
+ title: 'Public PGP Keys — Network Pro™',
61
61
  description:
62
- "Public encryption keys for secure communication | Security, Networking, Privacy — Network Pro™",
62
+ 'Public encryption keys for secure communication | Security, Networking, Privacy — Network Pro™',
63
63
  },
64
64
  // Excludes redirect-only routes like /contact, /consultation, /privacy-rights
65
65
  };
66
66
 
67
67
  /** @type {MetaData} */
68
68
  const defaultMeta = {
69
- title: "Loading... | Network Pro™",
69
+ title: 'Loading... | Network Pro™',
70
70
  description:
71
- "Please wait while the content loads... | Security, Networking, Privacy — Network Pro™",
71
+ 'Please wait while the content loads... | Security, Networking, Privacy — Network Pro™',
72
72
  };
73
73
 
74
74
  // Export values
@@ -14,9 +14,9 @@ This file is part of Network Pro.
14
14
  pgpSupportWbp,
15
15
  vcfPng,
16
16
  vcfWbp,
17
- } from "$lib";
18
- import { base } from "$app/paths";
19
- import { CONSTANTS } from "$lib";
17
+ } from '$lib';
18
+ import { base } from '$app/paths';
19
+ import { CONSTANTS } from '$lib';
20
20
 
21
21
  // Log the base path to verify its value
22
22
  //console.log("Base path:", base);
@@ -41,19 +41,19 @@ This file is part of Network Pro.
41
41
  * HTML attribute for async image decoding
42
42
  * @type {"async" | "sync" | "auto"}
43
43
  */
44
- const decoding = "async";
44
+ const decoding = 'async';
45
45
 
46
46
  /**
47
47
  * HTML attribute for lazy loading images
48
48
  * @type {"lazy" | "eager"}
49
49
  */
50
- const loading = "lazy";
50
+ const loading = 'lazy';
51
51
 
52
52
  /**
53
53
  * CSS class for styled horizontal rule
54
54
  * @type {string}
55
55
  */
56
- const hrStyle = "hr-styled";
56
+ const hrStyle = 'hr-styled';
57
57
 
58
58
  /**
59
59
  * Navigation links for the page
@@ -66,15 +66,15 @@ This file is part of Network Pro.
66
66
  */
67
67
  const navLinks = [
68
68
  {
69
- label: "SPDX License Identifier",
70
- href: "https://spdx.dev/learn/handling-license-info",
71
- target: "_blank",
72
- text: "CC-BY-4.0 OR GPL-3.0-or-later",
69
+ label: 'SPDX License Identifier',
70
+ href: 'https://spdx.dev/learn/handling-license-info',
71
+ target: '_blank',
72
+ text: 'CC-BY-4.0 OR GPL-3.0-or-later',
73
73
  },
74
74
  {
75
- label: "Docs",
76
- href: "https://docs.netwk.pro",
77
- target: "_self",
75
+ label: 'Docs',
76
+ href: 'https://docs.netwk.pro',
77
+ target: '_self',
78
78
  },
79
79
  ];
80
80
 
@@ -90,18 +90,18 @@ This file is part of Network Pro.
90
90
  */
91
91
  const pgpKeys = [
92
92
  {
93
- label: "support@neteng.pro",
93
+ label: 'support@neteng.pro',
94
94
  qrSrc: pgpSupportPng,
95
95
  qrWbp: pgpSupportWbp,
96
- keySearch: "https://keys.openpgp.org/search?q=support%40neteng.pro",
97
- fingerprint: ["6590B992E2E3EFF12738", "7BCE2AF093E9DEC61BA0"],
96
+ keySearch: 'https://keys.openpgp.org/search?q=support%40neteng.pro',
97
+ fingerprint: ['6590B992E2E3EFF12738', '7BCE2AF093E9DEC61BA0'],
98
98
  },
99
99
  {
100
- label: "contact@s.neteng.pro",
100
+ label: 'contact@s.neteng.pro',
101
101
  qrSrc: pgpContactPng,
102
102
  qrWbp: pgpContactWbp,
103
- keySearch: "https://keys.openpgp.org/search?q=contact%40s.neteng.pro",
104
- fingerprint: ["DF118BAA6C2D9DCDEBDC", "2DDCF99373499495F957"],
103
+ keySearch: 'https://keys.openpgp.org/search?q=contact%40s.neteng.pro',
104
+ fingerprint: ['DF118BAA6C2D9DCDEBDC', '2DDCF99373499495F957'],
105
105
  },
106
106
  ];
107
107
 
@@ -116,11 +116,11 @@ This file is part of Network Pro.
116
116
 
117
117
  /** @type {ContactAssets} */
118
118
  const contactAssets = {
119
- vcf: "/bin/contact.vcf",
119
+ vcf: '/bin/contact.vcf',
120
120
  qrSrc: vcfPng,
121
121
  qrWbp: vcfWbp,
122
- supportAsc: "/pgp/support@neteng.pro.asc",
123
- contactAsc: "/pgp/contact@s.neteng.pro.asc",
122
+ supportAsc: '/pgp/support@neteng.pro.asc',
123
+ contactAsc: '/pgp/contact@s.neteng.pro.asc',
124
124
  };
125
125
  </script>
126
126
 
@@ -269,7 +269,7 @@ This file is part of Network Pro.
269
269
  <p
270
270
  >Fingerprint:<br />
271
271
  <span class="fingerprint">
272
- {pgpKeys[0].fingerprint.join("\n")}
272
+ {pgpKeys[0].fingerprint.join('\n')}
273
273
  </span>
274
274
  </p>
275
275
  </td>
@@ -294,7 +294,7 @@ This file is part of Network Pro.
294
294
  <p
295
295
  >Fingerprint:<br />
296
296
  <span class="fingerprint">
297
- {pgpKeys[1].fingerprint.join("\n")}
297
+ {pgpKeys[1].fingerprint.join('\n')}
298
298
  </span>
299
299
  </p>
300
300
  </td>
@@ -7,11 +7,11 @@ This file is part of Network Pro.
7
7
  ========================================================================== -->
8
8
 
9
9
  <script>
10
- import { fossData } from "$lib/data/fossData.js";
11
- import FossItemContent from "$lib/components/foss/FossItemContent.svelte";
12
- import { CONSTANTS } from "$lib";
10
+ import { fossData } from '$lib/data/fossData.js';
11
+ import FossItemContent from '$lib/components/foss/FossItemContent.svelte';
12
+ import { CONSTANTS } from '$lib';
13
13
 
14
- console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
14
+ //console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
15
15
 
16
16
  const { PAGE } = CONSTANTS;
17
17
 
@@ -32,12 +32,12 @@ This file is part of Network Pro.
32
32
 
33
33
  // Now create a new object with all default values
34
34
  return {
35
- label: typedLink.label || "Download",
36
- href: typedLink.href || "#",
37
- imgSrc: typedLink.imgSrc || "",
38
- imgAlt: typedLink.imgAlt || "",
39
- downloadText: typedLink.downloadText || "",
40
- downloadHref: typedLink.downloadHref || "",
35
+ label: typedLink.label || 'Download',
36
+ href: typedLink.href || '#',
37
+ imgSrc: typedLink.imgSrc || '',
38
+ imgAlt: typedLink.imgAlt || '',
39
+ downloadText: typedLink.downloadText || '',
40
+ downloadHref: typedLink.downloadHref || '',
41
41
  };
42
42
  });
43
43
  }
@@ -50,8 +50,8 @@ This file is part of Network Pro.
50
50
  * @type {{title: string, lastUpdated: string}}
51
51
  */
52
52
  const pageInfo = {
53
- title: "FOSS Spotlight",
54
- lastUpdated: "June 8, 2025",
53
+ title: 'FOSS Spotlight',
54
+ lastUpdated: 'June 12, 2025',
55
55
  };
56
56
  </script>
57
57
 
@@ -83,7 +83,7 @@ This file is part of Network Pro.
83
83
  <h2>Table of Contents</h2>
84
84
  <ul>
85
85
  {#each processedFossData as { id, title }}
86
- <li><a href={"#" + id}>{title}</a></li>
86
+ <li><a href={'#' + id}>{title}</a></li>
87
87
  {/each}
88
88
  </ul>
89
89
  </nav>
@@ -7,13 +7,13 @@ This file is part of Network Pro.
7
7
  ========================================================================== -->
8
8
 
9
9
  <script>
10
- import { base } from "$app/paths";
11
- import { CONSTANTS } from "$lib";
10
+ import { base } from '$app/paths';
11
+ import { CONSTANTS } from '$lib';
12
12
 
13
13
  // Log the base path to verify its value
14
14
  //console.log("Base path:", base);
15
15
 
16
- console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
16
+ //console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
17
17
 
18
18
  const { COMPANY_INFO, PAGE, NAV } = CONSTANTS;
19
19
 
@@ -27,25 +27,25 @@ This file is part of Network Pro.
27
27
  * URL to the external blog
28
28
  * @type {string}
29
29
  */
30
- const blogLink = "https://blog.netwk.pro";
30
+ const blogLink = 'https://blog.netwk.pro';
31
31
 
32
32
  /**
33
33
  * CSS class for the index headings.
34
34
  * @type {string}
35
35
  */
36
- const classIndex = "index3";
36
+ const classIndex = 'index3';
37
37
 
38
38
  /**
39
39
  * CSS class for centered text.
40
40
  * @type {string}
41
41
  */
42
- const classCenter = "center-text";
42
+ const classCenter = 'center-text';
43
43
 
44
44
  /**
45
45
  * CSS class for large centered text.
46
46
  * @type {string}
47
47
  */
48
- const classLarge = "large-text-center";
48
+ const classLarge = 'large-text-center';
49
49
  </script>
50
50
 
51
51
  <!-- BEGIN HOME CONTENT -->