@webiny/api-record-locking 6.3.0-beta.4 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) 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.js +7 -6
  21. package/features/GetLockRecord/feature.js.map +1 -1
  22. package/features/GetLockRecord/index.js +0 -2
  23. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +19 -28
  24. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -1
  25. package/features/GetLockedEntryLockRecord/abstractions.js +2 -10
  26. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -1
  27. package/features/GetLockedEntryLockRecord/feature.js +6 -5
  28. package/features/GetLockedEntryLockRecord/feature.js.map +1 -1
  29. package/features/GetLockedEntryLockRecord/index.js +0 -2
  30. package/features/IsEntryLocked/IsEntryLockedUseCase.js +22 -28
  31. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -1
  32. package/features/IsEntryLocked/abstractions.js +2 -9
  33. package/features/IsEntryLocked/abstractions.js.map +1 -1
  34. package/features/IsEntryLocked/feature.js +6 -5
  35. package/features/IsEntryLocked/feature.js.map +1 -1
  36. package/features/IsEntryLocked/index.js +0 -2
  37. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +32 -32
  38. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -1
  39. package/features/KickOutCurrentUser/abstractions.js +2 -6
  40. package/features/KickOutCurrentUser/abstractions.js.map +1 -1
  41. package/features/KickOutCurrentUser/feature.js +6 -5
  42. package/features/KickOutCurrentUser/feature.js.map +1 -1
  43. package/features/KickOutCurrentUser/index.js +0 -2
  44. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +31 -31
  45. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -1
  46. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +13 -10
  47. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -1
  48. package/features/ListAllLockRecords/abstractions.js +3 -14
  49. package/features/ListAllLockRecords/abstractions.js.map +1 -1
  50. package/features/ListAllLockRecords/feature.js +7 -6
  51. package/features/ListAllLockRecords/feature.js.map +1 -1
  52. package/features/ListAllLockRecords/index.js +0 -2
  53. package/features/ListLockRecords/ListLockRecordsRepository.js +31 -31
  54. package/features/ListLockRecords/ListLockRecordsRepository.js.map +1 -1
  55. package/features/ListLockRecords/ListLockRecordsUseCase.js +26 -23
  56. package/features/ListLockRecords/ListLockRecordsUseCase.js.map +1 -1
  57. package/features/ListLockRecords/abstractions.js +3 -14
  58. package/features/ListLockRecords/abstractions.js.map +1 -1
  59. package/features/ListLockRecords/feature.js +7 -6
  60. package/features/ListLockRecords/feature.js.map +1 -1
  61. package/features/ListLockRecords/index.js +0 -2
  62. package/features/LockEntry/LockEntryEventsDecorator.js +31 -31
  63. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -1
  64. package/features/LockEntry/LockEntryRepository.js +33 -30
  65. package/features/LockEntry/LockEntryRepository.js.map +1 -1
  66. package/features/LockEntry/LockEntryUseCase.js +21 -26
  67. package/features/LockEntry/LockEntryUseCase.js.map +1 -1
  68. package/features/LockEntry/abstractions.js +3 -14
  69. package/features/LockEntry/abstractions.js.map +1 -1
  70. package/features/LockEntry/events.js +25 -33
  71. package/features/LockEntry/events.js.map +1 -1
  72. package/features/LockEntry/feature.js +8 -7
  73. package/features/LockEntry/feature.js.map +1 -1
  74. package/features/LockEntry/index.js +0 -2
  75. package/features/RecordLockingFeature.js +19 -21
  76. package/features/RecordLockingFeature.js.map +1 -1
  77. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +32 -32
  78. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -1
  79. package/features/UnlockEntry/UnlockEntryRepository.js +29 -27
  80. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -1
  81. package/features/UnlockEntry/UnlockEntryUseCase.js +53 -69
  82. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -1
  83. package/features/UnlockEntry/abstractions.js +3 -14
  84. package/features/UnlockEntry/abstractions.js.map +1 -1
  85. package/features/UnlockEntry/events.js +25 -33
  86. package/features/UnlockEntry/events.js.map +1 -1
  87. package/features/UnlockEntry/feature.js +8 -7
  88. package/features/UnlockEntry/feature.js.map +1 -1
  89. package/features/UnlockEntry/hasFullAccessPermission.js +6 -7
  90. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -1
  91. package/features/UnlockEntry/index.js +0 -2
  92. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +31 -31
  93. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -1
  94. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +31 -30
  95. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -1
  96. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +62 -79
  97. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -1
  98. package/features/UnlockEntryRequest/abstractions.js +3 -14
  99. package/features/UnlockEntryRequest/abstractions.js.map +1 -1
  100. package/features/UnlockEntryRequest/events.js +25 -33
  101. package/features/UnlockEntryRequest/events.js.map +1 -1
  102. package/features/UnlockEntryRequest/feature.js +8 -7
  103. package/features/UnlockEntryRequest/feature.js.map +1 -1
  104. package/features/UnlockEntryRequest/index.js +0 -2
  105. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +45 -48
  106. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -1
  107. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +40 -51
  108. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -1
  109. package/features/UpdateEntryLock/abstractions.js +3 -14
  110. package/features/UpdateEntryLock/abstractions.js.map +1 -1
  111. package/features/UpdateEntryLock/feature.js +7 -6
  112. package/features/UpdateEntryLock/feature.js.map +1 -1
  113. package/features/UpdateEntryLock/index.js +0 -2
  114. package/graphql/checkPermissions.js +5 -9
  115. package/graphql/checkPermissions.js.map +1 -1
  116. package/graphql/resolve.js +15 -17
  117. package/graphql/resolve.js.map +1 -1
  118. package/graphql/schema.js +147 -165
  119. package/graphql/schema.js.map +1 -1
  120. package/index.js +40 -49
  121. package/index.js.map +1 -1
  122. package/package.json +17 -17
  123. package/types.js +6 -9
  124. package/types.js.map +1 -1
  125. package/utils/convertWhereCondition.js +20 -32
  126. package/utils/convertWhereCondition.js.map +1 -1
  127. package/utils/getTimeout.js +8 -15
  128. package/utils/getTimeout.js.map +1 -1
  129. package/utils/lockRecordDatabaseId.js +6 -11
  130. package/utils/lockRecordDatabaseId.js.map +1 -1
  131. package/domain/index.js.map +0 -1
  132. package/features/GetLockRecord/index.js.map +0 -1
  133. package/features/GetLockedEntryLockRecord/index.js.map +0 -1
  134. package/features/IsEntryLocked/index.js.map +0 -1
  135. package/features/KickOutCurrentUser/index.js.map +0 -1
  136. package/features/ListAllLockRecords/index.js.map +0 -1
  137. package/features/ListLockRecords/index.js.map +0 -1
  138. package/features/LockEntry/index.js.map +0 -1
  139. package/features/UnlockEntry/index.js.map +0 -1
  140. package/features/UnlockEntryRequest/index.js.map +0 -1
  141. package/features/UpdateEntryLock/index.js.map +0 -1
@@ -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","fieldRegistry","recordLockingFields","type","listFilterFieldsRender","excludeFields","sortEnumRender","sorters","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 { 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"],"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;AAUlC,OAAO,MAAMC,mBAAmB,GAAG,MAC/BC,MAAc,IACkC;EAChD,MAAMC,KAAK,GAAGD,MAAM,CAACC,KAAK;EAE1B,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,aAAa,GAAGN,MAAM,CAACM,aAAa;EAE1C,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,aAAa;IACbI,aAAa,EAAE,CAAC,SAAS;EAC7B,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAGvB,cAAc,CAAC;IAClCa,KAAK;IACLG,MAAM,EAAEH,KAAK,CAACG,MAAM;IACpBE,aAAa;IACbM,OAAO,EAAE;EACb,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,CA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","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.js CHANGED
@@ -2,62 +2,53 @@ import { ContextPlugin } from "@webiny/api";
2
2
  import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
3
3
  import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels";
4
4
  import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel";
5
- import { RecordLockingModel, RECORD_LOCKING_MODEL_ID } from "./domain/RecordLockingModel.js";
5
+ import { RECORD_LOCKING_MODEL_ID, RecordLockingModel } from "./domain/RecordLockingModel.js";
6
6
  import { getTimeout } from "./utils/getTimeout.js";
7
7
  import { RecordLockingFeature } from "./features/RecordLockingFeature.js";
8
8
  import { createGraphQLSchema } from "./graphql/schema.js";
9
9
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
10
10
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
11
11
  import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
12
- const createContextPlugin = params => {
13
- const plugin = new ContextPlugin(async context => {
14
- const tenantContext = context.container.resolve(TenantContext);
15
- const identityContext = context.container.resolve(IdentityContext);
16
- const wcp = context.container.resolve(WcpContext);
17
- const getModel = context.container.resolve(GetModelUseCase);
18
- const listModels = context.container.resolve(ListModelsUseCase);
19
- if (!wcp.canUseRecordLocking() || !tenantContext.getTenant()) {
20
- return;
21
- }
22
-
23
- // Register the private model
24
- context.container.register(RecordLockingModel);
25
-
26
- // Determine timeout value
27
- const timeout = getTimeout(params?.timeout);
28
-
29
- // Fetch CMS model to use for storing record locking data
30
- const [model, publicModels] = await identityContext.withoutAuthorization(async () => {
31
- const [model, publicModels] = await Promise.all([
32
- // Get a record locking model
33
- getModel.execute(RECORD_LOCKING_MODEL_ID),
34
- // Get all models
35
- listModels.execute({
36
- includePrivate: false
37
- })]);
38
- return [model.value, publicModels.value];
39
- });
40
- const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);
41
-
42
- // Register GraphQL schema plugin
43
- const graphQlPlugin = await createGraphQLSchema({
44
- model,
45
- models: publicModels,
46
- fieldRegistry
47
- });
48
- context.plugins.register(graphQlPlugin);
49
-
50
- // Register features
51
- RecordLockingFeature.register(context.container, {
52
- timeout,
53
- model
12
+ const createContextPlugin = (params)=>{
13
+ const plugin = new ContextPlugin(async (context)=>{
14
+ const tenantContext = context.container.resolve(TenantContext);
15
+ const identityContext = context.container.resolve(IdentityContext);
16
+ const wcp = context.container.resolve(WcpContext);
17
+ const getModel = context.container.resolve(GetModelUseCase);
18
+ const listModels = context.container.resolve(ListModelsUseCase);
19
+ if (!wcp.canUseRecordLocking() || !tenantContext.getTenant()) return;
20
+ context.container.register(RecordLockingModel);
21
+ const timeout = getTimeout(params?.timeout);
22
+ const [model, publicModels] = await identityContext.withoutAuthorization(async ()=>{
23
+ const [model, publicModels] = await Promise.all([
24
+ getModel.execute(RECORD_LOCKING_MODEL_ID),
25
+ listModels.execute({
26
+ includePrivate: false
27
+ })
28
+ ]);
29
+ return [
30
+ model.value,
31
+ publicModels.value
32
+ ];
33
+ });
34
+ const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);
35
+ const graphQlPlugin = await createGraphQLSchema({
36
+ model,
37
+ models: publicModels,
38
+ fieldRegistry
39
+ });
40
+ context.plugins.register(graphQlPlugin);
41
+ RecordLockingFeature.register(context.container, {
42
+ timeout,
43
+ model
44
+ });
54
45
  });
55
- });
56
- plugin.name = "context.recordLocking";
57
- return plugin;
58
- };
59
- export const createRecordLocking = params => {
60
- return [createContextPlugin(params)];
46
+ plugin.name = "context.recordLocking";
47
+ return plugin;
61
48
  };
49
+ const createRecordLocking = (params)=>[
50
+ createContextPlugin(params)
51
+ ];
52
+ export { createRecordLocking };
62
53
 
63
54
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ContextPlugin","WcpContext","ListModelsUseCase","GetModelUseCase","RecordLockingModel","RECORD_LOCKING_MODEL_ID","getTimeout","RecordLockingFeature","createGraphQLSchema","IdentityContext","TenantContext","CmsModelFieldToGraphQLRegistry","createContextPlugin","params","plugin","context","tenantContext","container","resolve","identityContext","wcp","getModel","listModels","canUseRecordLocking","getTenant","register","timeout","model","publicModels","withoutAuthorization","Promise","all","execute","includePrivate","value","fieldRegistry","graphQlPlugin","models","plugins","name","createRecordLocking"],"sources":["index.ts"],"sourcesContent":["import type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel\";\nimport { RecordLockingModel, RECORD_LOCKING_MODEL_ID } from \"~/domain/RecordLockingModel.js\";\nimport { getTimeout } from \"~/utils/getTimeout.js\";\nimport { RecordLockingFeature } from \"~/features/RecordLockingFeature.js\";\nimport { createGraphQLSchema } from \"~/graphql/schema.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\nexport interface ICreateContextPluginParams {\n /**\n * A number of seconds after the last activity to wait before the record is automatically unlocked.\n */\n timeout?: number;\n}\n\nconst createContextPlugin = (params?: ICreateContextPluginParams) => {\n const plugin = new ContextPlugin<ApiCoreContext>(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const identityContext = context.container.resolve(IdentityContext);\n const wcp = context.container.resolve(WcpContext);\n const getModel = context.container.resolve(GetModelUseCase);\n const listModels = context.container.resolve(ListModelsUseCase);\n\n if (!wcp.canUseRecordLocking() || !tenantContext.getTenant()) {\n return;\n }\n\n // Register the private model\n context.container.register(RecordLockingModel);\n\n // Determine timeout value\n const timeout = getTimeout(params?.timeout);\n\n // Fetch CMS model to use for storing record locking data\n const [model, publicModels] = await identityContext.withoutAuthorization(async () => {\n const [model, publicModels] = await Promise.all([\n // Get a record locking model\n getModel.execute(RECORD_LOCKING_MODEL_ID),\n // Get all models\n listModels.execute({ includePrivate: false })\n ]);\n\n return [model.value, publicModels.value];\n });\n\n const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);\n\n // Register GraphQL schema plugin\n const graphQlPlugin = await createGraphQLSchema({\n model,\n models: publicModels,\n fieldRegistry\n });\n\n context.plugins.register(graphQlPlugin);\n\n // Register features\n RecordLockingFeature.register(context.container, {\n timeout,\n model\n });\n });\n plugin.name = \"context.recordLocking\";\n\n return plugin;\n};\n\nexport const createRecordLocking = (params?: ICreateContextPluginParams) => {\n return [createContextPlugin(params)];\n};\n"],"mappings":"AACA,SAASA,aAAa,QAAQ,aAAa;AAC3C,SAASC,UAAU,QAAQ,mDAAmD;AAC9E,SAASC,iBAAiB,QAAQ,2DAA2D;AAC7F,SAASC,eAAe,QAAQ,yDAAyD;AACzF,SAASC,kBAAkB,EAAEC,uBAAuB;AACpD,SAASC,UAAU;AACnB,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAC5B,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,aAAa,QAAQ,0DAA0D;AACxF,SAASC,8BAA8B,QAAQ,qDAAqD;AASpG,MAAMC,mBAAmB,GAAIC,MAAmC,IAAK;EACjE,MAAMC,MAAM,GAAG,IAAId,aAAa,CAAiB,MAAMe,OAAO,IAAI;IAC9D,MAAMC,aAAa,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACR,aAAa,CAAC;IAC9D,MAAMS,eAAe,GAAGJ,OAAO,CAACE,SAAS,CAACC,OAAO,CAACT,eAAe,CAAC;IAClE,MAAMW,GAAG,GAAGL,OAAO,CAACE,SAAS,CAACC,OAAO,CAACjB,UAAU,CAAC;IACjD,MAAMoB,QAAQ,GAAGN,OAAO,CAACE,SAAS,CAACC,OAAO,CAACf,eAAe,CAAC;IAC3D,MAAMmB,UAAU,GAAGP,OAAO,CAACE,SAAS,CAACC,OAAO,CAAChB,iBAAiB,CAAC;IAE/D,IAAI,CAACkB,GAAG,CAACG,mBAAmB,CAAC,CAAC,IAAI,CAACP,aAAa,CAACQ,SAAS,CAAC,CAAC,EAAE;MAC1D;IACJ;;IAEA;IACAT,OAAO,CAACE,SAAS,CAACQ,QAAQ,CAACrB,kBAAkB,CAAC;;IAE9C;IACA,MAAMsB,OAAO,GAAGpB,UAAU,CAACO,MAAM,EAAEa,OAAO,CAAC;;IAE3C;IACA,MAAM,CAACC,KAAK,EAAEC,YAAY,CAAC,GAAG,MAAMT,eAAe,CAACU,oBAAoB,CAAC,YAAY;MACjF,MAAM,CAACF,KAAK,EAAEC,YAAY,CAAC,GAAG,MAAME,OAAO,CAACC,GAAG,CAAC;MAC5C;MACAV,QAAQ,CAACW,OAAO,CAAC3B,uBAAuB,CAAC;MACzC;MACAiB,UAAU,CAACU,OAAO,CAAC;QAAEC,cAAc,EAAE;MAAM,CAAC,CAAC,CAChD,CAAC;MAEF,OAAO,CAACN,KAAK,CAACO,KAAK,EAAEN,YAAY,CAACM,KAAK,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAGpB,OAAO,CAACE,SAAS,CAACC,OAAO,CAACP,8BAA8B,CAAC;;IAE/E;IACA,MAAMyB,aAAa,GAAG,MAAM5B,mBAAmB,CAAC;MAC5CmB,KAAK;MACLU,MAAM,EAAET,YAAY;MACpBO;IACJ,CAAC,CAAC;IAEFpB,OAAO,CAACuB,OAAO,CAACb,QAAQ,CAACW,aAAa,CAAC;;IAEvC;IACA7B,oBAAoB,CAACkB,QAAQ,CAACV,OAAO,CAACE,SAAS,EAAE;MAC7CS,OAAO;MACPC;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;EACFb,MAAM,CAACyB,IAAI,GAAG,uBAAuB;EAErC,OAAOzB,MAAM;AACjB,CAAC;AAED,OAAO,MAAM0B,mBAAmB,GAAI3B,MAAmC,IAAK;EACxE,OAAO,CAACD,mBAAmB,CAACC,MAAM,CAAC,CAAC;AACxC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel\";\nimport { RecordLockingModel, RECORD_LOCKING_MODEL_ID } from \"~/domain/RecordLockingModel.js\";\nimport { getTimeout } from \"~/utils/getTimeout.js\";\nimport { RecordLockingFeature } from \"~/features/RecordLockingFeature.js\";\nimport { createGraphQLSchema } from \"~/graphql/schema.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\nexport interface ICreateContextPluginParams {\n /**\n * A number of seconds after the last activity to wait before the record is automatically unlocked.\n */\n timeout?: number;\n}\n\nconst createContextPlugin = (params?: ICreateContextPluginParams) => {\n const plugin = new ContextPlugin<ApiCoreContext>(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const identityContext = context.container.resolve(IdentityContext);\n const wcp = context.container.resolve(WcpContext);\n const getModel = context.container.resolve(GetModelUseCase);\n const listModels = context.container.resolve(ListModelsUseCase);\n\n if (!wcp.canUseRecordLocking() || !tenantContext.getTenant()) {\n return;\n }\n\n // Register the private model\n context.container.register(RecordLockingModel);\n\n // Determine timeout value\n const timeout = getTimeout(params?.timeout);\n\n // Fetch CMS model to use for storing record locking data\n const [model, publicModels] = await identityContext.withoutAuthorization(async () => {\n const [model, publicModels] = await Promise.all([\n // Get a record locking model\n getModel.execute(RECORD_LOCKING_MODEL_ID),\n // Get all models\n listModels.execute({ includePrivate: false })\n ]);\n\n return [model.value, publicModels.value];\n });\n\n const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);\n\n // Register GraphQL schema plugin\n const graphQlPlugin = await createGraphQLSchema({\n model,\n models: publicModels,\n fieldRegistry\n });\n\n context.plugins.register(graphQlPlugin);\n\n // Register features\n RecordLockingFeature.register(context.container, {\n timeout,\n model\n });\n });\n plugin.name = \"context.recordLocking\";\n\n return plugin;\n};\n\nexport const createRecordLocking = (params?: ICreateContextPluginParams) => {\n return [createContextPlugin(params)];\n};\n"],"names":["createContextPlugin","params","plugin","ContextPlugin","context","tenantContext","TenantContext","identityContext","IdentityContext","wcp","WcpContext","getModel","GetModelUseCase","listModels","ListModelsUseCase","RecordLockingModel","timeout","getTimeout","model","publicModels","Promise","RECORD_LOCKING_MODEL_ID","fieldRegistry","CmsModelFieldToGraphQLRegistry","graphQlPlugin","createGraphQLSchema","RecordLockingFeature","createRecordLocking"],"mappings":";;;;;;;;;;;AAoBA,MAAMA,sBAAsB,CAACC;IACzB,MAAMC,SAAS,IAAIC,cAA8B,OAAMC;QACnD,MAAMC,gBAAgBD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAChD,MAAMC,kBAAkBH,QAAQ,SAAS,CAAC,OAAO,CAACI;QAClD,MAAMC,MAAML,QAAQ,SAAS,CAAC,OAAO,CAACM;QACtC,MAAMC,WAAWP,QAAQ,SAAS,CAAC,OAAO,CAACQ;QAC3C,MAAMC,aAAaT,QAAQ,SAAS,CAAC,OAAO,CAACU;QAE7C,IAAI,CAACL,IAAI,mBAAmB,MAAM,CAACJ,cAAc,SAAS,IACtD;QAIJD,QAAQ,SAAS,CAAC,QAAQ,CAACW;QAG3B,MAAMC,UAAUC,WAAWhB,QAAQ;QAGnC,MAAM,CAACiB,OAAOC,aAAa,GAAG,MAAMZ,gBAAgB,oBAAoB,CAAC;YACrE,MAAM,CAACW,OAAOC,aAAa,GAAG,MAAMC,QAAQ,GAAG,CAAC;gBAE5CT,SAAS,OAAO,CAACU;gBAEjBR,WAAW,OAAO,CAAC;oBAAE,gBAAgB;gBAAM;aAC9C;YAED,OAAO;gBAACK,MAAM,KAAK;gBAAEC,aAAa,KAAK;aAAC;QAC5C;QAEA,MAAMG,gBAAgBlB,QAAQ,SAAS,CAAC,OAAO,CAACmB;QAGhD,MAAMC,gBAAgB,MAAMC,oBAAoB;YAC5CP;YACA,QAAQC;YACRG;QACJ;QAEAlB,QAAQ,OAAO,CAAC,QAAQ,CAACoB;QAGzBE,qBAAqB,QAAQ,CAACtB,QAAQ,SAAS,EAAE;YAC7CY;YACAE;QACJ;IACJ;IACAhB,OAAO,IAAI,GAAG;IAEd,OAAOA;AACX;AAEO,MAAMyB,sBAAsB,CAAC1B,SACzB;QAACD,oBAAoBC;KAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-record-locking",
3
- "version": "6.3.0-beta.4",
3
+ "version": "6.4.0-beta.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -16,30 +16,30 @@
16
16
  ],
