@strapi/strapi 4.0.0-next.6 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +12 -12
  2. package/bin/strapi.js +41 -60
  3. package/lib/Strapi.js +234 -114
  4. package/lib/commands/build.js +16 -6
  5. package/lib/commands/console.js +1 -1
  6. package/lib/commands/content-types/list.js +22 -0
  7. package/lib/commands/develop.js +17 -18
  8. package/lib/commands/generate-template.js +4 -5
  9. package/lib/commands/hooks/list.js +22 -0
  10. package/lib/commands/middlewares/list.js +22 -0
  11. package/lib/commands/new.js +3 -1
  12. package/lib/commands/policies/list.js +22 -0
  13. package/lib/commands/routes/list.js +28 -0
  14. package/lib/commands/services/list.js +22 -0
  15. package/lib/commands/watchAdmin.js +18 -8
  16. package/lib/container.js +6 -6
  17. package/lib/core/app-configuration/config-loader.js +1 -37
  18. package/lib/core/app-configuration/index.js +6 -46
  19. package/lib/core/app-configuration/load-config-file.js +43 -0
  20. package/lib/core/bootstrap.js +5 -117
  21. package/lib/core/domain/component/index.js +24 -0
  22. package/lib/core/domain/component/validator.js +29 -0
  23. package/lib/core/domain/content-type/index.js +140 -0
  24. package/lib/core/domain/content-type/validator.js +64 -0
  25. package/lib/core/domain/module/index.js +108 -0
  26. package/lib/core/domain/module/validation.js +33 -0
  27. package/lib/core/loaders/admin.js +16 -0
  28. package/lib/core/loaders/apis.js +159 -0
  29. package/lib/core/{load-components.js → loaders/components.js} +5 -7
  30. package/lib/core/loaders/index.js +11 -0
  31. package/lib/core/loaders/middlewares.js +36 -0
  32. package/lib/core/loaders/plugins/get-enabled-plugins.js +116 -0
  33. package/lib/core/loaders/plugins/index.js +123 -0
  34. package/lib/core/loaders/policies.js +28 -0
  35. package/lib/core/loaders/src-index.js +39 -0
  36. package/lib/core/registries/apis.js +29 -0
  37. package/lib/core/{app-configuration/config-provider.js → registries/config.js} +4 -11
  38. package/lib/core/registries/content-types.js +97 -0
  39. package/lib/core/registries/controllers.d.ts +7 -0
  40. package/lib/core/registries/controllers.js +114 -0
  41. package/lib/core/registries/hooks.d.ts +20 -0
  42. package/lib/core/registries/hooks.js +87 -0
  43. package/lib/core/registries/middlewares.d.ts +5 -0
  44. package/lib/core/registries/middlewares.js +89 -0
  45. package/lib/core/registries/modules.js +44 -0
  46. package/lib/core/registries/plugins.js +28 -0
  47. package/lib/core/registries/policies.d.ts +9 -0
  48. package/lib/core/registries/policies.js +89 -0
  49. package/lib/core/registries/services.d.ts +7 -0
  50. package/lib/core/registries/services.js +114 -0
  51. package/lib/core/utils.js +35 -0
  52. package/lib/core-api/controller/collection-type.js +45 -26
  53. package/lib/core-api/controller/index.d.ts +25 -0
  54. package/lib/core-api/controller/index.js +33 -11
  55. package/lib/core-api/controller/single-type.js +29 -15
  56. package/lib/core-api/controller/transform.js +62 -6
  57. package/lib/core-api/routes/index.js +71 -0
  58. package/lib/core-api/service/collection-type.js +43 -21
  59. package/lib/core-api/service/index.d.ts +21 -0
  60. package/lib/core-api/service/index.js +8 -67
  61. package/lib/core-api/service/pagination.js +130 -0
  62. package/lib/core-api/service/single-type.js +17 -19
  63. package/lib/factories.d.ts +48 -0
  64. package/lib/factories.js +84 -0
  65. package/lib/index.d.ts +10 -31
  66. package/lib/index.js +5 -1
  67. package/lib/middlewares/body.js +33 -0
  68. package/lib/middlewares/compression.js +8 -0
  69. package/lib/middlewares/cors.js +58 -0
  70. package/lib/middlewares/errors.js +40 -0
  71. package/lib/middlewares/favicon.js +19 -0
  72. package/lib/middlewares/index.d.ts +5 -0
  73. package/lib/middlewares/index.js +30 -117
  74. package/lib/middlewares/ip.js +8 -0
  75. package/lib/middlewares/logger.js +27 -0
  76. package/lib/middlewares/powered-by.js +20 -0
  77. package/lib/middlewares/public/index.js +98 -73
  78. package/lib/middlewares/query.js +46 -0
  79. package/lib/middlewares/response-time.js +15 -0
  80. package/lib/middlewares/responses.js +19 -0
  81. package/lib/middlewares/security.js +51 -0
  82. package/lib/middlewares/session/index.js +6 -6
  83. package/lib/migrations/draft-publish.js +57 -0
  84. package/lib/services/auth/index.js +87 -0
  85. package/lib/services/core-store.js +64 -51
  86. package/lib/services/cron.js +54 -0
  87. package/lib/services/entity-service/attributes/index.js +31 -0
  88. package/lib/services/entity-service/attributes/transforms.js +20 -0
  89. package/lib/services/entity-service/components.js +39 -15
  90. package/lib/services/entity-service/index.d.ts +91 -0
  91. package/lib/services/entity-service/index.js +120 -59
  92. package/lib/services/entity-service/params.js +52 -94
  93. package/lib/services/entity-validator/index.js +76 -43
  94. package/lib/services/entity-validator/validators.js +129 -43
  95. package/lib/services/errors.js +77 -0
  96. package/lib/{core → services}/fs.js +10 -2
  97. package/lib/services/metrics/index.js +41 -38
  98. package/lib/services/metrics/sender.js +2 -2
  99. package/lib/services/server/admin-api.js +14 -0
  100. package/lib/services/server/api.js +36 -0
  101. package/lib/services/server/compose-endpoint.js +141 -0
  102. package/lib/services/server/content-api.js +16 -0
  103. package/lib/{server.js → services/server/http-server.js} +0 -0
  104. package/lib/services/server/index.js +127 -0
  105. package/lib/services/server/koa.js +64 -0
  106. package/lib/services/server/middleware.js +122 -0
  107. package/lib/services/server/policy.js +32 -0
  108. package/lib/services/server/register-middlewares.js +110 -0
  109. package/lib/services/server/register-routes.js +106 -0
  110. package/lib/services/server/routing.js +120 -0
  111. package/lib/services/utils/upload-files.js +1 -1
  112. package/lib/services/webhook-runner.js +1 -1
  113. package/lib/utils/ee.js +3 -3
  114. package/lib/utils/get-dirs.js +17 -0
  115. package/lib/utils/index.js +2 -0
  116. package/lib/utils/is-initialized.js +1 -1
  117. package/lib/utils/run-checks.js +0 -15
  118. package/lib/utils/signals.js +24 -0
  119. package/lib/utils/startup-logger.js +2 -2
  120. package/lib/utils/update-notifier/index.js +3 -2
  121. package/package.json +93 -96
  122. package/lib/commands/generate.js +0 -76
  123. package/lib/core/index.js +0 -17
  124. package/lib/core/load-apis.js +0 -20
  125. package/lib/core/load-extensions.js +0 -71
  126. package/lib/core/load-functions.js +0 -21
  127. package/lib/core/load-middlewares.js +0 -130
  128. package/lib/core/load-modules.js +0 -55
  129. package/lib/core/load-plugins.js +0 -68
  130. package/lib/core/load-policies.js +0 -36
  131. package/lib/core/walk.js +0 -27
  132. package/lib/core-api/index.js +0 -39
  133. package/lib/load/check-reserved-filename.js +0 -10
  134. package/lib/load/load-config-files.js +0 -22
  135. package/lib/load/require-file-parse.js +0 -15
  136. package/lib/middlewares/boom/defaults.json +0 -5
  137. package/lib/middlewares/boom/index.js +0 -147
  138. package/lib/middlewares/cors/index.js +0 -66
  139. package/lib/middlewares/cron/defaults.json +0 -5
  140. package/lib/middlewares/cron/index.js +0 -43
  141. package/lib/middlewares/favicon/defaults.json +0 -7
  142. package/lib/middlewares/favicon/index.js +0 -32
  143. package/lib/middlewares/gzip/defaults.json +0 -6
  144. package/lib/middlewares/gzip/index.js +0 -19
  145. package/lib/middlewares/helmet/defaults.json +0 -18
  146. package/lib/middlewares/helmet/index.js +0 -9
  147. package/lib/middlewares/ip/defaults.json +0 -7
  148. package/lib/middlewares/ip/index.js +0 -25
  149. package/lib/middlewares/language/defaults.json +0 -9
  150. package/lib/middlewares/language/index.js +0 -40
  151. package/lib/middlewares/logger/defaults.json +0 -5
  152. package/lib/middlewares/logger/index.js +0 -37
  153. package/lib/middlewares/parser/defaults.json +0 -11
  154. package/lib/middlewares/parser/index.js +0 -71
  155. package/lib/middlewares/poweredBy/defaults.json +0 -5
  156. package/lib/middlewares/poweredBy/index.js +0 -16
  157. package/lib/middlewares/public/defaults.json +0 -8
  158. package/lib/middlewares/responseTime/defaults.json +0 -5
  159. package/lib/middlewares/responseTime/index.js +0 -25
  160. package/lib/middlewares/responses/defaults.json +0 -5
  161. package/lib/middlewares/responses/index.js +0 -18
  162. package/lib/middlewares/router/defaults.json +0 -7
  163. package/lib/middlewares/router/index.js +0 -64
  164. package/lib/middlewares/router/utils/composeEndpoint.js +0 -25
  165. package/lib/middlewares/router/utils/routerChecker.js +0 -92
  166. package/lib/utils/get-prefixed-dependencies.js +0 -7
