@networkpro/web 1.12.9 → 1.13.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/README.md +8 -8
  3. package/eslint.config.mjs +48 -48
  4. package/netlify/edge-functions/csp-report.js +31 -31
  5. package/package.json +1 -1
  6. package/playwright.config.js +14 -14
  7. package/postcss.config.mjs +1 -1
  8. package/scripts/auditScripts.js +16 -16
  9. package/scripts/bundleCss.js +5 -5
  10. package/scripts/checkEnv.js +6 -6
  11. package/scripts/checkNode.js +10 -10
  12. package/scripts/checkVersions.js +6 -6
  13. package/scripts/flattenHeaders.js +13 -13
  14. package/scripts/generateTest.js +5 -5
  15. package/scripts/openReport.js +3 -3
  16. package/scripts/validateHeaders.js +13 -13
  17. package/src/hooks.client.ts +1 -1
  18. package/src/hooks.server.js +31 -31
  19. package/src/lib/components/Badges.svelte +9 -9
  20. package/src/lib/components/CodeBlock.svelte +1 -1
  21. package/src/lib/components/ContainerSection.svelte +1 -1
  22. package/src/lib/components/FullWidthSection.svelte +3 -3
  23. package/src/lib/components/LegalNav.svelte +6 -6
  24. package/src/lib/components/Logo.svelte +9 -9
  25. package/src/lib/components/MetaTags.svelte +3 -3
  26. package/src/lib/components/PWAInstallButton.svelte +4 -4
  27. package/src/lib/components/RedirectPage.svelte +4 -4
  28. package/src/lib/components/SocialMedia.svelte +16 -16
  29. package/src/lib/components/foss/FossItemContent.svelte +18 -18
  30. package/src/lib/components/layout/Footer.svelte +17 -17
  31. package/src/lib/components/layout/HeaderDefault.svelte +16 -16
  32. package/src/lib/components/layout/HeaderHome.svelte +14 -14
  33. package/src/lib/images.js +34 -34
  34. package/src/lib/index.js +15 -15
  35. package/src/lib/meta.js +29 -29
  36. package/src/lib/pages/AboutContent.svelte +24 -24
  37. package/src/lib/pages/FossContent.svelte +12 -12
  38. package/src/lib/pages/HomeContent.svelte +6 -6
  39. package/src/lib/pages/LicenseContent.svelte +38 -38
  40. package/src/lib/pages/PGPContent.svelte +23 -23
  41. package/src/lib/pages/PrivacyContent.svelte +39 -39
  42. package/src/lib/pages/PrivacyDashboard.svelte +12 -12
  43. package/src/lib/pages/TermsConditionsContent.svelte +28 -28
  44. package/src/lib/pages/TermsUseContent.svelte +26 -26
  45. package/src/lib/registerServiceWorker.js +25 -25
  46. package/src/lib/stores/posthog.js +13 -13
  47. package/src/lib/stores/trackingPreferences.js +19 -19
  48. package/src/lib/unregisterServiceWorker.js +1 -1
  49. package/src/lib/utils/purify.js +4 -4
  50. package/src/lib/utils/utm.js +2 -2
  51. package/src/routes/+error.svelte +4 -4
  52. package/src/routes/+layout.js +6 -6
  53. package/src/routes/+layout.svelte +29 -29
  54. package/src/routes/+page.server.js +2 -2
  55. package/src/routes/+page.svelte +9 -9
  56. package/src/routes/about/+page.server.js +2 -2
  57. package/src/routes/about/+page.svelte +7 -7
  58. package/src/routes/api/mock-csp/+server.js +3 -3
  59. package/src/routes/consultation/+page.svelte +5 -5
  60. package/src/routes/contact/+page.svelte +5 -5
  61. package/src/routes/foss-spotlight/+page.server.js +2 -2
  62. package/src/routes/foss-spotlight/+page.svelte +7 -7
  63. package/src/routes/license/+page.server.js +2 -2
  64. package/src/routes/license/+page.svelte +7 -7
  65. package/src/routes/pgp/+page.server.js +2 -2
  66. package/src/routes/pgp/+page.svelte +7 -7
  67. package/src/routes/pgp/[key]/+server.js +9 -9
  68. package/src/routes/privacy/+page.server.js +2 -2
  69. package/src/routes/privacy/+page.svelte +7 -7
  70. package/src/routes/privacy-dashboard/+page.server.js +2 -2
  71. package/src/routes/privacy-dashboard/+page.svelte +8 -8
  72. package/src/routes/privacy-rights/+page.svelte +5 -5
  73. package/src/routes/status/+page.server.js +2 -2
  74. package/src/routes/terms-conditions/+page.server.js +2 -2
  75. package/src/routes/terms-conditions/+page.svelte +7 -7
  76. package/src/routes/terms-of-use/+page.server.js +2 -2
  77. package/src/routes/terms-of-use/+page.svelte +7 -7
  78. package/src/service-worker.js +86 -86
  79. package/static/disableSw.js +2 -2
  80. package/static/offline.html +7 -7
  81. package/stylelint.config.js +56 -56
  82. package/svelte.config.js +6 -6
  83. package/tests/e2e/app.spec.js +25 -25
  84. package/tests/e2e/mobile.spec.js +18 -18
  85. package/tests/e2e/shared/helpers.js +4 -4
  86. package/tests/internal/auditCoverage.test.js +24 -24
  87. package/tests/unit/checkEnv.test.js +10 -10
  88. package/tests/unit/checkVersions.test.js +4 -4
  89. package/tests/unit/csp-report.test.js +24 -24
  90. package/tests/unit/demo.test.js +3 -3
  91. package/tests/unit/lib/utils/purify.test.js +12 -12
  92. package/tests/unit/routes/page.svelte.test.js +10 -10
  93. package/tests/unit/unregisterServiceWorker.test.js +5 -5
  94. package/tests/unit/utm.test.js +13 -13
  95. package/vite.config.js +5 -5
  96. package/vitest-setup-client.js +4 -4
  97. package/vitest.config.client.js +15 -15
  98. package/vitest.config.server.js +13 -13
