Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: lodash get method replaced with pure javascript #11916

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions commands/plugin-install.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const { log, progress, style } = require('@serverless/utils/log');
const ServerlessError = require('../lib/serverless-error');
const yamlAstParser = require('../lib/utils/yaml-ast-parser');
const npmCommandDeferred = require('../lib/utils/npm-command-deferred');
const _get = require('../lib/utils/purekit/get');
const {
getPluginInfo,
getServerlessFilePath,
Expand All @@ -37,8 +38,7 @@ module.exports = async ({ configuration, serviceDir, configurationFilename, opti
await installPlugin(context);
// Check if plugin is already added
const pluginAlreadyPresentInConfig =
(_.get(configuration, 'plugins.modules') &&
configuration.plugin.modules.includes(pluginName)) ||
(_get(configuration, 'plugins.modules') && configuration.plugin.modules.includes(pluginName)) ||
(configuration.plugins && configuration.plugins.includes(pluginName));
if (!pluginAlreadyPresentInConfig) {
await addPluginToServerlessFile(context);
Expand Down
4 changes: 2 additions & 2 deletions lib/aws/request.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use strict';

const _ = require('lodash');
const memoize = require('memoizee');
const PromiseQueue = require('promise-queue');
const sdk = require('./sdk-v2');
Expand All @@ -15,6 +14,7 @@ const ensureString = require('type/string/ensure');
const isObject = require('type/object/is');
const wait = require('timers-ext/promise/sleep');
const chalk = require('chalk');
const _get = require('../utils/purekit/get');

// Activate AWS SDK logging
const awsLog = log.get('aws');
Expand Down Expand Up @@ -98,7 +98,7 @@ const shouldS3Accelerate = (method, params) => {

const getServiceInstance = memoize(
(service, method) => {
const Service = _.get(sdk, service.name);
const Service = _get(sdk, service.name);
// we translate params to an object for the service creation by selecting keys of interest
const serviceParams = { ...service.params };
if (service.name === 'S3') {
Expand Down
3 changes: 2 additions & 1 deletion lib/classes/config-schema-handler/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const ServerlessError = require('../../serverless-error');
const normalizeAjvErrors = require('./normalize-ajv-errors');
const resolveAjvValidate = require('./resolve-ajv-validate');
const { log, style } = require('@serverless/utils/log');
const _get = require('../../utils/purekit/get');

const FUNCTION_NAME_PATTERN = '^[a-zA-Z0-9-_]+$';
const ERROR_PREFIX = 'Configuration error';
Expand All @@ -21,7 +22,7 @@ const normalizeSchemaObject = (object, instanceSchema) => {
if (!value.$ref.startsWith('#/definitions/')) {
throw new Error(`Unsupported reference ${value.$ref}`);
}
object[key] = _.get(instanceSchema, value.$ref.slice(2).split('/'));
object[key] = _get(instanceSchema, value.$ref.slice(2).split('/'));
}
};

Expand Down
7 changes: 4 additions & 3 deletions lib/classes/plugin-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const processBackendNotificationRequest = require('../utils/process-backend-noti
const tokenizeException = require('../utils/tokenize-exception');
const getRequire = require('../utils/get-require');
const importModule = require('../utils/require-with-import-fallback');
const _get = require('../utils/purekit/get');
const { log, getPluginWriters } = require('@serverless/utils/log');

let hooksIdCounter = 0;
Expand Down Expand Up @@ -431,7 +432,7 @@ class PluginManager {
}
if (alias.command) {
const commandPath = alias.command.split(':').join('.commands.');
target[name] = _.get(this.commands, commandPath);
target[name] = _get(this.commands, commandPath);
} else {
target[name] = target[name] || {};
target[name].commands = target[name].commands || {};
Expand All @@ -452,7 +453,7 @@ class PluginManager {
return __[commandPath];
}, this.aliases);

return _.get(aliasCommand, 'command');
return _get(aliasCommand, 'command');
}

/**
Expand Down Expand Up @@ -583,7 +584,7 @@ class PluginManager {
commands = commandsArray.split(':');
}
await this.invoke(commands, true);
if (_.get(options, 'terminateLifecycleAfterExecution', false)) {
if (_get(options, 'terminateLifecycleAfterExecution', false)) {
throw new TerminateHookChain(commands);
}
}
Expand Down
4 changes: 2 additions & 2 deletions lib/cli/conditionally-load-dotenv.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const _ = require('lodash');
const _get = require('../utils/purekit/get');

module.exports = async (options, configuration) => {
const stage = options.stage || _.get(configuration, 'provider.stage', 'dev');
const stage = options.stage || _get(configuration, 'provider.stage', 'dev');
if (!configuration.useDotenv) return false;
require('./load-dotenv')(stage);
return true;
Expand Down
6 changes: 3 additions & 3 deletions lib/cli/interactive-setup/aws-credentials.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict';

const { log, style, progress } = require('@serverless/utils/log');
const _ = require('lodash');
const inquirer = require('@serverless/utils/inquirer');
const promptWithHistory = require('@serverless/utils/inquirer/prompt-with-history');
const memoizee = require('memoizee');
Expand All @@ -13,6 +12,7 @@ const openBrowser = require('../../utils/open-browser');
const ServerlessError = require('../../serverless-error');
const resolveStage = require('../../utils/resolve-stage');
const resolveRegion = require('../../utils/resolve-region');
const _get = require('../../utils/purekit/get');

const isValidAwsAccessKeyId = RegExp.prototype.test.bind(/^[A-Z0-9]{10,}$/);
const isValidAwsSecretAccessKey = RegExp.prototype.test.bind(/^[a-zA-Z0-9/+]{10,}$/);
Expand Down Expand Up @@ -323,8 +323,8 @@ module.exports = {
}

if (
_.get(configuration, 'provider') !== 'aws' &&
_.get(configuration, 'provider.name') !== 'aws'
_get(configuration, 'provider') !== 'aws' &&
_get(configuration, 'provider.name') !== 'aws'
) {
context.inapplicabilityReasonCode = 'NON_AWS_PROVIDER';
return false;
Expand Down
8 changes: 4 additions & 4 deletions lib/cli/interactive-setup/dashboard-login.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
'use strict';

const _ = require('lodash');
const { ServerlessSDK } = require('@serverless/platform-client');
const configUtils = require('@serverless/utils/config');
const promptWithHistory = require('@serverless/utils/inquirer/prompt-with-history');
const log = require('@serverless/utils/log').log.get('onboarding');
const login = require('../../commands/login/dashboard');
const { showOnboardingWelcome } = require('./utils');
const _get = require('../../utils/purekit/get');

const loginOrRegisterQuestion = async ({ stepHistory }) =>
promptWithHistory({
Expand Down Expand Up @@ -39,8 +39,8 @@ module.exports = {
}

if (
_.get(configuration, 'provider') !== 'aws' &&
_.get(configuration, 'provider.name') !== 'aws'
_get(configuration, 'provider') !== 'aws' &&
_get(configuration, 'provider.name') !== 'aws'
) {
context.inapplicabilityReasonCode = 'NON_AWS_PROVIDER';
return false;
Expand All @@ -65,7 +65,7 @@ module.exports = {
return false;
}
const { supportedRegions, supportedRuntimes } = sdkMetadata;
if (!supportedRuntimes.includes(_.get(configuration.provider, 'runtime') || 'nodejs12.x')) {
if (!supportedRuntimes.includes(_get(configuration.provider, 'runtime') || 'nodejs12.x')) {
context.inapplicabilityReasonCode = 'UNSUPPORTED_RUNTIME';
return false;
}
Expand Down
8 changes: 4 additions & 4 deletions lib/cli/interactive-setup/dashboard-set-org.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use strict';

const _ = require('lodash');
const chalk = require('chalk');
const { log } = require('@serverless/utils/log');
const accountUtils = require('@serverless/utils/account');
Expand All @@ -12,6 +11,7 @@ const {
getPlatformClientWithAccessKey,
getOrCreateAccessKeyForOrg,
} = require('@serverless/dashboard-plugin/lib/client-utils');
const _get = require('../../utils/purekit/get');

const isValidAppName = RegExp.prototype.test.bind(/^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$/);

Expand Down Expand Up @@ -206,8 +206,8 @@ module.exports = {
}

if (
_.get(configuration, 'provider') !== 'aws' &&
_.get(configuration, 'provider.name') !== 'aws'
_get(configuration, 'provider') !== 'aws' &&
_get(configuration, 'provider.name') !== 'aws'
) {
context.inapplicabilityReasonCode = 'NON_AWS_PROVIDER';
return false;
Expand All @@ -218,7 +218,7 @@ module.exports = {
// We want to still allow onboarding from Dashboard (idenfitied by explicit `--org` passed)
if (
!options.org &&
!supportedRuntimes.includes(_.get(configuration.provider, 'runtime') || 'nodejs12.x')
!supportedRuntimes.includes(_get(configuration.provider, 'runtime') || 'nodejs12.x')
) {
context.inapplicabilityReasonCode = 'UNSUPPORTED_RUNTIME';
return false;
Expand Down
6 changes: 3 additions & 3 deletions lib/cli/interactive-setup/deploy.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ const Serverless = require('../../serverless');
const { writeText, style, log } = require('@serverless/utils/log');
const promptWithHistory = require('@serverless/utils/inquirer/prompt-with-history');
const { doesServiceInstanceHaveLinkedProvider } = require('./utils');
const _ = require('lodash');
const AWS = require('../../aws/sdk-v2');
const isAuthenticated = require('@serverless/dashboard-plugin/lib/is-authenticated');
const _get = require('../../utils/purekit/get');

const printMessage = () => {
writeText(
Expand Down Expand Up @@ -36,8 +36,8 @@ module.exports = {
}

if (
_.get(configuration, 'provider') !== 'aws' &&
_.get(configuration, 'provider.name') !== 'aws'
_get(configuration, 'provider') !== 'aws' &&
_get(configuration, 'provider.name') !== 'aws'
) {
context.inapplicabilityReasonCode = 'NON_AWS_PROVIDER';
return false;
Expand Down
4 changes: 2 additions & 2 deletions lib/cli/run-compose.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
'use strict';

const _ = require('lodash');
const { createRequire } = require('module');
const path = require('path');
const fsp = require('fs').promises;
const spawn = require('child-process-ext/spawn');
const inquirer = require('@serverless/utils/inquirer');
const _get = require('../utils/purekit/get');

const relativeBinPath = '@serverless/compose/bin/serverless-compose';

Expand Down Expand Up @@ -154,7 +154,7 @@ module.exports = async () => {
'Alternatively you can install the "@serverless/compose" package manually via NPM.',
].join('\n')}\n`;

if (_.get(packageJsonContent, 'devDependencies.@serverless/compose')) {
if (_get(packageJsonContent, 'devDependencies.@serverless/compose')) {
try {
await spawn('npm', ['install', '--no-save', '--no-package-lock', '@serverless/compose']);
hasInstalledCompose = true;
Expand Down
8 changes: 4 additions & 4 deletions lib/configuration/is-dashboard-enabled.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict';

const _ = require('lodash');
const _get = require('../utils/purekit/get');

module.exports = ({ configuration, options }) =>
Boolean(_.get(configuration, 'org') || options.org) &&
Boolean(_.get(configuration, 'app') || options.app) &&
!_.get(configuration, 'dashboard.disableMonitoring');
Boolean(_get(configuration, 'org') || options.org) &&
Boolean(_get(configuration, 'app') || options.app) &&
!_get(configuration, 'dashboard.disableMonitoring');
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const ensureString = require('type/string/ensure');
const _ = require('lodash');
const _get = require('../../../../utils/purekit/get');
const ServerlessError = require('../../../../serverless-error');

module.exports = (serverlessInstance) => {
Expand Down Expand Up @@ -55,7 +55,7 @@ module.exports = (serverlessInstance) => {
const outputs = result.Stacks[0].Outputs;
const output = outputs.find((x) => x.OutputKey === outputLogicalId);

return { value: _.get(output, 'OutputValue', null) };
return { value: _get(output, 'OutputValue', null) };
},
};
};
9 changes: 5 additions & 4 deletions lib/plugins/aws/deploy-function.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const validate = require('./lib/validate');
const filesize = require('../../utils/filesize');
const ServerlessError = require('../../serverless-error');
const { log, style, progress } = require('@serverless/utils/log');
const _get = require('../../utils/purekit/get');

const mainProgress = progress.get('main');

Expand Down Expand Up @@ -79,7 +80,7 @@ class AwsDeployFunction {
try {
return await this.provider.request('Lambda', 'getFunction', params);
} catch (error) {
if (_.get(error, 'providerError.code') === 'ResourceNotFoundException') {
if (_get(error, 'providerError.code') === 'ResourceNotFoundException') {
const errorMessage = [
`The function "${this.options.function}" you want to update is not yet deployed.`,
' Please run "serverless deploy" to deploy your service.',
Expand Down Expand Up @@ -307,7 +308,7 @@ class AwsDeployFunction {
if (
functionObj.onError &&
!_.isObject(functionObj.onError) &&
_.get(remoteFunctionConfiguration, 'DeadLetterConfig.TargetArn', null) !== functionObj.onError
_get(remoteFunctionConfiguration, 'DeadLetterConfig.TargetArn', null) !== functionObj.onError
) {
params.DeadLetterConfig = {
TargetArn: functionObj.onError,
Expand Down Expand Up @@ -434,7 +435,7 @@ class AwsDeployFunction {
if (
!_.isEqual(
imageConfig,
_.get(remoteFunctionConfiguration, 'ImageConfigResponse.ImageConfig', {})
_get(remoteFunctionConfiguration, 'ImageConfigResponse.ImageConfig', {})
)
) {
params.ImageConfig = imageConfig;
Expand Down Expand Up @@ -499,7 +500,7 @@ class AwsDeployFunction {
let artifactFilePath =
this.serverless.service.package.artifact || path.join(this.packagePath, artifactFileName);
// check if an artifact is used in function package level
if (_.get(functionObject, 'package.artifact')) {
if (_get(functionObject, 'package.artifact')) {
artifactFilePath = functionObject.package.artifact;
}

Expand Down
4 changes: 2 additions & 2 deletions lib/plugins/aws/deploy/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

const _ = require('lodash');
const _get = require('../../../utils/purekit/get');
const ServerlessError = require('../../../serverless-error');
const writeServiceOutputs = require('../../../cli/write-service-outputs');
const extendedValidate = require('./lib/extended-validate');
Expand Down Expand Up @@ -91,7 +91,7 @@ class AwsDeploy {
'initialize': () => {
const isDeployCommand = this.serverless.processedInput.commands.join(' ') === 'deploy';
if (isDeployCommand && !this.options.function) {
const dashboardProviderName = _.get(
const dashboardProviderName = _get(
this.provider.cachedCredentials,
'dashboardProviderAlias'
);
Expand Down
4 changes: 2 additions & 2 deletions lib/plugins/aws/deploy/lib/cleanup-s3-bucket.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
'use strict';

const _ = require('lodash');
const _get = require('../../../../utils/purekit/get');
const findAndGroupDeployments = require('../../utils/find-and-group-deployments');
const getS3ObjectsFromStacks = require('../../utils/get-s3-objects-from-stacks');
const ServerlessError = require('../../../../serverless-error');
const { log } = require('@serverless/utils/log');

module.exports = {
async getObjectsToRemove() {
const stacksToKeepCount = _.get(
const stacksToKeepCount = _get(
this.serverless,
'service.provider.deploymentBucketObject.maxPreviousDeploymentArtifacts',
5
Expand Down
6 changes: 3 additions & 3 deletions lib/plugins/aws/deploy/lib/extended-validate.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const path = require('path');
const _ = require('lodash');
const _get = require('../../../../utils/purekit/get');
const ServerlessError = require('../../../../serverless-error');
const { log } = require('@serverless/utils/log');

Expand Down Expand Up @@ -62,7 +62,7 @@ module.exports = {
const functionObject = this.serverless.service.getFunction(functionName);
if (functionObject.image) return;
const individually =
_.get(functionObject, 'package.individually') ||
_get(functionObject, 'package.individually') ||
this.serverless.service.package.individually;

// By default assume service-level package
Expand All @@ -74,7 +74,7 @@ module.exports = {
artifactFileName = this.provider.naming.getFunctionArtifactName(functionName);
artifactFilePath = path.join(this.packagePath, artifactFileName);

if (_.get(functionObject, 'package.artifact')) {
if (_get(functionObject, 'package.artifact')) {
// Use function-level artifact
artifactFilePath = functionObject.package.artifact;
artifactFileName = path.basename(artifactFilePath);
Expand Down
3 changes: 2 additions & 1 deletion lib/plugins/aws/info/get-api-key-values.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

const BbPromise = require('bluebird');
const _ = require('lodash');
const _get = require('../../../utils/purekit/get');

module.exports = {
async getApiKeyValues() {
Expand All @@ -10,7 +11,7 @@ module.exports = {

// check if the user has set api keys
const apiKeyDefinitions =
_.get(this.serverless.service.provider.apiGateway, 'apiKeys') ||
_get(this.serverless.service.provider.apiGateway, 'apiKeys') ||
this.serverless.service.provider.apiKeys;
const apiKeyNames = [];
if (Array.isArray(apiKeyDefinitions) && apiKeyDefinitions.length) {
Expand Down