17
17
  "license": "MIT",
18
18
  "dependencies": {
19
- "@webiny/api": "6.3.0-beta.4",
20
- "@webiny/api-headless-cms": "6.3.0-beta.4",
21
- "@webiny/api-websockets": "6.3.0-beta.4",
22
- "@webiny/feature": "6.3.0-beta.4",
23
- "@webiny/handler": "6.3.0-beta.4",
24
- "@webiny/handler-aws": "6.3.0-beta.4",
25
- "@webiny/handler-graphql": "6.3.0-beta.4",
26
- "@webiny/plugins": "6.3.0-beta.4",
27
- "@webiny/utils": "6.3.0-beta.4"
19
+ "@webiny/api": "6.4.0-beta.0",
20
+ "@webiny/api-headless-cms": "6.4.0-beta.0",
21
+ "@webiny/api-websockets": "6.4.0-beta.0",
22
+ "@webiny/feature": "6.4.0-beta.0",
23
+ "@webiny/handler": "6.4.0-beta.0",
24
+ "@webiny/handler-aws": "6.4.0-beta.0",
25
+ "@webiny/handler-graphql": "6.4.0-beta.0",
26
+ "@webiny/plugins": "6.4.0-beta.0",
27
+ "@webiny/utils": "6.4.0-beta.0"
28
28
  },
