@payloadcms/db-mongodb 3.10.0 → 3.11.1-canary.053fca8

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 (125) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +22 -18
  3. package/dist/count.js.map +1 -1
  4. package/dist/countGlobalVersions.d.ts.map +1 -1
  5. package/dist/countGlobalVersions.js +22 -18
  6. package/dist/countGlobalVersions.js.map +1 -1
  7. package/dist/countVersions.d.ts.map +1 -1
  8. package/dist/countVersions.js +22 -18
  9. package/dist/countVersions.js.map +1 -1
  10. package/dist/create.d.ts.map +1 -1
  11. package/dist/create.js +24 -21
  12. package/dist/create.js.map +1 -1
  13. package/dist/createGlobal.d.ts.map +1 -1
  14. package/dist/createGlobal.js +20 -20
  15. package/dist/createGlobal.js.map +1 -1
  16. package/dist/createGlobalVersion.d.ts.map +1 -1
  17. package/dist/createGlobalVersion.js +30 -33
  18. package/dist/createGlobalVersion.js.map +1 -1
  19. package/dist/createVersion.d.ts.map +1 -1
  20. package/dist/createVersion.js +31 -34
  21. package/dist/createVersion.js.map +1 -1
  22. package/dist/deleteMany.d.ts.map +1 -1
  23. package/dist/deleteMany.js +4 -5
  24. package/dist/deleteMany.js.map +1 -1
  25. package/dist/deleteOne.d.ts.map +1 -1
  26. package/dist/deleteOne.js +14 -18
  27. package/dist/deleteOne.js.map +1 -1
  28. package/dist/deleteVersions.d.ts.map +1 -1
  29. package/dist/deleteVersions.js +1 -2
  30. package/dist/deleteVersions.js.map +1 -1
  31. package/dist/find.d.ts.map +1 -1
  32. package/dist/find.js +74 -39
  33. package/dist/find.js.map +1 -1
  34. package/dist/findGlobal.d.ts.map +1 -1
  35. package/dist/findGlobal.js +17 -18
  36. package/dist/findGlobal.js.map +1 -1
  37. package/dist/findGlobalVersions.d.ts.map +1 -1
  38. package/dist/findGlobalVersions.js +62 -32
  39. package/dist/findGlobalVersions.js.map +1 -1
  40. package/dist/findOne.d.ts.map +1 -1
  41. package/dist/findOne.js +20 -29
  42. package/dist/findOne.js.map +1 -1
  43. package/dist/findVersions.d.ts.map +1 -1
  44. package/dist/findVersions.js +61 -32
  45. package/dist/findVersions.js.map +1 -1
  46. package/dist/index.d.ts +0 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +0 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/migrateFresh.d.ts.map +1 -1
  51. package/dist/migrateFresh.js.map +1 -1
  52. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
  53. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +14 -18
  54. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
  55. package/dist/queries/buildAndOrConditions.d.ts +1 -3
  56. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  57. package/dist/queries/buildAndOrConditions.js +1 -2
  58. package/dist/queries/buildAndOrConditions.js.map +1 -1
  59. package/dist/queries/buildQuery.d.ts +0 -2
  60. package/dist/queries/buildQuery.d.ts.map +1 -1
  61. package/dist/queries/buildQuery.js +6 -2
  62. package/dist/queries/buildQuery.js.map +1 -1
  63. package/dist/queries/buildSearchParams.d.ts +1 -3
  64. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  65. package/dist/queries/buildSearchParams.js +10 -14
  66. package/dist/queries/buildSearchParams.js.map +1 -1
  67. package/dist/queries/buildSortParam.d.ts +7 -1
  68. package/dist/queries/buildSortParam.d.ts.map +1 -1
  69. package/dist/queries/buildSortParam.js +2 -2
  70. package/dist/queries/buildSortParam.js.map +1 -1
  71. package/dist/queries/getLocalizedSortProperty.js +2 -2
  72. package/dist/queries/getLocalizedSortProperty.js.map +1 -1
  73. package/dist/queries/parseParams.d.ts +1 -3
  74. package/dist/queries/parseParams.d.ts.map +1 -1
  75. package/dist/queries/parseParams.js +1 -2
  76. package/dist/queries/parseParams.js.map +1 -1
  77. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  78. package/dist/queries/sanitizeQueryValue.js +0 -16
  79. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  80. package/dist/queryDrafts.d.ts.map +1 -1
  81. package/dist/queryDrafts.js +66 -40
  82. package/dist/queryDrafts.js.map +1 -1
  83. package/dist/updateGlobal.d.ts.map +1 -1
  84. package/dist/updateGlobal.js +21 -24
  85. package/dist/updateGlobal.js.map +1 -1
  86. package/dist/updateGlobalVersion.d.ts.map +1 -1
  87. package/dist/updateGlobalVersion.js +26 -28
  88. package/dist/updateGlobalVersion.js.map +1 -1
  89. package/dist/updateOne.d.ts.map +1 -1
  90. package/dist/updateOne.js +23 -28
  91. package/dist/updateOne.js.map +1 -1
  92. package/dist/updateVersion.d.ts.map +1 -1
  93. package/dist/updateVersion.js +24 -27
  94. package/dist/updateVersion.js.map +1 -1
  95. package/dist/utilities/buildJoinAggregation.d.ts +4 -4
  96. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  97. package/dist/utilities/buildJoinAggregation.js +28 -7
  98. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  99. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -1
  100. package/dist/utilities/buildProjectionFromSelect.js +1 -18
  101. package/dist/utilities/buildProjectionFromSelect.js.map +1 -1
  102. package/dist/utilities/sanitizeInternalFields.d.ts +2 -0
  103. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -0
  104. package/dist/utilities/sanitizeInternalFields.js +20 -0
  105. package/dist/utilities/sanitizeInternalFields.js.map +1 -0
  106. package/dist/utilities/sanitizeRelationshipIDs.d.ts +9 -0
  107. package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -0
  108. package/dist/utilities/sanitizeRelationshipIDs.js +125 -0
  109. package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -0
  110. package/dist/utilities/{transform.spec.js → sanitizeRelationshipIDs.spec.js} +7 -23
  111. package/dist/utilities/sanitizeRelationshipIDs.spec.js.map +1 -0
  112. package/package.json +4 -4
  113. package/dist/utilities/findMany.d.ts +0 -20
  114. package/dist/utilities/findMany.d.ts.map +0 -1
  115. package/dist/utilities/findMany.js +0 -84
  116. package/dist/utilities/findMany.js.map +0 -1
  117. package/dist/utilities/getHasNearConstraint.d.ts +0 -3
  118. package/dist/utilities/getHasNearConstraint.d.ts.map +0 -1
  119. package/dist/utilities/getHasNearConstraint.js +0 -26
  120. package/dist/utilities/getHasNearConstraint.js.map +0 -1
  121. package/dist/utilities/transform.d.ts +0 -25
  122. package/dist/utilities/transform.d.ts.map +0 -1
  123. package/dist/utilities/transform.js +0 -254
  124. package/dist/utilities/transform.js.map +0 -1
  125. package/dist/utilities/transform.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../src/count.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAOpC,eAAO,MAAM,KAAK,EAAE,KAyCnB,CAAA"}