package/README.md CHANGED
@@ -9,11 +9,11 @@
9
9
  <br />
10
10
 
11
11
  <p align="center">
12
- <a href="https://www.npmjs.org/package/strapi">
13
- <img src="https://img.shields.io/npm/v/strapi/latest.svg" alt="NPM Version" />
12
+ <a href="https://www.npmjs.org/package/@strapi/strapi">
13
+ <img src="https://img.shields.io/npm/v/@strapi/strapi/latest.svg" alt="NPM Version" />
14
14
  </a>
15
- <a href="https://www.npmjs.org/package/strapi">
16
- <img src="https://img.shields.io/npm/dm/strapi.svg" alt="Monthly download on NPM" />
15
+ <a href="https://github.com/strapi/strapi/actions/workflows/tests.yml">
16
+ <img src="https://github.com/strapi/strapi/actions/workflows/tests.yml/badge.svg?branch=master" alt="Tests" />
17
17
  </a>
18
18
  <a href="https://discord.strapi.io">
19
19
  <img src="https://img.shields.io/discord/811989166782021633?label=Discord" alt="Strapi on Discord" />
@@ -24,7 +24,7 @@
24
24
 
25
25
  <p align="center">
26
26
  <a href="https://strapi.io">
27
- <img src="https://raw.githubusercontent.com/strapi/strapi/master/public/assets/administration_panel.png" alt="Administration panel" />
27
+ <img src="https://raw.githubusercontent.com/strapi/strapi/0bcebf77b37182fe021cb59cc19be8f5db4a18ac/public/assets/administration_panel.png" alt="Administration panel" />
28
28
  </a>
