strapi-plugin-meilisearch
Version:
Synchronise and search in your Strapi content-types with Meilisearch
242 lines (241 loc) • 7.59 kB
JavaScript
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const icons = require("@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$1 = {
"./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: exports$1,
files,
dependencies,
peerDependencies,
devDependencies,
author,
maintainers,
engines,
bugs,
keywords,
license,
repository,
homepage
};
const pluginId = name$1.replace(/^strapi-plugin-/i, "");
const PluginIcon = () => /* @__PURE__ */ jsxRuntime.jsx(icons.Search, {});
const Initializer = ({ setPlugin }) => {
const ref = React.useRef(setPlugin);
React.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 Promise.resolve().then(() => require("./App-4wYXCpIt.js"));
return App;
},
permissions: PERMISSIONS.main
});
},
async registerTrads({ locales }) {
const importedTranslations = await Promise.all(
locales.map((locale) => {
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-CByedxRT.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-DA_jpbS7.js")) }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
return {
data: getTranslation(data),
locale
};
}).catch(() => {
return {
data: {},
locale
};
});
})
);
return Promise.resolve(importedTranslations);
}
};
exports.PERMISSIONS = PERMISSIONS;
exports.index = index;
exports.pluginId = pluginId;
;