@dargmuesli/nuxt-vio 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
package/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # Nuxt Layer Starter
2
+
3
+ Create Nuxt extendable layer with this GitHub template.
4
+
5
+ ## Setup
6
+
7
+ Make sure to install the dependencies:
8
+
9
+ ```bash
10
+ pnpm install
11
+ ```
12
+
13
+ ## Working on your theme
14
+
15
+ Your theme is at the root of this repository, it is exactly like a regular Nuxt project, except you can publish it on NPM.
16
+
17
+ The `.playground` directory should help you on trying your theme during development.
18
+
19
+ Running `pnpm dev` will prepare and boot `.playground` directory, which imports your theme itself.
20
+
21
+ ## Distributing your theme
22
+
23
+ Your Nuxt layer is shaped exactly the same as any other Nuxt project, except you can publish it on NPM.
24
+
25
+ To do so, you only have to check if `files` in `package.json` are valid, then run:
26
+
27
+ ```bash
28
+ npm publish --access public
29
+ ```
30
+
31
+ Once done, your users will only have to run:
32
+
33
+ ```bash
34
+ npm install --save your-theme
35
+ ```
36
+
37
+ Then add the dependency to their `extends` in `nuxt.config`:
38
+
39
+ ```ts
40
+ defineNuxtConfig({
41
+ extends: 'your-theme'
42
+ })
43
+ ```
44
+
45
+ ## Development Server
46
+
47
+ Start the development server on http://localhost:3000
48
+
49
+ ```bash
50
+ pnpm dev
51
+ ```
52
+
53
+ ## Production
54
+
55
+ Build the application for production:
56
+
57
+ ```bash
58
+ pnpm build
59
+ ```
60
+
61
+ Or statically generate it with:
62
+
63
+ ```bash
64
+ pnpm generate
65
+ ```
66
+
67
+ Locally preview production build:
68
+
69
+ ```bash
70
+ pnpm preview
71
+ ```
72
+
73
+ Checkout the [deployment documentation](https://v3.nuxtjs.org/docs/deployment) for more information.
@@ -0,0 +1,47 @@
1
+ export const useFavicons = () => {
2
+ useHead({
3
+ link: [
4
+ {
5
+ href: '/assets/static/favicon/apple-touch-icon.png?v=bOXMwoKlJr',
6
+ rel: 'apple-touch-icon',
7
+ sizes: '180x180',
8
+ },
9
+ {
10
+ href: '/assets/static/favicon/favicon-16x16.png?v=bOXMwoKlJr',
11
+ rel: 'icon',
12
+ sizes: '16x16',
13
+ type: 'image/png',
14
+ },
15
+ {
16
+ href: '/assets/static/favicon/favicon-32x32.png?v=bOXMwoKlJr',
17
+ rel: 'icon',
18
+ sizes: '32x32',
19
+ type: 'image/png',
20
+ },
21
+ {
22
+ href: '/favicon.ico',
23
+ rel: 'icon',
24
+ type: 'image/x-icon',
25
+ },
26
+ {
27
+ href: '/assets/static/favicon/site.webmanifest?v=bOXMwoKlJr',
28
+ rel: 'manifest',
29
+ },
30
+ {
31
+ color: '#202020',
32
+ href: '/assets/static/favicon/safari-pinned-tab.svg?v=bOXMwoKlJr',
33
+ rel: 'mask-icon',
34
+ },
35
+ {
36
+ href: '/favicon.ico?v=bOXMwoKlJr',
37
+ rel: 'shortcut icon',
38
+ },
39
+ ],
40
+ meta: [
41
+ {
42
+ content: '/assets/static/favicon/browserconfig.xml?v=bOXMwoKlJr',
43
+ name: 'msapplication-config',
44
+ },
45
+ ],
46
+ })
47
+ }
@@ -0,0 +1,9 @@
1
+ export const useHost = () => {
2
+ if (process.server) {
3
+ const event = useRequestEvent()
4
+
5
+ return getHost(event.node.req)
6
+ } else {
7
+ return location.host
8
+ }
9
+ }
package/nuxt.config.ts ADDED
@@ -0,0 +1,3 @@
1
+ // https://v3.nuxtjs.org/api/configuration/nuxt.config
2
+ export default defineNuxtConfig({
3
+ })
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@dargmuesli/nuxt-vio",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "engines": {
9
+ "node": "19"
10
+ },
11
+ "packageManager": "pnpm@8.0.0",
12
+ "files": [
13
+ "composables",
14
+ "server",
15
+ "utils",
16
+ "nuxt.config.ts"
17
+ ],
18
+ "main": "./nuxt.config.ts",
19
+ "scripts": {
20
+ "dev": "nuxi prepare & nuxi dev .playground",
21
+ "build": "nuxi build .playground",
22
+ "generate": "nuxi generate .playground",
23
+ "preview": "nuxi preview .playground",
24
+ "lint": "eslint ."
25
+ },
26
+ "devDependencies": {
27
+ "@nuxtjs/eslint-config-typescript": "12.0.0",
28
+ "eslint": "8.37.0",
29
+ "nuxt": "3.3.3",
30
+ "typescript": "5.0.3"
31
+ }
32
+ }
@@ -0,0 +1,7 @@
1
+ import { defineEventHandler } from 'h3'
2
+
3
+ export default defineEventHandler((event) => {
4
+ const { res } = event.node
5
+ res.setHeader('Content-Type', 'text/plain')
6
+ res.end('OK')
7
+ })
@@ -0,0 +1,13 @@
1
+ import { defineEventHandler } from 'h3'
2
+
3
+ export default defineEventHandler((event) => {
4
+ const { res } = event.node
5
+
6
+ res.setHeader('Permissions-Policy', '')
7
+
8
+ // // Disabled until there is better browser support (https://caniuse.com/?search=report-to)
9
+ // res.setHeader(
10
+ // 'Report-To',
11
+ // '{"group":"default","max_age":31536000,"endpoints":[{"url":"https://dargmuesli.report-uri.com/a/d/g"}],"include_subdomains":true}'
12
+ // )
13
+ })
@@ -0,0 +1 @@
1
+ export const CYPRESS_BASE_URL = 'http://localhost:3000'
@@ -0,0 +1,7 @@
1
+ import { IncomingMessage } from 'node:http'
2
+
3
+ export const getHost = (req: IncomingMessage) => {
4
+ if (!req.headers.host) throw new Error('Host header is not given!')
5
+
6
+ return req.headers.host
7
+ }
@@ -0,0 +1,2 @@
1
+ export const append = (path: string, pathToAppend: string) =>
2
+ path + (path.endsWith('/') ? '' : '/') + pathToAppend
@@ -0,0 +1,7 @@
1
+ export const isTesting = () => process.client && window.Cypress
2
+
3
+ declare global {
4
+ interface Window {
5
+ Cypress: any
6
+ }
7
+ }