mirror of
https://github.com/strapi/strapi.git
synced 2025-10-17 11:08:14 +00:00
Merge branch 'master' into design/marketplace
This commit is contained in:
commit
12e673a9d6
@ -347,6 +347,9 @@ The session doesn't work with `mongo` as a client. The package that we should us
|
||||
- `enabled` (boolean): Enable or not GZIP response compression.
|
||||
- `responseTime`
|
||||
- `enabled` (boolean): Enable or not `X-Response-Time header` to response. Default value: `false`.
|
||||
- `poweredBy`
|
||||
- `enabled` (boolean): Enable or not `X-Powered-By` header to response. Default value: `true`.
|
||||
- `value` (string): The value of the header. Default value: `Strapi <strapi.io>`
|
||||
|
||||
***
|
||||
|
||||
|
@ -24,6 +24,7 @@ Easily filter results according to fields values.
|
||||
- `_gt`: Greater than
|
||||
- `_lte`: Lower than or equal to
|
||||
- `_gte`: Greater than or equal to
|
||||
- `_in`: Include in array
|
||||
- `_contains`: Contains
|
||||
- `_containss`: Contains case sensitive
|
||||
|
||||
@ -37,6 +38,9 @@ Find products having a price equal or greater than `3`.
|
||||
|
||||
`GET /products?price_gte=3`
|
||||
|
||||
Find multiple product with id 3, 6, 8
|
||||
`GET /products?id_in=3&id_in=6&id_in=8`
|
||||
|
||||
::: note
|
||||
You can't use filter to have specific results inside relation, like "Find users and only their posts older than yesterday" as example. If you need it, you can modify or create your own service or use [GraphQL](./graphql.md#query-api).
|
||||
:::
|
||||
|
@ -4,5 +4,9 @@
|
||||
},
|
||||
"responseTime": {
|
||||
"enabled": false
|
||||
},
|
||||
"poweredBy": {
|
||||
"enabled": true,
|
||||
"value": "Strapi <strapi.io>"
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
"defaultConnection": "default",
|
||||
"connections": {
|
||||
"default": {
|
||||
"connector": "strapi-hook-mongoose",
|
||||
"settings": {
|
||||
"client": "mongo",
|
||||
"uri": "${process.env.DATABASE_URI || ''}",
|
||||
"host": "${process.env.DATABASE_HOST || '127.0.0.1'}",
|
||||
"port": "${process.env.DATABASE_PORT || 27017}",
|
||||
"database": "${process.env.DATABASE_NAME || 'strapi-production'}",
|
||||
"username": "${process.env.DATABASE_USERNAME || ''}",
|
||||
"password": "${process.env.DATABASE_PASSWORD || ''}"
|
||||
},
|
||||
"options": {
|
||||
"ssl": "${process.env.DATABASE_SSL || false}",
|
||||
"authenticationDatabase": "${process.env.DATABASE_AUTHENTICATION_DATABASE || ''}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,5 +4,9 @@
|
||||
},
|
||||
"responseTime": {
|
||||
"enabled": false
|
||||
},
|
||||
"poweredBy": {
|
||||
"enabled": true,
|
||||
"value": "Strapi <strapi.io>"
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
"defaultConnection": "default",
|
||||
"connections": {
|
||||
"default": {
|
||||
"connector": "strapi-hook-mongoose",
|
||||
"settings": {
|
||||
"client": "mongo",
|
||||
"uri": "${process.env.DATABASE_URI || ''}",
|
||||
"host": "${process.env.DATABASE_HOST || '127.0.0.1'}",
|
||||
"port": "${process.env.DATABASE_PORT || 27017}",
|
||||
"database": "${process.env.DATABASE_NAME || 'strapi-staging'}",
|
||||
"username": "${process.env.DATABASE_USERNAME || ''}",
|
||||
"password": "${process.env.DATABASE_PASSWORD || ''}"
|
||||
},
|
||||
"options": {
|
||||
"ssl": "${process.env.DATABASE_SSL || false}",
|
||||
"authenticationDatabase": "${process.env.DATABASE_AUTHENTICATION_DATABASE || ''}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,5 +4,9 @@
|
||||
},
|
||||
"responseTime": {
|
||||
"enabled": false
|
||||
},
|
||||
"poweredBy": {
|
||||
"enabled": true,
|
||||
"value": "Strapi <strapi.io>"
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,48 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = scope => {
|
||||
// Production/Staging Template
|
||||
if (['production', 'staging'].includes(scope.keyPath.split('/')[2])) {
|
||||
// All available settings (bookshelf and mongoose)
|
||||
const settingsBase = {
|
||||
client: scope.client.database,
|
||||
host: '${process.env.DATABASE_HOST || \'127.0.0.1\' }',
|
||||
port: '${process.env.DATABASE_PORT || 27017 }',
|
||||
srv: '${process.env.DATABASE_SRV || false }',
|
||||
database: '${process.env.DATABASE_NAME || strapi }',
|
||||
username: '${process.env.DATABASE_USERNAME || \'\' }',
|
||||
password: '${process.env.DATABASE_PASSWORD || \'\' }',
|
||||
ssl: '${process.env.DATABASE_SSL || false }'
|
||||
};
|
||||
|
||||
// Apply only settings set during the configuration
|
||||
Object.keys(scope.database.settings).forEach((key) => {
|
||||
scope.database.settings[key] = settingsBase[key];
|
||||
});
|
||||
|
||||
// All available options (bookshelf and mongoose)
|
||||
const optionsBase = {
|
||||
ssl: '${process.env.DATABASE_SSL || false }',
|
||||
authenticationDatabase: '${process.env.DATABASE_AUTHENTICATION_DATABASE || \'\' }'
|
||||
};
|
||||
|
||||
// Apply only options set during the configuration
|
||||
Object.keys(scope.database.options).forEach((key) => {
|
||||
scope.database.options[key] = optionsBase[key];
|
||||
});
|
||||
|
||||
return {
|
||||
defaultConnection: 'default',
|
||||
connections: {
|
||||
default: {
|
||||
connector: scope.client.connector,
|
||||
settings: scope.database.settings,
|
||||
options: scope.database.options
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Finally, return the JSON.
|
||||
return {
|
||||
defaultConnection: 'default',
|
||||
connections: {
|
||||
|
@ -15,10 +15,10 @@ const fs = require('fs-extra');
|
||||
const npm = require('enpeem');
|
||||
const ora = require('ora');
|
||||
const shell = require('shelljs');
|
||||
const request = require('request');
|
||||
|
||||
// Logger.
|
||||
const { packageManager } = require('strapi-utils');
|
||||
const trackSuccess = require('./success');
|
||||
|
||||
/**
|
||||
* Runs after this generator has finished
|
||||
@ -201,14 +201,4 @@ module.exports = (scope, cb) => {
|
||||
cb();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function trackSuccess(event, scope) {
|
||||
request
|
||||
.post('https://analytics.strapi.io/track')
|
||||
.form({
|
||||
event,
|
||||
uuid: scope.uuid
|
||||
})
|
||||
.on('error', () => {});
|
||||
}
|
||||
};
|
@ -21,6 +21,7 @@ const uuid = require('uuid/v4');
|
||||
|
||||
// Logger.
|
||||
const { packageManager } = require('strapi-utils');
|
||||
const trackSuccess = require('./success');
|
||||
|
||||
/**
|
||||
* This `before` function is run before generating targets.
|
||||
@ -49,6 +50,8 @@ module.exports = (scope, cb) => {
|
||||
scope.tmpPath = path.resolve(os.tmpdir(), `strapi${ crypto.randomBytes(6).toString('hex') }`);
|
||||
scope.uuid = uuid();
|
||||
|
||||
trackSuccess('willCreateProject', scope);
|
||||
|
||||
// Ensure we aren't going to inadvertently delete any files.
|
||||
try {
|
||||
const files = fs.readdirSync(scope.rootPath);
|
||||
@ -205,12 +208,16 @@ module.exports = (scope, cb) => {
|
||||
}
|
||||
|
||||
scope.database.settings.host = answers.host;
|
||||
scope.database.settings.srv = _.toString(answers.srv) === 'true';
|
||||
scope.database.settings.port = answers.port;
|
||||
scope.database.settings.database = answers.database;
|
||||
scope.database.settings.username = answers.username;
|
||||
scope.database.settings.password = answers.password;
|
||||
scope.database.options.authenticationDatabase = answers.authenticationDatabase;
|
||||
if (answers.srv) {
|
||||
scope.database.settings.srv = _.toString(answers.srv) === 'true';
|
||||
}
|
||||
if (answers.authenticationDatabase) {
|
||||
scope.database.options.authenticationDatabase = answers.authenticationDatabase;
|
||||
}
|
||||
if (scope.client.database === 'mongo') {
|
||||
scope.database.options.ssl = _.toString(answers.ssl) === 'true';
|
||||
} else {
|
||||
|
@ -34,6 +34,14 @@ module.exports = {
|
||||
jsonfile: database
|
||||
},
|
||||
|
||||
'config/environments/production/database.json': {
|
||||
jsonfile: database
|
||||
},
|
||||
|
||||
'config/environments/staging/database.json': {
|
||||
jsonfile: database
|
||||
},
|
||||
|
||||
// Copy dot files.
|
||||
'.editorconfig': {
|
||||
copy: 'editorconfig'
|
||||
|
18
packages/strapi-generate-new/lib/success.js
Normal file
18
packages/strapi-generate-new/lib/success.js
Normal file
@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
// Node.js core.
|
||||
const request = require('request');
|
||||
|
||||
module.exports = function trackSuccess(event, scope) {
|
||||
request
|
||||
.post('https://analytics.strapi.io/track')
|
||||
.form({
|
||||
event,
|
||||
uuid: scope.uuid
|
||||
})
|
||||
.on('error', () => {});
|
||||
};
|
@ -422,8 +422,10 @@ module.exports = function(strapi) {
|
||||
case 'email':
|
||||
type = 'varchar(255)';
|
||||
break;
|
||||
case 'integer':
|
||||
case 'biginteger':
|
||||
type = definition.client === 'pg' ? 'bigint' : 'bigint(53)';
|
||||
break;
|
||||
case 'integer':
|
||||
type = definition.client === 'pg' ? 'integer' : 'int';
|
||||
break;
|
||||
case 'float':
|
||||
|
@ -160,6 +160,28 @@ module.exports = function (strapi) {
|
||||
} else {
|
||||
this._mongooseOptions.populate[association.alias].path = `${association.alias}.ref`;
|
||||
}
|
||||
} else {
|
||||
if (!this._mongooseOptions.populate) {
|
||||
this._mongooseOptions.populate = {};
|
||||
}
|
||||
|
||||
// Images are not displayed in populated data.
|
||||
// We automatically populate morph relations.
|
||||
if (association.nature === 'oneToManyMorph' || association.nature === 'manyToManyMorph') {
|
||||
this._mongooseOptions.populate[association.alias] = {
|
||||
path: association.alias,
|
||||
match: {
|
||||
[`${association.via}.${association.filter}`]: association.alias,
|
||||
[`${association.via}.kind`]: definition.globalId
|
||||
},
|
||||
options: {
|
||||
sort: '-createdAt'
|
||||
},
|
||||
select: undefined,
|
||||
model: undefined,
|
||||
_docs: {}
|
||||
};
|
||||
}
|
||||
}
|
||||
next();
|
||||
});
|
||||
@ -554,4 +576,4 @@ module.exports = function (strapi) {
|
||||
}, relations);
|
||||
|
||||
return hook;
|
||||
};
|
||||
};
|
||||
|
@ -4,5 +4,5 @@
|
||||
"databases.connections.${name}.settings.host": "col-md-12",
|
||||
"database.connections.settings.host": "col-md-12",
|
||||
"database.connections.settings.port": "col-md-6",
|
||||
"showInputLabel": ["form.response.item.gzip.enabled", "form.response.item.responseTime.enabled"]
|
||||
"showInputLabel": ["form.response.item.gzip.enabled", "form.response.item.responseTime.enabled", "form.response.item.poweredBy.enabled"]
|
||||
}
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "قم بتكوين إعدادات الاستجابة الخاصة بك.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "وقت الاستجابة",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "القيمة",
|
||||
"form.response.name": "الإستجابة",
|
||||
"form.security.description": "تكوين إعدادات الأمان الخاصة بك.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Verwalte deine Antworteinstellungen.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Antwortzeit",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Wert",
|
||||
"form.response.name": "Antwort",
|
||||
"form.security.description": "Verwalte deine Sicherheitseinstellungen.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Configure your response settings.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Response Time",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Value",
|
||||
"form.response.name": "Response",
|
||||
"form.security.description": "Configure your security settings.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Configurar las opciones de respuesta.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Tiempo de respuesta",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Valor",
|
||||
"form.response.name": "Respuesta",
|
||||
"form.security.description": "Configurar las opciones de seguridad.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Configuration des réponses.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Temps de réponse",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Valeur",
|
||||
"form.response.name": "Réponse",
|
||||
"form.security.description": "Configurations de sécurité.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Configurare la tua risposta impostazioni.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Il Tempo Di Risposta",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Valore",
|
||||
"form.response.name": "Risposta",
|
||||
"form.security.description": "Configurare le impostazioni di sicurezza.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "レスポンス設定を構成します。",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Response Time",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Value",
|
||||
"form.response.name": "レスポンス",
|
||||
"form.security.description": "セキュリティ設定を構成します。",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "응답(response) 환경을 설정하세요.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "응답 시간 (Response Time)",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "값",
|
||||
"form.response.name": "응답 (Response)",
|
||||
"form.security.description": "보안 환경을 설정하세요.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Configureer je response instellingen.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Response Tijd",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Waarde",
|
||||
"form.response.name": "Response",
|
||||
"form.security.description": "Configureer je beveiliging instellingen.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Konfiguruj ustawienia odpowiedzi.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Czas odpowiedzi",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Wartość",
|
||||
"form.response.name": "Odpowiedzi",
|
||||
"form.security.description": "Konfiguruj ustawienia bezpieczeństwa.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Defina as suas configurações de resposta.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Tempo de resposta",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Valor",
|
||||
"form.response.name": "Resposta",
|
||||
"form.security.description": "Defina as suas configurações de segurança.",
|
||||
"form.security.item.cors": "CORS",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Configure as suas definições de resposta.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Tempo de resposta",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Valor",
|
||||
"form.response.name": "Resposta",
|
||||
"form.security.description": "Configure as suas definições de segurança.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Задайте настройки ответа.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Время ответа",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Value",
|
||||
"form.response.name": "Ответ",
|
||||
"form.security.description": "Задайте настройки безопасности.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "Yanıt ayarlarınızı yapılandırın.",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Tepki Süresi",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Değer",
|
||||
"form.response.name": "Cevap",
|
||||
"form.security.description": "Güvenlik ayarlarınızı yapılandırın.",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -47,6 +47,8 @@
|
||||
"form.response.description": "配置您的响应设置。",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "Response Time",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "Value",
|
||||
"form.response.name": "Response",
|
||||
"form.security.description": "配置安全设置。",
|
||||
"form.security.item.cors": "Cors",
|
||||
|
@ -48,6 +48,8 @@
|
||||
"form.response.description": "調整回應設定",
|
||||
"form.response.item.gzip.enabled": "Gzip",
|
||||
"form.response.item.responseTime.enabled": "回應時間",
|
||||
"form.response.item.poweredBy.enabled": "Powered by",
|
||||
"form.response.item.poweredBy.value": "值",
|
||||
"form.response.name": "回應",
|
||||
"form.security.description": "調整安全性設定",
|
||||
"form.security.item.cors": "跨域資源共享 (Cors)",
|
||||
|
@ -198,7 +198,12 @@ module.exports = {
|
||||
validations: {
|
||||
required: true
|
||||
}
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '',
|
||||
items: [
|
||||
{
|
||||
name: 'form.response.item.responseTime.enabled',
|
||||
target: 'response.responseTime.enabled',
|
||||
@ -209,6 +214,28 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '',
|
||||
items: [
|
||||
{
|
||||
name: 'form.response.item.poweredBy.enabled',
|
||||
target: 'response.poweredBy.enabled',
|
||||
type: 'boolean',
|
||||
value: _.get(strapi.config, `environments.${env}.response.poweredBy.enabled`, null),
|
||||
items: [
|
||||
{
|
||||
name: 'form.response.item.poweredBy.value',
|
||||
target: 'response.poweredBy.value',
|
||||
type: 'string',
|
||||
value: _.get(strapi.config, `environments.${env}.response.poweredBy.value`, null),
|
||||
validations : {
|
||||
required: true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}),
|
||||
|
@ -40,6 +40,7 @@ module.exports = {
|
||||
'cn-north-1',
|
||||
'cn-northwest-1',
|
||||
'eu-central-1',
|
||||
'eu-north-1',
|
||||
'eu-west-1',
|
||||
'eu-west-2',
|
||||
'eu-west-3',
|
||||
|
@ -61,6 +61,7 @@ module.exports = function (name, cliArguments) {
|
||||
settings: {
|
||||
client: cliArguments.dbclient,
|
||||
host: cliArguments.dbhost,
|
||||
srv: cliArguments.dbsrv,
|
||||
port: cliArguments.dbport,
|
||||
database: cliArguments.dbname,
|
||||
username: cliArguments.dbusername,
|
||||
|
@ -56,6 +56,7 @@ program
|
||||
.option('--debug', 'Display database connection error')
|
||||
.option('--dbclient <dbclient>', 'Database client')
|
||||
.option('--dbhost <dbhost>', 'Database host')
|
||||
.option('--dbsrv <dbsrv>', 'Database srv')
|
||||
.option('--dbport <dbport>', 'Database port')
|
||||
.option('--dbname <dbname>', 'Database name')
|
||||
.option('--dbusername <dbusername>', 'Database username')
|
||||
|
@ -22,8 +22,8 @@ module.exports = () => {
|
||||
}
|
||||
|
||||
// Set X-Powered-By header.
|
||||
if (_.get(strapi.config, 'X-Powered-By.enabled', true)) {
|
||||
ctx.set('X-Powered-By', 'Strapi <strapi.io>');
|
||||
if (_.get(strapi.config.currentEnvironment.response, 'poweredBy.enabled')) {
|
||||
ctx.set('X-Powered-By', _.get(strapi.config.currentEnvironment.response, 'poweredBy.value', 'Strapi <strapi.io>'));
|
||||
}
|
||||
});
|
||||
cb();
|
||||
|
21
packages/strapi/lib/utils/success.js
Normal file
21
packages/strapi/lib/utils/success.js
Normal file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies
|
||||
*/
|
||||
|
||||
// Node.js core.
|
||||
const fetch = require('node-fetch');
|
||||
|
||||
if (process.env.npm_config_global === 'true') {
|
||||
fetch('https://analytics.strapi.io/track', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ event: 'didInstallStrapi' }),
|
||||
headers: { 'Content-Type': 'application/json' }
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
|
||||
|
@ -71,6 +71,9 @@
|
||||
"strapi-generate-service": "3.0.0-alpha.21",
|
||||
"strapi-utils": "3.0.0-alpha.21"
|
||||
},
|
||||
"scripts": {
|
||||
"postinstall": "node lib/utils/success.js"
|
||||
},
|
||||
"author": {
|
||||
"email": "hi@strapi.io",
|
||||
"name": "Strapi team",
|
||||
|
Loading…
x
Reference in New Issue
Block a user