29
29
  </p>
30
30
 
@@ -39,7 +39,7 @@ Strapi is a free and open-source headless CMS delivering your content anywhere y
39
39
 
40
40
  ## Getting Started
41
41
 
42
- <a href="https://strapi.io/documentation/developer-docs/latest/getting-started/quick-start.html" target="_blank">Read the Getting Started tutorial</a> or follow the steps below:
42
+ <a href="https://docs.strapi.io/developer-docs/latest/getting-started/quick-start.html" target="_blank">Read the Getting Started tutorial</a> or follow the steps below:
43
43
 
44
44
  ### ⏳ Installation
45
45
 
@@ -65,7 +65,7 @@ Enjoy 🎉
65
65
 
66
66
  ### 🖐 Requirements
67
67
 
68
- Complete installation requirements can be found in the documentation under <a href="https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/deployment.html#recommended-requirements">Installation Requirements</a>.
68
+ Complete installation requirements can be found in the documentation under <a href="https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/deployment.html">Installation Requirements</a>.
69
69
 
70
70
  **Supported operating systems**:
71
71
 
@@ -79,7 +79,7 @@ Complete installation requirements can be found in the documentation under <a hr
79
79
 
80
80
  **Node:**
81
81
 
82
- - NodeJS >= 10.16 <=14
82
+ - NodeJS >= 12 <= 16
83
83
  - NPM >= 6.x
