feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
73
api.hyungi.net/node_modules/amp-message/Readme.md
generated
vendored
Normal file
73
api.hyungi.net/node_modules/amp-message/Readme.md
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
|
||||
# amp-message
|
||||
|
||||
High level [AMP](https://github.com/visionmedia/node-amp) `Message` implementation for manipulating, encoding and decoding AMP messages.
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
$ npm install amp-message
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
Encoding a message:
|
||||
|
||||
```js
|
||||
var Message = require('amp-message');
|
||||
|
||||
var msg = new Message;
|
||||
|
||||
console.log(msg.toBuffer());
|
||||
// => <Buffer 10>
|
||||
|
||||
msg.push('foo');
|
||||
msg.push('bar');
|
||||
msg.push('baz');
|
||||
console.log(msg.toBuffer());
|
||||
// => <Buffer 13 00 05 73 3a 66 6f 6f 00 05 73 3a 62 61 72 00 05 73 3a 62 61 7a>
|
||||
|
||||
msg.push({ foo: 'bar' });
|
||||
console.log(msg.toBuffer());
|
||||
// => <Buffer 14 00 05 73 3a 66 6f 6f 00 05 73 3a 62 61 72 00 05 73 3a 62 61 7a 00 0f 6a 3a 7b 22 66 6f 6f 22 3a 22 62 61 72 22 7d>
|
||||
|
||||
msg.push(new Buffer('image data'));
|
||||
console.log(msg.toBuffer());
|
||||
// => <Buffer 15 00 05 73 3a 66 6f 6f 00 05 73 3a 62 61 72 00 05 73 3a 62 61 7a 00 0f 6a 3a 7b 22 66 6f 6f 22 3a 22 62 61 72 22 7d 00 0a 69 6d 61 67 65 20 64 61 74 ... >
|
||||
```
|
||||
|
||||
Decoding a message:
|
||||
|
||||
```js
|
||||
var Message = require('..');
|
||||
|
||||
var msg = new Message;
|
||||
|
||||
msg.push('foo')
|
||||
msg.push({ hello: 'world' })
|
||||
msg.push(new Buffer('hello'))
|
||||
|
||||
var other = new Message(msg.toBuffer());
|
||||
|
||||
console.log(other.shift());
|
||||
console.log(other.shift());
|
||||
console.log(other.shift());
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### Message
|
||||
|
||||
Initialize an empty message.
|
||||
|
||||
### Message(buffer)
|
||||
|
||||
Decode the `buffer` AMP message to populate the `Message`.
|
||||
|
||||
### Message(args)
|
||||
|
||||
Initialize a messeage populated with `args`.
|
||||
|
||||
# License
|
||||
|
||||
MIT
|
||||
170
api.hyungi.net/node_modules/amp-message/index.js
generated
vendored
Normal file
170
api.hyungi.net/node_modules/amp-message/index.js
generated
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var fmt = require('util').format;
|
||||
var amp = require('amp');
|
||||
|
||||
/**
|
||||
* Proxy methods.
|
||||
*/
|
||||
|
||||
var methods = [
|
||||
'push',
|
||||
'pop',
|
||||
'shift',
|
||||
'unshift'
|
||||
];
|
||||
|
||||
/**
|
||||
* Expose `Message`.
|
||||
*/
|
||||
|
||||
module.exports = Message;
|
||||
|
||||
/**
|
||||
* Initialize an AMP message with the
|
||||
* given `args` or message buffer.
|
||||
*
|
||||
* @param {Array|Buffer} args or blob
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function Message(args) {
|
||||
if (Buffer.isBuffer(args)) args = decode(args);
|
||||
this.args = args || [];
|
||||
}
|
||||
|
||||
// proxy methods
|
||||
|
||||
methods.forEach(function(method){
|
||||
Message.prototype[method] = function(){
|
||||
return this.args[method].apply(this.args, arguments);
|
||||
};
|
||||
});
|
||||
|
||||
/**
|
||||
* Inspect the message.
|
||||
*
|
||||
* @return {String}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Message.prototype.inspect = function(){
|
||||
return fmt('<Message args=%d size=%d>',
|
||||
this.args.length,
|
||||
this.toBuffer().length);
|
||||
};
|
||||
|
||||
/**
|
||||
* Return an encoded AMP message.
|
||||
*
|
||||
* @return {Buffer}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Message.prototype.toBuffer = function(){
|
||||
return encode(this.args);
|
||||
};
|
||||
|
||||
/**
|
||||
* Decode `msg` and unpack all args.
|
||||
*
|
||||
* @param {Buffer} msg
|
||||
* @return {Array}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function decode(msg) {
|
||||
var args = amp.decode(msg);
|
||||
|
||||
for (var i = 0; i < args.length; i++) {
|
||||
args[i] = unpack(args[i]);
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode and pack all `args`.
|
||||
*
|
||||
* @param {Array} args
|
||||
* @return {Buffer}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function encode(args) {
|
||||
var tmp = new Array(args.length);
|
||||
|
||||
for (var i = 0; i < args.length; i++) {
|
||||
tmp[i] = pack(args[i]);
|
||||
}
|
||||
|
||||
return amp.encode(tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Pack `arg`.
|
||||
*
|
||||
* @param {Mixed} arg
|
||||
* @return {Buffer}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function pack(arg) {
|
||||
// blob
|
||||
if (Buffer.isBuffer(arg)) return arg;
|
||||
|
||||
// string
|
||||
if ('string' == typeof arg) return new Buffer('s:' + arg);
|
||||
|
||||
// undefined
|
||||
if (arg === undefined) arg = null;
|
||||
|
||||
// json
|
||||
return new Buffer('j:' + JSON.stringify(arg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Unpack `arg`.
|
||||
*
|
||||
* @param {Buffer} arg
|
||||
* @return {Mixed}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function unpack(arg) {
|
||||
// json
|
||||
if (isJSON(arg)) return JSON.parse(arg.slice(2));
|
||||
|
||||
// string
|
||||
if (isString(arg)) return arg.slice(2).toString();
|
||||
|
||||
// blob
|
||||
return arg;
|
||||
}
|
||||
|
||||
/**
|
||||
* String argument.
|
||||
*/
|
||||
|
||||
function isString(arg) {
|
||||
return 115 == arg[0] && 58 == arg[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON argument.
|
||||
*/
|
||||
|
||||
function isJSON(arg) {
|
||||
return 106 == arg[0] && 58 == arg[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* ID argument.
|
||||
*/
|
||||
|
||||
function isId(arg) {
|
||||
return 105 == arg[0] && 58 == arg[1];
|
||||
}
|
||||
26
api.hyungi.net/node_modules/amp-message/package.json
generated
vendored
Normal file
26
api.hyungi.net/node_modules/amp-message/package.json
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "amp-message",
|
||||
"version": "0.1.2",
|
||||
"repository": "visionmedia/node-amp-message",
|
||||
"description": "Higher level Message object for the AMP protocol",
|
||||
"keywords": [
|
||||
"amp",
|
||||
"actor",
|
||||
"message",
|
||||
"messaging",
|
||||
"zmq",
|
||||
"zeromq"
|
||||
],
|
||||
"dependencies": {
|
||||
"amp": "0.3.1"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"devDependencies": {
|
||||
"matcha": "~0.4.0",
|
||||
"mocha": "*",
|
||||
"should": "*"
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
Reference in New Issue
Block a user