{"_id":"@scaffold.js/scaffold","_rev":"25-f29d9512528d992563fe2a7687a92270","time":{"created":"2021-02-28T14:54:24.536Z","0.1.0":"2021-02-28T14:54:24.713Z","modified":"2022-04-06T21:58:09.469Z"},"name":"@scaffold.js/scaffold","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@scaffold.js/scaffold","version":"0.1.0","description":"Generating test fixtures made easy","author":{"name":"Sreekar"},"license":"MIT","main":"index.js","type":"commonjs","repository":{"type":"git","url":"git+https://github.com/sreekar2307/scaffold.js.git"},"homepage":"https://github.com/sreekar2307/scaffold.js","keywords":["fixtures","scaffolds","testing","schema","schemaGeneration"],"scripts":{"build":"npx webpack","lint":"npx eslint .","prettier:check":"npx prettier --check --ignore-path .eslintignore .","prettier:write":"npx prettier --write --ignore-path .eslintignore ."},"dependencies":{"ajv":"^7.1.1","ajv-errors":"^2.0.0","camel-case":"^4.1.2","lodash.isplainobject":"^4.0.6","pluralize":"^8.0.0"},"devDependencies":{"@babel/core":"^7.13.1","@babel/preset-env":"^7.13.5","babel-loader":"^8.2.2","eslint":"^7.19.0","eslint-config-prettier":"^7.2.0","eslint-plugin-node":"^11.1.0","faker":"^5.4.0","prettier":"^2.2.1","webpack":"^5.24.1","webpack-cli":"^4.5.0"},"gitHead":"1b7fea3b4ffdf8db28d3642fc4263de2489695dd","bugs":{"url":"https://github.com/sreekar2307/scaffold.js/issues"},"_id":"@scaffold.js/scaffold@0.1.0","_nodeVersion":"14.15.1","_npmVersion":"7.5.2","dist":{"integrity":"sha512-P+jsz08LXAahNkQHBYPX2I/F4D3/Xnc+VoGpBuIyRfhXk/t9bcd+zGlU8uKGlMlqQxvkiNe/7xR9XasleJ0bVg==","shasum":"06c0bbcbb88b4855666a647049780c441e6647ce","tarball":"https://registry.npmjs.org/@scaffold.js/scaffold/-/scaffold-0.1.0.tgz","fileCount":23,"unpackedSize":682168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgO66hCRA9TVsSAnZWagAAWMIQAKKoWKRXiUolhEWOqT5h\nl9RQrWmjmmkjTRAW1N2zr5jUjaYMaqKexKBXj4h+Ofyv3n6sX2tOwM5WTvEQ\nMYjRhP+9PAtWJAsdKo36PsCTW4mN8/h4wWcCqqV6pf092qXveh1CcaLtFbxw\nHfOtsCe1xemw0aI9VM5dauabBEPcKZajR3/ebzk8L1MhSi9/nWLWTebcU0AL\n1mWM3vJ3/t1MoxMXvuL/X5A4CguG4KDM99Zzb+xEoc1VjW0vSPLNGxeWk1xL\neLnf29lDJERPUD33WwiZrIWNBxDyOBQItcI0Wzsb8wY85myJ9EGD4bocTMHr\nAMdgOlN9ctrYSHHqJD6/u94tFAC72Ll1SALZWUdy6B1Efrs9ws0rSEL8NG46\n8nshI4ZiVlOfzVmZImj1F9QeidaqYiMd3iNAAh66SpJSYM+U/5l9Tgp6BO7J\n1SmUiNdGytRrxDYoa30OVEoH45oqA8S77Ry9o9iJQZUoHHkO9tCgq1/dGN9k\nKLgDB5nZmfhbDYyunRWjlYS4Q/Nh5S7gWP/S5lmV6jDJcpg0ie3xHCpzOkfB\nGDcgrwWNzL1S3U/SMeelJivq9U2EGGYLiFNXDm2jgchHVJxhqcthX8Y8jd0e\n1TrCsEJaVJ/+Jw0c4JVJE9xBp/MbuGE5xf1Ji5XqH9f0+OgSur0dI2FlOLoJ\nzbL7\r\n=1uno\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxG8OM8dBj29LXQ1LXjhOMhycwjs330vYzLuTAot81aAIhAMRm9YDTXgRazXHSqz8j1JqWLL+EDCvZK+0YVF/PAdgx"}]},"_npmUser":{"name":"scaffold.js","email":"scaffold804@gmail.com"},"directories":{},"maintainers":[{"name":"scaffold.js","email":"scaffold804@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scaffold_0.1.0_1614524064595_0.41282222177132954"},"_hasShrinkwrap":false}},"maintainers":[{"name":"scaffold.js","email":"scaffold804@gmail.com"}],"description":"Generating test fixtures made easy","homepage":"https://github.com/sreekar2307/scaffold.js","keywords":["fixtures","scaffolds","testing","schema","schemaGeneration"],"repository":{"type":"git","url":"git+https://github.com/sreekar2307/scaffold.js.git"},"author":{"name":"Sreekar"},"bugs":{"url":"https://github.com/sreekar2307/scaffold.js/issues"},"license":"MIT","readme":"# Scaffold.js\n\nCreating test fixtures has never been so easy\n\n### Installation\n\n```npm install @scaffold.js/scaffold```\n\n### Usage\n\n```js\nconst scaffold = require('@scaffold.js/scaffold');\nconst pure = {\n    functions: {\n        email: function (firstName, lastName) {\n            return firstName + '_' + lastName + '@gmail.com'\n        }\n    }\n}\nconst schema = {\n    types: {\n        Employee: {\n            id: 'id',\n            name: 'string',\n            contact: 'string',\n            department: 'string',\n            manager: 'Employee',\n            email: {\n                _func: [pure.functions.email, 'scaffold', 'awesome'],\n            },\n        },\n    },\n};\nconst {employeeGenerator} = scaffold({\n    hasManyMin: 1,\n    schema,\n});\nconst employee = employeeGenerator();\nconst manager = employee.manager;\nconsole.log(employee);\n// {\n//     id: 1,\n//     name: 'non',\n//     contact: 'sapien',\n//     department: 'nec',\n//     manager: [Getter],\n//     email: 'scaffold_awesome@gmail.com'\n// }\nconsole.log(manager);\n// {\n//     id: 2,\n//     name: 'nisi',\n//     contact: 'adipiscing',\n//     department: 'sapien',\n//     manager: [Getter],\n//     email: 'scaffold_awesome@gmail.com'\n// }\n```\n\nSupports multiple in-built primitive types\n\n```js\n[\n    boolean,\n    date,\n    float,\n    id, // generates unique id\n    number, // generates a random integer\n    string, // generates a random word\n    text, // generates a sentence\n]\n```\n\nIf the in built primitives are not sufficient you can always pass a pure function for a field like this\n\n```js\nconst pure = {\n    functions: {\n        email: function (firstName, lastName) {\n            return firstName + '_' + lastName + '@gmail.com'\n        }\n    }\n}\n\n{\n    email: {\n        _func: [pure.functions.email, 'scaffold', 'awesome']\n    }\n}\n```\n\nwhere the first element is a pure function where-as the rest of the elements are arguments to this function\n\n### Relations in schema\n\nA fixture in general will have one-many relation or one-one relation scaffold.js makes it easy to manage such relations\nwithout any state dependency between them\n\n#### One-Many\n\none-many relationship is made possible through _hasMany field within a type\n\n```js\n{\n    User: {\n        _hasMany: {\n            friends: ['User']\n        }\n    }\n}\n// this will add a friends getter in the generated user fixture\n{\n    Student: {\n        _hasMany: ['Course', 'Project']\n    }\n}\n// this will pluralize 'Course', 'Project' to courses and projects and add them as getters to the generated Student fixture\n```\n\n### One-One\n\none-one relationship doesn't require a special field within a type\n\n```js\n{\n    Employee: {\n        manager: 'Employee'\n    }\n}\n// scaffold.js will check if the 'Employee' type exist and attaches a manager getter to the generated employee fixture\n```\n\ncheck out an elaborate example [here](https://github.com/sreekar2307/scaffold.js/blob/master/examples/scaffold-git.js) \n\n","readmeFilename":"README.md"}