From 1e59ca3bace6e9fbe53b1c9354cecb7604ce285b Mon Sep 17 00:00:00 2001 From: BRAINS YUM <43896676+McFlat@users.noreply.github.com> Date: Sun, 14 Oct 2018 12:48:08 -0500 Subject: add REPL in server/tools/repl.ts (#1248) --- support/doc/tools.md | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) (limited to 'support') diff --git a/support/doc/tools.md b/support/doc/tools.md index 8efb0c13d..0df8c9f6c 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -206,3 +206,134 @@ To fix this, you have to run: ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host ``` + +### REPL ([Read Eval Print Loop](https://nodejs.org/docs/latest-v8.x/api/repl.html)) + +If you want to interact with the application libraries and objects, there is a REPL for that. + +usage: `node ./dist/server/tools/repl.js` + +"The default evaluator will, by default, assign the result of the most recently evaluated expression to the special variable `_` (underscore). Explicitly setting `_` to a value will disable this behavior." + +- type `.help` to list commands available in the repl, notice it starts with a dot +- type `.exit` to exit, note that you still have to press CTRL-C to actually exit, or press CTRL-C (3 times) without typing `.exit` to exit +- type `context` to list all available objects and libraries in the context, note: `Promise` is also available but it's not listed in the context, in case you need promises for something +- type `env` to see the loaded environment variables +- type `path` to access path library +- type `lodash` to access lodash library +- type `uuidv1` to access uuid/v1 library +- type `uuidv3` to access uuid/v3 library +- type `uuidv4` to access uuid/v4 library +- type `uuidv5` to access uuid/v5 library +- type `YoutubeDL` to access youtube-dl library +- type `cli` to access the cli helpers object +- type `logger` to access the logger; if you log to it, it will write to stdout and to the peertube.log file +- type `constants` to access the constants loaded by the server +- type `coreUtils` to access the core-utils helpers object +- type `ffmpegUtils` to access the ffmpeg-utils helpers object +- type `peertubeCryptoUtils` to access the peertube-crypto helpers object +- type `signupUtils` to access the signup helpers object +- type `utils` to access the utils helpers object +- type `YoutubeDLUtils` to access the youtube-dl helpers object +- type `sequelizeTypescript` to access sequelizeTypescript +- type `modelsUtils` to access the models/utils +- type `models` to access the shortcut to sequelizeTypescript.models +- type `transaction` to access the shortcut to sequelizeTypescript.transaction +- type `query` to access the shortcut to sequelizeTypescript.query +- type `queryInterface` to access the shortcut to sequelizeTypescript.queryInterface + +#### .help + +``` +PeerTube [1.0.0] (b10eb595)> .help +.break Sometimes you get stuck, this gets you out +.clear Break, and also clear the local context +.editor Enter editor mode +.exit Exit the repl +.help Print this help message +.load Load JS from a file into the REPL session +.r Reset REPL +.reset Reset REPL +.save Save all evaluated commands in this REPL session to a file +PeerTube [1.0.0] (b10eb595)> +``` + +#### Lodash example + +``` +PeerTube [1.0.0] (b10eb595)> lodash.keys(context) +[ 'global', + 'console', + 'DTRACE_NET_SERVER_CONNECTION', + 'DTRACE_NET_STREAM_END', + 'DTRACE_HTTP_SERVER_REQUEST', + 'DTRACE_HTTP_SERVER_RESPONSE', + 'DTRACE_HTTP_CLIENT_REQUEST', + 'DTRACE_HTTP_CLIENT_RESPONSE', + 'process', + 'Buffer', + 'clearImmediate', + 'clearInterval', + 'clearTimeout', + 'setImmediate', + 'setInterval', + 'setTimeout', + 'XMLHttpRequest', + 'compact2string', + 'module', + 'require', + 'path', + 'repl', + 'context', + 'env', + 'lodash', + 'uuidv1', + 'uuidv3', + 'uuidv4', + 'uuidv5', + 'cli', + 'logger', + 'constants', + 'Sequelize', + 'sequelizeTypescript', + 'modelsUtils', + 'models', + 'transaction', + 'query', + 'queryInterface', + 'YoutubeDL', + 'coreUtils', + 'ffmpegUtils', + 'peertubeCryptoUtils', + 'signupUtils', + 'utils', + 'YoutubeDLUtils' ] +PeerTube [1.0.0] (b10eb595)> +``` + +#### YoutubeDL example +``` +YoutubeDL.getInfo('https://www.youtube.com/watch?v=I5ZN289jjDo', function(err, data) {console.log(err, data)}) +``` + +#### Models examples +``` +PeerTube [1.0.0] (b10eb595)> new models.ActorModel({id: 3}).getVideoChannel().then(function(data){console.log(data.dataValues.name)}) +Promise { + _bitField: 0, + _fulfillmentHandler0: undefined, + _rejectionHandler0: undefined, + _promise0: undefined, + _receiver0: undefined } +PeerTube [1.0.0] (b10eb595)> Main root channel +PeerTube [1.0.0] (b10eb595)> let out; new models.UserModel({id: 1}).getAccount().then(function (data) {out = data.dataValues.id}) +Promise { + _bitField: 0, + _fulfillmentHandler0: undefined, + _rejectionHandler0: undefined, + _promise0: undefined, + _receiver0: undefined } +PeerTube [1.0.0] (b10eb595)> out +2 +PeerTube [1.0.0] (b10eb595)> +``` -- cgit v1.2.3