UNPKG

strapi-plugin-meilisearch

Version:

Synchronise and search in your Strapi content-types with Meilisearch

243 lines (242 loc) 7.42 kB
import { jsx } from "react/jsx-runtime"; import { useRef, useEffect } from "react"; import { Search } from "@strapi/icons"; const __variableDynamicImportRuntimeHelper = (glob, path, segs) => { const v = glob[path]; if (v) { return typeof v === "function" ? v() : Promise.resolve(v); } return new Promise((_, reject) => { (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)( reject.bind( null, new Error( "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "") ) ) ); }); }; const name$1 = "strapi-plugin-meilisearch"; const version = "0.13.2"; const description = "Synchronise and search in your Strapi content-types with Meilisearch"; const scripts = { build: "strapi-plugin build", verify: "strapi-plugin verify", watch: "strapi-plugin watch", "watch:link": "strapi-plugin watch:link", "playground:dev": "yarn --cwd ./playground && yarn --cwd ./playground dev", "playground:build": "yarn --cwd ./playground && yarn --cwd ./playground build", "playground:ci": "yarn --cwd ./playground ci", style: "eslint --ext .js,.test.js .", "style:fix": "eslint --ext .js,.test.js . --fix", test: "jest --testPathPattern=tests", "test:watch": "jest --watch --testPathPattern=tests --verbose", "test:e2e:watch": 'concurrently --kill-others -s first "NODE_ENV=test yarn playground:dev" "cypress open --env env=watch"' }; const strapi = { name: "meilisearch", icon: "search", description: "Search in your content-types with the Meilisearch plugin", kind: "plugin" }; const type = "commonjs"; const exports = { "./package.json": "./package.json", "./strapi-admin": { source: "./admin/src/index.js", "import": "./dist/admin/index.mjs", require: "./dist/admin/index.js", "default": "./dist/admin/index.js" }, "./strapi-server": { source: "./server/src/index.js", "import": "./dist/server/index.mjs", require: "./dist/server/index.js", "default": "./dist/server/index.js" } }; const files = [ "dist" ]; const dependencies = { "@strapi/design-system": "^2.0.0-rc.14", "@strapi/icons": "^2.0.0-rc.14", meilisearch: "0.48.2" }; const peerDependencies = { "@strapi/sdk-plugin": "^5.2.8", "@strapi/strapi": "^5.6.0", react: "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.29.0", "styled-components": "^6.1.14" }; const devDependencies = { "@babel/core": "^7.26.7", "@babel/preset-env": "^7.26.7", "@strapi/sdk-plugin": "^5.2.8", "@strapi/strapi": "^5.6.0", "@types/jest": "^29.5.12", "babel-jest": "^29.7.0", concurrently: "^8.2.2", cypress: "^14.0.1", eslint: "^8.2.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.27.0", jest: "^29.7.0", prettier: "3.2.5", react: "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.29.0", "styled-components": "^6.1.14" }; const author = { name: "Charlotte Vermandel <charlotte@meilisearch.com>" }; const maintainers = [ { name: "Charlotte Vermandel <charlotte@meilisearch.com>" } ]; const engines = { npm: ">=6.0.0", node: ">=18" }; const bugs = { url: "https://github.com/meilisearch/strapi-plugin-meilisearch/issues" }; const keywords = [ "strapi", "plugin", "meilisearch", "search" ]; const license = "MIT"; const repository = { type: "git", url: "git+https://github.com/meilisearch/strapi-plugin-meilisearch.git" }; const homepage = "https://github.com/meilisearch/strapi-plugin-meilisearch#readme"; const pluginPkg = { name: name$1, version, description, scripts, strapi, type, exports, files, dependencies, peerDependencies, devDependencies, author, maintainers, engines, bugs, keywords, license, repository, homepage }; const pluginId = name$1.replace(/^strapi-plugin-/i, ""); const PluginIcon = () => /* @__PURE__ */ jsx(Search, {}); const Initializer = ({ setPlugin }) => { const ref = useRef(setPlugin); useEffect(() => { ref.current(pluginId); }, []); return null; }; const PERMISSIONS = { // This permission regards the main component (App) and is used to tell // If the plugin link should be displayed in the menu // And also if the plugin is accessible. This use case is found when a user types the url of the // plugin directly in the browser main: [ { action: "plugin::meilisearch.read", subject: null }, { action: "plugin::meilisearch.collections.create", subject: null }, { action: "plugin::meilisearch.collections.update", subject: null }, { action: "plugin::meilisearch.collections.delete", subject: null }, { action: "plugin::meilisearch.settings.edit", subject: null } ], collections: [ { action: "plugin::meilisearch.read", subject: null }, { action: "plugin::meilisearch.collections.create", subject: null }, { action: "plugin::meilisearch.collections.update", subject: null }, { action: "plugin::meilisearch.collections.delete", subject: null } ], settings: [ { action: "plugin::meilisearch.read", subject: null }, { action: "plugin::meilisearch.settings.edit", subject: null } ], read: [{ action: "plugin::meilisearch.read", subject: null }], create: [{ action: "plugin::meilisearch.collections.create", subject: null }], update: [{ action: "plugin::meilisearch.collections.update", subject: null }], delete: [{ action: "plugin::meilisearch.collections.delete", subject: null }], settingsEdit: [ { action: "plugin::meilisearch.settings.edit", subject: null } ], createAndDelete: [ { action: "plugin::meilisearch.collections.create", subject: null }, { action: "plugin::meilisearch.collections.delete", subject: null } ] }; const getTranslation = (translations) => { return Object.keys(translations).reduce((acc, current) => { acc[`${pluginId}.${current}`] = translations[current]; return acc; }, {}); }; const name = pluginPkg.strapi.name; const index = { register(app) { app.registerPlugin({ id: pluginId, initializer: Initializer, isReady: true, name }); app.addMenuLink({ to: `/plugins/${pluginId}`, icon: PluginIcon, intlLabel: { id: `${pluginId}.plugin.name`, defaultMessage: name }, Component: async () => { const { App } = await import("./App-C_AT8Sze.mjs"); return App; }, permissions: PERMISSIONS.main }); }, async registerTrads({ locales }) { const importedTranslations = await Promise.all( locales.map((locale) => { return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-D4dIehJl.mjs"), "./translations/es.json": () => import("./es-B-4TrEJr.mjs") }), `./translations/${locale}.json`, 3).then(({ default: data }) => { return { data: getTranslation(data), locale }; }).catch(() => { return { data: {}, locale }; }); }) ); return Promise.resolve(importedTranslations); } }; export { PERMISSIONS as P, index as i, pluginId as p };