fix: removed plugins, no longer added when upgrading (#2917)
This commit is contained in:
parent
a845dc0937
commit
e62d383bf1
@ -110,7 +110,7 @@ export abstract class Plugin<O = any> implements PluginInterface {
|
|||||||
|
|
||||||
async toJSON(options: any = {}) {
|
async toJSON(options: any = {}) {
|
||||||
const { locale = 'en-US' } = options;
|
const { locale = 'en-US' } = options;
|
||||||
const { packageName, packageJson } = this.options;
|
const { name, packageName, packageJson } = this.options;
|
||||||
if (!packageName) {
|
if (!packageName) {
|
||||||
return {
|
return {
|
||||||
...this.options,
|
...this.options,
|
||||||
@ -127,7 +127,7 @@ export abstract class Plugin<O = any> implements PluginInterface {
|
|||||||
lastUpdated,
|
lastUpdated,
|
||||||
file,
|
file,
|
||||||
updatable: file.startsWith(process.env.PLUGIN_STORAGE_PATH),
|
updatable: file.startsWith(process.env.PLUGIN_STORAGE_PATH),
|
||||||
displayName: packageJson[`displayName.${locale}`] || packageJson.displayName,
|
displayName: packageJson[`displayName.${locale}`] || packageJson.displayName || name,
|
||||||
description: packageJson[`description.${locale}`] || packageJson.description,
|
description: packageJson[`description.${locale}`] || packageJson.description,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,21 +31,21 @@ export class PresetNocoBase extends Plugin {
|
|||||||
];
|
];
|
||||||
|
|
||||||
localPlugins = [
|
localPlugins = [
|
||||||
'audit-logs',
|
['audit-logs', '0.7.1-alpha.4'],
|
||||||
'sample-hello',
|
['sample-hello', '0.8.0-alpha.4'],
|
||||||
'multi-app-manager',
|
['multi-app-manager', '0.7.0-alpha.1'],
|
||||||
'multi-app-share-collection',
|
['multi-app-share-collection', '0.9.2-alpha.1'],
|
||||||
'oidc',
|
['oidc', '0.9.2-alpha.1'],
|
||||||
'saml',
|
['saml', '0.8.1-alpha.3'],
|
||||||
'cas',
|
['cas', '0.13.0-alpha.5'],
|
||||||
'map',
|
['map', '0.8.1-alpha.3'],
|
||||||
'snapshot-field',
|
['snapshot-field', '0.8.1-alpha.3'],
|
||||||
'graph-collection-manager',
|
['graph-collection-manager', '0.9.0-alpha.1'],
|
||||||
'mobile-client',
|
['mobile-client', '0.10.0-alpha.2'],
|
||||||
'api-keys',
|
['api-keys', '0.10.1-alpha.1'],
|
||||||
'localization-management',
|
['localization-management', '0.11.1-alpha.1'],
|
||||||
'theme-editor',
|
['theme-editor', '0.11.1-alpha.1'],
|
||||||
'api-doc',
|
['api-doc', '0.13.0-alpha.1'],
|
||||||
];
|
];
|
||||||
|
|
||||||
splitNames(name: string) {
|
splitNames(name: string) {
|
||||||
@ -61,7 +61,7 @@ export class PresetNocoBase extends Plugin {
|
|||||||
|
|
||||||
getLocalPlugins() {
|
getLocalPlugins() {
|
||||||
const { APPEND_PRESET_LOCAL_PLUGINS } = process.env;
|
const { APPEND_PRESET_LOCAL_PLUGINS } = process.env;
|
||||||
return _.uniq(this.splitNames(APPEND_PRESET_LOCAL_PLUGINS).concat(this.localPlugins));
|
return _.uniq<any>(this.splitNames(APPEND_PRESET_LOCAL_PLUGINS).concat(this.localPlugins as any));
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeLoad() {
|
beforeLoad() {
|
||||||
@ -85,7 +85,8 @@ export class PresetNocoBase extends Plugin {
|
|||||||
return { name, packageName, enabled: true, builtIn: true, version: packageJson.version } as any;
|
return { name, packageName, enabled: true, builtIn: true, version: packageJson.version } as any;
|
||||||
})
|
})
|
||||||
.concat(
|
.concat(
|
||||||
this.getLocalPlugins().map((name) => {
|
this.getLocalPlugins().map((plugin) => {
|
||||||
|
const name = typeof plugin === 'string' ? plugin : plugin[0];
|
||||||
const packageName = PluginManager.getPackageName(name);
|
const packageName = PluginManager.getPackageName(name);
|
||||||
const packageJson = PluginManager.getPackageJson(packageName);
|
const packageJson = PluginManager.getPackageJson(packageName);
|
||||||
return { name, packageName, version: packageJson.version };
|
return { name, packageName, version: packageJson.version };
|
||||||
@ -93,11 +94,32 @@ export class PresetNocoBase extends Plugin {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getPluginToBeUpgraded() {
|
||||||
|
const plugins = this.getBuiltInPlugins().map((name) => {
|
||||||
|
const packageName = PluginManager.getPackageName(name);
|
||||||
|
const packageJson = PluginManager.getPackageJson(packageName);
|
||||||
|
return { name, packageName, enabled: true, builtIn: true, version: packageJson.version } as any;
|
||||||
|
});
|
||||||
|
for (const plugin of this.getLocalPlugins()) {
|
||||||
|
if (Array.isArray(plugin)) {
|
||||||
|
if (await this.app.version.satisfies(`>${plugin[1]}`)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const name = plugin[0];
|
||||||
|
const packageName = PluginManager.getPackageName(name);
|
||||||
|
const packageJson = PluginManager.getPackageJson(packageName);
|
||||||
|
plugins.push({ name, packageName, version: packageJson.version });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return plugins;
|
||||||
|
}
|
||||||
|
|
||||||
async updateOrCreatePlugins() {
|
async updateOrCreatePlugins() {
|
||||||
const repository = this.app.db.getRepository<any>('applicationPlugins');
|
const repository = this.app.db.getRepository<any>('applicationPlugins');
|
||||||
|
const plugins = await this.getPluginToBeUpgraded();
|
||||||
await this.db.sequelize.transaction((transaction) => {
|
await this.db.sequelize.transaction((transaction) => {
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
this.allPlugins.map((values) =>
|
plugins.map((values) =>
|
||||||
repository.updateOrCreate({
|
repository.updateOrCreate({
|
||||||
transaction,
|
transaction,
|
||||||
values,
|
values,
|
||||||
|
Loading…
Reference in New Issue
Block a user