Socket
Socket
Sign inDemoInstall

surge

Package Overview
Dependencies
Maintainers
2
Versions
91
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

surge - npm Package Compare versions

Comparing version 0.21.7 to 0.22.0

bin/surge

491

lib/middleware/deploy.js

@@ -0,344 +1,273 @@

var helpers = require('../util/helpers')
var localCreds = require("../util/creds.js")
var surge = require('../surge')
var surgeSDK = require("surge-sdk")
var ProgressBar = require("progress")
var fs = require("fs")
var request = require("request")
var helpers = require('./util/helpers')
var localCreds = require("./util/creds.js")
var tar = require('tarr')
var zlib = require('zlib')
var fsReader = require('surge-fstream-ignore')
var surge = require('../surge')
var ProgressBar = require("progress")
var split = require("split")
var url = require("url")
var ignore = require("surge-ignore")
module.exports = function(req, next){
req.success = false;
var progress = {}
var progressDone = {}
var ts = new Date().toJSON()
var sdk = surgeSDK({
endpoint: req.endpoint.format(),
defaults: helpers.defaults
})
/**
* Some useful metadata
* progress
*
* payload includes upload progress
*
*/
var headers = {
sdk.publish(req.project, req.domain, {
"user":"token",
"pass": req.creds.token
}, {
"version" : req.pkg.version,
"file-count": req.fileCount,
"cmd": req.config.cmd,
"project-size": req.projectSize,
"timestamp": new Date().toJSON()
}
"cmd": req.configuration.cmd,
"timestamp": ts,
"stage": req.argv.s,
"message": req.argv.m,
"add": req.argv.a,
"rem": req.argv.r,
"ssl": req.ssl
}, req.argv)
/**
* Collaborators to add
* progress
*
* payload includes upload progress
*
*/
if (req.argv.a)
headers["add"] = req.argv.a;
.on("progress", function(payload){
try {
// we have two different display for the progress bars
var displays = {
"upload": helpers.smart('upload:').grey + ' [:bar] :percent',
"cdn": helpers.smart('CDN:').grey + ' [:bar] :percent',
"encrypt": helpers.smart('encryption:').grey + ' [:bar] :percent'
}
/**
* Collaborators to remove
*/
// create progress bar (if one doesnt exist)
progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], {
complete: '=', incomplete: ' ', width: 25, total: payload.total
})
if (req.argv.r)
headers["rem"] = req.argv.r;
// clear file name on last update
var file = payload.written >= payload.total ? "" : payload.file
// refresh view
if (!progressDone[payload.id]){
if (payload.written / payload.total === 1) progressDone[payload.id] = true
if (payload.written > payload.total) progressDone[payload.id] = true
progress[payload.id].update(payload.written / payload.total)
}
/**
* Perform build on server
*/
} catch(e){}
if (req.argv.build)
headers["build"] = req.argv.build;
})
/**
* Force Protocol?
* regionInfo
*
* payload includes information about surge edgenode regions
*
* {
* nsDomain: "surge.world",
* regions: {
* "yyz":{ "ip": "159.203.50.177", "country": "CA", "city": "Toronto" },
* "jfk":{ "ip": "159.203.159.100", "country": "US", "city": "New York" },
* "sfo":{ "ip": "138.197.235.123", "country": "US", "city": "San Francisco" },
* "lhr":{ "ip": "46.101.67.123", "country": "GB", "city": "London" },
* "ams":{ "ip": "188.166.132.94", "country": "NL", "city": "Amsterdam" },
* "fra":{ "ip": "138.68.112.220", "country": "DE", "city": "Frankfurt" },
* "sgp":{ "ip": "139.59.195.30", "country": "SG", "city": "Singapore" },
* "blr":{ "ip": "139.59.50.135", "country": "IN", "city": "Bangalore" }
* }
* }
*
*/
if (req.ssl !== null)
headers["ssl"] = req.ssl
// .on("progress", function(d){
// console.log(JSON.stringify(d))
// })
req.headers = headers
.on("info", function(payload){
req.info = payload
// helpers.displayServers(payload.instances)
// helpers.displayPreview(payload)
helpers.displayPublishInfo(payload)
})
/**
* Progress Bars
*/
* users
*
* payload includes list of collaborators
*
*/
var progress = {}
.on("users", function(payload){
helpers.log(helpers.smart("users:").grey, payload.users.join(", "))
})
/**
* Our upload "data" handle
*/
* cert
*
* payload includes information about SSL certificate
*
*/
var tick = function(tick){
//console.log("tick", tick.toString())
// .on("cert", function(payload){
// try{
// helpers.log(helpers.smart("encryption:").grey + " " + payload.data.issuer + " - " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey)
// } catch(e){
// helpers.space()
// helpers.log(helpers.smart("Error").red + (" - " + "please report error to support@surge.sh").grey)
// helpers.space()
// }
// })
if (Object.keys(progress).length > 1) global.ponr = true
//try {
.on("ssl", function(payload){
payload.certs.forEach(function(cert){
helpers.log(helpers.smart("CA:").grey + " " + (cert.issuer) + ( " (exp. " + cert.expInDays + " days)").grey)
})
})
try {
var payload = JSON.parse(tick.toString())
} catch(e) {
//console.log(e)
return;
}
/**
* collect
*
* payload includes information needed to subscribe to a plan that will then accept the upload
*
*/
if (payload.hasOwnProperty("type") && payload.type === "error") {
console.log()
console.log()
helpers.log(" Processing Error:".yellow, payload.error.filename).log()
console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno }))
helpers.log()
console.log(" ", payload.error.message)
console.log()
process.exit(1)
req.status = req.status || "Compile Error"
} else
if (payload.hasOwnProperty("type") && payload.type === "users") {
helpers.log(helpers.smart("users:").grey, payload.users.join(", "))
} else
if (payload.hasOwnProperty("type") && payload.type === "collect") {
//console.log("payload:collect", payload)
var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey
helpers.log()
if (payload.hasOwnProperty("perks")) {
helpers.log(msg += "\n\n Includes...".blue)
payload.perks.forEach(function(perk){
helpers.log((" - " + perk).blue)
})
helpers.log()
} else {
helpers.log(msg)
.on("collect", function(payload){
var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey
helpers.log()
if (payload.hasOwnProperty("perks")) {
helpers.log(msg += "\n\n Includes...".blue)
payload.perks.forEach(function(perk){ helpers.log((" - " + perk).blue); })
helpers.log()
} else {
helpers.log(msg)
}
req.plan = payload.plan.name
helpers.payment(req, payload.stripe_pk, payload.card)(function(paymentToken){
sdk.plan({
"plan": payload.plan.id,
"token": paymentToken,
"timestamp": ts
}, { "user": "token", "pass": req.creds.token }, function(errors, rsp){
if (errors) {
helpers.space()
helpers.trunc("Error".red + " - troubles switching plan".grey)
helpers.space()
}else{
helpers.space()
helpers.trunc(rsp.msg.grey)
helpers.space()
}
})
})
})
req.plan = payload.plan.name
helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){
/**
* unauthenticated
*
*/
// can this be passed in?
var uri = url.resolve(req.endpoint, "subscription")
request({
uri: uri,
method: "PUT",
auth: {
'user': 'token',
'pass': req.creds.token,
'sendImmediately': true
},
form: {
plan: payload.plan.id,
token: token,
timestamp: req.headers.timestamp
}
}, function(e,r,b){
if (r.statusCode == 201 || r.statusCode == 200) {
//console.log("here")
if (token === null) console.log()
// var sub = JSON.parse(b)
// console.log(" plan:".grey, sub.plan.name)
} else {
console.log("ERROR")
}
})
})
.on("unauthenticated", function(payload){
helpers.space()
helpers.trunc("Aborted".yellow + (" - local token has expired and cleared. please try again.").grey)
helpers.space()
localCreds(req.argv.endpoint).set(null)
process.exit(1)
})
// prompt for user
} else
if (payload.hasOwnProperty("type") && payload.type === "cert") {
try{
helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey)
} catch(e){
console.log("ERROR (please report error to support@surge.sh")
console.log(e)
}
} else
if (payload.hasOwnProperty("type") && payload.type === "ip") {
req.success = true
if (payload.data) {
helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip)
}
} else
/**
* forbidden
*
*/
if (payload.hasOwnProperty("type") && payload.type === "event_registration") {
if (payload.data) {
console.log()
console.log((" " + payload.data.event.name + " is set!").bold)
.on("forbidden", function(payload){
helpers.space()
helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey)
helpers.space()
process.exit(1)
})
if (payload.data.event.start)
console.log(" start:".grey, payload.data.event.start)
if (payload.data.event.end)
console.log(" end:".grey, payload.data.event.end)
if (payload.data.event.website)
console.log(" website:".grey, payload.data.event.website)
/**
* error (depricated)
*
* payload includes information needed to display compile errors to user
*
*/
if (payload.data.event.email)
console.log(" email:".grey, payload.data.event.email)
.on("error", function(payload){
console.log()
console.log()
helpers.log(" Processing Error:".yellow, payload.error.filename).log()
console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno }))
helpers.log()
console.log(" ", payload.error.message)
console.log()
req.status = req.status || "Compile Error"
process.exit(1)
})
if (payload.data.event.twitter)
console.log(" twitter:".grey, payload.data.event.twitter)
}
} else
if (payload.hasOwnProperty("type") && payload.type === "event_participant") {
if (payload.data) {
console.log()
/**
* fail
*
* the deployment has failed
*
*/
// end time
var out = [" You are in ".grey + payload.data.event.name.bold + "!".grey]
if (payload.data.event.endTime)
out.push("Competition ends in ".grey + payload.data.event.endTime.toString().green)
.on("fail", function(obj){
console.log()
console.log()
helpers.trunc("Error".red + " - Deployment did not succeed.".grey)
helpers.space()
process.exit(1)
})
// output
console.log(out.join(" "))
// help bar
out = [" w: ".grey + payload.data.event.website + " e: ".grey + payload.data.event.email]
// if (payload.data.event.website)
// console.log(" website:".grey, payload.data.event.website)
// if (payload.data.event.email)
// console.log(" email:".grey, payload.data.event.email)
if (payload.data.event.twitter)
out.push(" t: ".grey, payload.data.event.twitter)
console.log(out.join(""))
}
} else
if (payload.hasOwnProperty("type") && payload.type === "subscription") {
if (payload.data) {
//console.log(" plan:".grey, payload.data.plan.name)
} else {
//console.log(" plan:".grey, "Free")
}
} else {
try {
// we have two different display for the progress bars
var displays = {
"upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey,
"cdn": helpers.smart('CDN:').grey + ' [:bar] :percent'
}
// create progress bar (if one doesnt exist)
progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], {
complete: '=',
incomplete: ' ',
width: 20,
total: payload.total
})
// clear file name on last update
var file = payload.written >= payload.total
? ""
: payload.file
// refresh view
if (!(payload.id === "cdn" && payload.end)){
progress[payload.id].update(payload.written / payload.total, { file: file })
}
} catch(e){
//console.log(e)
}
}
// } catch(e) {
// console.log("CATCH", e)
// }
}
var verbose = function(line){
console.log("N", line.toString())
}
/**
* Upload
* success
*
* the deployment has failed
*
*/
// create upload
var uri = url.resolve(req.endpoint, req.domain)
var handshake = request.put(uri, { headers: headers })
// apply basic auth
handshake.auth("token", req.creds.token, true)
// catch errors
handshake.on('error', console.log)
// split replies on new line
handshake.pipe(split())
// output result
handshake.on("data", tick)
// done
handshake.on("end", function(){
if (req.success === true){
return next()
.on("success", function(){
helpers.space()
if (req.argv.stage){
helpers.trunc("Success!".green + (" - Preveiw available at " + (req.info.metadata.preview).underline).grey)
} else {
helpers.log()
helpers.log()
helpers.log(" Error".red + " - Deployment did not succeed.".grey)
helpers.log()
process.exit(1)
helpers.trunc("Success!".green + (" - Published to " + (req.domain).underline).grey)
}
helpers.space()
return next()
})
handshake.on("response", function(rsp){
if (rsp.statusCode == 403) {
helpers.log()
if(rsp.headers.hasOwnProperty("reason")){
helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"])
} else {
helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey)
}
helpers.log()
process.exit(1)
} else if (rsp.statusCode == 401) {
localCreds(req.argv.endpoint).set(null)
helpers.log()
if(rsp.headers.hasOwnProperty("reason")){
helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"])
} else {
helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.")
}
helpers.log()
process.exit(1)
// console.log(rsp.statusCode)
}
})
// Read Project
var project = fsReader({ 'path': req.project, ignoreFiles: [".surgeignore"] })
// we always ignore .git directory
project.addIgnoreRules(ignore)
// chain all this together...
project
.pipe(tar.Pack())
.pipe(zlib.Gzip())
.pipe(handshake)
}

@@ -1,2 +0,2 @@

var helpers = require("./util/helpers")
var helpers = require("../util/helpers")

@@ -6,32 +6,45 @@ module.exports = function(req, next){

helpers
//.log()
//.log(" " + req.configuration.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey)
.log()
.log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey)
.log(" Main Usage:".grey)
.log(" "+ req.configuration.name +" <project-path> <domain> publish project to domain")
.log()
.log(" Usage:".grey)
.log(" "+ req.config.name +" <project> <domain>")
.log(" Project Commands:".grey)
.log(" "+ req.configuration.name +" cutover <preview> change to latest revision")
.log(" "+ req.configuration.name +" discard <preview> remove revision from system")
.log(" "+ req.configuration.name +" rollfore <domain> change to next revision")
.log(" "+ req.configuration.name +" rollback <domain> change to previous revision")
.log(" "+ req.configuration.name +" teardown <domain> tear down a published project")
.log(" "+ req.configuration.name +" invite <domain> <emails> invites user to be a contributor")
.log(" "+ req.configuration.name +" revoke <domain> <emails> revokes contributor rights")
.log(" "+ req.configuration.name +" list <domain> list all revisions")
.log(" "+ req.configuration.name +" ssl <domain> <pempath> publish .pem file for SSL support")
.log()
.log(" Account Commands:".grey)
.log(" "+ req.configuration.name +" whoami show who you are logged in as")
.log(" "+ req.configuration.name +" login only performs authentication step")
.log(" "+ req.configuration.name +" logout expire local token")
.log(" "+ req.configuration.name +" token create token for automation purposes")
.log(" "+ req.configuration.name +" plan upgrade or downgrade account plan")
.log(" "+ req.configuration.name +" list list all projects")
.log()
.log(" Options:".grey)
.log(" -a, --add adds user to list of collaborators (email address)")
.log(" -r, --remove removes user from list of collaborators (email address)")
.log(" -V, --version show the version number")
.log(" -h, --help show this help message")
.log(" -s, --preview (when publishing) publishes preview")
.log(" -t, --token pass in token to use for call")
.log(" -V, --version show the version number")
.log(" -h, --help show this help message")
.log()
.log(" Additional commands:".grey)
.log(" "+ req.config.name +" whoami show who you are logged in as")
.log(" "+ req.config.name +" logout expire local token")
.log(" "+ req.config.name +" login only performs authentication step")
.log(" "+ req.config.name +" list list all domains you have access to")
.log(" "+ req.config.name +" teardown tear down a published project")
.log(" "+ req.config.name +" plan set account plan")
.log()
// .log(" Examples:".grey)
// .log(" surge ./www example.com")
// .log(" surge .")
.log(" Examples:".grey)
.log(" "+ req.configuration.name +" www example.com publishes www directory to example.com")
.log(" "+ req.configuration.name +" . example.com --preview publishes current directory for preview")
.log(" "+ req.configuration.name +" cutover example.com switches latest preview to production")
.log(" "+ req.configuration.name +" . _ publish current dir to random subdomain")
// .log()
.log(" Guides:".grey)
.log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey)
.log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey)
.log(" Additional help " + "surge.sh/help".underline.grey)
// .log(" Guides:".grey)
// .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey)
// .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey)
// .log(" Additional help " + "surge.sh/help".underline.grey)
.log()
.log(" When in doubt, run ".grey + req.config.name.green.underline + " from within your project directory.".grey)
.log(" When in doubt, run ".grey + req.configuration.name.green.underline + " from within your project directory.".grey)
.log()

