@indaco/sveo 1.0.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +207 -0
  3. package/dist/components/index.d.ts +2 -0
  4. package/dist/components/index.js +2 -0
  5. package/dist/components/metadata/PageMetaTags.svelte +19 -0
  6. package/dist/components/metadata/PageMetaTags.svelte.d.ts +7 -0
  7. package/dist/components/metadata/index.d.ts +3 -0
  8. package/dist/components/metadata/index.js +3 -0
  9. package/dist/components/metadata/opengraph/OpenGraph.svelte +54 -0
  10. package/dist/components/metadata/opengraph/OpenGraph.svelte.d.ts +7 -0
  11. package/dist/components/metadata/opengraph/article.svelte +29 -0
  12. package/dist/components/metadata/opengraph/article.svelte.d.ts +7 -0
  13. package/dist/components/metadata/opengraph/book.svelte +22 -0
  14. package/dist/components/metadata/opengraph/book.svelte.d.ts +7 -0
  15. package/dist/components/metadata/opengraph/business.svelte +29 -0
  16. package/dist/components/metadata/opengraph/business.svelte.d.ts +7 -0
  17. package/dist/components/metadata/opengraph/index.d.ts +1 -0
  18. package/dist/components/metadata/opengraph/index.js +1 -0
  19. package/dist/components/metadata/opengraph/music-album.svelte +34 -0
  20. package/dist/components/metadata/opengraph/music-album.svelte.d.ts +7 -0
  21. package/dist/components/metadata/opengraph/music-playlist.svelte +19 -0
  22. package/dist/components/metadata/opengraph/music-playlist.svelte.d.ts +7 -0
  23. package/dist/components/metadata/opengraph/music-radio-station.svelte +7 -0
  24. package/dist/components/metadata/opengraph/music-radio-station.svelte.d.ts +7 -0
  25. package/dist/components/metadata/opengraph/music-song.svelte +31 -0
  26. package/dist/components/metadata/opengraph/music-song.svelte.d.ts +7 -0
  27. package/dist/components/metadata/opengraph/product.svelte +15 -0
  28. package/dist/components/metadata/opengraph/product.svelte.d.ts +7 -0
  29. package/dist/components/metadata/opengraph/profile.svelte +19 -0
  30. package/dist/components/metadata/opengraph/profile.svelte.d.ts +7 -0
  31. package/dist/components/metadata/opengraph/video-episode.svelte +47 -0
  32. package/dist/components/metadata/opengraph/video-episode.svelte.d.ts +7 -0
  33. package/dist/components/metadata/opengraph/video-movie.svelte +43 -0
  34. package/dist/components/metadata/opengraph/video-movie.svelte.d.ts +7 -0
  35. package/dist/components/metadata/twittercard/TwitterCard.svelte +37 -0
  36. package/dist/components/metadata/twittercard/TwitterCard.svelte.d.ts +7 -0
  37. package/dist/components/metadata/twittercard/index.d.ts +1 -0
  38. package/dist/components/metadata/twittercard/index.js +1 -0
  39. package/dist/components/schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte +30 -0
  40. package/dist/components/schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte.d.ts +6 -0
  41. package/dist/components/schemaorg/breadcrumbs/index.d.ts +1 -0
  42. package/dist/components/schemaorg/breadcrumbs/index.js +1 -0
  43. package/dist/components/schemaorg/index.d.ts +4 -0
  44. package/dist/components/schemaorg/index.js +4 -0
  45. package/dist/components/schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte +22 -0
  46. package/dist/components/schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte.d.ts +8 -0
  47. package/dist/components/schemaorg/sitenavigationelements/index.d.ts +1 -0
  48. package/dist/components/schemaorg/sitenavigationelements/index.js +1 -0
  49. package/dist/components/schemaorg/webpage/JsonLdWebPage.svelte +17 -0
  50. package/dist/components/schemaorg/webpage/JsonLdWebPage.svelte.d.ts +7 -0
  51. package/dist/components/schemaorg/webpage/index.d.ts +1 -0
  52. package/dist/components/schemaorg/webpage/index.js +1 -0
  53. package/dist/components/schemaorg/website/JsonLdWebSite.svelte +50 -0
  54. package/dist/components/schemaorg/website/JsonLdWebSite.svelte.d.ts +7 -0
  55. package/dist/components/schemaorg/website/index.d.ts +1 -0
  56. package/dist/components/schemaorg/website/index.js +1 -0
  57. package/dist/index.d.ts +1 -0
  58. package/dist/index.js +1 -0
  59. package/dist/types.d.ts +231 -0
  60. package/dist/types.js +79 -0
  61. package/dist/utils.d.ts +7 -0
  62. package/dist/utils.js +19 -0
  63. package/package.json +243 -0
