payload 0.18.1 → 0.18.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.eslintrc.js +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/components/index.js +2 -2
  4. package/components/styles.css +1 -1
  5. package/dist/admin/components/forms/withCondition/index.d.ts +1 -1
  6. package/dist/admin/components/forms/withCondition/index.js +1 -1
  7. package/dist/admin/components/utilities/Auth/index.js +3 -2
  8. package/dist/admin/components/utilities/RenderCustomComponent/types.d.ts +1 -1
  9. package/dist/admin/components/views/Version/Version.js +1 -1
  10. package/dist/auth/operations/access.js +3 -1
  11. package/dist/auth/operations/init.d.ts +2 -0
  12. package/dist/auth/operations/init.js +1 -1
  13. package/dist/auth/requestHandlers/init.js +2 -2
  14. package/dist/collections/operations/local/create.js +3 -3
  15. package/dist/collections/operations/local/delete.js +3 -3
  16. package/dist/collections/operations/local/find.js +3 -3
  17. package/dist/collections/operations/local/findByID.js +3 -3
  18. package/dist/collections/operations/local/findVersionByID.js +4 -4
  19. package/dist/collections/operations/local/findVersions.js +3 -3
  20. package/dist/collections/operations/local/restoreVersion.js +3 -3
  21. package/dist/collections/operations/local/update.js +3 -3
  22. package/dist/config/defaults.d.ts +2 -46
  23. package/dist/config/defaults.js +2 -1
  24. package/dist/config/load.js +2 -2
  25. package/dist/config/schema.js +2 -1
  26. package/dist/config/types.d.ts +7 -5
  27. package/dist/fields/hooks/beforeChange/promise.js +20 -18
  28. package/dist/globals/operations/local/findOne.js +2 -2
  29. package/dist/globals/operations/local/findVersionByID.js +3 -3
  30. package/dist/globals/operations/local/findVersions.js +2 -2
  31. package/dist/globals/operations/local/update.js +2 -2
  32. package/dist/graphql/schema/buildFallbackLocaleInputType.d.ts +2 -2
  33. package/dist/graphql/schema/buildFallbackLocaleInputType.js +1 -1
  34. package/dist/graphql/schema/buildLocaleInputType.d.ts +2 -2
  35. package/dist/graphql/schema/buildLocaleInputType.js +1 -1
  36. package/dist/index.js +3 -1
  37. package/dist/mongoose/buildSchema.js +22 -22
  38. package/dist/preferences/model.d.ts +1 -1
  39. package/dist/utilities/telemetry/events/adminInit.d.ts +7 -0
  40. package/dist/utilities/telemetry/events/adminInit.js +27 -0
  41. package/dist/utilities/telemetry/events/serverInit.d.ts +5 -0
  42. package/dist/utilities/telemetry/events/serverInit.js +14 -0
  43. package/dist/utilities/telemetry/index.d.ts +22 -0
  44. package/dist/utilities/telemetry/index.js +82 -0
  45. package/dist/utilities/telemetry/oneWayHash.d.ts +2 -0
  46. package/dist/utilities/telemetry/oneWayHash.js +15 -0
  47. package/dist/webpack/mocks/fileMock.d.ts +1 -1
  48. package/docs/configuration/overview.mdx +9 -2
  49. package/docs/upload/overview.mdx +1 -1
  50. package/package.json +4 -2
@@ -23,7 +23,7 @@ const setBlockDiscriminators = (fields, schema, config, buildSchemaOptions) => {
23
23
  }
24
24
  });
25
25
  const blockSchema = new mongoose_1.Schema(blockSchemaFields, { _id: false, id: false });