@@ -22,30 +22,30 @@ This file is part of Network Pro.
22
22
  */
23
23
  const socialLinks = [
24
24
  {
25
- href: "https://instagram.com/netwk_pro",
26
- label: "Instagram",
27
- iconClass: "fab fa-square-instagram fa-2x",
25
+ href: 'https://instagram.com/netwk_pro',
26
+ label: 'Instagram',
27
+ iconClass: 'fab fa-square-instagram fa-2x',
28
28
  },
29
29
  {
30
- href: "https://facebook.com/neteng.pro",
31
- label: "Facebook",
32
- iconClass: "fab fa-square-facebook fa-2x",
30
+ href: 'https://facebook.com/neteng.pro',
31
+ label: 'Facebook',
32
+ iconClass: 'fab fa-square-facebook fa-2x',
33
33
  },
34
34
  {
35
- href: "https://linkedin.com/company/netwk-pro",
36
- label: "LinkedIn",
37
- iconClass: "fab fa-linkedin fa-2x",
35
+ href: 'https://linkedin.com/company/netwk-pro',
36
+ label: 'LinkedIn',
37
+ iconClass: 'fab fa-linkedin fa-2x',
38
38
  },
39
39
  {
40
- href: "https://noc.social/@NetEng_Pro",
41
- label: "Mastodon",
42
- rel: "me noopener noreferrer", // Special rel attribute for Mastodon
43
- iconClass: "fab fa-mastodon fa-2x",
40
+ href: 'https://noc.social/@NetEng_Pro',
41
+ label: 'Mastodon',
42
+ rel: 'me noopener noreferrer', // Special rel attribute for Mastodon
43
+ iconClass: 'fab fa-mastodon fa-2x',
44
44
  },
45
45
  {
46
- href: "https://github.com/netwk-pro/",
47
- label: "GitHub",
48
- iconClass: "fab fa-square-github fa-2x",
46
+ href: 'https://github.com/netwk-pro/',
47
+ label: 'GitHub',
48
+ iconClass: 'fab fa-square-github fa-2x',
49
49
  },
50
50
  ];
