mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
'use strict';
|
|
|
|
const path = require('path');
|
|
const isStandalone = require('../isStandaloneExecutable');
|
|
const { triggeredDeprecations } = require('../logDeprecation');
|
|
|
|
const versions = {
|
|
'serverless': require('../../../package').version,
|
|
'@serverless/enterprise-plugin': require('@serverless/enterprise-plugin/package').version,
|
|
};
|
|
|
|
module.exports = serverless => {
|
|
const { service: serviceConfig, config } = serverless;
|
|
const { provider: providerConfig } = serviceConfig;
|
|
const provider = serverless.getProvider(providerConfig.name);
|
|
|
|
const isAwsProvider = providerConfig.name === 'aws';
|
|
|
|
const defaultRuntime = isAwsProvider ? provider.getRuntime() : providerConfig.runtime;
|
|
|
|
const npmDependencies = (() => {
|
|
if (!config.servicePath) return [];
|
|
const pkgJson = (() => {
|
|
try {
|
|
return require(path.resolve(config.servicePath, 'package.json'));
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
})();
|
|
if (!pkgJson) return [];
|
|
return Array.from(
|
|
new Set([
|
|
...Object.keys(pkgJson.dependencies || {}),
|
|
...Object.keys(pkgJson.optionalDependencies || {}),
|
|
...Object.keys(pkgJson.devDependencies || {}),
|
|
])
|
|
);
|
|
})();
|
|
|
|
return {
|
|
cliName: 'serverless',
|
|
config: {
|
|
provider: {
|
|
name: providerConfig.name,
|
|
runtime: defaultRuntime,
|
|
stage: isAwsProvider ? provider.getStage() : providerConfig.stage,
|
|
region: isAwsProvider ? provider.getRegion() : providerConfig.region,
|
|
},
|
|
plugins: serviceConfig.plugins ? serviceConfig.plugins.modules || serviceConfig.plugins : [],
|
|
functions: Object.values(serviceConfig.functions).map(functionConfig => ({
|
|
runtime: functionConfig.runtime || defaultRuntime,
|
|
events: functionConfig.events.map(eventConfig => ({
|
|
type: Object.keys(eventConfig)[0] || null,
|
|
})),
|
|
})),
|
|
},
|
|
npmDependencies,
|
|
triggeredDeprecations: Array.from(triggeredDeprecations),
|
|
versions,
|
|
installationType: (() => {
|
|
if (isStandalone) return 'global:standalone';
|
|
if (!serverless.isLocallyInstalled) return 'global:npm';
|
|
if (serverless.isInvokedByGlobalInstallation) return 'local:fallback';
|
|
return 'local:direct';
|
|
})(),
|
|
isDashboardEnabled: Boolean(serverless.enterpriseEnabled),
|
|
};
|
|
};
|