|
1 | 1 | export type * from 'decap-cms-core';
|
2 |
| -import { DecapCmsCore as CMS } from 'decap-cms-core'; |
| 2 | +import { DecapCmsCore as cms } from 'decap-cms-core'; |
| 3 | + |
| 4 | +import type { CMS, CmsBackendType, InitOptions } from 'decap-cms-core'; |
3 | 5 | export { CMS };
|
4 | 6 |
|
5 | 7 | // Backend registration functions
|
6 |
| -export async function registerGitGatewayBackend() { |
7 |
| - const m = await import('decap-cms-backend-git-gateway'); |
8 |
| - console.log('Loaded decap-cms-backend-git-gateway', m); |
9 |
| - CMS.registerBackend('git-gateway', m.GitGatewayBackend); |
10 |
| -} |
11 |
| - |
12 |
| -export async function registerAzureBackend() { |
13 |
| - const m = await import('decap-cms-backend-azure'); |
14 |
| - console.log('Loaded decap-cms-backend-azure', m); |
15 |
| - CMS.registerBackend('azure', m.AzureBackend); |
16 |
| -} |
17 |
| - |
18 |
| -export async function registerAwsCognitoGithubProxyBackend() { |
19 |
| - const m = await import('decap-cms-backend-aws-cognito-github-proxy'); |
20 |
| - console.log('Loaded decap-cms-backend-aws-cognito-github-proxy', m); |
21 |
| - CMS.registerBackend('aws-cognito-github-proxy', m.AwsCognitoGitHubProxyBackend); |
22 |
| -} |
23 |
| - |
24 |
| -export async function registerGitHubBackend() { |
25 |
| - const m = await import('decap-cms-backend-github'); |
26 |
| - console.log('Loaded decap-cms-backend-github', m); |
27 |
| - CMS.registerBackend('github', m.GitHubBackend); |
28 |
| -} |
29 |
| - |
30 |
| -export async function registerGitLabBackend() { |
31 |
| - const m = await import('decap-cms-backend-gitlab'); |
32 |
| - console.log('Loaded decap-cms-backend-gitlab', m); |
33 |
| - CMS.registerBackend('gitlab', m.GitLabBackend); |
34 |
| -} |
35 |
| - |
36 |
| -export async function registerGiteaBackend() { |
37 |
| - const m = await import('decap-cms-backend-gitea'); |
38 |
| - console.log('Loaded decap-cms-backend-gitea', m); |
39 |
| - CMS.registerBackend('gitea', m.GiteaBackend); |
40 |
| -} |
41 |
| - |
42 |
| -export async function registerBitbucketBackend() { |
43 |
| - const m = await import('decap-cms-backend-bitbucket'); |
44 |
| - console.log('Loaded decap-cms-backend-bitbucket', m); |
45 |
| - CMS.registerBackend('bitbucket', m.BitbucketBackend); |
46 |
| -} |
47 |
| - |
48 |
| -export async function registerTestBackend() { |
49 |
| - const m = await import('decap-cms-backend-test'); |
50 |
| - console.log('Loaded decap-cms-backend-test', m); |
51 |
| - CMS.registerBackend('test-repo', m.TestBackend); |
52 |
| -} |
53 |
| - |
54 |
| -export async function registerProxyBackend() { |
55 |
| - const m = await import('decap-cms-backend-proxy'); |
56 |
| - console.log('Loaded decap-cms-backend-proxy', m); |
57 |
| - CMS.registerBackend('proxy', m.ProxyBackend); |
| 8 | +export async function registerBackend(type: CmsBackendType) { |
| 9 | + switch (type) { |
| 10 | + case 'aws-cognito-github-proxy': |
| 11 | + cms.registerBackend( |
| 12 | + type, |
| 13 | + (await import('decap-cms-backend-aws-cognito-github-proxy')).AwsCognitoGitHubProxyBackend, |
| 14 | + ); |
| 15 | + break; |
| 16 | + case 'azure': |
| 17 | + cms.registerBackend(type, (await import('decap-cms-backend-azure')).AzureBackend); |
| 18 | + break; |
| 19 | + case 'bitbucket': |
| 20 | + cms.registerBackend(type, (await import('decap-cms-backend-bitbucket')).BitbucketBackend); |
| 21 | + break; |
| 22 | + case 'git-gateway': |
| 23 | + cms.registerBackend(type, (await import('decap-cms-backend-git-gateway')).GitGatewayBackend); |
| 24 | + break; |
| 25 | + case 'github': |
| 26 | + cms.registerBackend(type, (await import('decap-cms-backend-github')).GitHubBackend); |
| 27 | + break; |
| 28 | + case 'gitlab': |
| 29 | + cms.registerBackend(type, (await import('decap-cms-backend-gitlab')).GitLabBackend); |
| 30 | + break; |
| 31 | + case 'gitea': |
| 32 | + cms.registerBackend(type, (await import('decap-cms-backend-gitea')).GiteaBackend); |
| 33 | + break; |
| 34 | + case 'test-repo': |
| 35 | + cms.registerBackend(type, (await import('decap-cms-backend-test')).TestBackend); |
| 36 | + break; |
| 37 | + case 'proxy': |
| 38 | + cms.registerBackend(type, (await import('decap-cms-backend-proxy')).ProxyBackend); |
| 39 | + break; |
| 40 | + default: |
| 41 | + throw new Error(`Backend type '${type}' not supported`); |
| 42 | + } |
58 | 43 | }
|
59 | 44 |
|
60 | 45 | // Widget registration functions
|
61 | 46 | export async function registerCoreWidgets() {
|
62 | 47 | const { widgets } = await import('./core-widgets');
|
63 |
| - CMS.registerWidget(widgets); |
| 48 | + cms.registerWidget(widgets); |
64 | 49 | }
|
65 | 50 |
|
66 | 51 | export async function registerMapWidget() {
|
67 | 52 | const m = await import('decap-cms-widget-map');
|
68 |
| - CMS.registerWidget(m.default.Widget() as any); |
| 53 | + cms.registerWidget(m.default.Widget() as any); |
69 | 54 | }
|
70 | 55 |
|
71 | 56 | export async function registerCodeWidget() {
|
72 | 57 | const m = await import('decap-cms-widget-code');
|
73 |
| - CMS.registerWidget(m.default.Widget() as any); |
| 58 | + cms.registerWidget(m.default.Widget() as any); |
74 | 59 | }
|
75 | 60 |
|
76 | 61 | // Editor component registration functions
|
77 | 62 | export async function registerImageComponent() {
|
78 | 63 | const m = await import('decap-cms-editor-component-image');
|
79 |
| - CMS.registerEditorComponent(m.default); |
| 64 | + cms.registerEditorComponent(m.default); |
80 | 65 | }
|
81 | 66 |
|
82 | 67 | // Locale registration functions
|
83 | 68 | export async function registerLocale(locale: string) {
|
84 | 69 | const m = await import('decap-cms-locales');
|
85 | 70 | if (locale in m) {
|
86 |
| - CMS.registerLocale(locale, m[locale as keyof typeof m]); |
| 71 | + cms.registerLocale(locale, m[locale as keyof typeof m]); |
87 | 72 | } else {
|
88 | 73 | throw new Error(`Locale ${locale} not found`);
|
89 | 74 | }
|
@@ -129,19 +114,32 @@ export const availableLocales = [
|
129 | 114 | // Convenience function to register everything
|
130 | 115 | export async function registerAll() {
|
131 | 116 | await Promise.all([
|
132 |
| - registerGitGatewayBackend(), |
133 |
| - registerAzureBackend(), |
134 |
| - registerAwsCognitoGithubProxyBackend(), |
135 |
| - registerGitHubBackend(), |
136 |
| - registerGitLabBackend(), |
137 |
| - registerGiteaBackend(), |
138 |
| - registerBitbucketBackend(), |
139 |
| - registerTestBackend(), |
140 |
| - registerProxyBackend(), |
| 117 | + registerBackend('git-gateway'), |
| 118 | + registerBackend('azure'), |
| 119 | + registerBackend('aws-cognito-github-proxy'), |
| 120 | + registerBackend('github'), |
| 121 | + registerBackend('gitlab'), |
| 122 | + registerBackend('gitea'), |
| 123 | + registerBackend('bitbucket'), |
| 124 | + registerBackend('test-repo'), |
| 125 | + registerBackend('proxy'), |
141 | 126 | registerCoreWidgets(),
|
142 | 127 | registerMapWidget(),
|
143 | 128 | registerCodeWidget(),
|
144 | 129 | registerImageComponent(),
|
145 | 130 | registerLocale('en'), // Register English by default
|
146 | 131 | ]);
|
147 | 132 | }
|
| 133 | + |
| 134 | +type Options = InitOptions & { setup?: (cms: CMS) => Promise<void> }; |
| 135 | + |
| 136 | +export async function init(options: Options) { |
| 137 | + const { config, setup } = options; |
| 138 | + await Promise.all([ |
| 139 | + setup, |
| 140 | + registerCoreWidgets(), |
| 141 | + registerLocale(config.locale || 'en'), |
| 142 | + registerBackend(config.local_backend ? 'proxy' : config.backend.name), |
| 143 | + ]); |
| 144 | + cms.init(options); |
| 145 | +} |
0 commit comments