Merge branch 'master' into design/marketplace

This commit is contained in:
Jim LAURIE 2019-01-30 14:35:38 +01:00 committed by GitHub
commit 12e673a9d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 213 additions and 63 deletions

View File

@ -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. - `enabled` (boolean): Enable or not GZIP response compression.
- `responseTime` - `responseTime`
- `enabled` (boolean): Enable or not `X-Response-Time header` to response. Default value: `false`. - `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>`
*** ***

View File

@ -24,6 +24,7 @@ Easily filter results according to fields values.
- `_gt`: Greater than - `_gt`: Greater than
- `_lte`: Lower than or equal to - `_lte`: Lower than or equal to
- `_gte`: Greater than or equal to - `_gte`: Greater than or equal to
- `_in`: Include in array
- `_contains`: Contains - `_contains`: Contains
- `_containss`: Contains case sensitive - `_containss`: Contains case sensitive
@ -37,6 +38,9 @@ Find products having a price equal or greater than `3`.
`GET /products?price_gte=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 ::: 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). 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).
::: :::

View File

@ -4,5 +4,9 @@
}, },
"responseTime": { "responseTime": {
"enabled": false "enabled": false
},
"poweredBy": {
"enabled": true,
"value": "Strapi <strapi.io>"
} }
} }

View File

@ -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 || ''}"
}
}
}
}

View File

@ -4,5 +4,9 @@
}, },
"responseTime": { "responseTime": {
"enabled": false "enabled": false
},
"poweredBy": {
"enabled": true,
"value": "Strapi <strapi.io>"
} }
} }

View File

@ -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 || ''}"
}
}
}
}

View File

@ -4,5 +4,9 @@
}, },
"responseTime": { "responseTime": {
"enabled": false "enabled": false
},
"poweredBy": {
"enabled": true,
"value": "Strapi <strapi.io>"
} }
} }

View File

@ -1,8 +1,48 @@
'use strict'; 'use strict';
module.exports = scope => { 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 { return {
defaultConnection: 'default', defaultConnection: 'default',
connections: { connections: {

View File

@ -15,10 +15,10 @@ const fs = require('fs-extra');
const npm = require('enpeem'); const npm = require('enpeem');
const ora = require('ora'); const ora = require('ora');
const shell = require('shelljs'); const shell = require('shelljs');
const request = require('request');
// Logger. // Logger.
const { packageManager } = require('strapi-utils'); const { packageManager } = require('strapi-utils');
const trackSuccess = require('./success');
/** /**
* Runs after this generator has finished * Runs after this generator has finished
@ -201,14 +201,4 @@ module.exports = (scope, cb) => {
cb(); cb();
}); });
} }
}; };
function trackSuccess(event, scope) {
request
.post('https://analytics.strapi.io/track')
.form({
event,
uuid: scope.uuid
})
.on('error', () => {});
}

View File

@ -21,6 +21,7 @@ const uuid = require('uuid/v4');
// Logger. // Logger.
const { packageManager } = require('strapi-utils'); const { packageManager } = require('strapi-utils');
const trackSuccess = require('./success');
/** /**
* This `before` function is run before generating targets. * 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.tmpPath = path.resolve(os.tmpdir(), `strapi${ crypto.randomBytes(6).toString('hex') }`);
scope.uuid = uuid(); scope.uuid = uuid();
trackSuccess('willCreateProject', scope);
// Ensure we aren't going to inadvertently delete any files. // Ensure we aren't going to inadvertently delete any files.
try { try {
const files = fs.readdirSync(scope.rootPath); const files = fs.readdirSync(scope.rootPath);
@ -205,12 +208,16 @@ module.exports = (scope, cb) => {
} }
scope.database.settings.host = answers.host; scope.database.settings.host = answers.host;
scope.database.settings.srv = _.toString(answers.srv) === 'true';
scope.database.settings.port = answers.port; scope.database.settings.port = answers.port;
scope.database.settings.database = answers.database; scope.database.settings.database = answers.database;
scope.database.settings.username = answers.username; scope.database.settings.username = answers.username;
scope.database.settings.password = answers.password; 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') { if (scope.client.database === 'mongo') {
scope.database.options.ssl = _.toString(answers.ssl) === 'true'; scope.database.options.ssl = _.toString(answers.ssl) === 'true';
} else { } else {

View File

@ -34,6 +34,14 @@ module.exports = {
jsonfile: database jsonfile: database
}, },
'config/environments/production/database.json': {
jsonfile: database
},
'config/environments/staging/database.json': {
jsonfile: database
},
// Copy dot files. // Copy dot files.
'.editorconfig': { '.editorconfig': {
copy: 'editorconfig' copy: 'editorconfig'

View 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', () => {});
};

View File

@ -422,8 +422,10 @@ module.exports = function(strapi) {
case 'email': case 'email':
type = 'varchar(255)'; type = 'varchar(255)';
break; break;
case 'integer':
case 'biginteger': case 'biginteger':
type = definition.client === 'pg' ? 'bigint' : 'bigint(53)';
break;
case 'integer':
type = definition.client === 'pg' ? 'integer' : 'int'; type = definition.client === 'pg' ? 'integer' : 'int';
break; break;
case 'float': case 'float':

View File

@ -160,6 +160,28 @@ module.exports = function (strapi) {
} else { } else {
this._mongooseOptions.populate[association.alias].path = `${association.alias}.ref`; 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(); next();
}); });
@ -554,4 +576,4 @@ module.exports = function (strapi) {
}, relations); }, relations);
return hook; return hook;
}; };

View File

@ -4,5 +4,5 @@
"databases.connections.${name}.settings.host": "col-md-12", "databases.connections.${name}.settings.host": "col-md-12",
"database.connections.settings.host": "col-md-12", "database.connections.settings.host": "col-md-12",
"database.connections.settings.port": "col-md-6", "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"]
} }

View File

@ -48,6 +48,8 @@
"form.response.description": "قم بتكوين إعدادات الاستجابة الخاصة بك.", "form.response.description": "قم بتكوين إعدادات الاستجابة الخاصة بك.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "وقت الاستجابة", "form.response.item.responseTime.enabled": "وقت الاستجابة",
"form.response.item.poweredBy.enabled": "Powered by",
"form.response.item.poweredBy.value": "القيمة",
"form.response.name": "الإستجابة", "form.response.name": "الإستجابة",
"form.security.description": "تكوين إعدادات الأمان الخاصة بك.", "form.security.description": "تكوين إعدادات الأمان الخاصة بك.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Verwalte deine Antworteinstellungen.", "form.response.description": "Verwalte deine Antworteinstellungen.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Antwortzeit", "form.response.item.responseTime.enabled": "Antwortzeit",
"form.response.item.poweredBy.enabled": "Powered by",
"form.response.item.poweredBy.value": "Wert",
"form.response.name": "Antwort", "form.response.name": "Antwort",
"form.security.description": "Verwalte deine Sicherheitseinstellungen.", "form.security.description": "Verwalte deine Sicherheitseinstellungen.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Configure your response settings.", "form.response.description": "Configure your response settings.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Response Time", "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.response.name": "Response",
"form.security.description": "Configure your security settings.", "form.security.description": "Configure your security settings.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Configurar las opciones de respuesta.", "form.response.description": "Configurar las opciones de respuesta.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Tiempo de respuesta", "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.response.name": "Respuesta",
"form.security.description": "Configurar las opciones de seguridad.", "form.security.description": "Configurar las opciones de seguridad.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Configuration des réponses.", "form.response.description": "Configuration des réponses.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Temps de réponse", "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.response.name": "Réponse",
"form.security.description": "Configurations de sécurité.", "form.security.description": "Configurations de sécurité.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Configurare la tua risposta impostazioni.", "form.response.description": "Configurare la tua risposta impostazioni.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Il Tempo Di Risposta", "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.response.name": "Risposta",
"form.security.description": "Configurare le impostazioni di sicurezza.", "form.security.description": "Configurare le impostazioni di sicurezza.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "レスポンス設定を構成します。", "form.response.description": "レスポンス設定を構成します。",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Response Time", "form.response.item.responseTime.enabled": "Response Time",
"form.response.item.poweredBy.enabled": "Powered by",
"form.response.item.poweredBy.value": "Value",
"form.response.name": "レスポンス", "form.response.name": "レスポンス",
"form.security.description": "セキュリティ設定を構成します。", "form.security.description": "セキュリティ設定を構成します。",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "응답(response) 환경을 설정하세요.", "form.response.description": "응답(response) 환경을 설정하세요.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "응답 시간 (Response Time)", "form.response.item.responseTime.enabled": "응답 시간 (Response Time)",
"form.response.item.poweredBy.enabled": "Powered by",
"form.response.item.poweredBy.value": "값",
"form.response.name": "응답 (Response)", "form.response.name": "응답 (Response)",
"form.security.description": "보안 환경을 설정하세요.", "form.security.description": "보안 환경을 설정하세요.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Configureer je response instellingen.", "form.response.description": "Configureer je response instellingen.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Response Tijd", "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.response.name": "Response",
"form.security.description": "Configureer je beveiliging instellingen.", "form.security.description": "Configureer je beveiliging instellingen.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Konfiguruj ustawienia odpowiedzi.", "form.response.description": "Konfiguruj ustawienia odpowiedzi.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Czas odpowiedzi", "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.response.name": "Odpowiedzi",
"form.security.description": "Konfiguruj ustawienia bezpieczeństwa.", "form.security.description": "Konfiguruj ustawienia bezpieczeństwa.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Defina as suas configurações de resposta.", "form.response.description": "Defina as suas configurações de resposta.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Tempo de resposta", "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.response.name": "Resposta",
"form.security.description": "Defina as suas configurações de segurança.", "form.security.description": "Defina as suas configurações de segurança.",
"form.security.item.cors": "CORS", "form.security.item.cors": "CORS",

View File

@ -48,6 +48,8 @@
"form.response.description": "Configure as suas definições de resposta.", "form.response.description": "Configure as suas definições de resposta.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Tempo de resposta", "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.response.name": "Resposta",
"form.security.description": "Configure as suas definições de segurança.", "form.security.description": "Configure as suas definições de segurança.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Задайте настройки ответа.", "form.response.description": "Задайте настройки ответа.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Время ответа", "form.response.item.responseTime.enabled": "Время ответа",
"form.response.item.poweredBy.enabled": "Powered by",
"form.response.item.poweredBy.value": "Value",
"form.response.name": "Ответ", "form.response.name": "Ответ",
"form.security.description": "Задайте настройки безопасности.", "form.security.description": "Задайте настройки безопасности.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "Yanıt ayarlarınızı yapılandırın.", "form.response.description": "Yanıt ayarlarınızı yapılandırın.",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Tepki Süresi", "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.response.name": "Cevap",
"form.security.description": "Güvenlik ayarlarınızı yapılandırın.", "form.security.description": "Güvenlik ayarlarınızı yapılandırın.",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -47,6 +47,8 @@
"form.response.description": "配置您的响应设置。", "form.response.description": "配置您的响应设置。",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "Response Time", "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.response.name": "Response",
"form.security.description": "配置安全设置。", "form.security.description": "配置安全设置。",
"form.security.item.cors": "Cors", "form.security.item.cors": "Cors",

View File

@ -48,6 +48,8 @@
"form.response.description": "調整回應設定", "form.response.description": "調整回應設定",
"form.response.item.gzip.enabled": "Gzip", "form.response.item.gzip.enabled": "Gzip",
"form.response.item.responseTime.enabled": "回應時間", "form.response.item.responseTime.enabled": "回應時間",
"form.response.item.poweredBy.enabled": "Powered by",
"form.response.item.poweredBy.value": "值",
"form.response.name": "回應", "form.response.name": "回應",
"form.security.description": "調整安全性設定", "form.security.description": "調整安全性設定",
"form.security.item.cors": "跨域資源共享 (Cors)", "form.security.item.cors": "跨域資源共享 (Cors)",

View File

@ -198,7 +198,12 @@ module.exports = {
validations: { validations: {
required: true required: true
} }
}, }
]
},
{
name: '',
items: [
{ {
name: 'form.response.item.responseTime.enabled', name: 'form.response.item.responseTime.enabled',
target: 'response.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
}
}
]
}
]
} }
] ]
}), }),

View File

@ -40,6 +40,7 @@ module.exports = {
'cn-north-1', 'cn-north-1',
'cn-northwest-1', 'cn-northwest-1',
'eu-central-1', 'eu-central-1',
'eu-north-1',
'eu-west-1', 'eu-west-1',
'eu-west-2', 'eu-west-2',
'eu-west-3', 'eu-west-3',

View File

@ -61,6 +61,7 @@ module.exports = function (name, cliArguments) {
settings: { settings: {
client: cliArguments.dbclient, client: cliArguments.dbclient,
host: cliArguments.dbhost, host: cliArguments.dbhost,
srv: cliArguments.dbsrv,
port: cliArguments.dbport, port: cliArguments.dbport,
database: cliArguments.dbname, database: cliArguments.dbname,
username: cliArguments.dbusername, username: cliArguments.dbusername,

View File

@ -56,6 +56,7 @@ program
.option('--debug', 'Display database connection error') .option('--debug', 'Display database connection error')
.option('--dbclient <dbclient>', 'Database client') .option('--dbclient <dbclient>', 'Database client')
.option('--dbhost <dbhost>', 'Database host') .option('--dbhost <dbhost>', 'Database host')
.option('--dbsrv <dbsrv>', 'Database srv')
.option('--dbport <dbport>', 'Database port') .option('--dbport <dbport>', 'Database port')
.option('--dbname <dbname>', 'Database name') .option('--dbname <dbname>', 'Database name')
.option('--dbusername <dbusername>', 'Database username') .option('--dbusername <dbusername>', 'Database username')

View File

@ -22,8 +22,8 @@ module.exports = () => {
} }
// Set X-Powered-By header. // Set X-Powered-By header.
if (_.get(strapi.config, 'X-Powered-By.enabled', true)) { if (_.get(strapi.config.currentEnvironment.response, 'poweredBy.enabled')) {
ctx.set('X-Powered-By', 'Strapi <strapi.io>'); ctx.set('X-Powered-By', _.get(strapi.config.currentEnvironment.response, 'poweredBy.value', 'Strapi <strapi.io>'));
} }
}); });
cb(); cb();

View 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(() => {});
}

View File

@ -71,6 +71,9 @@
"strapi-generate-service": "3.0.0-alpha.21", "strapi-generate-service": "3.0.0-alpha.21",
"strapi-utils": "3.0.0-alpha.21" "strapi-utils": "3.0.0-alpha.21"
}, },
"scripts": {
"postinstall": "node lib/utils/success.js"
},
"author": { "author": {
"email": "hi@strapi.io", "email": "hi@strapi.io",
"name": "Strapi team", "name": "Strapi team",