@strapi/content-releases 0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956 → 0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485

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 (124) hide show
  1. package/dist/admin/components/EntryValidationPopover.js +62 -96
  2. package/dist/admin/components/EntryValidationPopover.js.map +1 -1
  3. package/dist/admin/components/EntryValidationPopover.mjs +64 -98
  4. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -1
  5. package/dist/admin/components/ReleaseAction.js +3 -1
  6. package/dist/admin/components/ReleaseAction.js.map +1 -1
  7. package/dist/admin/components/ReleaseAction.mjs +3 -1
  8. package/dist/admin/components/ReleaseAction.mjs.map +1 -1
  9. package/dist/admin/components/ReleaseActionMenu.js +25 -74
  10. package/dist/admin/components/ReleaseActionMenu.js.map +1 -1
  11. package/dist/admin/components/ReleaseActionMenu.mjs +26 -75
  12. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -1
  13. package/dist/admin/components/ReleaseModal.js +8 -0
  14. package/dist/admin/components/ReleaseModal.js.map +1 -1
  15. package/dist/admin/components/ReleaseModal.mjs +8 -0
  16. package/dist/admin/components/ReleaseModal.mjs.map +1 -1
  17. package/dist/admin/components/Widgets.js +122 -0
  18. package/dist/admin/components/Widgets.js.map +1 -0
  19. package/dist/admin/components/Widgets.mjs +120 -0
  20. package/dist/admin/components/Widgets.mjs.map +1 -0
  21. package/dist/admin/constants.js +2 -0
  22. package/dist/admin/constants.js.map +1 -1
  23. package/dist/admin/constants.mjs +2 -1
  24. package/dist/admin/constants.mjs.map +1 -1
  25. package/dist/admin/index.js +25 -2
  26. package/dist/admin/index.js.map +1 -1
  27. package/dist/admin/index.mjs +26 -3
  28. package/dist/admin/index.mjs.map +1 -1
  29. package/dist/admin/pages/PurchaseContentReleases.js +2 -2
  30. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -1
  31. package/dist/admin/pages/PurchaseContentReleases.mjs +3 -3
  32. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -1
  33. package/dist/admin/pages/ReleaseDetailsPage.js +111 -158
  34. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -1
  35. package/dist/admin/pages/ReleaseDetailsPage.mjs +113 -160
  36. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -1
  37. package/dist/admin/pages/ReleasesPage.js +130 -122
  38. package/dist/admin/pages/ReleasesPage.js.map +1 -1
  39. package/dist/admin/pages/ReleasesPage.mjs +131 -123
  40. package/dist/admin/pages/ReleasesPage.mjs.map +1 -1
  41. package/dist/admin/pages/ReleasesSettingsPage.js +36 -10
  42. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
  43. package/dist/admin/pages/ReleasesSettingsPage.mjs +37 -11
  44. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
  45. package/dist/admin/services/homepage.js +24 -0
  46. package/dist/admin/services/homepage.js.map +1 -0
  47. package/dist/admin/services/homepage.mjs +22 -0
  48. package/dist/admin/services/homepage.mjs.map +1 -0
  49. package/dist/admin/services/release.js +21 -12
  50. package/dist/admin/services/release.js.map +1 -1
  51. package/dist/admin/services/release.mjs +21 -12
  52. package/dist/admin/services/release.mjs.map +1 -1
  53. package/dist/admin/src/components/Widgets.d.ts +2 -0
  54. package/dist/admin/src/constants.d.ts +1 -0
  55. package/dist/admin/src/services/homepage.d.ts +9 -0
  56. package/dist/admin/src/services/release.d.ts +28 -28
  57. package/dist/admin/translations/en.json.js +6 -3
  58. package/dist/admin/translations/en.json.js.map +1 -1
  59. package/dist/admin/translations/en.json.mjs +6 -3
  60. package/dist/admin/translations/en.json.mjs.map +1 -1
  61. package/dist/server/controllers/homepage.js +15 -0
  62. package/dist/server/controllers/homepage.js.map +1 -0
  63. package/dist/server/controllers/homepage.mjs +13 -0
  64. package/dist/server/controllers/homepage.mjs.map +1 -0
  65. package/dist/server/controllers/index.js +2 -0
  66. package/dist/server/controllers/index.js.map +1 -1
  67. package/dist/server/controllers/index.mjs +2 -0
  68. package/dist/server/controllers/index.mjs.map +1 -1
  69. package/dist/server/destroy.js +2 -2
  70. package/dist/server/destroy.js.map +1 -1
  71. package/dist/server/destroy.mjs +2 -2
  72. package/dist/server/destroy.mjs.map +1 -1
  73. package/dist/server/routes/homepage.js +25 -0
  74. package/dist/server/routes/homepage.js.map +1 -0
  75. package/dist/server/routes/homepage.mjs +23 -0
  76. package/dist/server/routes/homepage.mjs.map +1 -0
  77. package/dist/server/routes/index.js +2 -0
  78. package/dist/server/routes/index.js.map +1 -1
  79. package/dist/server/routes/index.mjs +2 -0
  80. package/dist/server/routes/index.mjs.map +1 -1
  81. package/dist/server/services/homepage.js +26 -0
  82. package/dist/server/services/homepage.js.map +1 -0
  83. package/dist/server/services/homepage.mjs +24 -0
  84. package/dist/server/services/homepage.mjs.map +1 -0
  85. package/dist/server/services/index.js +2 -0
  86. package/dist/server/services/index.js.map +1 -1
  87. package/dist/server/services/index.mjs +2 -0
  88. package/dist/server/services/index.mjs.map +1 -1
  89. package/dist/server/services/release-action.js +2 -1
  90. package/dist/server/services/release-action.js.map +1 -1
  91. package/dist/server/services/release-action.mjs +2 -1
  92. package/dist/server/services/release-action.mjs.map +1 -1
  93. package/dist/server/services/scheduling.js +16 -12
  94. package/dist/server/services/scheduling.js.map +1 -1
  95. package/dist/server/services/scheduling.mjs +16 -12
  96. package/dist/server/services/scheduling.mjs.map +1 -1
  97. package/dist/server/src/controllers/homepage.d.ts +6 -0
  98. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  99. package/dist/server/src/controllers/index.d.ts +3 -0
  100. package/dist/server/src/controllers/index.d.ts.map +1 -1
  101. package/dist/server/src/destroy.d.ts.map +1 -1
  102. package/dist/server/src/index.d.ts +13 -4
  103. package/dist/server/src/index.d.ts.map +1 -1
  104. package/dist/server/src/routes/homepage.d.ts +4 -0
  105. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  106. package/dist/server/src/routes/index.d.ts +1 -0
  107. package/dist/server/src/routes/index.d.ts.map +1 -1
  108. package/dist/server/src/services/homepage.d.ts +9 -0
  109. package/dist/server/src/services/homepage.d.ts.map +1 -0
  110. package/dist/server/src/services/index.d.ts +9 -4
  111. package/dist/server/src/services/index.d.ts.map +1 -1
  112. package/dist/server/src/services/release-action.d.ts.map +1 -1
  113. package/dist/server/src/services/scheduling.d.ts +4 -5
  114. package/dist/server/src/services/scheduling.d.ts.map +1 -1
  115. package/dist/server/src/utils/index.d.ts.map +1 -1
  116. package/dist/server/utils/index.js +2 -1
  117. package/dist/server/utils/index.js.map +1 -1
  118. package/dist/server/utils/index.mjs +2 -1
  119. package/dist/server/utils/index.mjs.map +1 -1
  120. package/dist/shared/contracts/homepage.d.ts +11 -0
  121. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  122. package/dist/shared/types.d.ts +1 -0
  123. package/dist/shared/types.d.ts.map +1 -1
  124. package/package.json +10 -11
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.mjs","sources":["../../../server/src/services/scheduling.ts"],"sourcesContent":["import { scheduleJob, Job } from 'node-schedule';\nimport type { Core } from '@strapi/types';\n\nimport { errors } from '@strapi/utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { getService } from '../utils';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nconst createSchedulingService = ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs = new Map<Release['id'], Job>();\n\n return {\n async set(releaseId: Release['id'], scheduleDate: Date) {\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId, releasedAt: null } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const job = scheduleJob(scheduleDate, async () => {\n try {\n await getService('release', { strapi }).publish(releaseId);\n // @TODO: Trigger webhook with success message\n } catch (error) {\n // @TODO: Trigger webhook with error message\n }\n\n this.cancel(releaseId);\n });\n\n if (scheduledJobs.has(releaseId)) {\n this.cancel(releaseId);\n }\n\n scheduledJobs.set(releaseId, job);\n\n return scheduledJobs;\n },\n\n cancel(releaseId: Release['id']) {\n if (scheduledJobs.has(releaseId)) {\n scheduledJobs.get(releaseId)!.cancel();\n scheduledJobs.delete(releaseId);\n }\n\n return scheduledJobs;\n },\n\n getAll() {\n return scheduledJobs;\n },\n\n /**\n * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released\n * This is useful in case the server was restarted and the scheduled jobs were lost\n * This also could be used to sync different Strapi instances in case of a cluster\n */\n async syncFromDatabase() {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n scheduledAt: {\n $gte: new Date(),\n },\n releasedAt: null,\n },\n });\n\n for (const release of releases) {\n this.set(release.id, release.scheduledAt);\n }\n\n return scheduledJobs;\n },\n };\n};\n\nexport default createSchedulingService;\n"],"names":["createSchedulingService","strapi","scheduledJobs","Map","set","releaseId","scheduleDate","release","db","query","RELEASE_MODEL_UID","findOne","where","id","releasedAt","errors","NotFoundError","job","scheduleJob","getService","publish","error","cancel","has","get","delete","getAll","syncFromDatabase","releases","findMany","scheduledAt","$gte","Date"],"mappings":";;;;;AAQA,MAAMA,uBAA0B,GAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAClE,IAAA,MAAMC,gBAAgB,IAAIC,GAAAA,EAAAA;IAE1B,OAAO;QACL,MAAMC,GAAAA,CAAAA,CAAIC,SAAwB,EAAEC,YAAkB,EAAA;YACpD,MAAMC,OAAAA,GAAU,MAAMN,MAAOO,CAAAA,EAAE,CAC5BC,KAAK,CAACC,iBACNC,CAAAA,CAAAA,OAAO,CAAC;gBAAEC,KAAO,EAAA;oBAAEC,EAAIR,EAAAA,SAAAA;oBAAWS,UAAY,EAAA;AAAK;AAAE,aAAA,CAAA;AAExD,YAAA,IAAI,CAACP,OAAS,EAAA;gBACZ,MAAM,IAAIQ,OAAOC,aAAa,CAAC,CAAC,wBAAwB,EAAEX,UAAU,CAAC,CAAA;AACvE;YAEA,MAAMY,GAAAA,GAAMC,YAAYZ,YAAc,EAAA,UAAA;gBACpC,IAAI;AACF,oBAAA,MAAMa,WAAW,SAAW,EAAA;AAAElB,wBAAAA;AAAO,qBAAA,CAAA,CAAGmB,OAAO,CAACf,SAAAA,CAAAA;;AAElD,iBAAA,CAAE,OAAOgB,KAAO,EAAA;;AAEhB;gBAEA,IAAI,CAACC,MAAM,CAACjB,SAAAA,CAAAA;AACd,aAAA,CAAA;YAEA,IAAIH,aAAAA,CAAcqB,GAAG,CAAClB,SAAY,CAAA,EAAA;gBAChC,IAAI,CAACiB,MAAM,CAACjB,SAAAA,CAAAA;AACd;YAEAH,aAAcE,CAAAA,GAAG,CAACC,SAAWY,EAAAA,GAAAA,CAAAA;YAE7B,OAAOf,aAAAA;AACT,SAAA;AAEAoB,QAAAA,MAAAA,CAAAA,CAAOjB,SAAwB,EAAA;YAC7B,IAAIH,aAAAA,CAAcqB,GAAG,CAAClB,SAAY,CAAA,EAAA;gBAChCH,aAAcsB,CAAAA,GAAG,CAACnB,SAAAA,CAAAA,CAAYiB,MAAM,EAAA;AACpCpB,gBAAAA,aAAAA,CAAcuB,MAAM,CAACpB,SAAAA,CAAAA;AACvB;YAEA,OAAOH,aAAAA;AACT,SAAA;AAEAwB,QAAAA,MAAAA,CAAAA,GAAAA;YACE,OAAOxB,aAAAA;AACT,SAAA;AAEA;;;;AAIC,QACD,MAAMyB,gBAAAA,CAAAA,GAAAA;YACJ,MAAMC,QAAAA,GAAW,MAAM3B,MAAOO,CAAAA,EAAE,CAACC,KAAK,CAACC,iBAAmBmB,CAAAA,CAAAA,QAAQ,CAAC;gBACjEjB,KAAO,EAAA;oBACLkB,WAAa,EAAA;AACXC,wBAAAA,IAAAA,EAAM,IAAIC,IAAAA;AACZ,qBAAA;oBACAlB,UAAY,EAAA;AACd;AACF,aAAA,CAAA;YAEA,KAAK,MAAMP,WAAWqB,QAAU,CAAA;AAC9B,gBAAA,IAAI,CAACxB,GAAG,CAACG,QAAQM,EAAE,EAAEN,QAAQuB,WAAW,CAAA;AAC1C;YAEA,OAAO5B,aAAAA;AACT;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"scheduling.mjs","sources":["../../../server/src/services/scheduling.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { errors } from '@strapi/utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { getService } from '../utils';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nconst createSchedulingService = ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs = new Map<Release['id'], string>();\n\n return {\n async set(releaseId: Release['id'], scheduleDate: Date) {\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId, releasedAt: null } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const taskName = `publishRelease_${releaseId}`;\n\n strapi.cron.add({\n [taskName]: {\n async task() {\n try {\n await getService('release', { strapi }).publish(releaseId);\n // @TODO: Trigger webhook with success message\n } catch (error) {\n // @TODO: Trigger webhook with error message\n }\n },\n options: scheduleDate,\n },\n });\n\n if (scheduledJobs.has(releaseId)) {\n this.cancel(releaseId);\n }\n\n scheduledJobs.set(releaseId, taskName);\n\n return scheduledJobs;\n },\n\n cancel(releaseId: Release['id']) {\n if (scheduledJobs.has(releaseId)) {\n strapi.cron.remove(scheduledJobs.get(releaseId)!);\n scheduledJobs.delete(releaseId);\n }\n\n return scheduledJobs;\n },\n\n getAll() {\n return scheduledJobs;\n },\n\n /**\n * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released\n * This is useful in case the server was restarted and the scheduled jobs were lost\n * This also could be used to sync different Strapi instances in case of a cluster\n */\n async syncFromDatabase() {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n scheduledAt: {\n $gte: new Date(),\n },\n releasedAt: null,\n },\n });\n\n for (const release of releases) {\n this.set(release.id, release.scheduledAt);\n }\n\n return scheduledJobs;\n },\n };\n};\n\nexport default createSchedulingService;\n"],"names":["createSchedulingService","strapi","scheduledJobs","Map","set","releaseId","scheduleDate","release","db","query","RELEASE_MODEL_UID","findOne","where","id","releasedAt","errors","NotFoundError","taskName","cron","add","task","getService","publish","error","options","has","cancel","remove","get","delete","getAll","syncFromDatabase","releases","findMany","scheduledAt","$gte","Date"],"mappings":";;;;AAOA,MAAMA,uBAA0B,GAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAClE,IAAA,MAAMC,gBAAgB,IAAIC,GAAAA,EAAAA;IAE1B,OAAO;QACL,MAAMC,GAAAA,CAAAA,CAAIC,SAAwB,EAAEC,YAAkB,EAAA;YACpD,MAAMC,OAAAA,GAAU,MAAMN,MAAOO,CAAAA,EAAE,CAC5BC,KAAK,CAACC,iBACNC,CAAAA,CAAAA,OAAO,CAAC;gBAAEC,KAAO,EAAA;oBAAEC,EAAIR,EAAAA,SAAAA;oBAAWS,UAAY,EAAA;AAAK;AAAE,aAAA,CAAA;AAExD,YAAA,IAAI,CAACP,OAAS,EAAA;gBACZ,MAAM,IAAIQ,OAAOC,aAAa,CAAC,CAAC,wBAAwB,EAAEX,UAAU,CAAC,CAAA;AACvE;AAEA,YAAA,MAAMY,QAAW,GAAA,CAAC,eAAe,EAAEZ,UAAU,CAAC;YAE9CJ,MAAOiB,CAAAA,IAAI,CAACC,GAAG,CAAC;AACd,gBAAA,CAACF,WAAW;oBACV,MAAMG,IAAAA,CAAAA,GAAAA;wBACJ,IAAI;AACF,4BAAA,MAAMC,WAAW,SAAW,EAAA;AAAEpB,gCAAAA;AAAO,6BAAA,CAAA,CAAGqB,OAAO,CAACjB,SAAAA,CAAAA;;AAElD,yBAAA,CAAE,OAAOkB,KAAO,EAAA;;AAEhB;AACF,qBAAA;oBACAC,OAASlB,EAAAA;AACX;AACF,aAAA,CAAA;YAEA,IAAIJ,aAAAA,CAAcuB,GAAG,CAACpB,SAAY,CAAA,EAAA;gBAChC,IAAI,CAACqB,MAAM,CAACrB,SAAAA,CAAAA;AACd;YAEAH,aAAcE,CAAAA,GAAG,CAACC,SAAWY,EAAAA,QAAAA,CAAAA;YAE7B,OAAOf,aAAAA;AACT,SAAA;AAEAwB,QAAAA,MAAAA,CAAAA,CAAOrB,SAAwB,EAAA;YAC7B,IAAIH,aAAAA,CAAcuB,GAAG,CAACpB,SAAY,CAAA,EAAA;AAChCJ,gBAAAA,MAAAA,CAAOiB,IAAI,CAACS,MAAM,CAACzB,aAAAA,CAAc0B,GAAG,CAACvB,SAAAA,CAAAA,CAAAA;AACrCH,gBAAAA,aAAAA,CAAc2B,MAAM,CAACxB,SAAAA,CAAAA;AACvB;YAEA,OAAOH,aAAAA;AACT,SAAA;AAEA4B,QAAAA,MAAAA,CAAAA,GAAAA;YACE,OAAO5B,aAAAA;AACT,SAAA;AAEA;;;;AAIC,QACD,MAAM6B,gBAAAA,CAAAA,GAAAA;YACJ,MAAMC,QAAAA,GAAW,MAAM/B,MAAOO,CAAAA,EAAE,CAACC,KAAK,CAACC,iBAAmBuB,CAAAA,CAAAA,QAAQ,CAAC;gBACjErB,KAAO,EAAA;oBACLsB,WAAa,EAAA;AACXC,wBAAAA,IAAAA,EAAM,IAAIC,IAAAA;AACZ,qBAAA;oBACAtB,UAAY,EAAA;AACd;AACF,aAAA,CAAA;YAEA,KAAK,MAAMP,WAAWyB,QAAU,CAAA;AAC9B,gBAAA,IAAI,CAAC5B,GAAG,CAACG,QAAQM,EAAE,EAAEN,QAAQ2B,WAAW,CAAA;AAC1C;YAEA,OAAOhC,aAAAA;AACT;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ import type { GetUpcomingReleases } from '../../../shared/contracts/homepage';
2
+ declare const homepageController: () => {
3
+ getUpcomingReleases(): Promise<GetUpcomingReleases.Response>;
4
+ };
5
+ export default homepageController;
6
+ //# sourceMappingURL=homepage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/homepage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,QAAA,MAAM,kBAAkB;2BAIS,QAAQ,4BAA4B,CAAC;CAIrE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,5 +1,8 @@
1
1
  /// <reference types="koa" />
2
2
  export declare const controllers: {
3
+ homepage: () => {
4
+ getUpcomingReleases(): Promise<import("../../../shared/contracts/homepage").GetUpcomingReleases.Response>;
5
+ };
3
6
  release: {
4
7
  findByDocumentAttached(ctx: import("koa").Context): Promise<void>;
5
8
  findPage(ctx: import("koa").Context): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/index.ts"],"names":[],"mappings":";AAIA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;CAIvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/index.ts"],"names":[],"mappings":";AAKA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAKvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../../server/src/destroy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,eAAO,MAAM,OAAO,eAAsB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,kBAQhE,CAAC"}
1
+ {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../../server/src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,eAAO,MAAM,OAAO,eAAsB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,kBAQhE,CAAC"}
@@ -107,6 +107,11 @@ declare const _default: {
107
107
  };
108
108
  };
109
109
  services: {
110
+ homepage: ({ strapi }: {
111
+ strapi: import("@strapi/types/dist/core").Strapi;
112
+ }) => {
113
+ getUpcomingReleases(): Promise<import("../../shared/contracts/releases").Release[]>;
114
+ };
110
115
  release: ({ strapi }: {
111
116
  strapi: import("@strapi/types/dist/core").Strapi;
112
117
  }) => {
@@ -1914,10 +1919,10 @@ declare const _default: {
1914
1919
  scheduling: ({ strapi }: {
1915
1920
  strapi: import("@strapi/types/dist/core").Strapi;
1916
1921
  }) => {
1917
- set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>>;
1918
- cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>;
1919
- getAll(): Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>;
1920
- syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>>;
1922
+ set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
1923
+ cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID, string>;
1924
+ getAll(): Map<import("@strapi/types/dist/data").ID, string>;
1925
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
1921
1926
  };
1922
1927
  settings: ({ strapi }: {
1923
1928
  strapi: import("@strapi/types/dist/core").Strapi;
@@ -1929,6 +1934,9 @@ declare const _default: {
1929
1934
  };
1930
1935
  };
1931
1936
  controllers: {
1937
+ homepage: () => {
1938
+ getUpcomingReleases(): Promise<import("../../shared/contracts/homepage").GetUpcomingReleases.Response>;
1939
+ };
1932
1940
  release: {
1933
1941
  findByDocumentAttached(ctx: import("koa").Context): Promise<void>;
1934
1942
  findPage(ctx: import("koa").Context): Promise<void>;
@@ -1952,6 +1960,7 @@ declare const _default: {
1952
1960
  };
1953
1961
  };
1954
1962
  routes: {
1963
+ homepage: import("@strapi/types/dist/core").Router;
1955
1964
  settings: {
1956
1965
  type: string;
1957
1966
  routes: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,wBAA2B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,wBAA2B"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from '@strapi/types';
2
+ declare const homepageRouter: Plugin.LoadedPlugin['routes'][string];
3
+ export default homepageRouter;
4
+ //# sourceMappingURL=homepage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/homepage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAazD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare const routes: {
2
+ homepage: import("@strapi/types/dist/core").Router;
2
3
  settings: {
3
4
  type: string;
4
5
  routes: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIlB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { GetUpcomingReleases } from '../../../shared/contracts/homepage';
3
+ declare const createHomepageService: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => {
6
+ getUpcomingReleases(): Promise<GetUpcomingReleases.Response['data']>;
7
+ };
8
+ export default createHomepageService;
9
+ //# sourceMappingURL=homepage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../server/src/services/homepage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,QAAA,MAAM,qBAAqB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;2BAIjC,QAAQ,4BAA4B,CAAC,MAAM,CAAC,CAAC;CAc7E,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1,5 +1,10 @@
1
1
  /// <reference types="lodash" />
2
2
  export declare const services: {
3
+ homepage: ({ strapi }: {
4
+ strapi: import("@strapi/types/dist/core").Strapi;
5
+ }) => {
6
+ getUpcomingReleases(): Promise<import("../../../shared/contracts/releases").Release[]>;
7
+ };
3
8
  release: ({ strapi }: {
4
9
  strapi: import("@strapi/types/dist/core").Strapi;
5
10
  }) => {
@@ -1807,10 +1812,10 @@ export declare const services: {
1807
1812
  scheduling: ({ strapi }: {
1808
1813
  strapi: import("@strapi/types/dist/core").Strapi;
1809
1814
  }) => {
1810
- set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>>;
1811
- cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>;
1812
- getAll(): Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>;
1813
- syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, import("node-schedule").Job>>;
1815
+ set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
1816
+ cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID, string>;
1817
+ getAll(): Map<import("@strapi/types/dist/data").ID, string>;
1818
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
1814
1819
  };
1815
1820
  settings: ({ strapi }: {
1816
1821
  strapi: import("@strapi/types/dist/core").Strapi;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAMA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAOA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"release-action.d.ts","sourceRoot":"","sources":["../../../../server/src/services/release-action.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,IAAI,EAAY,OAAO,EAAE,GAAG,EAAQ,MAAM,eAAe,CAAC;AAIxE,OAAO,EAAE,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AAE3E,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgBpD,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,QAAA,MAAM,0BAA0B,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;sBAyCtD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,2BAA2B,CAAC,MAAM,CAAC,mCACH;QAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;KAAE;wBAoErE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACnD,yBAAyB,CAAC,OAAO,CAAC;;;;;;;;;0BAsDhB,aAAa,EAAE,WAAW,oBAAoB;6CA6B3B,aAAa,EAAE;wBAsCrD,QAAQ,aAAa,CAAC,MAAM,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC;qBAQ1E,2BAA2B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,2BAA2B,CAAC,MAAM,CAAC;qBAwDjC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;mDAyBV,IAAI,WAAW,EAAE;CAuDzE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"release-action.d.ts","sourceRoot":"","sources":["../../../../server/src/services/release-action.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,IAAI,EAAY,OAAO,EAAE,GAAG,EAAQ,MAAM,eAAe,CAAC;AAIxE,OAAO,EAAE,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AAE3E,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgBpD,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,QAAA,MAAM,0BAA0B,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;sBAyCtD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,2BAA2B,CAAC,MAAM,CAAC,mCACH;QAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;KAAE;wBAoErE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACnD,yBAAyB,CAAC,OAAO,CAAC;;;;;;;;;0BAsDhB,aAAa,EAAE,WAAW,oBAAoB;6CA6B3B,aAAa,EAAE;wBAuCrD,QAAQ,aAAa,CAAC,MAAM,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC;qBAQ1E,2BAA2B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,2BAA2B,CAAC,MAAM,CAAC;qBAwDjC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;mDAyBV,IAAI,WAAW,EAAE;CAuDzE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF,eAAe,0BAA0B,CAAC"}
@@ -1,18 +1,17 @@
1
- import { Job } from 'node-schedule';
2
1
  import type { Core } from '@strapi/types';
3
2
  import { Release } from '../../../shared/contracts/releases';
4
3
  declare const createSchedulingService: ({ strapi }: {
5
4
  strapi: Core.Strapi;
6
5
  }) => {
7
- set(releaseId: Release['id'], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, Job>>;
8
- cancel(releaseId: Release['id']): Map<import("@strapi/types/dist/data").ID, Job>;
9
- getAll(): Map<import("@strapi/types/dist/data").ID, Job>;
6
+ set(releaseId: Release['id'], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
7
+ cancel(releaseId: Release['id']): Map<import("@strapi/types/dist/data").ID, string>;
8
+ getAll(): Map<import("@strapi/types/dist/data").ID, string>;
10
9
  /**
11
10
  * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released
12
11
  * This is useful in case the server was restarted and the scheduled jobs were lost
13
12
  * This also could be used to sync different Strapi instances in case of a cluster
14
13
  */
15
- syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, Job>>;
14
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
16
15
  };
17
16
  export default createSchedulingService;
18
17
  //# sourceMappingURL=scheduling.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../server/src/services/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,GAAG,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAI7D,QAAA,MAAM,uBAAuB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;mBAI3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI;sBA6BpC,OAAO,CAAC,IAAI,CAAC;;IAa/B;;;;OAIG;;CAkBN,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../server/src/services/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAI7D,QAAA,MAAM,uBAAuB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;mBAI3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI;sBAkCpC,OAAO,CAAC,IAAI,CAAC;;IAa/B;;;;OAIG;;CAkBN,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,UAAU,MAAM;IACd,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,uCACf,KAAK,cACC;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,wCACE,MAAM,cAC/B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,mBACP,MAAM,SACf,GAAG,cACE;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBAyBpC,CAAC;AAEF,eAAO,MAAM,QAAQ,2DAOhB,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,cACjD;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,+EAmBpC,CAAC;AAEF,eAAO,MAAM,cAAc,gBAAuB,IAAI,WAAW,SAAS,KAAK,WAAW,gDAwBzF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,UAAU,MAAM;IACd,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,uCACf,KAAK,cACC;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,wCACE,MAAM,cAC/B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,mBACP,MAAM,SACf,GAAG,cACE;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBA0BpC,CAAC;AAEF,eAAO,MAAM,QAAQ,2DAOhB,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,cACjD;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,+EAmBpC,CAAC;AAEF,eAAO,MAAM,cAAc,gBAAuB,IAAI,WAAW,SAAS,KAAK,WAAW,gDAwBzF,CAAC"}
@@ -25,7 +25,8 @@ const isEntryValid = async (contentTypeUid, entry, { strapi: strapi1 })=>{
25
25
  await strapi1.entityValidator.validateEntityCreation(strapi1.getModel(contentTypeUid), entry, undefined, // @ts-expect-error - FIXME: entity here is unnecessary
26
26
  entry);
27
27
  const workflowsService = strapi1.plugin('review-workflows').service('workflows');
28
- const workflow = await workflowsService.getAssignedWorkflow(contentTypeUid, {
28
+ // Workflows service may not be available depending on the license
29
+ const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {
29
30
  populate: 'stageRequiredToPublish'
30
31
  });
31
32
  if (workflow?.stageRequiredToPublish) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { UID, Data, Core } from '@strapi/types';\n\nimport type { SettingsService } from '../services/settings';\nimport type { ReleaseService } from '../services/release';\nimport type { ReleaseActionService } from '../services/release-action';\n\ntype Services = {\n release: ReleaseService;\n 'release-validation': any;\n scheduling: any;\n 'release-action': ReleaseActionService;\n 'event-manager': any;\n settings: SettingsService;\n};\n\ninterface Action {\n contentType: UID.ContentType;\n documentId?: Data.DocumentID;\n locale?: string;\n}\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n { strapi }: { strapi: Core.Strapi }\n): Services[TName] => {\n return strapi.plugin('content-releases').service(name);\n};\n\nexport const getDraftEntryValidStatus = async (\n { contentType, documentId, locale }: Action,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');\n // @ts-expect-error - populateBuilderService should be a function but is returning service\n const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();\n\n const entry = await getEntry({ contentType, documentId, locale, populate }, { strapi });\n\n return isEntryValid(contentType, entry, { strapi });\n};\n\nexport const isEntryValid = async (\n contentTypeUid: string,\n entry: any,\n { strapi }: { strapi: Core.Strapi }\n) => {\n try {\n // @TODO: When documents service has validateEntityCreation method, use it instead\n await strapi.entityValidator.validateEntityCreation(\n strapi.getModel(contentTypeUid as UID.ContentType),\n entry,\n undefined,\n // @ts-expect-error - FIXME: entity here is unnecessary\n entry\n );\n\n const workflowsService = strapi.plugin('review-workflows').service('workflows');\n const workflow = await workflowsService.getAssignedWorkflow(contentTypeUid, {\n populate: 'stageRequiredToPublish',\n });\n\n if (workflow?.stageRequiredToPublish) {\n return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;\n }\n\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getEntry = async (\n {\n contentType,\n documentId,\n locale,\n populate,\n status = 'draft',\n }: Action & { status?: 'draft' | 'published'; populate: any },\n { strapi }: { strapi: Core.Strapi }\n) => {\n if (documentId) {\n // Try to get an existing draft or published document\n const entry = await strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status });\n\n // The document isn't published yet, but the action is to publish it, fetch the draft\n if (status === 'published' && !entry) {\n return strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status: 'draft' });\n }\n\n return entry;\n }\n\n return strapi.documents(contentType).findFirst({ locale, populate, status });\n};\n\nexport const getEntryStatus = async (contentType: UID.ContentType, entry: Data.ContentType) => {\n if (entry.publishedAt) {\n return 'published';\n }\n\n const publishedEntry = await strapi.documents(contentType).findOne({\n documentId: entry.documentId,\n locale: entry.locale,\n status: 'published',\n fields: ['updatedAt'],\n });\n\n if (!publishedEntry) {\n return 'draft';\n }\n\n const entryUpdatedAt = new Date(entry.updatedAt).getTime();\n const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();\n\n if (entryUpdatedAt > publishedEntryUpdatedAt) {\n return 'modified';\n }\n\n return 'published';\n};\n"],"names":["getService","name","strapi","plugin","service","getDraftEntryValidStatus","contentType","documentId","locale","populateBuilderService","populate","populateDeep","Infinity","build","entry","getEntry","isEntryValid","contentTypeUid","entityValidator","validateEntityCreation","getModel","undefined","workflowsService","workflow","getAssignedWorkflow","stageRequiredToPublish","strapi_stage","id","status","documents","findOne","findFirst","getEntryStatus","publishedAt","publishedEntry","fields","entryUpdatedAt","Date","updatedAt","getTime","publishedEntryUpdatedAt"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { UID, Data, Core } from '@strapi/types';\n\nimport type { SettingsService } from '../services/settings';\nimport type { ReleaseService } from '../services/release';\nimport type { ReleaseActionService } from '../services/release-action';\n\ntype Services = {\n release: ReleaseService;\n 'release-validation': any;\n scheduling: any;\n 'release-action': ReleaseActionService;\n 'event-manager': any;\n settings: SettingsService;\n};\n\ninterface Action {\n contentType: UID.ContentType;\n documentId?: Data.DocumentID;\n locale?: string;\n}\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n { strapi }: { strapi: Core.Strapi }\n): Services[TName] => {\n return strapi.plugin('content-releases').service(name);\n};\n\nexport const getDraftEntryValidStatus = async (\n { contentType, documentId, locale }: Action,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');\n // @ts-expect-error - populateBuilderService should be a function but is returning service\n const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();\n\n const entry = await getEntry({ contentType, documentId, locale, populate }, { strapi });\n\n return isEntryValid(contentType, entry, { strapi });\n};\n\nexport const isEntryValid = async (\n contentTypeUid: string,\n entry: any,\n { strapi }: { strapi: Core.Strapi }\n) => {\n try {\n // @TODO: When documents service has validateEntityCreation method, use it instead\n await strapi.entityValidator.validateEntityCreation(\n strapi.getModel(contentTypeUid as UID.ContentType),\n entry,\n undefined,\n // @ts-expect-error - FIXME: entity here is unnecessary\n entry\n );\n\n const workflowsService = strapi.plugin('review-workflows').service('workflows');\n // Workflows service may not be available depending on the license\n const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {\n populate: 'stageRequiredToPublish',\n });\n\n if (workflow?.stageRequiredToPublish) {\n return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;\n }\n\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getEntry = async (\n {\n contentType,\n documentId,\n locale,\n populate,\n status = 'draft',\n }: Action & { status?: 'draft' | 'published'; populate: any },\n { strapi }: { strapi: Core.Strapi }\n) => {\n if (documentId) {\n // Try to get an existing draft or published document\n const entry = await strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status });\n\n // The document isn't published yet, but the action is to publish it, fetch the draft\n if (status === 'published' && !entry) {\n return strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status: 'draft' });\n }\n\n return entry;\n }\n\n return strapi.documents(contentType).findFirst({ locale, populate, status });\n};\n\nexport const getEntryStatus = async (contentType: UID.ContentType, entry: Data.ContentType) => {\n if (entry.publishedAt) {\n return 'published';\n }\n\n const publishedEntry = await strapi.documents(contentType).findOne({\n documentId: entry.documentId,\n locale: entry.locale,\n status: 'published',\n fields: ['updatedAt'],\n });\n\n if (!publishedEntry) {\n return 'draft';\n }\n\n const entryUpdatedAt = new Date(entry.updatedAt).getTime();\n const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();\n\n if (entryUpdatedAt > publishedEntryUpdatedAt) {\n return 'modified';\n }\n\n return 'published';\n};\n"],"names":["getService","name","strapi","plugin","service","getDraftEntryValidStatus","contentType","documentId","locale","populateBuilderService","populate","populateDeep","Infinity","build","entry","getEntry","isEntryValid","contentTypeUid","entityValidator","validateEntityCreation","getModel","undefined","workflowsService","workflow","getAssignedWorkflow","stageRequiredToPublish","strapi_stage","id","status","documents","findOne","findFirst","getEntryStatus","publishedAt","publishedEntry","fields","entryUpdatedAt","Date","updatedAt","getTime","publishedEntryUpdatedAt"],"mappings":"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"}
@@ -23,7 +23,8 @@ const isEntryValid = async (contentTypeUid, entry, { strapi: strapi1 })=>{
23
23
  await strapi1.entityValidator.validateEntityCreation(strapi1.getModel(contentTypeUid), entry, undefined, // @ts-expect-error - FIXME: entity here is unnecessary
24
24
  entry);
25
25
  const workflowsService = strapi1.plugin('review-workflows').service('workflows');
26
- const workflow = await workflowsService.getAssignedWorkflow(contentTypeUid, {
26
+ // Workflows service may not be available depending on the license
27
+ const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {
27
28
  populate: 'stageRequiredToPublish'
28
29
  });
29
30
  if (workflow?.stageRequiredToPublish) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { UID, Data, Core } from '@strapi/types';\n\nimport type { SettingsService } from '../services/settings';\nimport type { ReleaseService } from '../services/release';\nimport type { ReleaseActionService } from '../services/release-action';\n\ntype Services = {\n release: ReleaseService;\n 'release-validation': any;\n scheduling: any;\n 'release-action': ReleaseActionService;\n 'event-manager': any;\n settings: SettingsService;\n};\n\ninterface Action {\n contentType: UID.ContentType;\n documentId?: Data.DocumentID;\n locale?: string;\n}\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n { strapi }: { strapi: Core.Strapi }\n): Services[TName] => {\n return strapi.plugin('content-releases').service(name);\n};\n\nexport const getDraftEntryValidStatus = async (\n { contentType, documentId, locale }: Action,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');\n // @ts-expect-error - populateBuilderService should be a function but is returning service\n const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();\n\n const entry = await getEntry({ contentType, documentId, locale, populate }, { strapi });\n\n return isEntryValid(contentType, entry, { strapi });\n};\n\nexport const isEntryValid = async (\n contentTypeUid: string,\n entry: any,\n { strapi }: { strapi: Core.Strapi }\n) => {\n try {\n // @TODO: When documents service has validateEntityCreation method, use it instead\n await strapi.entityValidator.validateEntityCreation(\n strapi.getModel(contentTypeUid as UID.ContentType),\n entry,\n undefined,\n // @ts-expect-error - FIXME: entity here is unnecessary\n entry\n );\n\n const workflowsService = strapi.plugin('review-workflows').service('workflows');\n const workflow = await workflowsService.getAssignedWorkflow(contentTypeUid, {\n populate: 'stageRequiredToPublish',\n });\n\n if (workflow?.stageRequiredToPublish) {\n return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;\n }\n\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getEntry = async (\n {\n contentType,\n documentId,\n locale,\n populate,\n status = 'draft',\n }: Action & { status?: 'draft' | 'published'; populate: any },\n { strapi }: { strapi: Core.Strapi }\n) => {\n if (documentId) {\n // Try to get an existing draft or published document\n const entry = await strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status });\n\n // The document isn't published yet, but the action is to publish it, fetch the draft\n if (status === 'published' && !entry) {\n return strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status: 'draft' });\n }\n\n return entry;\n }\n\n return strapi.documents(contentType).findFirst({ locale, populate, status });\n};\n\nexport const getEntryStatus = async (contentType: UID.ContentType, entry: Data.ContentType) => {\n if (entry.publishedAt) {\n return 'published';\n }\n\n const publishedEntry = await strapi.documents(contentType).findOne({\n documentId: entry.documentId,\n locale: entry.locale,\n status: 'published',\n fields: ['updatedAt'],\n });\n\n if (!publishedEntry) {\n return 'draft';\n }\n\n const entryUpdatedAt = new Date(entry.updatedAt).getTime();\n const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();\n\n if (entryUpdatedAt > publishedEntryUpdatedAt) {\n return 'modified';\n }\n\n return 'published';\n};\n"],"names":["getService","name","strapi","plugin","service","getDraftEntryValidStatus","contentType","documentId","locale","populateBuilderService","populate","populateDeep","Infinity","build","entry","getEntry","isEntryValid","contentTypeUid","entityValidator","validateEntityCreation","getModel","undefined","workflowsService","workflow","getAssignedWorkflow","stageRequiredToPublish","strapi_stage","id","status","documents","findOne","findFirst","getEntryStatus","publishedAt","publishedEntry","fields","entryUpdatedAt","Date","updatedAt","getTime","publishedEntryUpdatedAt"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { UID, Data, Core } from '@strapi/types';\n\nimport type { SettingsService } from '../services/settings';\nimport type { ReleaseService } from '../services/release';\nimport type { ReleaseActionService } from '../services/release-action';\n\ntype Services = {\n release: ReleaseService;\n 'release-validation': any;\n scheduling: any;\n 'release-action': ReleaseActionService;\n 'event-manager': any;\n settings: SettingsService;\n};\n\ninterface Action {\n contentType: UID.ContentType;\n documentId?: Data.DocumentID;\n locale?: string;\n}\n\nexport const getService = <TName extends keyof Services>(\n name: TName,\n { strapi }: { strapi: Core.Strapi }\n): Services[TName] => {\n return strapi.plugin('content-releases').service(name);\n};\n\nexport const getDraftEntryValidStatus = async (\n { contentType, documentId, locale }: Action,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');\n // @ts-expect-error - populateBuilderService should be a function but is returning service\n const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();\n\n const entry = await getEntry({ contentType, documentId, locale, populate }, { strapi });\n\n return isEntryValid(contentType, entry, { strapi });\n};\n\nexport const isEntryValid = async (\n contentTypeUid: string,\n entry: any,\n { strapi }: { strapi: Core.Strapi }\n) => {\n try {\n // @TODO: When documents service has validateEntityCreation method, use it instead\n await strapi.entityValidator.validateEntityCreation(\n strapi.getModel(contentTypeUid as UID.ContentType),\n entry,\n undefined,\n // @ts-expect-error - FIXME: entity here is unnecessary\n entry\n );\n\n const workflowsService = strapi.plugin('review-workflows').service('workflows');\n // Workflows service may not be available depending on the license\n const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {\n populate: 'stageRequiredToPublish',\n });\n\n if (workflow?.stageRequiredToPublish) {\n return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;\n }\n\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getEntry = async (\n {\n contentType,\n documentId,\n locale,\n populate,\n status = 'draft',\n }: Action & { status?: 'draft' | 'published'; populate: any },\n { strapi }: { strapi: Core.Strapi }\n) => {\n if (documentId) {\n // Try to get an existing draft or published document\n const entry = await strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status });\n\n // The document isn't published yet, but the action is to publish it, fetch the draft\n if (status === 'published' && !entry) {\n return strapi\n .documents(contentType)\n .findOne({ documentId, locale, populate, status: 'draft' });\n }\n\n return entry;\n }\n\n return strapi.documents(contentType).findFirst({ locale, populate, status });\n};\n\nexport const getEntryStatus = async (contentType: UID.ContentType, entry: Data.ContentType) => {\n if (entry.publishedAt) {\n return 'published';\n }\n\n const publishedEntry = await strapi.documents(contentType).findOne({\n documentId: entry.documentId,\n locale: entry.locale,\n status: 'published',\n fields: ['updatedAt'],\n });\n\n if (!publishedEntry) {\n return 'draft';\n }\n\n const entryUpdatedAt = new Date(entry.updatedAt).getTime();\n const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();\n\n if (entryUpdatedAt > publishedEntryUpdatedAt) {\n return 'modified';\n }\n\n return 'published';\n};\n"],"names":["getService","name","strapi","plugin","service","getDraftEntryValidStatus","contentType","documentId","locale","populateBuilderService","populate","populateDeep","Infinity","build","entry","getEntry","isEntryValid","contentTypeUid","entityValidator","validateEntityCreation","getModel","undefined","workflowsService","workflow","getAssignedWorkflow","stageRequiredToPublish","strapi_stage","id","status","documents","findOne","findFirst","getEntryStatus","publishedAt","publishedEntry","fields","entryUpdatedAt","Date","updatedAt","getTime","publishedEntryUpdatedAt"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { errors } from '@strapi/utils';
2
+ import { Release } from './releases';
3
+ export declare namespace GetUpcomingReleases {
4
+ interface Request {
5
+ body: {};
6
+ }
7
+ interface Response {
8
+ data: Release[];
9
+ error?: errors.ApplicationError;
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../shared/contracts/homepage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;KACV;IAED,UAAiB,QAAQ;QACvB,IAAI,EAAE,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC;CACF"}
@@ -16,6 +16,7 @@ export interface UserInfo extends Entity {
16
16
  roles: RoleInfo[];
17
17
  }
18
18
  export interface Entity {
19
+ documentId: string;
19
20
  id: Data.ID;
20
21
  createdAt: string;
21
22
  updatedAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,UAAU,QAAS,SAAQ,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAS,SAAQ,MAAM;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,UAAU,QAAS,SAAQ,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAS,SAAQ,MAAM;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-releases",
3
- "version": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
3
+ "version": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
4
4
  "description": "Strapi plugin for organizing and releasing content",
5
5
  "repository": {
6
6
  "type": "git",
@@ -59,30 +59,29 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@reduxjs/toolkit": "1.9.7",
62
- "@strapi/database": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
63
- "@strapi/design-system": "2.0.0-rc.23",
64
- "@strapi/icons": "2.0.0-rc.23",
65
- "@strapi/types": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
66
- "@strapi/utils": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
62
+ "@strapi/database": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
63
+ "@strapi/design-system": "2.0.0-rc.30",
64
+ "@strapi/icons": "2.0.0-rc.30",
65
+ "@strapi/types": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
66
+ "@strapi/utils": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
67
67
  "date-fns": "2.30.0",
68
68
  "date-fns-tz": "2.0.1",
69
69
  "formik": "2.4.5",
70
70
  "lodash": "4.17.21",
71
- "node-schedule": "2.1.1",
72
71
  "qs": "6.11.1",
73
72
  "react-intl": "6.6.2",
74
73
  "react-redux": "8.1.3",
75
74
  "yup": "0.32.9"
76
75
  },
77
76
  "devDependencies": {
78
- "@strapi/admin": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
79
- "@strapi/admin-test-utils": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
80
- "@strapi/content-manager": "0.0.0-next.d8f8da8f5b333be4a20563a1a15cd61350139956",
77
+ "@strapi/admin": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
78
+ "@strapi/admin-test-utils": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
79
+ "@strapi/content-manager": "0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485",
81
80
  "@testing-library/dom": "10.1.0",
82
81
  "@testing-library/react": "15.0.7",
83
82
  "@testing-library/user-event": "14.5.2",
84
83
  "@types/koa": "2.13.4",
85
- "koa": "2.15.4",
84
+ "koa": "2.16.1",
86
85
  "msw": "1.3.0",
87
86
  "react": "18.3.1",
88
87
  "react-dom": "18.3.1",