@webiny/api-record-locking 0.0.0-unstable.6844005670 → 0.0.0-unstable.7be00a75a9

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 (170) hide show
  1. package/domain/LockRecord.js +63 -70
  2. package/domain/LockRecord.js.map +1 -1
  3. package/domain/RecordLockingModel.js +26 -23
  4. package/domain/RecordLockingModel.js.map +1 -1
  5. package/domain/abstractions.js +3 -7
  6. package/domain/abstractions.js.map +1 -1
  7. package/domain/calculateExpiresOn.js +5 -6
  8. package/domain/calculateExpiresOn.js.map +1 -1
  9. package/domain/errors.js +71 -81
  10. package/domain/errors.js.map +1 -1
  11. package/domain/index.js +0 -2
  12. package/domain/types.js +6 -9
  13. package/domain/types.js.map +1 -1
  14. package/features/GetLockRecord/GetLockRecordRepository.js +27 -24
  15. package/features/GetLockRecord/GetLockRecordRepository.js.map +1 -1
  16. package/features/GetLockRecord/GetLockRecordUseCase.js +13 -10
  17. package/features/GetLockRecord/GetLockRecordUseCase.js.map +1 -1
  18. package/features/GetLockRecord/abstractions.js +3 -14
  19. package/features/GetLockRecord/abstractions.js.map +1 -1
  20. package/features/GetLockRecord/feature.d.ts +4 -1
  21. package/features/GetLockRecord/feature.js +7 -6
  22. package/features/GetLockRecord/feature.js.map +1 -1
  23. package/features/GetLockRecord/index.js +0 -2
  24. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +1 -1
  25. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +20 -29
  26. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -1
  27. package/features/GetLockedEntryLockRecord/abstractions.js +2 -10
  28. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -1
  29. package/features/GetLockedEntryLockRecord/feature.d.ts +4 -1
  30. package/features/GetLockedEntryLockRecord/feature.js +6 -5
  31. package/features/GetLockedEntryLockRecord/feature.js.map +1 -1
  32. package/features/GetLockedEntryLockRecord/index.js +0 -2
  33. package/features/IsEntryLocked/IsEntryLockedUseCase.d.ts +1 -1
  34. package/features/IsEntryLocked/IsEntryLockedUseCase.js +23 -29
  35. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -1
  36. package/features/IsEntryLocked/abstractions.js +2 -9
  37. package/features/IsEntryLocked/abstractions.js.map +1 -1
  38. package/features/IsEntryLocked/feature.d.ts +4 -1
  39. package/features/IsEntryLocked/feature.js +6 -5
  40. package/features/IsEntryLocked/feature.js.map +1 -1
  41. package/features/IsEntryLocked/index.js +0 -2
  42. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +1 -1
  43. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +33 -33
  44. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -1
  45. package/features/KickOutCurrentUser/abstractions.js +2 -6
  46. package/features/KickOutCurrentUser/abstractions.js.map +1 -1
  47. package/features/KickOutCurrentUser/feature.d.ts +4 -1
  48. package/features/KickOutCurrentUser/feature.js +6 -5
  49. package/features/KickOutCurrentUser/feature.js.map +1 -1
  50. package/features/KickOutCurrentUser/index.js +0 -2
  51. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +31 -31
  52. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -1
  53. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +13 -10
  54. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -1
  55. package/features/ListAllLockRecords/abstractions.js +3 -14
  56. package/features/ListAllLockRecords/abstractions.js.map +1 -1
  57. package/features/ListAllLockRecords/feature.d.ts +4 -1
  58. package/features/ListAllLockRecords/feature.js +7 -6
  59. package/features/ListAllLockRecords/feature.js.map +1 -1
  60. package/features/ListAllLockRecords/index.js +0 -2
  61. package/features/ListLockRecords/ListLockRecordsRepository.js +31 -31
  62. package/features/ListLockRecords/ListLockRecordsRepository.js.map +1 -1
  63. package/features/ListLockRecords/ListLockRecordsUseCase.d.ts +1 -1
  64. package/features/ListLockRecords/ListLockRecordsUseCase.js +27 -24
  65. package/features/ListLockRecords/ListLockRecordsUseCase.js.map +1 -1
  66. package/features/ListLockRecords/abstractions.js +3 -14
  67. package/features/ListLockRecords/abstractions.js.map +1 -1
  68. package/features/ListLockRecords/feature.d.ts +4 -1
  69. package/features/ListLockRecords/feature.js +7 -6
  70. package/features/ListLockRecords/feature.js.map +1 -1
  71. package/features/ListLockRecords/index.js +0 -2
  72. package/features/LockEntry/LockEntryEventsDecorator.d.ts +1 -1
  73. package/features/LockEntry/LockEntryEventsDecorator.js +32 -32
  74. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -1
  75. package/features/LockEntry/LockEntryRepository.js +33 -30
  76. package/features/LockEntry/LockEntryRepository.js.map +1 -1
  77. package/features/LockEntry/LockEntryUseCase.js +21 -26
  78. package/features/LockEntry/LockEntryUseCase.js.map +1 -1
  79. package/features/LockEntry/abstractions.js +3 -14
  80. package/features/LockEntry/abstractions.js.map +1 -1
  81. package/features/LockEntry/events.d.ts +8 -8
  82. package/features/LockEntry/events.js +26 -34
  83. package/features/LockEntry/events.js.map +1 -1
  84. package/features/LockEntry/feature.d.ts +4 -1
  85. package/features/LockEntry/feature.js +8 -7
  86. package/features/LockEntry/feature.js.map +1 -1
  87. package/features/LockEntry/index.js +0 -2
  88. package/features/RecordLockingFeature.d.ts +4 -1
  89. package/features/RecordLockingFeature.js +19 -21
  90. package/features/RecordLockingFeature.js.map +1 -1
  91. package/features/UnlockEntry/UnlockEntryEventsDecorator.d.ts +1 -1
  92. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +33 -33
  93. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -1
  94. package/features/UnlockEntry/UnlockEntryRepository.js +29 -27
  95. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -1
  96. package/features/UnlockEntry/UnlockEntryUseCase.d.ts +1 -1
  97. package/features/UnlockEntry/UnlockEntryUseCase.js +54 -70
  98. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -1
  99. package/features/UnlockEntry/abstractions.js +3 -14
  100. package/features/UnlockEntry/abstractions.js.map +1 -1
  101. package/features/UnlockEntry/events.d.ts +8 -8
  102. package/features/UnlockEntry/events.js +26 -34
  103. package/features/UnlockEntry/events.js.map +1 -1
  104. package/features/UnlockEntry/feature.d.ts +4 -1
  105. package/features/UnlockEntry/feature.js +8 -7
  106. package/features/UnlockEntry/feature.js.map +1 -1
  107. package/features/UnlockEntry/hasFullAccessPermission.d.ts +1 -1
  108. package/features/UnlockEntry/hasFullAccessPermission.js +6 -7
  109. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -1
  110. package/features/UnlockEntry/index.js +0 -2
  111. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.d.ts +1 -1
  112. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +32 -32
  113. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -1
  114. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.d.ts +1 -1
  115. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +32 -31
  116. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -1
  117. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.d.ts +1 -1
  118. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +63 -80
  119. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -1
  120. package/features/UnlockEntryRequest/abstractions.js +3 -14
  121. package/features/UnlockEntryRequest/abstractions.js.map +1 -1
  122. package/features/UnlockEntryRequest/events.d.ts +8 -8
  123. package/features/UnlockEntryRequest/events.js +26 -34
  124. package/features/UnlockEntryRequest/events.js.map +1 -1
  125. package/features/UnlockEntryRequest/feature.d.ts +4 -1
  126. package/features/UnlockEntryRequest/feature.js +8 -7
  127. package/features/UnlockEntryRequest/feature.js.map +1 -1
  128. package/features/UnlockEntryRequest/index.js +0 -2
  129. package/features/UpdateEntryLock/UpdateEntryLockRepository.d.ts +1 -1
  130. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +46 -49
  131. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -1
  132. package/features/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +1 -1
  133. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +41 -52
  134. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -1
  135. package/features/UpdateEntryLock/abstractions.js +3 -14
  136. package/features/UpdateEntryLock/abstractions.js.map +1 -1
  137. package/features/UpdateEntryLock/feature.d.ts +4 -1
  138. package/features/UpdateEntryLock/feature.js +7 -6
  139. package/features/UpdateEntryLock/feature.js.map +1 -1
  140. package/features/UpdateEntryLock/index.js +0 -2
  141. package/graphql/checkPermissions.js +6 -10
  142. package/graphql/checkPermissions.js.map +1 -1
  143. package/graphql/resolve.js +15 -17
  144. package/graphql/resolve.js.map +1 -1
  145. package/graphql/schema.d.ts +2 -2
  146. package/graphql/schema.js +147 -168
  147. package/graphql/schema.js.map +1 -1
  148. package/index.d.ts +1 -1
  149. package/index.js +46 -48
  150. package/index.js.map +1 -1
  151. package/package.json +27 -22
  152. package/types.js +6 -9
  153. package/types.js.map +1 -1
  154. package/utils/convertWhereCondition.js +20 -32
  155. package/utils/convertWhereCondition.js.map +1 -1
  156. package/utils/getTimeout.js +8 -15
  157. package/utils/getTimeout.js.map +1 -1
  158. package/utils/lockRecordDatabaseId.js +6 -11
  159. package/utils/lockRecordDatabaseId.js.map +1 -1
  160. package/domain/index.js.map +0 -1
  161. package/features/GetLockRecord/index.js.map +0 -1
  162. package/features/GetLockedEntryLockRecord/index.js.map +0 -1
  163. package/features/IsEntryLocked/index.js.map +0 -1
  164. package/features/KickOutCurrentUser/index.js.map +0 -1
  165. package/features/ListAllLockRecords/index.js.map +0 -1
  166. package/features/ListLockRecords/index.js.map +0 -1
  167. package/features/LockEntry/index.js.map +0 -1
  168. package/features/UnlockEntry/index.js.map +0 -1
  169. package/features/UnlockEntryRequest/index.js.map +0 -1
  170. package/features/UpdateEntryLock/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["IdentityContext","NotAuthorizedError","checkPermissions","context","identityContext","container","resolve","identity","getIdentity","isAnonymous"],"sources":["checkPermissions.ts"],"sourcesContent":["import { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\n\n/**\n * Simple permission check. Only authenticated users can access the websockets API via GraphQL\n */\nexport const checkPermissions = async (context: ApiCoreContext): Promise<void> => {\n const identityContext = context.container.resolve(IdentityContext);\n const identity = identityContext.getIdentity();\n\n if (identity.isAnonymous()) {\n throw new NotAuthorizedError();\n }\n};\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,2CAA2C;AAC3E,SAASC,kBAAkB,QAAQ,2CAA2C;AAG9E;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG,MAAOC,OAAuB,IAAoB;EAC9E,MAAMC,eAAe,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACN,eAAe,CAAC;EAClE,MAAMO,QAAQ,GAAGH,eAAe,CAACI,WAAW,CAAC,CAAC;EAE9C,IAAID,QAAQ,CAACE,WAAW,CAAC,CAAC,EAAE;IACxB,MAAM,IAAIR,kBAAkB,CAAC,CAAC;EAClC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"graphql/checkPermissions.js","sources":["../../src/graphql/checkPermissions.ts"],"sourcesContent":["import { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\n\n/**\n * Simple permission check. Only authenticated users can access the websockets API via GraphQL\n */\nexport const checkPermissions = async (context: ApiCoreContext): Promise<void> => {\n const identityContext = context.container.resolve(IdentityContext);\n const identity = identityContext.getIdentity();\n\n if (identity.isAnonymous()) {\n throw new NotAuthorizedError();\n }\n};\n"],"names":["checkPermissions","context","identityContext","IdentityContext","identity","NotAuthorizedError"],"mappings":";;AAOO,MAAMA,mBAAmB,OAAOC;IACnC,MAAMC,kBAAkBD,QAAQ,SAAS,CAAC,OAAO,CAACE;IAClD,MAAMC,WAAWF,gBAAgB,WAAW;IAE5C,IAAIE,SAAS,WAAW,IACpB,MAAM,IAAIC;AAElB"}
@@ -1,22 +1,20 @@
1
1
  import { ErrorResponse, ListErrorResponse, ListResponse, Response } from "@webiny/handler-graphql";
2
- export const resolve = async cb => {
3
- try {
4
- const result = await cb();
5
- return new Response(result);
6
- } catch (ex) {
7
- return new ErrorResponse(ex);
8
- }
2
+ const resolve = async (cb)=>{
3
+ try {
4
+ const result = await cb();
5
+ return new Response(result);
6
+ } catch (ex) {
7
+ return new ErrorResponse(ex);
8
+ }
9
9
  };
10
- export const resolveList = async cb => {
11
- try {
12
- const {
13
- items,
14
- meta
15
- } = await cb();
16
- return new ListResponse(items, meta);
17
- } catch (ex) {
18
- return new ListErrorResponse(ex);
19
- }
10
+ const resolveList = async (cb)=>{
11
+ try {
12
+ const { items, meta } = await cb();
13
+ return new ListResponse(items, meta);
14
+ } catch (ex) {
15
+ return new ListErrorResponse(ex);
16
+ }
20
17
  };
18
+ export { resolve, resolveList };
21
19
 
22
20
  //# sourceMappingURL=resolve.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ErrorResponse","ListErrorResponse","ListResponse","Response","resolve","cb","result","ex","resolveList","items","meta"],"sources":["resolve.ts"],"sourcesContent":["import { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport type { IRecordLockingMeta } from \"~/types.js\";\n\nexport const resolve = async <T>(cb: () => Promise<T>): Promise<Response<T> | ErrorResponse> => {\n try {\n const result = await cb();\n return new Response<T>(result);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\nexport interface IListResponse<T> {\n items: T[];\n meta: IRecordLockingMeta;\n}\n\nexport const resolveList = async <T>(\n cb: () => Promise<IListResponse<T>>\n): Promise<Response<T[]> | ErrorResponse> => {\n try {\n const { items, meta } = await cb();\n return new ListResponse(items, meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,iBAAiB,EAAEC,YAAY,EAAEC,QAAQ,QAAQ,yBAAyB;AAGlG,OAAO,MAAMC,OAAO,GAAG,MAAUC,EAAoB,IAA2C;EAC5F,IAAI;IACA,MAAMC,MAAM,GAAG,MAAMD,EAAE,CAAC,CAAC;IACzB,OAAO,IAAIF,QAAQ,CAAIG,MAAM,CAAC;EAClC,CAAC,CAAC,OAAOC,EAAE,EAAE;IACT,OAAO,IAAIP,aAAa,CAACO,EAAE,CAAC;EAChC;AACJ,CAAC;AAOD,OAAO,MAAMC,WAAW,GAAG,MACvBH,EAAmC,IACM;EACzC,IAAI;IACA,MAAM;MAAEI,KAAK;MAAEC;IAAK,CAAC,GAAG,MAAML,EAAE,CAAC,CAAC;IAClC,OAAO,IAAIH,YAAY,CAACO,KAAK,EAAEC,IAAI,CAAC;EACxC,CAAC,CAAC,OAAOH,EAAE,EAAE;IACT,OAAO,IAAIN,iBAAiB,CAACM,EAAE,CAAC;EACpC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"graphql/resolve.js","sources":["../../src/graphql/resolve.ts"],"sourcesContent":["import { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport type { IRecordLockingMeta } from \"~/types.js\";\n\nexport const resolve = async <T>(cb: () => Promise<T>): Promise<Response<T> | ErrorResponse> => {\n try {\n const result = await cb();\n return new Response<T>(result);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\nexport interface IListResponse<T> {\n items: T[];\n meta: IRecordLockingMeta;\n}\n\nexport const resolveList = async <T>(\n cb: () => Promise<IListResponse<T>>\n): Promise<Response<T[]> | ErrorResponse> => {\n try {\n const { items, meta } = await cb();\n return new ListResponse(items, meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n"],"names":["resolve","cb","result","Response","ex","ErrorResponse","resolveList","items","meta","ListResponse","ListErrorResponse"],"mappings":";AAGO,MAAMA,UAAU,OAAUC;IAC7B,IAAI;QACA,MAAMC,SAAS,MAAMD;QACrB,OAAO,IAAIE,SAAYD;IAC3B,EAAE,OAAOE,IAAI;QACT,OAAO,IAAIC,cAAcD;IAC7B;AACJ;AAOO,MAAME,cAAc,OACvBL;IAEA,IAAI;QACA,MAAM,EAAEM,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMP;QAC9B,OAAO,IAAIQ,aAAaF,OAAOC;IACnC,EAAE,OAAOJ,IAAI;QACT,OAAO,IAAIM,kBAAkBN;IACjC;AACJ"}
@@ -1,11 +1,11 @@
1
1
  import type { IGraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
2
  import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
3
3
  import { CmsModel } from "@webiny/api-headless-cms/types/model.js";
4
- import type { CmsFieldTypePlugins } from "@webiny/api-headless-cms/types/index.js";
4
+ import type { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
5
5
  interface Params {
6
6
  model: CmsModel;
7
7
  models: CmsModel[];
8
- fieldTypePlugins: CmsFieldTypePlugins;
8
+ fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
9
9
  }
10
10
  export declare const createGraphQLSchema: (params: Params) => Promise<IGraphQLSchemaPlugin<ApiCoreContext>>;
11
11
  export {};
package/graphql/schema.js CHANGED
@@ -13,38 +13,35 @@ import { LockEntryUseCase } from "../features/LockEntry/abstractions.js";
13
13
  import { UpdateEntryLockUseCase } from "../features/UpdateEntryLock/abstractions.js";
14
14
  import { UnlockEntryUseCase } from "../features/UnlockEntry/abstractions.js";
15
15
  import { UnlockEntryRequestUseCase } from "../features/UnlockEntryRequest/abstractions.js";
16
- export const createGraphQLSchema = async params => {
17
- // Record locking model
18
- const model = params.model;
19
-
20
- // Other public models that have at least one field
21
- const models = params.models.filter(model => {
22
- return model.fields.length > 0;
23
- });
24
- const fieldTypePlugins = params.fieldTypePlugins;
25
- const recordLockingFields = renderFields({
26
- models,
27
- model,
28
- fields: model.fields,
29
- type: "manage",
30
- fieldTypePlugins
31
- });
32
- const listFilterFieldsRender = renderListFilterFields({
33
- model,
34
- fields: model.fields,
35
- type: "manage",
36
- fieldTypePlugins,
37
- excludeFields: ["entryId"]
38
- });
39
- const sortEnumRender = renderSortEnum({
40
- model,
41
- fields: model.fields,
42
- fieldTypePlugins,
43
- sorterPlugins: []
44
- });
45
- const plugin = createGraphQLSchemaPlugin({
46
- typeDefs: /* GraphQL */`
47
- ${recordLockingFields.map(f => f.typeDefs).join("\n")}
16
+ const createGraphQLSchema = async (params)=>{
17
+ const model = params.model;
18
+ const models = params.models.filter((model)=>model.fields.length > 0);
19
+ const fieldRegistry = params.fieldRegistry;
20
+ const recordLockingFields = renderFields({
21
+ models,
22
+ model,
23
+ fields: model.fields,
24
+ type: "manage",
25
+ fieldRegistry
26
+ });
27
+ const listFilterFieldsRender = renderListFilterFields({
28
+ model,
29
+ fields: model.fields,
30
+ type: "manage",
31
+ fieldRegistry,
32
+ excludeFields: [
33
+ "entryId"
34
+ ]
35
+ });
36
+ const sortEnumRender = renderSortEnum({
37
+ model,
38
+ fields: model.fields,
39
+ fieldRegistry,
40
+ sorters: []
41
+ });
42
+ const plugin = createGraphQLSchemaPlugin({
43
+ typeDefs: `
44
+ ${recordLockingFields.map((f)=>f.typeDefs).join("\n")}
48
45
 
49
46
  type RecordLockingError {
50
47
  message: String
@@ -79,7 +76,7 @@ export const createGraphQLSchema = async params => {
79
76
  lockedOn: DateTime!
80
77
  updatedOn: DateTime!
81
78
  expiresOn: DateTime!
82
- ${recordLockingFields.map(f => f.fields).join("\n")}
79
+ ${recordLockingFields.map((f)=>f.fields).join("\n")}
83
80
  }
84
81
 
85
82
  type RecordLockingIsEntryLockedResponse {
@@ -176,143 +173,125 @@ export const createGraphQLSchema = async params => {
176
173
  recordLocking: RecordLockingMutation
177
174
  }
178
175
  `,
179
- resolvers: {
180
- Query: {
181
- recordLocking: async () => ({})
182
- },
183
- Mutation: {
184
- recordLocking: async () => ({})
185
- },
186
- RecordLockingQuery: {
187
- async isEntryLocked(_, args, context) {
188
- return resolve(async () => {
189
- await checkPermissions(context);
190
- const useCase = context.container.resolve(IsEntryLockedUseCase);
191
- const result = await useCase.execute({
192
- id: args.id,
193
- type: args.type
194
- });
195
- if (result.isFail()) {
196
- throw result.error;
197
- }
198
- return result.value;
199
- });
200
- },
201
- async getLockRecord(_, args, context) {
202
- return resolve(async () => {
203
- await checkPermissions(context);
204
- const useCase = context.container.resolve(GetLockRecordUseCase);
205
- const result = await useCase.execute({
206
- id: args.id,
207
- type: args.type
208
- });
209
- if (result.isFail()) {
210
- throw result.error;
211
- }
212
- return result.value;
213
- });
214
- },
215
- async getLockedEntryLockRecord(_, args, context) {
216
- return resolve(async () => {
217
- await checkPermissions(context);
218
- const useCase = context.container.resolve(GetLockedEntryLockRecordUseCase);
219
- const result = await useCase.execute({
220
- id: args.id,
221
- type: args.type
222
- });
223
- // Returns null if not found/expired/locked by current user
224
- if (result.isFail()) {
225
- return null;
226
- }
227
- return result.value;
228
- });
229
- },
230
- async listLockRecords(_, args, context) {
231
- return resolveList(async () => {
232
- await checkPermissions(context);
233
- const useCase = context.container.resolve(ListLockRecordsUseCase);
234
- const result = await useCase.execute(args);
235
- if (result.isFail()) {
236
- throw result.error;
237
- }
238
- return result.value;
239
- });
240
- },
241
- listAllLockRecords(_, args, context) {
242
- return resolveList(async () => {
243
- await checkPermissions(context);
244
- const useCase = context.container.resolve(ListAllLockRecordsUseCase);
245
- const result = await useCase.execute(args);
246
- if (result.isFail()) {
247
- throw result.error;
248
- }
249
- return result.value;
250
- });
251
- }
252
- },
253
- RecordLockingMutation: {
254
- async lockEntry(_, args, context) {
255
- return resolve(async () => {
256
- await checkPermissions(context);
257
- const useCase = context.container.resolve(LockEntryUseCase);
258
- const result = await useCase.execute({
259
- id: args.id,
260
- type: args.type
261
- });
262
- if (result.isFail()) {
263
- throw result.error;
264
- }
265
- return result.value;
266
- });
267
- },
268
- async updateEntryLock(_, args, context) {
269
- return resolve(async () => {
270
- await checkPermissions(context);
271
- const useCase = context.container.resolve(UpdateEntryLockUseCase);
272
- const result = await useCase.execute({
273
- id: args.id,
274
- type: args.type
275
- });
276
- if (result.isFail()) {
277
- throw result.error;
278
- }
279
- return result.value;
280
- });
281
- },
282
- async unlockEntry(_, args, context) {
283
- return resolve(async () => {
284
- await checkPermissions(context);
285
- const useCase = context.container.resolve(UnlockEntryUseCase);
286
- const result = await useCase.execute({
287
- id: args.id,
288
- type: args.type,
289
- force: args.force
290
- });
291
- if (result.isFail()) {
292
- throw result.error;
293
- }
294
- return result.value;
295
- });
296
- },
297
- async unlockEntryRequest(_, args, context) {
298
- return resolve(async () => {
299
- await checkPermissions(context);
300
- const useCase = context.container.resolve(UnlockEntryRequestUseCase);
301
- const result = await useCase.execute({
302
- id: args.id,
303
- type: args.type
304
- });
305
- if (result.isFail()) {
306
- throw result.error;
176
+ resolvers: {
177
+ Query: {
178
+ recordLocking: async ()=>({})
179
+ },
180
+ Mutation: {
181
+ recordLocking: async ()=>({})
182
+ },
183
+ RecordLockingQuery: {
184
+ async isEntryLocked (_, args, context) {
185
+ return resolve(async ()=>{
186
+ await checkPermissions(context);
187
+ const useCase = context.container.resolve(IsEntryLockedUseCase);
188
+ const result = await useCase.execute({
189
+ id: args.id,
190
+ type: args.type
191
+ });
192
+ if (result.isFail()) throw result.error;
193
+ return result.value;
194
+ });
195
+ },
196
+ async getLockRecord (_, args, context) {
197
+ return resolve(async ()=>{
198
+ await checkPermissions(context);
199
+ const useCase = context.container.resolve(GetLockRecordUseCase);
200
+ const result = await useCase.execute({
201
+ id: args.id,
202
+ type: args.type
203
+ });
204
+ if (result.isFail()) throw result.error;
205
+ return result.value;
206
+ });
207
+ },
208
+ async getLockedEntryLockRecord (_, args, context) {
209
+ return resolve(async ()=>{
210
+ await checkPermissions(context);
211
+ const useCase = context.container.resolve(GetLockedEntryLockRecordUseCase);
212
+ const result = await useCase.execute({
213
+ id: args.id,
214
+ type: args.type
215
+ });
216
+ if (result.isFail()) return null;
217
+ return result.value;
218
+ });
219
+ },
220
+ async listLockRecords (_, args, context) {
221
+ return resolveList(async ()=>{
222
+ await checkPermissions(context);
223
+ const useCase = context.container.resolve(ListLockRecordsUseCase);
224
+ const result = await useCase.execute(args);
225
+ if (result.isFail()) throw result.error;
226
+ return result.value;
227
+ });
228
+ },
229
+ listAllLockRecords (_, args, context) {
230
+ return resolveList(async ()=>{
231
+ await checkPermissions(context);
232
+ const useCase = context.container.resolve(ListAllLockRecordsUseCase);
233
+ const result = await useCase.execute(args);
234
+ if (result.isFail()) throw result.error;
235
+ return result.value;
236
+ });
237
+ }
238
+ },
239
+ RecordLockingMutation: {
240
+ async lockEntry (_, args, context) {
241
+ return resolve(async ()=>{
242
+ await checkPermissions(context);
243
+ const useCase = context.container.resolve(LockEntryUseCase);
244
+ const result = await useCase.execute({
245
+ id: args.id,
246
+ type: args.type
247
+ });
248
+ if (result.isFail()) throw result.error;
249
+ return result.value;
250
+ });
251
+ },
252
+ async updateEntryLock (_, args, context) {
253
+ return resolve(async ()=>{
254
+ await checkPermissions(context);
255
+ const useCase = context.container.resolve(UpdateEntryLockUseCase);
256
+ const result = await useCase.execute({
257
+ id: args.id,
258
+ type: args.type
259
+ });
260
+ if (result.isFail()) throw result.error;
261
+ return result.value;
262
+ });
263
+ },
264
+ async unlockEntry (_, args, context) {
265
+ return resolve(async ()=>{
266
+ await checkPermissions(context);
267
+ const useCase = context.container.resolve(UnlockEntryUseCase);
268
+ const result = await useCase.execute({
269
+ id: args.id,
270
+ type: args.type,
271
+ force: args.force
272
+ });
273
+ if (result.isFail()) throw result.error;
274
+ return result.value;
275
+ });
276
+ },
277
+ async unlockEntryRequest (_, args, context) {
278
+ return resolve(async ()=>{
279
+ await checkPermissions(context);
280
+ const useCase = context.container.resolve(UnlockEntryRequestUseCase);
281
+ const result = await useCase.execute({
282
+ id: args.id,
283
+ type: args.type
284
+ });
285
+ if (result.isFail()) throw result.error;
286
+ return result.value;
287
+ });
288
+ }
307
289
  }
308
- return result.value;
309
- });
310
290
  }
311
- }
312
- }
313
- });
314
- plugin.name = "recordLocking.graphql.schema.locking";
315
- return plugin;
291
+ });
292
+ plugin.name = "recordLocking.graphql.schema.locking";
293
+ return plugin;
316
294
  };
295
+ export { createGraphQLSchema };
317
296
 
318
297
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["resolve","resolveList","createGraphQLSchemaPlugin","renderFields","renderListFilterFields","renderSortEnum","checkPermissions","IsEntryLockedUseCase","GetLockRecordUseCase","GetLockedEntryLockRecordUseCase","ListLockRecordsUseCase","ListAllLockRecordsUseCase","LockEntryUseCase","UpdateEntryLockUseCase","UnlockEntryUseCase","UnlockEntryRequestUseCase","createGraphQLSchema","params","model","models","filter","fields","length","fieldTypePlugins","recordLockingFields","type","listFilterFieldsRender","excludeFields","sortEnumRender","sorterPlugins","plugin","typeDefs","map","f","join","allFiltersAsString","resolvers","Query","recordLocking","Mutation","RecordLockingQuery","isEntryLocked","_","args","context","useCase","container","result","execute","id","isFail","error","value","getLockRecord","getLockedEntryLockRecord","listLockRecords","listAllLockRecords","RecordLockingMutation","lockEntry","updateEntryLock","unlockEntry","force","unlockEntryRequest","name"],"sources":["schema.ts"],"sourcesContent":["import { resolve, resolveList } from \"./resolve.js\";\nimport type { IGraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createGraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\nimport { IsEntryLockedUseCase } from \"~/features/IsEntryLocked/abstractions.js\";\nimport { GetLockRecordUseCase } from \"~/features/GetLockRecord/abstractions.js\";\nimport { GetLockedEntryLockRecordUseCase } from \"~/features/GetLockedEntryLockRecord/abstractions.js\";\nimport { ListLockRecordsUseCase } from \"~/features/ListLockRecords/abstractions.js\";\nimport { ListAllLockRecordsUseCase } from \"~/features/ListAllLockRecords/abstractions.js\";\nimport { LockEntryUseCase } from \"~/features/LockEntry/abstractions.js\";\nimport { UpdateEntryLockUseCase } from \"~/features/UpdateEntryLock/abstractions.js\";\nimport { UnlockEntryUseCase } from \"~/features/UnlockEntry/abstractions.js\";\nimport { UnlockEntryRequestUseCase } from \"~/features/UnlockEntryRequest/abstractions.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types/model.js\";\nimport type { CmsFieldTypePlugins } from \"@webiny/api-headless-cms/types/index.js\";\n\ninterface Params {\n // Record locking model\n model: CmsModel;\n // All public models\n models: CmsModel[];\n fieldTypePlugins: CmsFieldTypePlugins;\n}\nexport const createGraphQLSchema = async (\n params: Params\n): Promise<IGraphQLSchemaPlugin<ApiCoreContext>> => {\n // Record locking model\n const model = params.model;\n\n // Other public models that have at least one field\n const models = params.models.filter(model => {\n return model.fields.length > 0;\n });\n\n const fieldTypePlugins = params.fieldTypePlugins;\n\n const recordLockingFields = renderFields({\n models,\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\"]\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n const plugin = createGraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: /* GraphQL */ `\n ${recordLockingFields.map(f => f.typeDefs).join(\"\\n\")}\n\n type RecordLockingError {\n message: String\n code: String\n data: JSON\n stack: String\n }\n\n enum RecordLockingRecordActionType {\n requested\n approved\n denied\n }\n\n type RecordLockingIdentity {\n id: String!\n displayName: String\n type: String\n }\n\n type RecordLockingRecordAction {\n id: ID!\n type: RecordLockingRecordActionType!\n message: String\n createdBy: RecordLockingIdentity!\n createdOn: DateTime!\n }\n\n type RecordLockingRecord {\n id: ID!\n lockedBy: RecordLockingIdentity!\n lockedOn: DateTime!\n updatedOn: DateTime!\n expiresOn: DateTime!\n ${recordLockingFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type RecordLockingIsEntryLockedResponse {\n data: Boolean\n error: RecordLockingError\n }\n\n type RecordLockingGetLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingGetLockedEntryLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingListLockRecordsResponse {\n data: [RecordLockingRecord!]\n error: RecordLockingError\n }\n\n type RecordLockingLockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n \n type RecordLockingUpdateLockResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryRequestResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n input RecordLockingListWhereInput {\n ${listFilterFieldsRender.allFiltersAsString()}\n }\n\n enum RecordLockingListSorter {\n ${sortEnumRender}\n }\n\n type RecordLockingQuery {\n _empty: String\n }\n\n type RecordLockingMutation {\n _empty: String\n }\n\n extend type RecordLockingQuery {\n isEntryLocked(id: ID!, type: String!): RecordLockingIsEntryLockedResponse!\n getLockRecord(id: ID!, type: String!): RecordLockingGetLockRecordResponse!\n # Returns lock record or null - if entry is locked in context of the current user, does not throw an error like getLockRecord if no record in the DB\n getLockedEntryLockRecord(id: ID!, type: String!): RecordLockingGetLockedEntryLockRecordResponse!\n listAllLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n # Basically same as listAllLockRecords except this one will filter out records with expired lock.\n listLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n }\n\n extend type RecordLockingMutation {\n lockEntry(id: ID!, type: String!): RecordLockingLockEntryResponse!\n updateEntryLock(id: ID!, type: String!): RecordLockingUpdateLockResponse!\n unlockEntry(id: ID!, type: String!, force: Boolean): RecordLockingUnlockEntryResponse!\n unlockEntryRequest(\n id: ID!\n type: String!\n ): RecordLockingUnlockEntryRequestResponse!\n }\n\n extend type Query {\n recordLocking: RecordLockingQuery\n }\n\n extend type Mutation {\n recordLocking: RecordLockingMutation\n }\n `,\n resolvers: {\n Query: {\n recordLocking: async () => ({})\n },\n Mutation: {\n recordLocking: async () => ({})\n },\n RecordLockingQuery: {\n async isEntryLocked(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(IsEntryLockedUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async getLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(GetLockRecordUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async getLockedEntryLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(GetLockedEntryLockRecordUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n // Returns null if not found/expired/locked by current user\n if (result.isFail()) {\n return null;\n }\n return result.value;\n });\n },\n\n async listLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(ListLockRecordsUseCase);\n const result = await useCase.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n listAllLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(ListAllLockRecordsUseCase);\n const result = await useCase.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n },\n RecordLockingMutation: {\n async lockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(LockEntryUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async updateEntryLock(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UpdateEntryLockUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async unlockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UnlockEntryUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type,\n force: args.force\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async unlockEntryRequest(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UnlockEntryRequestUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n }\n }\n });\n\n plugin.name = \"recordLocking.graphql.schema.locking\";\n\n return plugin;\n};\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,WAAW;AAE7B,SAASC,yBAAyB,QAAQ,yBAAyB;AACnE,SAASC,YAAY,QAAQ,gDAAgD;AAC7E,SAASC,sBAAsB,QAAQ,0DAA0D;AACjG,SAASC,cAAc,QAAQ,kDAAkD;AACjF,SAASC,gBAAgB;AACzB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAASC,+BAA+B;AACxC,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAC3B,SAASC,yBAAyB;AAYlC,OAAO,MAAMC,mBAAmB,GAAG,MAC/BC,MAAc,IACkC;EAChD;EACA,MAAMC,KAAK,GAAGD,MAAM,CAACC,KAAK;;EAE1B;EACA,MAAMC,MAAM,GAAGF,MAAM,CAACE,MAAM,CAACC,MAAM,CAACF,KAAK,IAAI;IACzC,OAAOA,KAAK,CAACG,MAAM,CAACC,MAAM,GAAG,CAAC;EAClC,CAAC,CAAC;EAEF,MAAMC,gBAAgB,GAAGN,MAAM,CAACM,gBAAgB;EAEhD,MAAMC,mBAAmB,GAAGrB,YAAY,CAAC;IACrCgB,MAAM;IACND,KAAK;IACLG,MAAM,EAAEH,KAAK,CAACG,MAAM;IACpBI,IAAI,EAAE,QAAQ;IACdF;EACJ,CAAC,CAAC;EAEF,MAAMG,sBAAsB,GAAGtB,sBAAsB,CAAC;IAClDc,KAAK;IACLG,MAAM,EAAEH,KAAK,CAACG,MAAM;IACpBI,IAAI,EAAE,QAAQ;IACdF,gBAAgB;IAChBI,aAAa,EAAE,CAAC,SAAS;EAC7B,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAGvB,cAAc,CAAC;IAClCa,KAAK;IACLG,MAAM,EAAEH,KAAK,CAACG,MAAM;IACpBE,gBAAgB;IAChBM,aAAa,EAAE;EACnB,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAG5B,yBAAyB,CAAiB;IACrD6B,QAAQ,EAAE,aAAc;AAChC,cAAcP,mBAAmB,CAACQ,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACF,QAAQ,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBV,mBAAmB,CAACQ,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACZ,MAAM,CAAC,CAACa,IAAI,CAAC,IAAI,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBR,sBAAsB,CAACS,kBAAkB,CAAC,CAAC;AAC7D;AACA;AACA;AACA,kBAAkBP,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDQ,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,aAAa,EAAE,MAAAA,CAAA,MAAa,CAAC,CAAC;MAClC,CAAC;MACDC,QAAQ,EAAE;QACND,aAAa,EAAE,MAAAA,CAAA,MAAa,CAAC,CAAC;MAClC,CAAC;MACDE,kBAAkB,EAAE;QAChB,MAAMC,aAAaA,CAACC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UAClC,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACO,oBAAoB,CAAC;YAC/D,MAAMwC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB;YACf,CAAC,CAAC;YACF,IAAIsB,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QACD,MAAMC,aAAaA,CAACX,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UAClC,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACQ,oBAAoB,CAAC;YAC/D,MAAMuC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB;YACf,CAAC,CAAC;YACF,IAAIsB,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QACD,MAAME,wBAAwBA,CAACZ,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UAC7C,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACS,+BAA+B,CAAC;YAC1E,MAAMsC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB;YACf,CAAC,CAAC;YACF;YACA,IAAIsB,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,OAAO,IAAI;YACf;YACA,OAAOH,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QAED,MAAMG,eAAeA,CAACb,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACpC,OAAO3C,WAAW,CAAC,YAAY;YAC3B,MAAMK,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACU,sBAAsB,CAAC;YACjE,MAAMqC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAACL,IAAI,CAAC;YAC1C,IAAII,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QACDI,kBAAkBA,CAACd,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACjC,OAAO3C,WAAW,CAAC,YAAY;YAC3B,MAAMK,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACW,yBAAyB,CAAC;YACpE,MAAMoC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAACL,IAAI,CAAC;YAC1C,IAAII,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN;MACJ,CAAC;MACDK,qBAAqB,EAAE;QACnB,MAAMC,SAASA,CAAChB,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UAC9B,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACY,gBAAgB,CAAC;YAC3D,MAAMmC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB;YACf,CAAC,CAAC;YACF,IAAIsB,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QACD,MAAMO,eAAeA,CAACjB,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACpC,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACa,sBAAsB,CAAC;YACjE,MAAMkC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB;YACf,CAAC,CAAC;YACF,IAAIsB,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QACD,MAAMQ,WAAWA,CAAClB,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UAChC,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACc,kBAAkB,CAAC;YAC7D,MAAMiC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB,IAAI;cACfoC,KAAK,EAAElB,IAAI,CAACkB;YAChB,CAAC,CAAC;YACF,IAAId,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN,CAAC;QACD,MAAMU,kBAAkBA,CAACpB,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACvC,OAAO5C,OAAO,CAAC,YAAY;YACvB,MAAMM,gBAAgB,CAACsC,OAAO,CAAC;YAC/B,MAAMC,OAAO,GAAGD,OAAO,CAACE,SAAS,CAAC9C,OAAO,CAACe,yBAAyB,CAAC;YACpE,MAAMgC,MAAM,GAAG,MAAMF,OAAO,CAACG,OAAO,CAAC;cACjCC,EAAE,EAAEN,IAAI,CAACM,EAAE;cACXxB,IAAI,EAAEkB,IAAI,CAAClB;YACf,CAAC,CAAC;YACF,IAAIsB,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;cACjB,MAAMH,MAAM,CAACI,KAAK;YACtB;YACA,OAAOJ,MAAM,CAACK,KAAK;UACvB,CAAC,CAAC;QACN;MACJ;IACJ;EACJ,CAAC,CAAC;EAEFtB,MAAM,CAACiC,IAAI,GAAG,sCAAsC;EAEpD,OAAOjC,MAAM;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"graphql/schema.js","sources":["../../src/graphql/schema.ts"],"sourcesContent":["import { resolve, resolveList } from \"./resolve.js\";\nimport type { IGraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createGraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\nimport { IsEntryLockedUseCase } from \"~/features/IsEntryLocked/abstractions.js\";\nimport { GetLockRecordUseCase } from \"~/features/GetLockRecord/abstractions.js\";\nimport { GetLockedEntryLockRecordUseCase } from \"~/features/GetLockedEntryLockRecord/abstractions.js\";\nimport { ListLockRecordsUseCase } from \"~/features/ListLockRecords/abstractions.js\";\nimport { ListAllLockRecordsUseCase } from \"~/features/ListAllLockRecords/abstractions.js\";\nimport { LockEntryUseCase } from \"~/features/LockEntry/abstractions.js\";\nimport { UpdateEntryLockUseCase } from \"~/features/UpdateEntryLock/abstractions.js\";\nimport { UnlockEntryUseCase } from \"~/features/UnlockEntry/abstractions.js\";\nimport { UnlockEntryRequestUseCase } from \"~/features/UnlockEntryRequest/abstractions.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types/model.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\ninterface Params {\n model: CmsModel;\n models: CmsModel[];\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\nexport const createGraphQLSchema = async (\n params: Params\n): Promise<IGraphQLSchemaPlugin<ApiCoreContext>> => {\n const model = params.model;\n\n const models = params.models.filter(model => {\n return model.fields.length > 0;\n });\n\n const fieldRegistry = params.fieldRegistry;\n\n const recordLockingFields = renderFields({\n models,\n model,\n fields: model.fields,\n type: \"manage\",\n fieldRegistry\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\"]\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldRegistry,\n sorters: []\n });\n\n const plugin = createGraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: /* GraphQL */ `\n ${recordLockingFields.map(f => f.typeDefs).join(\"\\n\")}\n\n type RecordLockingError {\n message: String\n code: String\n data: JSON\n stack: String\n }\n\n enum RecordLockingRecordActionType {\n requested\n approved\n denied\n }\n\n type RecordLockingIdentity {\n id: String!\n displayName: String\n type: String\n }\n\n type RecordLockingRecordAction {\n id: ID!\n type: RecordLockingRecordActionType!\n message: String\n createdBy: RecordLockingIdentity!\n createdOn: DateTime!\n }\n\n type RecordLockingRecord {\n id: ID!\n lockedBy: RecordLockingIdentity!\n lockedOn: DateTime!\n updatedOn: DateTime!\n expiresOn: DateTime!\n ${recordLockingFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type RecordLockingIsEntryLockedResponse {\n data: Boolean\n error: RecordLockingError\n }\n\n type RecordLockingGetLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingGetLockedEntryLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingListLockRecordsResponse {\n data: [RecordLockingRecord!]\n error: RecordLockingError\n }\n\n type RecordLockingLockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n \n type RecordLockingUpdateLockResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryRequestResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n input RecordLockingListWhereInput {\n ${listFilterFieldsRender.allFiltersAsString()}\n }\n\n enum RecordLockingListSorter {\n ${sortEnumRender}\n }\n\n type RecordLockingQuery {\n _empty: String\n }\n\n type RecordLockingMutation {\n _empty: String\n }\n\n extend type RecordLockingQuery {\n isEntryLocked(id: ID!, type: String!): RecordLockingIsEntryLockedResponse!\n getLockRecord(id: ID!, type: String!): RecordLockingGetLockRecordResponse!\n # Returns lock record or null - if entry is locked in context of the current user, does not throw an error like getLockRecord if no record in the DB\n getLockedEntryLockRecord(id: ID!, type: String!): RecordLockingGetLockedEntryLockRecordResponse!\n listAllLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n # Basically same as listAllLockRecords except this one will filter out records with expired lock.\n listLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n }\n\n extend type RecordLockingMutation {\n lockEntry(id: ID!, type: String!): RecordLockingLockEntryResponse!\n updateEntryLock(id: ID!, type: String!): RecordLockingUpdateLockResponse!\n unlockEntry(id: ID!, type: String!, force: Boolean): RecordLockingUnlockEntryResponse!\n unlockEntryRequest(\n id: ID!\n type: String!\n ): RecordLockingUnlockEntryRequestResponse!\n }\n\n extend type Query {\n recordLocking: RecordLockingQuery\n }\n\n extend type Mutation {\n recordLocking: RecordLockingMutation\n }\n `,\n resolvers: {\n Query: {\n recordLocking: async () => ({})\n },\n Mutation: {\n recordLocking: async () => ({})\n },\n RecordLockingQuery: {\n async isEntryLocked(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(IsEntryLockedUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async getLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(GetLockRecordUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async getLockedEntryLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(GetLockedEntryLockRecordUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n // Returns null if not found/expired/locked by current user\n if (result.isFail()) {\n return null;\n }\n return result.value;\n });\n },\n\n async listLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(ListLockRecordsUseCase);\n const result = await useCase.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n listAllLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(ListAllLockRecordsUseCase);\n const result = await useCase.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n },\n RecordLockingMutation: {\n async lockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(LockEntryUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async updateEntryLock(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UpdateEntryLockUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async unlockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UnlockEntryUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type,\n force: args.force\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async unlockEntryRequest(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UnlockEntryRequestUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n }\n }\n });\n\n plugin.name = \"recordLocking.graphql.schema.locking\";\n\n return plugin;\n};\n"],"names":["createGraphQLSchema","params","model","models","fieldRegistry","recordLockingFields","renderFields","listFilterFieldsRender","renderListFilterFields","sortEnumRender","renderSortEnum","plugin","createGraphQLSchemaPlugin","f","_","args","context","resolve","checkPermissions","useCase","IsEntryLockedUseCase","result","GetLockRecordUseCase","GetLockedEntryLockRecordUseCase","resolveList","ListLockRecordsUseCase","ListAllLockRecordsUseCase","LockEntryUseCase","UpdateEntryLockUseCase","UnlockEntryUseCase","UnlockEntryRequestUseCase"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -6,4 +6,4 @@ export interface ICreateContextPluginParams {
6
6
  */
7
7
  timeout?: number;
8
8
  }
9
- export declare const createRecordLocking: (params?: ICreateContextPluginParams) => ContextPlugin<ApiCoreContext>[];
9
+ export declare const createRecordLocking: (params?: ICreateContextPluginParams) => (ContextPlugin<ApiCoreContext> | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types").Context>)[];