@strapi/core 0.0.0-experimental.b74470bad5a933136da63d001641ca7d2e170f04 → 0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d
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.
Potentially problematic release.
This version of @strapi/core might be problematic. Click here for more details.
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +2 -0
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +2 -0
- package/dist/Strapi.mjs.map +1 -1
- package/dist/configuration/index.d.ts +1 -0
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/index.js +1 -0
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs +1 -0
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/core-api/routes/index.d.ts +4 -22
- package/dist/core-api/routes/index.d.ts.map +1 -1
- package/dist/core-api/routes/index.js +150 -8
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs +131 -8
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/routes/validation/attributes.d.ts +244 -0
- package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
- package/dist/core-api/routes/validation/attributes.js +560 -0
- package/dist/core-api/routes/validation/attributes.js.map +1 -0
- package/dist/core-api/routes/validation/attributes.mjs +521 -0
- package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
- package/dist/core-api/routes/validation/common.d.ts +105 -0
- package/dist/core-api/routes/validation/common.d.ts.map +1 -0
- package/dist/core-api/routes/validation/common.js +116 -0
- package/dist/core-api/routes/validation/common.js.map +1 -0
- package/dist/core-api/routes/validation/common.mjs +95 -0
- package/dist/core-api/routes/validation/common.mjs.map +1 -0
- package/dist/core-api/routes/validation/component.d.ts +34 -0
- package/dist/core-api/routes/validation/component.d.ts.map +1 -0
- package/dist/core-api/routes/validation/component.js +45 -0
- package/dist/core-api/routes/validation/component.js.map +1 -0
- package/dist/core-api/routes/validation/component.mjs +43 -0
- package/dist/core-api/routes/validation/component.mjs.map +1 -0
- package/dist/core-api/routes/validation/constants.d.ts +8 -0
- package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
- package/dist/core-api/routes/validation/constants.js +18 -0
- package/dist/core-api/routes/validation/constants.js.map +1 -0
- package/dist/core-api/routes/validation/constants.mjs +16 -0
- package/dist/core-api/routes/validation/constants.mjs.map +1 -0
- package/dist/core-api/routes/validation/content-type.d.ts +128 -0
- package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
- package/dist/core-api/routes/validation/content-type.js +201 -0
- package/dist/core-api/routes/validation/content-type.js.map +1 -0
- package/dist/core-api/routes/validation/content-type.mjs +180 -0
- package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
- package/dist/core-api/routes/validation/index.d.ts +5 -0
- package/dist/core-api/routes/validation/index.d.ts.map +1 -0
- package/dist/core-api/routes/validation/mappers.d.ts +105 -0
- package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
- package/dist/core-api/routes/validation/mappers.js +238 -0
- package/dist/core-api/routes/validation/mappers.js.map +1 -0
- package/dist/core-api/routes/validation/mappers.mjs +214 -0
- package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
- package/dist/core-api/routes/validation/utils.d.ts +47 -0
- package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
- package/dist/core-api/routes/validation/utils.js +112 -0
- package/dist/core-api/routes/validation/utils.js.map +1 -0
- package/dist/core-api/routes/validation/utils.mjs +90 -0
- package/dist/core-api/routes/validation/utils.mjs.map +1 -0
- package/dist/domain/module/index.d.ts.map +1 -1
- package/dist/domain/module/index.js +3 -0
- package/dist/domain/module/index.js.map +1 -1
- package/dist/domain/module/index.mjs +3 -0
- package/dist/domain/module/index.mjs.map +1 -1
- package/dist/ee/index.d.ts +6 -0
- package/dist/ee/index.d.ts.map +1 -1
- package/dist/ee/index.js +29 -3
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +30 -4
- package/dist/ee/index.mjs.map +1 -1
- package/dist/ee/license.d.ts +3 -1
- package/dist/ee/license.d.ts.map +1 -1
- package/dist/ee/license.js +8 -2
- package/dist/ee/license.js.map +1 -1
- package/dist/ee/license.mjs +9 -4
- package/dist/ee/license.mjs.map +1 -1
- package/dist/factories.d.ts +3 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +10 -2
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs +10 -3
- package/dist/factories.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/middlewares/cors.d.ts +9 -1
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/cors.js +39 -17
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs +39 -18
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/package.json.js +17 -14
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +17 -14
- package/dist/package.json.mjs.map +1 -1
- package/dist/services/core-store.d.ts +2 -2
- package/dist/services/core-store.d.ts.map +1 -1
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/core-store.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js +42 -0
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +43 -1
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts +6 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +32 -0
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs +32 -1
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +5 -4
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +6 -5
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +9 -0
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +9 -0
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts +1 -0
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +3 -0
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +3 -0
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
- package/dist/services/metrics/admin-user-hash.js.map +1 -1
- package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
- package/dist/services/metrics/index.d.ts +1 -1
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/index.js +9 -8
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs +9 -8
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/metrics/sender.js +7 -6
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs +8 -7
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/dist/services/server/register-routes.js +22 -2
- package/dist/services/server/register-routes.js.map +1 -1
- package/dist/services/server/register-routes.mjs +22 -2
- package/dist/services/server/register-routes.mjs.map +1 -1
- package/dist/services/server/routing.d.ts +10 -0
- package/dist/services/server/routing.d.ts.map +1 -1
- package/dist/services/server/routing.js +7 -1
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/server/routing.mjs +7 -1
- package/dist/services/server/routing.mjs.map +1 -1
- package/dist/services/utils/conditional-fields.d.ts +3 -0
- package/dist/services/utils/conditional-fields.d.ts.map +1 -0
- package/dist/services/utils/conditional-fields.js +22 -0
- package/dist/services/utils/conditional-fields.js.map +1 -0
- package/dist/services/utils/conditional-fields.mjs +20 -0
- package/dist/services/utils/conditional-fields.mjs.map +1 -0
- package/dist/utils/fetch.d.ts +5 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +8 -4
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs +8 -4
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +197 -0
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/package.json +17 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.js","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\
|
|
1
|
+
{"version":3,"file":"cors.js","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[] | Promise<string | string[]>);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\n/**\n * Determines if a request origin is allowed based on the configured origin list\n * @param requestOrigin - The origin from the request header\n * @param configuredOrigin - The origin configuration (string, array, or function)\n * @param ctx - The Koa context (for function-based origin)\n * @returns The allowed origin string or empty string if blocked\n */\nexport const matchOrigin = async (\n requestOrigin: string | undefined,\n configuredOrigin:\n | string\n | string[]\n | ((ctx: any) => string | string[] | Promise<string | string[]>),\n ctx?: any\n): Promise<string> => {\n if (!requestOrigin) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof configuredOrigin === 'function') {\n originList = await configuredOrigin(ctx);\n } else {\n originList = configuredOrigin;\n }\n\n // Normalize originList into an array\n let normalizedOrigins: string[];\n if (Array.isArray(originList)) {\n normalizedOrigins = originList;\n } else if (originList === undefined || originList === null) {\n // Handle undefined/null - treat as wildcard\n normalizedOrigins = ['*'];\n } else {\n // Handle comma-separated string of origins\n normalizedOrigins = originList.split(',').map((origin) => origin.trim());\n }\n\n // Check if wildcard is in the normalized origins\n if (normalizedOrigins.includes('*')) {\n return requestOrigin;\n }\n\n // Check if request origin is in the normalized origins\n return normalizedOrigins.includes(requestOrigin) ? requestOrigin : '';\n};\n\nexport const cors: Core.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n const requestOrigin = ctx.get('Origin');\n return matchOrigin(requestOrigin, origin, ctx);\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["defaults","origin","maxAge","credentials","methods","headers","keepHeadersOnError","matchOrigin","requestOrigin","configuredOrigin","ctx","originList","normalizedOrigins","Array","isArray","undefined","split","map","trim","includes","cors","config","expose","enabled","strapi","log","warn","koaCors","get","exposeHeaders","allowMethods","allowHeaders"],"mappings":";;;;AAeA,MAAMA,QAAmB,GAAA;IACvBC,MAAQ,EAAA,GAAA;IACRC,MAAQ,EAAA,QAAA;IACRC,WAAa,EAAA,IAAA;IACbC,OAAS,EAAA;AAAC,QAAA,KAAA;AAAO,QAAA,MAAA;AAAQ,QAAA,KAAA;AAAO,QAAA,OAAA;AAAS,QAAA,QAAA;AAAU,QAAA,MAAA;AAAQ,QAAA;AAAU,KAAA;IACrEC,OAAS,EAAA;AAAC,QAAA,cAAA;AAAgB,QAAA,eAAA;AAAiB,QAAA,QAAA;AAAU,QAAA;AAAS,KAAA;IAC9DC,kBAAoB,EAAA;AACtB,CAAA;AAEA;;;;;;AAMC,IACM,MAAMC,WAAc,GAAA,OACzBC,eACAC,gBAIAC,EAAAA,GAAAA,GAAAA;AAEA,IAAA,IAAI,CAACF,aAAe,EAAA;QAClB,OAAO,GAAA;AACT;IAEA,IAAIG,UAAAA;IAEJ,IAAI,OAAOF,qBAAqB,UAAY,EAAA;AAC1CE,QAAAA,UAAAA,GAAa,MAAMF,gBAAiBC,CAAAA,GAAAA,CAAAA;KAC/B,MAAA;QACLC,UAAaF,GAAAA,gBAAAA;AACf;;IAGA,IAAIG,iBAAAA;IACJ,IAAIC,KAAAA,CAAMC,OAAO,CAACH,UAAa,CAAA,EAAA;QAC7BC,iBAAoBD,GAAAA,UAAAA;AACtB,KAAA,MAAO,IAAIA,UAAAA,KAAeI,SAAaJ,IAAAA,UAAAA,KAAe,IAAM,EAAA;;QAE1DC,iBAAoB,GAAA;AAAC,YAAA;AAAI,SAAA;KACpB,MAAA;;QAELA,iBAAoBD,GAAAA,UAAAA,CAAWK,KAAK,CAAC,GAAA,CAAA,CAAKC,GAAG,CAAC,CAAChB,MAAWA,GAAAA,MAAAA,CAAOiB,IAAI,EAAA,CAAA;AACvE;;IAGA,IAAIN,iBAAAA,CAAkBO,QAAQ,CAAC,GAAM,CAAA,EAAA;QACnC,OAAOX,aAAAA;AACT;;AAGA,IAAA,OAAOI,iBAAkBO,CAAAA,QAAQ,CAACX,aAAAA,CAAAA,GAAiBA,aAAgB,GAAA,EAAA;AACrE;AAEO,MAAMY,OAAuC,CAACC,MAAAA,GAAAA;AACnD,IAAA,MAAM,EAAEpB,MAAM,EAAEqB,MAAM,EAAEpB,MAAM,EAAEC,WAAW,EAAEC,OAAO,EAAEC,OAAO,EAAEC,kBAAkB,EAAE,GAAG;AACpF,QAAA,GAAGN,QAAQ;AACX,QAAA,GAAGqB;AACL,KAAA;IAEA,IAAIA,MAAAA,CAAOE,OAAO,KAAKR,SAAW,EAAA;AAChCS,QAAAA,MAAAA,CAAOC,GAAG,CAACC,IAAI,CACb,kFACE,wGACA,GAAA,6CAAA,CAAA;AAEN;AAEA,IAAA,OAAOC,OAAQ,CAAA;AACb,QAAA,MAAM1B,QAAOS,GAAG,EAAA;YACd,MAAMF,aAAAA,GAAgBE,GAAIkB,CAAAA,GAAG,CAAC,QAAA,CAAA;YAC9B,OAAOrB,WAAAA,CAAYC,eAAeP,MAAQS,EAAAA,GAAAA,CAAAA;AAC5C,SAAA;QACAmB,aAAeP,EAAAA,MAAAA;AACfpB,QAAAA,MAAAA;AACAC,QAAAA,WAAAA;QACA2B,YAAc1B,EAAAA,OAAAA;QACd2B,YAAc1B,EAAAA,OAAAA;AACdC,QAAAA;AACF,KAAA,CAAA;AACF;;;;;"}
|
|
@@ -21,6 +21,42 @@ const defaults = {
|
|
|
21
21
|
],
|
|
22
22
|
keepHeadersOnError: false
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Determines if a request origin is allowed based on the configured origin list
|
|
26
|
+
* @param requestOrigin - The origin from the request header
|
|
27
|
+
* @param configuredOrigin - The origin configuration (string, array, or function)
|
|
28
|
+
* @param ctx - The Koa context (for function-based origin)
|
|
29
|
+
* @returns The allowed origin string or empty string if blocked
|
|
30
|
+
*/ const matchOrigin = async (requestOrigin, configuredOrigin, ctx)=>{
|
|
31
|
+
if (!requestOrigin) {
|
|
32
|
+
return '*';
|
|
33
|
+
}
|
|
34
|
+
let originList;
|
|
35
|
+
if (typeof configuredOrigin === 'function') {
|
|
36
|
+
originList = await configuredOrigin(ctx);
|
|
37
|
+
} else {
|
|
38
|
+
originList = configuredOrigin;
|
|
39
|
+
}
|
|
40
|
+
// Normalize originList into an array
|
|
41
|
+
let normalizedOrigins;
|
|
42
|
+
if (Array.isArray(originList)) {
|
|
43
|
+
normalizedOrigins = originList;
|
|
44
|
+
} else if (originList === undefined || originList === null) {
|
|
45
|
+
// Handle undefined/null - treat as wildcard
|
|
46
|
+
normalizedOrigins = [
|
|
47
|
+
'*'
|
|
48
|
+
];
|
|
49
|
+
} else {
|
|
50
|
+
// Handle comma-separated string of origins
|
|
51
|
+
normalizedOrigins = originList.split(',').map((origin)=>origin.trim());
|
|
52
|
+
}
|
|
53
|
+
// Check if wildcard is in the normalized origins
|
|
54
|
+
if (normalizedOrigins.includes('*')) {
|
|
55
|
+
return requestOrigin;
|
|
56
|
+
}
|
|
57
|
+
// Check if request origin is in the normalized origins
|
|
58
|
+
return normalizedOrigins.includes(requestOrigin) ? requestOrigin : '';
|
|
59
|
+
};
|
|
24
60
|
const cors = (config)=>{
|
|
25
61
|
const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {
|
|
26
62
|
...defaults,
|
|
@@ -31,23 +67,8 @@ const cors = (config)=>{
|
|
|
31
67
|
}
|
|
32
68
|
return koaCors({
|
|
33
69
|
async origin (ctx) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
let originList;
|
|
38
|
-
if (typeof origin === 'function') {
|
|
39
|
-
originList = await origin(ctx);
|
|
40
|
-
} else {
|
|
41
|
-
originList = origin;
|
|
42
|
-
}
|
|
43
|
-
if (Array.isArray(originList)) {
|
|
44
|
-
return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : '';
|
|
45
|
-
}
|
|
46
|
-
const parsedOrigin = originList.split(',').map((origin)=>origin.trim());
|
|
47
|
-
if (parsedOrigin.length > 1) {
|
|
48
|
-
return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : '';
|
|
49
|
-
}
|
|
50
|
-
return originList;
|
|
70
|
+
const requestOrigin = ctx.get('Origin');
|
|
71
|
+
return matchOrigin(requestOrigin, origin, ctx);
|
|
51
72
|
},
|
|
52
73
|
exposeHeaders: expose,
|
|
53
74
|
maxAge,
|
|
@@ -58,5 +79,5 @@ const cors = (config)=>{
|
|
|
58
79
|
});
|
|
59
80
|
};
|
|
60
81
|
|
|
61
|
-
export { cors };
|
|
82
|
+
export { cors, matchOrigin };
|
|
62
83
|
//# sourceMappingURL=cors.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.mjs","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\
|
|
1
|
+
{"version":3,"file":"cors.mjs","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[] | Promise<string | string[]>);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\n/**\n * Determines if a request origin is allowed based on the configured origin list\n * @param requestOrigin - The origin from the request header\n * @param configuredOrigin - The origin configuration (string, array, or function)\n * @param ctx - The Koa context (for function-based origin)\n * @returns The allowed origin string or empty string if blocked\n */\nexport const matchOrigin = async (\n requestOrigin: string | undefined,\n configuredOrigin:\n | string\n | string[]\n | ((ctx: any) => string | string[] | Promise<string | string[]>),\n ctx?: any\n): Promise<string> => {\n if (!requestOrigin) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof configuredOrigin === 'function') {\n originList = await configuredOrigin(ctx);\n } else {\n originList = configuredOrigin;\n }\n\n // Normalize originList into an array\n let normalizedOrigins: string[];\n if (Array.isArray(originList)) {\n normalizedOrigins = originList;\n } else if (originList === undefined || originList === null) {\n // Handle undefined/null - treat as wildcard\n normalizedOrigins = ['*'];\n } else {\n // Handle comma-separated string of origins\n normalizedOrigins = originList.split(',').map((origin) => origin.trim());\n }\n\n // Check if wildcard is in the normalized origins\n if (normalizedOrigins.includes('*')) {\n return requestOrigin;\n }\n\n // Check if request origin is in the normalized origins\n return normalizedOrigins.includes(requestOrigin) ? requestOrigin : '';\n};\n\nexport const cors: Core.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n const requestOrigin = ctx.get('Origin');\n return matchOrigin(requestOrigin, origin, ctx);\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["defaults","origin","maxAge","credentials","methods","headers","keepHeadersOnError","matchOrigin","requestOrigin","configuredOrigin","ctx","originList","normalizedOrigins","Array","isArray","undefined","split","map","trim","includes","cors","config","expose","enabled","strapi","log","warn","koaCors","get","exposeHeaders","allowMethods","allowHeaders"],"mappings":";;AAeA,MAAMA,QAAmB,GAAA;IACvBC,MAAQ,EAAA,GAAA;IACRC,MAAQ,EAAA,QAAA;IACRC,WAAa,EAAA,IAAA;IACbC,OAAS,EAAA;AAAC,QAAA,KAAA;AAAO,QAAA,MAAA;AAAQ,QAAA,KAAA;AAAO,QAAA,OAAA;AAAS,QAAA,QAAA;AAAU,QAAA,MAAA;AAAQ,QAAA;AAAU,KAAA;IACrEC,OAAS,EAAA;AAAC,QAAA,cAAA;AAAgB,QAAA,eAAA;AAAiB,QAAA,QAAA;AAAU,QAAA;AAAS,KAAA;IAC9DC,kBAAoB,EAAA;AACtB,CAAA;AAEA;;;;;;AAMC,IACM,MAAMC,WAAc,GAAA,OACzBC,eACAC,gBAIAC,EAAAA,GAAAA,GAAAA;AAEA,IAAA,IAAI,CAACF,aAAe,EAAA;QAClB,OAAO,GAAA;AACT;IAEA,IAAIG,UAAAA;IAEJ,IAAI,OAAOF,qBAAqB,UAAY,EAAA;AAC1CE,QAAAA,UAAAA,GAAa,MAAMF,gBAAiBC,CAAAA,GAAAA,CAAAA;KAC/B,MAAA;QACLC,UAAaF,GAAAA,gBAAAA;AACf;;IAGA,IAAIG,iBAAAA;IACJ,IAAIC,KAAAA,CAAMC,OAAO,CAACH,UAAa,CAAA,EAAA;QAC7BC,iBAAoBD,GAAAA,UAAAA;AACtB,KAAA,MAAO,IAAIA,UAAAA,KAAeI,SAAaJ,IAAAA,UAAAA,KAAe,IAAM,EAAA;;QAE1DC,iBAAoB,GAAA;AAAC,YAAA;AAAI,SAAA;KACpB,MAAA;;QAELA,iBAAoBD,GAAAA,UAAAA,CAAWK,KAAK,CAAC,GAAA,CAAA,CAAKC,GAAG,CAAC,CAAChB,MAAWA,GAAAA,MAAAA,CAAOiB,IAAI,EAAA,CAAA;AACvE;;IAGA,IAAIN,iBAAAA,CAAkBO,QAAQ,CAAC,GAAM,CAAA,EAAA;QACnC,OAAOX,aAAAA;AACT;;AAGA,IAAA,OAAOI,iBAAkBO,CAAAA,QAAQ,CAACX,aAAAA,CAAAA,GAAiBA,aAAgB,GAAA,EAAA;AACrE;AAEO,MAAMY,OAAuC,CAACC,MAAAA,GAAAA;AACnD,IAAA,MAAM,EAAEpB,MAAM,EAAEqB,MAAM,EAAEpB,MAAM,EAAEC,WAAW,EAAEC,OAAO,EAAEC,OAAO,EAAEC,kBAAkB,EAAE,GAAG;AACpF,QAAA,GAAGN,QAAQ;AACX,QAAA,GAAGqB;AACL,KAAA;IAEA,IAAIA,MAAAA,CAAOE,OAAO,KAAKR,SAAW,EAAA;AAChCS,QAAAA,MAAAA,CAAOC,GAAG,CAACC,IAAI,CACb,kFACE,wGACA,GAAA,6CAAA,CAAA;AAEN;AAEA,IAAA,OAAOC,OAAQ,CAAA;AACb,QAAA,MAAM1B,QAAOS,GAAG,EAAA;YACd,MAAMF,aAAAA,GAAgBE,GAAIkB,CAAAA,GAAG,CAAC,QAAA,CAAA;YAC9B,OAAOrB,WAAAA,CAAYC,eAAeP,MAAQS,EAAAA,GAAAA,CAAAA;AAC5C,SAAA;QACAmB,aAAeP,EAAAA,MAAAA;AACfpB,QAAAA,MAAAA;AACAC,QAAAA,WAAAA;QACA2B,YAAc1B,EAAAA,OAAAA;QACd2B,YAAc1B,EAAAA,OAAAA;AACdC,QAAAA;AACF,KAAA,CAAA;AACF;;;;"}
|
package/dist/package.json.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@strapi/core";
|
|
6
|
-
var version = "0.0.0-experimental.
|
|
6
|
+
var version = "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d";
|
|
7
7
|
var description = "Core of Strapi";
|
|
8
8
|
var homepage = "https://strapi.io";
|
|
9
9
|
var bugs = {
|
|
@@ -59,14 +59,14 @@ var dependencies = {
|
|
|
59
59
|
"@koa/cors": "5.0.0",
|
|
60
60
|
"@koa/router": "12.0.2",
|
|
61
61
|
"@paralleldrive/cuid2": "2.2.2",
|
|
62
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
63
|
-
"@strapi/database": "0.0.0-experimental.
|
|
64
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
65
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
66
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
67
|
-
"@strapi/types": "0.0.0-experimental.
|
|
68
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
69
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
62
|
+
"@strapi/admin": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
63
|
+
"@strapi/database": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
64
|
+
"@strapi/generators": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
65
|
+
"@strapi/logger": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
66
|
+
"@strapi/permissions": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
67
|
+
"@strapi/types": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
68
|
+
"@strapi/typescript-utils": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
69
|
+
"@strapi/utils": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
70
70
|
bcryptjs: "2.4.3",
|
|
71
71
|
boxen: "5.1.2",
|
|
72
72
|
chalk: "4.1.2",
|
|
@@ -85,7 +85,8 @@ var dependencies = {
|
|
|
85
85
|
"http-errors": "2.0.0",
|
|
86
86
|
inquirer: "8.2.5",
|
|
87
87
|
"is-docker": "2.2.1",
|
|
88
|
-
|
|
88
|
+
"json-logic-js": "2.0.5",
|
|
89
|
+
koa: "2.16.1",
|
|
89
90
|
"koa-body": "6.0.1",
|
|
90
91
|
"koa-compose": "4.1.0",
|
|
91
92
|
"koa-compress": "5.1.1",
|
|
@@ -106,8 +107,9 @@ var dependencies = {
|
|
|
106
107
|
semver: "7.5.4",
|
|
107
108
|
statuses: "2.0.1",
|
|
108
109
|
typescript: "5.4.4",
|
|
109
|
-
undici: "6.21.
|
|
110
|
-
yup: "0.32.9"
|
|
110
|
+
undici: "6.21.2",
|
|
111
|
+
yup: "0.32.9",
|
|
112
|
+
zod: "3.25.67"
|
|
111
113
|
};
|
|
112
114
|
var devDependencies = {
|
|
113
115
|
"@strapi/ts-zen": "^0.2.0",
|
|
@@ -119,6 +121,7 @@ var devDependencies = {
|
|
|
119
121
|
"@types/global-agent": "2.1.3",
|
|
120
122
|
"@types/http-errors": "2.0.4",
|
|
121
123
|
"@types/jest": "29.5.2",
|
|
124
|
+
"@types/json-logic-js": "2.0.8",
|
|
122
125
|
"@types/koa": "2.13.4",
|
|
123
126
|
"@types/koa-compress": "4.0.3",
|
|
124
127
|
"@types/koa-session": "6.4.1",
|
|
@@ -129,9 +132,9 @@ var devDependencies = {
|
|
|
129
132
|
"@types/node": "18.19.24",
|
|
130
133
|
"@types/node-schedule": "2.1.7",
|
|
131
134
|
"@types/statuses": "2.0.1",
|
|
132
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
135
|
+
"eslint-config-custom": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
133
136
|
supertest: "6.3.3",
|
|
134
|
-
tsconfig: "0.0.0-experimental.
|
|
137
|
+
tsconfig: "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d"
|
|
135
138
|
};
|
|
136
139
|
var engines = {
|
|
137
140
|
node: ">=18.0.0 <=22.x.x",
|
package/dist/package.json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/package.json.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@strapi/core";
|
|
2
|
-
var version = "0.0.0-experimental.
|
|
2
|
+
var version = "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d";
|
|
3
3
|
var description = "Core of Strapi";
|
|
4
4
|
var homepage = "https://strapi.io";
|
|
5
5
|
var bugs = {
|
|
@@ -55,14 +55,14 @@ var dependencies = {
|
|
|
55
55
|
"@koa/cors": "5.0.0",
|
|
56
56
|
"@koa/router": "12.0.2",
|
|
57
57
|
"@paralleldrive/cuid2": "2.2.2",
|
|
58
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
59
|
-
"@strapi/database": "0.0.0-experimental.
|
|
60
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
61
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
62
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
63
|
-
"@strapi/types": "0.0.0-experimental.
|
|
64
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
65
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
58
|
+
"@strapi/admin": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
59
|
+
"@strapi/database": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
60
|
+
"@strapi/generators": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
61
|
+
"@strapi/logger": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
62
|
+
"@strapi/permissions": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
63
|
+
"@strapi/types": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
64
|
+
"@strapi/typescript-utils": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
65
|
+
"@strapi/utils": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
66
66
|
bcryptjs: "2.4.3",
|
|
67
67
|
boxen: "5.1.2",
|
|
68
68
|
chalk: "4.1.2",
|
|
@@ -81,7 +81,8 @@ var dependencies = {
|
|
|
81
81
|
"http-errors": "2.0.0",
|
|
82
82
|
inquirer: "8.2.5",
|
|
83
83
|
"is-docker": "2.2.1",
|
|
84
|
-
|
|
84
|
+
"json-logic-js": "2.0.5",
|
|
85
|
+
koa: "2.16.1",
|
|
85
86
|
"koa-body": "6.0.1",
|
|
86
87
|
"koa-compose": "4.1.0",
|
|
87
88
|
"koa-compress": "5.1.1",
|
|
@@ -102,8 +103,9 @@ var dependencies = {
|
|
|
102
103
|
semver: "7.5.4",
|
|
103
104
|
statuses: "2.0.1",
|
|
104
105
|
typescript: "5.4.4",
|
|
105
|
-
undici: "6.21.
|
|
106
|
-
yup: "0.32.9"
|
|
106
|
+
undici: "6.21.2",
|
|
107
|
+
yup: "0.32.9",
|
|
108
|
+
zod: "3.25.67"
|
|
107
109
|
};
|
|
108
110
|
var devDependencies = {
|
|
109
111
|
"@strapi/ts-zen": "^0.2.0",
|
|
@@ -115,6 +117,7 @@ var devDependencies = {
|
|
|
115
117
|
"@types/global-agent": "2.1.3",
|
|
116
118
|
"@types/http-errors": "2.0.4",
|
|
117
119
|
"@types/jest": "29.5.2",
|
|
120
|
+
"@types/json-logic-js": "2.0.8",
|
|
118
121
|
"@types/koa": "2.13.4",
|
|
119
122
|
"@types/koa-compress": "4.0.3",
|
|
120
123
|
"@types/koa-session": "6.4.1",
|
|
@@ -125,9 +128,9 @@ var devDependencies = {
|
|
|
125
128
|
"@types/node": "18.19.24",
|
|
126
129
|
"@types/node-schedule": "2.1.7",
|
|
127
130
|
"@types/statuses": "2.0.1",
|
|
128
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
131
|
+
"eslint-config-custom": "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d",
|
|
129
132
|
supertest: "6.3.3",
|
|
130
|
-
tsconfig: "0.0.0-experimental.
|
|
133
|
+
tsconfig: "0.0.0-experimental.b8af96ac1bfeefc51fda0c470991a79af1e7cb6d"
|
|
131
134
|
};
|
|
132
135
|
var engines = {
|
|
133
136
|
node: ">=18.0.0 <=22.x.x",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -18,11 +18,11 @@ type GetParams = {
|
|
|
18
18
|
type Params = SetParams & GetParams;
|
|
19
19
|
interface CoreStore {
|
|
20
20
|
(defaultParams: Partial<Params>): {
|
|
21
|
-
get(params: Partial<GetParams>): Promise<
|
|
21
|
+
get<T = unknown>(params: Partial<GetParams>): Promise<T>;
|
|
22
22
|
set(params: Partial<SetParams>): Promise<void>;
|
|
23
23
|
delete(params: Partial<GetParams>): Promise<void>;
|
|
24
24
|
};
|
|
25
|
-
get(params: GetParams): Promise<
|
|
25
|
+
get<T = unknown>(params: GetParams): Promise<T>;
|
|
26
26
|
set(params: SetParams): Promise<void>;
|
|
27
27
|
delete(params: GetParams): Promise<void>;
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-store.d.ts","sourceRoot":"","sources":["../../src/services/core-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAExD,QAAA,MAAM,cAAc,EAAE,KAwBrB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpC,UAAU,SAAS;IACjB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAChC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"core-store.d.ts","sourceRoot":"","sources":["../../src/services/core-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAExD,QAAA,MAAM,cAAc,EAAE,KAwBrB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpC,UAAU,SAAS;IACjB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAChC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACnD,CAAC;IACF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,QAAA,MAAM,eAAe,WAAY;IAAE,EAAE,EAAE,QAAQ,CAAA;CAAE,cA+GhD,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get(params: Partial<GetParams>): Promise<
|
|
1
|
+
{"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function (defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch (err) {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","err","Date","Number","update","stringify","toString","create"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get(params: Partial<GetParams>): Promise<
|
|
1
|
+
{"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function (defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch (err) {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","err","Date","Number","update","stringify","toString","create"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAYlD,QAAA,MAAM,oBAAoB,QACnB,IAAI,WAAW,mBACH,QAAQ,eAAe,CAAC,eAAe;;
|
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAYlD,QAAA,MAAM,oBAAoB,QACnB,IAAI,WAAW,mBACH,QAAQ,eAAe,CAAC,eAAe;;iBA2EzB,MAAM;4BAUK,GAAG;qBA4BV,GAAG;0BAaE,GAAG;CAoB5C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -18,6 +18,48 @@ const createEntriesService = (uid, entityValidator)=>{
|
|
|
18
18
|
if (!data) {
|
|
19
19
|
throw new Error('Create requires data attribute');
|
|
20
20
|
}
|
|
21
|
+
// Check for uniqueness based on documentId and locale (if localized)
|
|
22
|
+
if (data.documentId) {
|
|
23
|
+
const i18nService = strapi.plugin('i18n')?.service('content-types');
|
|
24
|
+
const isLocalized = i18nService?.isLocalizedContentType(contentType) ?? false;
|
|
25
|
+
const hasDraftAndPublish = contentType.options?.draftAndPublish === true;
|
|
26
|
+
const whereClause = {
|
|
27
|
+
documentId: data.documentId
|
|
28
|
+
};
|
|
29
|
+
if (isLocalized) {
|
|
30
|
+
whereClause.locale = data.locale;
|
|
31
|
+
}
|
|
32
|
+
let publishedStateDescription = '';
|
|
33
|
+
if (hasDraftAndPublish) {
|
|
34
|
+
if (data.publishedAt) {
|
|
35
|
+
// Current entry is published, check for existing published entry
|
|
36
|
+
whereClause.publishedAt = {
|
|
37
|
+
$notNull: true
|
|
38
|
+
};
|
|
39
|
+
publishedStateDescription = 'published';
|
|
40
|
+
} else {
|
|
41
|
+
// Current entry is a draft, check for existing draft entry
|
|
42
|
+
whereClause.publishedAt = {
|
|
43
|
+
$null: true
|
|
44
|
+
};
|
|
45
|
+
publishedStateDescription = 'draft';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const existingEntry = await strapi.db.query(uid).findOne({
|
|
49
|
+
select: [
|
|
50
|
+
'id'
|
|
51
|
+
],
|
|
52
|
+
where: whereClause
|
|
53
|
+
});
|
|
54
|
+
if (existingEntry) {
|
|
55
|
+
let errorMsg = `A ${publishedStateDescription} entry with documentId "${data.documentId}"`;
|
|
56
|
+
if (isLocalized && data.locale) {
|
|
57
|
+
errorMsg += ` and locale "${data.locale}"`;
|
|
58
|
+
}
|
|
59
|
+
errorMsg += ` already exists for UID "${uid}". This combination must be unique.`;
|
|
60
|
+
throw new strapiUtils.errors.ApplicationError(errorMsg);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
21
63
|
const validData = await entityValidator.validateEntityCreation(contentType, data, {
|
|
22
64
|
// Note: publishedAt value will always be set when DP is disabled
|
|
23
65
|
isDraft: !params$1?.data?.publishedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.js","sources":["../../../src/services/document-service/entries.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { assoc, omit } from 'lodash/fp';\n\nimport * as components from './components';\n\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { transformParamsToQuery } from './transform/query';\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\nimport { transformData } from './transform/data';\n\nconst createEntriesService = (\n uid: UID.ContentType,\n entityValidator: Modules.EntityValidator.EntityValidator\n) => {\n const contentType = strapi.contentType(uid);\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n // Validation\n if (!data) {\n throw new Error('Create requires data attribute');\n }\n\n const validData = await entityValidator.validateEntityCreation(contentType, data, {\n // Note: publishedAt value will always be set when DP is disabled\n isDraft: !params?.data?.publishedAt,\n locale: params?.locale,\n });\n\n // Component handling\n const componentData = await components.createComponents(uid, validData);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n const doc = await strapi.db.query(uid).create({ ...query, data: entryData });\n\n return doc;\n }\n\n async function deleteEntry(id: number) {\n const componentsToDelete = await components.getComponents(uid, { id });\n\n const deletedEntry = await strapi.db.query(uid).delete({ where: { id } });\n\n await components.deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n return deletedEntry;\n }\n\n async function updateEntry(entryToUpdate: any, params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n const validData = await entityValidator.validateEntityUpdate(\n contentType,\n data,\n {\n isDraft: !params?.data?.publishedAt, // Always update the draft version\n locale: params?.locale,\n },\n entryToUpdate\n );\n // Component handling\n const componentData = await components.updateComponents(uid, entryToUpdate, validData as any);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n return strapi.db\n .query(uid)\n .update({ ...query, where: { id: entryToUpdate.id }, data: entryData });\n }\n\n async function publishEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', new Date()),\n (draft) => {\n const opts = { uid, locale: draft.locale, status: 'published', allowMissingId: true };\n return transformData(draft, opts);\n },\n // Create the published entry\n (draft) => createEntry({ ...params, data: draft, locale: draft.locale, status: 'published' })\n )(entry);\n }\n\n async function discardDraftEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', null),\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'draft', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the draft entry\n (data) => createEntry({ ...params, locale: data.locale, data, status: 'draft' })\n )(entry);\n }\n\n return {\n create: createEntry,\n delete: deleteEntry,\n update: updateEntry,\n publish: publishEntry,\n discardDraft: discardDraftEntry,\n };\n};\n\nexport { createEntriesService };\n"],"names":["createEntriesService","uid","entityValidator","contentType","strapi","createEntry","params","data","restParams","transformParamsDocumentId","query","transformParamsToQuery","pickSelectionParams","Error","validData","validateEntityCreation","isDraft","publishedAt","locale","componentData","components","dataWithComponents","entryData","applyTransforms","doc","db","create","deleteEntry","id","componentsToDelete","deletedEntry","delete","where","loadComponents","updateEntry","entryToUpdate","validateEntityUpdate","update","publishEntry","entry","async","pipe","omit","assoc","Date","draft","opts","status","allowMissingId","transformData","discardDraftEntry","publish","discardDraft"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entries.js","sources":["../../../src/services/document-service/entries.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\nimport { async, errors } from '@strapi/utils';\nimport { assoc, omit } from 'lodash/fp';\n\nimport * as components from './components';\n\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { transformParamsToQuery } from './transform/query';\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\nimport { transformData } from './transform/data';\n\nconst createEntriesService = (\n uid: UID.ContentType,\n entityValidator: Modules.EntityValidator.EntityValidator\n) => {\n const contentType = strapi.contentType(uid);\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n // Validation\n if (!data) {\n throw new Error('Create requires data attribute');\n }\n\n // Check for uniqueness based on documentId and locale (if localized)\n if (data.documentId) {\n const i18nService = strapi.plugin('i18n')?.service('content-types');\n const isLocalized = i18nService?.isLocalizedContentType(contentType) ?? false;\n const hasDraftAndPublish = contentType.options?.draftAndPublish === true;\n\n const whereClause: Record<string, unknown> = { documentId: data.documentId };\n\n if (isLocalized) {\n whereClause.locale = data.locale;\n }\n\n let publishedStateDescription = '';\n\n if (hasDraftAndPublish) {\n if (data.publishedAt) {\n // Current entry is published, check for existing published entry\n whereClause.publishedAt = { $notNull: true };\n publishedStateDescription = 'published';\n } else {\n // Current entry is a draft, check for existing draft entry\n whereClause.publishedAt = { $null: true };\n publishedStateDescription = 'draft';\n }\n }\n\n const existingEntry = await strapi.db.query(uid).findOne({\n select: ['id'],\n where: whereClause,\n });\n\n if (existingEntry) {\n let errorMsg = `A ${publishedStateDescription} entry with documentId \"${data.documentId}\"`;\n if (isLocalized && data.locale) {\n errorMsg += ` and locale \"${data.locale}\"`;\n }\n errorMsg += ` already exists for UID \"${uid}\". This combination must be unique.`;\n throw new errors.ApplicationError(errorMsg);\n }\n }\n\n const validData = await entityValidator.validateEntityCreation(contentType, data, {\n // Note: publishedAt value will always be set when DP is disabled\n isDraft: !params?.data?.publishedAt,\n locale: params?.locale,\n });\n\n // Component handling\n const componentData = await components.createComponents(uid, validData);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n const doc = await strapi.db.query(uid).create({ ...query, data: entryData });\n\n return doc;\n }\n\n async function deleteEntry(id: number) {\n const componentsToDelete = await components.getComponents(uid, { id });\n\n const deletedEntry = await strapi.db.query(uid).delete({ where: { id } });\n\n await components.deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n return deletedEntry;\n }\n\n async function updateEntry(entryToUpdate: any, params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n const validData = await entityValidator.validateEntityUpdate(\n contentType,\n data,\n {\n isDraft: !params?.data?.publishedAt, // Always update the draft version\n locale: params?.locale,\n },\n entryToUpdate\n );\n // Component handling\n const componentData = await components.updateComponents(uid, entryToUpdate, validData as any);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n return strapi.db\n .query(uid)\n .update({ ...query, where: { id: entryToUpdate.id }, data: entryData });\n }\n\n async function publishEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', new Date()),\n (draft) => {\n const opts = { uid, locale: draft.locale, status: 'published', allowMissingId: true };\n return transformData(draft, opts);\n },\n // Create the published entry\n (draft) => createEntry({ ...params, data: draft, locale: draft.locale, status: 'published' })\n )(entry);\n }\n\n async function discardDraftEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', null),\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'draft', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the draft entry\n (data) => createEntry({ ...params, locale: data.locale, data, status: 'draft' })\n )(entry);\n }\n\n return {\n create: createEntry,\n delete: deleteEntry,\n update: updateEntry,\n publish: publishEntry,\n discardDraft: discardDraftEntry,\n };\n};\n\nexport { createEntriesService };\n"],"names":["createEntriesService","uid","entityValidator","contentType","strapi","createEntry","params","data","restParams","transformParamsDocumentId","query","transformParamsToQuery","pickSelectionParams","Error","documentId","i18nService","plugin","service","isLocalized","isLocalizedContentType","hasDraftAndPublish","options","draftAndPublish","whereClause","locale","publishedStateDescription","publishedAt","$notNull","$null","existingEntry","db","findOne","select","where","errorMsg","errors","ApplicationError","validData","validateEntityCreation","isDraft","componentData","components","dataWithComponents","entryData","applyTransforms","doc","create","deleteEntry","id","componentsToDelete","deletedEntry","delete","loadComponents","updateEntry","entryToUpdate","validateEntityUpdate","update","publishEntry","entry","async","pipe","omit","assoc","Date","draft","opts","status","allowMissingId","transformData","discardDraftEntry","publish","discardDraft"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { async } from '@strapi/utils';
|
|
1
|
+
import { errors, async } from '@strapi/utils';
|
|
2
2
|
import { omit, assoc } from 'lodash/fp';
|
|
3
3
|
import { createComponents, assignComponentData, getComponents, deleteComponents, updateComponents } from './components.mjs';
|
|
4
4
|
import { transformParamsDocumentId as curriedTransformParamsDocumentId } from './transform/id-transform.mjs';
|
|
@@ -16,6 +16,48 @@ const createEntriesService = (uid, entityValidator)=>{
|
|
|
16
16
|
if (!data) {
|
|
17
17
|
throw new Error('Create requires data attribute');
|
|
18
18
|
}
|
|
19
|
+
// Check for uniqueness based on documentId and locale (if localized)
|
|
20
|
+
if (data.documentId) {
|
|
21
|
+
const i18nService = strapi.plugin('i18n')?.service('content-types');
|
|
22
|
+
const isLocalized = i18nService?.isLocalizedContentType(contentType) ?? false;
|
|
23
|
+
const hasDraftAndPublish = contentType.options?.draftAndPublish === true;
|
|
24
|
+
const whereClause = {
|
|
25
|
+
documentId: data.documentId
|
|
26
|
+
};
|
|
27
|
+
if (isLocalized) {
|
|
28
|
+
whereClause.locale = data.locale;
|
|
29
|
+
}
|
|
30
|
+
let publishedStateDescription = '';
|
|
31
|
+
if (hasDraftAndPublish) {
|
|
32
|
+
if (data.publishedAt) {
|
|
33
|
+
// Current entry is published, check for existing published entry
|
|
34
|
+
whereClause.publishedAt = {
|
|
35
|
+
$notNull: true
|
|
36
|
+
};
|
|
37
|
+
publishedStateDescription = 'published';
|
|
38
|
+
} else {
|
|
39
|
+
// Current entry is a draft, check for existing draft entry
|
|
40
|
+
whereClause.publishedAt = {
|
|
41
|
+
$null: true
|
|
42
|
+
};
|
|
43
|
+
publishedStateDescription = 'draft';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const existingEntry = await strapi.db.query(uid).findOne({
|
|
47
|
+
select: [
|
|
48
|
+
'id'
|
|
49
|
+
],
|
|
50
|
+
where: whereClause
|
|
51
|
+
});
|
|
52
|
+
if (existingEntry) {
|
|
53
|
+
let errorMsg = `A ${publishedStateDescription} entry with documentId "${data.documentId}"`;
|
|
54
|
+
if (isLocalized && data.locale) {
|
|
55
|
+
errorMsg += ` and locale "${data.locale}"`;
|
|
56
|
+
}
|
|
57
|
+
errorMsg += ` already exists for UID "${uid}". This combination must be unique.`;
|
|
58
|
+
throw new errors.ApplicationError(errorMsg);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
19
61
|
const validData = await entityValidator.validateEntityCreation(contentType, data, {
|
|
20
62
|
// Note: publishedAt value will always be set when DP is disabled
|
|
21
63
|
isDraft: !params?.data?.publishedAt,
|