29
29
  "devDependencies": {
30
- "@webiny/api-core": "6.3.0-beta.4",
31
- "@webiny/build-tools": "6.3.0-beta.4",
32
- "@webiny/project-utils": "6.3.0-beta.4",
33
- "@webiny/wcp": "6.3.0-beta.4",
34
- "graphql": "16.13.2",
30
+ "@webiny/api-core": "6.4.0-beta.0",
31
+ "@webiny/build-tools": "6.4.0-beta.0",
32
+ "@webiny/project-utils": "6.4.0-beta.0",
33
+ "@webiny/wcp": "6.4.0-beta.0",
34
+ "graphql": "16.14.0",
35
35
  "rimraf": "6.1.3",
36
36
  "type-fest": "5.6.0",
37
37
  "typescript": "6.0.3",
38
- "vitest": "4.1.5"
38
+ "vitest": "4.1.6"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public",
42
42
  "directory": "dist"
43
43
  },
44
- "gitHead": "7cefe15431dbd65504e1f58147dc9e55bcbfa693"
44
+ "gitHead": "a545d7529828af07d08d49c3da1bcb967483b9ce"
45
45
  }
package/types.js CHANGED
@@ -1,12 +1,9 @@
1
- export let RecordLockingLockRecordActionType = /*#__PURE__*/function (RecordLockingLockRecordActionType) {
2
- RecordLockingLockRecordActionType["requested"] = "requested";
3
- RecordLockingLockRecordActionType["approved"] = "approved";
4
- RecordLockingLockRecordActionType["denied"] = "denied";
5
- return RecordLockingLockRecordActionType;
1
+ var types_RecordLockingLockRecordActionType = /*#__PURE__*/ function(RecordLockingLockRecordActionType) {
2
+ RecordLockingLockRecordActionType["requested"] = "requested";
3
+ RecordLockingLockRecordActionType["approved"] = "approved";
4
+ RecordLockingLockRecordActionType["denied"] = "denied";
5
+ return RecordLockingLockRecordActionType;
6
6
  }({});
7
-
8
- /**
9
- * Do not use any special chars other than #, as we use this to create lock record IDs.
10
- */
7
+ export { types_RecordLockingLockRecordActionType as RecordLockingLockRecordActionType };
11
8
 
12
9
  //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["RecordLockingLockRecordActionType"],"sources":["types.ts"],"sourcesContent":["import type {\n CmsEntryListParams,\n CmsEntryMeta,\n CmsIdentity\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { CmsEntry, CmsError } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport type { CmsError, CmsEntry };\n\nexport type IRecordLockingIdentity = CmsIdentity;\n\nexport type IRecordLockingMeta = CmsEntryMeta;\n\nexport enum RecordLockingLockRecordActionType {\n requested = \"requested\",\n approved = \"approved\",\n denied = \"denied\"\n}\n\nexport interface IRecordLockingLockRecordRequestedAction {\n type: RecordLockingLockRecordActionType.requested;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordApprovedAction {\n type: RecordLockingLockRecordActionType.approved;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordDeniedAction {\n type: RecordLockingLockRecordActionType.denied;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport type IRecordLockingLockRecordAction =\n | IRecordLockingLockRecordRequestedAction\n | IRecordLockingLockRecordApprovedAction\n | IRecordLockingLockRecordDeniedAction;\n\nexport interface IRecordLockingLockRecordObject {\n id: string;\n targetId: string;\n type: IRecordLockingLockRecordEntryType;\n lockedBy: IRecordLockingIdentity;\n lockedOn: Date;\n updatedOn: Date;\n expiresOn: Date;\n actions?: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingLockRecord extends IRecordLockingLockRecordObject {\n toObject(): IRecordLockingLockRecordObject;\n addAction(action: IRecordLockingLockRecordAction): void;\n getUnlockRequested(): IRecordLockingLockRecordRequestedAction | undefined;\n getUnlockApproved(): IRecordLockingLockRecordApprovedAction | undefined;\n getUnlockDenied(): IRecordLockingLockRecordDeniedAction | undefined;\n isExpired(): boolean;\n}\n\n/**\n * Do not use any special chars other than #, as we use this to create lock record IDs.\n */\nexport type IRecordLockingLockRecordEntryType = string;\n\nexport type IRecordLockingListAllLockRecordsParams = Pick<\n CmsEntryListParams,\n \"where\" | \"limit\" | \"sort\" | \"after\"\n>;\n\nexport type IRecordLockingListLockRecordsParams = IRecordLockingListAllLockRecordsParams;\n"],"mappings":"AAaA,WAAYA,iCAAiC,0BAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAA,OAAjCA,iCAAiC;AAAA;;AAoD7C;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import type {\n CmsEntryListParams,\n CmsEntryMeta,\n CmsIdentity\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { CmsEntry, CmsError } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport type { CmsError, CmsEntry };\n\nexport type IRecordLockingIdentity = CmsIdentity;\n\nexport type IRecordLockingMeta = CmsEntryMeta;\n\nexport enum RecordLockingLockRecordActionType {\n requested = \"requested\",\n approved = \"approved\",\n denied = \"denied\"\n}\n\nexport interface IRecordLockingLockRecordRequestedAction {\n type: RecordLockingLockRecordActionType.requested;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordApprovedAction {\n type: RecordLockingLockRecordActionType.approved;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordDeniedAction {\n type: RecordLockingLockRecordActionType.denied;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport type IRecordLockingLockRecordAction =\n | IRecordLockingLockRecordRequestedAction\n | IRecordLockingLockRecordApprovedAction\n | IRecordLockingLockRecordDeniedAction;\n\nexport interface IRecordLockingLockRecordObject {\n id: string;\n targetId: string;\n type: IRecordLockingLockRecordEntryType;\n lockedBy: IRecordLockingIdentity;\n lockedOn: Date;\n updatedOn: Date;\n expiresOn: Date;\n actions?: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingLockRecord extends IRecordLockingLockRecordObject {\n toObject(): IRecordLockingLockRecordObject;\n addAction(action: IRecordLockingLockRecordAction): void;\n getUnlockRequested(): IRecordLockingLockRecordRequestedAction | undefined;\n getUnlockApproved(): IRecordLockingLockRecordApprovedAction | undefined;\n getUnlockDenied(): IRecordLockingLockRecordDeniedAction | undefined;\n isExpired(): boolean;\n}\n\n/**\n * Do not use any special chars other than #, as we use this to create lock record IDs.\n */\nexport type IRecordLockingLockRecordEntryType = string;\n\nexport type IRecordLockingListAllLockRecordsParams = Pick<\n CmsEntryListParams,\n \"where\" | \"limit\" | \"sort\" | \"after\"\n>;\n\nexport type IRecordLockingListLockRecordsParams = IRecordLockingListAllLockRecordsParams;\n"],"names":["RecordLockingLockRecordActionType"],"mappings":"AAaO,IAAKA,0CAAiCA,WAAAA,GAAAA,SAAjCA,iCAAiC;;;;WAAjCA"}
@@ -1,38 +1,26 @@
1
1
  import { createLockRecordDatabaseId } from "./lockRecordDatabaseId.js";
2
- const attachPrefix = value => {
3
- if (Array.isArray(value)) {
4
- return value.map(createLockRecordDatabaseId);
5
- }
6
- return createLockRecordDatabaseId(value);
2
+ const attachPrefix = (value)=>{
3
+ if (Array.isArray(value)) return value.map(createLockRecordDatabaseId);
4
+ return createLockRecordDatabaseId(value);
7
5
  };
8
- export const convertWhereCondition = where => {
9
- if (!where) {
10
- return where;
11
- }
12
- for (const key in where) {
13
- if (key.startsWith("AND") || key.startsWith("OR")) {
14
- const value = where[key];
15
- if (!value) {
16
- continue;
17
- }
18
- for (const subKey in value) {
19
- value[subKey] = convertWhereCondition(value[subKey]);
20
- }
21
- continue;
22
- } else if (key.startsWith("id") === false) {
23
- continue;
24
- }
25
- const value = where[key];
26
- if (!value) {
27
- continue;
6
+ const convertWhereCondition = (where)=>{
7
+ if (!where) return where;
8
+ for(const key in where){
9
+ if (key.startsWith("AND") || key.startsWith("OR")) {
10
+ const value = where[key];
11
+ if (!value) continue;
12
+ for(const subKey in value)value[subKey] = convertWhereCondition(value[subKey]);
13
+ continue;
14
+ }
15
+ if (false === key.startsWith("id")) continue;
16
+ const value = where[key];
17
+ if (!value) continue;
18
+ const newKey = key.replace("id", "entryId");
19
+ where[newKey] = attachPrefix(where[key]);
20
+ delete where[key];
28
21
  }
29
- const newKey = key.replace("id", "entryId");
30
- // @ts-expect-error
31
- where[newKey] = attachPrefix(where[key]);
32
- // @ts-expect-error
33
- delete where[key];
34
- }
35
- return where;
22
+ return where;
36
23
  };
24
+ export { convertWhereCondition };
37
25
 
38
26
  //# sourceMappingURL=convertWhereCondition.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createLockRecordDatabaseId","attachPrefix","value","Array","isArray","map","convertWhereCondition","where","key","startsWith","subKey","newKey","replace"],"sources":["convertWhereCondition.ts"],"sourcesContent":["import type { IRecordLockingListLockRecordsParams } from \"~/types.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\ntype IWhere = IRecordLockingListLockRecordsParams[\"where\"] | undefined;\n\nconst attachPrefix = (value: string | string[]) => {\n if (Array.isArray(value)) {\n return value.map(createLockRecordDatabaseId);\n }\n return createLockRecordDatabaseId(value);\n};\n\nexport const convertWhereCondition = (where: IWhere): IWhere => {\n if (!where) {\n return where;\n }\n for (const key in where) {\n if (key.startsWith(\"AND\") || key.startsWith(\"OR\")) {\n const value = where[key as keyof typeof where] as IWhere[] | undefined;\n if (!value) {\n continue;\n }\n for (const subKey in value) {\n value[subKey] = convertWhereCondition(value[subKey]);\n }\n continue;\n } else if (key.startsWith(\"id\") === false) {\n continue;\n }\n const value = where[key as keyof typeof where];\n if (!value) {\n continue;\n }\n\n const newKey = key.replace(\"id\", \"entryId\") as keyof typeof where;\n // @ts-expect-error\n where[newKey] = attachPrefix(where[key]);\n // @ts-expect-error\n delete where[key];\n }\n return where;\n};\n"],"mappings":"AACA,SAASA,0BAA0B;AAInC,MAAMC,YAAY,GAAIC,KAAwB,IAAK;EAC/C,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IACtB,OAAOA,KAAK,CAACG,GAAG,CAACL,0BAA0B,CAAC;EAChD;EACA,OAAOA,0BAA0B,CAACE,KAAK,CAAC;AAC5C,CAAC;AAED,OAAO,MAAMI,qBAAqB,GAAIC,KAAa,IAAa;EAC5D,IAAI,CAACA,KAAK,EAAE;IACR,OAAOA,KAAK;EAChB;EACA,KAAK,MAAMC,GAAG,IAAID,KAAK,EAAE;IACrB,IAAIC,GAAG,CAACC,UAAU,CAAC,KAAK,CAAC,IAAID,GAAG,CAACC,UAAU,CAAC,IAAI,CAAC,EAAE;MAC/C,MAAMP,KAAK,GAAGK,KAAK,CAACC,GAAG,CAA+C;MACtE,IAAI,CAACN,KAAK,EAAE;QACR;MACJ;MACA,KAAK,MAAMQ,MAAM,IAAIR,KAAK,EAAE;QACxBA,KAAK,CAACQ,MAAM,CAAC,GAAGJ,qBAAqB,CAACJ,KAAK,CAACQ,MAAM,CAAC,CAAC;MACxD;MACA;IACJ,CAAC,MAAM,IAAIF,GAAG,CAACC,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;MACvC;IACJ;IACA,MAAMP,KAAK,GAAGK,KAAK,CAACC,GAAG,CAAuB;IAC9C,IAAI,CAACN,KAAK,EAAE;MACR;IACJ;IAEA,MAAMS,MAAM,GAAGH,GAAG,CAACI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAuB;IACjE;IACAL,KAAK,CAACI,MAAM,CAAC,GAAGV,YAAY,CAACM,KAAK,CAACC,GAAG,CAAC,CAAC;IACxC;IACA,OAAOD,KAAK,CAACC,GAAG,CAAC;EACrB;EACA,OAAOD,KAAK;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utils/convertWhereCondition.js","sources":["../../src/utils/convertWhereCondition.ts"],"sourcesContent":["import type { IRecordLockingListLockRecordsParams } from \"~/types.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\ntype IWhere = IRecordLockingListLockRecordsParams[\"where\"] | undefined;\n\nconst attachPrefix = (value: string | string[]) => {\n if (Array.isArray(value)) {\n return value.map(createLockRecordDatabaseId);\n }\n return createLockRecordDatabaseId(value);\n};\n\nexport const convertWhereCondition = (where: IWhere): IWhere => {\n if (!where) {\n return where;\n }\n for (const key in where) {\n if (key.startsWith(\"AND\") || key.startsWith(\"OR\")) {\n const value = where[key as keyof typeof where] as IWhere[] | undefined;\n if (!value) {\n continue;\n }\n for (const subKey in value) {\n value[subKey] = convertWhereCondition(value[subKey]);\n }\n continue;\n } else if (key.startsWith(\"id\") === false) {\n continue;\n }\n const value = where[key as keyof typeof where];\n if (!value) {\n continue;\n }\n\n const newKey = key.replace(\"id\", \"entryId\") as keyof typeof where;\n // @ts-expect-error\n where[newKey] = attachPrefix(where[key]);\n // @ts-expect-error\n delete where[key];\n }\n return where;\n};\n"],"names":["attachPrefix","value","Array","createLockRecordDatabaseId","convertWhereCondition","where","key","subKey","newKey"],"mappings":";AAKA,MAAMA,eAAe,CAACC;IAClB,IAAIC,MAAM,OAAO,CAACD,QACd,OAAOA,MAAM,GAAG,CAACE;IAErB,OAAOA,2BAA2BF;AACtC;AAEO,MAAMG,wBAAwB,CAACC;IAClC,IAAI,CAACA,OACD,OAAOA;IAEX,IAAK,MAAMC,OAAOD,MAAO;QACrB,IAAIC,IAAI,UAAU,CAAC,UAAUA,IAAI,UAAU,CAAC,OAAO;YAC/C,MAAML,QAAQI,KAAK,CAACC,IAA0B;YAC9C,IAAI,CAACL,OACD;YAEJ,IAAK,MAAMM,UAAUN,MACjBA,KAAK,CAACM,OAAO,GAAGH,sBAAsBH,KAAK,CAACM,OAAO;YAEvD;QACJ;QAAO,IAAID,AAAyB,UAAzBA,IAAI,UAAU,CAAC,OACtB;QAEJ,MAAML,QAAQI,KAAK,CAACC,IAA0B;QAC9C,IAAI,CAACL,OACD;QAGJ,MAAMO,SAASF,IAAI,OAAO,CAAC,MAAM;QAEjCD,KAAK,CAACG,OAAO,GAAGR,aAAaK,KAAK,CAACC,IAAI;QAEvC,OAAOD,KAAK,CAACC,IAAI;IACrB;IACA,OAAOD;AACX"}
@@ -1,21 +1,14 @@
1
1
  const minTimeoutInSeconds = 30;
2
2
  const defaultTimeoutInSeconds = 60;
3
- /**
4
- * Input is in seconds.
5
- * Output is milliseconds.
6
- */
7
- export const getTimeout = input => {
8
- if (input && input > 0) {
9
- if (input < minTimeoutInSeconds) {
10
- return minTimeoutInSeconds * 1000;
3
+ const getTimeout = (input)=>{
4
+ if (input && input > 0) {
5
+ if (input < minTimeoutInSeconds) return 1000 * minTimeoutInSeconds;
6
+ return 1000 * input;
11
7
  }
12
- return input * 1000;
13
- }
14
- const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT) : undefined;
15
- if (!userDefined || isNaN(userDefined) || userDefined <= 0) {
16
- return defaultTimeoutInSeconds * 1000;
17
- }
18
- return userDefined * 1000;
8
+ const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT) : void 0;
9
+ if (!userDefined || isNaN(userDefined) || userDefined <= 0) return 1000 * defaultTimeoutInSeconds;
10
+ return 1000 * userDefined;
19
11
  };
12
+ export { getTimeout };
20
13
 
21
14
  //# sourceMappingURL=getTimeout.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["minTimeoutInSeconds","defaultTimeoutInSeconds","getTimeout","input","userDefined","process","env","WEBINY_RECORD_LOCK_TIMEOUT","parseInt","undefined","isNaN"],"sources":["getTimeout.ts"],"sourcesContent":["const minTimeoutInSeconds = 30;\nconst defaultTimeoutInSeconds = 60;\n/**\n * Input is in seconds.\n * Output is milliseconds.\n */\nexport const getTimeout = (input: number | undefined) => {\n if (input && input > 0) {\n if (input < minTimeoutInSeconds) {\n return minTimeoutInSeconds * 1000;\n }\n return input * 1000;\n }\n const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT\n ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT)\n : undefined;\n if (!userDefined || isNaN(userDefined) || userDefined <= 0) {\n return defaultTimeoutInSeconds * 1000;\n }\n return userDefined * 1000;\n};\n"],"mappings":"AAAA,MAAMA,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,uBAAuB,GAAG,EAAE;AAClC;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,KAAyB,IAAK;EACrD,IAAIA,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;IACpB,IAAIA,KAAK,GAAGH,mBAAmB,EAAE;MAC7B,OAAOA,mBAAmB,GAAG,IAAI;IACrC;IACA,OAAOG,KAAK,GAAG,IAAI;EACvB;EACA,MAAMC,WAAW,GAAGC,OAAO,CAACC,GAAG,CAACC,0BAA0B,GACpDC,QAAQ,CAACH,OAAO,CAACC,GAAG,CAACC,0BAA0B,CAAC,GAChDE,SAAS;EACf,IAAI,CAACL,WAAW,IAAIM,KAAK,CAACN,WAAW,CAAC,IAAIA,WAAW,IAAI,CAAC,EAAE;IACxD,OAAOH,uBAAuB,GAAG,IAAI;EACzC;EACA,OAAOG,WAAW,GAAG,IAAI;AAC7B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utils/getTimeout.js","sources":["../../src/utils/getTimeout.ts"],"sourcesContent":["const minTimeoutInSeconds = 30;\nconst defaultTimeoutInSeconds = 60;\n/**\n * Input is in seconds.\n * Output is milliseconds.\n */\nexport const getTimeout = (input: number | undefined) => {\n if (input && input > 0) {\n if (input < minTimeoutInSeconds) {\n return minTimeoutInSeconds * 1000;\n }\n return input * 1000;\n }\n const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT\n ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT)\n : undefined;\n if (!userDefined || isNaN(userDefined) || userDefined <= 0) {\n return defaultTimeoutInSeconds * 1000;\n }\n return userDefined * 1000;\n};\n"],"names":["minTimeoutInSeconds","defaultTimeoutInSeconds","getTimeout","input","userDefined","process","parseInt","undefined","isNaN"],"mappings":"AAAA,MAAMA,sBAAsB;AAC5B,MAAMC,0BAA0B;AAKzB,MAAMC,aAAa,CAACC;IACvB,IAAIA,SAASA,QAAQ,GAAG;QACpB,IAAIA,QAAQH,qBACR,OAAOA,AAAsB,OAAtBA;QAEX,OAAOG,AAAQ,OAARA;IACX;IACA,MAAMC,cAAcC,QAAQ,GAAG,CAAC,0BAA0B,GACpDC,SAASD,QAAQ,GAAG,CAAC,0BAA0B,IAC/CE;IACN,IAAI,CAACH,eAAeI,MAAMJ,gBAAgBA,eAAe,GACrD,OAAOH,AAA0B,OAA1BA;IAEX,OAAOG,AAAc,OAAdA;AACX"}
@@ -1,16 +1,11 @@
1
1
  import { parseIdentifier } from "@webiny/utils";
2
2
  const WBY_LM_PREFIX = "wby-lm-";
3
- export const createLockRecordDatabaseId = input => {
4
- const {
5
- id
6
- } = parseIdentifier(input);
7
- if (id.startsWith(WBY_LM_PREFIX)) {
8
- return id;
9
- }
10
- return `${WBY_LM_PREFIX}${id}`;
11
- };
12
- export const removeLockRecordDatabasePrefix = id => {
13
- return id.replace(WBY_LM_PREFIX, "");
3
+ const createLockRecordDatabaseId = (input)=>{
4
+ const { id } = parseIdentifier(input);
5
+ if (id.startsWith(WBY_LM_PREFIX)) return id;
6
+ return `${WBY_LM_PREFIX}${id}`;
14
7
  };
8
+ const removeLockRecordDatabasePrefix = (id)=>id.replace(WBY_LM_PREFIX, "");
9
+ export { createLockRecordDatabaseId, removeLockRecordDatabasePrefix };
15
10
 
16
11
  //# sourceMappingURL=lockRecordDatabaseId.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["parseIdentifier","WBY_LM_PREFIX","createLockRecordDatabaseId","input","id","startsWith","removeLockRecordDatabasePrefix","replace"],"sources":["lockRecordDatabaseId.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils\";\n\nconst WBY_LM_PREFIX = \"wby-lm-\";\n\nexport const createLockRecordDatabaseId = (input: string): string => {\n const { id } = parseIdentifier(input);\n if (id.startsWith(WBY_LM_PREFIX)) {\n return id;\n }\n return `${WBY_LM_PREFIX}${id}`;\n};\n\nexport const removeLockRecordDatabasePrefix = (id: string) => {\n return id.replace(WBY_LM_PREFIX, \"\");\n};\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAe;AAE/C,MAAMC,aAAa,GAAG,SAAS;AAE/B,OAAO,MAAMC,0BAA0B,GAAIC,KAAa,IAAa;EACjE,MAAM;IAAEC;EAAG,CAAC,GAAGJ,eAAe,CAACG,KAAK,CAAC;EACrC,IAAIC,EAAE,CAACC,UAAU,CAACJ,aAAa,CAAC,EAAE;IAC9B,OAAOG,EAAE;EACb;EACA,OAAO,GAAGH,aAAa,GAAGG,EAAE,EAAE;AAClC,CAAC;AAED,OAAO,MAAME,8BAA8B,GAAIF,EAAU,IAAK;EAC1D,OAAOA,EAAE,CAACG,OAAO,CAACN,aAAa,EAAE,EAAE,CAAC;AACxC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utils/lockRecordDatabaseId.js","sources":["../../src/utils/lockRecordDatabaseId.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils\";\n\nconst WBY_LM_PREFIX = \"wby-lm-\";\n\nexport const createLockRecordDatabaseId = (input: string): string => {\n const { id } = parseIdentifier(input);\n if (id.startsWith(WBY_LM_PREFIX)) {\n return id;\n }\n return `${WBY_LM_PREFIX}${id}`;\n};\n\nexport const removeLockRecordDatabasePrefix = (id: string) => {\n return id.replace(WBY_LM_PREFIX, \"\");\n};\n"],"names":["WBY_LM_PREFIX","createLockRecordDatabaseId","input","id","parseIdentifier","removeLockRecordDatabasePrefix"],"mappings":";AAEA,MAAMA,gBAAgB;AAEf,MAAMC,6BAA6B,CAACC;IACvC,MAAM,EAAEC,EAAE,EAAE,GAAGC,gBAAgBF;IAC/B,IAAIC,GAAG,UAAU,CAACH,gBACd,OAAOG;IAEX,OAAO,GAAGH,gBAAgBG,IAAI;AAClC;AAEO,MAAME,iCAAiC,CAACF,KACpCA,GAAG,OAAO,CAACH,eAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\nexport * from \"./errors.js\";\nexport * from \"./LockRecord.js\";\nexport * from \"./types.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["GetLockRecordFeature"],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\nexport { GetLockRecordFeature } from \"./feature.js\";\n"],"mappings":"AAAA;AACA,SAASA,oBAAoB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\nexport * from \"./feature.js\";\n"],"mappings":"AAAA;AACA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\nexport * from \"./feature.js\";\n"],"mappings":"AAAA;AACA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\nexport * from \"./events.js\";\nexport * from \"./feature.js\";\n"],"mappings":"AAAA;AACA;AACA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\n"],"mappings":"AAAA","ignoreList":[]}