diff --git a/CHANGELOG.md b/CHANGELOG.md index d5b8b8af5..894a2444b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## v0.3.0 [UNRELEASED] +## v0.3.0 [2017-03-21] ### Breaking changes diff --git a/README.md b/README.md index 98d06ef01..2b4154df0 100644 --- a/README.md +++ b/README.md @@ -34,13 +34,13 @@ Native Functions Each native function can be used as part of a `Transform` step in the pipeline. -* [goja](./adaptor/function/gojajs) -* [omit](./adaptor/function/omit) -* [otto](./adaptor/function/ottojs) -* [pick](./adaptor/function/pick) -* [pretty](./adaptor/function/pretty) -* [rename](./adaptor/function/rename) -* [skip](./adaptor/function/skip) +* [goja](./function/gojajs) +* [omit](./function/omit) +* [otto](./function/ottojs) +* [pick](./function/pick) +* [pretty](./function/pretty) +* [rename](./function/rename) +* [skip](./function/skip) Commands -------- diff --git a/function/gojajs/README.md b/function/gojajs/README.md new file mode 100644 index 000000000..d6a1f748e --- /dev/null +++ b/function/gojajs/README.md @@ -0,0 +1,71 @@ +# goja function + +`goja()` creates a JavaScript VM that receives and sends data through the defined javascript function for processing. The parameter passed to the function has been converted from a go map[string]interface{} to a JS object of the following form: + +```JSON +{ + "ns":"message.namespace", + "ts":12345, // time represented in milliseconds since epoch + "op":"insert", + "data": { + "id": "abcdef", + "name": "hello world" + } +} +``` + +***NOTE*** when working with data from MongoDB, the _id field will be represented in the following fashion: + +```JSON +{ + "ns":"message.namespace", + "ts":12345, // time represented in milliseconds since epoch + "op":"insert", + "data": { + "_id": { + "$oid": "54a4420502a14b9641000001" + }, + "name": "hello world" + } +} +``` + +### configuration + +```javascript +goja({"filename": "/path/to/transform.js"}) +``` + +### example + +message in +```JSON +{ + "_id": 0, + "name": "transporter", + "type": "function" +} +``` + +config +```javascript +goja({"filename":"transform.js"}) +``` + +transform function (i.e. `transform.js`) +```javascript +function transform(doc) { + doc["data"]["name_type"] = doc["data"]["name"] + " " + doc["data"]["type"]; + return doc +} +``` + +message out +```JSON +{ + "_id": 0, + "name": "transporter", + "type": "function", + "name_type": "transporter function" +} +``` \ No newline at end of file diff --git a/function/ottojs/README.md b/function/ottojs/README.md new file mode 100644 index 000000000..15fdc0994 --- /dev/null +++ b/function/ottojs/README.md @@ -0,0 +1,73 @@ +# otto function + +`otto()` creates a JavaScript VM that receives and sends data through the defined javascript function for processing. The parameter passed to the function has been converted from a go map[string]interface{} to a JS object of the following form: + +```JSON +{ + "ns":"message.namespace", + "ts":12345, // time represented in milliseconds since epoch + "op":"insert", + "data": { + "id": "abcdef", + "name": "hello world" + } +} +``` + +***NOTE*** when working with data from MongoDB, the _id field will be represented in the following fashion: + +```JSON +{ + "ns":"message.namespace", + "ts":12345, // time represented in milliseconds since epoch + "op":"insert", + "data": { + "_id": { + "$oid": "54a4420502a14b9641000001" + }, + "name": "hello world" + } +} +``` + +### configuration + +```javascript +otto({"filename": "/path/to/transform.js"}) +// transform() is also available for backwards compatibility reasons but may be removed in future versions +// transform({"filename": "/path/to/transform.js"}) +``` + +### example + +message in +```JSON +{ + "_id": 0, + "name": "transporter", + "type": "function" +} +``` + +config +```javascript +otto({"filename":"transform.js"}) +``` + +transform function (i.e. `transform.js`) +```javascript +module.exports=function(doc) { + doc["data"]["name_type"] = doc["data"]["name"] + " " + doc["data"]["type"]; + return doc +} +``` + +message out +```JSON +{ + "_id": 0, + "name": "transporter", + "type": "function", + "name_type": "transporter function" +} +``` \ No newline at end of file