51
51
  </script>
@@ -10,12 +10,12 @@ This file is part of Network Pro.
10
10
  /* at-html is sanitized by DOMPurify */
11
11
  /* eslint-disable svelte/no-at-html-tags */
12
12
 
13
- import { onMount } from "svelte";
14
- import { sanitizeHtml } from "$lib/utils/purify.js";
15
- import FossFeatures from "$lib/components/foss/FossFeatures.svelte";
13
+ import { onMount } from 'svelte';
14
+ import { sanitizeHtml } from '$lib/utils/purify.js';
15
+ import FossFeatures from '$lib/components/foss/FossFeatures.svelte';
16
16
  // Import directly from $lib by way of image utility
17
- import { obtainiumPng, obtainiumWbp } from "$lib";
18
- import { CONSTANTS } from "$lib";
17
+ import { obtainiumPng, obtainiumWbp } from '$lib';
18
+ import { CONSTANTS } from '$lib';
19
19
 
20
20
  console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
21
21
 
@@ -23,13 +23,13 @@ This file is part of Network Pro.
23
23
 
24
24
  /** @type {string} */
25
25
  const obtainiumLink =
26
- "https://apps.obtainium.imranr.dev/redirect.html?r=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%22%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%7D%22%7D";
26
+ 'https://apps.obtainium.imranr.dev/redirect.html?r=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%22%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%7D%22%7D';
27
27
 
28
28
  /** @type {"async"} */
29
- const decoding = "async";
29
+ const decoding = 'async';
30
30
 
31
31
  /** @type {"lazy"} */
32
- const loading = "lazy";
32
+ const loading = 'lazy';
33
33
 
34
34
  /// <reference path="$lib/types/fossTypes.js" />
35
35
 
@@ -43,8 +43,8 @@ This file is part of Network Pro.
43
43
  */
44
44
  export let isFirst = false;
45
45
 
46
- let safeHeadlineDescription = "";
47
- let safeDetailsDescription = "";
46
+ let safeHeadlineDescription = '';
47
+ let safeDetailsDescription = '';
48
48
  /** @type {string[]} */
49
49
  let safeNotes = [];
50
50
 
@@ -66,9 +66,9 @@ This file is part of Network Pro.
66
66
  <picture>
67
67
  <source srcset={fossItem.images.webp} type="image/webp" />
68
68
  <img
69
- decoding={isFirst ? "sync" : decoding}
70
- loading={isFirst ? "eager" : loading}
71
- fetchpriority={isFirst ? "high" : "auto"}
69
+ decoding={isFirst ? 'sync' : decoding}
70
+ loading={isFirst ? 'eager' : loading}
71
+ fetchpriority={isFirst ? 'high' : 'auto'}
72
72
  src={fossItem.images.png}
73
73
  alt={fossItem.imgAlt}
74
74
  style="width: 50px; height: 50px" />
@@ -107,15 +107,15 @@ This file is part of Network Pro.
107
107
 
108
108
  <div class="linksheet">
109
109
  <!-- Special handling for LinkSheet's Obtainium link -->
