@strapi/core 0.0.0-experimental.25f7de53c1fc990bbb86d4aa43c379acfa838064 → 0.0.0-experimental.281d87ac79eeddcaa1823767b9a4c9dbd5d6192d

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.

Potentially problematic release.


This version of @strapi/core might be problematic. Click here for more details.

Files changed (112) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +2 -0
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +2 -0
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/core-api/routes/index.d.ts +22 -4
  7. package/dist/core-api/routes/index.d.ts.map +1 -1
  8. package/dist/core-api/routes/index.js +8 -118
  9. package/dist/core-api/routes/index.js.map +1 -1
  10. package/dist/core-api/routes/index.mjs +8 -118
  11. package/dist/core-api/routes/index.mjs.map +1 -1
  12. package/dist/domain/module/index.d.ts.map +1 -1
  13. package/dist/domain/module/index.js +0 -3
  14. package/dist/domain/module/index.js.map +1 -1
  15. package/dist/domain/module/index.mjs +0 -3
  16. package/dist/domain/module/index.mjs.map +1 -1
  17. package/dist/ee/index.d.ts +6 -0
  18. package/dist/ee/index.d.ts.map +1 -1
  19. package/dist/ee/index.js +29 -3
  20. package/dist/ee/index.js.map +1 -1
  21. package/dist/ee/index.mjs +30 -4
  22. package/dist/ee/index.mjs.map +1 -1
  23. package/dist/ee/license.d.ts +3 -1
  24. package/dist/ee/license.d.ts.map +1 -1
  25. package/dist/ee/license.js +6 -1
  26. package/dist/ee/license.js.map +1 -1
  27. package/dist/ee/license.mjs +6 -2
  28. package/dist/ee/license.mjs.map +1 -1
  29. package/dist/factories.d.ts +1 -3
  30. package/dist/factories.d.ts.map +1 -1
  31. package/dist/factories.js +2 -10
  32. package/dist/factories.js.map +1 -1
  33. package/dist/factories.mjs +3 -10
  34. package/dist/factories.mjs.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.mjs +1 -1
  37. package/dist/package.json.js +21 -15
  38. package/dist/package.json.js.map +1 -1
  39. package/dist/package.json.mjs +21 -16
  40. package/dist/package.json.mjs.map +1 -1
  41. package/dist/services/core-store.d.ts +2 -2
  42. package/dist/services/core-store.d.ts.map +1 -1
  43. package/dist/services/core-store.js.map +1 -1
  44. package/dist/services/core-store.mjs.map +1 -1
  45. package/dist/services/document-service/entries.d.ts.map +1 -1
  46. package/dist/services/document-service/entries.js +42 -0
  47. package/dist/services/document-service/entries.js.map +1 -1
  48. package/dist/services/document-service/entries.mjs +43 -1
  49. package/dist/services/document-service/entries.mjs.map +1 -1
  50. package/dist/services/document-service/internationalization.d.ts +6 -1
  51. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  52. package/dist/services/document-service/internationalization.js +32 -0
  53. package/dist/services/document-service/internationalization.js.map +1 -1
  54. package/dist/services/document-service/internationalization.mjs +32 -1
  55. package/dist/services/document-service/internationalization.mjs.map +1 -1
  56. package/dist/services/document-service/repository.d.ts.map +1 -1
  57. package/dist/services/document-service/repository.js +5 -4
  58. package/dist/services/document-service/repository.js.map +1 -1
  59. package/dist/services/document-service/repository.mjs +6 -5
  60. package/dist/services/document-service/repository.mjs.map +1 -1
  61. package/dist/services/entity-validator/index.d.ts.map +1 -1
  62. package/dist/services/entity-validator/index.js +9 -0
  63. package/dist/services/entity-validator/index.js.map +1 -1
  64. package/dist/services/entity-validator/index.mjs +9 -0
  65. package/dist/services/entity-validator/index.mjs.map +1 -1
  66. package/dist/services/entity-validator/validators.d.ts +1 -0
  67. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  68. package/dist/services/entity-validator/validators.js +3 -0
  69. package/dist/services/entity-validator/validators.js.map +1 -1
  70. package/dist/services/entity-validator/validators.mjs +3 -0
  71. package/dist/services/entity-validator/validators.mjs.map +1 -1
  72. package/dist/services/server/register-routes.js +2 -22
  73. package/dist/services/server/register-routes.js.map +1 -1
  74. package/dist/services/server/register-routes.mjs +2 -22
  75. package/dist/services/server/register-routes.mjs.map +1 -1
  76. package/dist/services/server/routing.d.ts +0 -10
  77. package/dist/services/server/routing.d.ts.map +1 -1
  78. package/dist/services/server/routing.js +1 -7
  79. package/dist/services/server/routing.js.map +1 -1
  80. package/dist/services/server/routing.mjs +1 -7
  81. package/dist/services/server/routing.mjs.map +1 -1
  82. package/dist/services/utils/conditional-fields.d.ts +3 -0
  83. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  84. package/dist/services/utils/conditional-fields.js +22 -0
  85. package/dist/services/utils/conditional-fields.js.map +1 -0
  86. package/dist/services/utils/conditional-fields.mjs +20 -0
  87. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  88. package/dist/utils/fetch.d.ts +5 -1
  89. package/dist/utils/fetch.d.ts.map +1 -1
  90. package/dist/utils/fetch.js +8 -4
  91. package/dist/utils/fetch.js.map +1 -1
  92. package/dist/utils/fetch.mjs +8 -4
  93. package/dist/utils/fetch.mjs.map +1 -1
  94. package/dist/utils/transform-content-types-to-models.d.ts +197 -0
  95. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  96. package/package.json +19 -15
  97. package/dist/core-api/routes/validation/common.d.ts +0 -135
  98. package/dist/core-api/routes/validation/common.d.ts.map +0 -1
  99. package/dist/core-api/routes/validation/common.js +0 -201
  100. package/dist/core-api/routes/validation/common.js.map +0 -1
  101. package/dist/core-api/routes/validation/common.mjs +0 -198
  102. package/dist/core-api/routes/validation/common.mjs.map +0 -1
  103. package/dist/core-api/routes/validation/component.d.ts +0 -42
  104. package/dist/core-api/routes/validation/component.d.ts.map +0 -1
  105. package/dist/core-api/routes/validation/content-type.d.ts +0 -139
  106. package/dist/core-api/routes/validation/content-type.d.ts.map +0 -1
  107. package/dist/core-api/routes/validation/content-type.js +0 -176
  108. package/dist/core-api/routes/validation/content-type.js.map +0 -1
  109. package/dist/core-api/routes/validation/content-type.mjs +0 -174
  110. package/dist/core-api/routes/validation/content-type.mjs.map +0 -1
  111. package/dist/core-api/routes/validation/index.d.ts +0 -4
  112. package/dist/core-api/routes/validation/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import type { Core, Schema } from '@strapi/types';\nimport { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport { z } from 'zod';\nimport { CoreContentTypeRouteValidator } from './validation';\n\nexport const createRoutes = ({\n strapi,\n contentType,\n}: {\n strapi: Core.Strapi;\n contentType: Schema.ContentType;\n}) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType, strapi);\n }\n\n return getCollectionTypeRoutes(contentType, strapi);\n};\n\nconst getSingleTypeRoutes = (\n { uid, info }: Schema.ContentType,\n strapi: Core.Strapi\n): Record<string, Partial<Core.Route>> => {\n const validator = new CoreContentTypeRouteValidator(strapi, uid);\n\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = (\n schema: Schema.ContentType,\n strapi: Core.Strapi\n): Record<string, Partial<Core.Route>> => {\n const { uid, info } = schema;\n\n const validator = new CoreContentTypeRouteValidator(strapi, uid);\n\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.documents }),\n },\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n request: {\n params: { id: validator.documentID },\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n request: {\n params: { id: validator.documentID },\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 201: z.object({ data: validator.document }),\n },\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n params: { id: validator.documentID },\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n params: { id: validator.documentID },\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n },\n };\n};\n"],"names":["createRoutes","strapi","contentType","contentTypeUtils","isSingleType","getSingleTypeRoutes","getCollectionTypeRoutes","uid","info","validator","CoreContentTypeRouteValidator","find","method","path","singularName","handler","request","query","responses","z","object","data","document","config","update","delete","schema","pluralName","documents","findOne","params","id","documentID","create"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nexport const createRoutes = ({ contentType }: { contentType: Schema.ContentType }) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType);\n }\n\n return getCollectionTypeRoutes(contentType);\n};\n\nconst getSingleTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n config: {},\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n"],"names":["createRoutes","contentType","contentTypeUtils","isSingleType","getSingleTypeRoutes","getCollectionTypeRoutes","uid","info","find","method","path","singularName","handler","config","update","delete","pluralName","findOne","create"],"mappings":";;;;AAGaA,MAAAA,YAAAA,GAAe,CAAC,EAAEC,WAAW,EAAuC,GAAA;IAC/E,IAAIC,wBAAAA,CAAiBC,YAAY,CAACF,WAAc,CAAA,EAAA;AAC9C,QAAA,OAAOG,mBAAoBH,CAAAA,WAAAA,CAAAA;AAC7B;AAEA,IAAA,OAAOI,uBAAwBJ,CAAAA,WAAAA,CAAAA;AACjC;AAEA,MAAMG,sBAAsB,CAAC,EAAEE,GAAG,EAAEC,IAAI,EAAsB,GAAA;IAC5D,OAAO;QACLC,IAAM,EAAA;YACJC,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKI,CAAAA,YAAY,CAAC,CAAC;AAC7BC,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,KAAK,CAAC;AACtBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAC,MAAQ,EAAA;YACNL,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKI,CAAAA,YAAY,CAAC,CAAC;AAC7BC,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAE,MAAQ,EAAA;YACNN,MAAQ,EAAA,QAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKI,CAAAA,YAAY,CAAC,CAAC;AAC7BC,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV;AACF,KAAA;AACF,CAAA;AAEA,MAAMR,0BAA0B,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAsB,GAAA;IAChE,OAAO;QACLC,IAAM,EAAA;YACJC,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKS,CAAAA,UAAU,CAAC,CAAC;AAC3BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,KAAK,CAAC;AACtBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAI,OAAS,EAAA;YACPR,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,KAAKS,UAAU,CAAC,IAAI,CAAC;AAC/BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,QAAQ,CAAC;AACzBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAK,MAAQ,EAAA;YACNT,MAAQ,EAAA,MAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKS,CAAAA,UAAU,CAAC,CAAC;AAC3BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAC,MAAQ,EAAA;YACNL,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,KAAKS,UAAU,CAAC,IAAI,CAAC;AAC/BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAE,MAAQ,EAAA;YACNN,MAAQ,EAAA,QAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,KAAKS,UAAU,CAAC,IAAI,CAAC;AAC/BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1,174 +1,64 @@
