@payloadcms/db-mongodb 1.0.0-beta.0
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/connect.d.ts +3 -0
- package/dist/connect.d.ts.map +1 -0
- package/dist/connect.js +63 -0
- package/dist/create.d.ts +3 -0
- package/dist/create.d.ts.map +1 -0
- package/dist/create.js +29 -0
- package/dist/createGlobal.d.ts +3 -0
- package/dist/createGlobal.d.ts.map +1 -0
- package/dist/createGlobal.js +35 -0
- package/dist/createGlobalVersion.d.ts +3 -0
- package/dist/createGlobalVersion.d.ts.map +1 -0
- package/dist/createGlobalVersion.js +58 -0
- package/dist/createVersion.d.ts +3 -0
- package/dist/createVersion.d.ts.map +1 -0
- package/dist/createVersion.js +58 -0
- package/dist/deleteMany.d.ts +3 -0
- package/dist/deleteMany.d.ts.map +1 -0
- package/dist/deleteMany.js +25 -0
- package/dist/deleteOne.d.ts +3 -0
- package/dist/deleteOne.d.ts.map +1 -0
- package/dist/deleteOne.js +33 -0
- package/dist/deleteVersions.d.ts +3 -0
- package/dist/deleteVersions.d.ts.map +1 -0
- package/dist/deleteVersions.js +26 -0
- package/dist/destroy.d.ts +3 -0
- package/dist/destroy.d.ts.map +1 -0
- package/dist/destroy.js +27 -0
- package/dist/find.d.ts +3 -0
- package/dist/find.d.ts.map +1 -0
- package/dist/find.js +71 -0
- package/dist/findGlobal.d.ts +3 -0
- package/dist/findGlobal.d.ts.map +1 -0
- package/dist/findGlobal.js +48 -0
- package/dist/findGlobalVersions.d.ts +3 -0
- package/dist/findGlobalVersions.d.ts.map +1 -0
- package/dist/findGlobalVersions.js +78 -0
- package/dist/findOne.d.ts +3 -0
- package/dist/findOne.d.ts.map +1 -0
- package/dist/findOne.js +40 -0
- package/dist/findVersions.d.ts +3 -0
- package/dist/findVersions.d.ts.map +1 -0
- package/dist/findVersions.js +77 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/init.d.ts +3 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +98 -0
- package/dist/mock.js +13 -0
- package/dist/models/buildCollectionSchema.d.ts +6 -0
- package/dist/models/buildCollectionSchema.d.ts.map +1 -0
- package/dist/models/buildCollectionSchema.js +51 -0
- package/dist/models/buildGlobalModel.d.ts +4 -0
- package/dist/models/buildGlobalModel.d.ts.map +1 -0
- package/dist/models/buildGlobalModel.js +41 -0
- package/dist/models/buildSchema.d.ts +14 -0
- package/dist/models/buildSchema.d.ts.map +1 -0
- package/dist/models/buildSchema.js +438 -0
- package/dist/queries/buildAndOrConditions.d.ts +11 -0
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -0
- package/dist/queries/buildAndOrConditions.js +37 -0
- package/dist/queries/buildQuery.d.ts +15 -0
- package/dist/queries/buildQuery.d.ts.map +1 -0
- package/dist/queries/buildQuery.js +49 -0
- package/dist/queries/buildSearchParams.d.ts +21 -0
- package/dist/queries/buildSearchParams.d.ts.map +1 -0
- package/dist/queries/buildSearchParams.js +219 -0
- package/dist/queries/buildSortParam.d.ts +18 -0
- package/dist/queries/buildSortParam.d.ts.map +1 -0
- package/dist/queries/buildSortParam.js +42 -0
- package/dist/queries/getLocalizedSortProperty.d.ts +12 -0
- package/dist/queries/getLocalizedSortProperty.d.ts.map +1 -0
- package/dist/queries/getLocalizedSortProperty.js +76 -0
- package/dist/queries/getLocalizedSortProperty.spec.js +195 -0
- package/dist/queries/mock.js +3 -0
- package/dist/queries/operatorMap.d.ts +16 -0
- package/dist/queries/operatorMap.d.ts.map +1 -0
- package/dist/queries/operatorMap.js +27 -0
- package/dist/queries/parseParams.d.ts +12 -0
- package/dist/queries/parseParams.d.ts.map +1 -0
- package/dist/queries/parseParams.js +80 -0
- package/dist/queries/sanitizeQueryValue.d.ts +11 -0
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -0
- package/dist/queries/sanitizeQueryValue.js +128 -0
- package/dist/queryDrafts.d.ts +3 -0
- package/dist/queryDrafts.d.ts.map +1 -0
- package/dist/queryDrafts.js +82 -0
- package/dist/testCredentials.d.ts +8 -0
- package/dist/testCredentials.d.ts.map +1 -0
- package/dist/testCredentials.js +30 -0
- package/dist/transactions/beginTransaction.d.ts +3 -0
- package/dist/transactions/beginTransaction.d.ts.map +1 -0
- package/dist/transactions/beginTransaction.js +38 -0
- package/dist/transactions/commitTransaction.d.ts +3 -0
- package/dist/transactions/commitTransaction.d.ts.map +1 -0
- package/dist/transactions/commitTransaction.js +24 -0
- package/dist/transactions/rollbackTransaction.d.ts +3 -0
- package/dist/transactions/rollbackTransaction.d.ts.map +1 -0
- package/dist/transactions/rollbackTransaction.js +21 -0
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/updateGlobal.d.ts +3 -0
- package/dist/updateGlobal.d.ts.map +1 -0
- package/dist/updateGlobal.js +36 -0
- package/dist/updateGlobalVersion.d.ts +5 -0
- package/dist/updateGlobalVersion.d.ts.map +1 -0
- package/dist/updateGlobalVersion.js +35 -0
- package/dist/updateOne.d.ts +3 -0
- package/dist/updateOne.d.ts.map +1 -0
- package/dist/updateOne.js +55 -0
- package/dist/updateVersion.d.ts +3 -0
- package/dist/updateVersion.d.ts.map +1 -0
- package/dist/updateVersion.js +35 -0
- package/dist/utilities/sanitizeInternalFields.d.ts +3 -0
- package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -0
- package/dist/utilities/sanitizeInternalFields.js +31 -0
- package/dist/webpack.d.ts +3 -0
- package/dist/webpack.d.ts.map +1 -0
- package/dist/webpack.js +30 -0
- package/dist/withSession.d.ts +10 -0
- package/dist/withSession.d.ts.map +1 -0
- package/dist/withSession.js +17 -0
- package/package.json +43 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "buildGlobalModel", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return buildGlobalModel;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = /*#__PURE__*/ _interop_require_default(require("mongoose"));
|
|
12
|
+
const _buildQuery = /*#__PURE__*/ _interop_require_default(require("../queries/buildQuery"));
|
|
13
|
+
const _buildSchema = /*#__PURE__*/ _interop_require_default(require("./buildSchema"));
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const buildGlobalModel = (config)=>{
|
|
20
|
+
if (config.globals && config.globals.length > 0) {
|
|
21
|
+
const globalsSchema = new _mongoose.default.Schema({}, {
|
|
22
|
+
discriminatorKey: 'globalType',
|
|
23
|
+
minimize: false,
|
|
24
|
+
timestamps: true
|
|
25
|
+
});
|
|
26
|
+
globalsSchema.plugin((0, _buildQuery.default)());
|
|
27
|
+
const Globals = _mongoose.default.model('globals', globalsSchema, 'globals');
|
|
28
|
+
Object.values(config.globals).forEach((globalConfig)=>{
|
|
29
|
+
const globalSchema = (0, _buildSchema.default)(config, globalConfig.fields, {
|
|
30
|
+
options: {
|
|
31
|
+
minimize: false
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
Globals.discriminator(globalConfig.slug, globalSchema);
|
|
35
|
+
});
|
|
36
|
+
return Globals;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvYnVpbGRHbG9iYWxNb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbmZpZyB9IGZyb20gJ3BheWxvYWQvY29uZmlnJ1xuXG5pbXBvcnQgbW9uZ29vc2UgZnJvbSAnbW9uZ29vc2UnXG5cbmltcG9ydCB0eXBlIHsgR2xvYmFsTW9kZWwgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IGdldEJ1aWxkUXVlcnlQbHVnaW4gZnJvbSAnLi4vcXVlcmllcy9idWlsZFF1ZXJ5J1xuaW1wb3J0IGJ1aWxkU2NoZW1hIGZyb20gJy4vYnVpbGRTY2hlbWEnXG5cbmV4cG9ydCBjb25zdCBidWlsZEdsb2JhbE1vZGVsID0gKGNvbmZpZzogU2FuaXRpemVkQ29uZmlnKTogR2xvYmFsTW9kZWwgfCBudWxsID0+IHtcbiAgaWYgKGNvbmZpZy5nbG9iYWxzICYmIGNvbmZpZy5nbG9iYWxzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBnbG9iYWxzU2NoZW1hID0gbmV3IG1vbmdvb3NlLlNjaGVtYShcbiAgICAgIHt9LFxuICAgICAgeyBkaXNjcmltaW5hdG9yS2V5OiAnZ2xvYmFsVHlwZScsIG1pbmltaXplOiBmYWxzZSwgdGltZXN0YW1wczogdHJ1ZSB9LFxuICAgIClcblxuICAgIGdsb2JhbHNTY2hlbWEucGx1Z2luKGdldEJ1aWxkUXVlcnlQbHVnaW4oKSlcblxuICAgIGNvbnN0IEdsb2JhbHMgPSBtb25nb29zZS5tb2RlbCgnZ2xvYmFscycsIGdsb2JhbHNTY2hlbWEsICdnbG9iYWxzJykgYXMgdW5rbm93biBhcyBHbG9iYWxNb2RlbFxuXG4gICAgT2JqZWN0LnZhbHVlcyhjb25maWcuZ2xvYmFscykuZm9yRWFjaCgoZ2xvYmFsQ29uZmlnKSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY2hlbWEgPSBidWlsZFNjaGVtYShjb25maWcsIGdsb2JhbENvbmZpZy5maWVsZHMsIHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltaXplOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBHbG9iYWxzLmRpc2NyaW1pbmF0b3IoZ2xvYmFsQ29uZmlnLnNsdWcsIGdsb2JhbFNjaGVtYSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIEdsb2JhbHNcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG4iXSwibmFtZXMiOlsiYnVpbGRHbG9iYWxNb2RlbCIsImNvbmZpZyIsImdsb2JhbHMiLCJsZW5ndGgiLCJnbG9iYWxzU2NoZW1hIiwibW9uZ29vc2UiLCJTY2hlbWEiLCJkaXNjcmltaW5hdG9yS2V5IiwibWluaW1pemUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiZ2V0QnVpbGRRdWVyeVBsdWdpbiIsIkdsb2JhbHMiLCJtb2RlbCIsIk9iamVjdCIsInZhbHVlcyIsImZvckVhY2giLCJnbG9iYWxDb25maWciLCJnbG9iYWxTY2hlbWEiLCJidWlsZFNjaGVtYSIsImZpZWxkcyIsIm9wdGlvbnMiLCJkaXNjcmltaW5hdG9yIiwic2x1ZyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFTYUE7OztlQUFBQTs7O2lFQVBRO21FQUlXO29FQUNSOzs7Ozs7QUFFakIsTUFBTUEsbUJBQW1CLENBQUNDO0lBQy9CLElBQUlBLE9BQU9DLE9BQU8sSUFBSUQsT0FBT0MsT0FBTyxDQUFDQyxNQUFNLEdBQUcsR0FBRztRQUMvQyxNQUFNQyxnQkFBZ0IsSUFBSUMsaUJBQVEsQ0FBQ0MsTUFBTSxDQUN2QyxDQUFDLEdBQ0Q7WUFBRUMsa0JBQWtCO1lBQWNDLFVBQVU7WUFBT0MsWUFBWTtRQUFLO1FBR3RFTCxjQUFjTSxNQUFNLENBQUNDLElBQUFBLG1CQUFtQjtRQUV4QyxNQUFNQyxVQUFVUCxpQkFBUSxDQUFDUSxLQUFLLENBQUMsV0FBV1QsZUFBZTtRQUV6RFUsT0FBT0MsTUFBTSxDQUFDZCxPQUFPQyxPQUFPLEVBQUVjLE9BQU8sQ0FBQyxDQUFDQztZQUNyQyxNQUFNQyxlQUFlQyxJQUFBQSxvQkFBVyxFQUFDbEIsUUFBUWdCLGFBQWFHLE1BQU0sRUFBRTtnQkFDNURDLFNBQVM7b0JBQ1BiLFVBQVU7Z0JBQ1o7WUFDRjtZQUNBSSxRQUFRVSxhQUFhLENBQUNMLGFBQWFNLElBQUksRUFBRUw7UUFDM0M7UUFFQSxPQUFPTjtJQUNUO0lBRUEsT0FBTztBQUNUIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SchemaOptions } from 'mongoose';
|
|
2
|
+
import type { SanitizedConfig } from 'payload/config';
|
|
3
|
+
import type { Field } from 'payload/types';
|
|
4
|
+
import { Schema } from 'mongoose';
|
|
5
|
+
export type BuildSchemaOptions = {
|
|
6
|
+
allowIDField?: boolean;
|
|
7
|
+
disableUnique?: boolean;
|
|
8
|
+
draftsEnabled?: boolean;
|
|
9
|
+
indexSortableFields?: boolean;
|
|
10
|
+
options?: SchemaOptions;
|
|
11
|
+
};
|
|
12
|
+
declare const buildSchema: (config: SanitizedConfig, configFields: Field[], buildSchemaOptions?: BuildSchemaOptions) => Schema;
|
|
13
|
+
export default buildSchema;
|
|
14
|
+
//# sourceMappingURL=buildSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildSchema.d.ts","sourceRoot":"","sources":["../../src/models/buildSchema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,aAAa,EAAqB,MAAM,UAAU,CAAA;AAC9E,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,gBAAgB,CAAA;AAClF,OAAO,KAAK,EASV,KAAK,EAcN,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAQjC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAkDD,QAAA,MAAM,WAAW,WACP,eAAe,gBACT,KAAK,EAAE,uBACD,kBAAkB,KACrC,MA+BF,CAAA;AAscD,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */ /* eslint-disable class-methods-use-this */ /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable no-use-before-define */ "use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = require("mongoose");
|
|
12
|
+
const _types = require("payload/types");
|
|
13
|
+
const formatBaseSchema = (field, buildSchemaOptions)=>{
|
|
14
|
+
const { disableUnique, draftsEnabled, indexSortableFields } = buildSchemaOptions;
|
|
15
|
+
const schema = {
|
|
16
|
+
index: field.index || !disableUnique && field.unique || indexSortableFields || false,
|
|
17
|
+
required: false,
|
|
18
|
+
unique: !disableUnique && field.unique || false
|
|
19
|
+
};
|
|
20
|
+
if (schema.unique && (field.localized || draftsEnabled)) {
|
|
21
|
+
schema.sparse = true;
|
|
22
|
+
}
|
|
23
|
+
if (field.hidden) {
|
|
24
|
+
schema.hidden = true;
|
|
25
|
+
}
|
|
26
|
+
return schema;
|
|
27
|
+
};
|
|
28
|
+
const localizeSchema = (entity, schema, localization)=>{
|
|
29
|
+
if ((0, _types.fieldIsLocalized)(entity) && localization && Array.isArray(localization.locales)) {
|
|
30
|
+
return {
|
|
31
|
+
localized: true,
|
|
32
|
+
type: localization.localeCodes.reduce((localeSchema, locale)=>({
|
|
33
|
+
...localeSchema,
|
|
34
|
+
[locale]: schema
|
|
35
|
+
}), {
|
|
36
|
+
_id: false
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return schema;
|
|
41
|
+
};
|
|
42
|
+
const buildSchema = (config, configFields, buildSchemaOptions = {})=>{
|
|
43
|
+
const { allowIDField, options } = buildSchemaOptions;
|
|
44
|
+
let fields = {};
|
|
45
|
+
let schemaFields = configFields;
|
|
46
|
+
if (!allowIDField) {
|
|
47
|
+
const idField = schemaFields.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
|
|
48
|
+
if (idField) {
|
|
49
|
+
fields = {
|
|
50
|
+
_id: idField.type === 'number' ? Number : String
|
|
51
|
+
};
|
|
52
|
+
schemaFields = schemaFields.filter((field)=>!((0, _types.fieldAffectsData)(field) && field.name === 'id'));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const schema = new _mongoose.Schema(fields, options);
|
|
56
|
+
schemaFields.forEach((field)=>{
|
|
57
|
+
if (!(0, _types.fieldIsPresentationalOnly)(field)) {
|
|
58
|
+
const addFieldSchema = fieldToSchemaMap[field.type];
|
|
59
|
+
if (addFieldSchema) {
|
|
60
|
+
addFieldSchema(field, schema, config, buildSchemaOptions);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return schema;
|
|
65
|
+
};
|
|
66
|
+
const fieldToSchemaMap = {
|
|
67
|
+
array: (field, schema, config, buildSchemaOptions)=>{
|
|
68
|
+
const baseSchema = {
|
|
69
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
70
|
+
default: undefined,
|
|
71
|
+
type: [
|
|
72
|
+
buildSchema(config, field.fields, {
|
|
73
|
+
allowIDField: true,
|
|
74
|
+
disableUnique: buildSchemaOptions.disableUnique,
|
|
75
|
+
draftsEnabled: buildSchemaOptions.draftsEnabled,
|
|
76
|
+
options: {
|
|
77
|
+
_id: false,
|
|
78
|
+
id: false,
|
|
79
|
+
minimize: false
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
]
|
|
83
|
+
};
|
|
84
|
+
schema.add({
|
|
85
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
blocks: (field, schema, config, buildSchemaOptions)=>{
|
|
89
|
+
const fieldSchema = {
|
|
90
|
+
default: undefined,
|
|
91
|
+
type: [
|
|
92
|
+
new _mongoose.Schema({}, {
|
|
93
|
+
_id: false,
|
|
94
|
+
discriminatorKey: 'blockType'
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
};
|
|
98
|
+
schema.add({
|
|
99
|
+
[field.name]: localizeSchema(field, fieldSchema, config.localization)
|
|
100
|
+
});
|
|
101
|
+
field.blocks.forEach((blockItem)=>{
|
|
102
|
+
const blockSchema = new _mongoose.Schema({}, {
|
|
103
|
+
_id: false,
|
|
104
|
+
id: false
|
|
105
|
+
});
|
|
106
|
+
blockItem.fields.forEach((blockField)=>{
|
|
107
|
+
const addFieldSchema = fieldToSchemaMap[blockField.type];
|
|
108
|
+
if (addFieldSchema) {
|
|
109
|
+
addFieldSchema(blockField, blockSchema, config, buildSchemaOptions);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
if (field.localized && config.localization) {
|
|
113
|
+
config.localization.localeCodes.forEach((localeCode)=>{
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
115
|
+
// @ts-ignore Possible incorrect typing in mongoose types, this works
|
|
116
|
+
schema.path(`${field.name}.${localeCode}`).discriminator(blockItem.slug, blockSchema);
|
|
117
|
+
});
|
|
118
|
+
} else {
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
120
|
+
// @ts-ignore Possible incorrect typing in mongoose types, this works
|
|
121
|
+
schema.path(field.name).discriminator(blockItem.slug, blockSchema);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
checkbox: (field, schema, config, buildSchemaOptions)=>{
|
|
126
|
+
const baseSchema = {
|
|
127
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
128
|
+
type: Boolean
|
|
129
|
+
};
|
|
130
|
+
schema.add({
|
|
131
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
code: (field, schema, config, buildSchemaOptions)=>{
|
|
135
|
+
const baseSchema = {
|
|
136
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
137
|
+
type: String
|
|
138
|
+
};
|
|
139
|
+
schema.add({
|
|
140
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
141
|
+
});
|
|
142
|
+
},
|
|
143
|
+
collapsible: (field, schema, config, buildSchemaOptions)=>{
|
|
144
|
+
field.fields.forEach((subField)=>{
|
|
145
|
+
const addFieldSchema = fieldToSchemaMap[subField.type];
|
|
146
|
+
if (addFieldSchema) {
|
|
147
|
+
addFieldSchema(subField, schema, config, buildSchemaOptions);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
},
|
|
151
|
+
date: (field, schema, config, buildSchemaOptions)=>{
|
|
152
|
+
const baseSchema = {
|
|
153
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
154
|
+
type: Date
|
|
155
|
+
};
|
|
156
|
+
schema.add({
|
|
157
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
158
|
+
});
|
|
159
|
+
},
|
|
160
|
+
email: (field, schema, config, buildSchemaOptions)=>{
|
|
161
|
+
const baseSchema = {
|
|
162
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
163
|
+
type: String
|
|
164
|
+
};
|
|
165
|
+
schema.add({
|
|
166
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
167
|
+
});
|
|
168
|
+
},
|
|
169
|
+
group: (field, schema, config, buildSchemaOptions)=>{
|
|
170
|
+
const formattedBaseSchema = formatBaseSchema(field, buildSchemaOptions);
|
|
171
|
+
// carry indexSortableFields through to versions if drafts enabled
|
|
172
|
+
const indexSortableFields = buildSchemaOptions.indexSortableFields && field.name === 'version' && buildSchemaOptions.draftsEnabled;
|
|
173
|
+
const baseSchema = {
|
|
174
|
+
...formattedBaseSchema,
|
|
175
|
+
type: buildSchema(config, field.fields, {
|
|
176
|
+
disableUnique: buildSchemaOptions.disableUnique,
|
|
177
|
+
draftsEnabled: buildSchemaOptions.draftsEnabled,
|
|
178
|
+
indexSortableFields,
|
|
179
|
+
options: {
|
|
180
|
+
_id: false,
|
|
181
|
+
id: false,
|
|
182
|
+
minimize: false
|
|
183
|
+
}
|
|
184
|
+
})
|
|
185
|
+
};
|
|
186
|
+
schema.add({
|
|
187
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
188
|
+
});
|
|
189
|
+
},
|
|
190
|
+
json: (field, schema, config, buildSchemaOptions)=>{
|
|
191
|
+
const baseSchema = {
|
|
192
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
193
|
+
type: _mongoose.Schema.Types.Mixed
|
|
194
|
+
};
|
|
195
|
+
schema.add({
|
|
196
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
number: (field, schema, config, buildSchemaOptions)=>{
|
|
200
|
+
const baseSchema = {
|
|
201
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
202
|
+
type: field.hasMany ? [
|
|
203
|
+
Number
|
|
204
|
+
] : Number
|
|
205
|
+
};
|
|
206
|
+
schema.add({
|
|
207
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
point: (field, schema, config, buildSchemaOptions)=>{
|
|
211
|
+
const baseSchema = {
|
|
212
|
+
coordinates: {
|
|
213
|
+
default: field.defaultValue || undefined,
|
|
214
|
+
required: false,
|
|
215
|
+
type: [
|
|
216
|
+
Number
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
type: {
|
|
220
|
+
enum: [
|
|
221
|
+
'Point'
|
|
222
|
+
],
|
|
223
|
+
type: String
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
if (buildSchemaOptions.disableUnique && field.unique && field.localized) {
|
|
227
|
+
baseSchema.coordinates.sparse = true;
|
|
228
|
+
}
|
|
229
|
+
schema.add({
|
|
230
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
231
|
+
});
|
|
232
|
+
if (field.index === true || field.index === undefined) {
|
|
233
|
+
const indexOptions = {};
|
|
234
|
+
if (!buildSchemaOptions.disableUnique && field.unique) {
|
|
235
|
+
indexOptions.sparse = true;
|
|
236
|
+
indexOptions.unique = true;
|
|
237
|
+
}
|
|
238
|
+
if (field.localized && config.localization) {
|
|
239
|
+
config.localization.locales.forEach((locale)=>{
|
|
240
|
+
schema.index({
|
|
241
|
+
[`${field.name}.${locale}`]: '2dsphere'
|
|
242
|
+
}, indexOptions);
|
|
243
|
+
});
|
|
244
|
+
} else {
|
|
245
|
+
schema.index({
|
|
246
|
+
[field.name]: '2dsphere'
|
|
247
|
+
}, indexOptions);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
radio: (field, schema, config, buildSchemaOptions)=>{
|
|
252
|
+
const baseSchema = {
|
|
253
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
254
|
+
enum: field.options.map((option)=>{
|
|
255
|
+
if (typeof option === 'object') return option.value;
|
|
256
|
+
return option;
|
|
257
|
+
}),
|
|
258
|
+
type: String
|
|
259
|
+
};
|
|
260
|
+
schema.add({
|
|
261
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
262
|
+
});
|
|
263
|
+
},
|
|
264
|
+
relationship: (field, schema, config, buildSchemaOptions)=>{
|
|
265
|
+
const hasManyRelations = Array.isArray(field.relationTo);
|
|
266
|
+
let schemaToReturn = {};
|
|
267
|
+
if (field.localized && config.localization) {
|
|
268
|
+
schemaToReturn = {
|
|
269
|
+
localized: true,
|
|
270
|
+
type: config.localization.localeCodes.reduce((locales, locale)=>{
|
|
271
|
+
let localeSchema = {};
|
|
272
|
+
if (hasManyRelations) {
|
|
273
|
+
localeSchema = {
|
|
274
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
275
|
+
_id: false,
|
|
276
|
+
relationTo: {
|
|
277
|
+
enum: field.relationTo,
|
|
278
|
+
type: String
|
|
279
|
+
},
|
|
280
|
+
type: _mongoose.Schema.Types.Mixed,
|
|
281
|
+
value: {
|
|
282
|
+
refPath: `${field.name}.${locale}.relationTo`,
|
|
283
|
+
type: _mongoose.Schema.Types.Mixed
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
} else {
|
|
287
|
+
localeSchema = {
|
|
288
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
289
|
+
ref: field.relationTo,
|
|
290
|
+
type: _mongoose.Schema.Types.Mixed
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
...locales,
|
|
295
|
+
[locale]: field.hasMany ? {
|
|
296
|
+
default: undefined,
|
|
297
|
+
type: [
|
|
298
|
+
localeSchema
|
|
299
|
+
]
|
|
300
|
+
} : localeSchema
|
|
301
|
+
};
|
|
302
|
+
}, {})
|
|
303
|
+
};
|
|
304
|
+
} else if (hasManyRelations) {
|
|
305
|
+
schemaToReturn = {
|
|
306
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
307
|
+
_id: false,
|
|
308
|
+
relationTo: {
|
|
309
|
+
enum: field.relationTo,
|
|
310
|
+
type: String
|
|
311
|
+
},
|
|
312
|
+
type: _mongoose.Schema.Types.Mixed,
|
|
313
|
+
value: {
|
|
314
|
+
refPath: `${field.name}.relationTo`,
|
|
315
|
+
type: _mongoose.Schema.Types.Mixed
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
if (field.hasMany) {
|
|
319
|
+
schemaToReturn = {
|
|
320
|
+
default: undefined,
|
|
321
|
+
type: [
|
|
322
|
+
schemaToReturn
|
|
323
|
+
]
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
} else {
|
|
327
|
+
schemaToReturn = {
|
|
328
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
329
|
+
ref: field.relationTo,
|
|
330
|
+
type: _mongoose.Schema.Types.Mixed
|
|
331
|
+
};
|
|
332
|
+
if (field.hasMany) {
|
|
333
|
+
schemaToReturn = {
|
|
334
|
+
default: undefined,
|
|
335
|
+
type: [
|
|
336
|
+
schemaToReturn
|
|
337
|
+
]
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
schema.add({
|
|
342
|
+
[field.name]: schemaToReturn
|
|
343
|
+
});
|
|
344
|
+
},
|
|
345
|
+
richText: (field, schema, config, buildSchemaOptions)=>{
|
|
346
|
+
const baseSchema = {
|
|
347
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
348
|
+
type: _mongoose.Schema.Types.Mixed
|
|
349
|
+
};
|
|
350
|
+
schema.add({
|
|
351
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
352
|
+
});
|
|
353
|
+
},
|
|
354
|
+
row: (field, schema, config, buildSchemaOptions)=>{
|
|
355
|
+
field.fields.forEach((subField)=>{
|
|
356
|
+
const addFieldSchema = fieldToSchemaMap[subField.type];
|
|
357
|
+
if (addFieldSchema) {
|
|
358
|
+
addFieldSchema(subField, schema, config, buildSchemaOptions);
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
},
|
|
362
|
+
select: (field, schema, config, buildSchemaOptions)=>{
|
|
363
|
+
const baseSchema = {
|
|
364
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
365
|
+
enum: field.options.map((option)=>{
|
|
366
|
+
if (typeof option === 'object') return option.value;
|
|
367
|
+
return option;
|
|
368
|
+
}),
|
|
369
|
+
type: String
|
|
370
|
+
};
|
|
371
|
+
if (buildSchemaOptions.draftsEnabled || !field.required) {
|
|
372
|
+
baseSchema.enum.push(null);
|
|
373
|
+
}
|
|
374
|
+
schema.add({
|
|
375
|
+
[field.name]: localizeSchema(field, field.hasMany ? [
|
|
376
|
+
baseSchema
|
|
377
|
+
] : baseSchema, config.localization)
|
|
378
|
+
});
|
|
379
|
+
},
|
|
380
|
+
tabs: (field, schema, config, buildSchemaOptions)=>{
|
|
381
|
+
field.tabs.forEach((tab)=>{
|
|
382
|
+
if ((0, _types.tabHasName)(tab)) {
|
|
383
|
+
const baseSchema = {
|
|
384
|
+
type: buildSchema(config, tab.fields, {
|
|
385
|
+
disableUnique: buildSchemaOptions.disableUnique,
|
|
386
|
+
draftsEnabled: buildSchemaOptions.draftsEnabled,
|
|
387
|
+
options: {
|
|
388
|
+
_id: false,
|
|
389
|
+
id: false,
|
|
390
|
+
minimize: false
|
|
391
|
+
}
|
|
392
|
+
})
|
|
393
|
+
};
|
|
394
|
+
schema.add({
|
|
395
|
+
[tab.name]: localizeSchema(tab, baseSchema, config.localization)
|
|
396
|
+
});
|
|
397
|
+
} else {
|
|
398
|
+
tab.fields.forEach((subField)=>{
|
|
399
|
+
const addFieldSchema = fieldToSchemaMap[subField.type];
|
|
400
|
+
if (addFieldSchema) {
|
|
401
|
+
addFieldSchema(subField, schema, config, buildSchemaOptions);
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
},
|
|
407
|
+
text: (field, schema, config, buildSchemaOptions)=>{
|
|
408
|
+
const baseSchema = {
|
|
409
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
410
|
+
type: String
|
|
411
|
+
};
|
|
412
|
+
schema.add({
|
|
413
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
414
|
+
});
|
|
415
|
+
},
|
|
416
|
+
textarea: (field, schema, config, buildSchemaOptions)=>{
|
|
417
|
+
const baseSchema = {
|
|
418
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
419
|
+
type: String
|
|
420
|
+
};
|
|
421
|
+
schema.add({
|
|
422
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
423
|
+
});
|
|
424
|
+
},
|
|
425
|
+
upload: (field, schema, config, buildSchemaOptions)=>{
|
|
426
|
+
const baseSchema = {
|
|
427
|
+
...formatBaseSchema(field, buildSchemaOptions),
|
|
428
|
+
ref: field.relationTo,
|
|
429
|
+
type: _mongoose.Schema.Types.Mixed
|
|
430
|
+
};
|
|
431
|
+
schema.add({
|
|
432
|
+
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
const _default = buildSchema;
|
|
437
|
+
|
|
438
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvYnVpbGRTY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5pbXBvcnQgdHlwZSB7IEluZGV4T3B0aW9ucywgU2NoZW1hT3B0aW9ucywgU2NoZW1hVHlwZU9wdGlvbnMgfSBmcm9tICdtb25nb29zZSdcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnLCBTYW5pdGl6ZWRMb2NhbGl6YXRpb25Db25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHtcbiAgQXJyYXlGaWVsZCxcbiAgQmxvY2ssXG4gIEJsb2NrRmllbGQsXG4gIENoZWNrYm94RmllbGQsXG4gIENvZGVGaWVsZCxcbiAgQ29sbGFwc2libGVGaWVsZCxcbiAgRGF0ZUZpZWxkLFxuICBFbWFpbEZpZWxkLFxuICBGaWVsZCxcbiAgR3JvdXBGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJpY2hUZXh0RmllbGQsXG4gIFJvd0ZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGFic0ZpZWxkLFxuICBUZXh0RmllbGQsXG4gIFRleHRhcmVhRmllbGQsXG4gIFVwbG9hZEZpZWxkLFxufSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZEFmZmVjdGluZ0RhdGEsIE5vblByZXNlbnRhdGlvbmFsRmllbGQsIFRhYiwgVW5uYW1lZFRhYiB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ21vbmdvb3NlJ1xuaW1wb3J0IHtcbiAgZmllbGRBZmZlY3RzRGF0YSxcbiAgZmllbGRJc0xvY2FsaXplZCxcbiAgZmllbGRJc1ByZXNlbnRhdGlvbmFsT25seSxcbiAgdGFiSGFzTmFtZSxcbn0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuZXhwb3J0IHR5cGUgQnVpbGRTY2hlbWFPcHRpb25zID0ge1xuICBhbGxvd0lERmllbGQ/OiBib29sZWFuXG4gIGRpc2FibGVVbmlxdWU/OiBib29sZWFuXG4gIGRyYWZ0c0VuYWJsZWQ/OiBib29sZWFuXG4gIGluZGV4U29ydGFibGVGaWVsZHM/OiBib29sZWFuXG4gIG9wdGlvbnM/OiBTY2hlbWFPcHRpb25zXG59XG5cbnR5cGUgRmllbGRTY2hlbWFHZW5lcmF0b3IgPSAoXG4gIGZpZWxkOiBGaWVsZCxcbiAgc2NoZW1hOiBTY2hlbWEsXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbikgPT4gdm9pZFxuXG5jb25zdCBmb3JtYXRCYXNlU2NoZW1hID0gKGZpZWxkOiBGaWVsZEFmZmVjdGluZ0RhdGEsIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zKSA9PiB7XG4gIGNvbnN0IHsgZGlzYWJsZVVuaXF1ZSwgZHJhZnRzRW5hYmxlZCwgaW5kZXhTb3J0YWJsZUZpZWxkcyB9ID0gYnVpbGRTY2hlbWFPcHRpb25zXG4gIGNvbnN0IHNjaGVtYTogU2NoZW1hVHlwZU9wdGlvbnM8dW5rbm93bj4gPSB7XG4gICAgaW5kZXg6IGZpZWxkLmluZGV4IHx8ICghZGlzYWJsZVVuaXF1ZSAmJiBmaWVsZC51bmlxdWUpIHx8IGluZGV4U29ydGFibGVGaWVsZHMgfHwgZmFsc2UsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHVuaXF1ZTogKCFkaXNhYmxlVW5pcXVlICYmIGZpZWxkLnVuaXF1ZSkgfHwgZmFsc2UsXG4gIH1cblxuICBpZiAoc2NoZW1hLnVuaXF1ZSAmJiAoZmllbGQubG9jYWxpemVkIHx8IGRyYWZ0c0VuYWJsZWQpKSB7XG4gICAgc2NoZW1hLnNwYXJzZSA9IHRydWVcbiAgfVxuXG4gIGlmIChmaWVsZC5oaWRkZW4pIHtcbiAgICBzY2hlbWEuaGlkZGVuID0gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5jb25zdCBsb2NhbGl6ZVNjaGVtYSA9IChcbiAgZW50aXR5OiBOb25QcmVzZW50YXRpb25hbEZpZWxkIHwgVGFiLFxuICBzY2hlbWEsXG4gIGxvY2FsaXphdGlvbjogU2FuaXRpemVkTG9jYWxpemF0aW9uQ29uZmlnIHwgZmFsc2UsXG4pID0+IHtcbiAgaWYgKGZpZWxkSXNMb2NhbGl6ZWQoZW50aXR5KSAmJiBsb2NhbGl6YXRpb24gJiYgQXJyYXkuaXNBcnJheShsb2NhbGl6YXRpb24ubG9jYWxlcykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxpemVkOiB0cnVlLFxuICAgICAgdHlwZTogbG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLnJlZHVjZShcbiAgICAgICAgKGxvY2FsZVNjaGVtYSwgbG9jYWxlKSA9PiAoe1xuICAgICAgICAgIC4uLmxvY2FsZVNjaGVtYSxcbiAgICAgICAgICBbbG9jYWxlXTogc2NoZW1hLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIF9pZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgIH1cbiAgfVxuICByZXR1cm4gc2NoZW1hXG59XG5cbmNvbnN0IGJ1aWxkU2NoZW1hID0gKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgY29uZmlnRmllbGRzOiBGaWVsZFtdLFxuICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyA9IHt9LFxuKTogU2NoZW1hID0+IHtcbiAgY29uc3QgeyBhbGxvd0lERmllbGQsIG9wdGlvbnMgfSA9IGJ1aWxkU2NoZW1hT3B0aW9uc1xuICBsZXQgZmllbGRzID0ge31cblxuICBsZXQgc2NoZW1hRmllbGRzID0gY29uZmlnRmllbGRzXG5cbiAgaWYgKCFhbGxvd0lERmllbGQpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gc2NoZW1hRmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuICAgIGlmIChpZEZpZWxkKSB7XG4gICAgICBmaWVsZHMgPSB7XG4gICAgICAgIF9pZDogaWRGaWVsZC50eXBlID09PSAnbnVtYmVyJyA/IE51bWJlciA6IFN0cmluZyxcbiAgICAgIH1cbiAgICAgIHNjaGVtYUZpZWxkcyA9IHNjaGVtYUZpZWxkcy5maWx0ZXIoXG4gICAgICAgIChmaWVsZCkgPT4gIShmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb25zdCBzY2hlbWEgPSBuZXcgU2NoZW1hKGZpZWxkcywgb3B0aW9ucylcblxuICBzY2hlbWFGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoIWZpZWxkSXNQcmVzZW50YXRpb25hbE9ubHkoZmllbGQpKSB7XG4gICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW2ZpZWxkLnR5cGVdXG5cbiAgICAgIGlmIChhZGRGaWVsZFNjaGVtYSkge1xuICAgICAgICBhZGRGaWVsZFNjaGVtYShmaWVsZCwgc2NoZW1hLCBjb25maWcsIGJ1aWxkU2NoZW1hT3B0aW9ucylcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5jb25zdCBmaWVsZFRvU2NoZW1hTWFwOiBSZWNvcmQ8c3RyaW5nLCBGaWVsZFNjaGVtYUdlbmVyYXRvcj4gPSB7XG4gIGFycmF5OiAoXG4gICAgZmllbGQ6IEFycmF5RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICkgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgdHlwZTogW1xuICAgICAgICBidWlsZFNjaGVtYShjb25maWcsIGZpZWxkLmZpZWxkcywge1xuICAgICAgICAgIGFsbG93SURGaWVsZDogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlOiBidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBkcmFmdHNFbmFibGVkOiBidWlsZFNjaGVtYU9wdGlvbnMuZHJhZnRzRW5hYmxlZCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICAgICAgaWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWluaW1pemU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIGJsb2NrczogKFxuICAgIGZpZWxkOiBCbG9ja0ZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHtcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIHR5cGU6IFtuZXcgU2NoZW1hKHt9LCB7IF9pZDogZmFsc2UsIGRpc2NyaW1pbmF0b3JLZXk6ICdibG9ja1R5cGUnIH0pXSxcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGZpZWxkU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuXG4gICAgZmllbGQuYmxvY2tzLmZvckVhY2goKGJsb2NrSXRlbTogQmxvY2spID0+IHtcbiAgICAgIGNvbnN0IGJsb2NrU2NoZW1hID0gbmV3IFNjaGVtYSh7fSwgeyBfaWQ6IGZhbHNlLCBpZDogZmFsc2UgfSlcblxuICAgICAgYmxvY2tJdGVtLmZpZWxkcy5mb3JFYWNoKChibG9ja0ZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZEZpZWxkU2NoZW1hOiBGaWVsZFNjaGVtYUdlbmVyYXRvciA9IGZpZWxkVG9TY2hlbWFNYXBbYmxvY2tGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkRmllbGRTY2hlbWEpIHtcbiAgICAgICAgICBhZGRGaWVsZFNjaGVtYShibG9ja0ZpZWxkLCBibG9ja1NjaGVtYSwgY29uZmlnLCBidWlsZFNjaGVtYU9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLmZvckVhY2goKGxvY2FsZUNvZGUpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSBQb3NzaWJsZSBpbmNvcnJlY3QgdHlwaW5nIGluIG1vbmdvb3NlIHR5cGVzLCB0aGlzIHdvcmtzXG4gICAgICAgICAgc2NoZW1hLnBhdGgoYCR7ZmllbGQubmFtZX0uJHtsb2NhbGVDb2RlfWApLmRpc2NyaW1pbmF0b3IoYmxvY2tJdGVtLnNsdWcsIGJsb2NrU2NoZW1hKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvLyBAdHMtaWdub3JlIFBvc3NpYmxlIGluY29ycmVjdCB0eXBpbmcgaW4gbW9uZ29vc2UgdHlwZXMsIHRoaXMgd29ya3NcbiAgICAgICAgc2NoZW1hLnBhdGgoZmllbGQubmFtZSkuZGlzY3JpbWluYXRvcihibG9ja0l0ZW0uc2x1ZywgYmxvY2tTY2hlbWEpXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgY2hlY2tib3g6IChcbiAgICBmaWVsZDogQ2hlY2tib3hGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHsgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSwgdHlwZTogQm9vbGVhbiB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIGNvZGU6IChcbiAgICBmaWVsZDogQ29kZUZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0geyAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLCB0eXBlOiBTdHJpbmcgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBjb2xsYXBzaWJsZTogKFxuICAgIGZpZWxkOiBDb2xsYXBzaWJsZUZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBmaWVsZC5maWVsZHMuZm9yRWFjaCgoc3ViRmllbGQ6IEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG5cbiAgICAgIGlmIChhZGRGaWVsZFNjaGVtYSkge1xuICAgICAgICBhZGRGaWVsZFNjaGVtYShzdWJGaWVsZCwgc2NoZW1hLCBjb25maWcsIGJ1aWxkU2NoZW1hT3B0aW9ucylcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBkYXRlOiAoXG4gICAgZmllbGQ6IERhdGVGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHsgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSwgdHlwZTogRGF0ZSB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIGVtYWlsOiAoXG4gICAgZmllbGQ6IEVtYWlsRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IFN0cmluZyB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIGdyb3VwOiAoXG4gICAgZmllbGQ6IEdyb3VwRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlZEJhc2VTY2hlbWEgPSBmb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpXG5cbiAgICAvLyBjYXJyeSBpbmRleFNvcnRhYmxlRmllbGRzIHRocm91Z2ggdG8gdmVyc2lvbnMgaWYgZHJhZnRzIGVuYWJsZWRcbiAgICBjb25zdCBpbmRleFNvcnRhYmxlRmllbGRzID1cbiAgICAgIGJ1aWxkU2NoZW1hT3B0aW9ucy5pbmRleFNvcnRhYmxlRmllbGRzICYmXG4gICAgICBmaWVsZC5uYW1lID09PSAndmVyc2lvbicgJiZcbiAgICAgIGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkXG5cbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0dGVkQmFzZVNjaGVtYSxcbiAgICAgIHR5cGU6IGJ1aWxkU2NoZW1hKGNvbmZpZywgZmllbGQuZmllbGRzLCB7XG4gICAgICAgIGRpc2FibGVVbmlxdWU6IGJ1aWxkU2NoZW1hT3B0aW9ucy5kaXNhYmxlVW5pcXVlLFxuICAgICAgICBkcmFmdHNFbmFibGVkOiBidWlsZFNjaGVtYU9wdGlvbnMuZHJhZnRzRW5hYmxlZCxcbiAgICAgICAgaW5kZXhTb3J0YWJsZUZpZWxkcyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIF9pZDogZmFsc2UsXG4gICAgICAgICAgaWQ6IGZhbHNlLFxuICAgICAgICAgIG1pbmltaXplOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAganNvbjogKFxuICAgIGZpZWxkOiBKU09ORmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IFNjaGVtYS5UeXBlcy5NaXhlZCB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIG51bWJlcjogKFxuICAgIGZpZWxkOiBOdW1iZXJGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICB0eXBlOiBmaWVsZC5oYXNNYW55ID8gW051bWJlcl0gOiBOdW1iZXIsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBwb2ludDogKFxuICAgIGZpZWxkOiBQb2ludEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hOiBTY2hlbWFUeXBlT3B0aW9uczx1bmtub3duPiA9IHtcbiAgICAgIGNvb3JkaW5hdGVzOiB7XG4gICAgICAgIGRlZmF1bHQ6IGZpZWxkLmRlZmF1bHRWYWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogW051bWJlcl0sXG4gICAgICB9LFxuICAgICAgdHlwZToge1xuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIH0sXG4gICAgfVxuICAgIGlmIChidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSAmJiBmaWVsZC51bmlxdWUgJiYgZmllbGQubG9jYWxpemVkKSB7XG4gICAgICBiYXNlU2NoZW1hLmNvb3JkaW5hdGVzLnNwYXJzZSA9IHRydWVcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG5cbiAgICBpZiAoZmllbGQuaW5kZXggPT09IHRydWUgfHwgZmllbGQuaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5kZXhPcHRpb25zOiBJbmRleE9wdGlvbnMgPSB7fVxuICAgICAgaWYgKCFidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSAmJiBmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgaW5kZXhPcHRpb25zLnNwYXJzZSA9IHRydWVcbiAgICAgICAgaW5kZXhPcHRpb25zLnVuaXF1ZSA9IHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZXMuZm9yRWFjaCgobG9jYWxlKSA9PiB7XG4gICAgICAgICAgc2NoZW1hLmluZGV4KHsgW2Ake2ZpZWxkLm5hbWV9LiR7bG9jYWxlfWBdOiAnMmRzcGhlcmUnIH0sIGluZGV4T3B0aW9ucylcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYS5pbmRleCh7IFtmaWVsZC5uYW1lXTogJzJkc3BoZXJlJyB9LCBpbmRleE9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByYWRpbzogKFxuICAgIGZpZWxkOiBSYWRpb0ZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgIGVudW06IGZpZWxkLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgIH0pLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgcmVsYXRpb25zaGlwOiAoXG4gICAgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApID0+IHtcbiAgICBjb25zdCBoYXNNYW55UmVsYXRpb25zID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKVxuICAgIGxldCBzY2hlbWFUb1JldHVybjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XG5cbiAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICBsb2NhbGl6ZWQ6IHRydWUsXG4gICAgICAgIHR5cGU6IGNvbmZpZy5sb2NhbGl6YXRpb24ubG9jYWxlQ29kZXMucmVkdWNlKChsb2NhbGVzLCBsb2NhbGUpID0+IHtcbiAgICAgICAgICBsZXQgbG9jYWxlU2NoZW1hOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cblxuICAgICAgICAgIGlmIChoYXNNYW55UmVsYXRpb25zKSB7XG4gICAgICAgICAgICBsb2NhbGVTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICAgICAgICAgIF9pZDogZmFsc2UsXG4gICAgICAgICAgICAgIHJlbGF0aW9uVG86IHsgZW51bTogZmllbGQucmVsYXRpb25UbywgdHlwZTogU3RyaW5nIH0sXG4gICAgICAgICAgICAgIHR5cGU6IFNjaGVtYS5UeXBlcy5NaXhlZCxcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICByZWZQYXRoOiBgJHtmaWVsZC5uYW1lfS4ke2xvY2FsZX0ucmVsYXRpb25Ub2AsXG4gICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2NhbGVTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICAgICAgICAgIHJlZjogZmllbGQucmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgdHlwZTogU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5sb2NhbGVzLFxuICAgICAgICAgICAgW2xvY2FsZV06IGZpZWxkLmhhc01hbnkgPyB7IGRlZmF1bHQ6IHVuZGVmaW5lZCwgdHlwZTogW2xvY2FsZVNjaGVtYV0gfSA6IGxvY2FsZVNjaGVtYSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHt9KSxcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhhc01hbnlSZWxhdGlvbnMpIHtcbiAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICByZWxhdGlvblRvOiB7IGVudW06IGZpZWxkLnJlbGF0aW9uVG8sIHR5cGU6IFN0cmluZyB9LFxuICAgICAgICB0eXBlOiBTY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcmVmUGF0aDogYCR7ZmllbGQubmFtZX0ucmVsYXRpb25Ub2AsXG4gICAgICAgICAgdHlwZTogU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgICB9LFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICBzY2hlbWFUb1JldHVybiA9IHtcbiAgICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICAgICAgdHlwZTogW3NjaGVtYVRvUmV0dXJuXSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlbWFUb1JldHVybiA9IHtcbiAgICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgICAgcmVmOiBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICB0eXBlOiBTY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICB0eXBlOiBbc2NoZW1hVG9SZXR1cm5dLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IHNjaGVtYVRvUmV0dXJuLFxuICAgIH0pXG4gIH0sXG4gIHJpY2hUZXh0OiAoXG4gICAgZmllbGQ6IFJpY2hUZXh0RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IFNjaGVtYS5UeXBlcy5NaXhlZCB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIHJvdzogKFxuICAgIGZpZWxkOiBSb3dGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgZmllbGQuZmllbGRzLmZvckVhY2goKHN1YkZpZWxkOiBGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgYWRkRmllbGRTY2hlbWE6IEZpZWxkU2NoZW1hR2VuZXJhdG9yID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuXG4gICAgICBpZiAoYWRkRmllbGRTY2hlbWEpIHtcbiAgICAgICAgYWRkRmllbGRTY2hlbWEoc3ViRmllbGQsIHNjaGVtYSwgY29uZmlnLCBidWlsZFNjaGVtYU9wdGlvbnMpXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgc2VsZWN0OiAoXG4gICAgZmllbGQ6IFNlbGVjdEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgIGVudW06IGZpZWxkLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgIH0pLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH1cblxuICAgIGlmIChidWlsZFNjaGVtYU9wdGlvbnMuZHJhZnRzRW5hYmxlZCB8fCAhZmllbGQucmVxdWlyZWQpIHtcbiAgICAgIGJhc2VTY2hlbWEuZW51bS5wdXNoKG51bGwpXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgZmllbGQuaGFzTWFueSA/IFtiYXNlU2NoZW1hXSA6IGJhc2VTY2hlbWEsXG4gICAgICAgIGNvbmZpZy5sb2NhbGl6YXRpb24sXG4gICAgICApLFxuICAgIH0pXG4gIH0sXG4gIHRhYnM6IChcbiAgICBmaWVsZDogVGFic0ZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBmaWVsZC50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgaWYgKHRhYkhhc05hbWUodGFiKSkge1xuICAgICAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgICAgIHR5cGU6IGJ1aWxkU2NoZW1hKGNvbmZpZywgdGFiLmZpZWxkcywge1xuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZTogYnVpbGRTY2hlbWFPcHRpb25zLmRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBkcmFmdHNFbmFibGVkOiBidWlsZFNjaGVtYU9wdGlvbnMuZHJhZnRzRW5hYmxlZCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgX2lkOiBmYWxzZSxcbiAgICAgICAgICAgICAgaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBtaW5pbWl6ZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG5cbiAgICAgICAgc2NoZW1hLmFkZCh7XG4gICAgICAgICAgW3RhYi5uYW1lXTogbG9jYWxpemVTY2hlbWEodGFiLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYi5maWVsZHMuZm9yRWFjaCgoc3ViRmllbGQ6IEZpZWxkKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWRkRmllbGRTY2hlbWE6IEZpZWxkU2NoZW1hR2VuZXJhdG9yID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuXG4gICAgICAgICAgaWYgKGFkZEZpZWxkU2NoZW1hKSB7XG4gICAgICAgICAgICBhZGRGaWVsZFNjaGVtYShzdWJGaWVsZCwgc2NoZW1hLCBjb25maWcsIGJ1aWxkU2NoZW1hT3B0aW9ucylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgdGV4dDogKFxuICAgIGZpZWxkOiBUZXh0RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IFN0cmluZyB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIHRleHRhcmVhOiAoXG4gICAgZmllbGQ6IFRleHRhcmVhRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IFN0cmluZyB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIHVwbG9hZDogKFxuICAgIGZpZWxkOiBVcGxvYWRGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICByZWY6IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICB0eXBlOiBTY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBidWlsZFNjaGVtYVxuIl0sIm5hbWVzIjpbImZvcm1hdEJhc2VTY2hlbWEiLCJmaWVsZCIsImJ1aWxkU2NoZW1hT3B0aW9ucyIsImRpc2FibGVVbmlxdWUiLCJkcmFmdHNFbmFibGVkIiwiaW5kZXhTb3J0YWJsZUZpZWxkcyIsInNjaGVtYSIsImluZGV4IiwidW5pcXVlIiwicmVxdWlyZWQiLCJsb2NhbGl6ZWQiLCJzcGFyc2UiLCJoaWRkZW4iLCJsb2NhbGl6ZVNjaGVtYSIsImVudGl0eSIsImxvY2FsaXphdGlvbiIsImZpZWxkSXNMb2NhbGl6ZWQiLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGVzIiwidHlwZSIsImxvY2FsZUNvZGVzIiwicmVkdWNlIiwibG9jYWxlU2NoZW1hIiwibG9jYWxlIiwiX2lkIiwiYnVpbGRTY2hlbWEiLCJjb25maWciLCJjb25maWdGaWVsZHMiLCJhbGxvd0lERmllbGQiLCJvcHRpb25zIiwiZmllbGRzIiwic2NoZW1hRmllbGRzIiwiaWRGaWVsZCIsImZpbmQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsIk51bWJlciIsIlN0cmluZyIsImZpbHRlciIsIlNjaGVtYSIsImZvckVhY2giLCJmaWVsZElzUHJlc2VudGF0aW9uYWxPbmx5IiwiYWRkRmllbGRTY2hlbWEiLCJmaWVsZFRvU2NoZW1hTWFwIiwiYXJyYXkiLCJiYXNlU2NoZW1hIiwiZGVmYXVsdCIsInVuZGVmaW5lZCIsImlkIiwibWluaW1pemUiLCJhZGQiLCJibG9ja3MiLCJmaWVsZFNjaGVtYSIsImRpc2NyaW1pbmF0b3JLZXkiLCJibG9ja0l0ZW0iLCJibG9ja1NjaGVtYSIsImJsb2NrRmllbGQiLCJsb2NhbGVDb2RlIiwicGF0aCIsImRpc2NyaW1pbmF0b3IiLCJzbHVnIiwiY2hlY2tib3giLCJCb29sZWFuIiwiY29kZSIsImNvbGxhcHNpYmxlIiwic3ViRmllbGQiLCJkYXRlIiwiRGF0ZSIsImVtYWlsIiwiZ3JvdXAiLCJmb3JtYXR0ZWRCYXNlU2NoZW1hIiwianNvbiIsIlR5cGVzIiwiTWl4ZWQiLCJudW1iZXIiLCJoYXNNYW55IiwicG9pbnQiLCJjb29yZGluYXRlcyIsImRlZmF1bHRWYWx1ZSIsImVudW0iLCJpbmRleE9wdGlvbnMiLCJyYWRpbyIsIm1hcCIsIm9wdGlvbiIsInZhbHVlIiwicmVsYXRpb25zaGlwIiwiaGFzTWFueVJlbGF0aW9ucyIsInJlbGF0aW9uVG8iLCJzY2hlbWFUb1JldHVybiIsInJlZlBhdGgiLCJyZWYiLCJyaWNoVGV4dCIsInJvdyIsInNlbGVjdCIsInB1c2giLCJ0YWJzIiwidGFiIiwidGFiSGFzTmFtZSIsInRleHQiLCJ0ZXh0YXJlYSIsInVwbG9hZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9ELEdBQ3BELHlDQUF5QyxHQUN6QywwREFBMEQsR0FDMUQsdUNBQXVD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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
import type { Field, Where } from 'payload/types';
|
|
3
|
+
export declare function buildAndOrConditions({ collectionSlug, fields, globalSlug, locale, payload, where, }: {
|
|
4
|
+
collectionSlug?: string;
|
|
5
|
+
fields: Field[];
|
|
6
|
+
globalSlug?: string;
|
|
7
|
+
locale?: string;
|
|
8
|
+
payload: Payload;
|
|
9
|
+
where: Where[];
|
|
10
|
+
}): Promise<Record<string, unknown>[]>;
|
|
11
|
+
//# sourceMappingURL=buildAndOrConditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAIjD,wBAAsB,oBAAoB,CAAC,EACzC,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,EAAE,CAAA;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAuBrC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "buildAndOrConditions", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return buildAndOrConditions;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _parseParams = require("./parseParams");
|
|
12
|
+
async function buildAndOrConditions({ collectionSlug, fields, globalSlug, locale, payload, where }) {
|
|
13
|
+
const completedConditions = [];
|
|
14
|
+
// Loop over all AND / OR operations and add them to the AND / OR query param
|
|
15
|
+
// Operations should come through as an array
|
|
16
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
17
|
+
for (const condition of where){
|
|
18
|
+
// If the operation is properly formatted as an object
|
|
19
|
+
if (typeof condition === 'object') {
|
|
20
|
+
// eslint-disable-next-line no-await-in-loop
|
|
21
|
+
const result = await (0, _parseParams.parseParams)({
|
|
22
|
+
collectionSlug,
|
|
23
|
+
fields,
|
|
24
|
+
globalSlug,
|
|
25
|
+
locale,
|
|
26
|
+
payload,
|
|
27
|
+
where: condition
|
|
28
|
+
});
|
|
29
|
+
if (Object.keys(result).length > 0) {
|
|
30
|
+
completedConditions.push(result);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return completedConditions;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkQW5kT3JDb25kaXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBXaGVyZSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHBhcnNlUGFyYW1zIH0gZnJvbSAnLi9wYXJzZVBhcmFtcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgY29sbGVjdGlvblNsdWcsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsU2x1ZyxcbiAgbG9jYWxlLFxuICBwYXlsb2FkLFxuICB3aGVyZSxcbn06IHtcbiAgY29sbGVjdGlvblNsdWc/OiBzdHJpbmdcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGdsb2JhbFNsdWc/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBheWxvYWQ6IFBheWxvYWRcbiAgd2hlcmU6IFdoZXJlW11cbn0pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+IHtcbiAgY29uc3QgY29tcGxldGVkQ29uZGl0aW9ucyA9IFtdXG4gIC8vIExvb3Agb3ZlciBhbGwgQU5EIC8gT1Igb3BlcmF0aW9ucyBhbmQgYWRkIHRoZW0gdG8gdGhlIEFORCAvIE9SIHF1ZXJ5IHBhcmFtXG4gIC8vIE9wZXJhdGlvbnMgc2hvdWxkIGNvbWUgdGhyb3VnaCBhcyBhbiBhcnJheVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygd2hlcmUpIHtcbiAgICAvLyBJZiB0aGUgb3BlcmF0aW9uIGlzIHByb3Blcmx5IGZvcm1hdHRlZCBhcyBhbiBvYmplY3RcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJzZVBhcmFtcyh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGdsb2JhbFNsdWcsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgIH0pXG4gICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbXBsZXRlZENvbmRpdGlvbnMucHVzaChyZXN1bHQpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjb21wbGV0ZWRDb25kaXRpb25zXG59XG4iXSwibmFtZXMiOlsiYnVpbGRBbmRPckNvbmRpdGlvbnMiLCJjb2xsZWN0aW9uU2x1ZyIsImZpZWxkcyIsImdsb2JhbFNsdWciLCJsb2NhbGUiLCJwYXlsb2FkIiwid2hlcmUiLCJjb21wbGV0ZWRDb25kaXRpb25zIiwiY29uZGl0aW9uIiwicmVzdWx0IiwicGFyc2VQYXJhbXMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFLc0JBOzs7ZUFBQUE7Ozs2QkFGTTtBQUVyQixlQUFlQSxxQkFBcUIsRUFDekNDLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsT0FBTyxFQUNQQyxLQUFLLEVBUU47SUFDQyxNQUFNQyxzQkFBc0IsRUFBRTtJQUM5Qiw2RUFBNkU7SUFDN0UsNkNBQTZDO0lBQzdDLGdEQUFnRDtJQUNoRCxLQUFLLE1BQU1DLGFBQWFGLE1BQU87UUFDN0Isc0RBQXNEO1FBQ3RELElBQUksT0FBT0UsY0FBYyxVQUFVO1lBQ2pDLDRDQUE0QztZQUM1QyxNQUFNQyxTQUFTLE1BQU1DLElBQUFBLHdCQUFXLEVBQUM7Z0JBQy9CVDtnQkFDQUM7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDLE9BQU9FO1lBQ1Q7WUFDQSxJQUFJRyxPQUFPQyxJQUFJLENBQUNILFFBQVFJLE1BQU0sR0FBRyxHQUFHO2dCQUNsQ04sb0JBQW9CTyxJQUFJLENBQUNMO1lBQzNCO1FBQ0Y7SUFDRjtJQUNBLE9BQU9GO0FBQ1QifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
import type { Field, Where } from 'payload/types';
|
|
3
|
+
type GetBuildQueryPluginArgs = {
|
|
4
|
+
collectionSlug?: string;
|
|
5
|
+
versionsFields?: Field[];
|
|
6
|
+
};
|
|
7
|
+
export type BuildQueryArgs = {
|
|
8
|
+
globalSlug?: string;
|
|
9
|
+
locale?: string;
|
|
10
|
+
payload: Payload;
|
|
11
|
+
where: Where;
|
|
12
|
+
};
|
|
13
|
+
declare const getBuildQueryPlugin: ({ collectionSlug, versionsFields }?: GetBuildQueryPluginArgs) => (schema: any) => void;
|
|
14
|
+
export default getBuildQueryPlugin;
|
|
15
|
+
//# sourceMappingURL=buildQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAMjD,KAAK,uBAAuB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,KAAK,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAID,QAAA,MAAM,mBAAmB,wCAAwC,uBAAuB,0BAsCvF,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|