110
- {#if fossItem.id === "linksheet"}
110
+ {#if fossItem.id === 'linksheet'}
111
111
  <div class="linksheet-entry">
112
112
  <a rel={PAGE.REL} href={obtainiumLink} target={PAGE.BLANK}>
113
113
  <picture>
114
114
  <source srcset={obtainiumWbp} type="image/webp" />
115
115
  <img
116
- decoding={isFirst ? "sync" : decoding}
117
- loading={isFirst ? "eager" : loading}
118
- fetchpriority={isFirst ? "high" : "auto"}
116
+ decoding={isFirst ? 'sync' : decoding}
117
+ loading={isFirst ? 'eager' : loading}
118
+ fetchpriority={isFirst ? 'high' : 'auto'}
119
119
  src={obtainiumPng}
120
120
  alt="Obtainium"
121
121
  style="width: 207px; height: 80px" />
@@ -140,7 +140,7 @@ This file is part of Network Pro.
140
140
  <!-- Other links -->
141
141
  {#each fossItem.links as { label, href, imgAlt, downloadText, downloadHref, hideLabels }, i}
142
142
  <!-- Skip the first link for LinkSheet since we already handled it separately -->
143
- {#if !(fossItem.id === "linksheet" && i === 0)}
143
+ {#if !(fossItem.id === 'linksheet' && i === 0)}
144
144
  <div class="linksheet-entry">
145
145
  {#if !hideLabels && label && href}
146
146
  <strong>{label}:</strong>
@@ -9,10 +9,10 @@ This file is part of Network Pro.
9
9
  <!-- cspell:ignore ccby gnugpl -->
10
10
 
11
11
  <script>
12
- import { base } from "$app/paths";
12
+ import { base } from '$app/paths';
13
13
  // Import icons for licenses
14
- import { bySvg, ccSvg } from "$lib";
15
- import { CONSTANTS } from "$lib";
14
+ import { bySvg, ccSvg } from '$lib';
15
+ import { CONSTANTS } from '$lib';
16
16
 
17
17
  // Log the base path to verify its value
18
18
  //console.log("Base path:", base);
@@ -27,10 +27,10 @@ This file is part of Network Pro.
27
27
  const trademarkLink = `${base}/license#trademark`;
28
28
 
29
29
  /** @type {string} */
30
- const creatorUrl = "https://netwk.pro";
30
+ const creatorUrl = 'https://netwk.pro';
31
31
 
32
32
  /** @type {string} */
33
- const creatorSlogan = "Locking Down Networks...";
33
+ const creatorSlogan = 'Locking Down Networks...';
34
34
 
35
35
  /**
36
36
  * Icon used in a license object.
@@ -51,25 +51,25 @@ This file is part of Network Pro.
51
51
 
52
52
  const licenses = [
53
53
  {
54
- type: "CC BY 4.0",
54
+ type: 'CC BY 4.0',
55
55
  url: ccbyLink,
56
- externalUrl: "https://creativecommons.org/licenses/by/4.0/",
56
+ externalUrl: 'https://creativecommons.org/licenses/by/4.0/',
57
57
  icons: [
58
58
  {
59
59
  src: ccSvg,
60
- alt: "Creative Commons BY",
60
+ alt: 'Creative Commons BY',
61
61
  },
62
62
  {
63
63
  src: bySvg,
64
- alt: "Creative Commons BY",
64
+ alt: 'Creative Commons BY',
65
65
  },
66
66
  ],
67
67
  },
68
68
  {
69
- type: "GNU GPL",
69
+ type: 'GNU GPL',
70
70
  url: gnugplLink,
71
- externalUrl: "https://fsf.org",
72
- description: "Free Software Foundation",
71
+ externalUrl: 'https://fsf.org',
72
+ description: 'Free Software Foundation',
73
73
  },
74
74
  ];
75
75
 
@@ -78,15 +78,15 @@ This file is part of Network Pro.
78
78
  * @type {Object}
79
79
  */
80
80
  const namespaceAttributes = {
81
- "xmlns:cc": "http://creativecommons.org/ns#",
82
- "xmlns:dct": "http://purl.org/dc/terms/",
81
+ 'xmlns:cc': 'http://creativecommons.org/ns#',
82
+ 'xmlns:dct': 'http://purl.org/dc/terms/',
83
83
  };
84
84
 
85
85
  /**
86
86
  * Relation attributes for license links.
87
87
  * @type {string}
88
88
  */
89
- const relLicense = "license noopener noreferrer";
89
+ const relLicense = 'license noopener noreferrer';
90
90
  </script>
91
91
 
92
92
  <!-- BEGIN FOOTER -->
@@ -116,7 +116,7 @@ This file is part of Network Pro.
116
116
  <p>
117
117
  Licensed under
118
118
  {#each licenses as license, index}
119
- {#if license.type === "CC BY 4.0"}
119
+ {#if license.type === 'CC BY 4.0'}
120
120
  <a
121
121
  href={license.url}
122
122
  target={PAGE.SELF}
@@ -155,7 +155,7 @@ This file is part of Network Pro.
155
155
  >, either version 3 of the License or (at your option) any later
156
156
  version.
157
157
  {/if}
158
- {index < licenses.length - 1 ? " and the " : ""}
158
+ {index < licenses.length - 1 ? ' and the ' : ''}
159
159
  {/each}
160
160
  </p>
161
161
  </div>
@@ -7,15 +7,15 @@ 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
- const homeLink = base || "/";
15
+ const homeLink = base || '/';
16
16
  const aboutLink = `${base}/about`;
17
17
  const fossLink = `${base}/foss-spotlight`;
18
- const blogLink = "https://blog.netwk.pro";
18
+ const blogLink = 'https://blog.netwk.pro';
19
19
 
20
20
  /**
21
21
  * Navigation link object.
@@ -31,25 +31,25 @@ This file is part of Network Pro.
31
31
  * @type {NavItem[]}
32
32
  */
33
33
  const nav = [
34
- { label: "home", href: homeLink, target: "_self", external: false },
35
- { label: "about", href: aboutLink, target: "_self", external: false },
36
- { label: "foss", href: fossLink, target: "_self", external: false },
34
+ { label: 'home', href: homeLink, target: '_self', external: false },
35
+ { label: 'about', href: aboutLink, target: '_self', external: false },
36
+ { label: 'foss', href: fossLink, target: '_self', external: false },
37
37
  {
38
- label: "blog",
38
+ label: 'blog',
39
39
  href: blogLink,
40
- target: "_self",
40
+ target: '_self',
41
41
  external: false,
42
42
  },
43
43
  {
44
- label: "discussions",
45
- href: "https://github.com/netwk-pro/netwk-pro.github.io/discussions",
46
- target: "_blank",
44
+ label: 'discussions',
45
+ href: 'https://github.com/netwk-pro/netwk-pro.github.io/discussions',
46
+ target: '_blank',
47
47
  external: true,
48
48
  },
49
49
  {
50
- label: "link hub",
51
- href: "https://linktr.ee/neteng_pro",
52
- target: "_blank",
50
+ label: 'link hub',
51
+ href: 'https://linktr.ee/neteng_pro',
52
+ target: '_blank',
53
53
  external: true,
54
54
  },
55
55
  ];
@@ -58,7 +58,7 @@ This file is part of Network Pro.
58
58
  * Relation attribute for external links.
59
59
  * @type {string}
60
60
  */
61
- const rel = "noopener noreferrer";
61
+ const rel = 'noopener noreferrer';
62
62
  </script>
63
63
 
64
64
  <!-- BEGIN DEFAULT HEADER -->
@@ -76,7 +76,7 @@ This file is part of Network Pro.
76
76
  {/if}
77
77
  <!-- Separator logic -->
78
78
  {#if index < nav.length - 1}
79
- {#if label === "blog"}
79
+ {#if label === 'blog'}
80
80
  <br />
81
81
  {:else}
82
82
  <span class="goldseparator">|</span>
@@ -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>
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 {
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
+ 'Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™',
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