1
+ {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../src/count.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAQpC,eAAO,MAAM,KAAK,EAAE,KA6CnB,CAAA"}
package/dist/count.js CHANGED
@@ -1,34 +1,38 @@
1
- import { getHasNearConstraint } from './utilities/getHasNearConstraint.js';
1
+ import { flattenWhereToOperators } from 'payload';
2
2
  import { getSession } from './utilities/getSession.js';
3
3
  export const count = async function count({ collection, locale, req, where }) {
4
4
  const Model = this.collections[collection];
5
- const session = await getSession(this, req);
6
- const hasNearConstraint = getHasNearConstraint(where);
5
+ const options = {
6
+ session: await getSession(this, req)
7
+ };
8
+ let hasNearConstraint = false;
9
+ if (where) {
10
+ const constraints = flattenWhereToOperators(where);
11
+ hasNearConstraint = constraints.some((prop)=>Object.keys(prop).some((key)=>key === 'near'));
12
+ }
7
13
  const query = await Model.buildQuery({
8
14
  locale,
9
15
  payload: this.payload,
10
- session,
11
16
  where
12
17
  });
13
18
  // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
14
19
  const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
20
+ if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {
21
+ // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
22
+ // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
23
+ // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
24
+ // the correct indexed field
25
+ options.hint = {
26
+ _id: 1
27
+ };
28
+ }
15
29
  let result;
16
30
  if (useEstimatedCount) {
17
- result = await Model.collection.estimatedDocumentCount();
31
+ result = await Model.estimatedDocumentCount({
32
+ session: options.session
33
+ });
18
34
  } else {
19
- const options = {
20
- session
21
- };
22
- if (this.disableIndexHints !== true) {
23
- // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
24
- // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
25
- // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
26
- // the correct indexed field
27
- options.hint = {
28
- _id: 1
29
- };
30
- }
31
- result = await Model.collection.countDocuments(query, options);
35
+ result = await Model.countDocuments(query, options);
32
36
  }
33
37
  return {
34
38
  totalDocs: result
package/dist/count.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/count.ts"],"sourcesContent":["import type { CountOptions } from 'mongodb'\nimport type { Count } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getHasNearConstraint } from './utilities/getHasNearConstraint.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const count: Count = async function count(\n this: MongooseAdapter,\n { collection, locale, req, where },\n) {\n const Model = this.collections[collection]\n const session = await getSession(this, req)\n\n const hasNearConstraint = getHasNearConstraint(where)\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n session,\n where,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n\n let result: number\n if (useEstimatedCount) {\n result = await Model.collection.estimatedDocumentCount()\n } else {\n const options: CountOptions = { session }\n\n if (this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n options.hint = {\n _id: 1,\n }\n }\n\n result = await Model.collection.countDocuments(query, options)\n }\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["getHasNearConstraint","getSession","count","collection","locale","req","where","Model","collections","session","hasNearConstraint","query","buildQuery","payload","useEstimatedCount","Object","keys","length","result","estimatedDocumentCount","options","disableIndexHints","hint","_id","countDocuments","totalDocs"],"mappings":"AAKA,SAASA,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,QAAe,eAAeA,MAEzC,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAElC,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACL,WAAW;IAC1C,MAAMM,UAAU,MAAMR,WAAW,IAAI,EAAEI;IAEvC,MAAMK,oBAAoBV,qBAAqBM;IAE/C,MAAMK,QAAQ,MAAMJ,MAAMK,UAAU,CAAC;QACnCR;QACAS,SAAS,IAAI,CAACA,OAAO;QACrBJ;QACAH;IACF;IAEA,4HAA4H;IAC5H,MAAMQ,oBAAoBJ,qBAAqB,CAACC,SAASI,OAAOC,IAAI,CAACL,OAAOM,MAAM,KAAK;IAEvF,IAAIC;IACJ,IAAIJ,mBAAmB;QACrBI,SAAS,MAAMX,MAAMJ,UAAU,CAACgB,sBAAsB;IACxD,OAAO;QACL,MAAMC,UAAwB;YAAEX;QAAQ;QAExC,IAAI,IAAI,CAACY,iBAAiB,KAAK,MAAM;YACnC,mHAAmH;YACnH,qHAAqH;YACrH,mHAAmH;YACnH,4BAA4B;YAC5BD,QAAQE,IAAI,GAAG;gBACbC,KAAK;YACP;QACF;QAEAL,SAAS,MAAMX,MAAMJ,UAAU,CAACqB,cAAc,CAACb,OAAOS;IACxD;IAEA,OAAO;QACLK,WAAWP;IACb;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/count.ts"],"sourcesContent":["import type { CountOptions } from 'mongodb'\nimport type { Count } from 'payload'\n\nimport { flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\n\nexport const count: Count = async function count(\n this: MongooseAdapter,\n { collection, locale, req, where },\n) {\n const Model = this.collections[collection]\n const options: CountOptions = {\n session: await getSession(this, req),\n }\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n options.hint = {\n _id: 1,\n }\n }\n\n let result: number\n if (useEstimatedCount) {\n result = await Model.estimatedDocumentCount({ session: options.session })\n } else {\n result = await Model.countDocuments(query, options)\n }\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["flattenWhereToOperators","getSession","count","collection","locale","req","where","Model","collections","options","session","hasNearConstraint","constraints","some","prop","Object","keys","key","query","buildQuery","payload","useEstimatedCount","length","disableIndexHints","hint","_id","result","estimatedDocumentCount","countDocuments","totalDocs"],"mappings":"AAGA,SAASA,uBAAuB,QAAQ,UAAS;AAIjD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,QAAe,eAAeA,MAEzC,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAElC,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACL,WAAW;IAC1C,MAAMM,UAAwB;QAC5BC,SAAS,MAAMT,WAAW,IAAI,EAAEI;IAClC;IAEA,IAAIM,oBAAoB;IAExB,IAAIL,OAAO;QACT,MAAMM,cAAcZ,wBAAwBM;QAC5CK,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,MAAMC,QAAQ,MAAMX,MAAMY,UAAU,CAAC;QACnCf;QACAgB,SAAS,IAAI,CAACA,OAAO;QACrBd;IACF;IAEA,4HAA4H;IAC5H,MAAMe,oBAAoBV,qBAAqB,CAACO,SAASH,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK;IAEvF,IAAI,CAACD,qBAAqBN,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK,KAAK,IAAI,CAACC,iBAAiB,KAAK,MAAM;QAC5F,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5Bd,QAAQe,IAAI,GAAG;YACbC,KAAK;QACP;IACF;IAEA,IAAIC;IACJ,IAAIL,mBAAmB;QACrBK,SAAS,MAAMnB,MAAMoB,sBAAsB,CAAC;YAAEjB,SAASD,QAAQC,OAAO;QAAC;IACzE,OAAO;QACLgB,SAAS,MAAMnB,MAAMqB,cAAc,CAACV,OAAOT;IAC7C;IAEA,OAAO;QACLoB,WAAWH;IACb;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../src/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAOlD,eAAO,MAAM,mBAAmB,EAAE,mBAyCjC,CAAA"}
1
+ {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../src/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAQlD,eAAO,MAAM,mBAAmB,EAAE,mBA6CjC,CAAA"}
@@ -1,34 +1,38 @@
1
- import { getHasNearConstraint } from './utilities/getHasNearConstraint.js';
1
+ import { flattenWhereToOperators } from 'payload';
2
2
  import { getSession } from './utilities/getSession.js';
3
3
  export const countGlobalVersions = async function countGlobalVersions({ global, locale, req, where }) {
4
4
  const Model = this.versions[global];
5
- const session = await getSession(this, req);
6
- const hasNearConstraint = getHasNearConstraint(where);
5
+ const options = {
6
+ session: await getSession(this, req)
7
+ };
8
+ let hasNearConstraint = false;
9
+ if (where) {
10
+ const constraints = flattenWhereToOperators(where);
11
+ hasNearConstraint = constraints.some((prop)=>Object.keys(prop).some((key)=>key === 'near'));
12
+ }
7
13
  const query = await Model.buildQuery({
8
14
  locale,
9
15
  payload: this.payload,
10
- session,
11
16
  where
12
17
  });
13
18
  // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
14
19
  const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
20
+ if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {
21
+ // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
22
+ // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
23
+ // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
24
+ // the correct indexed field
25
+ options.hint = {
26
+ _id: 1
27
+ };
28
+ }
15
29
  let result;
16
30
  if (useEstimatedCount) {
17
- result = await Model.collection.estimatedDocumentCount();
31
+ result = await Model.estimatedDocumentCount({
32
+ session: options.session
33
+ });
18
34
  } else {
19
- const options = {
20
- session
21
- };
22
- if (Object.keys(query).length === 0 && this.disableIndexHints !== true) {
23
- // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
24
- // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
25
- // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
26
- // the correct indexed field
27
- options.hint = {
28
- _id: 1
29
- };
30
- }
31
- result = await Model.collection.countDocuments(query, options);
35
+ result = await Model.countDocuments(query, options);
32
36
  }
33
37
  return {
34
38
  totalDocs: result
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/countGlobalVersions.ts"],"sourcesContent":["import type { CountOptions } from 'mongodb'\nimport type { CountGlobalVersions } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getHasNearConstraint } from './utilities/getHasNearConstraint.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const countGlobalVersions: CountGlobalVersions = async function countGlobalVersions(\n this: MongooseAdapter,\n { global, locale, req, where },\n) {\n const Model = this.versions[global]\n const session = await getSession(this, req)\n\n const hasNearConstraint = getHasNearConstraint(where)\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n session,\n where,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n\n let result: number\n if (useEstimatedCount) {\n result = await Model.collection.estimatedDocumentCount()\n } else {\n const options: CountOptions = { session }\n\n if (Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n options.hint = {\n _id: 1,\n }\n }\n\n result = await Model.collection.countDocuments(query, options)\n }\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["getHasNearConstraint","getSession","countGlobalVersions","global","locale","req","where","Model","versions","session","hasNearConstraint","query","buildQuery","payload","useEstimatedCount","Object","keys","length","result","collection","estimatedDocumentCount","options","disableIndexHints","hint","_id","countDocuments","totalDocs"],"mappings":"AAKA,SAASA,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAE9B,MAAMC,QAAQ,IAAI,CAACC,QAAQ,CAACL,OAAO;IACnC,MAAMM,UAAU,MAAMR,WAAW,IAAI,EAAEI;IAEvC,MAAMK,oBAAoBV,qBAAqBM;IAE/C,MAAMK,QAAQ,MAAMJ,MAAMK,UAAU,CAAC;QACnCR;QACAS,SAAS,IAAI,CAACA,OAAO;QACrBJ;QACAH;IACF;IAEA,4HAA4H;IAC5H,MAAMQ,oBAAoBJ,qBAAqB,CAACC,SAASI,OAAOC,IAAI,CAACL,OAAOM,MAAM,KAAK;IAEvF,IAAIC;IACJ,IAAIJ,mBAAmB;QACrBI,SAAS,MAAMX,MAAMY,UAAU,CAACC,sBAAsB;IACxD,OAAO;QACL,MAAMC,UAAwB;YAAEZ;QAAQ;QAExC,IAAIM,OAAOC,IAAI,CAACL,OAAOM,MAAM,KAAK,KAAK,IAAI,CAACK,iBAAiB,KAAK,MAAM;YACtE,mHAAmH;YACnH,qHAAqH;YACrH,mHAAmH;YACnH,4BAA4B;YAC5BD,QAAQE,IAAI,GAAG;gBACbC,KAAK;YACP;QACF;QAEAN,SAAS,MAAMX,MAAMY,UAAU,CAACM,cAAc,CAACd,OAAOU;IACxD;IAEA,OAAO;QACLK,WAAWR;IACb;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/countGlobalVersions.ts"],"sourcesContent":["import type { CountOptions } from 'mongodb'\nimport type { CountGlobalVersions } from 'payload'\n\nimport { flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\n\nexport const countGlobalVersions: CountGlobalVersions = async function countGlobalVersions(\n this: MongooseAdapter,\n { global, locale, req, where },\n) {\n const Model = this.versions[global]\n const options: CountOptions = {\n session: await getSession(this, req),\n }\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n options.hint = {\n _id: 1,\n }\n }\n\n let result: number\n if (useEstimatedCount) {\n result = await Model.estimatedDocumentCount({ session: options.session })\n } else {\n result = await Model.countDocuments(query, options)\n }\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["flattenWhereToOperators","getSession","countGlobalVersions","global","locale","req","where","Model","versions","options","session","hasNearConstraint","constraints","some","prop","Object","keys","key","query","buildQuery","payload","useEstimatedCount","length","disableIndexHints","hint","_id","result","estimatedDocumentCount","countDocuments","totalDocs"],"mappings":"AAGA,SAASA,uBAAuB,QAAQ,UAAS;AAIjD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAE9B,MAAMC,QAAQ,IAAI,CAACC,QAAQ,CAACL,OAAO;IACnC,MAAMM,UAAwB;QAC5BC,SAAS,MAAMT,WAAW,IAAI,EAAEI;IAClC;IAEA,IAAIM,oBAAoB;IAExB,IAAIL,OAAO;QACT,MAAMM,cAAcZ,wBAAwBM;QAC5CK,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,MAAMC,QAAQ,MAAMX,MAAMY,UAAU,CAAC;QACnCf;QACAgB,SAAS,IAAI,CAACA,OAAO;QACrBd;IACF;IAEA,4HAA4H;IAC5H,MAAMe,oBAAoBV,qBAAqB,CAACO,SAASH,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK;IAEvF,IAAI,CAACD,qBAAqBN,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK,KAAK,IAAI,CAACC,iBAAiB,KAAK,MAAM;QAC5F,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5Bd,QAAQe,IAAI,GAAG;YACbC,KAAK;QACP;IACF;IAEA,IAAIC;IACJ,IAAIL,mBAAmB;QACrBK,SAAS,MAAMnB,MAAMoB,sBAAsB,CAAC;YAAEjB,SAASD,QAAQC,OAAO;QAAC;IACzE,OAAO;QACLgB,SAAS,MAAMnB,MAAMqB,cAAc,CAACV,OAAOT;IAC7C;IAEA,OAAO;QACLoB,WAAWH;IACb;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../src/countVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAO5C,eAAO,MAAM,aAAa,EAAE,aAyC3B,CAAA"}
1
+ {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../src/countVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ5C,eAAO,MAAM,aAAa,EAAE,aA6C3B,CAAA"}
@@ -1,34 +1,38 @@
1
- import { getHasNearConstraint } from './utilities/getHasNearConstraint.js';
1
+ import { flattenWhereToOperators } from 'payload';
2
2
  import { getSession } from './utilities/getSession.js';
3
3
  export const countVersions = async function countVersions({ collection, locale, req, where }) {
4
4
  const Model = this.versions[collection];
5
- const session = await getSession(this, req);
6
- const hasNearConstraint = getHasNearConstraint(where);
5
+ const options = {
6
+ session: await getSession(this, req)
7
+ };
8
+ let hasNearConstraint = false;
9
+ if (where) {
10
+ const constraints = flattenWhereToOperators(where);
11
+ hasNearConstraint = constraints.some((prop)=>Object.keys(prop).some((key)=>key === 'near'));
12
+ }
7
13
  const query = await Model.buildQuery({
8
14
  locale,
9
15
  payload: this.payload,
10
- session,
11
16
  where
12
17
  });
13
18
  // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
14
19
  const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
20
+ if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {
21
+ // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
22
+ // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
23
+ // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
24
+ // the correct indexed field
25
+ options.hint = {
26
+ _id: 1
27
+ };
28
+ }
15
29
  let result;
16
30
  if (useEstimatedCount) {
17
- result = await Model.collection.estimatedDocumentCount();
31
+ result = await Model.estimatedDocumentCount({
32
+ session: options.session
33
+ });
18
34
  } else {
19
- const options = {
20
- session
21
- };
22
- if (this.disableIndexHints !== true) {
23
- // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
24
- // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
25
- // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
26
- // the correct indexed field
27
- options.hint = {
28
- _id: 1
29
- };
30
- }
31
- result = await Model.collection.countDocuments(query, options);
35
+ result = await Model.countDocuments(query, options);
32
36
  }
33
37
  return {
34
38
  totalDocs: result
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/countVersions.ts"],"sourcesContent":["import type { CountOptions } from 'mongodb'\nimport type { CountVersions } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getHasNearConstraint } from './utilities/getHasNearConstraint.js'\nimport { getSession } from './utilities/getSession.js'\n\nexport const countVersions: CountVersions = async function countVersions(\n this: MongooseAdapter,\n { collection, locale, req, where },\n) {\n const Model = this.versions[collection]\n const session = await getSession(this, req)\n\n const hasNearConstraint = getHasNearConstraint(where)\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n session,\n where,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n\n let result: number\n if (useEstimatedCount) {\n result = await Model.collection.estimatedDocumentCount()\n } else {\n const options: CountOptions = { session }\n\n if (this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n options.hint = {\n _id: 1,\n }\n }\n\n result = await Model.collection.countDocuments(query, options)\n }\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["getHasNearConstraint","getSession","countVersions","collection","locale","req","where","Model","versions","session","hasNearConstraint","query","buildQuery","payload","useEstimatedCount","Object","keys","length","result","estimatedDocumentCount","options","disableIndexHints","hint","_id","countDocuments","totalDocs"],"mappings":"AAKA,SAASA,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAElC,MAAMC,QAAQ,IAAI,CAACC,QAAQ,CAACL,WAAW;IACvC,MAAMM,UAAU,MAAMR,WAAW,IAAI,EAAEI;IAEvC,MAAMK,oBAAoBV,qBAAqBM;IAE/C,MAAMK,QAAQ,MAAMJ,MAAMK,UAAU,CAAC;QACnCR;QACAS,SAAS,IAAI,CAACA,OAAO;QACrBJ;QACAH;IACF;IAEA,4HAA4H;IAC5H,MAAMQ,oBAAoBJ,qBAAqB,CAACC,SAASI,OAAOC,IAAI,CAACL,OAAOM,MAAM,KAAK;IAEvF,IAAIC;IACJ,IAAIJ,mBAAmB;QACrBI,SAAS,MAAMX,MAAMJ,UAAU,CAACgB,sBAAsB;IACxD,OAAO;QACL,MAAMC,UAAwB;YAAEX;QAAQ;QAExC,IAAI,IAAI,CAACY,iBAAiB,KAAK,MAAM;YACnC,mHAAmH;YACnH,qHAAqH;YACrH,mHAAmH;YACnH,4BAA4B;YAC5BD,QAAQE,IAAI,GAAG;gBACbC,KAAK;YACP;QACF;QAEAL,SAAS,MAAMX,MAAMJ,UAAU,CAACqB,cAAc,CAACb,OAAOS;IACxD;IAEA,OAAO;QACLK,WAAWP;IACb;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/countVersions.ts"],"sourcesContent":["import type { CountOptions } from 'mongodb'\nimport type { CountVersions } from 'payload'\n\nimport { flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\n\nexport const countVersions: CountVersions = async function countVersions(\n this: MongooseAdapter,\n { collection, locale, req, where },\n) {\n const Model = this.versions[collection]\n const options: CountOptions = {\n session: await getSession(this, req),\n }\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n options.hint = {\n _id: 1,\n }\n }\n\n let result: number\n if (useEstimatedCount) {\n result = await Model.estimatedDocumentCount({ session: options.session })\n } else {\n result = await Model.countDocuments(query, options)\n }\n\n return {\n totalDocs: result,\n }\n}\n"],"names":["flattenWhereToOperators","getSession","countVersions","collection","locale","req","where","Model","versions","options","session","hasNearConstraint","constraints","some","prop","Object","keys","key","query","buildQuery","payload","useEstimatedCount","length","disableIndexHints","hint","_id","result","estimatedDocumentCount","countDocuments","totalDocs"],"mappings":"AAGA,SAASA,uBAAuB,QAAQ,UAAS;AAIjD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,UAAU,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE;IAElC,MAAMC,QAAQ,IAAI,CAACC,QAAQ,CAACL,WAAW;IACvC,MAAMM,UAAwB;QAC5BC,SAAS,MAAMT,WAAW,IAAI,EAAEI;IAClC;IAEA,IAAIM,oBAAoB;IAExB,IAAIL,OAAO;QACT,MAAMM,cAAcZ,wBAAwBM;QAC5CK,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,MAAMC,QAAQ,MAAMX,MAAMY,UAAU,CAAC;QACnCf;QACAgB,SAAS,IAAI,CAACA,OAAO;QACrBd;IACF;IAEA,4HAA4H;IAC5H,MAAMe,oBAAoBV,qBAAqB,CAACO,SAASH,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK;IAEvF,IAAI,CAACD,qBAAqBN,OAAOC,IAAI,CAACE,OAAOI,MAAM,KAAK,KAAK,IAAI,CAACC,iBAAiB,KAAK,MAAM;QAC5F,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5Bd,QAAQe,IAAI,GAAG;YACbC,KAAK;QACP;IACF;IAEA,IAAIC;IACJ,IAAIL,mBAAmB;QACrBK,SAAS,MAAMnB,MAAMoB,sBAAsB,CAAC;YAAEjB,SAASD,QAAQC,OAAO;QAAC;IACzE,OAAO;QACLgB,SAAS,MAAMnB,MAAMqB,cAAc,CAACV,OAAOT;IAC7C;IAEA,OAAO;QACLoB,WAAWH;IACb;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAQrC,eAAO,MAAM,MAAM,EAAE,MAmCpB,CAAA"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,SAAS,CAAA;AAQ/C,eAAO,MAAM,MAAM,EAAE,MAsCpB,CAAA"}
package/dist/create.js CHANGED
@@ -1,31 +1,25 @@
1
1
  import { getSession } from './utilities/getSession.js';
2
2
  import { handleError } from './utilities/handleError.js';
3
- import { transform } from './utilities/transform.js';
3
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
4
4
  export const create = async function create({ collection, data, req }) {
5
5
  const Model = this.collections[collection];
6
- const session = await getSession(this, req);
7
- const fields = this.payload.collections[collection].config.flattenedFields;
8
- if (this.payload.collections[collection].customIDType) {
9
- data._id = data.id;
10
- }
11
- transform({
12
- adapter: this,
6
+ const options = {
7
+ session: await getSession(this, req)
8
+ };
9
+ let doc;
10
+ const sanitizedData = sanitizeRelationshipIDs({
11
+ config: this.payload.config,
13
12
  data,
14
- fields,
15
- operation: 'create'
13
+ fields: this.payload.collections[collection].config.fields
16
14
  });
15
+ if (this.payload.collections[collection].customIDType) {
16
+ sanitizedData._id = sanitizedData.id;
17
+ }
17
18
  try {
18
- const { insertedId: insertedID } = await Model.collection.insertOne(data, {
19
- session
20
- });
21
- data._id = insertedID;
22
- transform({
23
- adapter: this,
24
- data,
25
- fields,
26
- operation: 'read'
27
- });
28
- return data;
19
+ ;
20
+ [doc] = await Model.create([
21
+ sanitizedData
22
+ ], options);
29
23
  } catch (error) {
30
24
  handleError({
31
25
  collection,
@@ -33,6 +27,15 @@ export const create = async function create({ collection, data, req }) {
33
27
  req
34
28
  });
35
29
  }
30
+ // doc.toJSON does not do stuff like converting ObjectIds to string, or date strings to date objects. That's why we use JSON.parse/stringify here
31
+ const result = JSON.parse(JSON.stringify(doc));
32
+ const verificationToken = doc._verificationToken;
33
+ // custom id type reset
34
+ result.id = result._id;
35
+ if (verificationToken) {
36
+ result._verificationToken = verificationToken;
37
+ }
38
+ return result;
36
39
  };
37
40
 
38
41
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/create.ts"],"sourcesContent":["import type { Create } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\nimport { handleError } from './utilities/handleError.js'\nimport { transform } from './utilities/transform.js'\n\nexport const create: Create = async function create(\n this: MongooseAdapter,\n { collection, data, req },\n) {\n const Model = this.collections[collection]\n const session = await getSession(this, req)\n\n const fields = this.payload.collections[collection].config.flattenedFields\n\n if (this.payload.collections[collection].customIDType) {\n data._id = data.id\n }\n\n transform({\n adapter: this,\n data,\n fields,\n operation: 'create',\n })\n\n try {\n const { insertedId: insertedID } = await Model.collection.insertOne(data, { session })\n data._id = insertedID\n\n transform({\n adapter: this,\n data,\n fields,\n operation: 'read',\n })\n\n return data\n } catch (error) {\n handleError({ collection, error, req })\n }\n}\n"],"names":["getSession","handleError","transform","create","collection","data","req","Model","collections","session","fields","payload","config","flattenedFields","customIDType","_id","id","adapter","operation","insertedId","insertedID","insertOne","error"],"mappings":"AAIA,SAASA,UAAU,QAAQ,4BAA2B;AACtD,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,SAAiB,eAAeA,OAE3C,EAAEC,UAAU,EAAEC,IAAI,EAAEC,GAAG,EAAE;IAEzB,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACJ,WAAW;IAC1C,MAAMK,UAAU,MAAMT,WAAW,IAAI,EAAEM;IAEvC,MAAMI,SAAS,IAAI,CAACC,OAAO,CAACH,WAAW,CAACJ,WAAW,CAACQ,MAAM,CAACC,eAAe;IAE1E,IAAI,IAAI,CAACF,OAAO,CAACH,WAAW,CAACJ,WAAW,CAACU,YAAY,EAAE;QACrDT,KAAKU,GAAG,GAAGV,KAAKW,EAAE;IACpB;IAEAd,UAAU;QACRe,SAAS,IAAI;QACbZ;QACAK;QACAQ,WAAW;IACb;IAEA,IAAI;QACF,MAAM,EAAEC,YAAYC,UAAU,EAAE,GAAG,MAAMb,MAAMH,UAAU,CAACiB,SAAS,CAAChB,MAAM;YAAEI;QAAQ;QACpFJ,KAAKU,GAAG,GAAGK;QAEXlB,UAAU;YACRe,SAAS,IAAI;YACbZ;YACAK;YACAQ,WAAW;QACb;QAEA,OAAOb;IACT,EAAE,OAAOiB,OAAO;QACdrB,YAAY;YAAEG;YAAYkB;YAAOhB;QAAI;IACvC;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/create.ts"],"sourcesContent":["import type { CreateOptions } from 'mongoose'\nimport type { Create, Document } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\nimport { handleError } from './utilities/handleError.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const create: Create = async function create(\n this: MongooseAdapter,\n { collection, data, req },\n) {\n const Model = this.collections[collection]\n const options: CreateOptions = {\n session: await getSession(this, req),\n }\n\n let doc\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields: this.payload.collections[collection].config.fields,\n })\n\n if (this.payload.collections[collection].customIDType) {\n sanitizedData._id = sanitizedData.id\n }\n\n try {\n ;[doc] = await Model.create([sanitizedData], options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n // doc.toJSON does not do stuff like converting ObjectIds to string, or date strings to date objects. That's why we use JSON.parse/stringify here\n const result: Document = JSON.parse(JSON.stringify(doc))\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n\n return result\n}\n"],"names":["getSession","handleError","sanitizeRelationshipIDs","create","collection","data","req","Model","collections","options","session","doc","sanitizedData","config","payload","fields","customIDType","_id","id","error","result","JSON","parse","stringify","verificationToken","_verificationToken"],"mappings":"AAKA,SAASA,UAAU,QAAQ,4BAA2B;AACtD,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,SAAiB,eAAeA,OAE3C,EAAEC,UAAU,EAAEC,IAAI,EAAEC,GAAG,EAAE;IAEzB,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACJ,WAAW;IAC1C,MAAMK,UAAyB;QAC7BC,SAAS,MAAMV,WAAW,IAAI,EAAEM;IAClC;IAEA,IAAIK;IAEJ,MAAMC,gBAAgBV,wBAAwB;QAC5CW,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BR;QACAU,QAAQ,IAAI,CAACD,OAAO,CAACN,WAAW,CAACJ,WAAW,CAACS,MAAM,CAACE,MAAM;IAC5D;IAEA,IAAI,IAAI,CAACD,OAAO,CAACN,WAAW,CAACJ,WAAW,CAACY,YAAY,EAAE;QACrDJ,cAAcK,GAAG,GAAGL,cAAcM,EAAE;IACtC;IAEA,IAAI;;QACD,CAACP,IAAI,GAAG,MAAMJ,MAAMJ,MAAM,CAAC;YAACS;SAAc,EAAEH;IAC/C,EAAE,OAAOU,OAAO;QACdlB,YAAY;YAAEG;YAAYe;YAAOb;QAAI;IACvC;IAEA,iJAAiJ;IACjJ,MAAMc,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACZ;IACnD,MAAMa,oBAAoBb,IAAIc,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOF,EAAE,GAAGE,OAAOH,GAAG;IACtB,IAAIO,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IAEA,OAAOJ;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createGlobal.d.ts","sourceRoot":"","sources":["../src/createGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAO3C,eAAO,MAAM,YAAY,EAAE,YA+B1B,CAAA"}
1
+ {"version":3,"file":"createGlobal.d.ts","sourceRoot":"","sources":["../src/createGlobal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAQ3C,eAAO,MAAM,YAAY,EAAE,YA4B1B,CAAA"}
@@ -1,27 +1,27 @@
1
1
  import { getSession } from './utilities/getSession.js';
2
- import { transform } from './utilities/transform.js';
2
+ import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
3
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
3
4
  export const createGlobal = async function createGlobal({ slug, data, req }) {
4
5
  const Model = this.globals;
5
- const fields = this.payload.config.globals.find((globalConfig)=>globalConfig.slug === slug).flattenedFields;
6
- transform({
7
- adapter: this,
8
- data,
9
- fields,
10
- globalSlug: slug,
11
- operation: 'create'
6
+ const global = sanitizeRelationshipIDs({
7
+ config: this.payload.config,
8
+ data: {
9
+ globalType: slug,
10
+ ...data
11
+ },
12
+ fields: this.payload.config.globals.find((globalConfig)=>globalConfig.slug === slug).fields
12
13
  });
13
- const session = await getSession(this, req);
14
- const { insertedId: insertedID } = await Model.collection.insertOne(data, {
15
- session
16
- });
17
- data._id = insertedID;
18
- transform({
19
- adapter: this,
20
- data,
21
- fields,
22
- operation: 'read'
23
- });
24
- return data;
14
+ const options = {
15
+ session: await getSession(this, req)
16
+ };
17
+ let [result] = await Model.create([
18
+ global
19
+ ], options);
20
+ result = JSON.parse(JSON.stringify(result));
21
+ // custom id type reset
22
+ result.id = result._id;
23
+ result = sanitizeInternalFields(result);
24
+ return result;
25
25
  };
26
26
 
27
27
  //# sourceMappingURL=createGlobal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createGlobal.ts"],"sourcesContent":["import type { CreateGlobal } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const createGlobal: CreateGlobal = async function createGlobal(\n this: MongooseAdapter,\n { slug, data, req },\n) {\n const Model = this.globals\n\n const fields = this.payload.config.globals.find(\n (globalConfig) => globalConfig.slug === slug,\n ).flattenedFields\n\n transform({\n adapter: this,\n data,\n fields,\n globalSlug: slug,\n operation: 'create',\n })\n\n const session = await getSession(this, req)\n\n const { insertedId: insertedID } = await Model.collection.insertOne(data, { session })\n ;(data as any)._id = insertedID\n\n transform({\n adapter: this,\n data,\n fields,\n operation: 'read',\n })\n\n return data\n}\n"],"names":["getSession","transform","createGlobal","slug","data","req","Model","globals","fields","payload","config","find","globalConfig","flattenedFields","adapter","globalSlug","operation","session","insertedId","insertedID","collection","insertOne","_id"],"mappings":"AAIA,SAASA,UAAU,QAAQ,4BAA2B;AACtD,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAE;IAEnB,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAE1B,MAAMC,SAAS,IAAI,CAACC,OAAO,CAACC,MAAM,CAACH,OAAO,CAACI,IAAI,CAC7C,CAACC,eAAiBA,aAAaT,IAAI,KAAKA,MACxCU,eAAe;IAEjBZ,UAAU;QACRa,SAAS,IAAI;QACbV;QACAI;QACAO,YAAYZ;QACZa,WAAW;IACb;IAEA,MAAMC,UAAU,MAAMjB,WAAW,IAAI,EAAEK;IAEvC,MAAM,EAAEa,YAAYC,UAAU,EAAE,GAAG,MAAMb,MAAMc,UAAU,CAACC,SAAS,CAACjB,MAAM;QAAEa;IAAQ;IAClFb,KAAakB,GAAG,GAAGH;IAErBlB,UAAU;QACRa,SAAS,IAAI;QACbV;QACAI;QACAQ,WAAW;IACb;IAEA,OAAOZ;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/createGlobal.ts"],"sourcesContent":["import type { CreateOptions } from 'mongoose'\nimport type { CreateGlobal } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const createGlobal: CreateGlobal = async function createGlobal(\n this: MongooseAdapter,\n { slug, data, req },\n) {\n const Model = this.globals\n\n const global = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: {\n globalType: slug,\n ...data,\n },\n fields: this.payload.config.globals.find((globalConfig) => globalConfig.slug === slug).fields,\n })\n\n const options: CreateOptions = {\n session: await getSession(this, req),\n }\n\n let [result] = (await Model.create([global], options)) as any\n\n result = JSON.parse(JSON.stringify(result))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["getSession","sanitizeInternalFields","sanitizeRelationshipIDs","createGlobal","slug","data","req","Model","globals","global","config","payload","globalType","fields","find","globalConfig","options","session","result","create","JSON","parse","stringify","id","_id"],"mappings":"AAKA,SAASA,UAAU,QAAQ,4BAA2B;AACtD,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAE;IAEnB,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAE1B,MAAMC,SAASP,wBAAwB;QACrCQ,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BL,MAAM;YACJO,YAAYR;YACZ,GAAGC,IAAI;QACT;QACAQ,QAAQ,IAAI,CAACF,OAAO,CAACD,MAAM,CAACF,OAAO,CAACM,IAAI,CAAC,CAACC,eAAiBA,aAAaX,IAAI,KAAKA,MAAMS,MAAM;IAC/F;IAEA,MAAMG,UAAyB;QAC7BC,SAAS,MAAMjB,WAAW,IAAI,EAAEM;IAClC;IAEA,IAAI,CAACY,OAAO,GAAI,MAAMX,MAAMY,MAAM,CAAC;QAACV;KAAO,EAAEO;IAE7CE,SAASE,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACJ;IAEnC,uBAAuB;IACvBA,OAAOK,EAAE,GAAGL,OAAOM,GAAG;IACtBN,SAASjB,uBAAuBiB;IAEhC,OAAOA;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createGlobalVersion.d.ts","sourceRoot":"","sources":["../src/createGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAO5E,eAAO,MAAM,mBAAmB,EAAE,mBA4EjC,CAAA"}
1
+ {"version":3,"file":"createGlobalVersion.d.ts","sourceRoot":"","sources":["../src/createGlobalVersion.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,mBAAmB,EAAiB,MAAM,SAAS,CAAA;AAO3F,eAAO,MAAM,mBAAmB,EAAE,mBAwEjC,CAAA"}
@@ -1,35 +1,33 @@
1
1
  import { buildVersionGlobalFields } from 'payload';
2
2
  import { getSession } from './utilities/getSession.js';
3
- import { transform } from './utilities/transform.js';
3
+ import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
4
4
  export const createGlobalVersion = async function createGlobalVersion({ autosave, createdAt, globalSlug, parent, publishedLocale, req, snapshot, updatedAt, versionData }) {
5
5
  const VersionModel = this.versions[globalSlug];
6
- const session = await getSession(this, req);
7
- const data = {
8
- autosave,
9
- createdAt,
10
- latest: true,
11
- parent,
12
- publishedLocale,
13
- snapshot,
14
- updatedAt,
15
- version: versionData
6
+ const options = {
7
+ session: await getSession(this, req)
16
8
  };
17
- const fields = buildVersionGlobalFields(this.payload.config, this.payload.config.globals.find((global)=>global.slug === globalSlug), true);
18
- transform({
19
- adapter: this,
20
- data,
21
- fields,
22
- operation: 'create'
9
+ const data = sanitizeRelationshipIDs({
10
+ config: this.payload.config,
11
+ data: {
12
+ autosave,
13
+ createdAt,
14
+ latest: true,
15
+ parent,
16
+ publishedLocale,
17
+ snapshot,
18
+ updatedAt,
19
+ version: versionData
20
+ },
21
+ fields: buildVersionGlobalFields(this.payload.config, this.payload.config.globals.find((global)=>global.slug === globalSlug))
23
22
  });
24
- const { insertedId: insertedID } = await VersionModel.collection.insertOne(data, {
25
- session
26
- });
27
- data._id = insertedID;
28
- await VersionModel.collection.updateMany({
23
+ const [doc] = await VersionModel.create([
24
+ data
25
+ ], options, req);
26
+ await VersionModel.updateMany({
29
27
  $and: [
30
28
  {
31
29
  _id: {
32
- $ne: insertedID
30
+ $ne: doc._id
33
31
  }
34
32
  },
35
33
  {
@@ -47,16 +45,15 @@ export const createGlobalVersion = async function createGlobalVersion({ autosave
47
45
  $unset: {
48
46
  latest: 1
49
47
  }
50
- }, {
51
- session
52
- });
53
- transform({
54
- adapter: this,
55
- data,
56
- fields,
57
- operation: 'read'
58
- });
59
- return data;
48
+ }, options);
49
+ const result = JSON.parse(JSON.stringify(doc));
50
+ const verificationToken = doc._verificationToken;
51
+ // custom id type reset
52
+ result.id = result._id;
53
+ if (verificationToken) {
54
+ result._verificationToken = verificationToken;
55
+ }
56
+ return result;
60
57
  };
61
58
 
62
59
  //# sourceMappingURL=createGlobalVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createGlobalVersion.ts"],"sourcesContent":["import { buildVersionGlobalFields, type CreateGlobalVersion } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const createGlobalVersion: CreateGlobalVersion = async function createGlobalVersion(\n this: MongooseAdapter,\n {\n autosave,\n createdAt,\n globalSlug,\n parent,\n publishedLocale,\n req,\n snapshot,\n updatedAt,\n versionData,\n },\n) {\n const VersionModel = this.versions[globalSlug]\n const session = await getSession(this, req)\n\n const data = {\n autosave,\n createdAt,\n latest: true,\n parent,\n publishedLocale,\n snapshot,\n updatedAt,\n version: versionData,\n }\n\n const fields = buildVersionGlobalFields(\n this.payload.config,\n this.payload.config.globals.find((global) => global.slug === globalSlug),\n true,\n )\n\n transform({\n adapter: this,\n data,\n fields,\n operation: 'create',\n })\n\n const { insertedId: insertedID } = await VersionModel.collection.insertOne(data, { session })\n ;(data as any)._id = insertedID\n\n await VersionModel.collection.updateMany(\n {\n $and: [\n {\n _id: {\n $ne: insertedID,\n },\n },\n {\n parent: {\n $eq: parent,\n },\n },\n {\n latest: {\n $eq: true,\n },\n },\n ],\n },\n { $unset: { latest: 1 } },\n { session },\n )\n\n transform({\n adapter: this,\n data,\n fields,\n operation: 'read',\n })\n\n return data as any\n}\n"],"names":["buildVersionGlobalFields","getSession","transform","createGlobalVersion","autosave","createdAt","globalSlug","parent","publishedLocale","req","snapshot","updatedAt","versionData","VersionModel","versions","session","data","latest","version","fields","payload","config","globals","find","global","slug","adapter","operation","insertedId","insertedID","collection","insertOne","_id","updateMany","$and","$ne","$eq","$unset"],"mappings":"AAAA,SAASA,wBAAwB,QAAkC,UAAS;AAI5E,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EACEC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,MAAM,EACNC,eAAe,EACfC,GAAG,EACHC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACZ;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACR,WAAW;IAC9C,MAAMS,UAAU,MAAMd,WAAW,IAAI,EAAEQ;IAEvC,MAAMO,OAAO;QACXZ;QACAC;QACAY,QAAQ;QACRV;QACAC;QACAE;QACAC;QACAO,SAASN;IACX;IAEA,MAAMO,SAASnB,yBACb,IAAI,CAACoB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACC,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,CAACC,SAAWA,OAAOC,IAAI,KAAKnB,aAC7D;IAGFJ,UAAU;QACRwB,SAAS,IAAI;QACbV;QACAG;QACAQ,WAAW;IACb;IAEA,MAAM,EAAEC,YAAYC,UAAU,EAAE,GAAG,MAAMhB,aAAaiB,UAAU,CAACC,SAAS,CAACf,MAAM;QAAED;IAAQ;IACzFC,KAAagB,GAAG,GAAGH;IAErB,MAAMhB,aAAaiB,UAAU,CAACG,UAAU,CACtC;QACEC,MAAM;YACJ;gBACEF,KAAK;oBACHG,KAAKN;gBACP;YACF;YACA;gBACEtB,QAAQ;oBACN6B,KAAK7B;gBACP;YACF;YACA;gBACEU,QAAQ;oBACNmB,KAAK;gBACP;YACF;SACD;IACH,GACA;QAAEC,QAAQ;YAAEpB,QAAQ;QAAE;IAAE,GACxB;QAAEF;IAAQ;IAGZb,UAAU;QACRwB,SAAS,IAAI;QACbV;QACAG;QACAQ,WAAW;IACb;IAEA,OAAOX;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/createGlobalVersion.ts"],"sourcesContent":["import type { CreateOptions } from 'mongoose'\n\nimport { buildVersionGlobalFields, type CreateGlobalVersion, type Document } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './utilities/getSession.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\n\nexport const createGlobalVersion: CreateGlobalVersion = async function createGlobalVersion(\n this: MongooseAdapter,\n {\n autosave,\n createdAt,\n globalSlug,\n parent,\n publishedLocale,\n req,\n snapshot,\n updatedAt,\n versionData,\n },\n) {\n const VersionModel = this.versions[globalSlug]\n const options: CreateOptions = {\n session: await getSession(this, req),\n }\n\n const data = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: {\n autosave,\n createdAt,\n latest: true,\n parent,\n publishedLocale,\n snapshot,\n updatedAt,\n version: versionData,\n },\n fields: buildVersionGlobalFields(\n this.payload.config,\n this.payload.config.globals.find((global) => global.slug === globalSlug),\n ),\n })\n\n const [doc] = await VersionModel.create([data], options, req)\n\n await VersionModel.updateMany(\n {\n $and: [\n {\n _id: {\n $ne: doc._id,\n },\n },\n {\n parent: {\n $eq: parent,\n },\n },\n {\n latest: {\n $eq: true,\n },\n },\n ],\n },\n { $unset: { latest: 1 } },\n options,\n )\n\n const result: Document = JSON.parse(JSON.stringify(doc))\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionGlobalFields","getSession","sanitizeRelationshipIDs","createGlobalVersion","autosave","createdAt","globalSlug","parent","publishedLocale","req","snapshot","updatedAt","versionData","VersionModel","versions","options","session","data","config","payload","latest","version","fields","globals","find","global","slug","doc","create","updateMany","$and","_id","$ne","$eq","$unset","result","JSON","parse","stringify","verificationToken","_verificationToken","id"],"mappings":"AAEA,SAASA,wBAAwB,QAAiD,UAAS;AAI3F,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,uBAAuB,QAAQ,yCAAwC;AAEhF,OAAO,MAAMC,sBAA2C,eAAeA,oBAErE,EACEC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,MAAM,EACNC,eAAe,EACfC,GAAG,EACHC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACZ;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACR,WAAW;IAC9C,MAAMS,UAAyB;QAC7BC,SAAS,MAAMf,WAAW,IAAI,EAAEQ;IAClC;IAEA,MAAMQ,OAAOf,wBAAwB;QACnCgB,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BD,MAAM;YACJb;YACAC;YACAe,QAAQ;YACRb;YACAC;YACAE;YACAC;YACAU,SAAST;QACX;QACAU,QAAQtB,yBACN,IAAI,CAACmB,OAAO,CAACD,MAAM,EACnB,IAAI,CAACC,OAAO,CAACD,MAAM,CAACK,OAAO,CAACC,IAAI,CAAC,CAACC,SAAWA,OAAOC,IAAI,KAAKpB;IAEjE;IAEA,MAAM,CAACqB,IAAI,GAAG,MAAMd,aAAae,MAAM,CAAC;QAACX;KAAK,EAAEF,SAASN;IAEzD,MAAMI,aAAagB,UAAU,CAC3B;QACEC,MAAM;YACJ;gBACEC,KAAK;oBACHC,KAAKL,IAAII,GAAG;gBACd;YACF;YACA;gBACExB,QAAQ;oBACN0B,KAAK1B;gBACP;YACF;YACA;gBACEa,QAAQ;oBACNa,KAAK;gBACP;YACF;SACD;IACH,GACA;QAAEC,QAAQ;YAAEd,QAAQ;QAAE;IAAE,GACxBL;IAGF,MAAMoB,SAAmBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACX;IACnD,MAAMY,oBAAoBZ,IAAIa,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOM,EAAE,GAAGN,OAAOJ,GAAG;IACtB,IAAIQ,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAO1E,eAAO,MAAM,aAAa,EAAE,aA8F3B,CAAA"}
1
+ {"version":3,"file":"createVersion.d.ts","sourceRoot":"","sources":["../src/createVersion.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgC,KAAK,aAAa,EAAiB,MAAM,SAAS,CAAA;AAOzF,eAAO,MAAM,aAAa,EAAE,aA0F3B,CAAA"}