@@ -38,0 +51,0 @@

var url = require("url")
var request = require("request")
var Table = require("cli-table3")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")
var surgeSDK = require("surge-sdk")
module.exports = function(req, next){
var options = {
'url': url.resolve(req.endpoint.format(), '/list'),
'method': 'get',
'auth': {
'user': "token",
'pass': req.creds.token,
'sendImmediately': true
}
var sdk = surgeSDK({
endpoint: req.endpoint.format(),
defaults: helpers.defaults
})
var listAllProjects = function(){
sdk.list({ user: "token", pass: req.creds.token }, function(error, projects){
var table = new Table({
//head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey],
chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': ''
, 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': ''
, 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': ''
, 'right': '' , 'right-mid': '' , 'middle': ' ' },
style: { 'padding-left': 0, 'padding-right': 2 }
})
var lastcmd = ""
if (projects.length != 0) {
projects.forEach(function(project){
//var perm = project.rev ? (project.rev + " ").grey + project.domain : ""
var perm = project.domain
if (project.planName) {
if (project.planName.indexOf("Standard") !== -1){
var pn = project.planName.grey
}else{
var pn = project.planName.blue
}
}
var row = [
perm || project.domain,
(project.timeAgoInWords || "").grey,
(project.cmd || "").grey,
(project.platform || "").grey,
pn || "",
//lastcmd !== project.cmd ? (project.cmd).grey : "",
]
table.push(row)
lastcmd = project.cmd
})
helpers.space()
helpers.log(table.toString())
} else {
helpers.space()
helpers.trunc(("Empty").grey)
}
return next()
})
}
request(options, function(e, r, obj){
if (e) throw e
var list = JSON.parse(obj)
var listSingleProject = function(){
var table = new Table({
//head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey],
chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': ''
, 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': ''
, 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': ''
, 'right': '' , 'right-mid': '' , 'middle': ' ' },
style: { 'padding-left': 1, 'padding-right': 1 }
sdk.list(req.argv["_"][0], { user: "token", pass: req.creds.token }, function(error, revisions){
revisions.reverse()
var table = new Table({
chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': ''
, 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': ''
, 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': ''
, 'right': '' , 'right-mid': '' , 'middle': ' ' },
style: { 'padding-left': 0, 'padding-right': 1 }
})
var lastcmd = ""
var terminalBreakpoint = 100
project = req.project
if (revisions.length != 0) {
revisions.forEach(function(revision){
if (revision.current){
var perm = revision.preview.blue.underline
var row = [
perm || project.domain.blue.underline,
revision.timeAgoInWords.blue.underline,
revision.email.blue.underline,
(revision.publicFileCount ? (revision.publicFileCount + " files").underline.blue : ""),
revision.friendlySize.blue.underline
]
if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue)
} else {
var perm = revision.preview.grey
var row = [
perm || project.domain,
revision.timeAgoInWords.grey,
revision.email.grey,
(revision.publicFileCount ? (revision.publicFileCount + " files").grey : ""),
revision.friendlySize.grey
]
if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey)
}
table.push(row)
lastcmd = project.cmd
})
helpers.space()
helpers.log(table.toString())
} else {
helpers.space()
helpers.trunc(("Empty").grey)
}
return next()
})
//console.log(req)
var lastcmd = ""
if (list.length != 0) {
list.forEach(function(project){
var perm = project.rev ? (project.rev + " ").grey + project.domain : ""
if (project.planName) {
if (project.planName.indexOf("Standard") !== -1){
var pn = project.planName.grey
}else{
var pn = project.planName.blue
}
}
var row = [
perm || project.domain,
project.timeAgoInWords.grey,
project.cmd.grey,
project.platform.grey,
pn || "",
//lastcmd !== project.cmd ? (project.cmd).grey : "",
]
table.push(row)
lastcmd = project.cmd
})
helpers.space()
helpers.log(table.toString())
} else {
helpers.space()
helpers.trunc(("Empty").grey)
}
next()
})
}
if (req.argv["_"].length > 0) {
listSingleProject()
} else {
listAllProjects()
}
}
var path = require("path")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")

