payload-ai 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access/admins.js +8 -9
- package/dist/access/admins.js.map +1 -1
- package/dist/access/adminsOrPublished.js +8 -10
- package/dist/access/adminsOrPublished.js.map +1 -1
- package/dist/access/anyone.js +2 -5
- package/dist/access/anyone.js.map +1 -1
- package/dist/access/checkRole.js +5 -10
- package/dist/access/checkRole.js.map +1 -1
- package/dist/access/validateAccess.js +18 -25
- package/dist/access/validateAccess.js.map +1 -1
- package/dist/aiCaption.js +61 -137
- package/dist/aiCaption.js.map +1 -1
- package/dist/aiTranslate.d.ts +3 -3
- package/dist/aiTranslate.js +107 -228
- package/dist/aiTranslate.js.map +1 -1
- package/dist/components/AfterDashboard/index.js +22 -14
- package/dist/components/AfterDashboard/index.js.map +1 -1
- package/dist/components/Metadata/index.js +54 -93
- package/dist/components/Metadata/index.js.map +1 -1
- package/dist/components/Translator/Translator.css +194 -0
- package/dist/components/Translator/index.d.ts +2 -2
- package/dist/components/Translator/index.js +367 -335
- package/dist/components/Translator/index.js.map +1 -1
- package/dist/deepCompareAndMerge.js +32 -99
- package/dist/deepCompareAndMerge.js.map +1 -1
- package/dist/exports/client.d.ts +1 -0
- package/dist/exports/client.js +3 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.d.ts +1 -0
- package/dist/exports/rsc.js +3 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/exports/types.d.ts +1 -0
- package/dist/exports/types.js +3 -0
- package/dist/exports/types.js.map +1 -0
- package/dist/fsMock.js +6 -2
- package/dist/fsMock.js.map +1 -1
- package/dist/generateImage.js +24 -75
- package/dist/generateImage.js.map +1 -1
- package/dist/generateText.d.ts +2 -2
- package/dist/generateText.js +28 -112
- package/dist/generateText.js.map +1 -1
- package/dist/handleMissingTranslate.d.ts +1 -1
- package/dist/handleMissingTranslate.js +60 -144
- package/dist/handleMissingTranslate.js.map +1 -1
- package/dist/handleTranslate.d.ts +2 -2
- package/dist/handleTranslate.js +121 -199
- package/dist/handleTranslate.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -8
- package/dist/index.js.map +1 -1
- package/dist/mocks/mockFile.js +1 -1
- package/dist/mocks/mockFile.js.map +1 -1
- package/dist/onInitExtension.d.ts +1 -1
- package/dist/onInitExtension.js +4 -8
- package/dist/onInitExtension.js.map +1 -1
- package/dist/plugin.d.ts +1 -1
- package/dist/plugin.js +124 -188
- package/dist/plugin.js.map +1 -1
- package/dist/seoTools.js +64 -128
- package/dist/seoTools.js.map +1 -1
- package/dist/stringTranslations.d.ts +1 -1
- package/dist/stringTranslations.js +124 -163
- package/dist/stringTranslations.js.map +1 -1
- package/dist/translateTextAndObjects.js +136 -207
- package/dist/translateTextAndObjects.js.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/webpack.d.ts +1 -1
- package/dist/webpack.js +2 -9
- package/dist/webpack.js.map +1 -1
- package/package.json +119 -39
- package/.editorconfig +0 -10
- package/.eslintrc.js +0 -17
- package/.prettierrc.js +0 -8
- package/dev/.env.example +0 -3
- package/dev/Dockerfile +0 -27
- package/dev/docker-compose.yml +0 -31
- package/dev/jest.config.js +0 -12
- package/dev/nodemon.json +0 -6
- package/dev/package.json +0 -34
- package/dev/plugin.spec.ts +0 -30
- package/dev/src/blocks/TextBlock/index.ts +0 -33
- package/dev/src/collections/Examples.ts +0 -38
- package/dev/src/collections/ExamplesWithVersions.ts +0 -31
- package/dev/src/collections/Media.ts +0 -43
- package/dev/src/collections/Users.ts +0 -15
- package/dev/src/media/IMG_3624-1024x768.jpg +0 -0
- package/dev/src/media/IMG_3624.jpeg +0 -0
- package/dev/src/mocks/fileStub.js +0 -1
- package/dev/src/payload.config.ts +0 -71
- package/dev/src/server.ts +0 -18
- package/dev/tsconfig.json +0 -34
- package/dev-v3/.cursor/rules/access-control-advanced.md +0 -519
- package/dev-v3/.cursor/rules/access-control.md +0 -225
- package/dev-v3/.cursor/rules/adapters.md +0 -209
- package/dev-v3/.cursor/rules/collections.md +0 -171
- package/dev-v3/.cursor/rules/components.md +0 -794
- package/dev-v3/.cursor/rules/endpoints.md +0 -236
- package/dev-v3/.cursor/rules/field-type-guards.md +0 -230
- package/dev-v3/.cursor/rules/fields.md +0 -317
- package/dev-v3/.cursor/rules/hooks.md +0 -175
- package/dev-v3/.cursor/rules/payload-overview.md +0 -126
- package/dev-v3/.cursor/rules/plugin-development.md +0 -323
- package/dev-v3/.cursor/rules/queries.md +0 -223
- package/dev-v3/.cursor/rules/security-critical.mdc +0 -122
- package/dev-v3/.env.example +0 -2
- package/dev-v3/.prettierrc.json +0 -6
- package/dev-v3/.vscode/extensions.json +0 -3
- package/dev-v3/.vscode/launch.json +0 -24
- package/dev-v3/.vscode/settings.json +0 -40
- package/dev-v3/.yarnrc +0 -1
- package/dev-v3/AGENTS.md +0 -1141
- package/dev-v3/Dockerfile +0 -71
- package/dev-v3/README.md +0 -67
- package/dev-v3/docker-compose.yml +0 -43
- package/dev-v3/eslint.config.mjs +0 -38
- package/dev-v3/next.config.mjs +0 -17
- package/dev-v3/package.json +0 -61
- package/dev-v3/playwright.config.ts +0 -41
- package/dev-v3/src/app/(frontend)/layout.tsx +0 -19
- package/dev-v3/src/app/(frontend)/page.tsx +0 -59
- package/dev-v3/src/app/(frontend)/styles.css +0 -164
- package/dev-v3/src/app/(payload)/admin/[[...segments]]/not-found.tsx +0 -24
- package/dev-v3/src/app/(payload)/admin/[[...segments]]/page.tsx +0 -24
- package/dev-v3/src/app/(payload)/admin/importMap.js +0 -7
- package/dev-v3/src/app/(payload)/api/[...slug]/route.ts +0 -19
- package/dev-v3/src/app/(payload)/api/graphql/route.ts +0 -8
- package/dev-v3/src/app/(payload)/api/graphql-playground/route.ts +0 -7
- package/dev-v3/src/app/(payload)/custom.scss +0 -0
- package/dev-v3/src/app/(payload)/layout.tsx +0 -31
- package/dev-v3/src/app/my-route/route.ts +0 -12
- package/dev-v3/src/collections/Media.ts +0 -17
- package/dev-v3/src/collections/Random.ts +0 -16
- package/dev-v3/src/collections/Users.ts +0 -13
- package/dev-v3/src/payload-types.ts +0 -401
- package/dev-v3/src/payload.config.ts +0 -61
- package/dev-v3/test.env +0 -1
- package/dev-v3/tests/e2e/admin.e2e.spec.ts +0 -41
- package/dev-v3/tests/e2e/frontend.e2e.spec.ts +0 -20
- package/dev-v3/tests/helpers/login.ts +0 -31
- package/dev-v3/tests/helpers/seedUser.ts +0 -46
- package/dev-v3/tests/int/api.int.spec.ts +0 -20
- package/dev-v3/tsconfig.json +0 -44
- package/dev-v3/vitest.config.mts +0 -12
- package/dev-v3/vitest.setup.ts +0 -4
- package/dev-v3/yarn.lock +0 -6102
- package/eslint-config/index.js +0 -15
- package/eslint-config/rules/import.js +0 -38
- package/eslint-config/rules/prettier.js +0 -7
- package/eslint-config/rules/style.js +0 -21
- package/eslint-config/rules/typescript.js +0 -628
- package/src/access/admins.ts +0 -11
- package/src/access/adminsOrPublished.ts +0 -16
- package/src/access/anyone.ts +0 -3
- package/src/access/checkRole.ts +0 -16
- package/src/access/validateAccess.ts +0 -28
- package/src/aiCaption.ts +0 -90
- package/src/aiTranslate.ts +0 -172
- package/src/components/AfterDashboard/index.scss +0 -10
- package/src/components/AfterDashboard/index.tsx +0 -18
- package/src/components/Metadata/index.scss +0 -10
- package/src/components/Metadata/index.tsx +0 -55
- package/src/components/Translator/Translator.scss +0 -196
- package/src/components/Translator/index.tsx +0 -452
- package/src/deepCompareAndMerge.ts +0 -83
- package/src/fsMock.js +0 -1
- package/src/generateImage.ts +0 -37
- package/src/generateText.ts +0 -40
- package/src/handleMissingTranslate.ts +0 -77
- package/src/handleTranslate.ts +0 -140
- package/src/index.ts +0 -4
- package/src/mocks/mockFile.js +0 -1
- package/src/onInitExtension.ts +0 -12
- package/src/plugin.ts +0 -207
- package/src/seoTools.ts +0 -75
- package/src/stringTranslations.ts +0 -183
- package/src/translateTextAndObjects.ts +0 -347
- package/src/types.ts +0 -22
- package/src/webpack.ts +0 -8
- package/tsconfig.json +0 -23
- /package/{src → dist}/countries.json +0 -0
package/dist/access/admins.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var checkRole_1 = require("./checkRole");
|
|
5
|
-
var admins = function (_a) {
|
|
6
|
-
var user = _a.req.user;
|
|
7
|
-
if (!user)
|
|
1
|
+
import { checkRole } from './checkRole.js';
|
|
2
|
+
export const admins = ({ req: { user } })=>{
|
|
3
|
+
if (!user) {
|
|
8
4
|
return false;
|
|
9
|
-
|
|
5
|
+
}
|
|
6
|
+
return checkRole([
|
|
7
|
+
'admin'
|
|
8
|
+
], user);
|
|
10
9
|
};
|
|
11
|
-
|
|
10
|
+
|
|
12
11
|
//# sourceMappingURL=admins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/access/admins.ts"],"sourcesContent":["import type { AccessArgs } from 'payload'\n\nimport { checkRole } from './checkRole.js'\n//import type { User } from '../payload-types'\n\ntype isAdmin = (args: AccessArgs<unknown>) => boolean\n\nexport const admins: isAdmin = ({ req: { user } }) => {\n if (!user) {return false}\n return checkRole(['admin'], user)\n}\n"],"names":["checkRole","admins","req","user"],"mappings":"AAEA,SAASA,SAAS,QAAQ,iBAAgB;AAK1C,OAAO,MAAMC,SAAkB,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,EAAE;IAC/C,IAAI,CAACA,MAAM;QAAC,OAAO;IAAK;IACxB,OAAOH,UAAU;QAAC;KAAQ,EAAEG;AAC9B,EAAC"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var user = _a.req.user;
|
|
7
|
-
if (user && (0, checkRole_1.checkRole)(['admin'], user)) {
|
|
1
|
+
import { checkRole } from './checkRole.js';
|
|
2
|
+
export const adminsOrPublished = ({ req: { user } })=>{
|
|
3
|
+
if (user && checkRole([
|
|
4
|
+
'admin'
|
|
5
|
+
], user)) {
|
|
8
6
|
return true;
|
|
9
7
|
}
|
|
10
8
|
return true;
|
|
11
9
|
return {
|
|
12
10
|
_status: {
|
|
13
|
-
equals: 'published'
|
|
14
|
-
}
|
|
11
|
+
equals: 'published'
|
|
12
|
+
}
|
|
15
13
|
};
|
|
16
14
|
};
|
|
17
|
-
|
|
15
|
+
|
|
18
16
|
//# sourceMappingURL=adminsOrPublished.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/access/adminsOrPublished.ts"],"sourcesContent":["import type { Access } from 'payload'\n\nimport { checkRole } from './checkRole.js'\n\nexport const adminsOrPublished: Access = ({ req: { user } }) => {\n if (user && checkRole(['admin'], user)) {\n return true\n }\n\n return true\n return {\n _status: {\n equals: 'published',\n },\n }\n}\n"],"names":["checkRole","adminsOrPublished","req","user","_status","equals"],"mappings":"AAEA,SAASA,SAAS,QAAQ,iBAAgB;AAE1C,OAAO,MAAMC,oBAA4B,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,EAAE;IACzD,IAAIA,QAAQH,UAAU;QAAC;KAAQ,EAAEG,OAAO;QACtC,OAAO;IACT;IAEA,OAAO;IACP,OAAO;QACLC,SAAS;YACPC,QAAQ;QACV;IACF;AACF,EAAC"}
|
package/dist/access/anyone.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/access/anyone.ts"],"sourcesContent":["import type { Access } from 'payload'\n\nexport const anyone: Access = () => true\n"],"names":["anyone"],"mappings":"AAEA,OAAO,MAAMA,SAAiB,IAAM,KAAI"}
|
package/dist/access/checkRole.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
//import type { User } from '../../payload-types'
|
|
3
|
-
|
|
4
|
-
exports.checkRole = void 0;
|
|
5
|
-
var checkRole = function (allRoles /* User['roles'] = [] */, user) {
|
|
2
|
+
export const checkRole = (allRoles /* User['roles'] = [] */ , user)=>{
|
|
6
3
|
if (user) {
|
|
7
|
-
if (allRoles.some(
|
|
8
|
-
|
|
9
|
-
return (_a = user === null || user === void 0 ? void 0 : user.roles) === null || _a === void 0 ? void 0 : _a.some(function (individualRole) {
|
|
4
|
+
if (allRoles.some((role)=>{
|
|
5
|
+
return user?.roles?.some((individualRole)=>{
|
|
10
6
|
return individualRole === role;
|
|
11
7
|
});
|
|
12
|
-
}))
|
|
13
|
-
return true;
|
|
8
|
+
})) return true;
|
|
14
9
|
}
|
|
15
10
|
return false;
|
|
16
11
|
};
|
|
17
|
-
|
|
12
|
+
|
|
18
13
|
//# sourceMappingURL=checkRole.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/access/checkRole.ts"],"sourcesContent":["//import type { User } from '../../payload-types'\n\nexport const checkRole = (allRoles: any /* User['roles'] = [] */, user?: any): boolean => {\n if (user) {\n if (\n allRoles.some((role: any) => {\n return user?.roles?.some((individualRole: any) => {\n return individualRole === role\n })\n })\n )\n return true\n }\n\n return false\n}\n"],"names":["checkRole","allRoles","user","some","role","roles","individualRole"],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,MAAMA,YAAY,CAACC,SAAc,sBAAsB,KAAIC;IAChE,IAAIA,MAAM;QACR,IACED,SAASE,IAAI,CAAC,CAACC;YACb,OAAOF,MAAMG,OAAOF,KAAK,CAACG;gBACxB,OAAOA,mBAAmBF;YAC5B;QACF,IAEA,OAAO;IACX;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -1,28 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return fromCollection;
|
|
10
|
-
if (typeof fromRouteParams === 'string')
|
|
11
|
-
return fromRouteParams;
|
|
12
|
-
var pathname = (req === null || req === void 0 ? void 0 : req.pathname) || (req === null || req === void 0 ? void 0 : req.url) || '';
|
|
13
|
-
var pathnameMatch = typeof pathname === 'string' ? pathname.match(/\/api\/([^/]+)\//) : null;
|
|
14
|
-
return pathnameMatch === null || pathnameMatch === void 0 ? void 0 : pathnameMatch[1];
|
|
1
|
+
const getCollectionSlug = (req)=>{
|
|
2
|
+
const fromCollection = req?.collection?.config?.slug;
|
|
3
|
+
const fromRouteParams = req?.routeParams?.collection;
|
|
4
|
+
if (typeof fromCollection === 'string') return fromCollection;
|
|
5
|
+
if (typeof fromRouteParams === 'string') return fromRouteParams;
|
|
6
|
+
const pathname = req?.pathname || req?.url || '';
|
|
7
|
+
const pathnameMatch = typeof pathname === 'string' ? pathname.match(/\/api\/([^/]+)\//) : null;
|
|
8
|
+
return pathnameMatch?.[1];
|
|
15
9
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return accessControl({ req: req });
|
|
10
|
+
export const validateAccess = (req, pluginOptions)=>{
|
|
11
|
+
const collectionSlug = getCollectionSlug(req);
|
|
12
|
+
const collectionOptions = collectionSlug && pluginOptions.collections?.[collectionSlug] || {};
|
|
13
|
+
const collectionConfig = req?.collection?.config || req?.payload?.config?.collections?.find((collection)=>collection.slug === collectionSlug);
|
|
14
|
+
const accessControl = collectionOptions.access || collectionConfig?.access?.update;
|
|
15
|
+
if (typeof accessControl !== 'function') return true;
|
|
16
|
+
return accessControl({
|
|
17
|
+
req
|
|
18
|
+
});
|
|
26
19
|
};
|
|
27
|
-
|
|
20
|
+
|
|
28
21
|
//# sourceMappingURL=validateAccess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/access/validateAccess.ts"],"sourcesContent":["import type { Access } from 'payload'\n\nconst getCollectionSlug = (req: any): string | undefined => {\n const fromCollection = req?.collection?.config?.slug\n const fromRouteParams = req?.routeParams?.collection\n\n if (typeof fromCollection === 'string') return fromCollection\n if (typeof fromRouteParams === 'string') return fromRouteParams\n\n const pathname = req?.pathname || req?.url || ''\n const pathnameMatch = typeof pathname === 'string' ? pathname.match(/\\/api\\/([^/]+)\\//) : null\n\n return pathnameMatch?.[1]\n}\n\nexport const validateAccess = (req: any, pluginOptions: any) => {\n const collectionSlug = getCollectionSlug(req)\n const collectionOptions = (collectionSlug && pluginOptions.collections?.[collectionSlug]) || {}\n const collectionConfig =\n req?.collection?.config ||\n req?.payload?.config?.collections?.find((collection: any) => collection.slug === collectionSlug)\n\n const accessControl = collectionOptions.access || collectionConfig?.access?.update\n\n if (typeof accessControl !== 'function') return true\n\n return accessControl({ req })\n}\n"],"names":["getCollectionSlug","req","fromCollection","collection","config","slug","fromRouteParams","routeParams","pathname","url","pathnameMatch","match","validateAccess","pluginOptions","collectionSlug","collectionOptions","collections","collectionConfig","payload","find","accessControl","access","update"],"mappings":"AAEA,MAAMA,oBAAoB,CAACC;IACzB,MAAMC,iBAAiBD,KAAKE,YAAYC,QAAQC;IAChD,MAAMC,kBAAkBL,KAAKM,aAAaJ;IAE1C,IAAI,OAAOD,mBAAmB,UAAU,OAAOA;IAC/C,IAAI,OAAOI,oBAAoB,UAAU,OAAOA;IAEhD,MAAME,WAAWP,KAAKO,YAAYP,KAAKQ,OAAO;IAC9C,MAAMC,gBAAgB,OAAOF,aAAa,WAAWA,SAASG,KAAK,CAAC,sBAAsB;IAE1F,OAAOD,eAAe,CAAC,EAAE;AAC3B;AAEA,OAAO,MAAME,iBAAiB,CAACX,KAAUY;IACvC,MAAMC,iBAAiBd,kBAAkBC;IACzC,MAAMc,oBAAoB,AAACD,kBAAkBD,cAAcG,WAAW,EAAE,CAACF,eAAe,IAAK,CAAC;IAC9F,MAAMG,mBACJhB,KAAKE,YAAYC,UACjBH,KAAKiB,SAASd,QAAQY,aAAaG,KAAK,CAAChB,aAAoBA,WAAWE,IAAI,KAAKS;IAEnF,MAAMM,gBAAgBL,kBAAkBM,MAAM,IAAIJ,kBAAkBI,QAAQC;IAE5E,IAAI,OAAOF,kBAAkB,YAAY,OAAO;IAEhD,OAAOA,cAAc;QAAEnB;IAAI;AAC7B,EAAC"}
|
package/dist/aiCaption.js
CHANGED
|
@@ -1,145 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.translateCollection = void 0;
|
|
43
|
-
var axios_1 = __importDefault(require("axios"));
|
|
44
|
-
var openai_1 = __importDefault(require("openai"));
|
|
45
|
-
var aiCaptionHook = function (_a, fallback) {
|
|
46
|
-
var collectionOptions = _a.collectionOptions, collection = _a.collection, pluginOptions = _a.pluginOptions;
|
|
47
|
-
return function (_a) {
|
|
48
|
-
var doc = _a.doc, req = _a.req, previousDoc = _a.previousDoc, context = _a.context, collection = _a.collection;
|
|
49
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
50
|
-
var settings;
|
|
51
|
-
var _b, _c;
|
|
52
|
-
return __generator(this, function (_d) {
|
|
53
|
-
switch (_d.label) {
|
|
54
|
-
case 0:
|
|
55
|
-
settings = (_c = (_b = pluginOptions.collections) === null || _b === void 0 ? void 0 : _b[collection.slug]) === null || _c === void 0 ? void 0 : _c.settings;
|
|
56
|
-
return [4 /*yield*/, translateCollection({
|
|
57
|
-
doc: doc,
|
|
58
|
-
req: req,
|
|
59
|
-
previousDoc: previousDoc,
|
|
60
|
-
context: context,
|
|
61
|
-
collection: collection,
|
|
62
|
-
collectionOptions: collectionOptions,
|
|
63
|
-
settings: settings,
|
|
64
|
-
})];
|
|
65
|
-
case 1: return [2 /*return*/, _d.sent()];
|
|
66
|
-
}
|
|
67
|
-
});
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import OpenAI from 'openai';
|
|
3
|
+
const aiCaptionHook = ({ collectionOptions, collection, pluginOptions }, fallback)=>async ({ doc, req, previousDoc, context, collection })=>{
|
|
4
|
+
const settings = pluginOptions.collections?.[collection.slug]?.settings;
|
|
5
|
+
return await translateCollection({
|
|
6
|
+
doc,
|
|
7
|
+
req,
|
|
8
|
+
previousDoc,
|
|
9
|
+
context,
|
|
10
|
+
collection,
|
|
11
|
+
collectionOptions,
|
|
12
|
+
settings
|
|
68
13
|
});
|
|
69
14
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
})];
|
|
100
|
-
case 2:
|
|
101
|
-
responseGpt = _a.sent();
|
|
102
|
-
console.log('GPT Response:', responseGpt.choices[0].message.content);
|
|
103
|
-
return [2 /*return*/, responseGpt];
|
|
15
|
+
export default aiCaptionHook;
|
|
16
|
+
async function processImageRequest(url) {
|
|
17
|
+
const response = await axios.get(url, {
|
|
18
|
+
responseType: 'arraybuffer'
|
|
19
|
+
});
|
|
20
|
+
const imageBuffer = Buffer.from(response.data, 'binary');
|
|
21
|
+
const base64Image = imageBuffer.toString('base64');
|
|
22
|
+
const mimeType = response.headers['content-type'];
|
|
23
|
+
const encodedImage = `data:${mimeType};base64,${base64Image}`;
|
|
24
|
+
const openai = new OpenAI({
|
|
25
|
+
apiKey: process.env.OPENAI_API_KEY
|
|
26
|
+
});
|
|
27
|
+
const responseGpt = await openai.chat.completions.create({
|
|
28
|
+
model: 'gpt-4o',
|
|
29
|
+
messages: [
|
|
30
|
+
{
|
|
31
|
+
role: 'user',
|
|
32
|
+
content: [
|
|
33
|
+
{
|
|
34
|
+
type: 'text',
|
|
35
|
+
text: 'Create an image alt text'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
type: 'image_url',
|
|
39
|
+
image_url: {
|
|
40
|
+
url: encodedImage
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]
|
|
104
44
|
}
|
|
105
|
-
|
|
45
|
+
],
|
|
46
|
+
max_tokens: 1024
|
|
106
47
|
});
|
|
48
|
+
return responseGpt;
|
|
107
49
|
}
|
|
108
|
-
function translateCollection(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
docData = doc;
|
|
125
|
-
docData.alt = responseGpt.choices[0].message.content;
|
|
126
|
-
return [4 /*yield*/, req.payload.update({
|
|
127
|
-
//req,
|
|
128
|
-
collection: collection.slug,
|
|
129
|
-
id: doc.id,
|
|
130
|
-
data: docData,
|
|
131
|
-
limit: 1,
|
|
132
|
-
depth: 0,
|
|
133
|
-
context: {
|
|
134
|
-
triggerAfterChange: false,
|
|
135
|
-
},
|
|
136
|
-
})];
|
|
137
|
-
case 2:
|
|
138
|
-
updatedLanguage = _d.sent();
|
|
139
|
-
return [2 /*return*/];
|
|
140
|
-
}
|
|
141
|
-
});
|
|
50
|
+
export async function translateCollection({ req, doc, collection, previousDoc, context, collectionOptions, onlyMissing, codes, settings, sourceLanguage }) {
|
|
51
|
+
if (context.triggerAfterChange === false) return;
|
|
52
|
+
if (!doc?.sizes?.tablet?.url) return;
|
|
53
|
+
const responseGpt = await processImageRequest(`http://localhost:3000${doc.sizes.tablet.url}`);
|
|
54
|
+
const docData = doc;
|
|
55
|
+
docData.alt = responseGpt.choices[0].message.content;
|
|
56
|
+
const updatedLanguage = await req.payload.update({
|
|
57
|
+
//req,
|
|
58
|
+
collection: collection.slug,
|
|
59
|
+
id: doc.id,
|
|
60
|
+
data: docData,
|
|
61
|
+
limit: 1,
|
|
62
|
+
depth: 0,
|
|
63
|
+
context: {
|
|
64
|
+
triggerAfterChange: false
|
|
65
|
+
}
|
|
142
66
|
});
|
|
143
67
|
}
|
|
144
|
-
|
|
68
|
+
|
|
145
69
|
//# sourceMappingURL=aiCaption.js.map
|
package/dist/aiCaption.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/aiCaption.ts"],"sourcesContent":["import axios from 'axios'\nimport OpenAI from 'openai'\nimport type { CollectionAfterChangeHook, FieldHook } from 'payload'\n\nconst aiCaptionHook =\n (\n {\n collectionOptions,\n collection,\n pluginOptions,\n }: { collectionOptions: any; collection: object; pluginOptions: any },\n fallback?: string,\n ): CollectionAfterChangeHook =>\n async ({ doc, req, previousDoc, context, collection }) => {\n const settings = pluginOptions.collections?.[collection.slug]?.settings\n\n return await translateCollection({\n doc,\n req,\n previousDoc,\n context,\n collection,\n collectionOptions,\n settings,\n })\n }\n\nexport default aiCaptionHook\n\nasync function processImageRequest(url: string) {\n const response = await axios.get(url, { responseType: 'arraybuffer' })\n const imageBuffer = Buffer.from(response.data, 'binary')\n const base64Image = imageBuffer.toString('base64')\n const mimeType = response.headers['content-type']\n const encodedImage = `data:${mimeType};base64,${base64Image}`\n\n const openai = new OpenAI({\n apiKey: process.env.OPENAI_API_KEY,\n })\n\n const responseGpt = await openai.chat.completions.create({\n model: 'gpt-4o',\n messages: [\n {\n role: 'user',\n content: [\n { type: 'text', text: 'Create an image alt text' },\n { type: 'image_url', image_url: { url: encodedImage } },\n ],\n },\n ],\n max_tokens: 1024,\n })\n\n return responseGpt\n}\n\nexport async function translateCollection({\n req,\n doc,\n collection,\n previousDoc,\n context,\n collectionOptions,\n onlyMissing,\n codes,\n settings,\n sourceLanguage,\n}: any) {\n if (context.triggerAfterChange === false /* || req.locale !== sourceLanguageI */) return\n\n if (!doc?.sizes?.tablet?.url) return\n const responseGpt = await processImageRequest(`http://localhost:3000${doc.sizes.tablet.url}`)\n\n const docData = doc\n\n docData.alt = responseGpt.choices[0].message.content\n const updatedLanguage = await req.payload.update({\n //req,\n collection: collection.slug,\n id: doc.id,\n data: docData,\n limit: 1,\n depth: 0,\n context: {\n triggerAfterChange: false,\n },\n })\n}\n"],"names":["axios","OpenAI","aiCaptionHook","collectionOptions","collection","pluginOptions","fallback","doc","req","previousDoc","context","settings","collections","slug","translateCollection","processImageRequest","url","response","get","responseType","imageBuffer","Buffer","from","data","base64Image","toString","mimeType","headers","encodedImage","openai","apiKey","process","env","OPENAI_API_KEY","responseGpt","chat","completions","create","model","messages","role","content","type","text","image_url","max_tokens","onlyMissing","codes","sourceLanguage","triggerAfterChange","sizes","tablet","docData","alt","choices","message","updatedLanguage","payload","update","id","limit","depth"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AACzB,OAAOC,YAAY,SAAQ;AAG3B,MAAMC,gBACJ,CACE,EACEC,iBAAiB,EACjBC,UAAU,EACVC,aAAa,EACsD,EACrEC,WAEF,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,WAAW,EAAEC,OAAO,EAAEN,UAAU,EAAE;QACnD,MAAMO,WAAWN,cAAcO,WAAW,EAAE,CAACR,WAAWS,IAAI,CAAC,EAAEF;QAE/D,OAAO,MAAMG,oBAAoB;YAC/BP;YACAC;YACAC;YACAC;YACAN;YACAD;YACAQ;QACF;IACF;AAEF,eAAeT,cAAa;AAE5B,eAAea,oBAAoBC,GAAW;IAC5C,MAAMC,WAAW,MAAMjB,MAAMkB,GAAG,CAACF,KAAK;QAAEG,cAAc;IAAc;IACpE,MAAMC,cAAcC,OAAOC,IAAI,CAACL,SAASM,IAAI,EAAE;IAC/C,MAAMC,cAAcJ,YAAYK,QAAQ,CAAC;IACzC,MAAMC,WAAWT,SAASU,OAAO,CAAC,eAAe;IACjD,MAAMC,eAAe,CAAC,KAAK,EAAEF,SAAS,QAAQ,EAAEF,aAAa;IAE7D,MAAMK,SAAS,IAAI5B,OAAO;QACxB6B,QAAQC,QAAQC,GAAG,CAACC,cAAc;IACpC;IAEA,MAAMC,cAAc,MAAML,OAAOM,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC;QACvDC,OAAO;QACPC,UAAU;YACR;gBACEC,MAAM;gBACNC,SAAS;oBACP;wBAAEC,MAAM;wBAAQC,MAAM;oBAA2B;oBACjD;wBAAED,MAAM;wBAAaE,WAAW;4BAAE5B,KAAKY;wBAAa;oBAAE;iBACvD;YACH;SACD;QACDiB,YAAY;IACd;IAEA,OAAOX;AACT;AAEA,OAAO,eAAepB,oBAAoB,EACxCN,GAAG,EACHD,GAAG,EACHH,UAAU,EACVK,WAAW,EACXC,OAAO,EACPP,iBAAiB,EACjB2C,WAAW,EACXC,KAAK,EACLpC,QAAQ,EACRqC,cAAc,EACV;IACJ,IAAItC,QAAQuC,kBAAkB,KAAK,OAA+C;IAElF,IAAI,CAAC1C,KAAK2C,OAAOC,QAAQnC,KAAK;IAC9B,MAAMkB,cAAc,MAAMnB,oBAAoB,CAAC,qBAAqB,EAAER,IAAI2C,KAAK,CAACC,MAAM,CAACnC,GAAG,EAAE;IAE5F,MAAMoC,UAAU7C;IAEhB6C,QAAQC,GAAG,GAAGnB,YAAYoB,OAAO,CAAC,EAAE,CAACC,OAAO,CAACd,OAAO;IACpD,MAAMe,kBAAkB,MAAMhD,IAAIiD,OAAO,CAACC,MAAM,CAAC;QAC/C,MAAM;QACNtD,YAAYA,WAAWS,IAAI;QAC3B8C,IAAIpD,IAAIoD,EAAE;QACVpC,MAAM6B;QACNQ,OAAO;QACPC,OAAO;QACPnD,SAAS;YACPuC,oBAAoB;QACtB;IACF;AACF"}
|
package/dist/aiTranslate.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CollectionAfterChangeHook } from 'payload';
|
|
2
|
-
declare const aiTranslateHook: ({
|
|
3
|
-
collectionOptions: any;
|
|
2
|
+
declare const aiTranslateHook: ({ collection, collectionOptions, pluginOptions, }: {
|
|
4
3
|
collection: object;
|
|
4
|
+
collectionOptions: any;
|
|
5
5
|
pluginOptions: any;
|
|
6
6
|
}, fallback?: string) => CollectionAfterChangeHook;
|
|
7
7
|
export default aiTranslateHook;
|
|
8
|
-
export declare function translateCollection({
|
|
8
|
+
export declare function translateCollection({ codes, collection, collectionOptions, context, doc, onlyMissing, onProgress, previousDoc, req, settings, sourceLanguage, }: any): Promise<void>;
|