mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
export { runPlugin, stopPlugin } from './startStopPlugin';
|
|
|
|
// Old plugins allowed to import legacy APIs
|
|
const legacyPluginIds = [
|
|
'outline',
|
|
'ylc395.noteLinkSystem',
|
|
'com.github.joplin.kanban',
|
|
];
|
|
|
|
const pathLibrary = require('path');
|
|
const punycode = require('punycode/');
|
|
|
|
export const requireModule = (moduleName: string, fromPluginId: string) => {
|
|
if (moduleName === 'path') {
|
|
return pathLibrary;
|
|
}
|
|
|
|
if (legacyPluginIds.includes(fromPluginId)) {
|
|
if (moduleName === 'punycode') {
|
|
console.warn('Requiring punycode is deprecated. Please transition to a newer API.');
|
|
return punycode;
|
|
}
|
|
if (moduleName === 'fs' || moduleName === 'fs-extra') {
|
|
console.warn('The fs library is unavailable to mobile plugins. A non-functional mock will be returned.');
|
|
return {
|
|
existsSync: () => false,
|
|
pathExists: () => false,
|
|
readFileSync: () => '',
|
|
readFile: () => '',
|
|
writeFileSync: () => '',
|
|
writeFile: () => '',
|
|
appendFile: () => '',
|
|
};
|
|
}
|
|
if (moduleName === 'process') {
|
|
return {};
|
|
}
|
|
if (moduleName === 'url') {
|
|
return { parse: (u: string) => new URL(u) };
|
|
}
|
|
}
|
|
|
|
throw new Error(`Unable to require module ${moduleName} on mobile.`);
|
|
};
|
|
|
|
export { default as initializePluginBackgroundIframe } from './initializePluginBackgroundIframe';
|
|
export { default as initializeDialogWebView } from './initializeDialogWebView';
|