1
1
  import { contentTypes } from '@strapi/utils';
2
- import { z } from 'zod';
3
- import { CoreContentTypeRouteValidator } from './validation/content-type.mjs';
4
2
 
5
- const createRoutes = ({ strapi, contentType })=>{
3
+ const createRoutes = ({ contentType })=>{
6
4
  if (contentTypes.isSingleType(contentType)) {
7
- return getSingleTypeRoutes(contentType, strapi);
5
+ return getSingleTypeRoutes(contentType);
8
6
  }
9
- return getCollectionTypeRoutes(contentType, strapi);
7
+ return getCollectionTypeRoutes(contentType);
10
8
  };
11
- const getSingleTypeRoutes = ({ uid, info }, strapi)=>{
12
- const validator = new CoreContentTypeRouteValidator(strapi, uid);
9
+ const getSingleTypeRoutes = ({ uid, info })=>{
13
10
  return {
14
11
  find: {
15
12
  method: 'GET',
16
13
  path: `/${info.singularName}`,
17
14
  handler: `${uid}.find`,
18
- request: {
19
- query: validator.query([
20
- 'fields',
21
- 'sort',
22
- 'populate'
23
- ])
24
- },
25
- responses: {
26
- 200: z.object({
27
- data: validator.document
28
- })
29
- },
30
15
  config: {}
31
16
  },
32
17
  update: {
33
18
  method: 'PUT',
34
19
  path: `/${info.singularName}`,
35
20
  handler: `${uid}.update`,
36
- request: {
37
- query: validator.query([
38
- 'fields',
39
- 'sort',
40
- 'populate'
41
- ])
42
- },
43
- responses: {
44
- 200: z.object({
45
- data: validator.document
46
- })
47
- },
48
21
  config: {}
49
22
  },
50
23
  delete: {
51
24
  method: 'DELETE',
52
25
  path: `/${info.singularName}`,
53
26
  handler: `${uid}.delete`,
54
- request: {
55
- query: validator.query([
56
- 'fields',
57
- 'sort',
58
- 'populate'
59
- ])
60
- },
61
- responses: {
62
- 200: z.object({
63
- data: validator.document
64
- })
65
- },
66
27
  config: {}
67
28
  }
68
29
  };
69
30
  };
70
- const getCollectionTypeRoutes = (schema, strapi)=>{
71
- const { uid, info } = schema;
72
- const validator = new CoreContentTypeRouteValidator(strapi, uid);
31
+ const getCollectionTypeRoutes = ({ uid, info })=>{
73
32
  return {
74
33
  find: {
75
34
  method: 'GET',
76
35
  path: `/${info.pluralName}`,
77
36
  handler: `${uid}.find`,
78
- request: {
79
- query: validator.query([
80
- 'fields',
81
- 'sort',
82
- 'populate'
83
- ])
84
- },
85
- responses: {
86
- 200: z.object({
87
- data: validator.documents
88
- })
89
- },
90
37
  config: {}
91
38
  },
92
39
  findOne: {
93
40
  method: 'GET',
94
41
  path: `/${info.pluralName}/:id`,
95
42
  handler: `${uid}.findOne`,
96
- request: {
97
- params: {
98
- id: validator.documentID
99
- },
100
- query: validator.query([
101
- 'fields',
102
- 'sort',
103
- 'populate'
104
- ])
105
- },
106
- responses: {
107
- 200: z.object({
108
- data: validator.document
109
- })
110
- }
43
+ config: {}
111
44
  },
112
45
  create: {
113
46
  method: 'POST',
114
47
  path: `/${info.pluralName}`,
115
48
  handler: `${uid}.create`,
116
- request: {
117
- params: {
118
- id: validator.documentID
119
- },
120
- query: validator.query([
121
- 'fields',
122
- 'sort',
123
- 'populate'
124
- ])
125
- },
126
- responses: {
127
- 201: z.object({
128
- data: validator.document
129
- })
130
- },
131
49
  config: {}
132
50
  },
133
51
  update: {
134
52
  method: 'PUT',
135
53
  path: `/${info.pluralName}/:id`,
136
54
  handler: `${uid}.update`,
137
- request: {
138
- query: validator.query([
139
- 'fields',
140
- 'sort',
141
- 'populate'
142
- ]),
143
- params: {
144
- id: validator.documentID
145
- }
146
- },
147
- responses: {
148
- 200: z.object({
149
- data: validator.document
150
- })
151
- }
55
+ config: {}
152
56
  },
153
57
  delete: {
154
58
  method: 'DELETE',
155
59
  path: `/${info.pluralName}/:id`,
156
60
  handler: `${uid}.delete`,
157
- request: {
158
- query: validator.query([
159
- 'fields',
160
- 'sort',
161
- 'populate'
162
- ]),
163
- params: {
164
- id: validator.documentID
165
- }
166
- },
167
- responses: {
168
- 200: z.object({
169
- data: validator.document
170
- })
171
- }
61
+ config: {}
172
62
  }
173
63
  };
174
64
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import type { Core, Schema } from '@strapi/types';\nimport { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport { z } from 'zod';\nimport { CoreContentTypeRouteValidator } from './validation';\n\nexport const createRoutes = ({\n strapi,\n contentType,\n}: {\n strapi: Core.Strapi;\n contentType: Schema.ContentType;\n}) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType, strapi);\n }\n\n return getCollectionTypeRoutes(contentType, strapi);\n};\n\nconst getSingleTypeRoutes = (\n { uid, info }: Schema.ContentType,\n strapi: Core.Strapi\n): Record<string, Partial<Core.Route>> => {\n const validator = new CoreContentTypeRouteValidator(strapi, uid);\n\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = (\n schema: Schema.ContentType,\n strapi: Core.Strapi\n): Record<string, Partial<Core.Route>> => {\n const { uid, info } = schema;\n\n const validator = new CoreContentTypeRouteValidator(strapi, uid);\n\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.documents }),\n },\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n request: {\n params: { id: validator.documentID },\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n request: {\n params: { id: validator.documentID },\n query: validator.query(['fields', 'sort', 'populate']),\n },\n responses: {\n 201: z.object({ data: validator.document }),\n },\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n params: { id: validator.documentID },\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n request: {\n query: validator.query(['fields', 'sort', 'populate']),\n params: { id: validator.documentID },\n },\n responses: {\n 200: z.object({ data: validator.document }),\n },\n },\n };\n};\n"],"names":["createRoutes","strapi","contentType","contentTypeUtils","isSingleType","getSingleTypeRoutes","getCollectionTypeRoutes","uid","info","validator","CoreContentTypeRouteValidator","find","method","path","singularName","handler","request","query","responses","z","object","data","document","config","update","delete","schema","pluralName","documents","findOne","params","id","documentID","create"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nexport const createRoutes = ({ contentType }: { contentType: Schema.ContentType }) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType);\n }\n\n return getCollectionTypeRoutes(contentType);\n};\n\nconst getSingleTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n config: {},\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n"],"names":["createRoutes","contentType","contentTypeUtils","isSingleType","getSingleTypeRoutes","getCollectionTypeRoutes","uid","info","find","method","path","singularName","handler","config","update","delete","pluralName","findOne","create"],"mappings":";;AAGaA,MAAAA,YAAAA,GAAe,CAAC,EAAEC,WAAW,EAAuC,GAAA;IAC/E,IAAIC,YAAAA,CAAiBC,YAAY,CAACF,WAAc,CAAA,EAAA;AAC9C,QAAA,OAAOG,mBAAoBH,CAAAA,WAAAA,CAAAA;AAC7B;AAEA,IAAA,OAAOI,uBAAwBJ,CAAAA,WAAAA,CAAAA;AACjC;AAEA,MAAMG,sBAAsB,CAAC,EAAEE,GAAG,EAAEC,IAAI,EAAsB,GAAA;IAC5D,OAAO;QACLC,IAAM,EAAA;YACJC,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKI,CAAAA,YAAY,CAAC,CAAC;AAC7BC,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,KAAK,CAAC;AACtBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAC,MAAQ,EAAA;YACNL,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKI,CAAAA,YAAY,CAAC,CAAC;AAC7BC,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAE,MAAQ,EAAA;YACNN,MAAQ,EAAA,QAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKI,CAAAA,YAAY,CAAC,CAAC;AAC7BC,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV;AACF,KAAA;AACF,CAAA;AAEA,MAAMR,0BAA0B,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAsB,GAAA;IAChE,OAAO;QACLC,IAAM,EAAA;YACJC,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKS,CAAAA,UAAU,CAAC,CAAC;AAC3BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,KAAK,CAAC;AACtBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAI,OAAS,EAAA;YACPR,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,KAAKS,UAAU,CAAC,IAAI,CAAC;AAC/BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,QAAQ,CAAC;AACzBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAK,MAAQ,EAAA;YACNT,MAAQ,EAAA,MAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,IAAKS,CAAAA,UAAU,CAAC,CAAC;AAC3BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAC,MAAQ,EAAA;YACNL,MAAQ,EAAA,KAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,KAAKS,UAAU,CAAC,IAAI,CAAC;AAC/BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV,SAAA;QACAE,MAAQ,EAAA;YACNN,MAAQ,EAAA,QAAA;AACRC,YAAAA,IAAAA,EAAM,CAAC,CAAC,EAAEH,KAAKS,UAAU,CAAC,IAAI,CAAC;AAC/BJ,YAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAI,CAAA,OAAO,CAAC;AACxBO,YAAAA,MAAAA,EAAQ;AACV;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/module/index.ts"],"names":[],"mappings":"AAAA,OAAU,EAAE,KAAK,YAAY,EAAW,MAAM,QAAQ,CAAC;AAEvD,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAWvD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1D,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,iBAAiB,CAAC;IACnE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,UAAU,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CAC9C;AAiBD,eAAO,MAAM,YAAY,cACZ,MAAM,aACN,SAAS,UACZ,KAAK,MAAM,KAClB,MAwFF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/module/index.ts"],"names":[],"mappings":"AAAA,OAAU,EAAE,KAAK,YAAY,EAAW,MAAM,QAAQ,CAAC;AAEvD,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAWvD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1D,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,iBAAiB,CAAC;IACnE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,UAAU,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CAC9C;AAiBD,eAAO,MAAM,YAAY,cACZ,MAAM,aACN,SAAS,UACZ,KAAK,MAAM,KAClB,MAqFF,CAAC"}
@@ -67,9 +67,6 @@ const createModule = (namespace, rawModule, strapi)=>{
67
67
  get routes () {
68
68
  return rawModule.routes ?? {};
69
69
  },
70
- set routes (routes){
71
- rawModule.routes = routes;
72
- },
73
70
  config (path, defaultValue) {
74
71
  const pathArray = _.flatten([
75
72
  namespace,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/domain/module/index.ts"],"sourcesContent":["import _, { type PropertyPath, flatten } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core, UID, Struct } from '@strapi/types';\n\nimport { removeNamespace } from '../../registries/namespace';\nimport { validateModule } from './validation';\n\ninterface LifecyclesState {\n bootstrap?: boolean;\n register?: boolean;\n destroy?: boolean;\n}\n\nexport interface RawModule {\n config?: Record<string, unknown>;\n routes?: Core.Module['routes'];\n controllers?: Core.Module['controllers'];\n services?: Core.Module['services'];\n contentTypes?: Core.Module['contentTypes'];\n policies?: Core.Module['policies'];\n middlewares?: Core.Module['middlewares'];\n bootstrap?: (params: { strapi: Core.Strapi }) => Promise<void>;\n register?: (params: { strapi: Core.Strapi }) => Promise<void>;\n destroy?: (params: { strapi: Core.Strapi }) => Promise<void>;\n}\n\nexport interface Module {\n bootstrap: () => Promise<void>;\n register: () => Promise<void>;\n destroy: () => Promise<void>;\n load: () => void;\n routes: Core.Module['routes'];\n config<T = unknown>(key: PropertyPath, defaultVal?: T): T; // TODO: this mirrors ConfigProvider.get, we should use it directly\n contentType: (ctName: UID.ContentType) => Struct.ContentTypeSchema;\n contentTypes: Record<string, Struct.ContentTypeSchema>;\n service: (serviceName: UID.Service) => Core.Service;\n services: Record<string, Core.Service>;\n policy: (policyName: UID.Policy) => Core.Policy;\n policies: Record<string, Core.Policy>;\n middleware: (middlewareName: UID.Middleware) => Core.Middleware;\n middlewares: Record<string, Core.Middleware>;\n controller: (controllerName: UID.Controller) => Core.Controller;\n controllers: Record<string, Core.Controller>;\n}\n\n// Removes the namespace from a map with keys prefixed with a namespace\nconst removeNamespacedKeys = <T extends Record<string, unknown>>(map: T, namespace: string) => {\n return _.mapKeys(map, (value, key) => removeNamespace(key, namespace));\n};\n\nconst defaultModule = {\n config: {},\n routes: [],\n controllers: {},\n services: {},\n contentTypes: {},\n policies: {},\n middlewares: {},\n};\n\nexport const createModule = (\n namespace: string,\n rawModule: RawModule,\n strapi: Core.Strapi\n): Module => {\n _.defaults(rawModule, defaultModule);\n\n try {\n validateModule(rawModule);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`strapi-server.js is invalid for '${namespace}'.\\n${e.errors.join('\\n')}`);\n }\n }\n\n const called: LifecyclesState = {};\n return {\n async bootstrap() {\n if (called.bootstrap) {\n throw new Error(`Bootstrap for ${namespace} has already been called`);\n }\n called.bootstrap = true;\n await (rawModule.bootstrap && rawModule.bootstrap({ strapi }));\n },\n async register() {\n if (called.register) {\n throw new Error(`Register for ${namespace} has already been called`);\n }\n called.register = true;\n await (rawModule.register && rawModule.register({ strapi }));\n },\n async destroy() {\n if (called.destroy) {\n throw new Error(`Destroy for ${namespace} has already been called`);\n }\n called.destroy = true;\n await (rawModule.destroy && rawModule.destroy({ strapi }));\n },\n load() {\n strapi.get('content-types').add(namespace, rawModule.contentTypes);\n strapi.get('services').add(namespace, rawModule.services);\n strapi.get('policies').add(namespace, rawModule.policies);\n strapi.get('middlewares').add(namespace, rawModule.middlewares);\n strapi.get('controllers').add(namespace, rawModule.controllers);\n strapi.get('config').set(namespace, rawModule.config);\n },\n get routes() {\n return rawModule.routes ?? {};\n },\n set routes(routes: Record<string, Core.Router>) {\n rawModule.routes = routes;\n },\n config(path: PropertyPath, defaultValue: unknown) {\n const pathArray = flatten([namespace, path]);\n return strapi.get('config').get(pathArray, defaultValue);\n },\n contentType(ctName: UID.ContentType) {\n return strapi.get('content-types').get(`${namespace}.${ctName}`);\n },\n get contentTypes() {\n const contentTypes = strapi.get('content-types').getAll(namespace);\n return removeNamespacedKeys(contentTypes, namespace);\n },\n service(serviceName: UID.Service) {\n return strapi.get('services').get(`${namespace}.${serviceName}`);\n },\n get services() {\n const services = strapi.get('services').getAll(namespace);\n return removeNamespacedKeys(services, namespace);\n },\n policy(policyName: UID.Policy) {\n return strapi.get('policies').get(`${namespace}.${policyName}`);\n },\n get policies() {\n const policies = strapi.get('policies').getAll(namespace);\n return removeNamespacedKeys(policies, namespace);\n },\n middleware(middlewareName: UID.Middleware) {\n return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);\n },\n get middlewares() {\n const middlewares = strapi.get('middlewares').getAll(namespace);\n return removeNamespacedKeys(middlewares, namespace);\n },\n controller(controllerName: UID.Controller) {\n return strapi.get('controllers').get(`${namespace}.${controllerName}`);\n },\n get controllers() {\n const controllers = strapi.get('controllers').getAll(namespace);\n return removeNamespacedKeys(controllers, namespace);\n },\n };\n};\n"],"names":["removeNamespacedKeys","map","namespace","_","mapKeys","value","key","removeNamespace","defaultModule","config","routes","controllers","services","contentTypes","policies","middlewares","createModule","rawModule","strapi","defaults","validateModule","e","yup","ValidationError","Error","errors","join","called","bootstrap","register","destroy","load","get","add","set","path","defaultValue","pathArray","flatten","contentType","ctName","getAll","service","serviceName","policy","policyName","middleware","middlewareName","controller","controllerName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/domain/module/index.ts"],"sourcesContent":["import _, { type PropertyPath, flatten } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core, UID, Struct } from '@strapi/types';\n\nimport { removeNamespace } from '../../registries/namespace';\nimport { validateModule } from './validation';\n\ninterface LifecyclesState {\n bootstrap?: boolean;\n register?: boolean;\n destroy?: boolean;\n}\n\nexport interface RawModule {\n config?: Record<string, unknown>;\n routes?: Core.Module['routes'];\n controllers?: Core.Module['controllers'];\n services?: Core.Module['services'];\n contentTypes?: Core.Module['contentTypes'];\n policies?: Core.Module['policies'];\n middlewares?: Core.Module['middlewares'];\n bootstrap?: (params: { strapi: Core.Strapi }) => Promise<void>;\n register?: (params: { strapi: Core.Strapi }) => Promise<void>;\n destroy?: (params: { strapi: Core.Strapi }) => Promise<void>;\n}\n\nexport interface Module {\n bootstrap: () => Promise<void>;\n register: () => Promise<void>;\n destroy: () => Promise<void>;\n load: () => void;\n routes: Core.Module['routes'];\n config<T = unknown>(key: PropertyPath, defaultVal?: T): T; // TODO: this mirrors ConfigProvider.get, we should use it directly\n contentType: (ctName: UID.ContentType) => Struct.ContentTypeSchema;\n contentTypes: Record<string, Struct.ContentTypeSchema>;\n service: (serviceName: UID.Service) => Core.Service;\n services: Record<string, Core.Service>;\n policy: (policyName: UID.Policy) => Core.Policy;\n policies: Record<string, Core.Policy>;\n middleware: (middlewareName: UID.Middleware) => Core.Middleware;\n middlewares: Record<string, Core.Middleware>;\n controller: (controllerName: UID.Controller) => Core.Controller;\n controllers: Record<string, Core.Controller>;\n}\n\n// Removes the namespace from a map with keys prefixed with a namespace\nconst removeNamespacedKeys = <T extends Record<string, unknown>>(map: T, namespace: string) => {\n return _.mapKeys(map, (value, key) => removeNamespace(key, namespace));\n};\n\nconst defaultModule = {\n config: {},\n routes: [],\n controllers: {},\n services: {},\n contentTypes: {},\n policies: {},\n middlewares: {},\n};\n\nexport const createModule = (\n namespace: string,\n rawModule: RawModule,\n strapi: Core.Strapi\n): Module => {\n _.defaults(rawModule, defaultModule);\n\n try {\n validateModule(rawModule);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`strapi-server.js is invalid for '${namespace}'.\\n${e.errors.join('\\n')}`);\n }\n }\n\n const called: LifecyclesState = {};\n return {\n async bootstrap() {\n if (called.bootstrap) {\n throw new Error(`Bootstrap for ${namespace} has already been called`);\n }\n called.bootstrap = true;\n await (rawModule.bootstrap && rawModule.bootstrap({ strapi }));\n },\n async register() {\n if (called.register) {\n throw new Error(`Register for ${namespace} has already been called`);\n }\n called.register = true;\n await (rawModule.register && rawModule.register({ strapi }));\n },\n async destroy() {\n if (called.destroy) {\n throw new Error(`Destroy for ${namespace} has already been called`);\n }\n called.destroy = true;\n await (rawModule.destroy && rawModule.destroy({ strapi }));\n },\n load() {\n strapi.get('content-types').add(namespace, rawModule.contentTypes);\n strapi.get('services').add(namespace, rawModule.services);\n strapi.get('policies').add(namespace, rawModule.policies);\n strapi.get('middlewares').add(namespace, rawModule.middlewares);\n strapi.get('controllers').add(namespace, rawModule.controllers);\n strapi.get('config').set(namespace, rawModule.config);\n },\n get routes() {\n return rawModule.routes ?? {};\n },\n config(path: PropertyPath, defaultValue: unknown) {\n const pathArray = flatten([namespace, path]);\n return strapi.get('config').get(pathArray, defaultValue);\n },\n contentType(ctName: UID.ContentType) {\n return strapi.get('content-types').get(`${namespace}.${ctName}`);\n },\n get contentTypes() {\n const contentTypes = strapi.get('content-types').getAll(namespace);\n return removeNamespacedKeys(contentTypes, namespace);\n },\n service(serviceName: UID.Service) {\n return strapi.get('services').get(`${namespace}.${serviceName}`);\n },\n get services() {\n const services = strapi.get('services').getAll(namespace);\n return removeNamespacedKeys(services, namespace);\n },\n policy(policyName: UID.Policy) {\n return strapi.get('policies').get(`${namespace}.${policyName}`);\n },\n get policies() {\n const policies = strapi.get('policies').getAll(namespace);\n return removeNamespacedKeys(policies, namespace);\n },\n middleware(middlewareName: UID.Middleware) {\n return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);\n },\n get middlewares() {\n const middlewares = strapi.get('middlewares').getAll(namespace);\n return removeNamespacedKeys(middlewares, namespace);\n },\n controller(controllerName: UID.Controller) {\n return strapi.get('controllers').get(`${namespace}.${controllerName}`);\n },\n get controllers() {\n const controllers = strapi.get('controllers').getAll(namespace);\n return removeNamespacedKeys(controllers, namespace);\n },\n };\n};\n"],"names":["removeNamespacedKeys","map","namespace","_","mapKeys","value","key","removeNamespace","defaultModule","config","routes","controllers","services","contentTypes","policies","middlewares","createModule","rawModule","strapi","defaults","validateModule","e","yup","ValidationError","Error","errors","join","called","bootstrap","register","destroy","load","get","add","set","path","defaultValue","pathArray","flatten","contentType","ctName","getAll","service","serviceName","policy","policyName","middleware","middlewareName","controller","controllerName"],"mappings":"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"}
@@ -65,9 +65,6 @@ const createModule = (namespace, rawModule, strapi)=>{
65
65
  get routes () {
66
66
  return rawModule.routes ?? {};
67
67
  },
68
- set routes (routes){
69
- rawModule.routes = routes;
70
- },
71
68
  config (path, defaultValue) {
72
69
  const pathArray = flatten([
73
70
  namespace,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/domain/module/index.ts"],"sourcesContent":["import _, { type PropertyPath, flatten } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core, UID, Struct } from '@strapi/types';\n\nimport { removeNamespace } from '../../registries/namespace';\nimport { validateModule } from './validation';\n\ninterface LifecyclesState {\n bootstrap?: boolean;\n register?: boolean;\n destroy?: boolean;\n}\n\nexport interface RawModule {\n config?: Record<string, unknown>;\n routes?: Core.Module['routes'];\n controllers?: Core.Module['controllers'];\n services?: Core.Module['services'];\n contentTypes?: Core.Module['contentTypes'];\n policies?: Core.Module['policies'];\n middlewares?: Core.Module['middlewares'];\n bootstrap?: (params: { strapi: Core.Strapi }) => Promise<void>;\n register?: (params: { strapi: Core.Strapi }) => Promise<void>;\n destroy?: (params: { strapi: Core.Strapi }) => Promise<void>;\n}\n\nexport interface Module {\n bootstrap: () => Promise<void>;\n register: () => Promise<void>;\n destroy: () => Promise<void>;\n load: () => void;\n routes: Core.Module['routes'];\n config<T = unknown>(key: PropertyPath, defaultVal?: T): T; // TODO: this mirrors ConfigProvider.get, we should use it directly\n contentType: (ctName: UID.ContentType) => Struct.ContentTypeSchema;\n contentTypes: Record<string, Struct.ContentTypeSchema>;\n service: (serviceName: UID.Service) => Core.Service;\n services: Record<string, Core.Service>;\n policy: (policyName: UID.Policy) => Core.Policy;\n policies: Record<string, Core.Policy>;\n middleware: (middlewareName: UID.Middleware) => Core.Middleware;\n middlewares: Record<string, Core.Middleware>;\n controller: (controllerName: UID.Controller) => Core.Controller;\n controllers: Record<string, Core.Controller>;\n}\n\n// Removes the namespace from a map with keys prefixed with a namespace\nconst removeNamespacedKeys = <T extends Record<string, unknown>>(map: T, namespace: string) => {\n return _.mapKeys(map, (value, key) => removeNamespace(key, namespace));\n};\n\nconst defaultModule = {\n config: {},\n routes: [],\n controllers: {},\n services: {},\n contentTypes: {},\n policies: {},\n middlewares: {},\n};\n\nexport const createModule = (\n namespace: string,\n rawModule: RawModule,\n strapi: Core.Strapi\n): Module => {\n _.defaults(rawModule, defaultModule);\n\n try {\n validateModule(rawModule);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`strapi-server.js is invalid for '${namespace}'.\\n${e.errors.join('\\n')}`);\n }\n }\n\n const called: LifecyclesState = {};\n return {\n async bootstrap() {\n if (called.bootstrap) {\n throw new Error(`Bootstrap for ${namespace} has already been called`);\n }\n called.bootstrap = true;\n await (rawModule.bootstrap && rawModule.bootstrap({ strapi }));\n },\n async register() {\n if (called.register) {\n throw new Error(`Register for ${namespace} has already been called`);\n }\n called.register = true;\n await (rawModule.register && rawModule.register({ strapi }));\n },\n async destroy() {\n if (called.destroy) {\n throw new Error(`Destroy for ${namespace} has already been called`);\n }\n called.destroy = true;\n await (rawModule.destroy && rawModule.destroy({ strapi }));\n },\n load() {\n strapi.get('content-types').add(namespace, rawModule.contentTypes);\n strapi.get('services').add(namespace, rawModule.services);\n strapi.get('policies').add(namespace, rawModule.policies);\n strapi.get('middlewares').add(namespace, rawModule.middlewares);\n strapi.get('controllers').add(namespace, rawModule.controllers);\n strapi.get('config').set(namespace, rawModule.config);\n },\n get routes() {\n return rawModule.routes ?? {};\n },\n set routes(routes: Record<string, Core.Router>) {\n rawModule.routes = routes;\n },\n config(path: PropertyPath, defaultValue: unknown) {\n const pathArray = flatten([namespace, path]);\n return strapi.get('config').get(pathArray, defaultValue);\n },\n contentType(ctName: UID.ContentType) {\n return strapi.get('content-types').get(`${namespace}.${ctName}`);\n },\n get contentTypes() {\n const contentTypes = strapi.get('content-types').getAll(namespace);\n return removeNamespacedKeys(contentTypes, namespace);\n },\n service(serviceName: UID.Service) {\n return strapi.get('services').get(`${namespace}.${serviceName}`);\n },\n get services() {\n const services = strapi.get('services').getAll(namespace);\n return removeNamespacedKeys(services, namespace);\n },\n policy(policyName: UID.Policy) {\n return strapi.get('policies').get(`${namespace}.${policyName}`);\n },\n get policies() {\n const policies = strapi.get('policies').getAll(namespace);\n return removeNamespacedKeys(policies, namespace);\n },\n middleware(middlewareName: UID.Middleware) {\n return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);\n },\n get middlewares() {\n const middlewares = strapi.get('middlewares').getAll(namespace);\n return removeNamespacedKeys(middlewares, namespace);\n },\n controller(controllerName: UID.Controller) {\n return strapi.get('controllers').get(`${namespace}.${controllerName}`);\n },\n get controllers() {\n const controllers = strapi.get('controllers').getAll(namespace);\n return removeNamespacedKeys(controllers, namespace);\n },\n };\n};\n"],"names":["removeNamespacedKeys","map","namespace","_","mapKeys","value","key","removeNamespace","defaultModule","config","routes","controllers","services","contentTypes","policies","middlewares","createModule","rawModule","strapi","defaults","validateModule","e","yup","ValidationError","Error","errors","join","called","bootstrap","register","destroy","load","get","add","set","path","defaultValue","pathArray","flatten","contentType","ctName","getAll","service","serviceName","policy","policyName","middleware","middlewareName","controller","controllerName"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/domain/module/index.ts"],"sourcesContent":["import _, { type PropertyPath, flatten } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core, UID, Struct } from '@strapi/types';\n\nimport { removeNamespace } from '../../registries/namespace';\nimport { validateModule } from './validation';\n\ninterface LifecyclesState {\n bootstrap?: boolean;\n register?: boolean;\n destroy?: boolean;\n}\n\nexport interface RawModule {\n config?: Record<string, unknown>;\n routes?: Core.Module['routes'];\n controllers?: Core.Module['controllers'];\n services?: Core.Module['services'];\n contentTypes?: Core.Module['contentTypes'];\n policies?: Core.Module['policies'];\n middlewares?: Core.Module['middlewares'];\n bootstrap?: (params: { strapi: Core.Strapi }) => Promise<void>;\n register?: (params: { strapi: Core.Strapi }) => Promise<void>;\n destroy?: (params: { strapi: Core.Strapi }) => Promise<void>;\n}\n\nexport interface Module {\n bootstrap: () => Promise<void>;\n register: () => Promise<void>;\n destroy: () => Promise<void>;\n load: () => void;\n routes: Core.Module['routes'];\n config<T = unknown>(key: PropertyPath, defaultVal?: T): T; // TODO: this mirrors ConfigProvider.get, we should use it directly\n contentType: (ctName: UID.ContentType) => Struct.ContentTypeSchema;\n contentTypes: Record<string, Struct.ContentTypeSchema>;\n service: (serviceName: UID.Service) => Core.Service;\n services: Record<string, Core.Service>;\n policy: (policyName: UID.Policy) => Core.Policy;\n policies: Record<string, Core.Policy>;\n middleware: (middlewareName: UID.Middleware) => Core.Middleware;\n middlewares: Record<string, Core.Middleware>;\n controller: (controllerName: UID.Controller) => Core.Controller;\n controllers: Record<string, Core.Controller>;\n}\n\n// Removes the namespace from a map with keys prefixed with a namespace\nconst removeNamespacedKeys = <T extends Record<string, unknown>>(map: T, namespace: string) => {\n return _.mapKeys(map, (value, key) => removeNamespace(key, namespace));\n};\n\nconst defaultModule = {\n config: {},\n routes: [],\n controllers: {},\n services: {},\n contentTypes: {},\n policies: {},\n middlewares: {},\n};\n\nexport const createModule = (\n namespace: string,\n rawModule: RawModule,\n strapi: Core.Strapi\n): Module => {\n _.defaults(rawModule, defaultModule);\n\n try {\n validateModule(rawModule);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`strapi-server.js is invalid for '${namespace}'.\\n${e.errors.join('\\n')}`);\n }\n }\n\n const called: LifecyclesState = {};\n return {\n async bootstrap() {\n if (called.bootstrap) {\n throw new Error(`Bootstrap for ${namespace} has already been called`);\n }\n called.bootstrap = true;\n await (rawModule.bootstrap && rawModule.bootstrap({ strapi }));\n },\n async register() {\n if (called.register) {\n throw new Error(`Register for ${namespace} has already been called`);\n }\n called.register = true;\n await (rawModule.register && rawModule.register({ strapi }));\n },\n async destroy() {\n if (called.destroy) {\n throw new Error(`Destroy for ${namespace} has already been called`);\n }\n called.destroy = true;\n await (rawModule.destroy && rawModule.destroy({ strapi }));\n },\n load() {\n strapi.get('content-types').add(namespace, rawModule.contentTypes);\n strapi.get('services').add(namespace, rawModule.services);\n strapi.get('policies').add(namespace, rawModule.policies);\n strapi.get('middlewares').add(namespace, rawModule.middlewares);\n strapi.get('controllers').add(namespace, rawModule.controllers);\n strapi.get('config').set(namespace, rawModule.config);\n },\n get routes() {\n return rawModule.routes ?? {};\n },\n config(path: PropertyPath, defaultValue: unknown) {\n const pathArray = flatten([namespace, path]);\n return strapi.get('config').get(pathArray, defaultValue);\n },\n contentType(ctName: UID.ContentType) {\n return strapi.get('content-types').get(`${namespace}.${ctName}`);\n },\n get contentTypes() {\n const contentTypes = strapi.get('content-types').getAll(namespace);\n return removeNamespacedKeys(contentTypes, namespace);\n },\n service(serviceName: UID.Service) {\n return strapi.get('services').get(`${namespace}.${serviceName}`);\n },\n get services() {\n const services = strapi.get('services').getAll(namespace);\n return removeNamespacedKeys(services, namespace);\n },\n policy(policyName: UID.Policy) {\n return strapi.get('policies').get(`${namespace}.${policyName}`);\n },\n get policies() {\n const policies = strapi.get('policies').getAll(namespace);\n return removeNamespacedKeys(policies, namespace);\n },\n middleware(middlewareName: UID.Middleware) {\n return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);\n },\n get middlewares() {\n const middlewares = strapi.get('middlewares').getAll(namespace);\n return removeNamespacedKeys(middlewares, namespace);\n },\n controller(controllerName: UID.Controller) {\n return strapi.get('controllers').get(`${namespace}.${controllerName}`);\n },\n get controllers() {\n const controllers = strapi.get('controllers').getAll(namespace);\n return removeNamespacedKeys(controllers, namespace);\n },\n };\n};\n"],"names":["removeNamespacedKeys","map","namespace","_","mapKeys","value","key","removeNamespace","defaultModule","config","routes","controllers","services","contentTypes","policies","middlewares","createModule","rawModule","strapi","defaults","validateModule","e","yup","ValidationError","Error","errors","join","called","bootstrap","register","destroy","load","get","add","set","path","defaultValue","pathArray","flatten","contentType","ctName","getAll","service","serviceName","policy","policyName","middleware","middlewareName","controller","controllerName"],"mappings":"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"}
@@ -4,9 +4,15 @@ declare const _default: Readonly<{
4
4
  checkLicense: ({ strapi }: {
5
5
  strapi: Core.Strapi;
6
6
  }) => Promise<void>;
7
+ getTrialEndDate: ({ strapi, }: {
8
+ strapi: Core.Strapi;
9
+ }) => Promise<{
10
+ trialEndsAt: string;
11
+ } | null>;
7
12
  readonly isEE: boolean;
8
13
  readonly seats: number | undefined;
9
14
  readonly type: string | undefined;
15
+ readonly isTrial: boolean;
10
16
  features: Readonly<{
11
17
  list: () => {
12
18
  [key: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ee/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;;;;;;;;;;;;;;;;iCA0Pb,MAAM;;;AAnBnC,wBAqBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ee/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;iCAqSb,MAAM;;;AAxBnC,wBA0BG"}
package/dist/ee/index.js CHANGED
@@ -1,20 +1,27 @@
1
1
  'use strict';
2
2
 
3
3
  var fp = require('lodash/fp');
4
+ var fetch = require('../utils/fetch.js');
4
5
  var license = require('./license.js');
5
6
  var cron = require('../utils/cron.js');
6
7
 
7
8
  const ONE_MINUTE = 1000 * 60;
8
9
  const ee = {
9
10
  enabled: false,
10
- licenseInfo: {}
11
+ licenseInfo: {
12
+ isTrial: false
13
+ }
11
14
  };
12
15
  const disable = (message)=>{
13
16
  // Prevent emitting ee.disable if it was already disabled
14
17
  const shouldEmitEvent = ee.enabled !== false;
15
18
  ee.logger?.warn(`${message} Switching to CE.`);
16
- // Only keep the license key for potential re-enabling during a later check
17
- ee.licenseInfo = fp.pick('licenseKey', ee.licenseInfo);
19
+ // Only keep the license key and isTrial for potential re-enabling during a later check
20
+ ee.licenseInfo = fp.pick([
21
+ 'licenseKey',
22
+ 'isTrial'
23
+ ], ee.licenseInfo);
24
+ ee.licenseInfo.isTrial = false;
18
25
  ee.enabled = false;
19
26
  if (shouldEmitEvent) {
20
27
  // Notify EE features that they should be disabled
@@ -163,6 +170,21 @@ const checkLicense = async ({ strapi: strapi1 })=>{
163
170
  validateInfo();
164
171
  }
165
172
  };
173
+ const getTrialEndDate = async ({ strapi: strapi1 })=>{
174
+ const silentFetch = fetch.createStrapiFetch(strapi1, {
175
+ logs: false
176
+ });
177
+ const res = await silentFetch(`${license.LICENSE_REGISTRY_URI}/api/licenses/${ee.licenseInfo.licenseKey}/trial-countdown`, {
178
+ method: 'GET',
179
+ headers: {
180
+ 'Content-Type': 'application/json'
181
+ }
182
+ }).catch(()=>{
183
+ throw new license.LicenseCheckError('Could not proceed to retrieve the trial time left for your license.', true);
184
+ });
185
+ const data = await res.json();
186
+ return data;
187
+ };
166
188
  const list = ()=>{
167
189
  return ee.licenseInfo.features?.map((feature)=>typeof feature === 'object' ? feature : {
168
190
  name: feature
@@ -172,6 +194,7 @@ const get = (featureName)=>list().find((feature)=>feature.name === featureName);
172
194
  var index = Object.freeze({
173
195
  init,
174
196
  checkLicense,
197
+ getTrialEndDate,
175
198
  get isEE () {
176
199
  return ee.enabled;
177
200
  },
@@ -181,6 +204,9 @@ var index = Object.freeze({
181
204
  get type () {
182
205
  return ee.licenseInfo.type;
183
206
  },
207
+ get isTrial () {
208
+ return ee.licenseInfo.isTrial;
209
+ },
184
210
  features: Object.freeze({
185
211
  list,
186
212
  get,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/ee/index.ts"],"sourcesContent":["import { pick, isEqual } from 'lodash/fp';\nimport type { Logger } from '@strapi/logger';\nimport type { Core } from '@strapi/types';\n\nimport { readLicense, verifyLicense, fetchLicense, LicenseCheckError } from './license';\nimport { shiftCronExpression } from '../utils/cron';\n\nconst ONE_MINUTE = 1000 * 60;\n\ninterface EE {\n enabled: boolean;\n licenseInfo: {\n licenseKey?: string;\n features?: Array<{ name: string; [key: string]: any } | string>;\n expireAt?: string;\n seats?: number;\n type?: string;\n };\n logger?: Logger;\n}\n\nconst ee: EE = {\n enabled: false,\n licenseInfo: {},\n};\n\nconst disable = (message: string) => {\n // Prevent emitting ee.disable if it was already disabled\n const shouldEmitEvent = ee.enabled !== false;\n\n ee.logger?.warn(`${message} Switching to CE.`);\n // Only keep the license key for potential re-enabling during a later check\n ee.licenseInfo = pick('licenseKey', ee.licenseInfo);\n\n ee.enabled = false;\n\n if (shouldEmitEvent) {\n // Notify EE features that they should be disabled\n strapi.eventHub.emit('ee.disable');\n }\n};\n\nconst enable = () => {\n // Prevent emitting ee.enable if it was already enabled\n const shouldEmitEvent = ee.enabled !== true;\n\n ee.enabled = true;\n\n if (shouldEmitEvent) {\n // Notify EE features that they should be disabled\n strapi.eventHub.emit('ee.enable');\n }\n};\n\nlet initialized = false;\n\n/**\n * Optimistically enable EE if the format of the license is valid, only run once.\n */\nconst init = (licenseDir: string, logger?: Logger) => {\n if (initialized) {\n return;\n }\n\n initialized = true;\n ee.logger = logger;\n\n if (process.env.STRAPI_DISABLE_EE?.toLowerCase() === 'true') {\n return;\n }\n\n try {\n const license = process.env.STRAPI_LICENSE || readLicense(licenseDir);\n\n if (license) {\n ee.licenseInfo = verifyLicense(license);\n enable();\n }\n } catch (error) {\n if (error instanceof Error) {\n disable(error.message);\n } else {\n disable('Invalid license.');\n }\n }\n};\n\n/**\n * Contact the license registry to update the license to its latest state.\n *\n * Store the result in database to avoid unecessary requests, and will fallback to that in case of a network failure.\n */\nconst onlineUpdate = async ({ strapi }: { strapi: Core.Strapi }) => {\n const { get, commit, rollback } = (await strapi.db?.transaction()) as any;\n const transaction = get();\n\n try {\n const storedInfo = await strapi.db\n ?.queryBuilder('strapi::core-store')\n .where({ key: 'ee_information' })\n .select('value')\n .first()\n .transacting(transaction)\n .forUpdate()\n .execute()\n .then((result: any) => (result ? JSON.parse(result.value) : result));\n\n const shouldContactRegistry = (storedInfo?.lastCheckAt ?? 0) < Date.now() - ONE_MINUTE;\n const result: {\n license?: string | null;\n error?: string;\n lastCheckAt?: number;\n } = { lastCheckAt: Date.now() };\n\n const fallback = (error: Error) => {\n if (error instanceof LicenseCheckError && error.shouldFallback && storedInfo?.license) {\n ee.logger?.warn(\n `${error.message} The last stored one will be used as a potential fallback.`\n );\n return storedInfo.license;\n }\n\n result.error = error.message;\n disable(error.message);\n };\n\n if (!ee?.licenseInfo?.licenseKey) {\n throw new Error('Missing license key.');\n }\n\n const license = shouldContactRegistry\n ? await fetchLicense({ strapi }, ee.licenseInfo.licenseKey, strapi.config.get('uuid')).catch(\n fallback\n )\n : storedInfo.license;\n\n if (license) {\n try {\n // Verify license and check if its info changed\n const newLicenseInfo = verifyLicense(license);\n const licenseInfoChanged =\n !isEqual(newLicenseInfo.features, ee.licenseInfo.features) ||\n newLicenseInfo.seats !== ee.licenseInfo.seats ||\n newLicenseInfo.type !== ee.licenseInfo.type;\n\n // Store the new license info\n ee.licenseInfo = newLicenseInfo;\n const wasEnabled = ee.enabled;\n validateInfo();\n\n // Notify EE features\n if (licenseInfoChanged && wasEnabled) {\n strapi.eventHub.emit('ee.update');\n }\n } catch (error) {\n if (error instanceof Error) {\n disable(error.message);\n } else {\n disable('Invalid license.');\n }\n }\n } else if (!shouldContactRegistry) {\n disable(storedInfo.error);\n }\n\n if (shouldContactRegistry) {\n result.license = license ?? null;\n const query = strapi.db.queryBuilder('strapi::core-store').transacting(transaction);\n\n if (!storedInfo) {\n query.insert({ key: 'ee_information', value: JSON.stringify(result) });\n } else {\n query.update({ value: JSON.stringify(result) }).where({ key: 'ee_information' });\n }\n\n await query.execute();\n }\n\n await commit();\n } catch (error) {\n // Example of errors: SQLite does not support FOR UPDATE\n await rollback();\n }\n};\n\nconst validateInfo = () => {\n if (typeof ee.licenseInfo.expireAt === 'undefined') {\n throw new Error('Missing license key.');\n }\n\n const expirationTime = new Date(ee.licenseInfo.expireAt).getTime();\n\n if (expirationTime < new Date().getTime()) {\n return disable('License expired.');\n }\n\n enable();\n};\n\nconst checkLicense = async ({ strapi }: { strapi: Core.Strapi }) => {\n const shouldStayOffline =\n ee.licenseInfo.type === 'gold' &&\n // This env variable support is temporarily used to ease the migration between online vs offline\n process.env.STRAPI_DISABLE_LICENSE_PING?.toLowerCase() === 'true';\n\n if (!shouldStayOffline) {\n await onlineUpdate({ strapi });\n\n strapi.cron.add({\n onlineUpdate: {\n task: () => onlineUpdate({ strapi }),\n options: shiftCronExpression('0 0 */12 * * *'),\n },\n });\n } else {\n if (!ee.licenseInfo.expireAt) {\n return disable('Your license does not have offline support.');\n }\n\n validateInfo();\n }\n};\n\nconst list = () => {\n return (\n ee.licenseInfo.features?.map((feature) =>\n typeof feature === 'object' ? feature : { name: feature }\n ) || []\n );\n};\n\nconst get = (featureName: string) => list().find((feature) => feature.name === featureName);\n\nexport default Object.freeze({\n init,\n checkLicense,\n\n get isEE() {\n return ee.enabled;\n },\n\n get seats() {\n return ee.licenseInfo.seats;\n },\n\n get type() {\n return ee.licenseInfo.type;\n },\n\n features: Object.freeze({\n list,\n get,\n isEnabled: (featureName: string) => get(featureName) !== undefined,\n }),\n});\n"],"names":["ONE_MINUTE","ee","enabled","licenseInfo","disable","message","shouldEmitEvent","logger","warn","pick","strapi","eventHub","emit","enable","initialized","init","licenseDir","process","env","STRAPI_DISABLE_EE","toLowerCase","license","STRAPI_LICENSE","readLicense","verifyLicense","error","Error","onlineUpdate","get","commit","rollback","db","transaction","storedInfo","queryBuilder","where","key","select","first","transacting","forUpdate","execute","then","result","JSON","parse","value","shouldContactRegistry","lastCheckAt","Date","now","fallback","LicenseCheckError","shouldFallback","licenseKey","fetchLicense","config","catch","newLicenseInfo","licenseInfoChanged","isEqual","features","seats","type","wasEnabled","validateInfo","query","insert","stringify","update","expireAt","expirationTime","getTime","checkLicense","shouldStayOffline","STRAPI_DISABLE_LICENSE_PING","cron","add","task","options","shiftCronExpression","list","map","feature","name","featureName","find","Object","freeze","isEE","isEnabled","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/ee/index.ts"],"sourcesContent":["import { pick, isEqual } from 'lodash/fp';\nimport type { Logger } from '@strapi/logger';\nimport type { Core } from '@strapi/types';\nimport { createStrapiFetch } from '../utils/fetch';\nimport {\n readLicense,\n verifyLicense,\n fetchLicense,\n LicenseCheckError,\n LICENSE_REGISTRY_URI,\n} from './license';\nimport { shiftCronExpression } from '../utils/cron';\n\nconst ONE_MINUTE = 1000 * 60;\n\ninterface EE {\n enabled: boolean;\n licenseInfo: {\n licenseKey?: string;\n features?: Array<{ name: string; [key: string]: any } | string>;\n expireAt?: string;\n seats?: number;\n type?: string;\n isTrial: boolean;\n };\n logger?: Logger;\n}\n\nconst ee: EE = {\n enabled: false,\n licenseInfo: {\n isTrial: false,\n },\n};\n\nconst disable = (message: string) => {\n // Prevent emitting ee.disable if it was already disabled\n const shouldEmitEvent = ee.enabled !== false;\n\n ee.logger?.warn(`${message} Switching to CE.`);\n // Only keep the license key and isTrial for potential re-enabling during a later check\n ee.licenseInfo = pick(['licenseKey', 'isTrial'], ee.licenseInfo);\n\n ee.licenseInfo.isTrial = false;\n\n ee.enabled = false;\n\n if (shouldEmitEvent) {\n // Notify EE features that they should be disabled\n strapi.eventHub.emit('ee.disable');\n }\n};\n\nconst enable = () => {\n // Prevent emitting ee.enable if it was already enabled\n const shouldEmitEvent = ee.enabled !== true;\n\n ee.enabled = true;\n\n if (shouldEmitEvent) {\n // Notify EE features that they should be disabled\n strapi.eventHub.emit('ee.enable');\n }\n};\n\nlet initialized = false;\n\n/**\n * Optimistically enable EE if the format of the license is valid, only run once.\n */\nconst init = (licenseDir: string, logger?: Logger) => {\n if (initialized) {\n return;\n }\n\n initialized = true;\n ee.logger = logger;\n\n if (process.env.STRAPI_DISABLE_EE?.toLowerCase() === 'true') {\n return;\n }\n\n try {\n const license = process.env.STRAPI_LICENSE || readLicense(licenseDir);\n\n if (license) {\n ee.licenseInfo = verifyLicense(license);\n enable();\n }\n } catch (error) {\n if (error instanceof Error) {\n disable(error.message);\n } else {\n disable('Invalid license.');\n }\n }\n};\n\n/**\n * Contact the license registry to update the license to its latest state.\n *\n * Store the result in database to avoid unecessary requests, and will fallback to that in case of a network failure.\n */\nconst onlineUpdate = async ({ strapi }: { strapi: Core.Strapi }) => {\n const { get, commit, rollback } = (await strapi.db?.transaction()) as any;\n const transaction = get();\n\n try {\n const storedInfo = await strapi.db\n ?.queryBuilder('strapi::core-store')\n .where({ key: 'ee_information' })\n .select('value')\n .first()\n .transacting(transaction)\n .forUpdate()\n .execute()\n .then((result: any) => (result ? JSON.parse(result.value) : result));\n\n const shouldContactRegistry = (storedInfo?.lastCheckAt ?? 0) < Date.now() - ONE_MINUTE;\n const result: {\n license?: string | null;\n error?: string;\n lastCheckAt?: number;\n } = { lastCheckAt: Date.now() };\n\n const fallback = (error: Error) => {\n if (error instanceof LicenseCheckError && error.shouldFallback && storedInfo?.license) {\n ee.logger?.warn(\n `${error.message} The last stored one will be used as a potential fallback.`\n );\n return storedInfo.license;\n }\n\n result.error = error.message;\n disable(error.message);\n };\n\n if (!ee?.licenseInfo?.licenseKey) {\n throw new Error('Missing license key.');\n }\n\n const license = shouldContactRegistry\n ? await fetchLicense({ strapi }, ee.licenseInfo.licenseKey, strapi.config.get('uuid')).catch(\n fallback\n )\n : storedInfo.license;\n\n if (license) {\n try {\n // Verify license and check if its info changed\n const newLicenseInfo = verifyLicense(license);\n const licenseInfoChanged =\n !isEqual(newLicenseInfo.features, ee.licenseInfo.features) ||\n newLicenseInfo.seats !== ee.licenseInfo.seats ||\n newLicenseInfo.type !== ee.licenseInfo.type;\n\n // Store the new license info\n ee.licenseInfo = newLicenseInfo;\n const wasEnabled = ee.enabled;\n validateInfo();\n\n // Notify EE features\n if (licenseInfoChanged && wasEnabled) {\n strapi.eventHub.emit('ee.update');\n }\n } catch (error) {\n if (error instanceof Error) {\n disable(error.message);\n } else {\n disable('Invalid license.');\n }\n }\n } else if (!shouldContactRegistry) {\n disable(storedInfo.error);\n }\n\n if (shouldContactRegistry) {\n result.license = license ?? null;\n const query = strapi.db.queryBuilder('strapi::core-store').transacting(transaction);\n\n if (!storedInfo) {\n query.insert({ key: 'ee_information', value: JSON.stringify(result) });\n } else {\n query.update({ value: JSON.stringify(result) }).where({ key: 'ee_information' });\n }\n\n await query.execute();\n }\n\n await commit();\n } catch (error) {\n // Example of errors: SQLite does not support FOR UPDATE\n await rollback();\n }\n};\n\nconst validateInfo = () => {\n if (typeof ee.licenseInfo.expireAt === 'undefined') {\n throw new Error('Missing license key.');\n }\n\n const expirationTime = new Date(ee.licenseInfo.expireAt).getTime();\n\n if (expirationTime < new Date().getTime()) {\n return disable('License expired.');\n }\n\n enable();\n};\n\nconst checkLicense = async ({ strapi }: { strapi: Core.Strapi }) => {\n const shouldStayOffline =\n ee.licenseInfo.type === 'gold' &&\n // This env variable support is temporarily used to ease the migration between online vs offline\n process.env.STRAPI_DISABLE_LICENSE_PING?.toLowerCase() === 'true';\n\n if (!shouldStayOffline) {\n await onlineUpdate({ strapi });\n\n strapi.cron.add({\n onlineUpdate: {\n task: () => onlineUpdate({ strapi }),\n options: shiftCronExpression('0 0 */12 * * *'),\n },\n });\n } else {\n if (!ee.licenseInfo.expireAt) {\n return disable('Your license does not have offline support.');\n }\n\n validateInfo();\n }\n};\n\nconst getTrialEndDate = async ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): Promise<{ trialEndsAt: string } | null> => {\n const silentFetch = createStrapiFetch(strapi, {\n logs: false,\n });\n\n const res = await silentFetch(\n `${LICENSE_REGISTRY_URI}/api/licenses/${ee.licenseInfo.licenseKey}/trial-countdown`,\n {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n }\n ).catch(() => {\n throw new LicenseCheckError(\n 'Could not proceed to retrieve the trial time left for your license.',\n true\n );\n });\n\n const data = await res.json();\n\n return data;\n};\n\nconst list = () => {\n return (\n ee.licenseInfo.features?.map((feature) =>\n typeof feature === 'object' ? feature : { name: feature }\n ) || []\n );\n};\n\nconst get = (featureName: string) => list().find((feature) => feature.name === featureName);\n\nexport default Object.freeze({\n init,\n checkLicense,\n getTrialEndDate,\n\n get isEE() {\n return ee.enabled;\n },\n\n get seats() {\n return ee.licenseInfo.seats;\n },\n\n get type() {\n return ee.licenseInfo.type;\n },\n\n get isTrial() {\n return ee.licenseInfo.isTrial;\n },\n\n features: Object.freeze({\n list,\n get,\n isEnabled: (featureName: string) => get(featureName) !== undefined,\n }),\n});\n"],"names":["ONE_MINUTE","ee","enabled","licenseInfo","isTrial","disable","message","shouldEmitEvent","logger","warn","pick","strapi","eventHub","emit","enable","initialized","init","licenseDir","process","env","STRAPI_DISABLE_EE","toLowerCase","license","STRAPI_LICENSE","readLicense","verifyLicense","error","Error","onlineUpdate","get","commit","rollback","db","transaction","storedInfo","queryBuilder","where","key","select","first","transacting","forUpdate","execute","then","result","JSON","parse","value","shouldContactRegistry","lastCheckAt","Date","now","fallback","LicenseCheckError","shouldFallback","licenseKey","fetchLicense","config","catch","newLicenseInfo","licenseInfoChanged","isEqual","features","seats","type","wasEnabled","validateInfo","query","insert","stringify","update","expireAt","expirationTime","getTime","checkLicense","shouldStayOffline","STRAPI_DISABLE_LICENSE_PING","cron","add","task","options","shiftCronExpression","getTrialEndDate","silentFetch","createStrapiFetch","logs","res","LICENSE_REGISTRY_URI","method","headers","data","json","list","map","feature","name","featureName","find","Object","freeze","isEE","isEnabled","undefined"],"mappings":"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"}