@networkpro/web 1.22.1 → 1.23.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 (55) hide show
  1. package/.github/workflows/build-and-publish.yml +4 -4
  2. package/.github/workflows/lighthouse.yml +1 -1
  3. package/.github/workflows/meta-check.yml +1 -1
  4. package/.github/workflows/playwright.yml +1 -1
  5. package/.github/workflows/publish-test.yml +16 -16
  6. package/.github/workflows/templates/publish.template.yml +4 -4
  7. package/.ncurc.cjs +50 -0
  8. package/.node-version +1 -1
  9. package/.nvmrc +1 -1
  10. package/CHANGELOG.md +99 -2
  11. package/LICENSE.md +1 -1
  12. package/README.md +5 -5
  13. package/budget.json +1 -1
  14. package/cspell.json +1 -0
  15. package/package.json +19 -16
  16. package/src/app.html +4 -4
  17. package/src/lib/README.md +12 -9
  18. package/src/lib/components/Badges.svelte +2 -2
  19. package/src/lib/components/LegalNav.svelte +1 -1
  20. package/src/lib/components/MetaTags.svelte +42 -16
  21. package/src/lib/components/layout/Footer.svelte +7 -7
  22. package/src/lib/components/layout/HeaderDefault.svelte +1 -1
  23. package/src/lib/components/layout/HeaderHome.svelte +1 -1
  24. package/src/lib/index.js +2 -2
  25. package/src/lib/meta.js +24 -24
  26. package/src/lib/pages/AboutContent.svelte +9 -9
  27. package/src/lib/pages/HomeContent.svelte +1 -1
  28. package/src/lib/pages/LicenseContent.svelte +6 -7
  29. package/src/lib/pages/ServicesContent.svelte +1 -2
  30. package/src/lib/pages/TermsUseContent.svelte +1 -1
  31. package/src/lib/types/README.md +2 -2
  32. package/src/routes/+layout.js +2 -3
  33. package/src/routes/+layout.svelte +11 -3
  34. package/src/routes/+page.svelte +7 -26
  35. package/src/routes/about/+page.svelte +10 -21
  36. package/src/routes/{license → foss}/+page.server.js +2 -2
  37. package/src/routes/{foss-spotlight → foss}/+page.svelte +11 -22
  38. package/src/routes/{foss-spotlight → legal}/+page.server.js +2 -2
  39. package/src/routes/{license → legal}/+page.svelte +11 -22
  40. package/src/routes/pgp/+page.svelte +10 -21
  41. package/src/routes/privacy/+page.svelte +10 -21
  42. package/src/routes/privacy-dashboard/+page.svelte +10 -27
  43. package/src/routes/services/+page.svelte +3 -16
  44. package/src/routes/terms-conditions/+page.svelte +10 -21
  45. package/src/routes/terms-of-use/+page.svelte +10 -21
  46. package/static/sitemap.xml +13 -13
  47. package/tests/e2e/mobile.spec.js +36 -17
  48. package/tests/e2e/shared/helpers.js +39 -1
  49. package/tests/meta/meta.test.js +1 -1
  50. package/tests/unit/server/meta.test.js +1 -1
  51. package/vercel.json +8 -8
  52. package/vite.config.js +11 -0
  53. package/vitest.config.client.js +9 -0
  54. package/CODE_OF_CONDUCT.md +0 -173
  55. package/CONTRIBUTING.md +0 -214
@@ -11,9 +11,11 @@ This file is part of Network Pro.
11
11
  * @description Stores commonly used functions for importing into E2E tests.
12
12
  * @module tests/e2e/shared
13
13
  * @author Scott Lopez
14
- * @updated 2025-05-29
14
+ * @updated 2025-10-29
15
15
  */
16
16
 
