Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mellowtel.com/llms.txt

Use this file to discover all available pages before exploring further.

Ця функція вимагає Mellowtel версії 1.6.2 або вище. Це є критичною зміною порівняно з попередніми версіями.
Mellowtel надає додаткову функцію, яка дозволяє обробляти більше запитів і, таким чином, заробляти більше. Ця функція називається “Meucci”.

Встановлення

Спочатку встанови необхідний пакет npm, використовуючи свій улюблений менеджер пакетів:

Використовуючи npm

npm install @mellowtel/module-meucci

Використовуючи yarn

yarn add @mellowtel/module-meucci

Використовуючи pnpm

pnpm add @mellowtel/module-meucci
Нижче наведено інструкції для увімкнення функції Meucci у вашому плагіні браузера, з опціями для стандартної реалізації та реалізації з використанням Plasmo framework.

Стандартна реалізація

1. Створи JavaScript файл з ім’ям meucci.js

У каталозі src, або де у тебе знаходяться js файли, створи файл з ім’ям meucci.js і додай наступний код. Переконайся, що цей файл включений у твою фінальну збірку (каталог /dist). Якщо ти слідував початковій налаштуванню webpack, ти можеш просто додати цей файл до об’єкта entry у твоїй конфігурації webpack.
import ModuleMeucci from "@mellowtel/module-meucci";

let moduleMeucci;

(async () => {
    moduleMeucci = new ModuleMeucci();
    await moduleMeucci.init();
})();

2. Онови свою конфігурацію webpack

Переконайся, що твій фінальний каталог збірки включає файл meucci.js. Якщо ти слідував початковій налаштуванню webpack, ти можеш просто додати цей файл до об’єкта entry у твоїй конфігурації webpack.
module.exports = {
    // ...
    entry: {
        // background: path.join(__dirname, 'src', 'background.js'),
        // popup: path.join(__dirname, 'src', 'popup.js'),
        // content_script: path.join(__dirname, 'src', 'content_script.js'), ...
        // pascoli: path.join(__dirname, 'src', 'pascoli.js'),
        meucci: path.join(__dirname, 'src', 'meucci.js'),
        // ...
    },
    // ...
}

3. Онови manifest.json

Додай файл meucci.js до свого manifest.json як web_accessible_resources:
{
  "web_accessible_resources": [
    {
      "resources": [
        "meucci.js"
      ],
      "matches": [ "<all_urls>" ]
    }
  ]
}

Реалізація з використанням Plasmo Framework

Якщо ти використовуєш Plasmo framework, дотримуйся цих альтернативних кроків:

1. Створи TypeScript файл з ім’ям meucci.ts

У каталозі src, або де у тебе знаходяться ts файли, створи файл з ім’ям meucci.ts і додай наступний код:
import ModuleMeucci from "@mellowtel/module-meucci";

let moduleMeucci;

(async () => {
    moduleMeucci = new ModuleMeucci();
    await moduleMeucci.init();
})();

2. Створи скрипт збірки

Створи файл build-meucci.js у корені проекту з наступним вмістом:
const esbuild = require('esbuild')
const fs = require('fs')
const path = require('path')

// Функція для очікування наявності каталогу
const waitForDirectory = async (dir, timeout = 10000) => {
  const start = Date.now()
  while (!fs.existsSync(dir)) {
    if (Date.now() - start > timeout) {
      throw new Error(`Час очікування на каталог вичерпано: ${dir}`)
    }
    await new Promise(resolve => setTimeout(resolve, 100))
  }
}

// Створи функцію збірки
async function buildMeucci() {
  // Збери пакет
  await esbuild.build({
    entryPoints: ['src/meucci.ts'], // TODO: ЗАМІНИ на шлях до твого файлу meucci.ts
    bundle: true,
    outfile: 'meucci.bundled.js',
    platform: 'browser',
    format: 'iife',
    minify: true,
    target: ['es2020'],
    define: {
      'process.env.NODE_ENV': '"production"'
    }
  })

  // Прочитай зібраний файл
  const bundledContent = fs.readFileSync('meucci.bundled.js', 'utf8')

  // Скопіюй у dev та prod каталоги
  const directories = [ 
    'build/chrome-mv3-dev',
    'build/chrome-mv3-prod',
    'build/firefox-mv2-dev',
    'build/firefox-mv2-prod',
    'build/safari-mv2-dev',
    'build/safari-mv2-prod',
    'build/opera-mv3-dev',
    'build/opera-mv3-prod'
  ] // TODO: ЗАМІНИ на шляхи до твоїх dev та prod каталогів

  // Оброби всі каталоги одночасно
  await Promise.all(directories.map(async (dir) => {
    try {
      console.log(`Очікування на каталог: ${dir}`)
      await waitForDirectory(dir)
      // Запиши зібраний файл
      fs.writeFileSync(path.join(dir, 'meucci.js'), bundledContent)
      console.log(`Додано meucci.js до ${dir}`)
    } catch (err) {
      console.log(`Пропущено ${dir} - ${err.message}`)
    }
  }))

  // Видали тимчасовий файл
  fs.unlinkSync('meucci.bundled.js')
}

buildMeucci().catch(err => {
  console.error(err)
  process.exit(1)
})

3. Онови package.json

Додай наступне до свого файлу package.json:
{
  "scripts": {
    "build:meucci": "node build-meucci.js"
  },
  "web_accessible_resources": [
    {
      "resources": [
        "meucci.js"
      ],
      "matches": [ "<all_urls>" ]
    }
  ]
}
Ти можеш:
  1. Запустити скрипт збірки вручну після основної збірки: npm run build:meucci
  2. Або додати його до існуючого скрипту збірки з &: "build": "your-existing-build-command & npm run build:meucci"
Це забезпечить правильне збирання та копіювання файлу Meucci у всі каталоги збірки у правильній структурі Plasmo.

Онови initContentScript

Для обох реалізацій, зміни метод initContentScript у скрипті вмісту, щоб включити правильний шлях до файлу Meucci:
// Для стандартної реалізації
await initContentScript({
    meucciFilePath: "meucci.js"
});
Для Plasmo framework, ти можеш використовувати наступне:
// Для Plasmo framework
await initContentScript({
    meucciFilePath: "meucci.js"
});
Якщо у тебе також увімкнено Pascoli, ти можеш використовувати наступне:
await initContentScript({
    pascoliFilePath: "pascoli.html", // або "tabs/pascoli.html" якщо використовуєш Plasmo framework
    meucciFilePath: "meucci.js"
});