84
84
 
85
85
  **Database:**
@@ -109,7 +109,7 @@ Please read our [Contributing Guide](./CONTRIBUTING.md) before submitting a Pull
109
109
 
110
110
  ## Community support
111
111
 
112
- For general help using Strapi, please refer to [the official Strapi documentation](https://strapi.io/documentation/). For additional help, you can use one of these channels to ask a question:
112
+ For general help using Strapi, please refer to [the official Strapi documentation](https://docs.strapi.io). For additional help, you can use one of these channels to ask a question:
113
113
 
114
114
  - [Discord](https://discord.strapi.io) (For live discussion with the Community and Strapi team)
115
115
  - [GitHub](https://github.com/strapi/strapi) (Bug reports, Contributions)
@@ -122,7 +122,7 @@ For general help using Strapi, please refer to [the official Strapi documentatio
122
122
 
123
123
  ## Migration
124
124
 
125
- Follow our [migration guides](https://strapi.io/documentation/developer-docs/latest/update-migration-guides/migration-guides.html) on the documentation to keep your projects up-to-date.
125
+ Follow our [migration guides](https://docs.strapi.io/developer-docs/latest/update-migration-guides/migration-guides.html) on the documentation to keep your projects up-to-date.
126
126
 
127
127
  ## Roadmap
128
128
 
@@ -132,8 +132,8 @@ Check out our [roadmap](https://portal.productboard.com/strapi) to get informed
132
132
 
133
133
  See our dedicated [repository](https://github.com/strapi/documentation) for the Strapi documentation, or view our documentation live:
134
134
 
135
- - [Developer docs](https://strapi.io/documentation/developer-docs/latest/getting-started/introduction.html)
136
- - [User docs](https://strapi.io/documentation/user-docs/latest/getting-started/introduction.html)
135
+ - [Developer docs](https://docs.strapi.io/developer-docs/latest/getting-started/introduction.html)
136
+ - [User guide](https://docs.strapi.io/user-docs/latest/getting-started/introduction.html)
137
137
 
138
138
  ## Try live demo
139
139
 
package/bin/strapi.js CHANGED
@@ -58,10 +58,7 @@ const getLocalScript = name => (...args) => {
58
58
  };
59
59
 
60
60
  // Initial program setup
61
- program
62
- .storeOptionsAsProperties(false)
63
- .passCommandToAction(false)
64
- .allowUnknownOption(true);
61
+ program.storeOptionsAsProperties(false).allowUnknownOption(true);
65
62
 
66
63
  program.helpOption('-h, --help', 'Display help for command');
67
64
  program.addHelpCommand('help [command]', 'Display help for command');
@@ -118,68 +115,22 @@ program
118
115
  .description('Start your Strapi application in development mode')
119
116
  .action(getLocalScript('develop'));
120
117
 
121
- // `$ strapi generate:api`
122
- program
123
- .command('generate:api <id> [attributes...]')
124
- .option('-a, --api <api>', 'API name to generate the files in')
125
- .option('-p, --plugin <api>', 'Name of the local plugin')
126
- .option('-e, --extend <api>', 'Name of the plugin to extend')
127
- .option('--draft-and-publish', 'Enable draft/publish', false)
128
- .description('Generate a basic API')
129
- .action((id, attributes, cliArguments) => {
130
- cliArguments.attributes = attributes;
131
- getLocalScript('generate')(id, cliArguments);
132
- });
133
-
134
- // `$ strapi generate:controller`
135
- program
136
- .command('generate:controller <id>')
137
- .option('-a, --api <api>', 'API name to generate the files in')
138
- .option('-p, --plugin <api>', 'Name of the local plugin')
139
- .option('-e, --extend <api>', 'Name of the plugin to extend')
140
- .description('Generate a controller for an API')
141
- .action(getLocalScript('generate'));
142
-
143
- // `$ strapi generate:model`
144
- program
145
- .command('generate:model <id> [attributes...]')
146
- .option('-a, --api <api>', 'API name to generate a sub API')
147
- .option('-p, --plugin <api>', 'plugin name')
148
- .option('--draft-and-publish', 'Enable draft/publish', false)
149
- .description('Generate a model for an API')
150
- .action((id, attributes, cliArguments) => {
151
- cliArguments.attributes = attributes;
152
- getLocalScript('generate')(id, cliArguments);
153
- });
154
-
155
- // `$ strapi generate:policy`
156
- program
157
- .command('generate:policy <id>')
158
- .option('-a, --api <api>', 'API name')
159
- .option('-p, --plugin <api>', 'plugin name')
160
- .description('Generate a policy for an API')
161
- .action(getLocalScript('generate'));
162
-
163
- // `$ strapi generate:service`
164
- program
165
- .command('generate:service <id>')
166
- .option('-a, --api <api>', 'API name')
167
- .option('-p, --plugin <api>', 'plugin name')
168
- .description('Generate a service for an API')
169
- .action(getLocalScript('generate'));
170
-
171
- // `$ strapi generate:plugin`
118
+ // $ strapi generate
172
119
  program
173
- .command('generate:plugin <id>')
174
- .option('-n, --name <name>', 'Plugin name')
175
- .description('Generate a basic plugin')
176
- .action(getLocalScript('generate'));
120
+ .command('generate')
121
+ .description('Launch interactive API generator')
122
+ .action(() => {
123
+ checkCwdIsStrapiApp('generate');
124
+ process.argv.splice(2, 1);
125
+ require('@strapi/generators').runCLI();
126
+ });
177
127
 
178
128
  // `$ strapi generate:template <directory>`
179
129
  program
180
- .command('generate:template <directory>')
130
+ .command('templates:generate <directory>')
181
131
  .description('Generate template from Strapi project')
182
132
  .action(getLocalScript('generate-template'));
133
+
183
134
  program
184
135
  .command('build')
185
136
  .option('--clean', 'Remove the build and .cache folders', false)
@@ -232,4 +183,34 @@ program
232
183
  .option('-p, --password <password>', 'New password for the user')
233
184
  .action(getLocalScript('admin-reset'));
234
185
 
186
+ program
187
+ .command('routes:list')
188
+ .description('List all the application routes')
189
+ .action(getLocalScript('routes/list'));
190
+
191
+ program
192
+ .command('middlewares:list')
193
+ .description('List all the application middlewares')
194
+ .action(getLocalScript('middlewares/list'));
195
+
196
+ program
197
+ .command('policies:list')
198
+ .description('List all the application policies')
199
+ .action(getLocalScript('policies/list'));
200
+
201
+ program
202
+ .command('content-types:list')
203
+ .description('List all the application content-types')
204
+ .action(getLocalScript('content-types/list'));
205
+
206
+ program
207
+ .command('hooks:list')
208
+ .description('List all the application hooks')
209
+ .action(getLocalScript('hooks/list'));
210
+
211
+ program
212
+ .command('services:list')
213
+ .description('List all the application services')
214
+ .action(getLocalScript('services/list'));
215
+
235
216
  program.parseAsync(process.argv);