17
+ import { expect } from '@playwright/test';
18
+
17
19
  /**
18
20
  * @param {import('@playwright/test').Page} page - The Playwright page object.
19
21
  * @returns {Promise<void>}
@@ -55,3 +57,39 @@ export async function getVisibleNav(page) {
55
57
  export function getFooter(page) {
56
58
  return page.locator('footer');
57
59
  }
60
+
61
+ /**
62
+ * @function clickAndWaitForNavigation
63
+ * @description Clicks a link or button and waits for navigation or URL change.
64
+ * Works for both SPA (client-side) and full-page navigations.
65
+ *
66
+ * @param {import('@playwright/test').Page} page
67
+ * @param {import('@playwright/test').Locator} locator
68
+ * @param {object} [options]
69
+ * @param {string|RegExp} [options.urlPattern] - URL or regex to match
70
+ * @param {number} [options.timeout=60000] - Max wait time
71
+ */
72
+ export async function clickAndWaitForNavigation(page, locator, options = {}) {
73
+ const { urlPattern = /\/.*/, timeout = 60000 } = options;
74
+
75
+ // Ensure the element is ready for interaction
76
+ await locator.scrollIntoViewIfNeeded();
77
+ await locator.waitFor({ state: 'visible', timeout: 10000 });
78
+ await locator.click({ trial: true });
79
+
80
+ // Capture current URL to detect SPA navigation
81
+ const currentUrl = page.url();
82
+
83
+ // Handle both SPA transitions and full page reloads
84
+ await Promise.all([
85
+ page.waitForURL(urlPattern, { timeout }).catch(() => {}),
86
+ page.waitForLoadState('load', { timeout }).catch(() => {}),
87
+ locator.click(),
88
+ ]);
89
+
90
+ // Confirm the URL changed successfully
91
+ await expect(page).toHaveURL(urlPattern, { timeout });
92
+
93
+ // Optional: log navigation success (helps in CI)
94
+ console.log(`✅ Navigation from ${currentUrl} → ${page.url()}`);
95
+ }
@@ -21,7 +21,7 @@ const routes = [
21
21
  {
22
22
  path: '/',
23
23
  title: /Security, Networking, Privacy/,
24
- description: /Network Pro/,
24
+ description: /Locking Down Networks/,
25
25
  },
26
26
  // add more paths as needed:
27
27
  // { path: '/about', title: /About/, description: /Network Pro/ }
@@ -25,6 +25,6 @@ describe('Meta info', () => {
25
25
  const { meta } = load({ url: mockUrl });
26
26
 
27
27
  expect(meta.title).toMatch(/Security, Networking, Privacy/);
28
- expect(meta.description).toMatch(/Network Pro/);
28
+ expect(meta.description).toMatch(/Locking Down Networks/);
29
29
  });
30
30
  });
package/vercel.json CHANGED
@@ -13,23 +13,23 @@
13
13
  "permanent": true
14
14
  },
15
15
  {
16
- "source": "/legal",
17
- "destination": "/license",
16
+ "source": "/license",
17
+ "destination": "/legal",
18
18
  "permanent": true
19
19
  },
20
20
  {
21
- "source": "/legal/:path*",
22
- "destination": "/license/:path*",
21
+ "source": "/license/:path*",
22
+ "destination": "/legal/:path*",
23
23
  "permanent": true
24
24
  },
25
25
  {
26
- "source": "/foss",
27
- "destination": "/foss-spotlight",
26
+ "source": "/foss-spotlight",
27
+ "destination": "/foss",
28
28
  "permanent": true
29
29
  },
30
30
  {
31
- "source": "/foss/:path*",
32
- "destination": "/foss-spotlight/:path*",
31
+ "source": "/foss-spotlight/:path*",
32
+ "destination": "/foss/:path*",
33
33
  "permanent": true
34
34
  }
35
35
  ],
package/vite.config.js CHANGED
@@ -7,13 +7,24 @@ This file is part of Network Pro.
7
7
  ========================================================================= */
8
8
 
9
9
  import { sveltekit } from '@sveltejs/kit/vite';
10
+ import { resolve } from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
10
12
  import { defineConfig } from 'vite';
13
+ import devtoolsJson from 'vite-plugin-devtools-json';
11
14
  import lightningcssPlugin from 'vite-plugin-lightningcss';
12
15
  import tsconfigPaths from 'vite-tsconfig-paths'; // NEW: tsconfig/jsconfig alias support
13
16
 