@@ -4,0 +4,0 @@ module.exports = function(req, next){

@@ -1,3 +0,3 @@

var helpers = require("./util/helpers")
var localCreds = require("./util/creds.js")
var helpers = require("../util/helpers")
var localCreds = require("../util/creds.js")
var path = require("path")

@@ -4,0 +4,0 @@

var request = require("request")
var url = require("url")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")
var path = require("path")

@@ -6,0 +5,0 @@ var fs = require("fs")

var request = require("request")
var url = require("url")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")
var path = require("path")

@@ -6,0 +6,0 @@ var fs = require("fs")

var request = require("request")
var url = require("url")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")
var path = require("path")

@@ -5,0 +5,0 @@ var fs = require("fs")

var request = require("request")
var url = require("url")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")
var path = require("path")

@@ -9,26 +8,15 @@ var fs = require("fs")

var parseUrl = require("url-parse-as-address")
var surgeSDK = require("surge-sdk")
module.exports = function(req, next, abort){
var sdk = surgeSDK({
endpoint: req.endpoint.format(),
defaults: helpers.defaults
})
var remove = function(domain){
var options = {
'url': url.resolve(req.endpoint, domain),
'method': 'delete',
'auth': {
'user': "token",
'pass': req.creds.token,
'sendImmediately': true
}
}
request(options, function(e, r, obj){
if (e) throw e
if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) {
sdk.teardown(domain, { user: "token", pass: req.creds.token }, function(error, info){
if (error) {
helpers.space()
helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey)
helpers.space()
process.exit()
} else if (r.statusCode == 403) {
helpers.space()
helpers.trunc("Aborted".yellow + (" - Unable to remove " + domain.underline + ".").grey)

@@ -39,3 +27,3 @@ helpers.space()

helpers.space()
helpers.log(obj)
helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey)
helpers.space()

@@ -42,0 +30,0 @@ process.exit()

var path = require("path")
var helpers = require("./util/helpers")
var helpers = require("../util/helpers")

@@ -4,0 +4,0 @@ module.exports = function(req, next){

@@ -1,3 +0,3 @@

var helpers = require("./util/helpers")
var creds = require("./util/creds")
var helpers = require("../util/helpers")
var creds = require("../util/creds")

@@ -25,3 +25,3 @@ module.exports = function(req, next){

helpers.space()
helpers.trunc("You are not Authenticated. It is not true. You are not authed. You are not!".grey)
helpers.trunc("Not Authenticated!".grey)
helpers.space()

@@ -28,0 +28,0 @@ process.exit()

var middleware = require('./middleware')
var skin = require('./middleware/util/skin.js')
var help = require('./middleware/help')
var read = require("read")
var minimist = require('minimist')
// load help first so we can display and exit quickly
var help = require('./middleware/help')
// modules
var read = require("read")
var minimist = require('minimist')
var whitelist = require("./middleware/whitelist")
var endpoint = require("./middleware/endpoint")
var pkg = require("./middleware/pkg")
var version = require("./middleware/version")
var welcome = require("./middleware/welcome")
var creds = require("./middleware/creds")
var whoami = require("./middleware/whoami")
var tokencheck = require("./middleware/tokencheck")
var email = require("./middleware/email")
var auth = require("./middleware/auth")
var logout = require("./middleware/logout")
var help = require("./middleware/help")
var project = require("./middleware/project")
var size = require("./middleware/size")
var domain = require("./middleware/domain")
var protocol = require("./middleware/protocol")
var deploy = require("./middleware/deploy")
var domainOrSilent = require("./middleware/domainOrSilent")
var pemOrSilent = require("./middleware/pemOrSilent")
var ipaddress = require("./middleware/ipaddress")
var login = require("./middleware/login")
var shorthand = require("./middleware/shorthand")
var list = require("./middleware/list")
var token = require("./middleware/token")
var teardown = require("./middleware/teardown")
var discovery = require("./middleware/discovery")
var plus = require("./middleware/plus")
// utils
var helpers = require('./util/helpers')
var skin = require('./util/skin.js')
var subscription= require("./middleware/subscription")
var plans = require("./middleware/plans")
var plan = require("./middleware/plan")
var payment = require("./middleware/payment")
var card = require("./middleware/card")
var setcard = require("./middleware/setcard")
var subscribe = require("./middleware/subscribe")
// mini-libs that return middleware
var auth = require("./middleware/_shared/auth")
var discovery = require("./middleware/_shared/discovery")
var ssl = require("./middleware/ssl")
var log = require("./middleware/log")
var helpers = require('./middleware/util/helpers')
// middleware
var whitelist = require("./middleware/_shared/_whitelist")
var endpoint = require("./middleware/_shared/_endpoint")
var pkg = require("./middleware/_shared/_pkg")
var version = require("./middleware/_shared/_version")
var welcome = require("./middleware/_shared/_welcome")
var creds = require("./middleware/_shared/_creds")
var tokencheck = require("./middleware/_shared/_tokencheck")
var email = require("./middleware/_shared/_email")
var project = require("./middleware/_shared/_project")
var size = require("./middleware/_shared/_size")
var domain = require("./middleware/_shared/_domain")
var protocol = require("./middleware/_shared/_protocol")
var domainOrSilent = require("./middleware/_shared/_domainOrSilent")
var pemOrSilent = require("./middleware/_shared/_pemOrSilent")
var ipaddress = require("./middleware/_shared/_ipaddress")
var shorthand = require("./middleware/_shared/_shorthand")
var subscription = require("./middleware/_shared/_subscription")
var plans = require("./middleware/_shared/_plans")
var payment = require("./middleware/_shared/_payment")
var setcard = require("./middleware/_shared/_setcard")
var subscribe = require("./middleware/_shared/_subscribe")
var log = require("./middleware/_shared/_log")
// also middleware but contains main functionality for command
var logout = require("./middleware/logout")
var login = require("./middleware/login")
var whoami = require("./middleware/whoami")
var deploy = require("./middleware/deploy")
var list = require("./middleware/list")
var token = require("./middleware/token")
var teardown = require("./middleware/teardown")
var plus = require("./middleware/plus")
var plan = require("./middleware/plan")
var card = require("./middleware/_shared/_card")
var ssl = require("./middleware/ssl")
var select = require("./middleware/select")
var rollback = require("./middleware/rollback")
var rollfore = require("./middleware/rollfore")
var cutover = require("./middleware/cutover")
var bust = require("./middleware/bust")
var discard = require("./middleware/discard")
var invite = require("./middleware/invite")
var revoke = require("./middleware/revoke")
var encrypt = require("./middleware/encrypt")
var certs = require("./middleware/certs")
var dns = require("./middleware/dns")
var config = require("./middleware/config")

@@ -79,11 +95,11 @@

module.exports = function(config){
config = config || {}
module.exports = function(configuration){
configuration = configuration || {}
var ep = config.endpoint
? config.endpoint
: config.platform ? "https://surge." + config.platform : 'https://surge.surge.sh'
var ep = configuration.endpoint
? configuration.endpoint
: configuration.platform ? "https://surge." + configuration.platform : 'https://surge.surge.sh'
config.platform = config.platform || "surge.sh"
config.name = config.name || "surge"
configuration.platform = configuration.platform || "surge.sh"
configuration.name = configuration.name || "surge"

@@ -96,5 +112,7 @@ var options = {

a: 'add',
r: 'remove'
r: 'remove',
s: 'stage',
m: 'message'
},
default: { e: ep }
default: { e: ep, s: false }
}

@@ -118,13 +136,43 @@

var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl", "plan", "card"]
// we accept --preview
if (argv.preview) argv.stage = argv.s = argv.preview
var commands = [
"login",
"logout",
"whoami",
"list",
"rollback",
"rollfore",
"cutover",
"discard",
"publish",
"teardown",
"select",
"token",
"plus",
"ssl",
"plan",
"card",
"invite",
"revoke",
"encrypt",
"config",
"dns",
"zone",
"certs",
"bust"
]
if (commands.indexOf(cmd) !== -1) {
argv._.shift()
surge[cmd]({})(argv)
} else if(config.default && commands.indexOf(config.default) !== -1 ){
surge[config.default]({})(argv)
} else if(configuration.default && commands.indexOf(configuration.default) !== -1 ){
surge[configuration.default]({})(argv)
}
}
var stub = function(req, next){ next(); }
var stub = function(req, next){
return next();
}

@@ -143,3 +191,3 @@ surge.token = function(hooks){

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -163,3 +211,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -180,3 +228,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -201,7 +249,7 @@ read: read

var onion = [
whitelist, endpoint, pkg, help, version, space,
endpoint, pkg, help, version, space,
preAuth, creds, welcome, auth, authInfo, postAuth, shorthand,
preProject, project, postProject,
preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain,
preSize, size, postSize,
preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain,
prePublish, protocol, deploy, postPublish, ipaddress

@@ -212,3 +260,3 @@ ]

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -229,3 +277,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -249,3 +297,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -257,2 +305,135 @@ read: read

surge.rollback = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth,
rollback, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.rollfore = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth,
rollfore, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.switch = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth, shorthand,
cut, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.cutover = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth,
cutover, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.discard = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth,
discard, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.bust = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth,
bust, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.select = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, welcome, auth, postAuth, shorthand,
select, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.teardown = function(hooks){

@@ -271,3 +452,3 @@ var hooks = hooks || {}

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -292,3 +473,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -315,3 +496,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -336,3 +517,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -357,3 +538,3 @@ read: read

skin({
config: config,
configuration: configuration,
argv: argv,

@@ -365,4 +546,145 @@ read: read

surge.invite = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version, space,
preAuth, creds, auth, postAuth,
invite, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.revoke = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version, space,
preAuth, creds, auth, postAuth,
revoke, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
// endpoint, pkg, help, version, space,
// preAuth, creds, welcome, auth, authInfo, postAuth, shorthand,
// preProject, project, postProject,
// preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain,
// preSize, size, postSize,
// prePublish, protocol, deploy, postPublish, ipaddress
surge.encrypt = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version, space,
preAuth, creds, welcome, auth, authInfo, postAuth,
// discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain,
encrypt, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.certs = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version, space,
preAuth, creds, auth, postAuth,
certs, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.config = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
endpoint, pkg, help, version, space,
preAuth, creds, auth, postAuth,
config, space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.dns = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, auth, postAuth,
dns("dns"), space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
surge.zone = function(hooks){
var hooks = hooks || {}
var preAuth = hooks.preAuth || stub
var postAuth = hooks.postAuth || stub
var onion = [
whitelist, endpoint, pkg, help, version,
preAuth, creds, auth, postAuth,
dns("zone"), space
]
return function(){
var argv = parse(arguments[arguments.length -1])
skin({
configuration: configuration,
argv: argv,
read: read
}, onion)
}
}
return surge
}
{
"name": "surge",
"version": "0.21.7",
"version": "0.22.0",
"description": "CDN for front-end developers",
"author": "Brock Whitten <brock@chloi.io>",
"bin": "./lib/cli.js",
"bin": "./bin/surge",
"dependencies": {

@@ -15,9 +15,7 @@ "cli-table3": "^0.5.1",

"netrc": "0.1.4",
"progress": "1.1.8",
"progress": "2.0.3",
"read": "1.0.5",
"request": "^2.88.0",
"split": "0.3.1",
"surge-fstream-ignore": "^1.0.6",
"surge-ignore": "0.2.0",
"tarr": "1.1.0",
"surge-sdk": "0.3.0",
"url-parse-as-address": "1.0.0"

@@ -27,3 +25,3 @@ },

"commander": "2.9.0",
"mocha": "^8.2.1",
"mocha": "8.3.0",
"nixt": "^0.5.1",

@@ -30,0 +28,0 @@ "should": "7.1.0",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc