payload 3.0.0-beta.54 → 3.0.0-beta.56
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/admin/elements/Upload.d.ts +3 -0
- package/dist/admin/elements/Upload.d.ts.map +1 -0
- package/dist/admin/elements/Upload.js +3 -0
- package/dist/admin/elements/Upload.js.map +1 -0
- package/dist/admin/types.d.ts +1 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/executeAuthStrategies.d.ts +2 -3
- package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
- package/dist/auth/executeAuthStrategies.js +6 -4
- package/dist/auth/executeAuthStrategies.js.map +1 -1
- package/dist/auth/operations/auth.d.ts +1 -0
- package/dist/auth/operations/auth.d.ts.map +1 -1
- package/dist/auth/operations/auth.js +3 -1
- package/dist/auth/operations/auth.js.map +1 -1
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +18 -12
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/me.d.ts +2 -1
- package/dist/auth/operations/me.d.ts.map +1 -1
- package/dist/auth/operations/me.js +25 -9
- package/dist/auth/operations/me.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts +2 -1
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +35 -17
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +1 -0
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/strategies/apiKey.d.ts.map +1 -1
- package/dist/auth/strategies/apiKey.js +9 -3
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/auth/strategies/jwt.d.ts.map +1 -1
- package/dist/auth/strategies/jwt.js +9 -3
- package/dist/auth/strategies/jwt.js.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts +3 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +10 -7
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
- package/dist/auth/strategies/local/register.d.ts.map +1 -1
- package/dist/auth/strategies/local/register.js +10 -6
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/auth/types.d.ts +5 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/collections/config/client.d.ts +7 -4
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/defaults.d.ts +2 -0
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +3 -1
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/schema.d.ts.map +1 -1
- package/dist/collections/config/schema.js +10 -10
- package/dist/collections/config/schema.js.map +1 -1
- package/dist/collections/config/types.d.ts +39 -5
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +1 -0
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/errors/APIError.d.ts.map +1 -1
- package/dist/errors/APIError.js +4 -1
- package/dist/errors/APIError.js.map +1 -1
- package/dist/errors/ValidationError.d.ts +13 -5
- package/dist/errors/ValidationError.d.ts.map +1 -1
- package/dist/errors/ValidationError.js +3 -3
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/index.js +5 -1
- package/dist/fields/hooks/beforeChange/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/types.d.ts +8 -1
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/utilities/logger.js.map +1 -1
- package/package.json +2 -2
|
@@ -36,13 +36,19 @@ export const APIKeyAuthentication = (collectionConfig)=>async ({ headers, payloa
|
|
|
36
36
|
const user = userQuery.docs[0];
|
|
37
37
|
user.collection = collectionConfig.slug;
|
|
38
38
|
user._strategy = 'api-key';
|
|
39
|
-
return
|
|
39
|
+
return {
|
|
40
|
+
user: user
|
|
41
|
+
};
|
|
40
42
|
}
|
|
41
43
|
} catch (err) {
|
|
42
|
-
return
|
|
44
|
+
return {
|
|
45
|
+
user: null
|
|
46
|
+
};
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
|
-
return
|
|
49
|
+
return {
|
|
50
|
+
user: null
|
|
51
|
+
};
|
|
46
52
|
};
|
|
47
53
|
|
|
48
54
|
//# sourceMappingURL=apiKey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/strategies/apiKey.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Where } from '../../types/index.js'\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nexport const APIKeyAuthentication =\n (collectionConfig: SanitizedCollectionConfig): AuthStrategyFunction =>\n async ({ headers, payload }) => {\n const authHeader = headers.get('Authorization')\n\n if (authHeader?.startsWith(`${collectionConfig.slug} API-Key `)) {\n const apiKey = authHeader.replace(`${collectionConfig.slug} API-Key `, '')\n const apiKeyIndex = crypto.createHmac('sha1', payload.secret).update(apiKey).digest('hex')\n\n try {\n const where: Where = {}\n if (collectionConfig.auth?.verify) {\n where.and = [\n {\n apiKeyIndex: {\n equals: apiKeyIndex,\n },\n },\n {\n _verified: {\n not_equals: false,\n },\n },\n ]\n } else {\n where.apiKeyIndex = {\n equals: apiKeyIndex,\n }\n }\n\n const userQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: collectionConfig.auth.depth,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n where,\n })\n\n if (userQuery.docs && userQuery.docs.length > 0) {\n const user = userQuery.docs[0]\n user.collection = collectionConfig.slug\n user._strategy = 'api-key'\n\n return user as User\n }\n } catch (err) {\n return null\n }\n }\n\n return null\n }\n"],"names":["crypto","APIKeyAuthentication","collectionConfig","headers","payload","authHeader","get","startsWith","slug","apiKey","replace","apiKeyIndex","createHmac","secret","update","digest","where","auth","verify","and","equals","_verified","not_equals","userQuery","find","collection","depth","limit","overrideAccess","pagination","docs","length","user","_strategy","err"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAM3B,OAAO,MAAMC,uBACX,CAACC,mBACD,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;QACzB,MAAMC,aAAaF,QAAQG,GAAG,CAAC;QAE/B,IAAID,YAAYE,WAAW,CAAC,EAAEL,iBAAiBM,IAAI,CAAC,SAAS,CAAC,GAAG;YAC/D,MAAMC,SAASJ,WAAWK,OAAO,CAAC,CAAC,EAAER,iBAAiBM,IAAI,CAAC,SAAS,CAAC,EAAE;YACvE,MAAMG,cAAcX,OAAOY,UAAU,CAAC,QAAQR,QAAQS,MAAM,EAAEC,MAAM,CAACL,QAAQM,MAAM,CAAC;YAEpF,IAAI;gBACF,MAAMC,QAAe,CAAC;gBACtB,IAAId,iBAAiBe,IAAI,EAAEC,QAAQ;oBACjCF,MAAMG,GAAG,GAAG;wBACV;4BACER,aAAa;gCACXS,QAAQT;4BACV;wBACF;wBACA;4BACEU,WAAW;gCACTC,YAAY;4BACd;wBACF;qBACD;gBACH,OAAO;oBACLN,MAAML,WAAW,GAAG;wBAClBS,QAAQT;oBACV;gBACF;gBAEA,MAAMY,YAAY,MAAMnB,QAAQoB,IAAI,CAAC;oBACnCC,YAAYvB,iBAAiBM,IAAI;oBACjCkB,OAAOxB,iBAAiBe,IAAI,CAACS,KAAK;oBAClCC,OAAO;oBACPC,gBAAgB;oBAChBC,YAAY;oBACZb;gBACF;gBAEA,IAAIO,UAAUO,IAAI,IAAIP,UAAUO,IAAI,CAACC,MAAM,GAAG,GAAG;oBAC/C,MAAMC,OAAOT,UAAUO,IAAI,CAAC,EAAE;oBAC9BE,KAAKP,UAAU,GAAGvB,iBAAiBM,IAAI;oBACvCwB,KAAKC,SAAS,GAAG;oBAEjB,
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/strategies/apiKey.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Where } from '../../types/index.js'\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nexport const APIKeyAuthentication =\n (collectionConfig: SanitizedCollectionConfig): AuthStrategyFunction =>\n async ({ headers, payload }) => {\n const authHeader = headers.get('Authorization')\n\n if (authHeader?.startsWith(`${collectionConfig.slug} API-Key `)) {\n const apiKey = authHeader.replace(`${collectionConfig.slug} API-Key `, '')\n const apiKeyIndex = crypto.createHmac('sha1', payload.secret).update(apiKey).digest('hex')\n\n try {\n const where: Where = {}\n if (collectionConfig.auth?.verify) {\n where.and = [\n {\n apiKeyIndex: {\n equals: apiKeyIndex,\n },\n },\n {\n _verified: {\n not_equals: false,\n },\n },\n ]\n } else {\n where.apiKeyIndex = {\n equals: apiKeyIndex,\n }\n }\n\n const userQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: collectionConfig.auth.depth,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n where,\n })\n\n if (userQuery.docs && userQuery.docs.length > 0) {\n const user = userQuery.docs[0]\n user.collection = collectionConfig.slug\n user._strategy = 'api-key'\n\n return {\n user: user as User,\n }\n }\n } catch (err) {\n return { user: null }\n }\n }\n\n return { user: null }\n }\n"],"names":["crypto","APIKeyAuthentication","collectionConfig","headers","payload","authHeader","get","startsWith","slug","apiKey","replace","apiKeyIndex","createHmac","secret","update","digest","where","auth","verify","and","equals","_verified","not_equals","userQuery","find","collection","depth","limit","overrideAccess","pagination","docs","length","user","_strategy","err"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAM3B,OAAO,MAAMC,uBACX,CAACC,mBACD,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;QACzB,MAAMC,aAAaF,QAAQG,GAAG,CAAC;QAE/B,IAAID,YAAYE,WAAW,CAAC,EAAEL,iBAAiBM,IAAI,CAAC,SAAS,CAAC,GAAG;YAC/D,MAAMC,SAASJ,WAAWK,OAAO,CAAC,CAAC,EAAER,iBAAiBM,IAAI,CAAC,SAAS,CAAC,EAAE;YACvE,MAAMG,cAAcX,OAAOY,UAAU,CAAC,QAAQR,QAAQS,MAAM,EAAEC,MAAM,CAACL,QAAQM,MAAM,CAAC;YAEpF,IAAI;gBACF,MAAMC,QAAe,CAAC;gBACtB,IAAId,iBAAiBe,IAAI,EAAEC,QAAQ;oBACjCF,MAAMG,GAAG,GAAG;wBACV;4BACER,aAAa;gCACXS,QAAQT;4BACV;wBACF;wBACA;4BACEU,WAAW;gCACTC,YAAY;4BACd;wBACF;qBACD;gBACH,OAAO;oBACLN,MAAML,WAAW,GAAG;wBAClBS,QAAQT;oBACV;gBACF;gBAEA,MAAMY,YAAY,MAAMnB,QAAQoB,IAAI,CAAC;oBACnCC,YAAYvB,iBAAiBM,IAAI;oBACjCkB,OAAOxB,iBAAiBe,IAAI,CAACS,KAAK;oBAClCC,OAAO;oBACPC,gBAAgB;oBAChBC,YAAY;oBACZb;gBACF;gBAEA,IAAIO,UAAUO,IAAI,IAAIP,UAAUO,IAAI,CAACC,MAAM,GAAG,GAAG;oBAC/C,MAAMC,OAAOT,UAAUO,IAAI,CAAC,EAAE;oBAC9BE,KAAKP,UAAU,GAAGvB,iBAAiBM,IAAI;oBACvCwB,KAAKC,SAAS,GAAG;oBAEjB,OAAO;wBACLD,MAAMA;oBACR;gBACF;YACF,EAAE,OAAOE,KAAK;gBACZ,OAAO;oBAAEF,MAAM;gBAAK;YACtB;QACF;QAEA,OAAO;YAAEA,MAAM;QAAK;IACtB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/auth/strategies/jwt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAQ,MAAM,aAAa,CAAA;AAS7D,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/auth/strategies/jwt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAQ,MAAM,aAAa,CAAA;AAS7D,eAAO,MAAM,iBAAiB,EAAE,oBA6B/B,CAAA"}
|
|
@@ -16,12 +16,18 @@ export const JWTAuthentication = async ({ headers, isGraphQL = false, payload })
|
|
|
16
16
|
if (user && (!collection.config.auth.verify || user._verified)) {
|
|
17
17
|
user.collection = collection.config.slug;
|
|
18
18
|
user._strategy = 'local-jwt';
|
|
19
|
-
return
|
|
19
|
+
return {
|
|
20
|
+
user: user
|
|
21
|
+
};
|
|
20
22
|
} else {
|
|
21
|
-
return
|
|
23
|
+
return {
|
|
24
|
+
user: null
|
|
25
|
+
};
|
|
22
26
|
}
|
|
23
27
|
} catch (error) {
|
|
24
|
-
return
|
|
28
|
+
return {
|
|
29
|
+
user: null
|
|
30
|
+
};
|
|
25
31
|
}
|
|
26
32
|
};
|
|
27
33
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/strategies/jwt.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nimport { extractJWT } from '../extractJWT.js'\n\ntype JWTToken = {\n collection: string\n id: string\n}\n\nexport const JWTAuthentication: AuthStrategyFunction = async ({\n headers,\n isGraphQL = false,\n payload,\n}) => {\n try {\n const token = extractJWT({ headers, payload })\n const decodedPayload = jwt.verify(token, payload.secret) as jwt.JwtPayload & JWTToken\n\n const collection = payload.collections[decodedPayload.collection]\n\n const user = await payload.findByID({\n id: decodedPayload.id,\n collection: decodedPayload.collection,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n })\n\n if (user && (!collection.config.auth.verify || user._verified)) {\n user.collection = collection.config.slug\n user._strategy = 'local-jwt'\n return user as User\n } else {\n return null\n }\n } catch (error) {\n return null\n }\n}\n"],"names":["jwt","extractJWT","JWTAuthentication","headers","isGraphQL","payload","token","decodedPayload","verify","secret","collection","collections","user","findByID","id","depth","config","auth","_verified","slug","_strategy","error"],"mappings":"AAAA,OAAOA,SAAS,eAAc;AAI9B,SAASC,UAAU,QAAQ,mBAAkB;AAO7C,OAAO,MAAMC,oBAA0C,OAAO,EAC5DC,OAAO,EACPC,YAAY,KAAK,EACjBC,OAAO,EACR;IACC,IAAI;QACF,MAAMC,QAAQL,WAAW;YAAEE;YAASE;QAAQ;QAC5C,MAAME,iBAAiBP,IAAIQ,MAAM,CAACF,OAAOD,QAAQI,MAAM;QAEvD,MAAMC,aAAaL,QAAQM,WAAW,CAACJ,eAAeG,UAAU,CAAC;QAEjE,MAAME,OAAO,MAAMP,QAAQQ,QAAQ,CAAC;YAClCC,IAAIP,eAAeO,EAAE;YACrBJ,YAAYH,eAAeG,UAAU;YACrCK,OAAOX,YAAY,IAAIM,WAAWM,MAAM,CAACC,IAAI,CAACF,KAAK;QACrD;QAEA,IAAIH,QAAS,CAAA,CAACF,WAAWM,MAAM,CAACC,IAAI,CAACT,MAAM,IAAII,KAAKM,SAAS,AAAD,GAAI;YAC9DN,KAAKF,UAAU,GAAGA,WAAWM,MAAM,CAACG,IAAI;YACxCP,KAAKQ,SAAS,GAAG;YACjB,
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/strategies/jwt.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nimport { extractJWT } from '../extractJWT.js'\n\ntype JWTToken = {\n collection: string\n id: string\n}\n\nexport const JWTAuthentication: AuthStrategyFunction = async ({\n headers,\n isGraphQL = false,\n payload,\n}) => {\n try {\n const token = extractJWT({ headers, payload })\n const decodedPayload = jwt.verify(token, payload.secret) as jwt.JwtPayload & JWTToken\n\n const collection = payload.collections[decodedPayload.collection]\n\n const user = await payload.findByID({\n id: decodedPayload.id,\n collection: decodedPayload.collection,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n })\n\n if (user && (!collection.config.auth.verify || user._verified)) {\n user.collection = collection.config.slug\n user._strategy = 'local-jwt'\n return {\n user: user as User,\n }\n } else {\n return { user: null }\n }\n } catch (error) {\n return { user: null }\n }\n}\n"],"names":["jwt","extractJWT","JWTAuthentication","headers","isGraphQL","payload","token","decodedPayload","verify","secret","collection","collections","user","findByID","id","depth","config","auth","_verified","slug","_strategy","error"],"mappings":"AAAA,OAAOA,SAAS,eAAc;AAI9B,SAASC,UAAU,QAAQ,mBAAkB;AAO7C,OAAO,MAAMC,oBAA0C,OAAO,EAC5DC,OAAO,EACPC,YAAY,KAAK,EACjBC,OAAO,EACR;IACC,IAAI;QACF,MAAMC,QAAQL,WAAW;YAAEE;YAASE;QAAQ;QAC5C,MAAME,iBAAiBP,IAAIQ,MAAM,CAACF,OAAOD,QAAQI,MAAM;QAEvD,MAAMC,aAAaL,QAAQM,WAAW,CAACJ,eAAeG,UAAU,CAAC;QAEjE,MAAME,OAAO,MAAMP,QAAQQ,QAAQ,CAAC;YAClCC,IAAIP,eAAeO,EAAE;YACrBJ,YAAYH,eAAeG,UAAU;YACrCK,OAAOX,YAAY,IAAIM,WAAWM,MAAM,CAACC,IAAI,CAACF,KAAK;QACrD;QAEA,IAAIH,QAAS,CAAA,CAACF,WAAWM,MAAM,CAACC,IAAI,CAACT,MAAM,IAAII,KAAKM,SAAS,AAAD,GAAI;YAC9DN,KAAKF,UAAU,GAAGA,WAAWM,MAAM,CAACG,IAAI;YACxCP,KAAKQ,SAAS,GAAG;YACjB,OAAO;gBACLR,MAAMA;YACR;QACF,OAAO;YACL,OAAO;gBAAEA,MAAM;YAAK;QACtB;IACF,EAAE,OAAOS,OAAO;QACd,OAAO;YAAET,MAAM;QAAK;IACtB;AACF,EAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
|
|
1
2
|
type Args = {
|
|
3
|
+
collection: SanitizedCollectionConfig;
|
|
2
4
|
password: string;
|
|
3
5
|
};
|
|
4
|
-
export declare const generatePasswordSaltHash: ({ password, }: Args) => Promise<{
|
|
6
|
+
export declare const generatePasswordSaltHash: ({ collection, password, }: Args) => Promise<{
|
|
5
7
|
hash: string;
|
|
6
8
|
salt: string;
|
|
7
9
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatePasswordSaltHash.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generatePasswordSaltHash.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAyBrF,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,wBAAwB,8BAGlC,IAAI,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiB/C,CAAA"}
|
|
@@ -11,15 +11,18 @@ function randomBytes() {
|
|
|
11
11
|
function pbkdf2Promisified(password, salt) {
|
|
12
12
|
return new Promise((resolve, reject)=>crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (err, hashRaw)=>err ? reject(err) : resolve(hashRaw)));
|
|
13
13
|
}
|
|
14
|
-
export const generatePasswordSaltHash = async ({ password })=>{
|
|
14
|
+
export const generatePasswordSaltHash = async ({ collection, password })=>{
|
|
15
15
|
const validationResult = defaultPasswordValidator(password);
|
|
16
16
|
if (typeof validationResult === 'string') {
|
|
17
|
-
throw new ValidationError(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
throw new ValidationError({
|
|
18
|
+
collection: collection?.slug,
|
|
19
|
+
errors: [
|
|
20
|
+
{
|
|
21
|
+
field: 'password',
|
|
22
|
+
message: validationResult
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
});
|
|
23
26
|
}
|
|
24
27
|
const saltBuffer = await randomBytes();
|
|
25
28
|
const salt = saltBuffer.toString('hex');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport { ValidationError } from '../../../errors/index.js'\n\nconst defaultPasswordValidator = (password: string): string | true => {\n if (!password) return 'No password was given'\n if (password.length < 3) return 'Password must be at least 3 characters'\n\n return true\n}\n\nfunction randomBytes(): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.randomBytes(32, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))),\n )\n}\n\nfunction pbkdf2Promisified(password: string, salt: string): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (err, hashRaw) =>\n err ? reject(err) : resolve(hashRaw),\n ),\n )\n}\n\ntype Args = {\n password: string\n}\n\nexport const generatePasswordSaltHash = async ({\n password,\n}: Args): Promise<{ hash: string; salt: string }> => {\n const validationResult = defaultPasswordValidator(password)\n\n if (typeof validationResult === 'string') {\n throw new ValidationError([{ field: 'password', message: validationResult }])\n }\n\n const saltBuffer = await randomBytes()\n const salt = saltBuffer.toString('hex')\n\n const hashRaw = await pbkdf2Promisified(password, salt)\n const hash = hashRaw.toString('hex')\n\n return { hash, salt }\n}\n"],"names":["crypto","ValidationError","defaultPasswordValidator","password","length","randomBytes","Promise","resolve","reject","err","saltBuffer","pbkdf2Promisified","salt","pbkdf2","hashRaw","generatePasswordSaltHash","validationResult","field","message","toString","hash"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\n\nimport { ValidationError } from '../../../errors/index.js'\n\nconst defaultPasswordValidator = (password: string): string | true => {\n if (!password) return 'No password was given'\n if (password.length < 3) return 'Password must be at least 3 characters'\n\n return true\n}\n\nfunction randomBytes(): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.randomBytes(32, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))),\n )\n}\n\nfunction pbkdf2Promisified(password: string, salt: string): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (err, hashRaw) =>\n err ? reject(err) : resolve(hashRaw),\n ),\n )\n}\n\ntype Args = {\n collection: SanitizedCollectionConfig\n password: string\n}\n\nexport const generatePasswordSaltHash = async ({\n collection,\n password,\n}: Args): Promise<{ hash: string; salt: string }> => {\n const validationResult = defaultPasswordValidator(password)\n\n if (typeof validationResult === 'string') {\n throw new ValidationError({\n collection: collection?.slug,\n errors: [{ field: 'password', message: validationResult }],\n })\n }\n\n const saltBuffer = await randomBytes()\n const salt = saltBuffer.toString('hex')\n\n const hashRaw = await pbkdf2Promisified(password, salt)\n const hash = hashRaw.toString('hex')\n\n return { hash, salt }\n}\n"],"names":["crypto","ValidationError","defaultPasswordValidator","password","length","randomBytes","Promise","resolve","reject","err","saltBuffer","pbkdf2Promisified","salt","pbkdf2","hashRaw","generatePasswordSaltHash","collection","validationResult","slug","errors","field","message","toString","hash"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAI3B,SAASC,eAAe,QAAQ,2BAA0B;AAE1D,MAAMC,2BAA2B,CAACC;IAChC,IAAI,CAACA,UAAU,OAAO;IACtB,IAAIA,SAASC,MAAM,GAAG,GAAG,OAAO;IAEhC,OAAO;AACT;AAEA,SAASC;IACP,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BR,OAAOK,WAAW,CAAC,IAAI,CAACI,KAAKC,aAAgBD,MAAMD,OAAOC,OAAOF,QAAQG;AAE7E;AAEA,SAASC,kBAAkBR,QAAgB,EAAES,IAAY;IACvD,OAAO,IAAIN,QAAQ,CAACC,SAASC,SAC3BR,OAAOa,MAAM,CAACV,UAAUS,MAAM,OAAO,KAAK,UAAU,CAACH,KAAKK,UACxDL,MAAMD,OAAOC,OAAOF,QAAQO;AAGlC;AAOA,OAAO,MAAMC,2BAA2B,OAAO,EAC7CC,UAAU,EACVb,QAAQ,EACH;IACL,MAAMc,mBAAmBf,yBAAyBC;IAElD,IAAI,OAAOc,qBAAqB,UAAU;QACxC,MAAM,IAAIhB,gBAAgB;YACxBe,YAAYA,YAAYE;YACxBC,QAAQ;gBAAC;oBAAEC,OAAO;oBAAYC,SAASJ;gBAAiB;aAAE;QAC5D;IACF;IAEA,MAAMP,aAAa,MAAML;IACzB,MAAMO,OAAOF,WAAWY,QAAQ,CAAC;IAEjC,MAAMR,UAAU,MAAMH,kBAAkBR,UAAUS;IAClD,MAAMW,OAAOT,QAAQQ,QAAQ,CAAC;IAE9B,OAAO;QAAEC;QAAMX;IAAK;AACtB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/local/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAKrE,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,sBAAsB,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,qBAAqB,iDAM/B,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/local/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAKrE,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,sBAAsB,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,qBAAqB,iDAM/B,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmCxC,CAAA"}
|
|
@@ -14,14 +14,18 @@ export const registerLocalStrategy = async ({ collection, doc, password, payload
|
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
if (existingUser.docs.length > 0) {
|
|
17
|
-
throw new ValidationError(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
throw new ValidationError({
|
|
18
|
+
collection: collection.slug,
|
|
19
|
+
errors: [
|
|
20
|
+
{
|
|
21
|
+
field: 'email',
|
|
22
|
+
message: req.t('error:userEmailAlreadyRegistered')
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
});
|
|
23
26
|
}
|
|
24
27
|
const { hash, salt } = await generatePasswordSaltHash({
|
|
28
|
+
collection,
|
|
25
29
|
password
|
|
26
30
|
});
|
|
27
31
|
const sanitizedDoc = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequestWithData } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: Record<string, unknown>\n password: string\n payload: Payload\n req: PayloadRequestWithData\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n}: Args): Promise<Record<string, unknown>> => {\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: {\n email: {\n equals: doc.email,\n },\n },\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError(
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequestWithData } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: Record<string, unknown>\n password: string\n payload: Payload\n req: PayloadRequestWithData\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n}: Args): Promise<Record<string, unknown>> => {\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: {\n email: {\n equals: doc.email,\n },\n },\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError({\n collection: collection.slug,\n errors: [{ field: 'email', message: req.t('error:userEmailAlreadyRegistered') }],\n })\n }\n\n const { hash, salt } = await generatePasswordSaltHash({ collection, password })\n\n const sanitizedDoc = { ...doc }\n if (sanitizedDoc.password) delete sanitizedDoc.password\n\n return payload.db.create({\n collection: collection.slug,\n data: {\n ...sanitizedDoc,\n hash,\n salt,\n },\n req,\n })\n}\n"],"names":["ValidationError","generatePasswordSaltHash","registerLocalStrategy","collection","doc","password","payload","req","existingUser","find","slug","depth","limit","pagination","where","email","equals","docs","length","errors","field","message","t","hash","salt","sanitizedDoc","db","create","data"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAUxE,OAAO,MAAMC,wBAAwB,OAAO,EAC1CC,UAAU,EACVC,GAAG,EACHC,QAAQ,EACRC,OAAO,EACPC,GAAG,EACE;IACL,MAAMC,eAAe,MAAMF,QAAQG,IAAI,CAAC;QACtCN,YAAYA,WAAWO,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZN;QACAO,OAAO;YACLC,OAAO;gBACLC,QAAQZ,IAAIW,KAAK;YACnB;QACF;IACF;IAEA,IAAIP,aAAaS,IAAI,CAACC,MAAM,GAAG,GAAG;QAChC,MAAM,IAAIlB,gBAAgB;YACxBG,YAAYA,WAAWO,IAAI;YAC3BS,QAAQ;gBAAC;oBAAEC,OAAO;oBAASC,SAASd,IAAIe,CAAC,CAAC;gBAAoC;aAAE;QAClF;IACF;IAEA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAMvB,yBAAyB;QAAEE;QAAYE;IAAS;IAE7E,MAAMoB,eAAe;QAAE,GAAGrB,GAAG;IAAC;IAC9B,IAAIqB,aAAapB,QAAQ,EAAE,OAAOoB,aAAapB,QAAQ;IAEvD,OAAOC,QAAQoB,EAAE,CAACC,MAAM,CAAC;QACvBxB,YAAYA,WAAWO,IAAI;QAC3BkB,MAAM;YACJ,GAAGH,YAAY;YACfF;YACAC;QACF;QACAjB;IACF;AACF,EAAC"}
|
package/dist/auth/types.d.ts
CHANGED
|
@@ -90,7 +90,11 @@ export type AuthStrategyFunctionArgs = {
|
|
|
90
90
|
isGraphQL?: boolean;
|
|
91
91
|
payload: Payload;
|
|
92
92
|
};
|
|
93
|
-
export type
|
|
93
|
+
export type AuthStrategyResult = {
|
|
94
|
+
responseHeaders?: Headers;
|
|
95
|
+
user: User | null;
|
|
96
|
+
};
|
|
97
|
+
export type AuthStrategyFunction = (args: AuthStrategyFunctionArgs) => AuthStrategyResult | Promise<AuthStrategyResult>;
|
|
94
98
|
export type AuthStrategy = {
|
|
95
99
|
authenticate: AuthStrategyFunction;
|
|
96
100
|
name: string;
|
package/dist/auth/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auth/types.ts"],"sourcesContent":["import type { DeepRequired } from 'ts-essentials'\n\nimport type { Payload } from '../index.js'\nimport type { PayloadRequestWithData, Where } from '../types/index.js'\n\nexport type Permission = {\n permission: boolean\n where?: Record<string, unknown>\n}\n\nexport type FieldPermissions = {\n blocks?: {\n [blockSlug: string]: {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n }\n }\n create: {\n permission: boolean\n }\n fields?: {\n [fieldName: string]: FieldPermissions\n }\n read: {\n permission: boolean\n }\n update: {\n permission: boolean\n }\n}\n\nexport type CollectionPermission = {\n create: Permission\n delete: Permission\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type GlobalPermission = {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type DocumentPermissions = CollectionPermission | GlobalPermission\nexport type Permissions = {\n canAccessAdmin: boolean\n collections: {\n [collectionSlug: string]: CollectionPermission\n }\n globals?: {\n [globalSlug: string]: GlobalPermission\n }\n}\n\nexport type User = {\n [key: string]: any // This NEEDS to be an any, otherwise it breaks the Omit for ClientUser below\n collection: string\n email: string\n id: number | string\n}\n\n/**\n * `collection` is not available one the client. It's only available on the server (req.user)\n * On the client, you can access the collection via config.admin.user. Config can be accessed using the useConfig() hook\n */\nexport type ClientUser = Omit<User, 'collection'>\n\ntype GenerateVerifyEmailHTML = (args: {\n req: PayloadRequestWithData\n token: string\n user: any\n}) => Promise<string> | string\ntype GenerateVerifyEmailSubject = (args: {\n req: PayloadRequestWithData\n token: string\n user: any\n}) => Promise<string> | string\n\ntype GenerateForgotPasswordEmailHTML = (args?: {\n req?: PayloadRequestWithData\n token?: string\n user?: unknown\n}) => Promise<string> | string\ntype GenerateForgotPasswordEmailSubject = (args?: {\n req?: PayloadRequestWithData\n token?: string\n user?: any\n}) => Promise<string> | string\n\nexport type AuthStrategyFunctionArgs = {\n headers: Request['headers']\n isGraphQL?: boolean\n payload: Payload\n}\nexport type AuthStrategyFunction = (\n args: AuthStrategyFunctionArgs,\n) =>
|
|
1
|
+
{"version":3,"sources":["../../src/auth/types.ts"],"sourcesContent":["import type { DeepRequired } from 'ts-essentials'\n\nimport type { Payload } from '../index.js'\nimport type { PayloadRequestWithData, Where } from '../types/index.js'\n\nexport type Permission = {\n permission: boolean\n where?: Record<string, unknown>\n}\n\nexport type FieldPermissions = {\n blocks?: {\n [blockSlug: string]: {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n }\n }\n create: {\n permission: boolean\n }\n fields?: {\n [fieldName: string]: FieldPermissions\n }\n read: {\n permission: boolean\n }\n update: {\n permission: boolean\n }\n}\n\nexport type CollectionPermission = {\n create: Permission\n delete: Permission\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type GlobalPermission = {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type DocumentPermissions = CollectionPermission | GlobalPermission\nexport type Permissions = {\n canAccessAdmin: boolean\n collections: {\n [collectionSlug: string]: CollectionPermission\n }\n globals?: {\n [globalSlug: string]: GlobalPermission\n }\n}\n\nexport type User = {\n [key: string]: any // This NEEDS to be an any, otherwise it breaks the Omit for ClientUser below\n collection: string\n email: string\n id: number | string\n}\n\n/**\n * `collection` is not available one the client. It's only available on the server (req.user)\n * On the client, you can access the collection via config.admin.user. Config can be accessed using the useConfig() hook\n */\nexport type ClientUser = Omit<User, 'collection'>\n\ntype GenerateVerifyEmailHTML = (args: {\n req: PayloadRequestWithData\n token: string\n user: any\n}) => Promise<string> | string\ntype GenerateVerifyEmailSubject = (args: {\n req: PayloadRequestWithData\n token: string\n user: any\n}) => Promise<string> | string\n\ntype GenerateForgotPasswordEmailHTML = (args?: {\n req?: PayloadRequestWithData\n token?: string\n user?: unknown\n}) => Promise<string> | string\ntype GenerateForgotPasswordEmailSubject = (args?: {\n req?: PayloadRequestWithData\n token?: string\n user?: any\n}) => Promise<string> | string\n\nexport type AuthStrategyFunctionArgs = {\n headers: Request['headers']\n isGraphQL?: boolean\n payload: Payload\n}\n\nexport type AuthStrategyResult = {\n responseHeaders?: Headers\n user: User | null\n}\n\nexport type AuthStrategyFunction = (\n args: AuthStrategyFunctionArgs,\n) => AuthStrategyResult | Promise<AuthStrategyResult>\nexport type AuthStrategy = {\n authenticate: AuthStrategyFunction\n name: string\n}\n\nexport interface IncomingAuthType {\n cookies?: {\n domain?: string\n sameSite?: 'Lax' | 'None' | 'Strict' | boolean\n secure?: boolean\n }\n depth?: number\n disableLocalStrategy?: true\n forgotPassword?: {\n generateEmailHTML?: GenerateForgotPasswordEmailHTML\n generateEmailSubject?: GenerateForgotPasswordEmailSubject\n }\n lockTime?: number\n maxLoginAttempts?: number\n removeTokenFromResponses?: true\n strategies?: AuthStrategy[]\n tokenExpiration?: number\n useAPIKey?: boolean\n verify?:\n | {\n generateEmailHTML?: GenerateVerifyEmailHTML\n generateEmailSubject?: GenerateVerifyEmailSubject\n }\n | boolean\n}\n\nexport type VerifyConfig = {\n generateEmailHTML?: GenerateVerifyEmailHTML\n generateEmailSubject?: GenerateVerifyEmailSubject\n}\n\nexport interface Auth extends Omit<DeepRequired<IncomingAuthType>, 'forgotPassword' | 'verify'> {\n forgotPassword?: {\n generateEmailHTML?: GenerateForgotPasswordEmailHTML\n generateEmailSubject?: GenerateForgotPasswordEmailSubject\n }\n verify?: VerifyConfig | boolean\n}\n\nexport function hasWhereAccessResult(result: Where | boolean): result is Where {\n return result && typeof result === 'object'\n}\n"],"names":["hasWhereAccessResult","result"],"mappings":"AA4JA,OAAO,SAASA,qBAAqBC,MAAuB;IAC1D,OAAOA,UAAU,OAAOA,WAAW;AACrC"}
|
|
@@ -21,16 +21,17 @@ export declare const createClientCollectionConfig: ({ collection, t, }: {
|
|
|
21
21
|
versions: import("../../versions/types.js").SanitizedCollectionVersions;
|
|
22
22
|
admin: {
|
|
23
23
|
components: {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
afterList: import("../../config/types.js").CustomComponent[];
|
|
25
|
+
afterListTable: import("../../config/types.js").CustomComponent[];
|
|
26
|
+
beforeList: import("../../config/types.js").CustomComponent[];
|
|
27
|
+
beforeListTable: import("../../config/types.js").CustomComponent[];
|
|
28
28
|
edit: {
|
|
29
29
|
Description: import("../../config/types.js").EntityDescriptionComponent;
|
|
30
30
|
PreviewButton: import("../../index.js").CustomPreviewButton;
|
|
31
31
|
PublishButton: import("../../index.js").CustomPublishButton;
|
|
32
32
|
SaveButton: import("../../index.js").CustomSaveButton;
|
|
33
33
|
SaveDraftButton: import("../../index.js").CustomSaveDraftButton;
|
|
34
|
+
Upload: import("../../index.js").CustomUpload;
|
|
34
35
|
};
|
|
35
36
|
views: {
|
|
36
37
|
Edit: import("../../config/types.js").EditViewComponent | {
|
|
@@ -282,6 +283,8 @@ export declare const createClientCollectionConfig: ({ collection, t, }: {
|
|
|
282
283
|
beforeOperation: import("./types.js").BeforeOperationHook[];
|
|
283
284
|
beforeRead: import("./types.js").BeforeReadHook[];
|
|
284
285
|
beforeValidate: import("./types.js").BeforeValidateHook[];
|
|
286
|
+
me: import("./types.js").MeHook[];
|
|
287
|
+
refresh: import("./types.js").RefreshHook[];
|
|
285
288
|
};
|
|
286
289
|
typescript: {
|
|
287
290
|
interface: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/collections/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,yBAAyB,EACzB,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAC5C,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAC1D,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,yBAAyB,EACzB,OAAO,GAAG,QAAQ,GAAG,8BAA8B,CACpD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,yBAAyB,CAAC,OAAO,CAAC,EAClC,QAAQ,GAAG,aAAa,GAAG,mCAAmC,CAC/D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,eAAO,MAAM,4BAA4B,uBAGtC;IACD,UAAU,EAAE,yBAAyB,CAAA;IACrC,CAAC,EAAE,SAAS,CAAA;CACb
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/collections/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,yBAAyB,EACzB,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAC5C,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAC1D,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,yBAAyB,EACzB,OAAO,GAAG,QAAQ,GAAG,8BAA8B,CACpD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,yBAAyB,CAAC,OAAO,CAAC,EAClC,QAAQ,GAAG,aAAa,GAAG,mCAAmC,CAC/D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,eAAO,MAAM,4BAA4B,uBAGtC;IACD,UAAU,EAAE,yBAAyB,CAAA;IACrC,CAAC,EAAE,SAAS,CAAA;CACb;;;;;;;;;;;;;;;;;;;;;;;;kCAVuC,MAAO,aAAY;;;;;;kCAQ5B,CAAC;;;;;;;;;;;;;;;;;;;;wCARe,aAAY;;;;;;kCAQ5B,CAAC;;;;;;;;;;;;;;;;;;;;wCARe,aAAY;;;;;;kCAQ5B,CAAC;;;;;;;;;;;;;;;;;;;;wCARe,aAAY;;;;;;kCAQ5B,CAAC;;;;;;;;;;;;;;;;;;;;wCARe,aAAY;;;;;;kCAQ5B,CAAC;;;;;;;;;;;;;;;;;;;;;wCARe,aAAY;;;;;;kCAQ5B,CAAC;;;;;;;;;;;;;;;;;;;;+BA6EwgK,MAAO,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA9BxjK,CADJ;;4BACiF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBjF,CAAA;AAED,eAAO,MAAM,6BAA6B,wBAGvC;IACD,WAAW,EAAE,yBAAyB,EAAE,CAAA;IACxC,CAAC,EAAE,SAAS,CAAA;CACb,KAAG,sBAAsB,EACwD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/collections/config/defaults.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/collections/config/defaults.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CpB,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;CAUxB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/config/defaults.ts"],"sourcesContent":["import defaultAccess from '../../auth/defaultAccess.js'\n\nexport const defaults = {\n access: {\n create: defaultAccess,\n delete: defaultAccess,\n read: defaultAccess,\n unlock: defaultAccess,\n update: defaultAccess,\n },\n admin: {\n components: {},\n custom: {},\n enableRichTextLink: true,\n enableRichTextRelationship: true,\n pagination: {\n defaultLimit: 10,\n limits: [5, 10, 25, 50, 100],\n },\n useAsTitle: 'id',\n },\n auth: false,\n custom: {},\n endpoints: [],\n fields: [],\n hooks: {\n afterChange: [],\n afterDelete: [],\n afterForgotPassword: [],\n afterLogin: [],\n afterLogout: [],\n afterMe: [],\n afterOperation: [],\n afterRead: [],\n afterRefresh: [],\n beforeChange: [],\n beforeDelete: [],\n beforeLogin: [],\n beforeOperation: [],\n beforeRead: [],\n beforeValidate: [],\n },\n timestamps: true,\n upload: false,\n versions: false,\n}\n\nexport const authDefaults = {\n cookies: {\n sameSite: 'Lax',\n secure: false,\n },\n forgotPassword: {},\n lockTime: 600000, // 10 minutes\n maxLoginAttempts: 5,\n tokenExpiration: 7200,\n verify: false,\n}\n"],"names":["defaultAccess","defaults","access","create","delete","read","unlock","update","admin","components","custom","enableRichTextLink","enableRichTextRelationship","pagination","defaultLimit","limits","useAsTitle","auth","endpoints","fields","hooks","afterChange","afterDelete","afterForgotPassword","afterLogin","afterLogout","afterMe","afterOperation","afterRead","afterRefresh","beforeChange","beforeDelete","beforeLogin","beforeOperation","beforeRead","beforeValidate","timestamps","upload","versions","authDefaults","cookies","sameSite","secure","forgotPassword","lockTime","maxLoginAttempts","tokenExpiration","verify"],"mappings":"AAAA,OAAOA,mBAAmB,8BAA6B;AAEvD,OAAO,MAAMC,WAAW;IACtBC,QAAQ;QACNC,QAAQH;QACRI,QAAQJ;QACRK,MAAML;QACNM,QAAQN;QACRO,QAAQP;IACV;IACAQ,OAAO;QACLC,YAAY,CAAC;QACbC,QAAQ,CAAC;QACTC,oBAAoB;QACpBC,4BAA4B;QAC5BC,YAAY;YACVC,cAAc;YACdC,QAAQ;gBAAC;gBAAG;gBAAI;gBAAI;gBAAI;aAAI;QAC9B;QACAC,YAAY;IACd;IACAC,MAAM;IACNP,QAAQ,CAAC;IACTQ,WAAW,EAAE;IACbC,QAAQ,EAAE;IACVC,OAAO;QACLC,aAAa,EAAE;QACfC,aAAa,EAAE;QACfC,qBAAqB,EAAE;QACvBC,YAAY,EAAE;QACdC,aAAa,EAAE;QACfC,SAAS,EAAE;QACXC,gBAAgB,EAAE;QAClBC,WAAW,EAAE;QACbC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,aAAa,EAAE;QACfC,iBAAiB,EAAE;QACnBC,YAAY,EAAE;QACdC,gBAAgB,EAAE;
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/config/defaults.ts"],"sourcesContent":["import defaultAccess from '../../auth/defaultAccess.js'\n\nexport const defaults = {\n access: {\n create: defaultAccess,\n delete: defaultAccess,\n read: defaultAccess,\n unlock: defaultAccess,\n update: defaultAccess,\n },\n admin: {\n components: {},\n custom: {},\n enableRichTextLink: true,\n enableRichTextRelationship: true,\n pagination: {\n defaultLimit: 10,\n limits: [5, 10, 25, 50, 100],\n },\n useAsTitle: 'id',\n },\n auth: false,\n custom: {},\n endpoints: [],\n fields: [],\n hooks: {\n afterChange: [],\n afterDelete: [],\n afterForgotPassword: [],\n afterLogin: [],\n afterLogout: [],\n afterMe: [],\n afterOperation: [],\n afterRead: [],\n afterRefresh: [],\n beforeChange: [],\n beforeDelete: [],\n beforeLogin: [],\n beforeOperation: [],\n beforeRead: [],\n beforeValidate: [],\n me: [],\n refresh: [],\n },\n timestamps: true,\n upload: false,\n versions: false,\n}\n\nexport const authDefaults = {\n cookies: {\n sameSite: 'Lax',\n secure: false,\n },\n forgotPassword: {},\n lockTime: 600000, // 10 minutes\n maxLoginAttempts: 5,\n tokenExpiration: 7200,\n verify: false,\n}\n"],"names":["defaultAccess","defaults","access","create","delete","read","unlock","update","admin","components","custom","enableRichTextLink","enableRichTextRelationship","pagination","defaultLimit","limits","useAsTitle","auth","endpoints","fields","hooks","afterChange","afterDelete","afterForgotPassword","afterLogin","afterLogout","afterMe","afterOperation","afterRead","afterRefresh","beforeChange","beforeDelete","beforeLogin","beforeOperation","beforeRead","beforeValidate","me","refresh","timestamps","upload","versions","authDefaults","cookies","sameSite","secure","forgotPassword","lockTime","maxLoginAttempts","tokenExpiration","verify"],"mappings":"AAAA,OAAOA,mBAAmB,8BAA6B;AAEvD,OAAO,MAAMC,WAAW;IACtBC,QAAQ;QACNC,QAAQH;QACRI,QAAQJ;QACRK,MAAML;QACNM,QAAQN;QACRO,QAAQP;IACV;IACAQ,OAAO;QACLC,YAAY,CAAC;QACbC,QAAQ,CAAC;QACTC,oBAAoB;QACpBC,4BAA4B;QAC5BC,YAAY;YACVC,cAAc;YACdC,QAAQ;gBAAC;gBAAG;gBAAI;gBAAI;gBAAI;aAAI;QAC9B;QACAC,YAAY;IACd;IACAC,MAAM;IACNP,QAAQ,CAAC;IACTQ,WAAW,EAAE;IACbC,QAAQ,EAAE;IACVC,OAAO;QACLC,aAAa,EAAE;QACfC,aAAa,EAAE;QACfC,qBAAqB,EAAE;QACvBC,YAAY,EAAE;QACdC,aAAa,EAAE;QACfC,SAAS,EAAE;QACXC,gBAAgB,EAAE;QAClBC,WAAW,EAAE;QACbC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,aAAa,EAAE;QACfC,iBAAiB,EAAE;QACnBC,YAAY,EAAE;QACdC,gBAAgB,EAAE;QAClBC,IAAI,EAAE;QACNC,SAAS,EAAE;IACb;IACAC,YAAY;IACZC,QAAQ;IACRC,UAAU;AACZ,EAAC;AAED,OAAO,MAAMC,eAAe;IAC1BC,SAAS;QACPC,UAAU;QACVC,QAAQ;IACV;IACAC,gBAAgB,CAAC;IACjBC,UAAU;IACVC,kBAAkB;IAClBC,iBAAiB;IACjBC,QAAQ;AACV,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/collections/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/collections/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAUrB,QAAA,MAAM,gBAAgB,uBA4NpB,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
|
|
@@ -2,10 +2,6 @@ import joi from 'joi';
|
|
|
2
2
|
import { endpointsSchema } from '../../config/schema.js';
|
|
3
3
|
import { componentSchema, customViewSchema, livePreviewSchema } from '../../config/shared/componentSchema.js';
|
|
4
4
|
import { openGraphSchema } from '../../config/shared/openGraphSchema.js';
|
|
5
|
-
const strategyBaseSchema = joi.object().keys({
|
|
6
|
-
logout: joi.boolean(),
|
|
7
|
-
refresh: joi.boolean()
|
|
8
|
-
});
|
|
9
5
|
const collectionSchema = joi.object().keys({
|
|
10
6
|
slug: joi.string().required(),
|
|
11
7
|
access: joi.object({
|
|
@@ -19,16 +15,17 @@ const collectionSchema = joi.object().keys({
|
|
|
19
15
|
}),
|
|
20
16
|
admin: joi.object({
|
|
21
17
|
components: joi.object({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
afterList: joi.array().items(componentSchema),
|
|
19
|
+
afterListTable: joi.array().items(componentSchema),
|
|
20
|
+
beforeList: joi.array().items(componentSchema),
|
|
21
|
+
beforeListTable: joi.array().items(componentSchema),
|
|
26
22
|
edit: joi.object({
|
|
27
23
|
Description: componentSchema,
|
|
28
24
|
PreviewButton: componentSchema,
|
|
29
25
|
PublishButton: componentSchema,
|
|
30
26
|
SaveButton: componentSchema,
|
|
31
|
-
SaveDraftButton: componentSchema
|
|
27
|
+
SaveDraftButton: componentSchema,
|
|
28
|
+
Upload: componentSchema
|
|
32
29
|
}),
|
|
33
30
|
views: joi.object({
|
|
34
31
|
Edit: joi.alternatives().try(componentSchema, joi.object({
|
|
@@ -120,7 +117,9 @@ const collectionSchema = joi.object().keys({
|
|
|
120
117
|
beforeLogin: joi.array().items(joi.func()),
|
|
121
118
|
beforeOperation: joi.array().items(joi.func()),
|
|
122
119
|
beforeRead: joi.array().items(joi.func()),
|
|
123
|
-
beforeValidate: joi.array().items(joi.func())
|
|
120
|
+
beforeValidate: joi.array().items(joi.func()),
|
|
121
|
+
me: joi.array().items(joi.func()),
|
|
122
|
+
refresh: joi.array().items(joi.func())
|
|
124
123
|
}),
|
|
125
124
|
labels: joi.object({
|
|
126
125
|
plural: joi.alternatives().try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [
|
|
@@ -154,6 +153,7 @@ const collectionSchema = joi.object().keys({
|
|
|
154
153
|
width: joi.number().integer().allow(null)
|
|
155
154
|
}).unknown()),
|
|
156
155
|
mimeTypes: joi.array().items(joi.string()),
|
|
156
|
+
modifyResponseHeaders: joi.func(),
|
|
157
157
|
resizeOptions: joi.object().keys({
|
|
158
158
|
background: joi.string(),
|
|
159
159
|
fastShrinkOnLoad: joi.bool(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { endpointsSchema } from '../../config/schema.js'\nimport {\n componentSchema,\n customViewSchema,\n livePreviewSchema,\n} from '../../config/shared/componentSchema.js'\nimport { openGraphSchema } from '../../config/shared/openGraphSchema.js'\n\nconst strategyBaseSchema = joi.object().keys({\n logout: joi.boolean(),\n refresh: joi.boolean(),\n})\n\nconst collectionSchema = joi.object().keys({\n slug: joi.string().required(),\n access: joi.object({\n admin: joi.func(),\n create: joi.func(),\n delete: joi.func(),\n read: joi.func(),\n readVersions: joi.func(),\n unlock: joi.func(),\n update: joi.func(),\n }),\n admin: joi.object({\n components: joi.object({\n AfterList: joi.array().items(componentSchema),\n AfterListTable: joi.array().items(componentSchema),\n BeforeList: joi.array().items(componentSchema),\n BeforeListTable: joi.array().items(componentSchema),\n edit: joi.object({\n Description: componentSchema,\n PreviewButton: componentSchema,\n PublishButton: componentSchema,\n SaveButton: componentSchema,\n SaveDraftButton: componentSchema,\n }),\n views: joi.object({\n Edit: joi.alternatives().try(\n componentSchema,\n joi.object({\n API: joi.alternatives().try(componentSchema, customViewSchema),\n Default: joi.alternatives().try(componentSchema, customViewSchema),\n LivePreview: joi.alternatives().try(componentSchema, customViewSchema),\n Version: joi.alternatives().try(componentSchema, customViewSchema),\n Versions: joi.alternatives().try(componentSchema, customViewSchema),\n // Relationships\n // References\n }),\n ),\n List: joi.alternatives().try(\n componentSchema,\n joi.object({\n Component: componentSchema,\n actions: joi.array().items(componentSchema),\n }),\n ),\n }),\n }),\n custom: joi.object().pattern(joi.string(), joi.any()),\n defaultColumns: joi.array().items(joi.string()),\n description: joi\n .alternatives()\n .try(joi.func(), joi.object().pattern(joi.string(), [joi.string()]), joi.string()),\n enableRichTextLink: joi.boolean(),\n enableRichTextRelationship: joi.boolean(),\n group: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n hidden: joi.alternatives().try(joi.boolean(), joi.func()),\n hideAPIURL: joi.bool(),\n listSearchableFields: joi.array().items(joi.string()),\n livePreview: joi.object(livePreviewSchema),\n meta: joi.object({\n description: joi.string(),\n openGraph: openGraphSchema,\n }),\n pagination: joi.object({\n defaultLimit: joi.number(),\n limits: joi.array().items(joi.number()),\n }),\n preview: joi.func(),\n useAsTitle: joi.string(),\n }),\n auth: joi.alternatives().try(\n joi.object({\n cookies: joi.object().keys({\n domain: joi.string(),\n sameSite: joi.string(), // TODO: add further specificity with joi.xor\n secure: joi.boolean(),\n }),\n depth: joi.number(),\n disableLocalStrategy: joi.boolean().valid(true),\n forgotPassword: joi.object().keys({\n generateEmailHTML: joi.func(),\n generateEmailSubject: joi.func(),\n }),\n lockTime: joi.number(),\n maxLoginAttempts: joi.number(),\n removeTokenFromResponses: joi.boolean().valid(true),\n strategies: joi.array().items(\n joi.object().keys({\n name: joi.string().required(),\n authenticate: joi.func().required(),\n }),\n ),\n tokenExpiration: joi.number(),\n useAPIKey: joi.boolean(),\n verify: joi.alternatives().try(\n joi.boolean(),\n joi.object().keys({\n generateEmailHTML: joi.func(),\n generateEmailSubject: joi.func(),\n }),\n ),\n }),\n joi.boolean(),\n ),\n custom: joi.object().pattern(joi.string(), joi.any()),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultSort: joi.string(),\n disableDuplicate: joi.bool(),\n endpoints: endpointsSchema,\n fields: joi.array(),\n graphQL: joi.alternatives().try(\n joi.object().keys({\n pluralName: joi.string(),\n singularName: joi.string(),\n }),\n joi.boolean(),\n ),\n hooks: joi.object({\n afterChange: joi.array().items(joi.func()),\n afterDelete: joi.array().items(joi.func()),\n afterForgotPassword: joi.array().items(joi.func()),\n afterLogin: joi.array().items(joi.func()),\n afterLogout: joi.array().items(joi.func()),\n afterMe: joi.array().items(joi.func()),\n afterOperation: joi.array().items(joi.func()),\n afterRead: joi.array().items(joi.func()),\n afterRefresh: joi.array().items(joi.func()),\n beforeChange: joi.array().items(joi.func()),\n beforeDelete: joi.array().items(joi.func()),\n beforeLogin: joi.array().items(joi.func()),\n beforeOperation: joi.array().items(joi.func()),\n beforeRead: joi.array().items(joi.func()),\n beforeValidate: joi.array().items(joi.func()),\n }),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n timestamps: joi.boolean(),\n typescript: joi.object().keys({\n interface: joi.string(),\n }),\n upload: joi.alternatives().try(\n joi.object({\n adapter: joi.string(),\n adminThumbnail: joi.alternatives().try(joi.string(), componentSchema),\n crop: joi.bool(),\n disableLocalStorage: joi.bool(),\n externalFileHeaderFilter: joi.func(),\n filesRequiredOnCreate: joi.bool(),\n focalPoint: joi.bool(),\n formatOptions: joi.object().keys({\n format: joi.string(),\n options: joi.object(),\n }),\n handlers: joi.array().items(joi.func()),\n imageSizes: joi.array().items(\n joi\n .object()\n .keys({\n name: joi.string(),\n crop: joi.string(), // TODO: add further specificity with joi.xor\n height: joi.number().integer().allow(null),\n width: joi.number().integer().allow(null),\n })\n .unknown(),\n ),\n mimeTypes: joi.array().items(joi.string()),\n resizeOptions: joi\n .object()\n .keys({\n background: joi.string(),\n fastShrinkOnLoad: joi.bool(),\n fit: joi.string(),\n height: joi.number().allow(null),\n kernel: joi.string(),\n position: joi.alternatives().try(joi.string(), joi.number()),\n width: joi.number().allow(null),\n withoutEnlargement: joi.bool(),\n })\n .allow(null),\n staticDir: joi.string(),\n tempFileDir: joi.string(),\n trimOptions: joi.alternatives().try(\n joi.object().keys({\n format: joi.string(),\n options: joi.object(),\n }),\n joi.string(),\n joi.number(),\n ),\n useTempFiles: joi.bool(),\n }),\n joi.boolean(),\n ),\n versions: joi.alternatives().try(\n joi.object({\n drafts: joi.alternatives().try(\n joi.object({\n autosave: joi.alternatives().try(\n joi.boolean(),\n joi.object({\n interval: joi.number(),\n }),\n ),\n validate: joi.boolean(),\n }),\n joi.boolean(),\n ),\n maxPerDoc: joi.number(),\n }),\n joi.boolean(),\n ),\n})\n\nexport default collectionSchema\n"],"names":["joi","endpointsSchema","componentSchema","customViewSchema","livePreviewSchema","openGraphSchema","strategyBaseSchema","object","keys","logout","boolean","refresh","collectionSchema","slug","string","required","access","admin","func","create","delete","read","readVersions","unlock","update","components","AfterList","array","items","AfterListTable","BeforeList","BeforeListTable","edit","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","views","Edit","alternatives","try","API","Default","LivePreview","Version","Versions","List","Component","actions","custom","pattern","any","defaultColumns","description","enableRichTextLink","enableRichTextRelationship","group","hidden","hideAPIURL","bool","listSearchableFields","livePreview","meta","openGraph","pagination","defaultLimit","number","limits","preview","useAsTitle","auth","cookies","domain","sameSite","secure","depth","disableLocalStrategy","valid","forgotPassword","generateEmailHTML","generateEmailSubject","lockTime","maxLoginAttempts","removeTokenFromResponses","strategies","name","authenticate","tokenExpiration","useAPIKey","verify","dbName","defaultSort","disableDuplicate","endpoints","fields","graphQL","pluralName","singularName","hooks","afterChange","afterDelete","afterForgotPassword","afterLogin","afterLogout","afterMe","afterOperation","afterRead","afterRefresh","beforeChange","beforeDelete","beforeLogin","beforeOperation","beforeRead","beforeValidate","labels","plural","singular","timestamps","typescript","interface","upload","adapter","adminThumbnail","crop","disableLocalStorage","externalFileHeaderFilter","filesRequiredOnCreate","focalPoint","formatOptions","format","options","handlers","imageSizes","height","integer","allow","width","unknown","mimeTypes","resizeOptions","background","fastShrinkOnLoad","fit","kernel","position","withoutEnlargement","staticDir","tempFileDir","trimOptions","useTempFiles","versions","drafts","autosave","interval","validate","maxPerDoc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { endpointsSchema } from '../../config/schema.js'\nimport {\n componentSchema,\n customViewSchema,\n livePreviewSchema,\n} from '../../config/shared/componentSchema.js'\nimport { openGraphSchema } from '../../config/shared/openGraphSchema.js'\n\nconst collectionSchema = joi.object().keys({\n slug: joi.string().required(),\n access: joi.object({\n admin: joi.func(),\n create: joi.func(),\n delete: joi.func(),\n read: joi.func(),\n readVersions: joi.func(),\n unlock: joi.func(),\n update: joi.func(),\n }),\n admin: joi.object({\n components: joi.object({\n afterList: joi.array().items(componentSchema),\n afterListTable: joi.array().items(componentSchema),\n beforeList: joi.array().items(componentSchema),\n beforeListTable: joi.array().items(componentSchema),\n edit: joi.object({\n Description: componentSchema,\n PreviewButton: componentSchema,\n PublishButton: componentSchema,\n SaveButton: componentSchema,\n SaveDraftButton: componentSchema,\n Upload: componentSchema,\n }),\n views: joi.object({\n Edit: joi.alternatives().try(\n componentSchema,\n joi.object({\n API: joi.alternatives().try(componentSchema, customViewSchema),\n Default: joi.alternatives().try(componentSchema, customViewSchema),\n LivePreview: joi.alternatives().try(componentSchema, customViewSchema),\n Version: joi.alternatives().try(componentSchema, customViewSchema),\n Versions: joi.alternatives().try(componentSchema, customViewSchema),\n // Relationships\n // References\n }),\n ),\n List: joi.alternatives().try(\n componentSchema,\n joi.object({\n Component: componentSchema,\n actions: joi.array().items(componentSchema),\n }),\n ),\n }),\n }),\n custom: joi.object().pattern(joi.string(), joi.any()),\n defaultColumns: joi.array().items(joi.string()),\n description: joi\n .alternatives()\n .try(joi.func(), joi.object().pattern(joi.string(), [joi.string()]), joi.string()),\n enableRichTextLink: joi.boolean(),\n enableRichTextRelationship: joi.boolean(),\n group: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n hidden: joi.alternatives().try(joi.boolean(), joi.func()),\n hideAPIURL: joi.bool(),\n listSearchableFields: joi.array().items(joi.string()),\n livePreview: joi.object(livePreviewSchema),\n meta: joi.object({\n description: joi.string(),\n openGraph: openGraphSchema,\n }),\n pagination: joi.object({\n defaultLimit: joi.number(),\n limits: joi.array().items(joi.number()),\n }),\n preview: joi.func(),\n useAsTitle: joi.string(),\n }),\n auth: joi.alternatives().try(\n joi.object({\n cookies: joi.object().keys({\n domain: joi.string(),\n sameSite: joi.string(), // TODO: add further specificity with joi.xor\n secure: joi.boolean(),\n }),\n depth: joi.number(),\n disableLocalStrategy: joi.boolean().valid(true),\n forgotPassword: joi.object().keys({\n generateEmailHTML: joi.func(),\n generateEmailSubject: joi.func(),\n }),\n lockTime: joi.number(),\n maxLoginAttempts: joi.number(),\n removeTokenFromResponses: joi.boolean().valid(true),\n strategies: joi.array().items(\n joi.object().keys({\n name: joi.string().required(),\n authenticate: joi.func().required(),\n }),\n ),\n tokenExpiration: joi.number(),\n useAPIKey: joi.boolean(),\n verify: joi.alternatives().try(\n joi.boolean(),\n joi.object().keys({\n generateEmailHTML: joi.func(),\n generateEmailSubject: joi.func(),\n }),\n ),\n }),\n joi.boolean(),\n ),\n custom: joi.object().pattern(joi.string(), joi.any()),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultSort: joi.string(),\n disableDuplicate: joi.bool(),\n endpoints: endpointsSchema,\n fields: joi.array(),\n graphQL: joi.alternatives().try(\n joi.object().keys({\n pluralName: joi.string(),\n singularName: joi.string(),\n }),\n joi.boolean(),\n ),\n hooks: joi.object({\n afterChange: joi.array().items(joi.func()),\n afterDelete: joi.array().items(joi.func()),\n afterForgotPassword: joi.array().items(joi.func()),\n afterLogin: joi.array().items(joi.func()),\n afterLogout: joi.array().items(joi.func()),\n afterMe: joi.array().items(joi.func()),\n afterOperation: joi.array().items(joi.func()),\n afterRead: joi.array().items(joi.func()),\n afterRefresh: joi.array().items(joi.func()),\n beforeChange: joi.array().items(joi.func()),\n beforeDelete: joi.array().items(joi.func()),\n beforeLogin: joi.array().items(joi.func()),\n beforeOperation: joi.array().items(joi.func()),\n beforeRead: joi.array().items(joi.func()),\n beforeValidate: joi.array().items(joi.func()),\n me: joi.array().items(joi.func()),\n refresh: joi.array().items(joi.func()),\n }),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n timestamps: joi.boolean(),\n typescript: joi.object().keys({\n interface: joi.string(),\n }),\n upload: joi.alternatives().try(\n joi.object({\n adapter: joi.string(),\n adminThumbnail: joi.alternatives().try(joi.string(), componentSchema),\n crop: joi.bool(),\n disableLocalStorage: joi.bool(),\n externalFileHeaderFilter: joi.func(),\n filesRequiredOnCreate: joi.bool(),\n focalPoint: joi.bool(),\n formatOptions: joi.object().keys({\n format: joi.string(),\n options: joi.object(),\n }),\n handlers: joi.array().items(joi.func()),\n imageSizes: joi.array().items(\n joi\n .object()\n .keys({\n name: joi.string(),\n crop: joi.string(), // TODO: add further specificity with joi.xor\n height: joi.number().integer().allow(null),\n width: joi.number().integer().allow(null),\n })\n .unknown(),\n ),\n mimeTypes: joi.array().items(joi.string()),\n modifyResponseHeaders: joi.func(),\n resizeOptions: joi\n .object()\n .keys({\n background: joi.string(),\n fastShrinkOnLoad: joi.bool(),\n fit: joi.string(),\n height: joi.number().allow(null),\n kernel: joi.string(),\n position: joi.alternatives().try(joi.string(), joi.number()),\n width: joi.number().allow(null),\n withoutEnlargement: joi.bool(),\n })\n .allow(null),\n staticDir: joi.string(),\n tempFileDir: joi.string(),\n trimOptions: joi.alternatives().try(\n joi.object().keys({\n format: joi.string(),\n options: joi.object(),\n }),\n joi.string(),\n joi.number(),\n ),\n useTempFiles: joi.bool(),\n }),\n joi.boolean(),\n ),\n versions: joi.alternatives().try(\n joi.object({\n drafts: joi.alternatives().try(\n joi.object({\n autosave: joi.alternatives().try(\n joi.boolean(),\n joi.object({\n interval: joi.number(),\n }),\n ),\n validate: joi.boolean(),\n }),\n joi.boolean(),\n ),\n maxPerDoc: joi.number(),\n }),\n joi.boolean(),\n ),\n})\n\nexport default collectionSchema\n"],"names":["joi","endpointsSchema","componentSchema","customViewSchema","livePreviewSchema","openGraphSchema","collectionSchema","object","keys","slug","string","required","access","admin","func","create","delete","read","readVersions","unlock","update","components","afterList","array","items","afterListTable","beforeList","beforeListTable","edit","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Upload","views","Edit","alternatives","try","API","Default","LivePreview","Version","Versions","List","Component","actions","custom","pattern","any","defaultColumns","description","enableRichTextLink","boolean","enableRichTextRelationship","group","hidden","hideAPIURL","bool","listSearchableFields","livePreview","meta","openGraph","pagination","defaultLimit","number","limits","preview","useAsTitle","auth","cookies","domain","sameSite","secure","depth","disableLocalStrategy","valid","forgotPassword","generateEmailHTML","generateEmailSubject","lockTime","maxLoginAttempts","removeTokenFromResponses","strategies","name","authenticate","tokenExpiration","useAPIKey","verify","dbName","defaultSort","disableDuplicate","endpoints","fields","graphQL","pluralName","singularName","hooks","afterChange","afterDelete","afterForgotPassword","afterLogin","afterLogout","afterMe","afterOperation","afterRead","afterRefresh","beforeChange","beforeDelete","beforeLogin","beforeOperation","beforeRead","beforeValidate","me","refresh","labels","plural","singular","timestamps","typescript","interface","upload","adapter","adminThumbnail","crop","disableLocalStorage","externalFileHeaderFilter","filesRequiredOnCreate","focalPoint","formatOptions","format","options","handlers","imageSizes","height","integer","allow","width","unknown","mimeTypes","modifyResponseHeaders","resizeOptions","background","fastShrinkOnLoad","fit","kernel","position","withoutEnlargement","staticDir","tempFileDir","trimOptions","useTempFiles","versions","drafts","autosave","interval","validate","maxPerDoc"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { GraphQLInputObjectType, GraphQLNonNull, GraphQLObjectType } from 'graphql';
|
|
2
2
|
import type { DeepRequired, MarkOptional } from 'ts-essentials';
|
|
3
|
-
import type { CustomPreviewButton, CustomPublishButton, CustomSaveButton, CustomSaveDraftButton } from '../../admin/types.js';
|
|
3
|
+
import type { CustomPreviewButton, CustomPublishButton, CustomSaveButton, CustomSaveDraftButton, CustomUpload } from '../../admin/types.js';
|
|
4
|
+
import type { Arguments as MeArguments } from '../../auth/operations/me.js';
|
|
5
|
+
import type { Arguments as RefreshArguments, Result as RefreshResult } from '../../auth/operations/refresh.js';
|
|
4
6
|
import type { Auth, ClientUser, IncomingAuthType } from '../../auth/types.js';
|
|
5
7
|
import type { Access, CustomComponent, EditConfig, Endpoint, EntityDescription, EntityDescriptionComponent, GeneratePreviewURL, LabelFunction, LivePreviewConfig, OpenGraphConfig } from '../../config/types.js';
|
|
6
8
|
import type { DBIdentifierName } from '../../database/types.js';
|
|
@@ -143,6 +145,20 @@ export type AfterMeHook<T extends TypeWithID = any> = (args: {
|
|
|
143
145
|
req: PayloadRequestWithData;
|
|
144
146
|
response: unknown;
|
|
145
147
|
}) => any;
|
|
148
|
+
export type RefreshHook<T extends TypeWithID = any> = (args: {
|
|
149
|
+
args: RefreshArguments;
|
|
150
|
+
user: T;
|
|
151
|
+
}) => Promise<RefreshResult | void> | (RefreshResult | void);
|
|
152
|
+
export type MeHook<T extends TypeWithID = any> = (args: {
|
|
153
|
+
args: MeArguments;
|
|
154
|
+
user: T;
|
|
155
|
+
}) => ({
|
|
156
|
+
exp: number;
|
|
157
|
+
user: T;
|
|
158
|
+
} | void) | Promise<{
|
|
159
|
+
exp: number;
|
|
160
|
+
user: T;
|
|
161
|
+
} | void>;
|
|
146
162
|
export type AfterRefreshHook<T extends TypeWithID = any> = (args: {
|
|
147
163
|
/** The collection which this hook is being run on */
|
|
148
164
|
collection: SanitizedCollectionConfig;
|
|
@@ -162,10 +178,10 @@ export type CollectionAdminOptions = {
|
|
|
162
178
|
* Custom admin components
|
|
163
179
|
*/
|
|
164
180
|
components?: {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
181
|
+
afterList?: CustomComponent[];
|
|
182
|
+
afterListTable?: CustomComponent[];
|
|
183
|
+
beforeList?: CustomComponent[];
|
|
184
|
+
beforeListTable?: CustomComponent[];
|
|
169
185
|
/**
|
|
170
186
|
* Components within the edit view
|
|
171
187
|
*/
|
|
@@ -191,6 +207,11 @@ export type CollectionAdminOptions = {
|
|
|
191
207
|
* + autosave must be disabled
|
|
192
208
|
*/
|
|
193
209
|
SaveDraftButton?: CustomSaveDraftButton;
|
|
210
|
+
/**
|
|
211
|
+
* Replaces the "Upload" section
|
|
212
|
+
* + upload must be enabled
|
|
213
|
+
*/
|
|
214
|
+
Upload?: CustomUpload;
|
|
194
215
|
};
|
|
195
216
|
views?: {
|
|
196
217
|
/**
|
|
@@ -328,6 +349,19 @@ export type CollectionConfig<TSlug extends CollectionSlug = any> = {
|
|
|
328
349
|
beforeOperation?: BeforeOperationHook[];
|
|
329
350
|
beforeRead?: BeforeReadHook[];
|
|
330
351
|
beforeValidate?: BeforeValidateHook[];
|
|
352
|
+
/**
|
|
353
|
+
/**
|
|
354
|
+
* Use the `me` hook to control the `me` operation.
|
|
355
|
+
* Here, you can optionally instruct the me operation to return early,
|
|
356
|
+
* and skip its default logic.
|
|
357
|
+
*/
|
|
358
|
+
me?: MeHook[];
|
|
359
|
+
/**
|
|
360
|
+
* Use the `refresh` hook to control the refresh operation.
|
|
361
|
+
* Here, you can optionally instruct the refresh operation to return early,
|
|
362
|
+
* and skip its default logic.
|
|
363
|
+
*/
|
|
364
|
+
refresh?: RefreshHook[];
|
|
331
365
|
};
|
|
332
366
|
/**
|
|
333
367
|
* Label configuration
|