17
+ // Compute absolute project root
18
+ const projectRoot = fileURLToPath(new URL('.', import.meta.url));
19
+
14
20
  export default defineConfig({
15
21
  plugins: [
16
22
  tsconfigPaths(), // Insert before sveltekit()
23
+ devtoolsJson({
24
+ projectRoot: resolve(projectRoot), // Correct key name
25
+ normalizeForWindowsContainer: true, // optional, helps with path consistency on Windows or WSL
26
+ uuid: 'ad0db4f4-6172-4c1e-ae17-26b1bee53764',
27
+ }),
17
28
  sveltekit(),
18
29
  lightningcssPlugin({
19
30
  minify: process.env.NODE_ENV === 'production',
@@ -39,5 +39,14 @@ export default defineConfig({
39
39
  reporter: ['html'],
40
40
  reportsDirectory: './reports/client/coverage',
41
41
  },
42
+
43
+ // Svelte 5 / Runes compatibility (Vitest 4.x+)
44
+ optimizeDeps: {
45
+ include: [/svelte/], // Ensures .svelte files are pre-bundled with rune support
46
+ },
47
+
48
+ // Optional: quiet down noisy vite logs
49
+ logHeapUsage: false,
50
+ isolate: true,
42
51
  },
43
52
  });
@@ -1,173 +0,0 @@
1
- <!-- =========================================================================
2
- CODE_OF_CONDUCT.md
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
- <a name="top"></a>
10
-
11
- [SPDX-License-Identifier](https://spdx.dev/learn/handling-license-info/):
12
- `CC-BY-4.0 OR GPL-3.0-or-later`
13
-
14
- # Contributor Covenant Code of Conduct
15
-
16
- **Network Pro Strategies**
17
- **Effective Date:** March 21, 2025
18
-
19
- &nbsp;
20
-
21
- ## Contents
22
-
23
- - [Our Pledge](#pledge)
24
- - [Our Standards](#standards)
25
- - [Responsibilities](#response)
26
- - [Scope](#scope)
27
- - [Enforcement](#enforce)
28
- - [Attribution](#attribute)
29
-
30
- ---
31
-
32
- <section id="pledge">
33
-
34
- ## Our Pledge
35
-
36
- We as members, contributors, and leaders pledge to make participation in our
37
- community a harassment-free experience for everyone, regardless of age, body
38
- size, visible or invisible disability, ethnicity, sex characteristics, gender
39
- identity and expression, level of experience, education, socio-economic status,
40
- nationality, personal appearance, race, caste, color, religion, or sexual
41
- identity and orientation.
42
-
43
- We pledge to act and interact in ways that contribute to an open, welcoming,
44
- diverse, inclusive, and healthy community.
45
-
46
- </section>
47
-
48
- <section id="standards">
49
-
50
- ## Our Standards
51
-
52
- Examples of behavior that contributes to a positive environment for our
53
- community include:
54
-
55
- - Demonstrating empathy and kindness toward other people
56
- - Being respectful of differing opinions, viewpoints, and experiences
57
- - Giving and gracefully accepting constructive feedback
58
- - Accepting responsibility and apologizing to those affected by our mistakes,
59
- and learning from the experience
60
- - Focusing on what is best not just for us as individuals, but for the overall
61
- community
62
-
63
- Examples of unacceptable behavior include:
64
-
65
- - The use of sexualized language or imagery, and sexual attention or advances of
66
- any kind
67
- - Trolling, insulting or derogatory comments, and personal or political attacks
68
- - Public or private harassment
69
- - Publishing others' private information, such as a physical or email address,
70
- without their explicit permission
71
- - Other conduct which could reasonably be considered inappropriate in a
72
- professional setting
73
-
74
- <sub>[Back to top](#top)</sub>
75
-
76
- </section>
77
-
78
- <section id="response">
79
-
80
- ## Responsibilities
81
-
82
- Company and community leaders are responsible for clarifying and enforcing our standards of
83
- acceptable behavior and will take appropriate and fair corrective action in
84
- response to any behavior that they deem inappropriate, threatening, offensive,
85
- or harmful.
86
-
87
- Company and community leaders have the right and responsibility to remove, edit, or reject
88
- comments, commits, code, wiki edits, issues, and other contributions that are
89
- not aligned to this Code of Conduct, and will communicate reasons for moderation
90
- decisions when appropriate.
91
-
92
- Network Pro Strategies reserves the right, at its sole discretion, to remove, edit, or reject any contributions that are contrary to or detrimental to its business interests.
93
-
94
- <sub>[Back to top](#top)</sub>
95
-
96
- </section>
97
-
98
- <section id="scope">
99
-
100
- ## Scope
101
-
102
- This Code of Conduct applies within all community spaces, and also applies when
103
- an individual is officially representing the company or community in public spaces.
104
- Examples of representing our company or community include using an official email address,
105
- posting via an official social media account, or acting as an appointed
106
- representative at an online or offline event.
107
-
108
- <sub>[Back to top](#top)</sub>
109
-
110
- </section>
111
-
112
- <section id="enforce">
113
-
114
- ## Enforcement
115
-
116
- Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the abuse team at [abuse@neteng.pro](mailto:abuse@neteng.pro). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
117
-
118
- The abuse team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
119
-
120
- Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.
121
-
122
- <sub>[Back to top](#top)</sub>
123
-
124
- </section>
125
-
126
- <section id="attribute">
127
-
128
- ## Attribution
129
-
130
- This Code of Conduct is adapted from the [Contributor Covenant][homepage],
131
- version 2.1, available at
132
- [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
133
-
134
- The **Enforcement** section is adapted from the
135
- [Contributor Covenant][homepage],
136
- version 1.4, available at
137
- [https://www.contributor-covenant.org/version/1/4/code-of-conduct/][v1.4].
138
-
139
- For answers to common questions about this code of conduct, see the FAQ at
140
- [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
141
- [https://www.contributor-covenant.org/translations][translations].
142
-
143
- [homepage]: https://www.contributor-covenant.org
144
- [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
145
- [v1.4]: https://www.contributor-covenant.org/version/1/4/code-of-conduct/
146
- [FAQ]: https://www.contributor-covenant.org/faq
147
- [translations]: https://www.contributor-covenant.org/translations
148
-
149
- <sub>[Back to top](#top)</sub>
150
-
151
- </section>
152
-
153
- ---
154
-
155
- <div style="font-size: 12px; font-weight: bold; text-align: center;">
156
-
157
- [Home](https://netwk.pro) &nbsp; | &nbsp; [Terms of Use](https://netwk.pro/terms-of-use)
158
- [Privacy Policy](https://netwk.pro/privacy) &nbsp; | &nbsp; [Legal](https://netwk.pro/license)
159
-
160
- </div>
161
-
162
- &nbsp;
163
-
164
- <span style="font-size: 12px; text-align: center;">
165
-
166
- Copyright &copy; 2025
167
- **[Network Pro Strategies](https://netwk.pro/)** (Network Pro&trade;)
168
-
169
- Network Pro&trade;, the shield logo, and the "Locking Down Networks...&trade;" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
170
-
171
- Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
172
-
173
- </span>
package/CONTRIBUTING.md DELETED
@@ -1,214 +0,0 @@
1
- <!-- =========================================================================
2
- CONTRIBUTING.md
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
- <a name="top"></a>
10
-
11
- [SPDX-License-Identifier](https://spdx.dev/learn/handling-license-info/):
12
- `CC-BY-4.0 OR GPL-3.0-or-later`
13
-
14
- # 🤝 Contributing to Network Pro Strategies
15
-
16
- **Network Pro Strategies**
17
- **Effective Date:** July 31, 2025
18
-
19
- &nbsp;
20
-
21
- Thanks for your interest in improving **Network Pro Strategies** (Network Pro™)! We're always looking for collaborators and contributors of all skill levels. This guide will help you get started quickly and effectively.
22
-
23
- Following these guidelines helps us all work together efficiently and respectfully. 🙌
24
-
25
- ---
26
-
27
- ## 🐛 Using the Issue Tracker
28
-
29
- Use the [issue tracker](https://github.com/netwk-pro/netwk-pro.github.io/issues) for:
30
-
31
- - Reporting [bugs](#bug-reports)
32
- - Submitting [feature requests](#feature-requests)
33
- - Proposing [pull requests](#pull-requests)
34
-
35
- 🚫 Please do **not** use issues for general support — instead, head to:
36
-
37
- - [Stack Overflow Teams](https://stack.neteng.pro/)
38
- - [GitHub Discussions](https://discuss.neteng.pro)
39
- - [Discord](https://discord.neteng.pro)
40
-
41
- ---
42
-
43
- <section id="bug-reports">
44
-
45
- ## 🐞 Bug Reports
46
-
47
- A bug is a clear, reproducible issue in the code. High-quality reports help us fix problems faster.
48
-
49
- ### ✅ A good bug report includes
50
-
51
- - A **descriptive title**
52
- - Steps to reproduce
53
- - Your environment (OS, browser, version)
54
- - Expected vs actual behavior
55
- - Links to a minimal reproducible case (if possible)
56
-
57
- _Example_:
58
-
59
- <!-- markdownlint-disable MD042 -->
60
-
61
- > **Title**: Checkbox toggle fails on Safari 17
62
- > Steps:
63
- >
64
- > 1. Visit page X
65
- > 2. Click toggle
66
- > 3. Observe that...
67
- > Expected: ...
68
- > Actual: ...
69
- > [Live example](#)
70
-
71
- <!-- markdownlint-enable MD042 -->
72
-
73
- </section>
74
-
75
- &nbsp;
76
-
77
- <sub>[Back to top](#top)</sub>
78
-
79
- ---
80
-
81
- <section id="feature-requests">
82
-
83
- ## ✨ Feature Requests
84
-
85
- Feature requests are welcome — just make sure it aligns with the project’s goals.
86
-
87
- Before posting:
88
-
89
- - Search for similar requests
90
- - Clearly describe the problem it solves
91
- - Explain the use case and who benefits
92
-
93
- Strong proposals help us prioritize.
94
-
95
- </section>
96
-
97
- &nbsp;
98
-
99
- <sub>[Back to top](#top)</sub>
100
-
101
- ---
102
-
103
- <section id="pull-requests">
104
-
105
- ## 🔁 Pull Requests
106
-
107
- Well-scoped, well-documented pull requests are the lifeblood of open-source.
108
-
109
- ### ⚠️ Ask First
110
-
111
- Before large PRs (new features, refactors, dependency upgrades), please check with maintainers first.
112
-
113
- ### 📋 Steps
114
-
115
- 1. **Fork the repo & set remotes**:
116
-
117
- ```bash
118
- git clone https://github.com/<your-username>/netwk-pro.github.io.git
119
- cd netwk-pro.github.io
120
- git remote add upstream https://github.com/netwk-pro/netwk-pro.github.io.git
121
- ```
122
-
123
- 2. **Stay Updated**
124
-
125
- ```bash
126
- git checkout master
127
- git pull upstream master
128
- ```
129
-
130
- 3. **Create a topic branch:**
131
-
132
- ```bash
133
- git checkout -b my-feature
134
- ```
135
-
136
- 4. **Install & test locally:**
137
-
138
- ```bash
139
- npm install
140
- npm run checkout
141
- ```
142
-
143
- 5. **Make your changes**
144
-
145
- (and commit them in logical chunks with good commit messages).
146
-
147
- 6. **Build:**
148
-
149
- ```bash
150
- npm run build
151
- git add build/
152
- git commit -m "Build: update assets"
153
- ```
154
-
155
- 7. **Push and open a PR:**
156
-
157
- ```bash
158
- git push origin my-feature
159
- ```
160
-
161
- Open your PR with a clear title, description, and reference the related issue (if any).
162
-
163
- </section>
164
-
165
- &nbsp;
166
-
167
- <sub>[Back to top](#top)</sub>
168
-
169
- ---
170
-
171
- ## ✅ Coding & Style Notes
172
-
173
- - Use the defined code style (Prettier, ESLint, Stylelint, markdownlint)
174
- - Avoid unrelated changes in the same PR
175
- - Keep PRs focused and test-covered when appropriate
176
-
177
- &nbsp;
178
-
179
- ## 🔐 Legal Notice
180
-
181
- By submitting a pull request, you agree to license your contributions under:
182
-
183
- - [CC BY 4.0](https://netwk.pro/license#cc-by)
184
- - [GNU GPL 3.0 or later](https://netwk.pro/license#gnu-gpl)
185
-
186
- &nbsp;
187
-
188
- <sub>[Back to top](#top)</sub>
189
-
190
- &nbsp;
191
-
192
- _Thanks again for your contribution and for being part of the Network Pro&trade; community!_
193
-
194
- ---
195
-
196
- <div style="font-size: 12px; font-weight: bold; text-align: center;">
197
-
198
- [Home](https://netwk.pro) &nbsp; | &nbsp; [Terms of Use](https://netwk.pro/terms-of-use)
199
- [Privacy Policy](https://netwk.pro/privacy) &nbsp; | &nbsp; [Legal](https://netwk.pro/license)
200
-
201
- </div>
202
-
203
- &nbsp;
204
-
205
- <span style="font-size: 12px; text-align: center;">
206
-
207
- Copyright &copy; 2025
208
- **[Network Pro Strategies](https://netwk.pro/)** (Network Pro&trade;)
209
-
210
- Network Pro&trade;, the shield logo, and the "Locking Down Networks...&trade;" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
211
-
212
- Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
213
-
214
- </span>