26
- if (blockFieldType.localized) {
26
+ if (blockFieldType.localized && config.localization) {
27
27
  config.localization.locales.forEach((locale) => {
28
28
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
29
29
  // @ts-ignore Possible incorrect typing in mongoose types, this works
@@ -47,10 +47,10 @@ const formatBaseSchema = (field, buildSchemaOptions) => ({
47
47
  required: false,
48
48
  index: field.index || field.unique || false,
49
49
  });
50
- const localizeSchema = (field, schema, locales) => {
51
- if (field.localized && Array.isArray(locales)) {
50
+ const localizeSchema = (field, schema, localization) => {
51
+ if (field.localized && localization && Array.isArray(localization.locales)) {
52
52
  return {
53
- type: locales.reduce((localeSchema, locale) => ({
53
+ type: localization.locales.reduce((localeSchema, locale) => ({
54
54
  ...localeSchema,
55
55
  [locale]: schema,
56
56
  }), {
@@ -109,7 +109,7 @@ const fieldIndexMap = {
109
109
  if (field.index === true || field.index === undefined) {
110
110
  index = '2dsphere';
111
111
  }
112
- if (field.localized) {
112
+ if (field.localized && config.localization) {
113
113
  return config.localization.locales.map((locale) => ({ [`${field.name}.${locale}`]: index }));
114
114
  }
115
115
  return [{ [field.name]: index }];
@@ -120,42 +120,42 @@ const fieldToSchemaMap = {
120
120
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Number };
121
121
  return {
122
122
  ...fields,
123
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
123
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
124
124
  };
125
125
  },
126
126
  text: (field, fields, config, buildSchemaOptions) => {
127
127
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String };
128
128
  return {
129
129
  ...fields,
130
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
130
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
131
131
  };
132
132
  },
133
133
  email: (field, fields, config, buildSchemaOptions) => {
134
134
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String };
135
135
  return {
136
136
  ...fields,
137
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
137
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
138
138
  };
139
139
  },
140
140
  textarea: (field, fields, config, buildSchemaOptions) => {
141
141
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String };
142
142
  return {
143
143
  ...fields,
144
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
144
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
145
145
  };
146
146
  },
147
147
  richText: (field, fields, config, buildSchemaOptions) => {
148
148
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: mongoose_1.Schema.Types.Mixed };
149
149
  return {
150
150
  ...fields,
151
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
151
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
152
152
  };
153
153
  },
154
154
  code: (field, fields, config, buildSchemaOptions) => {
155
155
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: String };
156
156
  return {
157
157
  ...fields,
158
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
158
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
159
159
  };
160
160
  },
161
161
  point: (field, fields, config) => {
@@ -175,7 +175,7 @@ const fieldToSchemaMap = {
175
175
  };
176
176
  return {
177
177
  ...fields,
178
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
178
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
179
179
  };
180
180
  },
181
181
  radio: (field, fields, config, buildSchemaOptions) => {
@@ -190,21 +190,21 @@ const fieldToSchemaMap = {
190
190
  };
191
191
  return {
192
192
  ...fields,
193
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
193
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
194
194
  };
195
195
  },
196
196
  checkbox: (field, fields, config, buildSchemaOptions) => {
197
197
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Boolean };
198
198
  return {
199
199
  ...fields,
200
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
200
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
201
201
  };
202
202
  },
203
203
  date: (field, fields, config, buildSchemaOptions) => {
204
204
  const baseSchema = { ...formatBaseSchema(field, buildSchemaOptions), type: Date };
205
205
  return {
206
206
  ...fields,
207
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
207
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
208
208
  };
209
209
  },
210
210
  upload: (field, fields, config, buildSchemaOptions) => {
@@ -215,13 +215,13 @@ const fieldToSchemaMap = {
215
215
  };
216
216
  return {
217
217
  ...fields,
218
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
218
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
219
219
  };
220
220
  },
221
221
  relationship: (field, fields, config, buildSchemaOptions) => {
222
222
  const hasManyRelations = Array.isArray(field.relationTo);
223
223
  let schemaToReturn = {};
224
- if (field.localized) {
224
+ if (field.localized && config.localization) {
225
225
  schemaToReturn = {
226
226
  type: config.localization.locales.reduce((locales, locale) => {
227
227
  let localeSchema = {};
@@ -294,7 +294,7 @@ const fieldToSchemaMap = {
294
294
  };
295
295
  return {
296
296
  ...fields,
297
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
297
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
298
298
  };
299
299
  },
300
300
  group: (field, fields, config, buildSchemaOptions) => {
@@ -316,7 +316,7 @@ const fieldToSchemaMap = {
316
316
  };
317
317
  return {
318
318
  ...fields,
319
- [field.name]: localizeSchema(field, baseSchema, config.localization.locales),
319
+ [field.name]: localizeSchema(field, baseSchema, config.localization),
320
320
  };
321
321
  },
322
322
  select: (field, fields, config, buildSchemaOptions) => {
@@ -329,7 +329,7 @@ const fieldToSchemaMap = {
329
329
  return option;
330
330
  }),
331
331
  };
332
- const schemaToReturn = localizeSchema(field, baseSchema, config.localization.locales);
332
+ const schemaToReturn = localizeSchema(field, baseSchema, config.localization);
333
333
  return {
334
334
  ...fields,
335
335
  [field.name]: field.hasMany ? [schemaToReturn] : schemaToReturn,
@@ -338,7 +338,7 @@ const fieldToSchemaMap = {
338
338
  blocks: (field, fields, config) => {
339
339
  const baseSchema = [new mongoose_1.Schema({}, { _id: false, discriminatorKey: 'blockType' })];
340
340
  let schemaToReturn;
341
- if (field.localized) {
341
+ if (field.localized && config.localization) {
342
342
  schemaToReturn = config.localization.locales.reduce((localeSchema, locale) => ({
343
343
  ...localeSchema,
344
344
  [locale]: baseSchema,
@@ -354,4 +354,4 @@ const fieldToSchemaMap = {
354
354
  },
355
355
  };
356
356
  exports.default = buildSchema;
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ29vc2UvYnVpbGRTY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsMkNBQTJDO0FBQzNDLDREQUE0RDtBQUM1RCx5Q0FBeUM7QUFDekMsdUNBQW1FO0FBRW5FLGtEQUFxVjtBQUNyVixzRkFBOEQ7QUFXOUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE1BQWUsRUFBRSxNQUFjLEVBQUUsTUFBdUIsRUFBRSxrQkFBc0MsRUFBRSxFQUFFO0lBQ2xJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN2QixNQUFNLGNBQWMsR0FBRyxLQUFtQixDQUFDO1FBQzNDLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFnQixFQUFFLEVBQUU7Z0JBQ2pELElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUN0QyxNQUFNLFdBQVcsR0FBeUIsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM1RSxJQUFJLFdBQVcsRUFBRTt3QkFDZixpQkFBaUIsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO3FCQUM1RjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVB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
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ29vc2UvYnVpbGRTY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsMkNBQTJDO0FBQzNDLDREQUE0RDtBQUM1RCx5Q0FBeUM7QUFDekMsdUNBQW1FO0FBRW5FLGtEQUFxVjtBQUNyVixzRkFBOEQ7QUFXOUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE1BQWUsRUFBRSxNQUFjLEVBQUUsTUFBdUIsRUFBRSxrQkFBc0MsRUFBRSxFQUFFO0lBQ2xJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN2QixNQUFNLGNBQWMsR0FBRyxLQUFtQixDQUFDO1FBQzNDLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFnQixFQUFFLEVBQUU7Z0JBQ2pELElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUN0QyxNQUFNLFdBQVcsR0FBeUIsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM1RSxJQUFJLFdBQVcsRUFBRTt3QkFDZixpQkFBaUIsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO3FCQUM1RjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVB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
@@ -1,4 +1,4 @@
1
1
  import mongoose from 'mongoose';
2
2
  import { Preference } from './types';
3
- declare const Model: mongoose.Model<Preference, {}, {}, {}>;
3
+ declare const Model: mongoose.Model<Preference, {}, {}, {}, any>;
4
4
  export default Model;
@@ -0,0 +1,7 @@
1
+ import { PayloadRequest } from '../../../express/types';
2
+ export declare type AdminInitEvent = {
3
+ type: 'admin-init';
4
+ domainID?: string;
5
+ userID?: string;
6
+ };
7
+ export declare const adminInit: (req: PayloadRequest) => void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adminInit = void 0;
4
+ const __1 = require("..");
5
+ const oneWayHash_1 = require("../oneWayHash");
6
+ const adminInit = (req) => {
7
+ const { user, payload } = req;
8
+ const { host } = req.headers;
9
+ let domainID;
10
+ let userID;
11
+ if (host) {
12
+ domainID = (0, oneWayHash_1.oneWayHash)(host, payload.secret);
13
+ }
14
+ if (user && typeof (user === null || user === void 0 ? void 0 : user.id) === 'string') {
15
+ userID = (0, oneWayHash_1.oneWayHash)(user.id, payload.secret);
16
+ }
17
+ (0, __1.sendEvent)({
18
+ payload,
19
+ event: {
20
+ type: 'admin-init',
21
+ domainID,
22
+ userID,
23
+ },
24
+ });
25
+ };
26
+ exports.adminInit = adminInit;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW5Jbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxpdGllcy90ZWxlbWV0cnkvZXZlbnRzL2FkbWluSW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwQkFBK0I7QUFDL0IsOENBQTJDO0FBUXBDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBbUIsRUFBUSxFQUFFO0lBQ3JELE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQzlCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBRTdCLElBQUksUUFBZ0IsQ0FBQztJQUNyQixJQUFJLE1BQWMsQ0FBQztJQUVuQixJQUFJLElBQUksRUFBRTtRQUNSLFFBQVEsR0FBRyxJQUFBLHVCQUFVLEVBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM3QztJQUVELElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsRUFBRSxDQUFBLEtBQUssUUFBUSxFQUFFO1FBQ3hDLE1BQU0sR0FBRyxJQUFBLHVCQUFVLEVBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDOUM7SUFFRCxJQUFBLGFBQVMsRUFBQztRQUNSLE9BQU87UUFDUCxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsWUFBWTtZQUNsQixRQUFRO1lBQ1IsTUFBTTtTQUNQO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsU0FBUyxhQXVCcEIifQ==
@@ -0,0 +1,5 @@
1
+ import { Payload } from '../../..';
2
+ export declare type ServerInitEvent = {
3
+ type: 'server-init';
4
+ };
5
+ export declare const serverInit: (payload: Payload) => void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serverInit = void 0;
4
+ const __1 = require("..");
5
+ const serverInit = (payload) => {
6
+ (0, __1.sendEvent)({
7
+ payload,
8
+ event: {
9
+ type: 'server-init',
10
+ },
11
+ });
12
+ };
13
+ exports.serverInit = serverInit;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVySW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsaXRpZXMvdGVsZW1ldHJ5L2V2ZW50cy9zZXJ2ZXJJbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBCQUErQjtBQU94QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQWdCLEVBQVEsRUFBRTtJQUNuRCxJQUFBLGFBQVMsRUFBQztRQUNSLE9BQU87UUFDUCxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsYUFBYTtTQUNwQjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQVBXLFFBQUEsVUFBVSxjQU9yQiJ9
@@ -0,0 +1,22 @@
1
+ import { Payload } from '../../index';
2
+ import { ServerInitEvent } from './events/serverInit';
3
+ import { AdminInitEvent } from './events/adminInit';
4
+ export declare type BaseEvent = {
5
+ envID: string;
6
+ projectID: string;
7
+ nodeVersion: string;
8
+ nodeEnv: string;
9
+ payloadVersion: string;
10
+ };
11
+ declare type PackageJSON = {
12
+ name: string;
13
+ dependencies: Record<string, string | undefined>;
14
+ };
15
+ declare type TelemetryEvent = ServerInitEvent | AdminInitEvent;
16
+ declare type Args = {
17
+ payload: Payload;
18
+ event: TelemetryEvent;
19
+ };
20
+ export declare const sendEvent: ({ payload, event }: Args) => Promise<void>;
21
+ export declare const getPayloadVersion: (packageJSON: PackageJSON) => string;
22
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPayloadVersion = exports.sendEvent = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const conf_1 = __importDefault(require("conf"));
9
+ const crypto_1 = require("crypto");
10
+ const find_up_1 = __importDefault(require("find-up"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const oneWayHash_1 = require("./oneWayHash");
13
+ const sendEvent = async ({ payload, event }) => {
14
+ if (payload.config.telemetry !== false) {
15
+ try {
16
+ const packageJSON = await getPackageJSON();
17
+ const baseEvent = {
18
+ envID: getEnvID(),
19
+ projectID: getProjectID(payload, packageJSON),
20
+ nodeVersion: process.version,
21
+ nodeEnv: process.env.NODE_ENV || 'development',
22
+ payloadVersion: (0, exports.getPayloadVersion)(packageJSON),
23
+ };
24
+ await fetch('https://telemetry.payloadcms.com/events', {
25
+ method: 'post',
26
+ headers: {
27
+ 'Content-Type': 'application/json',
28
+ },
29
+ body: JSON.stringify({ ...baseEvent, ...event }),
30
+ });
31
+ }
32
+ catch (_) {
33
+ // Eat any errors in sending telemetry event
34
+ }
35
+ }
36
+ };
37
+ exports.sendEvent = sendEvent;
38
+ /**
39
+ * This is a quasi-persistent identifier used to dedupe recurring events. It's
40
+ * generated from random data and completely anonymous.
41
+ */
42
+ const getEnvID = () => {
43
+ const conf = new conf_1.default();
44
+ const ENV_ID = 'envID';
45
+ const val = conf.get(ENV_ID);
46
+ if (val) {
47
+ return val;
48
+ }
49
+ const generated = (0, crypto_1.randomBytes)(32).toString('hex');
50
+ conf.set(ENV_ID, generated);
51
+ return generated;
52
+ };
53
+ const getProjectID = (payload, packageJSON) => {
54
+ const projectID = getGitID(payload) || getPackageJSONID(payload, packageJSON) || payload.config.serverURL || process.cwd();
55
+ return (0, oneWayHash_1.oneWayHash)(projectID, payload.secret);
56
+ };
57
+ const getGitID = (payload) => {
58
+ try {
59
+ const originBuffer = (0, child_process_1.execSync)('git config --local --get remote.origin.url', {
60
+ timeout: 1000,
61
+ stdio: 'pipe',
62
+ });
63
+ return (0, oneWayHash_1.oneWayHash)(String(originBuffer).trim(), payload.secret);
64
+ }
65
+ catch (_) {
66
+ return null;
67
+ }
68
+ };
69
+ const getPackageJSON = async () => {
70
+ const packageJsonPath = await (0, find_up_1.default)('package.json', { cwd: __dirname });
71
+ const jsonContent = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'));
72
+ return jsonContent;
73
+ };
74
+ const getPackageJSONID = (payload, packageJSON) => {
75
+ return (0, oneWayHash_1.oneWayHash)(packageJSON.name, payload.secret);
76
+ };
77
+ const getPayloadVersion = (packageJSON) => {
78
+ var _a, _b;
79
+ return (_b = (_a = packageJSON === null || packageJSON === void 0 ? void 0 : packageJSON.dependencies) === null || _a === void 0 ? void 0 : _a.payload) !== null && _b !== void 0 ? _b : '';
80
+ };
81
+ exports.getPayloadVersion = getPayloadVersion;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbGl0aWVzL3RlbGVtZXRyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBeUM7QUFDekMsZ0RBQXdCO0FBQ3hCLG1DQUFxQztBQUNyQyxzREFBNkI7QUFDN0IsNENBQW9CO0FBSXBCLDZDQUEwQztBQXNCbkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBUyxFQUFpQixFQUFFO0lBQzFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1FBQ3RDLElBQUk7WUFDRixNQUFNLFdBQVcsR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFDO1lBRTNDLE1BQU0sU0FBUyxHQUFjO2dCQUMzQixLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUNqQixTQUFTLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7Z0JBQzdDLFdBQVcsRUFBRSxPQUFPLENBQUMsT0FBTztnQkFDNUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLGFBQWE7Z0JBQzlDLGNBQWMsRUFBRSxJQUFBLHlCQUFpQixFQUFDLFdBQVcsQ0FBQzthQUMvQyxDQUFDO1lBRUYsTUFBTSxLQUFLLENBQUMseUNBQXlDLEVBQUU7Z0JBQ3JELE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2lCQUNuQztnQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7YUFDakQsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNaLDRDQUE0QztTQUMzQztLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBeEJXLFFBQUEsU0FBUyxhQXdCcEI7QUFFRjs7O0dB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
@@ -0,0 +1,2 @@
1
+ import { BinaryLike } from 'crypto';
2
+ export declare const oneWayHash: (data: BinaryLike, secret: string) => string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.oneWayHash = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const oneWayHash = (data, secret) => {
6
+ const hash = (0, crypto_1.createHash)('sha256');
7
+ // prepend value with payload secret. This ensure one-way.
8
+ hash.update(secret);
9
+ // Update is an append operation, not a replacement. The secret from the prior
10
+ // update is still present!
11
+ hash.update(data);
12
+ return hash.digest('hex');
13
+ };
14
+ exports.oneWayHash = oneWayHash;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lV2F5SGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsaXRpZXMvdGVsZW1ldHJ5L29uZVdheUhhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWdEO0FBRXpDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBZ0IsRUFBRSxNQUFjLEVBQVUsRUFBRTtJQUNyRSxNQUFNLElBQUksR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsMERBQTBEO0lBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEIsOEVBQThFO0lBQzlFLDJCQUEyQjtJQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFWVyxRQUFBLFVBQVUsY0FVckIifQ==
@@ -1,2 +1,2 @@
1
- declare var _default: "file-stub";
1
+ declare const _default: "file-stub";
2
2
  export default _default;
@@ -20,12 +20,12 @@ Payload is a *config-based*, code-first CMS and application framework. The Paylo
20
20
  | -------------------- | -------------|
21
21
  | `serverURL` | A string used to define the absolute URL of your app including the protocol, for example `https://'example.com`. No paths allowed, only protocol, domain and (optionally) port |
22
22
  | `collections` | An array of all Collections that Payload will manage. To read more about how to define your collection configs, [click here](/docs/configuration/collections). |
23
+ | `cors` | Either a whitelist array of URLS to allow CORS requests from, or a wildcard string (`'*'`) to accept incoming requests from any domain. |
23
24
  | `globals` | An array of all Globals that Payload will manage. For more on Globals and their configs, [click here](/docs/configuration/globals). |
24
25
  | `admin` | Base Payload admin configuration. Specify custom components, control metadata, set the Admin user collection, and [more](/docs/admin/overview#admin-options). |
25
26
  | `localization` | Opt-in and control how Payload handles the translation of your content into multiple locales. [More](/docs/configuration/localization) |
26
27
  | `graphQL` | Manage GraphQL-specific functionality here. Define your own queries and mutations, manage query complexity limits, and [more](/docs/graphql/overview). |
27
28
  | `cookiePrefix` | A string that will be prefixed to all cookies that Payload sets. |
28
- | `cors` | Either a whitelist array of URLS to allow CORS requests from, or a wildcard string (`'*'`) to accept incoming requests from any domain. |
29
29
  | `csrf` | A whitelist array of URLs to allow Payload cookies to be accepted from as a form of CSRF protection. [More](/docs/authentication/overview#csrf-protection) |
30
30
  | `defaultDepth` | If a user does not specify `depth` while requesting a resource, this depth will be used. [More](/docs/getting-started/concepts#depth) |
31
31
  | `maxDepth` | The maximum allowed depth to be permitted application-wide. This setting helps prevent against malicious queries. Defaults to `10`. |
@@ -33,8 +33,9 @@ Payload is a *config-based*, code-first CMS and application framework. The Paylo
33
33
  | `upload` | Base Payload upload configuration. [More](/docs/upload/overview#payload-wide-upload-options). |
34
34
  | `routes` | Control the routing structure that Payload binds itself to. Specify `admin`, `api`, `graphQL`, and `graphQLPlayground`. |
35
35
  | `email` | Base email settings to allow Payload to generate email such as Forgot Password requests and other requirements. [More](/docs/email/overview#configuration) |
36
- | `express` | Express-specific middleware options such as compression and JSON parsing. [More](/docs/configuration/express). |
36
+ | `express` | Express-specific middleware options such as compression and JSON parsing. [More](/docs/configuration/express) |
37
37
  | `debug` | Enable to expose more detailed error information. |
38
+ | `telemetry` | Disable Payload telemetry by passing `false`. [More](/docs/configuration/overview#telemetry) |
38
39
  | `rateLimit` | Control IP-based rate limiting for all Payload resources. Used to prevent DDoS attacks and [more](/docs/production/preventing-abuse#rate-limiting-requests). |
39
40
  | `hooks` | Tap into Payload-wide hooks. [More](/docs/hooks/overview) |
40
41
  | `plugins` | An array of Payload plugins. [More](/docs/plugins/overview) |
@@ -185,3 +186,9 @@ import { SanitizedConfig } from 'payload/config';
185
186
  // This is the type used after an incoming Payload config is fully sanitized.
186
187
  // Generally, this is only used internally by Payload.
187
188
  ```
189
+
190
+ ### Telemetry
191
+
192
+ Payload collects **completely anonymous** telemetry data about general usage. This data is super important to us and helps us accurately understand how we're growing and what we can do to build the software into everything that it can possibly be. The telemetry that we collect also help us demonstrate our growth in an accurate manner, which helps us as we seek investment to build and scale our team. If we can accurately demonstrate our growth, we can more effectively continue to support Payload as free and open-source software. To opt out of telemetry, you can pass `telemetry: false` within your Payload config.
193
+
194
+ For more information about what we track, take a look at our [privacy policy](/privacy).
@@ -39,7 +39,7 @@ Every Payload Collection can opt-in to supporting Uploads by specifying the `upl
39
39
 
40
40
  | Option | Description |
41
41
  | ------------------------- | -------------|
42
- | **`staticURL`** * | The base URL path to use to access you uploads. Example: `/media` |
42
+ | **`staticURL`** * | The base URL path to use to access your uploads. Example: `/media` |
43
43
  | **`staticDir`** * | The folder directory to use to store media in. Can be either an absolute path or relative to the directory that contains your config. |
44
44
  | **`imageSizes`** | If specified, image uploads will be automatically resized in accordance to these image sizes. [More](#image-sizes) |
45
45
  | **`adminThumbnail`** | Set the way that the Admin panel will display thumbnails for this Collection. [More](#admin-thumbnails) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "0.18.1",
3
+ "version": "0.18.4",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -97,6 +97,7 @@
97
97
  "body-parser": "^1.19.0",
98
98
  "bson-objectid": "^2.0.1",
99
99
  "compression": "^1.7.4",
100
+ "conf": "^10.1.2",
100
101
  "connect-history-api-fallback": "^1.6.0",
101
102
  "css-loader": "^5.0.1",
102
103
  "css-minimizer-webpack-plugin": "^3.4.1",
@@ -110,7 +111,7 @@
110
111
  "express-rate-limit": "^5.1.3",
111
112
  "falsey": "^1.0.0",
112
113
  "file-loader": "^6.2.0",
113
- "find-up": "5.0.0",
114
+ "find-up": "4.1.0",
114
115
  "flatley": "^5.2.0",
115
116
  "fs-extra": "^10.0.0",
116
117
  "graphql": "15.4.0",
@@ -198,6 +199,7 @@
198
199
  "@types/babel__preset-env": "^7.9.1",
199
200
  "@types/body-parser": "^1.19.0",
200
201
  "@types/compression": "^1.7.0",
202
+ "@types/conf": "^3.0.0",
201
203
  "@types/connect-history-api-fallback": "^1.3.3",
202
204
  "@types/eslint": "^7.2.6",
203
205
  "@types/express": "^4.17.13",