{"_id":"o-m-m","_rev":"9-8d8d5f80436c442833f3355091331516","name":"o-m-m","description":"Omm maps between rich objects and documents.","dist-tags":{"latest":"0.0.33"},"versions":{"0.0.27":{"name":"o-m-m","version":"0.0.27","main":"src/omm.js","typings":"src/omm.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.27","_shasum":"15da541feec0803f43180c7e63b5c3273bd589e7","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"15da541feec0803f43180c7e63b5c3273bd589e7","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.27.tgz","integrity":"sha512-NMRkQvmYJE9IIlO4cmS823jrHW/03mUa9vSjKmno4DS+URF+g2gJOZJIZg6R9qKs6KEUl2s3o4GccObyTFXjAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBLgG9bekJXzMvrQMXm+QcRL2hojgzoPE41iA+u9EjOrAiBkwaDEdnNgSWtS/s4fkzbySBNsUFZ6W6C5LWnvCH5xPA=="}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.27.tgz_1458823024271_0.661521662492305"}},"0.0.28":{"name":"o-m-m","version":"0.0.28","main":"src/omm.js","typings":"src/omm.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.28","_shasum":"2a35d0c5ef626436cdc86004165f9ba3f1c64197","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"2a35d0c5ef626436cdc86004165f9ba3f1c64197","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.28.tgz","integrity":"sha512-iAhCJloUCnmuKgVw/QSh/kQS5z7H/6fNJaOdqW37356ONLw5KoE0W4QAOp5j3rJVyDSHzRpWU0mtBkOxh+tfYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQLl363Kr4PNfLiZowCttxW+B8k/pm65F3UQwNR0J4RQIhAL27ZYbJ62CyLc8kS8yw7/HwJFs0lamzMHn7d8aOlO2n"}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.28.tgz_1458830110991_0.8089331106748432"}},"0.0.29":{"name":"o-m-m","version":"0.0.29","main":"src/omm.js","typings":"src/omm.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.29","_shasum":"eff33ae4d1f6d53925e2809dcfc2bb8fe80f09f6","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"eff33ae4d1f6d53925e2809dcfc2bb8fe80f09f6","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.29.tgz","integrity":"sha512-1GuV6DdDEkMEaDFfsEnTjk+uQfqoldJCAz9iCIUWn0dQTSbrL6AkKqqBuOJ7tpqa4mnz3ewEz4gKpPmRTF8DNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZSwqahrCunBjTq/84i40kj0H2iYpCcdFPpkGHxrPE3AiEAjY/6WHb78x54x7fzyA5vi/DM4gJHtzdu4iCq0rBkG8I="}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.29.tgz_1459940819894_0.9785226827953011"}},"0.0.30":{"name":"o-m-m","version":"0.0.30","main":"src/omm.js","typings":"src/omm.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.30","_shasum":"91ed87f63a4fe3acd155fe7c080e3730eacc9ab2","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"91ed87f63a4fe3acd155fe7c080e3730eacc9ab2","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.30.tgz","integrity":"sha512-s4RvG23OTgSDF9aOwaIkHAl1mTi4zawn8mRDp+nTKITNEB7KsBJEU2kVkIYeMzqxbOBbdqnDdRX/0rGJQ9qUcg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsSEzuVK/hfVCP/44QolqCSUpp20Y5T0D2uMV8xmOAlQIhAPOCFj29kw9ajOoBjmr23ahMnkEfHORlvcpky1mrSUpD"}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.30.tgz_1459960481288_0.31210144865326583"}},"0.0.31":{"name":"o-m-m","version":"0.0.31","main":"src/omm.js","typings":"src/omm.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.31","_shasum":"df57e6dd19e7fd2dcfd4cfeba25fd6f6afee40c0","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"df57e6dd19e7fd2dcfd4cfeba25fd6f6afee40c0","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.31.tgz","integrity":"sha512-D5DKb1meAJ8Ae5zpnP2LFNwALYHQlJ7Qjrkj2/F5sIuXCQKS7ZiqGSSDKoVLH4SWDnmV5fAVCwxpClIAvUp6UQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD339EjhqxE/sAFY6zq47anuwsvhK2DZpjPO//JLkWkTQIgIpymlEkBoLhdlc/6Dy8BSK0T5K2U9fMguUkzDY495xE="}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.31.tgz_1461085700162_0.24212837521918118"}},"0.0.32":{"name":"o-m-m","version":"0.0.32","main":"build/src/omm.js","typings":"build/src/omm.d.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.32","_shasum":"1a137f5128a94adf2132ed19bd2452d35086ffc4","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"1a137f5128a94adf2132ed19bd2452d35086ffc4","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.32.tgz","integrity":"sha512-WB5SJZ/xjZ/vqMWNZ8G+th+1GZlVsyxwo/oKoGgoVKaQzuL6Aa3WEaRVjKngREDQnsRACROpmqgZPRP8lL2Ydw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDx96CIEaJ43pFy+bnenHxh9rE+sXnxeN0eHcqJxD8BNwIgaLps0WIlzH+ZpMMLz/p8HiBSJqKE6wdgyrtwwrC/Vn8="}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.32.tgz_1462286294782_0.17233985429629683"}},"0.0.33":{"name":"o-m-m","version":"0.0.33","main":"build/src/omm.js","typings":"build/src/omm.d.ts","scripts":{"test":"./node_modules/jasmine/bin/jasmine.js"},"devDependencies":{"deasync":"^0.1.4","jasmine":"^2.4.1","underscore":"^1.8.3"},"description":"Omm maps between rich objects and documents.","_id":"o-m-m@0.0.33","_shasum":"2aaf672299eb2433dc7c53cf4235a949d66e2954","_from":".","_npmVersion":"3.8.9","_nodeVersion":"4.4.1","_npmUser":{"name":"bvanheukelom","email":"bert@vanheukelom.de"},"dist":{"shasum":"2aaf672299eb2433dc7c53cf4235a949d66e2954","tarball":"https://registry.npmjs.org/o-m-m/-/o-m-m-0.0.33.tgz","integrity":"sha512-zW7AFY7pF43yYLMy6IZgtnCstsdVwDur8OT0OaXF5Th95XjECjvWeC2htfCacsec4EkGK4gVKQeYuD2qGLEENw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC6vHc2PbHEz2UWgiKqcSx04lc78LZXpoe4X/jybV8pwAiBo2xnmixZpThGwWQ2XZZym8MnsF/ubmKvGZ7L2JS3rVw=="}]},"maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/o-m-m-0.0.33.tgz_1466375711771_0.6602565434295684"}}},"readme":"### Meteor object mapper\n\nOmm maps between rich objects and documents.\n\n## Key features\n\n- Load rich objects instead of documents from a collection\n\n- Describe the object graph through annotation-style function calls\n\n- Declare meteor methods through annotations-style function calls\n\n- Perform collection altering operations anywhere on the object graph\n\n- Strengthens encapsulation of objects by removing persistence logic from the domain logic\n\n- Atomicity over complex operations within one document\n\n## Api Documentation\n\n[JsDoc](https://bvanheukelom.github.io/omm/test_meteor_web/packages/omm/out/omm.html)\n\n## Example\n\n[Garden.js](example/Garden.js)\n```js\nGarden = function Garden( name, id ){\n\tthis._id = id;\n\tthis.name = name;\n\tthis.plants = [];\n\tthis.harvested = 0;\n};\n// declares Garden as an Entity\nomm.addEntity(Garden);\n// declares that the property \"plants\" contains objects of the type \"Plant\"\nomm.arrayType(Garden, \"plants\", \"Plant\");\n\nGarden.prototype.addPlant = function( t ){\n\tthis.plants.push( new Plant( t, this ) );\n};\nomm.collectionUpdate( Garden, \"addPlant\" );\n\nGarden.prototype.growPlants = function(){\n\tthis.plants.forEach( function(p){\n\t\tp.grow();\n\t});\n};\nomm.collectionUpdate( Garden, \"growPlants\" );\n```\n\n[Plant.js](example/Plant.js)\n```js\nPlant = function Plant( type, garden ){\n\t//this._id = \"id\"+garden.plants.length;\n\tthis.type = type;\n\tthis.height = 1;\n\tthis.garden = garden;\n};\n// declares that Plant is an Entity\nomm.addEntity(Plant);\n// declares that the property garden contains object of the class \"Garden\"\nomm.type(Plant, \"garden\", \"Garden\");\n// declares that the value of the property should be stored as a key (string) rather than the actual object\nomm.asForeignKey(Plant, \"garden\");\n\n\nPlant.prototype.grow = function(){\n\tif( this.height<20 )\n\t\tthis.height++;\n\tif( this.height==10 || this.height==15 ){\n\t\tthis.garden.addPlant(this.type,this.garden);\n\t}\n};\n\nPlant.prototype.harvest = function(){\n\tvar i = this.garden.plants.indexOf(this);\n\tthis.garden.plants.splice(i,1);\n\tthis.garden.harvested+=this.height;\n};\n// declares that the function \"harvest\" should also be invoked on the object in the collection.\nomm.collectionUpdate( Plant, \"harvest\");\n\n```\n\n## License\n\nMIT\n\n\n\n","maintainers":[{"name":"bvanheukelom","email":"bert@vanheukelom.de"}],"time":{"modified":"2022-06-22T15:07:13.711Z","created":"2016-03-24T12:37:06.880Z","0.0.27":"2016-03-24T12:37:06.880Z","0.0.28":"2016-03-24T14:35:13.404Z","0.0.29":"2016-04-06T11:07:02.559Z","0.0.30":"2016-04-06T16:34:43.990Z","0.0.31":"2016-04-19T17:08:21.728Z","0.0.32":"2016-05-03T14:38:17.438Z","0.0.33":"2016-06-19T22:35:14.325Z"},"readmeFilename":"README.md"}