Skip to content

Commit df7df72

Browse files
chore: update dependencies and hooks for StudioCMS WYSIWYG and Blog to beta.18 (#19)
- Updated minimum version for StudioCMS WYSIWYG and Blog to 0.1.0-beta.18. - Refactored integration hooks for better configuration handling in WYSIWYG and Blog. - Added new route patterns for WYSIWYG and Blog integrations. - Updated pnpm-lock.yaml and pnpm-workspace.yaml to reflect new version dependencies. - Created a changeset for the patch release to support beta.18.
1 parent a505458 commit df7df72

File tree

6 files changed

+232
-296
lines changed

6 files changed

+232
-296
lines changed

.changeset/fresh-pandas-stop.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@studiocms/socialposter": patch
3+
"@studiocms/wysiwyg": patch
4+
---
5+
6+
Update to support beta.18

packages/studiocms_socialposter/src/index.ts

Lines changed: 110 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -39,113 +39,121 @@ function studiocmsSocialPoster(opts?: Partial<StudioCMSSocialPosterOptions>): St
3939
return definePlugin({
4040
identifier: packageIdentifier,
4141
name: 'StudioCMS Social Poster',
42-
studiocmsMinimumVersion: '0.1.0-beta.15',
43-
dashboardPages: {
44-
user: [
45-
{
46-
title: {
47-
en: 'Share to Social Media',
48-
de: 'Share to Social Media',
49-
es: 'Share to Social Media',
50-
fr: 'Share to Social Media',
51-
},
52-
description: 'Share content on Social media',
53-
sidebar: 'single',
54-
pageBodyComponent: resolve('./pages/socials.astro'),
55-
route: 'share',
56-
requiredPermissions: 'editor',
57-
icon: 'share',
58-
},
59-
],
60-
},
61-
integration: {
62-
name: packageIdentifier,
63-
hooks: {
64-
'astro:config:setup': (params) => {
65-
const { injectRoute } = params;
42+
studiocmsMinimumVersion: '0.1.0-beta.18',
43+
hooks: {
44+
'studiocms:astro:config': ({ addIntegrations }) => {
45+
addIntegrations({
46+
name: packageIdentifier,
47+
hooks: {
48+
'astro:config:setup': (params) => {
49+
const { injectRoute } = params;
6650

67-
addAstroEnvConfig(params, {
68-
validateSecrets: true,
69-
schema: {
70-
BLUESKY_SERVICE: envField.string({
71-
context: 'server',
72-
access: 'secret',
73-
optional: !options.bluesky,
74-
}),
75-
BLUESKY_USERNAME: envField.string({
76-
context: 'server',
77-
access: 'secret',
78-
optional: !options.bluesky,
79-
}),
80-
BLUESKY_PASSWORD: envField.string({
81-
context: 'server',
82-
access: 'secret',
83-
optional: !options.bluesky,
84-
}),
85-
THREADS_USER_ID: envField.string({
86-
context: 'server',
87-
access: 'secret',
88-
optional: !options.threads,
89-
}),
90-
THREADS_ACCESS_TOKEN: envField.string({
91-
context: 'server',
92-
access: 'secret',
93-
optional: !options.threads,
94-
}),
95-
TWITTER_API_KEY: envField.string({
96-
context: 'server',
97-
access: 'secret',
98-
optional: !options.twitter,
99-
}),
100-
TWITTER_API_SECRET: envField.string({
101-
context: 'server',
102-
access: 'secret',
103-
optional: !options.twitter,
104-
}),
105-
TWITTER_ACCESS_TOKEN: envField.string({
106-
context: 'server',
107-
access: 'secret',
108-
optional: !options.twitter,
109-
}),
110-
TWITTER_ACCESS_SECRET: envField.string({
111-
context: 'server',
112-
access: 'secret',
113-
optional: !options.twitter,
114-
}),
115-
},
116-
});
51+
addAstroEnvConfig(params, {
52+
validateSecrets: true,
53+
schema: {
54+
BLUESKY_SERVICE: envField.string({
55+
context: 'server',
56+
access: 'secret',
57+
optional: !options.bluesky,
58+
}),
59+
BLUESKY_USERNAME: envField.string({
60+
context: 'server',
61+
access: 'secret',
62+
optional: !options.bluesky,
63+
}),
64+
BLUESKY_PASSWORD: envField.string({
65+
context: 'server',
66+
access: 'secret',
67+
optional: !options.bluesky,
68+
}),
69+
THREADS_USER_ID: envField.string({
70+
context: 'server',
71+
access: 'secret',
72+
optional: !options.threads,
73+
}),
74+
THREADS_ACCESS_TOKEN: envField.string({
75+
context: 'server',
76+
access: 'secret',
77+
optional: !options.threads,
78+
}),
79+
TWITTER_API_KEY: envField.string({
80+
context: 'server',
81+
access: 'secret',
82+
optional: !options.twitter,
83+
}),
84+
TWITTER_API_SECRET: envField.string({
85+
context: 'server',
86+
access: 'secret',
87+
optional: !options.twitter,
88+
}),
89+
TWITTER_ACCESS_TOKEN: envField.string({
90+
context: 'server',
91+
access: 'secret',
92+
optional: !options.twitter,
93+
}),
94+
TWITTER_ACCESS_SECRET: envField.string({
95+
context: 'server',
96+
access: 'secret',
97+
optional: !options.twitter,
98+
}),
99+
},
100+
});
117101

118-
addVirtualImports(params, {
119-
name: packageIdentifier,
120-
imports: {
121-
'studiocms:socialposter/config': `export default ${JSON.stringify(options)}`,
122-
},
123-
});
102+
addVirtualImports(params, {
103+
name: packageIdentifier,
104+
imports: {
105+
'studiocms:socialposter/config': `export default ${JSON.stringify(options)}`,
106+
},
107+
});
124108

125-
if (options.bluesky) {
126-
injectRoute({
127-
pattern: '/studiocms_api/socialposter/post-to-bluesky',
128-
entrypoint: resolve('./routes/postToBlueSky.js'),
129-
prerender: false,
130-
});
131-
}
109+
if (options.bluesky) {
110+
injectRoute({
111+
pattern: '/studiocms_api/socialposter/post-to-bluesky',
112+
entrypoint: resolve('./routes/postToBlueSky.js'),
113+
prerender: false,
114+
});
115+
}
132116

133-
if (options.threads) {
134-
injectRoute({
135-
pattern: '/studiocms_api/socialposter/post-to-threads',
136-
entrypoint: resolve('./routes/postToThreads.js'),
137-
prerender: false,
138-
});
139-
}
117+
if (options.threads) {
118+
injectRoute({
119+
pattern: '/studiocms_api/socialposter/post-to-threads',
120+
entrypoint: resolve('./routes/postToThreads.js'),
121+
prerender: false,
122+
});
123+
}
140124

141-
if (options.twitter) {
142-
injectRoute({
143-
pattern: '/studiocms_api/socialposter/post-to-twitter',
144-
entrypoint: resolve('./routes/postToTwitter.js'),
145-
prerender: false,
146-
});
147-
}
148-
},
125+
if (options.twitter) {
126+
injectRoute({
127+
pattern: '/studiocms_api/socialposter/post-to-twitter',
128+
entrypoint: resolve('./routes/postToTwitter.js'),
129+
prerender: false,
130+
});
131+
}
132+
},
133+
},
134+
});
135+
},
136+
'studiocms:config:setup': ({ setDashboard }) => {
137+
setDashboard({
138+
dashboardPages: {
139+
user: [
140+
{
141+
title: {
142+
en: 'Share to Social Media',
143+
de: 'Share to Social Media',
144+
es: 'Share to Social Media',
145+
fr: 'Share to Social Media',
146+
},
147+
description: 'Share content on Social media',
148+
sidebar: 'single',
149+
pageBodyComponent: resolve('./pages/socials.astro'),
150+
route: 'share',
151+
requiredPermissions: 'editor',
152+
icon: 'share',
153+
},
154+
],
155+
},
156+
});
149157
},
150158
},
151159
});

packages/studiocms_wysiwyg/src/studio/index.ts

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -51,40 +51,48 @@ function studiocmsWYSIWYGStudio(options: StudioCMSWYSIWYGStudioOptions): StudioC
5151
return definePlugin({
5252
identifier: packageIdentifier,
5353
name: 'StudioCMS WYSIWYG (GrapesJS StudioSDK)',
54-
studiocmsMinimumVersion: '0.1.0-beta.13',
55-
pageTypes: [
56-
{
57-
identifier: 'studiocms/wysiwyg/studio',
58-
label: 'GrapesJS StudioSDK',
59-
rendererComponent: resolve('./components/Render.astro'),
60-
pageContentComponent: resolve('./components/StudioSDKEditor.astro'),
54+
studiocmsMinimumVersion: '0.1.0-beta.18',
55+
hooks: {
56+
'studiocms:astro:config': ({ addIntegrations }) => {
57+
addIntegrations({
58+
name: packageIdentifier,
59+
hooks: {
60+
'astro:config:setup': (params) => {
61+
addVirtualImports(params, {
62+
name: packageIdentifier,
63+
imports: {
64+
'studiocms:wysiwyg/studio/client': `
65+
export const licenseKey = ${JSON.stringify(options.licenseKey)};
66+
export const youtubeAPIKey = ${JSON.stringify(options.youtubeAPIKey)};
67+
export const googleFontsAPIKey = ${JSON.stringify(options.googleFontsAPIKey)};
68+
export * from '${resolve('./utils.js')}';
69+
`,
70+
},
71+
});
72+
73+
params.injectRoute({
74+
entrypoint: resolve('./routes/partial.astro'),
75+
pattern: '/studiocms_api/wysiwyg_editor/studiosdk/partial',
76+
prerender: false,
77+
});
78+
},
79+
'astro:config:done': () => {
80+
shared.sanitize = options.sanitize || {};
81+
},
82+
},
83+
});
6184
},
62-
],
63-
integration: {
64-
name: packageIdentifier,
65-
hooks: {
66-
'astro:config:setup': (params) => {
67-
addVirtualImports(params, {
68-
name: packageIdentifier,
69-
imports: {
70-
'studiocms:wysiwyg/studio/client': `
71-
export const licenseKey = ${JSON.stringify(options.licenseKey)};
72-
export const youtubeAPIKey = ${JSON.stringify(options.youtubeAPIKey)};
73-
export const googleFontsAPIKey = ${JSON.stringify(options.googleFontsAPIKey)};
74-
export * from '${resolve('./utils.js')}';
75-
`,
85+
'studiocms:config:setup': ({ setRendering }) => {
86+
setRendering({
87+
pageTypes: [
88+
{
89+
identifier: 'studiocms/wysiwyg/studio',
90+
label: 'GrapesJS StudioSDK',
91+
rendererComponent: resolve('./components/Render.astro'),
92+
pageContentComponent: resolve('./components/StudioSDKEditor.astro'),
7693
},
77-
});
78-
79-
params.injectRoute({
80-
entrypoint: resolve('./routes/partial.astro'),
81-
pattern: '/studiocms_api/wysiwyg_editor/studiosdk/partial',
82-
prerender: false,
83-
});
84-
},
85-
'astro:config:done': () => {
86-
shared.sanitize = options.sanitize || {};
87-
},
94+
],
95+
});
8896
},
8997
},
9098
});

packages/studiocms_wysiwyg/src/wysiwyg/index.ts

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,36 @@ function studiocmsWYSIWYG(options?: StudioCMSWYSIWYGOptions): StudioCMSPlugin {
3333
return definePlugin({
3434
identifier: packageIdentifier,
3535
name: 'StudioCMS WYSIWYG Editor',
36-
studiocmsMinimumVersion: '0.1.0-beta.13',
37-
pageTypes: [
38-
{
39-
identifier: 'studiocms/wysiwyg',
40-
label: 'WYSIWYG',
41-
rendererComponent: resolve('./components/Render.astro'),
42-
pageContentComponent: resolve('./components/Editor.astro'),
36+
studiocmsMinimumVersion: '0.1.0-beta.18',
37+
hooks: {
38+
'studiocms:astro:config': ({ addIntegrations }) => {
39+
addIntegrations({
40+
name: packageIdentifier,
41+
hooks: {
42+
'astro:config:setup': (params) => {
43+
params.injectRoute({
44+
entrypoint: resolve('./routes/partial.astro'),
45+
pattern: '/studiocms_api/wysiwyg_editor/partial',
46+
prerender: false,
47+
});
48+
},
49+
'astro:config:done': () => {
50+
shared.sanitize = options?.sanitize || {};
51+
},
52+
},
53+
});
4354
},
44-
],
45-
integration: {
46-
name: packageIdentifier,
47-
hooks: {
48-
'astro:config:setup': (params) => {
49-
params.injectRoute({
50-
entrypoint: resolve('./routes/partial.astro'),
51-
pattern: '/studiocms_api/wysiwyg_editor/partial',
52-
prerender: false,
53-
});
54-
},
55-
'astro:config:done': () => {
56-
shared.sanitize = options?.sanitize || {};
57-
},
55+
'studiocms:config:setup': ({ setRendering }) => {
56+
setRendering({
57+
pageTypes: [
58+
{
59+
identifier: 'studiocms/wysiwyg',
60+
label: 'WYSIWYG',
61+
rendererComponent: resolve('./components/Render.astro'),
62+
pageContentComponent: resolve('./components/Editor.astro'),
63+
},
64+
],
65+
});
5866
},
5967
},
6068
});

0 commit comments

Comments
 (0)