package/dist/types.js ADDED
@@ -0,0 +1,79 @@
1
+ /**
2
+ * * OpenGraph
3
+ */
4
+ export var EnumOpenGraphType;
5
+ (function (EnumOpenGraphType) {
6
+ EnumOpenGraphType["Website"] = "website";
7
+ EnumOpenGraphType["Article"] = "article";
8
+ EnumOpenGraphType["Book"] = "book";
9
+ EnumOpenGraphType["Business"] = "business.business";
10
+ EnumOpenGraphType["Product"] = "product";
11
+ EnumOpenGraphType["Profile"] = "profile";
12
+ EnumOpenGraphType["MusicSong"] = "music.song";
13
+ EnumOpenGraphType["MusicAlbum"] = "music.album";
14
+ EnumOpenGraphType["MusicPlaylist"] = "music.playlist";
15
+ EnumOpenGraphType["MusicRadioStation"] = "music.radio_station";
16
+ EnumOpenGraphType["VideoMovie"] = "video.movie";
17
+ EnumOpenGraphType["VideoEpisode"] = "video.episode";
18
+ EnumOpenGraphType["VideoTVShow"] = "video.tv_show";
19
+ EnumOpenGraphType["VideoOther"] = "video.other";
20
+ })(EnumOpenGraphType || (EnumOpenGraphType = {}));
21
+ export var EnumOpenGraphProfileGender;
22
+ (function (EnumOpenGraphProfileGender) {
23
+ EnumOpenGraphProfileGender["Male"] = "male";
24
+ EnumOpenGraphProfileGender["Female"] = "female";
25
+ EnumOpenGraphProfileGender["NonBinary"] = "non-binary";
26
+ EnumOpenGraphProfileGender["Transgender"] = "transgender";
27
+ EnumOpenGraphProfileGender["Intersex"] = "intersex";
28
+ EnumOpenGraphProfileGender["Other"] = "other";
29
+ EnumOpenGraphProfileGender["PreferNotToSay"] = "prefer_not_to_say";
30
+ })(EnumOpenGraphProfileGender || (EnumOpenGraphProfileGender = {}));
31
+ export const OpenGraphProfileGender = {
32
+ Male: EnumOpenGraphProfileGender.Male,
33
+ Female: EnumOpenGraphProfileGender.Female,
34
+ NonBinary: EnumOpenGraphProfileGender.NonBinary,
35
+ Transgender: EnumOpenGraphProfileGender.Transgender,
36
+ Intersex: EnumOpenGraphProfileGender.Intersex,
37
+ Other: EnumOpenGraphProfileGender.Other,
38
+ PreferNotToSay: EnumOpenGraphProfileGender.PreferNotToSay
39
+ };
40
+ export const OpenGraphType = {
41
+ Website: EnumOpenGraphType.Website,
42
+ Article: EnumOpenGraphType.Article,
43
+ Book: EnumOpenGraphType.Book,
44
+ Business: EnumOpenGraphType.Business,
45
+ Product: EnumOpenGraphType.Product,
46
+ Profile: EnumOpenGraphType.Profile,
47
+ MusicSong: EnumOpenGraphType.MusicSong,
48
+ MusicAlbum: EnumOpenGraphType.MusicAlbum,
49
+ MusicPlaylist: EnumOpenGraphType.MusicPlaylist,
50
+ MusicRadioStation: EnumOpenGraphType.MusicRadioStation,
51
+ VideoMovie: EnumOpenGraphType.VideoMovie,
52
+ VideoEpisode: EnumOpenGraphType.VideoEpisode,
53
+ VideoTVShow: EnumOpenGraphType.VideoTVShow,
54
+ VideoOther: EnumOpenGraphType.VideoOther
55
+ };
56
+ /**
57
+ * * EnumTwitterCardType
58
+ *
59
+ * * Enumeration with different TwitterCard types:
60
+ * * https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards
61
+ *
62
+ * - SUMMARY: Title, description, and thumbnail
63
+ * - LARGE: Similar to the Summary Card, but with a prominently-featured image
64
+ * - APP: A Card with a direct download to a mobile app
65
+ * - PLAYER: A Card that can display video/audio/media
66
+ */
67
+ export var EnumTwitterCardType;
68
+ (function (EnumTwitterCardType) {
69
+ EnumTwitterCardType["Summary"] = "summary";
70
+ EnumTwitterCardType["Large"] = "summary_large_image";
71
+ EnumTwitterCardType["App"] = "app";
72
+ EnumTwitterCardType["Player"] = "player";
73
+ })(EnumTwitterCardType || (EnumTwitterCardType = {}));
74
+ export const TwitterCardType = {
75
+ Summary: EnumTwitterCardType.Summary,
76
+ Large: EnumTwitterCardType.Large,
77
+ App: EnumTwitterCardType.App,
78
+ Player: EnumTwitterCardType.Player
79
+ };
@@ -0,0 +1,7 @@
1
+ import type { Thing, WithContext } from 'schema-dts';
2
+ import type { SEOContact, SEOPerson } from './types.js';
3
+ export type Schema = Thing | WithContext<Thing>;
4
+ export declare function serializeJSONLdSchema(thing: Schema, dataTestId: string): string;
5
+ export declare const isSEOPerson: (contact: SEOContact) => contact is SEOPerson;
6
+ export declare function toISODateString(date: string | Date | undefined | null): string | undefined;
7
+ export declare function pathSegments(url: string): string[];
package/dist/utils.js ADDED
@@ -0,0 +1,19 @@
1
+ export function serializeJSONLdSchema(thing, dataTestId) {
2
+ return `<script type="application/ld+json" data-testid="${dataTestId}">${JSON.stringify(thing, null, 2)}</script>`;
3
+ }
4
+ export const isSEOPerson = (contact) => contact.jobTitle != undefined && contact.jobTitle != '';
5
+ export function toISODateString(date) {
6
+ if (!date)
7
+ return undefined;
8
+ const d = typeof date === 'string' ? new Date(date) : date;
9
+ return d instanceof Date && !isNaN(d.getTime()) ? d.toISOString() : undefined;
10
+ }
11
+ export function pathSegments(url) {
12
+ try {
13
+ const pathname = new URL(url).pathname;
14
+ return pathname.split('/').filter((part) => part.trim() !== '');
15
+ }
16
+ catch (error) {
17
+ throw new Error(`[pathSegments] Expected a valid URL: ${error}`);
18
+ }
19
+ }
package/package.json ADDED
@@ -0,0 +1,243 @@
1
+ {
2
+ "name": "@indaco/sveo",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "SEO made simple for Svelte & SvelteKit.",
6
+ "keywords": [
7
+ "svelte",
8
+ "svelte5",
9
+ "sveltekit",
10
+ "components",
11
+ "svelte components",
12
+ "seo",
13
+ "jsonld",
14
+ "schemaorg",
15
+ "opengraph",
16
+ "metatags"
17
+ ],
18
+ "bugs": {
19
+ "url": "https://github.com/indaco/sveo/issues"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/indaco/sveo.git"
24
+ },
25
+ "license": "MIT",
26
+ "sideEffects": false,
27
+ "type": "module",
28
+ "exports": {
29
+ "./package.json": "./package.json",
30
+ "./metadata": {
31
+ "types": "./dist/components/metadata/index.d.ts",
32
+ "svelte": "./dist/components/metadata/index.js",
33
+ "default": "./dist/components/metadata/index.js"
34
+ },
35
+ "./metadata/PageMetaTags.svelte": {
36
+ "types": "./dist/components/metadata/PageMetaTags.svelte.d.ts",
37
+ "svelte": "./dist/components/metadata/PageMetaTags.svelte",
38
+ "default": "./dist/components/metadata/PageMetaTags.svelte"
39
+ },
40
+ "./metadata/opengraph": {
41
+ "types": "./dist/components/metadata/opengraph/index.d.ts",
42
+ "svelte": "./dist/components/metadata/opengraph/index.js",
43
+ "default": "./dist/components/metadata/opengraph/index.js"
44
+ },
45
+ "./metadata/opengraph/OpenGraph.svelte": {
46
+ "types": "./dist/components/metadata/opengraph/OpenGraph.svelte.d.ts",
47
+ "svelte": "./dist/components/metadata/opengraph/OpenGraph.svelte",
48
+ "default": "./dist/components/metadata/opengraph/OpenGraph.svelte"
49
+ },
50
+ "./metadata/twittercard": {
51
+ "types": "./dist/components/metadata/twittercard/index.d.ts",
52
+ "svelte": "./dist/components/metadata/twittercard/index.js",
53
+ "default": "./dist/components/metadata/twittercard/index.js"
54
+ },
55
+ "./metadata/twittercard/TwitterCard.svelte": {
56
+ "types": "./dist/components/metadata/twittercard/TwitterCard.svelte.d.ts",
57
+ "svelte": "./dist/components/metadata/twittercard/TwitterCard.svelte",
58
+ "default": "./dist/components/metadata/twittercard/TwitterCard.svelte"
59
+ },
60
+ "./schemaorg": {
61
+ "types": "./dist/components/schemaorg/index.d.ts",
62
+ "svelte": "./dist/components/schemaorg/index.js",
63
+ "default": "./dist/components/schemaorg/index.js"
64
+ },
65
+ "./schemaorg/breadcrumbs": {
66
+ "types": "./dist/components/schemaorg/breadcrumbs/index.d.ts",
67
+ "svelte": "./dist/components/schemaorg/breadcrumbs/index.js",
68
+ "default": "./dist/components/schemaorg/breadcrumbs/index.js"
69
+ },
70
+ "./schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte": {
71
+ "types": "./dist/components/schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte.d.ts",
72
+ "svelte": "./dist/components/schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte",
73
+ "default": "./dist/components/schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte"
74
+ },
75
+ "./schemaorg/sitenavigationelements": {
76
+ "types": "./dist/components/schemaorg/sitenavigationelements/index.d.ts",
77
+ "svelte": "./dist/components/schemaorg/sitenavigationelements/index.js",
78
+ "default": "./dist/components/schemaorg/sitenavigationelements/index.js"
79
+ },
80
+ "./schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte": {
81
+ "types": "./dist/components/schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte.d.ts",
82
+ "svelte": "./dist/components/schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte",
83
+ "default": "./dist/components/schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte"
84
+ },
85
+ "./schemaorg/webpage": {
86
+ "types": "./dist/components/schemaorg/webpage/index.d.ts",
87
+ "svelte": "./dist/components/schemaorg/webpage/index.js",
88
+ "default": "./dist/components/schemaorg/webpage/index.js"
89
+ },
90
+ "./schemaorg/webpage/JsonLdWebPage.svelte": {
91
+ "types": "./dist/components/schemaorg/webpage/JsonLdWebPage.svelte.d.ts",
92
+ "svelte": "./dist/components/schemaorg/webpage/JsonLdWebPage.svelte",
93
+ "default": "./dist/components/schemaorg/webpage/JsonLdWebPage.svelte"
94
+ },
95
+ "./schemaorg/website": {
96
+ "types": "./dist/components/schemaorg/website/index.d.ts",
97
+ "svelte": "./dist/components/schemaorg/website/index.js",
98
+ "default": "./dist/components/schemaorg/website/index.js"
99
+ },
100
+ "./schemaorg/website/JsonLdWebSite.svelte": {
101
+ "types": "./dist/components/schemaorg/website/JsonLdWebSite.svelte.d.ts",
102
+ "svelte": "./dist/components/schemaorg/website/JsonLdWebSite.svelte",
103
+ "default": "./dist/components/schemaorg/website/JsonLdWebSite.svelte"
104
+ },
105
+ ".": {
106
+ "types": "./dist/index.d.ts",
107
+ "svelte": "./dist/index.js",
108
+ "default": "./dist/index.js"
109
+ },
110
+ "./types": {
111
+ "types": "./dist/types.d.ts",
112
+ "default": "./dist/types.js"
113
+ }
114
+ },
115
+ "main": "./dist/index.js",
116
+ "svelte": "./dist/index.js",
117
+ "module": "./dist/index.js",
118
+ "types": "./dist/index.d.ts",
119
+ "typesVersions": {
120
+ ">4.0": {
121
+ "metadata": [
122
+ "./dist/components/metadata/index.d.ts"
123
+ ],
124
+ "metadata/PageMetaTags.svelte": [
125
+ "./dist/components/metadata/PageMetaTags.svelte.d.ts"
126
+ ],
127
+ "metadata/opengraph": [
128
+ "./dist/components/metadata/opengraph/index.d.ts"
129
+ ],
130
+ "metadata/opengraph/OpenGraph.svelte": [
131
+ "./dist/components/metadata/opengraph/OpenGraph.svelte.d.ts"
132
+ ],
133
+ "metadata/twittercard": [
134
+ "./dist/components/metadata/twittercard/index.d.ts"
135
+ ],
136
+ "metadata/twittercard/TwitterCard.svelte": [
137
+ "./dist/components/metadata/twittercard/TwitterCard.svelte.d.ts"
138
+ ],
139
+ "schemaorg": [
140
+ "./dist/components/schemaorg/index.d.ts"
141
+ ],
142
+ "schemaorg/breadcrumbs": [
143
+ "./dist/components/schemaorg/breadcrumbs/index.d.ts"
144
+ ],
145
+ "schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte": [
146
+ "./dist/components/schemaorg/breadcrumbs/JsonLdBreadcrumbs.svelte.d.ts"
147
+ ],
148
+ "schemaorg/sitenavigationelements": [
149
+ "./dist/components/schemaorg/sitenavigationelements/index.d.ts"
150
+ ],
151
+ "schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte": [
152
+ "./dist/components/schemaorg/sitenavigationelements/JsonLdSiteNavigationElements.svelte.d.ts"
153
+ ],
154
+ "schemaorg/webpage": [
155
+ "./dist/components/schemaorg/webpage/index.d.ts"
156
+ ],
157
+ "schemaorg/webpage/JsonLdWebPage.svelte": [
158
+ "./dist/components/schemaorg/webpage/JsonLdWebPage.svelte.d.ts"
159
+ ],
160
+ "schemaorg/website": [
161
+ "./dist/components/schemaorg/website/index.d.ts"
162
+ ],
163
+ "schemaorg/website/JsonLdWebSite.svelte": [
164
+ "./dist/components/schemaorg/website/JsonLdWebSite.svelte.d.ts"
165
+ ],
166
+ "index": [
167
+ "./dist/index.d.ts"
168
+ ],
169
+ "types": [
170
+ "./dist/types.d.ts"
171
+ ]
172
+ }
173
+ },
174
+ "files": [
175
+ "dist",
176
+ "!dist/**/*.test.*",
177
+ "!dist/**/*.spec.*",
178
+ "!dist/**/*.md"
179
+ ],
180
+ "scripts": {
181
+ "build": "pnpm clean && vite build && pnpm prepack",
182
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
183
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
184
+ "clean": "rimraf dist",
185
+ "dev": "pnpm sync && vite dev",
186
+ "format": "prettier --write .",
187
+ "lint": "prettier --check . && eslint .",
188
+ "prepack": "svelte-kit sync && svelte-package && publint",
189
+ "prepare": "node .husky/install.mjs",
190
+ "test": "vitest run",
191
+ "test:coverage": "vitest run --coverage",
192
+ "test:watch": "vitest --watch"
193
+ },
194
+ "dependencies": {
195
+ "schema-dts": "^1.1.5"
196
+ },
197
+ "devDependencies": {
198
+ "@commitlint/cli": "^19.8.0",
199
+ "@commitlint/config-conventional": "^19.8.0",
200
+ "@eslint/compat": "^1.2.8",
201
+ "@eslint/js": "^9.23.0",
202
+ "@hyperse/vitest-coverage-reporter": "^1.0.15",
203
+ "@sveltejs/adapter-auto": "^6.0.0",
204
+ "@sveltejs/kit": "^2.20.3",
205
+ "@sveltejs/package": "^2.3.10",
206
+ "@sveltejs/vite-plugin-svelte": "^5.0.3",
207
+ "@testing-library/jest-dom": "^6.6.3",
208
+ "@testing-library/svelte": "^5.2.7",
209
+ "@types/node": "22.14.0",
210
+ "@typescript-eslint/eslint-plugin": "^8.29.0",
211
+ "@typescript-eslint/parser": "^8.29.0",
212
+ "@vitest/coverage-v8": "^3.1.1",
213
+ "eslint": "^9.23.0",
214
+ "eslint-config-prettier": "^10.1.1",
215
+ "eslint-plugin-svelte": "^3.5.0",
216
+ "globals": "^16.0.0",
217
+ "husky": "^9.1.7",
218
+ "jsdom": "^26.0.0",
219
+ "lint-staged": "^15.5.0",
220
+ "prettier": "^3.5.3",
221
+ "prettier-plugin-packagejson": "2.5.10",
222
+ "prettier-plugin-svelte": "^3.3.3",
223
+ "publint": "^0.3.10",
224
+ "rimraf": "^6.0.1",
225
+ "svelte-check": "^4.1.5",
226
+ "svelte-preprocess": "^6.0.3",
227
+ "tslib": "^2.8.1",
228
+ "typescript": "^5.8.2",
229
+ "typescript-eslint": "^8.29.0",
230
+ "vite": "^6.2.5",
231
+ "vitest": "^3.1.1"
232
+ },
233
+ "peerDependencies": {
234
+ "schema-dts": "^1.1.5",
235
+ "svelte": "^5.0.0"
236
+ },
237
+ "packageManager": "pnpm@10.7.1",
238
+ "pnpm": {
239
+ "onlyBuiltDependencies": [
240
+ "esbuild"
241
+ ]
242
+ }
243
+ }