@serverless/enterprise-plugin
Advanced tools
Comparing version
@@ -5,2 +5,16 @@ # Changelog | ||
### [4.5.0](https://github.com/serverless/enterprise-plugin/compare/v4.4.3...v4.5.0) (2021-03-04) | ||
### Features | ||
- Support `--use-local-credentials` flag to skip provider resolution ([#539](https://github.com/serverless/enterprise-plugin/pull/539)) ([c6048d1](https://github.com/serverless/enterprise-plugin/commit/c6048d162597441f0ad3e2c35509a3f00805c20e)) ([AJ Stuyvenberg](https://github.com/astuyve)) | ||
### Bug fixes | ||
- Properly use namespaced `events` module ([#548](https://github.com/serverless/enterprise-plugin/pull/548)) ([72019bd](https://github.com/serverless/enterprise-plugin/commit/72019bd3d2657f3a558972d37772d0fc4379d9fa)) ([AJ Stuyvenberg](https://github.com/astuyve)) | ||
### Maintenance | ||
- Drop dependency on `@serverless/platform-sdk` by replacing it with corresponding `@serverless/platform-client` methods ([#546](https://github.com/serverless/enterprise-plugin/pull/546)) ([924360f](https://github.com/serverless/enterprise-plugin/pull/546/commits/924360f7067d713bb6678af58709ee0cc1a4d9ab)) ([Piotr Grzesik](https://github.com/pgrzesik)) | ||
### [4.4.3](https://github.com/serverless/enterprise-plugin/compare/v4.4.2...v4.4.3) (2021-02-09) | ||
@@ -7,0 +21,0 @@ |
'use strict'; | ||
const { version } = require('@serverless/platform-sdk/package.json'); | ||
const platformClientVersion = require('@serverless/platform-client/package').version; | ||
module.exports = require('./lib/plugin'); | ||
module.exports.sdkVersion = version; | ||
module.exports.sdkVersion = 'n/a'; | ||
module.exports.platformClientVersion = platformClientVersion; |
'use strict'; | ||
const { getApp } = require('@serverless/platform-sdk'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
module.exports = async function (orgName, appName) { | ||
const app = await getApp({ | ||
tenant: orgName, | ||
app: appName, | ||
}); | ||
const sdk = await getPlatformClientWithAccessKey(orgName); | ||
const app = await sdk.apps.get({ orgName, appName }); | ||
@@ -11,0 +9,0 @@ return { |
@@ -0,1 +1,3 @@ | ||
// TODO: Remove this util with next major release | ||
'use strict'; | ||
@@ -2,0 +4,0 @@ |
@@ -6,4 +6,3 @@ 'use strict'; | ||
saveDeployment: require('./save'), | ||
getServerlessFilePath: require('./getServerlessFilePath'), | ||
createAndSetDeploymentUid: require('./createAndSetUid'), | ||
}; |
@@ -10,6 +10,6 @@ 'use strict'; | ||
const _ = require('lodash'); | ||
const SDK = require('@serverless/platform-sdk'); | ||
const getServerlessFilePath = require('./getServerlessFilePath'); | ||
const simpleGit = require('simple-git'); | ||
const { version: packageJsonVersion } = require('../../package'); | ||
const Deployment = require('./deployment'); | ||
@@ -25,9 +25,12 @@ const git = simpleGit(); | ||
const { service } = ctx.sls; | ||
const deployment = new SDK.Deployment(); | ||
const deployment = new Deployment(); | ||
const accountId = await ctx.provider.getAccountId(); | ||
const serverlessFileName = await getServerlessFilePath( | ||
ctx.sls.processedInput.options.config, | ||
ctx.sls.config.servicePath | ||
); | ||
// TODO: With next major release remove getServerlessFilePath fallback | ||
const serverlessFileName = | ||
ctx.sls.configurationPath || | ||
(await getServerlessFilePath( | ||
ctx.sls.processedInput.options.config, | ||
ctx.sls.config.servicePath | ||
)); | ||
const serverlessFile = (await fs.readFile(serverlessFileName)).toString(); | ||
@@ -34,0 +37,0 @@ /* |
'use strict'; | ||
const { getAccessKeyForTenant, getDeployProfile } = require('@serverless/platform-sdk'); | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { serviceSlug, instanceSlug } = require('./utils'); | ||
const { getDashboardUrl } = require('./dashboard'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
module.exports.configureDeployProfile = async (ctx) => { | ||
const accessKey = await getAccessKeyForTenant(ctx.sls.service.org); | ||
let deploymentProfile; | ||
@@ -18,2 +17,8 @@ const { | ||
if (cliOptions['use-local-credentials']) { | ||
if (process.env.SLS_DEBUG) { | ||
ctx.sls.cli.log('Skipping provider resolution, use-local-credentials option present'); | ||
} | ||
return; | ||
} | ||
const stage = cliOptions.stage || provider.getStage(); | ||
@@ -42,13 +47,14 @@ const region = cliOptions.region || provider.getRegion(); | ||
} | ||
const sdk = await getPlatformClientWithAccessKey(org); | ||
try { | ||
deploymentProfile = await getDeployProfile({ | ||
accessKey, | ||
stage, | ||
app, | ||
tenant: org, | ||
deploymentProfile = await sdk.deploymentProfiles.get({ | ||
orgName: org, | ||
appName: app, | ||
stageName: stage, | ||
}); | ||
} catch (e) { | ||
if (process.env.SLS_DEBUG) { | ||
// eslint-disable-next-line no-console | ||
console.log('ignoring profile fetch error', e); | ||
ctx.sls.cli.log('ignoring profile fetch error', e); | ||
} | ||
@@ -61,12 +67,9 @@ } | ||
if (!parameterizedArgs.length) { | ||
const sdkV2 = new ServerlessSDK({ | ||
accessKey, | ||
}); | ||
let providerCredentials = {}; | ||
try { | ||
if (!ctx.sls.service.orgUid) { | ||
const { orgUid } = await sdkV2.getOrgByName(ctx.sls.service.org); | ||
const { orgUid } = await sdk.getOrgByName(ctx.sls.service.org); | ||
ctx.sls.service.orgUid = orgUid; | ||
} | ||
providerCredentials = await sdkV2.getProvidersByOrgServiceInstance( | ||
providerCredentials = await sdk.getProvidersByOrgServiceInstance( | ||
ctx.sls.service.orgUid, | ||
@@ -83,6 +86,6 @@ serviceSlug({ app, service }), | ||
if (process.env.SLS_DEBUG) { | ||
// eslint-disable-next-line no-console | ||
console.log('ignoring provider credentials error'); | ||
ctx.sls.cli.log('ignoring provider credentials error'); | ||
} | ||
} | ||
const providersConfigUrl = `${getDashboardUrl(ctx)}/providers`; | ||
@@ -94,2 +97,5 @@ if (providerCredentials.result) { | ||
if (awsCredentials) { | ||
ctx.sls.cli.log( | ||
`Using provider credentials, configured via dashboard: ${providersConfigUrl}` | ||
); | ||
ctx.provider.cachedCredentials = { | ||
@@ -102,4 +108,8 @@ accessKeyId: awsCredentials.providerDetails.accessKeyId, | ||
} | ||
} else { | ||
ctx.sls.cli.log( | ||
`Using local credentials. Add provider credentials via dashboard: ${providersConfigUrl}` | ||
); | ||
} | ||
} | ||
}; |
'use strict'; | ||
const { getAccessKeyForTenant, getMetadata } = require('@serverless/platform-sdk'); | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { entries, values } = require('lodash'); | ||
@@ -24,4 +24,2 @@ | ||
const accessKey = await getAccessKeyForTenant(ctx.sls.service.org); | ||
if ( | ||
@@ -35,3 +33,4 @@ ctx.sls.service.custom && | ||
const { awsAccountId } = await getMetadata(accessKey); | ||
const sdk = new ServerlessSDK(); | ||
const { awsAccountId } = await sdk.metadata.get(); | ||
ctx.sls.service.provider.compiledCloudFormationTemplate.Resources.EnterpriseLogAccessIamRole = { | ||
@@ -38,0 +37,0 @@ Type: 'AWS::IAM::Role', |
@@ -6,3 +6,3 @@ 'use strict'; | ||
const { getMetadata } = require('@serverless/platform-sdk'); | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { configureDeployProfile } = require('../deployProfile'); | ||
@@ -19,3 +19,4 @@ const register = require('./register'); | ||
if (ctx.sls.processedInput.options.org || ctx.sls.processedInput.options.app) { | ||
const { supportedRuntimes, supportedRegions } = await getMetadata(); | ||
const sdk = new ServerlessSDK(); | ||
const { supportedRuntimes, supportedRegions } = await sdk.metadata.get(); | ||
if (ctx.sls.service.provider.name !== 'aws') { | ||
@@ -22,0 +23,0 @@ throw new ctx.sls.classes.Error( |
'use strict'; | ||
const chalk = require('chalk'); | ||
const { createApp, getMetadata, register: sdkRegister } = require('@serverless/platform-sdk'); | ||
const sdkVersion = require('@serverless/platform-sdk/package').version; | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const enableConfirm = require('./enableConfirm'); | ||
@@ -23,4 +22,5 @@ const writeOrgAndApp = require('./writeOrgAndApp'); | ||
const register = async (...args) => { | ||
const result = await sdkRegister(...args); | ||
const register = async (email, password, userName, orgName) => { | ||
const sdk = new ServerlessSDK(); | ||
const result = await sdk.organizations.create({ orgName, username: userName, email, password }); | ||
result.orgName = result.tenantName; | ||
@@ -72,3 +72,3 @@ delete result.tenantName; | ||
try { | ||
return await register(email, password, userName, orgName, orgName); | ||
return await register(email, password, userName, orgName); | ||
} catch (error) { | ||
@@ -177,3 +177,2 @@ const errorData = (() => { | ||
enterprise: { | ||
versionSDK: sdkVersion, | ||
timeLastLogin: Math.round(Date.now() / 1000), | ||
@@ -193,6 +192,6 @@ }, | ||
const { appName } = await createApp({ | ||
tenant: orgName, | ||
app: `${ctx.sls.service.service}-app`, | ||
token: ownerAccessKey, | ||
const sdk = new ServerlessSDK({ accessKey: ownerAccessKey }); | ||
const { appName } = await sdk.apps.create({ | ||
orgName, | ||
app: { name: `${ctx.sls.service.service}-app` }, | ||
}); | ||
@@ -210,3 +209,4 @@ | ||
} | ||
const { supportedRegions, supportedRuntimes } = await getMetadata(); | ||
const sdk = new ServerlessSDK(); | ||
const { supportedRegions, supportedRuntimes } = await sdk.metadata.get(); | ||
if (!supportedRuntimes.includes(ctx.sls.service.provider.runtime || 'nodejs10.x')) { | ||
@@ -213,0 +213,0 @@ return false; |
@@ -8,14 +8,5 @@ 'use strict'; | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { | ||
createApp, | ||
createDeployProfile, | ||
getApps, | ||
getDeployProfiles, | ||
getMetadata, | ||
listTenants, | ||
setDefaultDeploymentProfile, | ||
} = require('@serverless/platform-sdk'); | ||
const enableConfirm = require('./enableConfirm'); | ||
const writeOrgAndApp = require('./writeOrgAndApp'); | ||
const { resolveAccessKey } = require('./utils'); | ||
const { getPlatformClientWithAccessKey, getOrCreateAccessKeyForOrg } = require('../clientUtils'); | ||
@@ -110,10 +101,10 @@ const isValidAppName = RegExp.prototype.test.bind(/^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$/); | ||
const createAppWithDeploymentProfile = async (inquirer, orgName, accessKey, newAppName) => { | ||
const { appName } = await createApp({ tenant: orgName, app: newAppName, token: accessKey }); | ||
const createAppWithDeploymentProfile = async (sdk, inquirer, orgName, newAppName) => { | ||
const { appName } = await sdk.apps.create({ orgName, app: { name: newAppName } }); | ||
let deployProfiles = await getDeployProfiles({ tenant: orgName, accessKey }); | ||
let deployProfiles = await sdk.deploymentProfiles.list({ orgName }); | ||
let deploymentProfile; | ||
if (deployProfiles.length === 0) { | ||
await createDeployProfile({ name: 'default', tenant: orgName, accessKey }); | ||
deployProfiles = await getDeployProfiles({ tenant: orgName }); | ||
await sdk.deploymentProfiles.create({ profileName: 'default', orgName }); | ||
deployProfiles = await sdk.deploymentProfiles.list({ orgName }); | ||
} | ||
@@ -130,8 +121,3 @@ if (deployProfiles.length === 1) { | ||
} | ||
await setDefaultDeploymentProfile({ | ||
accessKey, | ||
app: appName, | ||
tenant: orgName, | ||
deploymentProfile, | ||
}); | ||
await sdk.deploymentProfiles.setDefault({ appName, orgName, profileUid: deploymentProfile }); | ||
return appName; | ||
@@ -151,8 +137,8 @@ }; | ||
} else { | ||
await accountUtils.refreshToken(new ServerlessSDK()); | ||
const sdk = new ServerlessSDK(); | ||
await accountUtils.refreshToken(sdk); | ||
user = configUtils.getLoggedInUser(); | ||
sdk.config({ accessKey: user.idToken }); | ||
orgs = new Set( | ||
(await listTenants({ username: user.username, idToken: user.idToken })).map( | ||
(org) => org.tenantName | ||
) | ||
(await sdk.organizations.list({ username: user.username })).map((org) => org.tenantName) | ||
); | ||
@@ -162,3 +148,3 @@ } | ||
}, | ||
setOrgAndApp: async (serverless, { user, orgNames, orgName, apps, appName, newAppName }) => { | ||
setOrgAndApp: async (serverless, { orgNames, orgName, apps, appName, newAppName }) => { | ||
const { inquirer } = serverless.interactiveCli; | ||
@@ -172,5 +158,5 @@ if (!orgName) { | ||
const accessKey = await resolveAccessKey(user, orgName); | ||
const sdk = await getPlatformClientWithAccessKey(orgName); | ||
if (!newAppName && !appName) { | ||
if (!apps) apps = await getApps({ tenant: orgName, token: accessKey }); | ||
if (!apps) apps = await sdk.apps.list({ orgName }); | ||
@@ -182,3 +168,3 @@ const appNames = apps.map((app) => app.appName); | ||
if (newAppName) { | ||
appName = await createAppWithDeploymentProfile(inquirer, orgName, accessKey, newAppName); | ||
appName = await createAppWithDeploymentProfile(sdk, inquirer, orgName, newAppName); | ||
} | ||
@@ -211,3 +197,4 @@ if ( | ||
if (serverless.service.provider.name !== 'aws') return false; | ||
const { supportedRegions, supportedRuntimes } = await getMetadata(); | ||
const sdk = new ServerlessSDK(); | ||
const { supportedRegions, supportedRuntimes } = await sdk.metadata.get(); | ||
if (!supportedRuntimes.includes(serverless.service.provider.runtime || 'nodejs12.x')) { | ||
@@ -228,5 +215,8 @@ return false; | ||
if (orgName && orgNames.has(orgName)) { | ||
const accessKey = await resolveAccessKey(user, orgName); | ||
if (!isValidAppName(appName)) return { user, orgName }; | ||
const apps = await getApps({ tenant: orgName, token: accessKey }); | ||
const accessKey = await getOrCreateAccessKeyForOrg(orgName); | ||
sdk.config({ accessKey }); | ||
const apps = await sdk.apps.list({ orgName }); | ||
if (serverless.processedInput.options.org || serverless.processedInput.options.app) { | ||
@@ -233,0 +223,0 @@ if (apps.some((app) => app.appName === appName)) { |
'use strict'; | ||
const { createAccessKeyForTenant } = require('@serverless/platform-sdk'); | ||
const configUtils = require('@serverless/utils/config'); | ||
module.exports = { | ||
resolveAccessKey: async (user, orgName) => { | ||
if (user.accessKeys && user.accessKeys[orgName]) return user.accessKeys[orgName]; | ||
const token = await createAccessKeyForTenant(orgName); | ||
configUtils.set({ | ||
users: { [user.userId]: { dashboard: { accessKeys: { [orgName]: token } } } }, | ||
}); | ||
return token; | ||
}, | ||
sleep: (timeout) => new Promise((resolve) => setTimeout(resolve, timeout)), | ||
}; |
@@ -13,6 +13,9 @@ 'use strict'; | ||
module.exports = async (serverless, orgName, appName) => { | ||
const serverlessFileName = await getServerlessFilePath( | ||
serverless.processedInput.options.config, | ||
serverless.config.servicePath | ||
); | ||
// TODO: With next major release remove getServerlessFilePath fallback | ||
const serverlessFileName = | ||
serverless.configurationPath || | ||
(await getServerlessFilePath( | ||
serverless.processedInput.options.config, | ||
serverless.config.servicePath | ||
)); | ||
@@ -19,0 +22,0 @@ let ymlString = await (async () => { |
@@ -5,3 +5,2 @@ 'use strict'; | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { urls } = require('@serverless/platform-sdk'); | ||
const configUtils = require('@serverless/utils/config'); | ||
@@ -14,8 +13,4 @@ | ||
const loginConfig = { | ||
...urls, | ||
}; | ||
const { loginUrl, loginData: loginDataDeferred } = await sdk.login(); | ||
const { loginUrl, loginData: loginDataDeferred } = await sdk.login(loginConfig); | ||
open(loginUrl); | ||
@@ -22,0 +17,0 @@ |
@@ -20,3 +20,3 @@ 'use strict'; | ||
const { getAccessKeyForTenant, getLogDestination } = require('@serverless/platform-sdk'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
@@ -50,8 +50,6 @@ module.exports = async (ctx) => { | ||
const accessKey = await getAccessKeyForTenant(ctx.sls.service.org); | ||
const { Account } = await ctx.provider.request('STS', 'getCallerIdentity', {}); | ||
const destinationOpts = { | ||
accessKey, | ||
appUid: ctx.sls.service.appUid, | ||
tenantUid: ctx.sls.service.orgUid, | ||
orgUid: ctx.sls.service.orgUid, | ||
serviceName: ctx.sls.service.getServiceName(), | ||
@@ -66,3 +64,4 @@ stageName: ctx.provider.getStage(), | ||
try { | ||
({ destinationArn } = await getLogDestination(destinationOpts)); | ||
const sdk = await getPlatformClientWithAccessKey(ctx.sls.service.org); | ||
({ destinationArn } = await sdk.logDestinations.getOrCreate(destinationOpts)); | ||
} catch (e) { | ||
@@ -69,0 +68,0 @@ if (e.message && e.message.includes('not supported in region')) { |
@@ -5,7 +5,3 @@ 'use strict'; | ||
const _ = require('lodash'); | ||
const { | ||
configureFetchDefaults, | ||
getAccessKeyForTenant, | ||
getMetadata, | ||
} = require('@serverless/platform-sdk'); | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const open = require('open'); | ||
@@ -121,4 +117,2 @@ const errorHandler = require('./errorHandler'); | ||
configureFetchDefaults(); | ||
// Configure commands available to logged out users | ||
@@ -388,4 +382,4 @@ this.commands = { | ||
case 'before:package:createDeploymentArtifacts': { | ||
const accessKey = await getAccessKeyForTenant(this.sls.service.org); | ||
const { supportedRegions } = await getMetadata(accessKey); | ||
const sdk = new ServerlessSDK(); | ||
const { supportedRegions } = await sdk.metadata.get(); | ||
const region = this.provider.getRegion(); | ||
@@ -392,0 +386,0 @@ if (!supportedRegions.includes(region)) { |
'use strict'; | ||
const { getAccessKeyForTenant, removeLogDestination } = require('@serverless/platform-sdk'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
@@ -13,14 +13,10 @@ module.exports = async (ctx) => { | ||
} | ||
const accessKey = await getAccessKeyForTenant(ctx.sls.service.org); | ||
const destinationOpts = { | ||
accessKey, | ||
const sdk = await getPlatformClientWithAccessKey(ctx.sls.service.org); | ||
await sdk.logDestinations.remove({ | ||
appUid: ctx.sls.service.appUid, | ||
tenantUid: ctx.sls.service.orgUid, | ||
orgUid: ctx.sls.service.orgUid, | ||
serviceName: ctx.sls.service.getServiceName(), | ||
stageName: ctx.provider.getStage(), | ||
regionName: ctx.provider.getRegion(), | ||
}; | ||
await removeLogDestination(destinationOpts); | ||
return; | ||
}); | ||
}; |
'use strict'; | ||
const { getAccessKeyForTenant, getStateVariable } = require('@serverless/platform-sdk'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
module.exports = async (outputName, { org, app, service, stage, region }) => { | ||
return ( | ||
await getStateVariable({ | ||
outputName, | ||
accessKey: await getAccessKeyForTenant(org), | ||
tenant: org, | ||
app, | ||
service, | ||
stage, | ||
region, | ||
}) | ||
).value; | ||
const sdk = await getPlatformClientWithAccessKey(org); | ||
const result = await sdk.services.getStateVariable({ | ||
variableName: outputName, | ||
orgName: org, | ||
appName: app, | ||
serviceName: service, | ||
stageName: stage, | ||
regionName: region, | ||
}); | ||
return result.value; | ||
}; |
'use strict'; | ||
const { getAccessKeyForTenant, getService } = require('@serverless/platform-sdk'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
module.exports = async ({ org, app, service, stage, region }) => { | ||
const serviceData = await getService({ | ||
accessKey: await getAccessKeyForTenant(org), | ||
tenant: org, | ||
app, | ||
service, | ||
const sdk = await getPlatformClientWithAccessKey(org); | ||
const serviceData = await sdk.services.get({ | ||
orgName: org, | ||
appName: app, | ||
serviceName: service, | ||
}); | ||
@@ -12,0 +12,0 @@ |
'use strict'; | ||
const memoizee = require('memoizee'); | ||
const { getAccessKeyForTenant, getDeployProfile } = require('@serverless/platform-sdk'); | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { serviceSlug, instanceSlug } = require('./utils'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
module.exports = memoizee( | ||
async ({ org, app, service, stage, region }) => { | ||
const accessKey = await getAccessKeyForTenant(org); | ||
const sdk = await getPlatformClientWithAccessKey(org); | ||
const sdkV2 = new ServerlessSDK({ | ||
accessKey, | ||
}); | ||
const { orgUid } = await sdkV2.getOrgByName(org); | ||
const parametersResponse = await sdkV2.getParamsByOrgServiceInstance( | ||
const { orgUid } = await sdk.getOrgByName(org); | ||
const parametersResponse = await sdk.getParamsByOrgServiceInstance( | ||
orgUid, | ||
@@ -27,7 +23,6 @@ serviceSlug({ app, service }), | ||
} else { | ||
const deploymentProfile = await getDeployProfile({ | ||
accessKey, | ||
stage, | ||
app, | ||
tenant: org, | ||
const deploymentProfile = await sdk.deploymentProfiles.get({ | ||
orgName: org, | ||
appName: app, | ||
stageName: stage, | ||
}); | ||
@@ -34,0 +29,0 @@ for (const { |
@@ -5,5 +5,4 @@ 'use strict'; | ||
const chokidar = require('chokidar'); | ||
const { ServerlessSDK } = require('@serverless/platform-client'); | ||
const { getAccessKeyForTenant } = require('@serverless/platform-sdk'); | ||
const { isEqual } = require('lodash'); | ||
const { getPlatformClientWithAccessKey } = require('./clientUtils'); | ||
@@ -29,2 +28,3 @@ const isAuthenticated = require('./isAuthenticated'); | ||
// TODO: Remove 'studio' command with next major | ||
module.exports = async function (ctx) { | ||
@@ -92,2 +92,3 @@ const { | ||
sls.cli.log('Starting Serverless Studio...'); | ||
sls.logDeprecation('STUDIO_COMMAND', '"studio" command will be removed with next major release'); | ||
@@ -102,9 +103,5 @@ /** | ||
const accessKey = await getAccessKeyForTenant(sls.service.org); | ||
const sdk = await getPlatformClientWithAccessKey(sls.service.org); | ||
sdk.config({ platformStage: process.env.SERVERLESS_PLATFORM_STAGE || 'prod' }); | ||
const sdk = new ServerlessSDK({ | ||
platformStage: process.env.SERVERLESS_PLATFORM_STAGE || 'prod', | ||
accessKey, | ||
}); | ||
const studio = new Studio({ sdk, sls, serverlessExec }); | ||
@@ -111,0 +108,0 @@ |
@@ -12,6 +12,6 @@ 'use strict'; | ||
if (!ctx.sls.enterpriseEnabled) { | ||
throw new this.sls.classes.Error('Run "serverless" to configure your service for testing.'); | ||
throw new ctx.sls.classes.Error('Run "serverless" to configure your service for testing.'); | ||
} | ||
if (!fse.exists('serverless.test.yml')) { | ||
throw new this.sls.classes.Error('No serverless.test.yml file found'); | ||
throw new ctx.sls.classes.Error('No serverless.test.yml file found'); | ||
} | ||
@@ -18,0 +18,0 @@ let tests = yaml.safeLoad(await fse.readFile('serverless.test.yml')); |
@@ -14,3 +14,3 @@ 'use strict'; | ||
const JSZip = require('jszip'); | ||
const { getAccessKeyForTenant } = require('@serverless/platform-sdk'); | ||
const { getOrCreateAccessKeyForOrg } = require('./clientUtils'); | ||
const { addTree, writeZip } = require('./zipTree'); | ||
@@ -380,3 +380,3 @@ const { version } = require('../package.json'); | ||
if (isDevMode) { | ||
accessKey = await getAccessKeyForTenant(ctx.sls.service.org); | ||
accessKey = await getOrCreateAccessKeyForOrg(ctx.sls.service.org); | ||
} | ||
@@ -383,0 +383,0 @@ |
{ | ||
"name": "@serverless/enterprise-plugin", | ||
"version": "4.4.3", | ||
"version": "4.5.0-3fbcdb1c", | ||
"description": "The Serverless Dashboard plugin", | ||
@@ -9,4 +9,3 @@ "author": "serverless.com", | ||
"@serverless/event-mocks": "^1.1.1", | ||
"@serverless/platform-client": "^3.11.0", | ||
"@serverless/platform-sdk": "^2.3.2", | ||
"@serverless/platform-client": "^4.2.0", | ||
"@serverless/utils": "^3.1.0", | ||
@@ -20,4 +19,4 @@ "chalk": "^4.1.0", | ||
"js-yaml": "^3.14.1", | ||
"jszip": "^3.5.0", | ||
"lodash": "^4.17.20", | ||
"jszip": "^3.6.0", | ||
"lodash": "^4.17.21", | ||
"memoizee": "^0.4.15", | ||
@@ -27,5 +26,5 @@ "ncjsm": "^4.1.0", | ||
"node-fetch": "^2.6.1", | ||
"open": "^7.4.0", | ||
"open": "^7.4.2", | ||
"semver": "^7.3.4", | ||
"simple-git": "^2.34.2", | ||
"simple-git": "^2.36.1", | ||
"uuid": "^8.3.2", | ||
@@ -36,6 +35,7 @@ "yamljs": "^0.3.0" | ||
"@serverless/eslint-config": "^3.0.0", | ||
"@serverless/test": "^7.7.0", | ||
"aws-sdk": "^2.840.0", | ||
"chai": "^4.3.0", | ||
"eslint": "^7.19.0", | ||
"@serverless/test": "^7.10.0", | ||
"aws-sdk": "^2.859.0", | ||
"chai": "^4.3.3", | ||
"chai-as-promised": "^7.1.1", | ||
"eslint": "^7.21.0", | ||
"eslint-plugin-import": "^2.22.1", | ||
@@ -45,7 +45,7 @@ "essentials": "^1.1.1", | ||
"github-release-from-cc-changelog": "^2.2.0", | ||
"husky": "^4.3.7", | ||
"husky": "^4.3.8", | ||
"lint-staged": "^10.5.4", | ||
"log": "^6.0.0", | ||
"log-node": "^7.0.0", | ||
"mocha": "^8.2.1", | ||
"mocha": "^8.3.1", | ||
"nyc": "^15.1.0", | ||
@@ -57,3 +57,4 @@ "prettier": "^2.2.1", | ||
"strip-ansi": "^6.0.0", | ||
"tar": "^6.1.0" | ||
"tar": "^6.1.0", | ||
"timers-ext": "^0.1.7" | ||
}, | ||
@@ -60,0 +61,0 @@ "eslintConfig": { |
@@ -17,3 +17,3 @@ # Serverless Framework Enterprise Plugin | ||
### Install dependencies | ||
### Install dependencies and build SDK JS | ||
@@ -24,13 +24,6 @@ ``` | ||
npm i | ||
npm run build | ||
cd - | ||
``` | ||
### Build | ||
`sdk-js` needs to be compile, & tests use the `dist` build for integration purposes. | ||
``` | ||
npm run build | ||
``` | ||
### Test | ||
@@ -43,33 +36,14 @@ | ||
cd - | ||
npm run integration-test | ||
``` | ||
### Using your checked out version of the plugin for test/dev purposes: | ||
#### Integration tests | ||
First build & link your plugin globally: | ||
For integration tests run you need an access to `integration` dashboard organization, and generated for it access key. | ||
``` | ||
npm run build | ||
npm link | ||
``` | ||
Then tests can be run as: | ||
Then clone & link sls & link the plugin into sls: | ||
``` | ||
git clone https://github.com/serverless/serverless | ||
cd serverless | ||
npm i | ||
npm link | ||
npm link @serverless/enterprise-plugin | ||
SERVERLESS_ACCESS_KEY=xxx npm run integration-test | ||
``` | ||
If you need to work with a development version of the platform SDK too, in the sdk, run: | ||
``` | ||
npm run build | ||
npm link | ||
``` | ||
and then in both serverless & this plugin, run `npm link @serverless/platform-sdk` | ||
### Release process | ||
@@ -79,4 +53,2 @@ | ||
- Create a draft release on github with a change log | ||
- Have it approved & merge | ||
- Publish the release, Travis CI will publish it to NPM | ||
- Verify the release is in the versions tab of NPM | ||
- Have it approved & merge (Release is automatically published via CI) |
@@ -10,18 +10,18 @@ { | ||
"dependencies": { | ||
"@serverless/platform-client": "^1.1.10", | ||
"@serverless/platform-client": "^4.2.0", | ||
"after-all-results": "^2.0.0", | ||
"flat": "^5.0.2", | ||
"lodash": "^4.17.20", | ||
"lodash": "^4.17.21", | ||
"require-in-the-middle": "^5.1.0", | ||
"stackman": "^4.0.1", | ||
"type": "^2.1.0", | ||
"type": "^2.3.0", | ||
"uuid": "^8.3.2" | ||
}, | ||
"devDependencies": { | ||
"@serverless/test": "^7.0.0", | ||
"chai": "^4.2.0", | ||
"@serverless/test": "^7.10.0", | ||
"chai": "^4.3.3", | ||
"git-list-updated": "^1.2.1", | ||
"mocha": "^8.2.1", | ||
"mocha": "^8.3.0", | ||
"nyc": "^15.1.0", | ||
"webpack": "^4.44.2", | ||
"webpack": "^4.46.0", | ||
"webpack-cli": "^3.3.12" | ||
@@ -28,0 +28,0 @@ }, |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 6 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
1402171
28.71%21
-4.55%117
0.86%16146
22.44%131
-6.43%23
9.52%3
50%51
-35.44%13
30%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated