()
| 123 | if (!sharpPromise) sharpPromise = Promise.resolve(requireOrInstall("sharp")); |
| 124 | return sharpPromise; |
| 125 | } |
| 126 | |
| 127 | async function getCanvas(): Promise<any> { |
| 128 | if (!canvasPromise) canvasPromise = Promise.resolve(requireOrInstall("canvas")); |
| 129 | return canvasPromise; |
| 130 | } |
| 131 | |
| 132 | function quoteResourcesReady(): boolean { |
| 133 | const quoteDir = path.join(quotePluginDir(), "quote"); |
| 134 | const versionFile = path.join(quoteDir, ".version"); |
| 135 | let currentVersion = ""; |
| 136 | try { currentVersion = fs.readFileSync(versionFile, "utf8").trim(); } catch (_) {} |
| 137 | if (currentVersion !== QUOTE_PLUGIN_VERSION) return false; |
| 138 | if (QUOTE_DEP_FILES.some((rel) => !fs.existsSync(path.join(quoteDir, rel)))) return false; |
no test coverage detected