💾 Archived View for gmi.noulin.net › gitRepositories › git-off › file › src › node_modules › aws-sdk… captured on 2024-09-29 at 00:59:04. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
console (3648B)
1 #!/usr/bin/env node 2 3 var repl = require('repl').start('aws-sdk> '), 4 replEval = repl.eval, 5 defaultOptions = { 6 logger: process.stdout, 7 region: process.env.AWS_REGION || 'us-east-1' 8 }; 9 10 11 function customEval(cmd, context, filename, callback) { 12 replEval(cmd, context, filename, function(err, value) { 13 if (err) { 14 callback(err, null); 15 return; 16 } 17 18 function consoleDataExtraction(resp) { 19 context.data = resp.data; 20 context.error = resp.error; 21 callback(resp.error, resp.data); 22 } 23 24 if (value && value.constructor === AWS.Request && !value.__hasBeenEval__) { 25 26 try { 27 value.__hasBeenEval__ = true; 28 if (value.response) value.response.__hasBeenEval__ = true; 29 context.request = value; 30 context.response = value.response || null; 31 context.data = null; 32 context.error = null; 33 if (value._asm.currentState === 'complete' && value.response) { 34 context.data = value.response.data || null; 35 context.error = value.response.error || null; 36 callback(value.response.error, value.response.data); 37 } else { 38 value.on('complete', consoleDataExtraction); 39 if (!value.__hasBeenSent__) { 40 if (context.autoSend) { 41 value.send(); 42 } else { 43 callback(null, value); 44 } 45 } 46 } 47 } catch (err2) { 48 callback(err2, null); 49 return; 50 } 51 52 } else if (value && value.constructor === AWS.Response && !value.__hasBeenEval__) { 53 try { 54 value.__hasBeenEval__ = true; 55 context.response = value; 56 context.request = value.request || null; 57 context.data = value.data || null; 58 context.error = value.error || null; 59 if (value.request) { 60 value.request.__hasBeenEval__ = true; 61 if (value.request._asm.currentState === 'complete') { 62 callback(value.error, value.data); 63 } else { 64 value.request.on('complete', consoleDataExtraction); 65 } 66 } 67 } catch (err2) { 68 callback(err2, null); 69 return; 70 } 71 } else { 72 callback(null, value); 73 } 74 }); 75 } 76 77 var AWS = repl.context.AWS = require('../lib/aws'); 78 repl.eval = customEval; 79 80 // context variables 81 repl.context.data = null; 82 repl.context.error = null; 83 repl.context.request = null; 84 repl.context.response = null; 85 86 // setup REPL history 87 try { 88 var replHistory = require('repl.history'); 89 replHistory(repl, process.env.HOME + '/.node_history'); 90 } catch (e) { 91 console.log("Missing repl.history package, history will not be supported."); 92 console.log(" Type `npm install repl.history` to enable history."); 93 } 94 95 // modify Request.prototype.send listener to track if the listener has been called 96 var sendListener = AWS.Request.prototype.send; 97 AWS.Request.prototype.send = function(callback) { 98 this.__hasBeenSent__ = true; 99 return sendListener.call(this, callback); 100 }; 101 102 // flag to indicate that requests should be sent when callback is not provided 103 // by default this is on, but can be turned off by setting `autoSend = false` 104 repl.context.autoSend = true; 105 106 // load services as defined instances 107 for (var key in AWS) { 108 var id = AWS[key].serviceIdentifier; 109 if (id) { 110 if (id === 'cloudsearchdomain' || id === 'iotdata') continue; // this required an explicit endpoint 111 112 var svcClass = AWS[key]; 113 var svc = new svcClass(defaultOptions); 114 svc.with = function(config) { 115 return new this.constructor.__super__(AWS.util.merge(this.config, config)); 116 }; 117 repl.context[svcClass.serviceIdentifier] = svc; 118 } 119 }