@actuate-media/plugin-seo 0.0.11 → 0.0.13
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.
- package/CHANGELOG.md +117 -0
- package/README.md +29 -0
- package/dist/__tests__/index.test.js +5 -0
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/admin/GooglePreview.d.ts.map +1 -1
- package/dist/admin/GooglePreview.js +2 -1
- package/dist/admin/GooglePreview.js.map +1 -1
- package/dist/admin/SEOPanel.d.ts.map +1 -1
- package/dist/admin/SEOPanel.js +13 -2
- package/dist/admin/SEOPanel.js.map +1 -1
- package/dist/admin/SchemaPreview.d.ts.map +1 -1
- package/dist/admin/SchemaPreview.js +12 -2
- package/dist/admin/SchemaPreview.js.map +1 -1
- package/dist/canonical/index.d.ts.map +1 -1
- package/dist/canonical/index.js +8 -8
- package/dist/canonical/index.js.map +1 -1
- package/dist/collections.d.ts +1 -1
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js.map +1 -1
- package/dist/fields.d.ts +1 -1
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +58 -58
- package/dist/fields.js.map +1 -1
- package/dist/hooks.d.ts +7 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +10 -16
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +23 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -21
- package/dist/index.js.map +1 -1
- package/dist/link-health/index.d.ts +1 -1
- package/dist/link-health/index.d.ts.map +1 -1
- package/dist/link-health/index.js +14 -14
- package/dist/link-health/index.js.map +1 -1
- package/dist/og-image/index.d.ts +1 -1
- package/dist/og-image/index.d.ts.map +1 -1
- package/dist/og-image/index.js +12 -12
- package/dist/og-image/index.js.map +1 -1
- package/dist/robots/index.d.ts.map +1 -1
- package/dist/robots/index.js +14 -16
- package/dist/robots/index.js.map +1 -1
- package/dist/schema/auto-detect.d.ts +2 -2
- package/dist/schema/auto-detect.d.ts.map +1 -1
- package/dist/schema/auto-detect.js +2 -27
- package/dist/schema/auto-detect.js.map +1 -1
- package/dist/schema/composer.d.ts.map +1 -1
- package/dist/schema/composer.js +20 -26
- package/dist/schema/composer.js.map +1 -1
- package/dist/schema/registry.d.ts +28 -28
- package/dist/schema/registry.d.ts.map +1 -1
- package/dist/schema/validator.d.ts +1 -1
- package/dist/schema/validator.d.ts.map +1 -1
- package/dist/schema/validator.js +52 -52
- package/dist/schema/validator.js.map +1 -1
- package/dist/sitemap/index.d.ts +3 -3
- package/dist/sitemap/index.d.ts.map +1 -1
- package/dist/sitemap/index.js +32 -31
- package/dist/sitemap/index.js.map +1 -1
- package/package.json +5 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# @actuate-media/plugin-seo
|
|
2
|
+
|
|
3
|
+
## 0.0.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 869620b: Align SEO audit, render, and Content SEO editing: auto-canonical and effective schema type resolution match `composePageMeta()`, schema fields sync on save, Content SEO drawer adds schema type, plugin removes dead `beforeCreate` hook and re-exports cms-core schema detection.
|
|
8
|
+
|
|
9
|
+
## 0.0.12
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 854152d: Developer experience improvements from external-consumer feedback:
|
|
14
|
+
- Every published package now ships its `CHANGELOG.md` in the npm tarball, and packages that were missing a `README.md` (cli, cms-admin, cms-core, import, platform-vercel, all plugins, sections-react) now have one — so release notes and usage docs are visible on npmjs.com and in `node_modules`.
|
|
15
|
+
- New client-safe form validation entry point: `@actuate-media/cms-core/forms/client` exports `validateFormFieldClient()`, `validateFormValuesClient()`, visibility/conditional helpers, and the exact `FORM_EMAIL_RE` / `FORM_PHONE_RE` regexes the server enforces — zero Node dependencies, so public-site forms can mirror server rules without reimplementing them. The server validator now imports the same primitives, so client and server can never drift.
|
|
16
|
+
|
|
17
|
+
## 0.0.11
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- b5de8dd: Fix ESM module resolution and dependency duplication issues reported during consumer integration.
|
|
22
|
+
- Add "default" export condition to all platform and plugin packages so they resolve correctly from require() contexts (fixes ERR_PACKAGE_PATH_NOT_EXPORTED in next.config.ts and serverless functions).
|
|
23
|
+
- Move @actuate-media/cms-core from direct dependencies to peerDependencies across all packages to prevent duplicate installations when consumer version ranges don't exactly match the pinned version.
|
|
24
|
+
- Add "prepack" lifecycle script to create-actuate-cms to guarantee dist/ is built before npm publishes the package (fixes empty dist/ in v0.4.0).
|
|
25
|
+
|
|
26
|
+
## 0.0.10
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- Updated dependencies [54c7a3b]
|
|
31
|
+
- @actuate-media/cms-core@0.6.0
|
|
32
|
+
|
|
33
|
+
## 0.0.9
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [c08cf8b]
|
|
38
|
+
- Updated dependencies [80aa939]
|
|
39
|
+
- @actuate-media/cms-core@0.5.0
|
|
40
|
+
|
|
41
|
+
## 0.0.8
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- Updated dependencies [f2cf7d7]
|
|
46
|
+
- @actuate-media/cms-core@0.4.0
|
|
47
|
+
|
|
48
|
+
## 0.0.7
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- Updated dependencies [0621037]
|
|
53
|
+
- @actuate-media/cms-core@0.3.1
|
|
54
|
+
|
|
55
|
+
## 0.0.6
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Updated dependencies [4e3a5eb]
|
|
60
|
+
- @actuate-media/cms-core@0.3.0
|
|
61
|
+
|
|
62
|
+
## 0.0.5
|
|
63
|
+
|
|
64
|
+
### Patch Changes
|
|
65
|
+
|
|
66
|
+
- Updated dependencies
|
|
67
|
+
- @actuate-media/cms-core@0.2.3
|
|
68
|
+
|
|
69
|
+
## 0.0.4
|
|
70
|
+
|
|
71
|
+
### Patch Changes
|
|
72
|
+
|
|
73
|
+
- Updated dependencies
|
|
74
|
+
- @actuate-media/cms-core@0.2.2
|
|
75
|
+
|
|
76
|
+
## 0.0.3
|
|
77
|
+
|
|
78
|
+
### Patch Changes
|
|
79
|
+
|
|
80
|
+
- Updated dependencies
|
|
81
|
+
- @actuate-media/cms-core@0.2.1
|
|
82
|
+
|
|
83
|
+
## 0.0.2
|
|
84
|
+
|
|
85
|
+
### Patch Changes
|
|
86
|
+
|
|
87
|
+
- 3fd38a2: Fix all 13 integration issues discovered during MaidPro.co deployment
|
|
88
|
+
|
|
89
|
+
**cms-core:**
|
|
90
|
+
- Add .js extensions to all ESM relative imports (58 files)
|
|
91
|
+
- Replace workspace:\* with versioned deps in all packages
|
|
92
|
+
- Add sideEffects:false for proper tree-shaking
|
|
93
|
+
- Subpath exports (/config, /api, /middleware, /next) avoid barrel side effects
|
|
94
|
+
- Stats/search routes use safeCount/safeFindMany for missing Prisma models
|
|
95
|
+
- Ship prisma/cms-schema.prisma with all required CMS models
|
|
96
|
+
- Accept both CMS_SECRET and CMS_SESSION_SECRET with clear error messages
|
|
97
|
+
- Fix hardcoded /admin paths in OAuth flow (now uses getAdminPath())
|
|
98
|
+
- Loosen withActuateCMS and createCMSMiddleware parameter types
|
|
99
|
+
- Auto-inject transpilePackages and serverExternalPackages in withActuateCMS
|
|
100
|
+
- Unify PluginDefinition with ActuatePlugin interface
|
|
101
|
+
|
|
102
|
+
**cms-admin:**
|
|
103
|
+
- Scope all 40+ CSS theme variables to .actuate-admin instead of :root
|
|
104
|
+
- ThemeProvider applies dark class to .actuate-admin, not document.documentElement
|
|
105
|
+
- Scaffold uses (admin)/(site) route groups for full CSS/script isolation
|
|
106
|
+
- Sidebar branding supports custom logo via config.admin.branding
|
|
107
|
+
|
|
108
|
+
**platform-vercel:**
|
|
109
|
+
- Email adapter accepts both `from` and `defaultFrom`
|
|
110
|
+
|
|
111
|
+
**All plugin/platform packages:**
|
|
112
|
+
- Fix ESM .js extensions in compiled output
|
|
113
|
+
- Replace workspace:\* with ^0.1.0 for publishable deps
|
|
114
|
+
|
|
115
|
+
- Updated dependencies [682dac7]
|
|
116
|
+
- Updated dependencies [3fd38a2]
|
|
117
|
+
- @actuate-media/cms-core@0.2.0
|
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# @actuate-media/plugin-seo
|
|
2
|
+
|
|
3
|
+
SEO toolkit for [Actuate CMS](https://github.com/actuate-media/actuatecms) —
|
|
4
|
+
meta/OG fields, sitemaps, robots controls, structured data, and site-wide SEO
|
|
5
|
+
scans.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @actuate-media/plugin-seo
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { seoPlugin } from '@actuate-media/plugin-seo'
|
|
15
|
+
|
|
16
|
+
export default defineConfig({
|
|
17
|
+
plugins: [seoPlugin()],
|
|
18
|
+
// ...
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Release notes
|
|
23
|
+
|
|
24
|
+
See [CHANGELOG.md](./CHANGELOG.md) (shipped with the package) or the
|
|
25
|
+
[GitHub releases](https://github.com/actuate-media/actuatecms/releases).
|
|
26
|
+
|
|
27
|
+
## License
|
|
28
|
+
|
|
29
|
+
MIT
|
|
@@ -35,6 +35,11 @@ describe('plugin-seo', () => {
|
|
|
35
35
|
const plugin = seoPlugin(cfg);
|
|
36
36
|
expect(plugin.hooks?.[0]?._pluginConfig).toEqual(cfg);
|
|
37
37
|
});
|
|
38
|
+
it('does not register beforeCreate (schema defaults live in cms-core)', () => {
|
|
39
|
+
const events = seoHooks.map((h) => h.event);
|
|
40
|
+
expect(events).not.toContain('beforeCreate');
|
|
41
|
+
expect(events).toContain('afterUpdate');
|
|
42
|
+
});
|
|
38
43
|
});
|
|
39
44
|
});
|
|
40
45
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GooglePreview.d.ts","sourceRoot":"","sources":["../../src/admin/GooglePreview.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GooglePreview.d.ts","sourceRoot":"","sources":["../../src/admin/GooglePreview.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,kBAAkB,2CA0E5E"}
|
|
@@ -35,7 +35,8 @@ export function GooglePreview({ title, description, url }) {
|
|
|
35
35
|
color: '#1a0dab',
|
|
36
36
|
marginBottom: '4px',
|
|
37
37
|
cursor: 'pointer',
|
|
38
|
-
}, children: truncatedTitle || 'Page Title' }), _jsx("div", { style: { fontSize: '14px', lineHeight: '22px', color: '#4d5156' }, children: truncatedDescription ||
|
|
38
|
+
}, children: truncatedTitle || 'Page Title' }), _jsx("div", { style: { fontSize: '14px', lineHeight: '22px', color: '#4d5156' }, children: truncatedDescription ||
|
|
39
|
+
'Add a meta description to see how it appears in search results.' })] })] }));
|
|
39
40
|
}
|
|
40
41
|
function formatDisplayUrl(url) {
|
|
41
42
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GooglePreview.js","sourceRoot":"","sources":["../../src/admin/GooglePreview.tsx"],"names":[],"mappings":"AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"GooglePreview.js","sourceRoot":"","sources":["../../src/admin/GooglePreview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SEOPanel.d.ts","sourceRoot":"","sources":["../../src/admin/SEOPanel.tsx"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SEOPanel.d.ts","sourceRoot":"","sources":["../../src/admin/SEOPanel.tsx"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD;AAKD,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,EACvB,SAAc,EACd,eAAoB,EACpB,YAAiB,EACjB,OAAY,EACZ,QAAQ,GACT,EAAE,aAAa,2CA2If"}
|
package/dist/admin/SEOPanel.js
CHANGED
|
@@ -14,7 +14,13 @@ export function SEOPanel({ metaTitle = '', metaDescription = '', canonicalUrl =
|
|
|
14
14
|
}
|
|
15
15
|
const titleLength = title.length;
|
|
16
16
|
const descLength = description.length;
|
|
17
|
-
return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '16px', padding: '16px' }, children: [_jsx("h3", { style: {
|
|
17
|
+
return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '16px', padding: '16px' }, children: [_jsx("h3", { style: {
|
|
18
|
+
margin: 0,
|
|
19
|
+
fontSize: '14px',
|
|
20
|
+
fontWeight: 600,
|
|
21
|
+
textTransform: 'uppercase',
|
|
22
|
+
letterSpacing: '0.05em',
|
|
23
|
+
}, children: "SEO Settings" }), _jsxs("div", { children: [_jsx("label", { style: { display: 'block', fontSize: '13px', fontWeight: 500, marginBottom: '4px' }, children: "Meta Title" }), _jsx("input", { type: "text", value: title, maxLength: META_TITLE_MAX, onChange: (e) => {
|
|
18
24
|
setTitle(e.target.value);
|
|
19
25
|
handleChange('metaTitle', e.target.value);
|
|
20
26
|
}, style: {
|
|
@@ -55,7 +61,12 @@ export function SEOPanel({ metaTitle = '', metaDescription = '', canonicalUrl =
|
|
|
55
61
|
borderRadius: '6px',
|
|
56
62
|
fontSize: '14px',
|
|
57
63
|
boxSizing: 'border-box',
|
|
58
|
-
} }), image && (_jsx("div", { style: {
|
|
64
|
+
} }), image && (_jsx("div", { style: {
|
|
65
|
+
marginTop: '8px',
|
|
66
|
+
borderRadius: '6px',
|
|
67
|
+
overflow: 'hidden',
|
|
68
|
+
border: '1px solid #e5e7eb',
|
|
69
|
+
}, children: _jsx("img", { src: image, alt: "OG Preview", style: { width: '100%', height: 'auto', display: 'block' } }) }))] })] }));
|
|
59
70
|
}
|
|
60
71
|
function CharacterCount({ current, max }) {
|
|
61
72
|
const ratio = current / max;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SEOPanel.js","sourceRoot":"","sources":["../../src/admin/SEOPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"SEOPanel.js","sourceRoot":"","sources":["../../src/admin/SEOPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaPreview.d.ts","sourceRoot":"","sources":["../../src/admin/SchemaPreview.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"SchemaPreview.d.ts","sourceRoot":"","sources":["../../src/admin/SchemaPreview.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CA2E3D"}
|
|
@@ -6,7 +6,12 @@ export function SchemaPreview({ schema }) {
|
|
|
6
6
|
const formatted = useMemo(() => formatJsonLd(schema), [schema]);
|
|
7
7
|
const schemaType = schema['@type'] ?? 'Unknown';
|
|
8
8
|
const isValid = Boolean(schema['@context'] && schema['@type']);
|
|
9
|
-
return (_jsxs("div", { style: { fontFamily: 'system-ui, sans-serif', padding: '16px' }, children: [_jsxs("div", { style: {
|
|
9
|
+
return (_jsxs("div", { style: { fontFamily: 'system-ui, sans-serif', padding: '16px' }, children: [_jsxs("div", { style: {
|
|
10
|
+
display: 'flex',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
justifyContent: 'space-between',
|
|
13
|
+
marginBottom: '12px',
|
|
14
|
+
}, children: [_jsx("h3", { style: { margin: 0, fontSize: '14px', fontWeight: 600 }, children: "Structured Data Preview" }), _jsx("span", { style: {
|
|
10
15
|
fontSize: '12px',
|
|
11
16
|
padding: '2px 8px',
|
|
12
17
|
borderRadius: '9999px',
|
|
@@ -23,7 +28,12 @@ export function SchemaPreview({ schema }) {
|
|
|
23
28
|
padding: '16px',
|
|
24
29
|
overflow: 'auto',
|
|
25
30
|
maxHeight: '400px',
|
|
26
|
-
}, children: _jsx("pre", { style: { margin: 0, fontSize: '13px', lineHeight: '20px', color: '#d4d4d4' }, children: _jsx("code", { children: formatted.map((segment, i) => (_jsx("span", { style: { color: segment.color }, children: segment.text }, i))) }) }) }), _jsxs("div", { style: { marginTop: '12px', fontSize: '12px', color: '#9ca3af' }, children: ["Embed as", ' ', _jsx("code", { style: {
|
|
31
|
+
}, children: _jsx("pre", { style: { margin: 0, fontSize: '13px', lineHeight: '20px', color: '#d4d4d4' }, children: _jsx("code", { children: formatted.map((segment, i) => (_jsx("span", { style: { color: segment.color }, children: segment.text }, i))) }) }) }), _jsxs("div", { style: { marginTop: '12px', fontSize: '12px', color: '#9ca3af' }, children: ["Embed as", ' ', _jsx("code", { style: {
|
|
32
|
+
background: '#f3f4f6',
|
|
33
|
+
padding: '1px 4px',
|
|
34
|
+
borderRadius: '3px',
|
|
35
|
+
fontSize: '11px',
|
|
36
|
+
}, children: '<script type="application/ld+json">' })] })] }));
|
|
27
37
|
}
|
|
28
38
|
function formatJsonLd(obj, indent = 0) {
|
|
29
39
|
const segments = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaPreview.js","sourceRoot":"","sources":["../../src/admin/SchemaPreview.tsx"],"names":[],"mappings":"AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"SchemaPreview.js","sourceRoot":"","sources":["../../src/admin/SchemaPreview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canonical/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canonical/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,cAAc,EAAE,CAmCjG;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAanE"}
|
package/dist/canonical/index.js
CHANGED
|
@@ -37,17 +37,17 @@ export function detectDuplicates(pages) {
|
|
|
37
37
|
/** Selects the best canonical URL from a group of duplicates. */
|
|
38
38
|
export function suggestCanonical(duplicates) {
|
|
39
39
|
const ranked = [...duplicates.urls].sort((a, b) => {
|
|
40
|
-
const depthA = a.split(
|
|
41
|
-
const depthB = b.split(
|
|
40
|
+
const depthA = a.split('/').filter(Boolean).length;
|
|
41
|
+
const depthB = b.split('/').filter(Boolean).length;
|
|
42
42
|
if (depthA !== depthB)
|
|
43
43
|
return depthA - depthB;
|
|
44
|
-
if (a.includes(
|
|
44
|
+
if (a.includes('?') && !b.includes('?'))
|
|
45
45
|
return 1;
|
|
46
|
-
if (!a.includes(
|
|
46
|
+
if (!a.includes('?') && b.includes('?'))
|
|
47
47
|
return -1;
|
|
48
48
|
return a.length - b.length;
|
|
49
49
|
});
|
|
50
|
-
return ranked[0] ??
|
|
50
|
+
return ranked[0] ?? '';
|
|
51
51
|
}
|
|
52
52
|
function computeSimilarity(a, b) {
|
|
53
53
|
const tokensA = normalize(a);
|
|
@@ -67,11 +67,11 @@ function computeSimilarity(a, b) {
|
|
|
67
67
|
}
|
|
68
68
|
function normalize(content) {
|
|
69
69
|
return content
|
|
70
|
-
.replace(/<[^>]+>/g,
|
|
71
|
-
.replace(/\s+/g,
|
|
70
|
+
.replace(/<[^>]+>/g, ' ')
|
|
71
|
+
.replace(/\s+/g, ' ')
|
|
72
72
|
.trim()
|
|
73
73
|
.toLowerCase()
|
|
74
|
-
.split(
|
|
74
|
+
.split(' ')
|
|
75
75
|
.filter((t) => t.length > 2);
|
|
76
76
|
}
|
|
77
77
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canonical/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canonical/index.ts"],"names":[],"mappings":"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"}
|
package/dist/collections.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAEnE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAM,CAAA"}
|
package/dist/collections.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAyC,EAAE,
|
|
1
|
+
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAyC,EAAE,CAAA"}
|
package/dist/fields.d.ts
CHANGED
package/dist/fields.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAqHrD,CAAA"}
|
package/dist/fields.js
CHANGED
|
@@ -1,114 +1,114 @@
|
|
|
1
1
|
export const seoFields = {
|
|
2
2
|
metaTitle: {
|
|
3
|
-
type:
|
|
4
|
-
label:
|
|
3
|
+
type: 'text',
|
|
4
|
+
label: 'Meta Title',
|
|
5
5
|
maxLength: 70,
|
|
6
6
|
admin: {
|
|
7
|
-
position:
|
|
8
|
-
description:
|
|
7
|
+
position: 'sidebar',
|
|
8
|
+
description: 'Recommended length: 50–60 characters. Displayed in browser tabs and search results.',
|
|
9
9
|
},
|
|
10
10
|
},
|
|
11
11
|
metaDescription: {
|
|
12
|
-
type:
|
|
13
|
-
label:
|
|
12
|
+
type: 'text',
|
|
13
|
+
label: 'Meta Description',
|
|
14
14
|
maxLength: 160,
|
|
15
15
|
admin: {
|
|
16
|
-
position:
|
|
17
|
-
description:
|
|
16
|
+
position: 'sidebar',
|
|
17
|
+
description: 'Recommended length: 120–155 characters. Appears below the title in search results.',
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
canonicalUrl: {
|
|
21
|
-
type:
|
|
22
|
-
label:
|
|
21
|
+
type: 'url',
|
|
22
|
+
label: 'Canonical URL',
|
|
23
23
|
admin: {
|
|
24
|
-
position:
|
|
25
|
-
description:
|
|
24
|
+
position: 'sidebar',
|
|
25
|
+
description: 'Set a canonical URL to prevent duplicate content issues. Leave blank to use the page URL.',
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
28
|
ogImage: {
|
|
29
|
-
type:
|
|
30
|
-
label:
|
|
31
|
-
accept: [
|
|
29
|
+
type: 'media',
|
|
30
|
+
label: 'OG Image',
|
|
31
|
+
accept: ['image/png', 'image/jpeg', 'image/webp'],
|
|
32
32
|
admin: {
|
|
33
|
-
position:
|
|
34
|
-
description:
|
|
33
|
+
position: 'sidebar',
|
|
34
|
+
description: 'Recommended size: 1200×630px. Displayed when shared on social platforms.',
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
ogTitle: {
|
|
38
|
-
type:
|
|
39
|
-
label:
|
|
38
|
+
type: 'text',
|
|
39
|
+
label: 'OG Title',
|
|
40
40
|
maxLength: 70,
|
|
41
41
|
admin: {
|
|
42
|
-
position:
|
|
43
|
-
description:
|
|
42
|
+
position: 'sidebar',
|
|
43
|
+
description: 'Overrides the meta title for social sharing. Falls back to Meta Title if empty.',
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
ogDescription: {
|
|
47
|
-
type:
|
|
48
|
-
label:
|
|
47
|
+
type: 'text',
|
|
48
|
+
label: 'OG Description',
|
|
49
49
|
maxLength: 200,
|
|
50
50
|
admin: {
|
|
51
|
-
position:
|
|
52
|
-
description:
|
|
51
|
+
position: 'sidebar',
|
|
52
|
+
description: 'Overrides the meta description for social sharing.',
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
55
|
twitterCard: {
|
|
56
|
-
type:
|
|
57
|
-
label:
|
|
56
|
+
type: 'select',
|
|
57
|
+
label: 'Twitter Card',
|
|
58
58
|
options: [
|
|
59
|
-
{ label:
|
|
60
|
-
{ label:
|
|
61
|
-
{ label:
|
|
62
|
-
{ label:
|
|
59
|
+
{ label: 'Summary', value: 'summary' },
|
|
60
|
+
{ label: 'Summary Large Image', value: 'summary_large_image' },
|
|
61
|
+
{ label: 'App', value: 'app' },
|
|
62
|
+
{ label: 'Player', value: 'player' },
|
|
63
63
|
],
|
|
64
64
|
admin: {
|
|
65
|
-
position:
|
|
66
|
-
description:
|
|
65
|
+
position: 'sidebar',
|
|
66
|
+
description: 'Controls the card style when shared on Twitter/X.',
|
|
67
67
|
},
|
|
68
68
|
},
|
|
69
69
|
robotsNoindex: {
|
|
70
|
-
type:
|
|
71
|
-
label:
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
label: 'No Index',
|
|
72
72
|
defaultValue: false,
|
|
73
73
|
admin: {
|
|
74
|
-
position:
|
|
75
|
-
description:
|
|
74
|
+
position: 'sidebar',
|
|
75
|
+
description: 'Prevent search engines from indexing this page.',
|
|
76
76
|
},
|
|
77
77
|
},
|
|
78
78
|
robotsNofollow: {
|
|
79
|
-
type:
|
|
80
|
-
label:
|
|
79
|
+
type: 'boolean',
|
|
80
|
+
label: 'No Follow',
|
|
81
81
|
defaultValue: false,
|
|
82
82
|
admin: {
|
|
83
|
-
position:
|
|
84
|
-
description:
|
|
83
|
+
position: 'sidebar',
|
|
84
|
+
description: 'Prevent search engines from following links on this page.',
|
|
85
85
|
},
|
|
86
86
|
},
|
|
87
87
|
structuredDataType: {
|
|
88
|
-
type:
|
|
89
|
-
label:
|
|
88
|
+
type: 'select',
|
|
89
|
+
label: 'Structured Data Type',
|
|
90
90
|
options: [
|
|
91
|
-
{ label:
|
|
92
|
-
{ label:
|
|
93
|
-
{ label:
|
|
94
|
-
{ label:
|
|
95
|
-
{ label:
|
|
96
|
-
{ label:
|
|
97
|
-
{ label:
|
|
98
|
-
{ label:
|
|
99
|
-
{ label:
|
|
100
|
-
{ label:
|
|
91
|
+
{ label: 'Article', value: 'Article' },
|
|
92
|
+
{ label: 'Web Page', value: 'WebPage' },
|
|
93
|
+
{ label: 'Person', value: 'Person' },
|
|
94
|
+
{ label: 'Event', value: 'Event' },
|
|
95
|
+
{ label: 'FAQ Page', value: 'FAQPage' },
|
|
96
|
+
{ label: 'Service', value: 'Service' },
|
|
97
|
+
{ label: 'Job Posting', value: 'JobPosting' },
|
|
98
|
+
{ label: 'Local Business', value: 'LocalBusiness' },
|
|
99
|
+
{ label: 'Review', value: 'Review' },
|
|
100
|
+
{ label: 'Product', value: 'Product' },
|
|
101
101
|
],
|
|
102
102
|
admin: {
|
|
103
|
-
position:
|
|
104
|
-
description:
|
|
103
|
+
position: 'sidebar',
|
|
104
|
+
description: 'Schema.org type for structured data. Auto-detected from collection if not set.',
|
|
105
105
|
},
|
|
106
106
|
},
|
|
107
107
|
structuredDataOverrides: {
|
|
108
|
-
type:
|
|
109
|
-
label:
|
|
108
|
+
type: 'json',
|
|
109
|
+
label: 'Structured Data Overrides',
|
|
110
110
|
admin: {
|
|
111
|
-
description:
|
|
111
|
+
description: 'Manual JSON-LD overrides merged into the auto-generated structured data.',
|
|
112
112
|
},
|
|
113
113
|
},
|
|
114
114
|
};
|