@akemona-org/strapi 3.7.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 (125) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +163 -0
  3. package/bin/strapi.js +239 -0
  4. package/index.d.ts +13 -0
  5. package/lib/Strapi.js +498 -0
  6. package/lib/commands/admin-reset.js +51 -0
  7. package/lib/commands/build.js +47 -0
  8. package/lib/commands/configurationDump.js +50 -0
  9. package/lib/commands/configurationRestore.js +160 -0
  10. package/lib/commands/console.js +26 -0
  11. package/lib/commands/develop.js +155 -0
  12. package/lib/commands/generate-template.js +97 -0
  13. package/lib/commands/generate.js +66 -0
  14. package/lib/commands/install.js +48 -0
  15. package/lib/commands/new.js +11 -0
  16. package/lib/commands/start.js +8 -0
  17. package/lib/commands/uninstall.js +68 -0
  18. package/lib/commands/watchAdmin.js +35 -0
  19. package/lib/core/app-configuration/config-loader.js +56 -0
  20. package/lib/core/app-configuration/config-provider.js +28 -0
  21. package/lib/core/app-configuration/index.js +99 -0
  22. package/lib/core/bootstrap.js +166 -0
  23. package/lib/core/fs.js +52 -0
  24. package/lib/core/index.js +21 -0
  25. package/lib/core/load-admin.js +36 -0
  26. package/lib/core/load-apis.js +22 -0
  27. package/lib/core/load-components.js +43 -0
  28. package/lib/core/load-extensions.js +71 -0
  29. package/lib/core/load-functions.js +21 -0
  30. package/lib/core/load-hooks.js +117 -0
  31. package/lib/core/load-middlewares.js +130 -0
  32. package/lib/core/load-modules.js +61 -0
  33. package/lib/core/load-plugins.js +68 -0
  34. package/lib/core/load-policies.js +36 -0
  35. package/lib/core/walk.js +27 -0
  36. package/lib/core-api/controller.js +158 -0
  37. package/lib/core-api/index.js +33 -0
  38. package/lib/core-api/service/collection-type.js +122 -0
  39. package/lib/core-api/service/index.js +81 -0
  40. package/lib/core-api/service/single-type.js +68 -0
  41. package/lib/hooks/index.js +97 -0
  42. package/lib/index.js +3 -0
  43. package/lib/load/check-reserved-filename.js +18 -0
  44. package/lib/load/filepath-to-prop-path.js +22 -0
  45. package/lib/load/glob.js +15 -0
  46. package/lib/load/index.js +9 -0
  47. package/lib/load/load-config-files.js +22 -0
  48. package/lib/load/load-files.js +56 -0
  49. package/lib/load/package-path.js +9 -0
  50. package/lib/load/require-file-parse.js +15 -0
  51. package/lib/middlewares/boom/defaults.json +5 -0
  52. package/lib/middlewares/boom/index.js +147 -0
  53. package/lib/middlewares/cors/index.js +66 -0
  54. package/lib/middlewares/cron/defaults.json +5 -0
  55. package/lib/middlewares/cron/index.js +43 -0
  56. package/lib/middlewares/csp/defaults.json +5 -0
  57. package/lib/middlewares/csp/index.js +26 -0
  58. package/lib/middlewares/favicon/defaults.json +7 -0
  59. package/lib/middlewares/favicon/index.js +35 -0
  60. package/lib/middlewares/gzip/defaults.json +6 -0
  61. package/lib/middlewares/gzip/index.js +19 -0
  62. package/lib/middlewares/hsts/defaults.json +7 -0
  63. package/lib/middlewares/hsts/index.js +30 -0
  64. package/lib/middlewares/index.js +120 -0
  65. package/lib/middlewares/ip/defaults.json +7 -0
  66. package/lib/middlewares/ip/index.js +25 -0
  67. package/lib/middlewares/language/defaults.json +9 -0
  68. package/lib/middlewares/language/index.js +40 -0
  69. package/lib/middlewares/logger/defaults.json +8 -0
  70. package/lib/middlewares/logger/index.js +63 -0
  71. package/lib/middlewares/p3p/defaults.json +6 -0
  72. package/lib/middlewares/p3p/index.js +29 -0
  73. package/lib/middlewares/parser/defaults.json +10 -0
  74. package/lib/middlewares/parser/index.js +71 -0
  75. package/lib/middlewares/poweredBy/defaults.json +5 -0
  76. package/lib/middlewares/poweredBy/index.js +16 -0
  77. package/lib/middlewares/public/assets/images/group_people_1.png +0 -0
  78. package/lib/middlewares/public/assets/images/group_people_2.png +0 -0
  79. package/lib/middlewares/public/assets/images/group_people_3.png +0 -0
  80. package/lib/middlewares/public/assets/images/logo_login.png +0 -0
  81. package/lib/middlewares/public/defaults.json +8 -0
  82. package/lib/middlewares/public/index.html +66 -0
  83. package/lib/middlewares/public/index.js +98 -0
  84. package/lib/middlewares/public/serve-static.js +23 -0
  85. package/lib/middlewares/responseTime/defaults.json +5 -0
  86. package/lib/middlewares/responseTime/index.js +25 -0
  87. package/lib/middlewares/responses/defaults.json +5 -0
  88. package/lib/middlewares/responses/index.js +18 -0
  89. package/lib/middlewares/router/defaults.json +7 -0
  90. package/lib/middlewares/router/index.js +64 -0
  91. package/lib/middlewares/router/utils/composeEndpoint.js +25 -0
  92. package/lib/middlewares/router/utils/routerChecker.js +92 -0
  93. package/lib/middlewares/session/defaults.json +18 -0
  94. package/lib/middlewares/session/index.js +140 -0
  95. package/lib/middlewares/xframe/defaults.json +6 -0
  96. package/lib/middlewares/xframe/index.js +33 -0
  97. package/lib/middlewares/xss/defaults.json +6 -0
  98. package/lib/middlewares/xss/index.js +30 -0
  99. package/lib/services/core-store.js +144 -0
  100. package/lib/services/entity-service.js +260 -0
  101. package/lib/services/entity-validator/index.js +199 -0
  102. package/lib/services/entity-validator/validators.js +125 -0
  103. package/lib/services/event-hub.js +15 -0
  104. package/lib/services/metrics/index.js +103 -0
  105. package/lib/services/metrics/is-truthy.js +9 -0
  106. package/lib/services/metrics/middleware.js +33 -0
  107. package/lib/services/metrics/rate-limiter.js +27 -0
  108. package/lib/services/metrics/sender.js +76 -0
  109. package/lib/services/metrics/stringify-deep.js +22 -0
  110. package/lib/services/utils/upload-files.js +70 -0
  111. package/lib/services/webhook-runner.js +159 -0
  112. package/lib/services/webhook-store.js +97 -0
  113. package/lib/services/worker-queue.js +58 -0
  114. package/lib/utils/addSlash.js +10 -0
  115. package/lib/utils/ee.js +123 -0
  116. package/lib/utils/get-prefixed-dependencies.js +7 -0
  117. package/lib/utils/index.js +25 -0
  118. package/lib/utils/openBrowser.js +145 -0
  119. package/lib/utils/resources/key.pub +9 -0
  120. package/lib/utils/resources/openChrome.applescript +83 -0
  121. package/lib/utils/run-checks.js +37 -0
  122. package/lib/utils/success.js +31 -0
  123. package/lib/utils/update-notifier/index.js +96 -0
  124. package/lib/utils/url-from-segments.js +13 -0
  125. package/package.json +143 -0
@@ -0,0 +1,96 @@
1
+ 'use strict';
2
+
3
+ const path = require('path');
4
+ const packageJson = require('package-json');
5
+ const Configstore = require('configstore');
6
+ const semver = require('semver');
7
+ const boxen = require('boxen');
8
+ const chalk = require('chalk');
9
+ const { env } = require('@akemona-org/strapi-utils');
10
+
11
+ const pkg = require('../../../package');
12
+
13
+ const CHECK_INTERVAL = 1000 * 60 * 60 * 24 * 1; // 1 day
14
+ const NOTIF_INTERVAL = 1000 * 60 * 60 * 24 * 7; // 1 week
15
+ const boxenOptions = {
16
+ padding: 1,
17
+ margin: 1,
18
+ align: 'center',
19
+ borderColor: 'yellow',
20
+ borderStyle: 'round',
21
+ };
22
+
23
+ const geUpdatetMessage = (newVersion, currentVersion) => {
24
+ const currentVersionLog = chalk.dim(currentVersion);
25
+ const newVersionLog = chalk.green(newVersion);
26
+ const releaseLink = chalk.bold('https://github.com/strapi/strapi/releases');
27
+
28
+ return `
29
+ A new version of Strapi is available ${currentVersionLog} → ${newVersionLog}
30
+ Check out the new the releases at: ${releaseLink}
31
+ `.trim();
32
+ };
33
+
34
+ const createUpdateNotifier = (strapi) => {
35
+ let config = null;
36
+
37
+ try {
38
+ config = new Configstore(
39
+ pkg.name,
40
+ {},
41
+ { configPath: path.join(strapi.dir, '.strapi-updater.json') }
42
+ );
43
+ } catch {
44
+ // we don't have write access to the file system
45
+ // we silence the error
46
+ }
47
+
48
+ const checkUpdate = async (checkInterval) => {
49
+ const now = Date.now();
50
+ const lastUpdateCheck = config.get('lastUpdateCheck') || 0;
51
+ if (lastUpdateCheck + checkInterval > now) {
52
+ return;
53
+ }
54
+
55
+ try {
56
+ const res = await packageJson(pkg.name);
57
+ if (res.version) {
58
+ config.set('latest', res.version);
59
+ config.set('lastUpdateCheck', now);
60
+ }
61
+ } catch {
62
+ // silence error if offline
63
+ }
64
+ };
65
+
66
+ const display = (notifInterval) => {
67
+ const now = Date.now();
68
+ const latestVersion = config.get('latest');
69
+ const lastNotification = config.get('lastNotification') || 0;
70
+ if (
71
+ !process.stdout.isTTY ||
72
+ lastNotification + notifInterval > now ||
73
+ !semver.valid(latestVersion) ||
74
+ !semver.valid(pkg.version) ||
75
+ semver.lte(latestVersion, pkg.version)
76
+ ) {
77
+ return;
78
+ }
79
+
80
+ const message = boxen(geUpdatetMessage(latestVersion, pkg.version), boxenOptions);
81
+ config.set('lastNotification', now);
82
+ console.log(message);
83
+ };
84
+
85
+ return {
86
+ notify({ checkInterval = CHECK_INTERVAL, notifInterval = NOTIF_INTERVAL } = {}) {
87
+ if (env.bool('STRAPI_DISABLE_UPDATE_NOTIFICATION', false) || !config) {
88
+ return;
89
+ }
90
+ display(notifInterval);
91
+ checkUpdate(checkInterval); // doesn't need to await
92
+ },
93
+ };
94
+ };
95
+
96
+ module.exports = createUpdateNotifier;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Returns a url base on hostname, port and ssl options
5
+ */
6
+ module.exports = ({ hostname, port, ssl = false }) => {
7
+ const protocol = ssl ? 'https' : 'http';
8
+ const defaultPort = ssl ? 443 : 80;
9
+ const portString =
10
+ port === undefined || parseInt(port, 10) === defaultPort ? '' : `:${port}`;
11
+
12
+ return `${protocol}://${hostname}${portString}`;
13
+ };
package/package.json ADDED
@@ -0,0 +1,143 @@
1
+ {
2
+ "name": "@akemona-org/strapi",
3
+ "publishConfig": {
4
+ "access": "public"
5
+ },
6
+ "version": "3.7.0",
7
+ "description": "An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MongoDB, MySQL, MariaDB, PostgreSQL, SQLite",
8
+ "homepage": "https://strapi.akemona.com",
9
+ "directories": {
10
+ "lib": "./lib",
11
+ "bin": "./bin"
12
+ },
13
+ "main": "./lib",
14
+ "bin": {
15
+ "strapi": "./bin/strapi.js"
16
+ },
17
+ "dependencies": {
18
+ "@akemona-org/strapi-database": "3.7.0",
19
+ "@akemona-org/strapi-generate": "3.7.0",
20
+ "@akemona-org/strapi-generate-api": "3.7.0",
21
+ "@akemona-org/strapi-generate-controller": "3.7.0",
22
+ "@akemona-org/strapi-generate-model": "3.7.0",
23
+ "@akemona-org/strapi-generate-new": "3.7.0",
24
+ "@akemona-org/strapi-generate-plugin": "3.7.0",
25
+ "@akemona-org/strapi-generate-policy": "3.7.0",
26
+ "@akemona-org/strapi-generate-service": "3.7.0",
27
+ "@akemona-org/strapi-utils": "3.7.0",
28
+ "@koa/cors": "^3.0.0",
29
+ "async": "^2.1.2",
30
+ "boom": "^7.3.0",
31
+ "boxen": "4.2.0",
32
+ "chalk": "^4.1.1",
33
+ "chokidar": "3.5.1",
34
+ "ci-info": "3.1.1",
35
+ "cli-table3": "^0.6.0",
36
+ "commander": "6.1.0",
37
+ "configstore": "5.0.1",
38
+ "cross-spawn": "^7.0.3",
39
+ "debug": "^4.1.1",
40
+ "delegates": "^1.0.0",
41
+ "dotenv": "8.2.0",
42
+ "execa": "^1.0.0",
43
+ "fs-extra": "^9.1.0",
44
+ "glob": "^7.1.2",
45
+ "inquirer": "^6.2.1",
46
+ "is-docker": "2.2.1",
47
+ "koa": "^2.13.1",
48
+ "koa-body": "^4.2.0",
49
+ "koa-compose": "^4.1.0",
50
+ "koa-compress": "^5.0.1",
51
+ "koa-convert": "^2.0.0",
52
+ "koa-favicon": "^2.0.0",
53
+ "koa-i18n": "^2.1.0",
54
+ "koa-ip": "^2.0.0",
55
+ "koa-locale": "~1.3.0",
56
+ "koa-lusca": "~2.2.0",
57
+ "koa-router": "^7.4.0",
58
+ "koa-session": "^6.2.0",
59
+ "koa-static": "^5.0.0",
60
+ "lodash": "4.17.21",
61
+ "node-fetch": "2.6.1",
62
+ "node-machine-id": "1.1.12",
63
+ "node-schedule": "1.3.2",
64
+ "opn": "^5.3.0",
65
+ "ora": "^5.4.0",
66
+ "package-json": "7.0.0",
67
+ "qs": "^6.10.1",
68
+ "resolve-cwd": "^3.0.0",
69
+ "rimraf": "^3.0.2",
70
+ "semver": "7.3.5"
71
+ },
72
+ "scripts": {
73
+ "postinstall": "node lib/utils/success.js"
74
+ },
75
+ "author": {
76
+ "email": "strapi@akemona.com",
77
+ "name": "Akemona team",
78
+ "url": "https://strapi.akemona.com"
79
+ },
80
+ "maintainers": [
81
+ {
82
+ "name": "Akemona team",
83
+ "email": "strapi@akemona.com",
84
+ "url": "https://strapi.akemona.com"
85
+ }
86
+ ],
87
+ "repository": {
88
+ "type": "git",
89
+ "url": "git://github.com/akemona/strapi.git"
90
+ },
91
+ "bugs": {
92
+ "url": "https://github.com/akemona/strapi/issues"
93
+ },
94
+ "engines": {
95
+ "node": ">=10.16.0 <=14.x.x",
96
+ "npm": ">=6.0.0"
97
+ },
98
+ "license": "SEE LICENSE IN LICENSE",
99
+ "keywords": [
100
+ "strapi",
101
+ "cms",
102
+ "cmf",
103
+ "content management system",
104
+ "content management framework",
105
+ "admin panel",
106
+ "dashboard",
107
+ "api",
108
+ "auth",
109
+ "framework",
110
+ "http",
111
+ "json",
112
+ "koa",
113
+ "koajs",
114
+ "lusca",
115
+ "mvc",
116
+ "oauth",
117
+ "oauth2",
118
+ "orm",
119
+ "rest",
120
+ "restful",
121
+ "security",
122
+ "jam",
123
+ "jamstack",
124
+ "javascript",
125
+ "headless",
126
+ "MongoDB",
127
+ "MySQL",
128
+ "MariaDB",
129
+ "PostgreSQL",
130
+ "SQLite",
131
+ "graphqL",
132
+ "infrastructure",
133
+ "backend",
134
+ "open source",
135
+ "self hosted",
136
+ "javascript",
137
+ "lerna",
138
+ "lernajs",
139
+ "react",
140
+ "reactjs"
141
+ ],
142
+ "gitHead": "129a8d6191b55810fd66448dcc47fee829df986c"
143
+ }