{"_id":"@genx/data","_rev":"26-1efdd9731908606b8e340be01f84c6d0","name":"@genx/data","dist-tags":{"latest":"2.1.15"},"versions":{"1.0.0":{"name":"@genx/data","version":"1.0.0","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs/api' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test:all":"require-self && mocha test/*.mocha.js --recursive src/**/*.spec.js --timeout 5000","test:spec":"mocha --compilers js:@babel/register --recursive src/**/*.spec.js --timeout 5000","test":"npm run build && npm run test:all","cover":"npm run build:test && nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js --timeout 5000","bulid:clean":"rm -rf lib","build":"npm run bulid:clean && NODE_ENV=production babel src -d lib --copy-files && del lib/**/__test__"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","src"]},"peerDependencies":{"@genx/app":"*","rk-utils":"*"},"devDependencies":{"amqplib":"^0.5.3","hyperid":"^2.0.2","mysql2":"^1.6.4","shortid":"^2.2.14","uniqid":"^5.0.3"},"dependencies":{"@genx/app":"^1.0.0","luxon":"^1.21.2","randomstring":"^1.1.5","rk-utils":"^2.2.6","validator":"^12.0.0"},"homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"dist":{"integrity":"sha512-8M2w6ntTKI7DWvQVzuqCtvZIFQH+8mp87+k51cnAYaEgkMGLDBcvE4HER6563WDoupzWw+h4zKee7gJwxaE3XQ==","shasum":"24dde2df63cb10e8d921be13f27c6f3258f3f6b2","tarball":"https://registry.npmjs.org/@genx/data/-/data-1.0.0.tgz","fileCount":45,"unpackedSize":92509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1MloCRA9TVsSAnZWagAAElYP+waIFciLi8NWTNAAJ9hg\nvCL+/JykJiQ3kksVNZV1mq8yWg1+qFIl/gpyJlBzrTvECr/DV6CgTMKYO5Cy\nm7oBkXSHYFgqT+9QIxHNlgFUoF6GNU//7oE774UStEp61s0/1lYlGTfJAnx3\nbX7b10uzWb43J8/0MmNl1ATsS0cMKEFbaiUGc+eQ2t6SHAODHzPAhdlGLZ/8\n63N74v2ZXtxdRe9UvjYDmpvNt1dfdHAmqr0f1Cdvr36Qy6u4X5jytbLWpfrp\nJfpNSU1XBKTfRUtBvBK8UY8uUZBL7hkxRDFHbtYDX/vTuY2Sk7sWEAFMFTHR\nbH1FrUSlwsLYIU4+ScL64A5sdWOFZpWuTTSPc6JuDxYGjAjOI4W4mYJuZw7y\nBWbfH9KmOaIBv3pSitVbHngiVTSpGjGqv+bm1BpqBFULsxpcMzL4HUg+5VzT\nacJToPn8ScRQocBX8+lyvNJYCG2c+T7z165yKo5uLdI8mUJaa19ZOBUrhJkk\nBZF1kVZbz7m465emy0yyneCP/Pni67r31Rwuh+cGT/tLo+Z9GBXWDWhWwuDl\nCsMGOMeiAYhTm2omYmtp9wPrCk3n0tQt5UuyAYSeRsWo+eZL1juudj1whrOP\n+0fMHkIYKMxsGBmPfNLrX3yZIk5LXRp1z82Hdzlx+/9z3or9n/wzHWmU+HrU\ngd98\r\n=urss\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNWdAPMWKEy3+Cv2ySmP/cbbUw76CMgLuVJa0diSNTagIgYkf8WYpN4OTL8yZnt+8pHUWGiu3RzWxs6TfpQ3lWHvg="}]},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_1.0.0_1574226279925_0.6127524874231924"},"_hasShrinkwrap":false},"1.0.2":{"name":"@genx/data","version":"1.0.2","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs/api' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","bulid:clean":"rm -rf lib","build:prod":"npm run bulid:clean && NODE_ENV=production babel src -d lib --copy-files && del lib/**/__test__","build":"npm run bulid:clean && NODE_ENV=development babel src -d lib --copy-files && del lib/**/__test__"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"mocha":{"require":["@babel/register","should"],"timeout":30000},"peerDependencies":{"@genx/app":"*","rk-utils":"*"},"devDependencies":{"@genx/app":"github:genx-tech/gx-app","amqplib":"^0.5.6","fast-csv":"^3.4.0","hyperid":"^2.1.0","ink-docstrap":"^1.3.2","mongodb":"^3.6.3","mysql2":"^2.2.5","shortid":"^2.2.16","stream-transform":"^2.0.4","uniqid":"^5.0.3","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.0.2","@genx/jes":"^1.0.2","http-status-codes":"^1.4.0","immutable":"^4.0.0-rc.12","luxon":"^1.25.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","rk-utils":"^2.2.6","validator":"^12.2.0"},"homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@1.0.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-q7jucElCdOd5XWPWwtXlNOiB1YtNP3drN6javVy8KmU44gBb/WZ49CfKIt0nLPzLh130eH3ps82sYymSDNKKzQ==","shasum":"7863ab4e81f790368eaaa815f1a6b49c10ee8824","tarball":"https://registry.npmjs.org/@genx/data/-/data-1.0.2.tgz","fileCount":50,"unpackedSize":128537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAQSqCRA9TVsSAnZWagAAXrEP/jR4DYghxzqvxinag07C\nQICFslfYkWQiMHMoZU8AGpPbOQRxco3QOwspI7psVIteJjsCtFiqY5RUzjBD\n6AS62gToAA+uugqhmOrk3+oArLJ5AfTNJDC2s8keOjFbjAKjtMCMSBkANmYV\n9B/48qVJpNpKY+oCazcRKoNyEs3EKDjwXeXRO8/nzEN3IuRBfln3Ol5sSbtV\nJwd35WQZy6XTExdvORQfckxyZd2wvfs4Nh/m3tN7w6MEavit04loT8QV2mDi\nfsAgo9ZxClqdFzfnikAOvdqUwFtltXa5LtABR3KEsaeICpt+eb5UTJl+Kv7j\nhqHgRKT/Vfl9C61ofEfe4K3fBVsYEiQ9fE3PPSL7J8djt2rE0QS6WiG9ZxAS\nnZoy0zGT/Gp0BciZWMZxgtnqOaSMjMPiftNn9asxPXEmBUKLdwL0S4Xz3bcM\n92jhJ2aYdmnVYmT7uO2O3bt/hgwLow0wiIy/V2c7Rb8hnFDSJqV+nHP7Jq7e\nu2DJfxQCKXMse9NcbgCsku/s/jUdfytlCkRvAdbr7xJsWhSI+6+mzlIddS6A\naBBHY7Z4Wb5L5rehXuBYDejyUu80LL9HasF+t6sZuAI5ssUMkD9tGBwDFRQE\nPU5p0HecPUFQceeDe6VrnIGyfR9F7HYMoWd23teV9sdkSspKqVJkMToIq77Q\nH8sd\r\n=5vRD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2n/895LSKd8VOnXP0vLxiZ1Z0A2QDsogbtvvDVCYYEQIhAI2DIMTnrkbM6zLrfaZ1aAEh5KJJU9QPEc7qcOkuBt/n"}]},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_1.0.2_1610679465876_0.23699666346275228"},"_hasShrinkwrap":false},"2.0.0":{"name":"@genx/data","version":"2.0.0","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs/api' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","bulid:clean":"rm -rf lib","build:prod":"npm run bulid:clean && NODE_ENV=production babel src -d lib --copy-files && del lib/**/__test__","build":"npm run bulid:clean && NODE_ENV=development babel src -d lib --copy-files && del lib/**/__test__"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"mocha":{"require":["@babel/register","should"],"timeout":30000},"devDependencies":{"amqplib":"^0.5.6","fast-csv":"^3.4.0","hyperid":"^2.1.0","ink-docstrap":"^1.3.2","mongodb":"^3.6.3","mysql2":"^2.2.5","shortid":"^2.2.16","stream-transform":"^2.0.4","uniqid":"^5.0.3","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.1","@genx/jes":"^1.1.0","@genx/july":"^0.2.0","@genx/sys":"^0.1.1","http-status-codes":"^2.1.4","immutable":"^4.0.0-rc.12","luxon":"^1.25.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^12.2.0"},"homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.0.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-7n1LvABb3jSYJsHUVYApXrU4VVfvw7Wenzj+FHF1Xf5RwZysMbT5G+ecaW2AYp1qquxXYdazqPBxS/tEz70npA==","shasum":"7d78c4a5fe243d9e90e88b8af3318d98c7e85506","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.0.0.tgz","fileCount":49,"unpackedSize":130425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgozLyCRA9TVsSAnZWagAA1qEQAJEi9vS/EwtQTlhh5ugB\nJIaezR9ZJL5wD/SnuRiW3J8kUP7z+hKE3BRUjBFtSmaiFvOZKo7RFejWemVc\nV1zneEHph93LnLeQ+phkpm2UrfDzMi5p90uyPxUlAcyzElzECcVREmiQf4Op\n0C8OIgwydeWW/abdVKJTK1hxJbIxHUH4aEM4rxmzHbd4PzhjnvxJeYZw/YcH\nD8y4IE94DsPyhvUP/iuR8/X+u5KoFr3glByFn4r9YhuCxW7Z4Ac+e3AvYQ5J\nto+hZ6/pOOkeuYByjCgArwbpaxK9TsTWnnqmfqiJyJEIZijU7vSW/F/aCgFR\n7otUAwMW/uZdWNwjcPsuTxGJymodIbKLAj1Qs7SviZssoXskBXd8WQhKtY5/\ncRn6gQE3cmSVglYi5avVLLP25jNHQ16jWgIFTl6w79tSn18euu3FflXb0W5G\nEyupFacgDRN6PKkt521ovnl3szUpBnz6dHXLNlGM+KukpmOY4HCClIZHrEJB\nmSHwavM61GbHSwcEcnPhMGi3q6+FW8xDz2D/XYwoQlHQXCyJJoI21CRBslVg\nQ/iJl9WuVeTvaQruwqp1yQOxw2uFB6ulfq5nD1PZHXv63LlzbSNDIetW4O51\nyRcySony3Xl7dyliV7NADG/UgB2G+guAQ2GBcNnjAcF0U7mdq+fyaPNwGyVP\nbfxi\r\n=r3k0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6waepGTOHhpJ0QHZsO7XGRTa67DJUYRxEnWNcULo1CAiB0PTZAI0SYq9ffNKihqwoDeqxsaneeillxsDdGqydkOg=="}]},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.0.0_1621308146407_0.18061988719511302"},"_hasShrinkwrap":false},"2.0.2":{"name":"@genx/data","version":"2.0.2","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs/api' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli lib .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"github:genx-tech/gx-test#v2","amqplib":"^0.5.6","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^0.3.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^12.2.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"env":{"browser":false,"commonjs":true,"es2021":true},"extends":["standard","prettier"],"parserOptions":{"ecmaVersion":12},"rules":{}},"eslintIgnore":["/**/__test__"],"homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.0.2","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-1PkxchdzgO/Ia+JbeFnBU7IxRww4ELCZWgVXxl7Qa9Yr87ohm2ffl3Yde3mJD5G+QJdjwm/WQo7FEjfH9WD/uw==","shasum":"4a6a4904657b79bc61c3efeca3e6d7fef68953d5","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.0.2.tgz","fileCount":99,"unpackedSize":642324,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFKGYkCF5HzI/wuk+zKL+xCi1sGOVbjn2IguvMPYLTsmAiB5msxKb/h1+mL5jgEjC7cI6kehEFLUDjCZQvaQbTz5eQ=="}]},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.0.2_1635410995173_0.9691710252779369"},"_hasShrinkwrap":false},"2.0.3":{"name":"@genx/data","version":"2.0.3","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"github:genx-tech/gx-test#v2","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"06716815848330d01ba83ba28dad0bff20d1f743","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.0.3","_nodeVersion":"17.5.0","_npmVersion":"8.4.1","dist":{"integrity":"sha512-8iT2Av3pMvAY5F9RLgmds2foYTRgqh82NZ7SXwgJFpOhltAbYpVyJbZzA9cB6t4Lfzz8mgirKPvlkPwrm+J+bQ==","shasum":"da5783ab190264a602c21bdb667597fbf874100e","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.0.3.tgz","fileCount":99,"unpackedSize":652652,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnsn/sQGDdJZxFAi3hf/ePGDbIHrnA0yT5MrWp4o5dMAiEAnEnFfCpodsYLPn8RMbV/OSJ6M9FCo0YhGAwfHGMFCnY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRpkcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplOg/5AfbqVFDF0DM6s54Kgh6LVhib47uqsJbUlEkAAUq/HHiVwQGj\r\noNvYAHJroe4AW3tOpngSeZK43wv2qO8L6SPZbodXQWm0D4APySnhQcIPWVLq\r\nLNp9tg8IzTbgaGTvKxynfDb/JL6Jg95S5ilwg7UO515Qg59T1hnJg09asVyJ\r\neijFTDEzwU4fzYcltOGCVAVDYR9DYQa5vUJzeiL8pKUVScW2um4BBd+BgCmW\r\n64w+C9b0KqAJR8rKd9wEVIlXaC5OM3yb9CdQT7OQdBxyILGNX9N6QdwKN38f\r\nuRfWRLr/K6W6t5uFtcIjxpOQMu4+7HUW377D77wYUf+6MEjWjqysW9Y9/+D8\r\n/CIoCKRnyTlSK0nRKVkTn8ZtcfmRyfEauHEO58LweMRsQxobHEPCi5xx19+z\r\nKDwtdoy7XyxsoZY46NsnbFcMGi2UuSBrddrZBCFsXgKGxPxBtCWHjhlmxJHn\r\nOU/bWamOv9JqDavOEjQadrOLv7f5FINU+5svFsuR1SttzXRPZ3GCTkKmtQRn\r\ntambY+WEqflEHcZE8tZgPKDOkYNNEND6SOh8WpcVNGoF4OAgeKG+GQKDtn5Q\r\nxX4+nHfaTEQjJIOkv0sRg6+gRx9ZCfHJWq4yHX+pSwooNguXSFZ81WRDECAp\r\ngydT8xZRdEeGWDqWCkrgDLH0XcNMpv3VR5s=\r\n=GJmM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.0.3_1648793884650_0.10883712579876215"},"_hasShrinkwrap":false},"2.1.0":{"name":"@genx/data","version":"2.1.0","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"github:genx-tech/gx-test#v2","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"06cf6b0b99be8c2b04a48bf60dae94e42c6f0a3d","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-Rkijx8+75NYmE6iL1fcun31aEhchSiC9ZVyyhBMFxOLX3XY5NAYwCf1uZL+FqTfgai48D2uRMCXEqJ2Jee148w==","shasum":"ee202867e96f47aa968e7344f09af5c88ef54272","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.0.tgz","fileCount":99,"unpackedSize":660555,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEiKW+TXtbu9tIPUEs6Dn+ACPRRwcFcxUejtd+OGJ5xHAiEAy0PRrGM89ICzQCSto9a0c7netE4AJehWFNpt7MtHBWc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil0veACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr92xAAoD/Nt68u7zkq8P1MLmC9vFKarAh2Rani3MhJQVAAYczNTs8j\r\niY3MP9Ye21mOvbX43Em3LXLFpAfgkqqUipvfOyuWhiCKYzUxt4nu7msN0RT0\r\n8qJDU13/VnG6Mv1bW7RtiEKJpeu8pFM3NXspzFq3zTuVVuAxjIHFCdn/uuit\r\n8WPk8AGFNRN1y51ocWnpO8Zv9lVwW9SvpXzFLIqXQoBcCt+RzQaC2LbOA7q3\r\n1bs0SzT6LoVOgOa+AdDCYmExyB504ueFz0++jA3HgNL51aTwGbcFwf0vD2iA\r\naE3cGlPc5GPzHVGjUabt05rIUizxqXCwbMu6yCuw3qPJHijGKDVWt9xTuEdr\r\nNmpjYY3YKhV1Rdj2L36K/a66XLmjxhfqgPI18e4VH4rL36EHTLw0cdL6LHIH\r\n7kwXqOISP8AxlKUyAcx7gdeTkJJXG/R1A/uKoPwbJscgE7UDa1vVyj2W0eEd\r\noEEafqzWt1hRdxIRs4teuXS4c77dcGRxuu2HDph40MndwOaGr5AVvWLcpHXE\r\n3iIwyMKnauszW+lzKfFy73hHxGsO0Xqtb8y/azjNKfq/yINJbR4/0qckd02Y\r\nPmjCEn2ITIJVwAT13NtPEl1MvlcXgej3KPt3NWHogydNB+xxhC0cBun39X30\r\nc7ZQAxJL1BZCANpgILd2C7fweKWHNqLce48=\r\n=PxFN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.0_1654082526302_0.2454503896042206"},"_hasShrinkwrap":false},"2.1.1":{"name":"@genx/data","version":"2.1.1","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"github:genx-tech/gx-test#v2","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"5fb2f2f4dd308c2d7b84fb263b0105d30179fc64","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.1","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-OF62KEVChdA7mkh00v6wSZTETkBTrZIn96Sc004cxxksUEKvr3gDdaOWpwdw1I4z7izyrjJdkJAI5QNR2xzwDA==","shasum":"ee5d8d9a92145be8deac71cfce882da41ce1b764","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.1.tgz","fileCount":99,"unpackedSize":661206,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWUrcvVJ8B+GtpbURjlzBrtCXa13v8He6WLJhh25NrtAiAb/eEsLDcK2PvJNGPZNk0hN9VIe+5kd0jX4OGne5a1eg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil1gzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreVg//QBrxxmDDY5wl74cyY11oDybhs/iV0r3Sol1x/Vs9tcQ2ADLD\r\nwk94m+DQzxVz/J013eAcd+PgctM79xxU0fZBDALRgPmtkVu5ZE/Xtzj5At7n\r\nJCVA5lL0AcOzV53F7cUFvBuq4be9BIcW08B5DTuevop0iaBlmDieLx1VyDKk\r\nYEs1omVEX/q+1i1/NWAXIwStSJgMjBMzA6zzyquJxYln4IhGrwQim/odo0ac\r\n9KzdBdXOSa3XDF65es4XdMBch5FKNj8x1IktmLTbyHsLPc4qtNuKPAXU3MBO\r\nmYk20uZnCGhYwxme6K9Hx3p0XvqZMJOrLrCkr2Vtn5xb2BbK1MsdRAVlXU3p\r\n+RowmFM7Rf+GWJaOrX5SnRgIvvrFRD+G05DOhEEUVR+0S7Hm4o5ZnCceJ5dz\r\nLefq9ZL6wMAZpI9Tqsk6uRVxfpIwrtjs0iQXyyE6r4ODSddPhh7VhFAoGaSU\r\n83YKrx6QV1mXo3Rqnrw50dj2yGmlx7NA7TVJ21AQupCFfuy7UeUHgs0nnjX5\r\nxsBSjXwGZ11W+plNjvF2tFacEyuyhlDIu8BYWVXgCXPtJJg1YAq3+JMoKdGO\r\nAlwQXfK0hhEfJTf3+nDFZowdSsMNBNO5ou/a0WsU0ISzLwl3WlYdo72oxitj\r\nDN7eEWUgvCTSdbO84mOUbqfIwPhOjuuVYDw=\r\n=o31B\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.1_1654085683356_0.18087301104914855"},"_hasShrinkwrap":false},"2.1.2":{"name":"@genx/data","version":"2.1.2","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"repository":"https://github.com/genx-tech/gx-data","bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":"Rockie Guo <rockie@kitmi.com.au>","license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.2","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"_id":"@genx/data@2.1.2","_integrity":"sha512-b+LqET6Hi+k0qZP38/Lxr1yZKhhRiL6NlxNzC6l9vCWv5YuD+4orH8Fl9U4yOsNMaKdJYh+nxo+dE5BD3yp5dw==","_resolved":"/private/var/folders/_v/szrkbcq52n363ks1n4jpdwb00000gn/T/79fbde729e8fdd086b33bb87f5632008/genx-data-2.1.2.tgz","_from":"file:genx-data-2.1.2.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-b+LqET6Hi+k0qZP38/Lxr1yZKhhRiL6NlxNzC6l9vCWv5YuD+4orH8Fl9U4yOsNMaKdJYh+nxo+dE5BD3yp5dw==","shasum":"9cea915965c559146991c31b6f6e416b1ee8e92f","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.2.tgz","fileCount":98,"unpackedSize":876558,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7GeDkfBSO0/QEiUQ7fnloIKc+YGyUJ2ME8GWxvcKzjAiEAqzDQZbLXo/YHbFxmLfV6/Ud9tEdxn39l6r+dO0Xshvs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi57PaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/Gg//RKNlPXSluwwR/ZBiZ8c5/0NYcruX+sPjuh1TdgYBi6CvGJ4y\r\nBNnlMJFYH0QPcfxjm7ip3UgiObHml8W47R6EYpUw7Pk1ohetfnO2qTKEbGLy\r\nAkh6ISb1ypfaxK2S3fDvDuSy7ZTXvNtcPaEeArxtlFPYZq8xN/kWAybX487B\r\nVRDPlnlV9WtaQJbHoMGEJ96uzeHGp75cfZjKyDMkB9GQ7UPTD2Dj6lh94B3J\r\nZJ6wmh0OIoJLFgQ8EM4x6vRB3zoVZgvuMNe+Xx/6QwcBMQuxB5PG2VrFcNhQ\r\nLgGRxaYVi7WqoGNnauPwoeq07PNYmx+luQqIrHVl9AhfI4dajLypkU+I8vPj\r\nt1JYi5QIrY/4yTeEOdH92Rd2Lz/Dn+jqNvsJ89m3tONIteHt9lGutpsfR4wA\r\nEzeQswgrXuTGpPur5cGecNYk6W6Frjvlx1l6rhexW7709wBNWdYNHmUrZItT\r\nxRKdr0PC42MyPN9W7tMhginX7CVnuuAQBRACtzksOqhbCktcPDAVG5Y7HHjP\r\nQwKnZ4RyYLcTNIScsXbriMZ570aDAoqvoyAAcgnPE3SgiawSxPQNRIKWrkE5\r\nN8j1jB0urOBNTzPzZhZQF3iq9EpkY5ChcVNe1Ucod06pcO/IG3Zz1Dkl6xhD\r\nrs6vI3C4CSsWO2oZQKxpaSEwuRuWVU9fogE=\r\n=e6aC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.2_1659352026508_0.8754902479232565"},"_hasShrinkwrap":false},"2.1.3":{"name":"@genx/data","version":"2.1.3","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.2","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"23a4291736224e1077474b7344dfe3d90b6262a8","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.3","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-NtTOhBhTKM/H4xRX05vLf3J7M8xGpawMDgXv/W4o+KJWGJ/E4YXrcQJdkiDNS93h1EcsqGzpigMzJgymZ9jFag==","shasum":"72a6028bc4a2039d447e8c48d288522560170f63","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.3.tgz","fileCount":98,"unpackedSize":882137,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCX1KGlQHU3i23z//QVdXbNvijaF3HQjCQRFdEFR1JqhwIhAJNloR4Y+PhPffE5Ea3ODjex5rfZVzCRoRiu1dw2fY8f"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFqi7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrLvxAAkPf1NQMRIwy1qx2ghi5TlugdKX8PuWLXxew9AcvUf5XmQNG6\r\nLh3W6+JNyujCY03xh45rgQMTZ8lJFXTUzCMWIqY0SvA8Rn5kHvDwXn5DLCO/\r\n2xmILzGV5tgKhQHL6qr/HMWS3yQ7CSTts/xLNgRWZzLG8xTNFiEtB670LHBX\r\n0WE53lYdSuRFVuE8Iyrt8Y3DBZS9Adgn17CT2seepcsJKQxQI4jrqG3Syagq\r\nRzXVZHP0KwNfpiTnG8OCA58R+VYoUFwCFU+6VISLH9dAhB2YL+6Vqp6c659n\r\nNtKW+Id60KG2nEQS6oPxnSmLDBzQcv2Uov9Qqb8LAhIrLNxF5UY58xq1xWMh\r\n81+PkSFPE1t+4IJu2Bd5lSSldjU4nFkwbNE2Cokx2tGLbNd+plOvRdDg6q0a\r\n1VSpA54jHYH8O1jMdw/R7vPKprzkSGPefGF+tTzAMM3UzzYUfB+prVxFxVJT\r\nS0erA1JR2tUbHoepoZLJTNHRocvCx12dKTAX07+V4P5wzPGJOI70F5h9c0pP\r\nDa8PkMtz0sKi2nHQMoGF5JZcFY5kMhyfSMNHooDMdwGcQOZaE0FecD3nw2pQ\r\nEVlEEfdzgGMM7ZC7DJP4TTWZZe0oySi8ULW3LknI368hSCwE3tjiM6fxXFHJ\r\ns4RGOOROlLm709tRqYMIVMZtYx61tnoil/I=\r\n=htOv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.3_1662429371098_0.6619924777838513"},"_hasShrinkwrap":false},"2.1.5":{"name":"@genx/data","version":"2.1.5","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && npm run build","test":"mocha --recursive src/**/*.spec.js","test:spec":"npm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","cover":"nyc --reporter=html --reporter=text mocha test/*.mocha.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"npm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.2","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"b122115933d4f0704bcefd7f94d3f0acd9f299da","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.5","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-50Pp3UuAWQ9SHQKADxLAPlBMl+QKZ027JqfJdz+SWxAhZalGQYSz5bkkgnA6uD5Oy9GgQ9eCBx6o/XANAtR/Gg==","shasum":"f450a8662e969627d7608224bfc61aa6d1c9d90a","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.5.tgz","fileCount":97,"unpackedSize":675938,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChxvOejtIIjLxE5LSZv+tlk5RymqbNC8df5cqNeZWIvwIhAK2yJojPmQ9SfNRPIjUTvD9fINv3o392bk0SasyLWPRY"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjQTqeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjwhAAo72HdVpXm28XAk/UoTRVCECueiq/aVs5OsrsKXFnKHf+2zE4\r\nNMlvX0o88Ms0InnIxSd8W2w+eY/wQghWHaOEOr6z//o/LKnOFjCqMX1xZb1c\r\nv7K7upRGiJMX4eSc0OyeTvmJLWKATEMr562Whg8XfNoQQXz+JdJlXYUPMBjN\r\nxDO5CFirMv50V/tSP7HnDfJVGTEalKmA3cZiGXmui95TtTB6scTRJfggO9cJ\r\n998VCgksfEgYiXa8FkovLFXuv+Cba9sOCzPcDZALtr33EAIIXwe9xLUSILjD\r\n5/6kgoq1axjO+wLdquvgB9kB37ebZPs8wuk/CwTFJwbHNKsx7OV4UIiPenqu\r\nW7LPkRDEPzOF+5bdhyAzzMVvlgub2RDKAqMVZZBEzp2oM1n50t7OctRp4ojJ\r\n1GvHlEkvqMQ4cxwEm6RvGY0pLXCqbnVPA5yEC9voZPv301HmVYP8XbeiW4o9\r\nXXlcvkMWzJ6vsVdYKDGUzvDkJ2ineED7g2IfeyZRnmk3nHnREMhfohBTHR/j\r\n0141L+OJ9jMNDAdvqIuvMwSzzS5hK3m9z0dKsHLZj6tgSevB+t2frGOftMwY\r\nl09etz0k015UJeDjGd0OmCy2yKDad7GSx9rcVOYxKfcZer2IBwbkkqKp4M6w\r\nyet7C99wcMfEOduZwiu7aioQ9HarPBolzFA=\r\n=3ZUc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.5_1665219230672_0.9030724860371206"},"_hasShrinkwrap":false},"2.1.8":{"name":"@genx/data","version":"2.1.8","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"6df5060ee72e321992eee2b1495bd5ff9def47fa","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.8","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ciygfURUjIxgIBX7qYcO2RxaWUWUeTs21vqnnd2WYDIcsh+269wtgqYl9TkqKuCrluERL/GnBzHYS5jz3ypQGQ==","shasum":"af7987b9c285d4547807bbe4ac1596980aebcdff","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.8.tgz","fileCount":97,"unpackedSize":688333,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICA/OZ18GARDIfZw7ZLK8bMXIUZDx/DpzVPNXPhcHK1pAiEA9ZL+h7Vzx3KDkJCO70/icstXRMwtbYZRvgpioGf3ASg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTK2QACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr68g/9GxJOBQlgnTFVyLbHgMUBLIWXDk48stNAu2PoMEcubWvXGeam\r\nb+VakEeIi6khI9T3JudnqLA6pA1172VIL4AwjTDlm7A1/E5hqB0cZoh88arC\r\naRdJDFcdSy3SE6Rh6xMJSUIeCliHrC2BqlFpnK0OAjDE/G6tl9oUwuOIgwPE\r\n94+3KCPgdEtoFz/vZNzEVzkKXPyAuKoDTBarOA251P5K5x7hCacPglrsW74A\r\n88/Tk6JbQuw1BjfDEa7jU8L50V8Y7Ixelt+NIP1Xru2wAWpr1C1gS7biUavV\r\nCypvolA3mXb2oOUdOLzN85jJ2TJx+RG+PRpCNggsLuz3FTTPKt1p8pmDKGXA\r\nCpdIJRzUq6/cpF6w4MCOawoI5CV5yFbG9TDCJW4bfZ/4p+QwxnZaJsLHnnnI\r\nZIFOKtd0PJjEmGZxykJhm5qszXZmguZ1vwegIx5Uqjc1cQE6m/1QXfEsoAo+\r\nnuz2gek3PhVYh1X8u1C98+WKt4ZE86ztjssCplvflc/xnSfriVjqP/MVLq2J\r\nXe6jSZcqni4ZkDdhxf3IkVtzqPyr16hOW0LDzs8b+pf/+CyVe0gcus7yRxW+\r\nV3OxCxc4BWJ2kEMKDJIuapqyT0eQOrvaG90Jpm12kP7NEPicncpc5cR9YfaC\r\n+tt/lFWITp+eg/0O4AYOFQPfEvIRgB5IEAU=\r\n=7VZo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.8_1665969552494_0.771331907215171"},"_hasShrinkwrap":false},"2.1.9":{"name":"@genx/data","version":"2.1.9","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"5255ff3d736fdd86d0c7c9049de9fcb5c362d3e4","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.9","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-vqSPrfSSyuZRgTISgmTPdCyPO3n+bKfEi0HWehS/W+NdN/UrSkdQMstRCrmpT6pADOETn3bss8babe7Q07Evag==","shasum":"ae9d796af806837d5980928adaed162a913f99c1","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.9.tgz","fileCount":97,"unpackedSize":689974,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8LP1Ba/WzRYAoP6kwOhdua2F63fMU34jXPTAm+dUUBgIgSvSpTwSGmJ5YLMY+y0n237vbyshiivj1opb/gyNHdXI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTTlsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrqKg//Wb16WTTrrekIW+STZ7KFC+hkY3BBuJbI5ox+0LwwjbVT+QAr\r\nUHqrthoJZHEkUPydjBWErq5Ao/VsS2xnOYDLwP0KtMoh2eD7usXn/6tEw0BW\r\nfL2qUK+Pm1p1/87dvyEjXDHWm3HBDDkVNxubPgbqGmBK8DB+sdqn4bR4hI7+\r\ngh8BJT30LZkHQx5gfl/BYT0m+ZVhOlypjI2DKqMJcKcS/oNe+JR/YZEgDtDU\r\nfOP6863gXiGdeR1skz9hJVBPKhwWR9HI+XAXigikMB7BE5rHLNYYhL7TCai6\r\nTqOIultM3p62VlLGQi2j3fkv97eaOOkiYFOiRZ8/D68286RLIiHelHj/B6bM\r\nXAAv4u7Inn9fF5w3KvPPousI8smow/82bWngpOry4sm6V5ScS+YJiIrcgTDx\r\nwVw/BA9Eq5V060twvl0UAKI+PCR493EvUOZtmO/Q7D05S8RSg2LUqZTkNnJu\r\nLzXTbBrd+MdD3GE7ODmAlw7PIRDMRM2Mkob57JMeLm0ckqR3wg3BMhtkWksV\r\nrSUeZj8cG0fUNpPGZjzXbQBgiwuhVIai/MMVv22PpnY1y+wj0THi94lROMOC\r\nmeOrSq/KQDfjWiaolezsRvTSJfipMlqkhcp0IfE7x16mm/lmEHTUowfh228R\r\nUul+RNcMpYBTgf2S/Nj1ItdLXEZswRbs80Y=\r\n=3Uju\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.9_1666005355865_0.4081315588627801"},"_hasShrinkwrap":false},"2.1.10":{"name":"@genx/data","version":"2.1.10","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"del-cli .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.14.8","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-decorators":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","del-cli":"^4.0.1","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"git+https://github.com/kitmi/winston.git"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^1.2.2","@genx/july":"^1.0.2","@genx/sys":"^0.1.5","luxon":"^1.28.0","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"b751be87bf0da021d5676451b7180d1047514a96","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.10","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-sIxdM5kre6LaGmE4YLQ1AEcakW9u5QyTd+9XO3jlqv8BHFjzxJIjXXn0+Cl/9p+gIya4LCg7WH8eomGAIcDmmg==","shasum":"9a6cf0852c8a615a5ac7d1ab53e6f86da5695618","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.10.tgz","fileCount":97,"unpackedSize":690581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuX6oRCkyEBPq2Ld8FZHwVBtmHpiGNLTeyJyQ84KXjkgIgDI4s3+J8RfyeOxLE69II9pHmdrxRi4JmT4xSiPozGXk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWojnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrVaw/+NyC3n4trp6t4N3qLRugt7x6g5/Mab0dSSqz/WkJ+4V0lx8ql\r\nyr1MTXy51NQBd1vg2oPN1O/ffIIxqu/ZA0qUwP5UKLUq3p34vZk1cvihpphK\r\nRDJbuUclQQh1ae9w+iCWmRohEjgIHJbLQIlwSYmYLpMahE9qUeYWf/piews8\r\nCu4lKPPCqRsxeSTfbtou8rZwp81/uc8oZ5D1R/NgDQU5gl00oJE5NmwLaBeE\r\nbaam9TmGjelLQxAM16MhQJiaCOwnGpI7eHPwBpv296tP7Brh6dJX4vsvcMlD\r\nBFM4ZKjdIoxYrLGYnwTZHX5pjo4gJcJe72GVWQTP4y1GJSOs091YdhhhBMWb\r\nIiOTh0ZcVqcktol9YWk4IqcuRccLTWQf4dsOL/f3mIzOFGZyUTKqD7egNOBV\r\n63GizGPmZ2v0qrBEz+8abGWc7oF0RaLdE6ShCcbOEMI+zzKrS8O6keJfo+i0\r\na2SyeP7dkUYAwyBKzvr49rlCXHVX2BAC1rizN1OEoFoBik+zzF4WL5FEx2A1\r\nidWBRXowNwVEL52ksBE0Ioc4Chbe5qwXVhzlw80VwYQfOc9TNWyKomtWeNrh\r\nS7bb0sAS3OpZNI4Dh7WlDQSqdDuoeF/zBb3x+XC3v6fveZL/UUGNkuknNUWw\r\nslZl7nUZp3RYZUeWzpwnyd5DjvMKuZSXSb4=\r\n=UnYj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.10_1666877671766_0.9699349958201267"},"_hasShrinkwrap":false},"2.1.11":{"name":"@genx/data","version":"2.1.11","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"shx rm -rf .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.21.0","@babel/core":"^7.21.0","@babel/eslint-parser":"^7.19.1","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-decorators":"^7.21.0","@babel/preset-env":"^7.20.2","@babel/register":"^7.21.0","@changesets/cli":"^2.26.0","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","shx":"^0.3.4","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"https://github.com/genx-tech/winston/archive/refs/tags/v3.8.1x.tar.gz"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^2.1.4","@genx/july":"^1.1.1","@genx/sys":"^0.1.7","luxon":"^3.2.1","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"47bdb8a74c5d24f62d534906a166c126c5291117","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.11","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-DX9POxbK/q2D0KCZFUNU92MdZgYC4leIg4VD4GgA132LX9To0LrXAPn6AxREnB6rDfnKiP390UcxPCfxVA1s+g==","shasum":"6554c2d9b4e2cfeeac24bf34cd1bf2c30d72e03c","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.11.tgz","fileCount":99,"unpackedSize":702702,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVqVcd7wPRBj54JyoI80sRh+nzJ/u4TTkX7RaIm83BigIgeBz+fKOlQM7Li2OkDjQOdX1+T7SdOkVfJ3ttLFzZzvI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/W3qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqozw//dBPlHMQFcAUmzy2LzhJHJXBPW4fyMy+Cwf7Ws3p9SoAemL/g\r\n0OiCLJhUwP01hYKfcu01G7LDcyS9IDbTpvtd1kD6WXM2dJUaM7N0oTc8mA8y\r\nAtd8Dj213HeW9knBfd386VFpvkzf6iUKoChmiFgKQ2d5+SIZHAz9Wkge4aJB\r\nqN6TsPsYfhBBNM/1Z4FJFI4mKLYnMTiE5nVjhSjJIy9H6sokVT/lAxq3S+r6\r\n9bTLFMAQLU9W3z89RlqhSY7OE8uumTwR72q/+a3a9AFGKUrGQOlpPBU2ZAYh\r\nfHK2M4D8Sm+oazOX+q0p22xG+M50q5YuGrAQNgQm8Aizx9m/xGRyGZfCI4Zi\r\nkZ/TM7ro0zhhESn4SG7SWygdD+kdcgqqwyVQiGAsnuPC+VA4ics3EkQsqPfk\r\n3gDgVg5sFdeig/PZyCqbXMIp6dMzr+CzKMYXzFovZGGqh+UjRgotyvvuZgcc\r\ncCykx8aC2mYsl5mOpk3cvlGej2/kHpTsxwODEGSjmyEzPlm33WPCaj8iT815\r\nBgklozKLyWLlJH+IinU7niarcc0Lp41MmYB+sYA8ttBxqw6yQYXZAYhrkzjw\r\nMZvaJgOGK1gVQhwd+53XU781WdT0cPesIE+FC0euTSeehRX9qfkwMPSyjnGC\r\n1BTAspfK+sfnV8V+XrN261vFQobkyYc9Pug=\r\n=dSjq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.11_1677553129862_0.028119042833045782"},"_hasShrinkwrap":false},"2.1.12":{"name":"@genx/data","version":"2.1.12","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"shx rm -rf .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.21.0","@babel/core":"^7.21.0","@babel/eslint-parser":"^7.19.1","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-decorators":"^7.21.0","@babel/preset-env":"^7.20.2","@babel/register":"^7.21.0","@changesets/cli":"^2.26.0","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","shx":"^0.3.4","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"https://github.com/genx-tech/winston/archive/refs/tags/v3.8.1x.tar.gz"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^2.1.4","@genx/july":"^1.1.1","@genx/sys":"^0.1.7","luxon":"^3.2.1","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"590ac1ecc28fd33cba6bd91b7dc0af9aa8a1f101","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.12","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-v9lqIAIWrFK/OV7MOSrp2eDZKfnCsJO1bMh36wg3Vs6DElqaHUFFm+Vy565af0GdnVvQRjHPrdpP6uwyPL5Hhw==","shasum":"d19f5c3ac6aff5b542002a0dba0376f5e9ad77c1","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.12.tgz","fileCount":101,"unpackedSize":712084,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNufJJ7adLwaGZvVeZh72v+DTDWPvVfAlzx0zNsJC9WgIhAPA5jE4dMZUEfbNSG/n+rRveUkiBR+lKFwhCnH7Ve24l"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCEyXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmcQ/+PlSnWIN5O3LdQ2qhpJFjHM92Jqicj6ypnt/NaLDw3BwhhDwq\r\nJMe364F3iSRb0Lc1RM/MOb01zbRgtKuXA/bJIJ/KTTFKUQBDoQhyKqpqoBxX\r\nD9qAWXCMji8Eg9TjBHuTZXZFa+Wu5Jwxz8J+Ssg6FyNr7jEh+ltRzxBRvjHP\r\nqhgCCp/h37xR1NejbUz+V98y743YQVIxWLPqpgNmCcsh9ZbOSKFIVh95BYxE\r\n/SuAdVVHsR3el6ZN87/nTSw2btCVuSN11+/b8mtu9r7caVj4w+yreoGkCoHM\r\naVtD/JcmsWT+LPTZUJLhKQmigm8XNQ/rQIn0MS6djMJ9mnUvA57CcELVioPH\r\nShXNsz0jjcnBo0gBItg/8ptGwezm+j2gVj6myR8goclV6dhU74INjsBAj581\r\nVEexFGHq0CfRUOvcoh8shnfsHAnVN4hRHnUy+qTpZiKqlkI9a7VDTEZ9OFhw\r\nxNi60PLlTQLutFSV+kJLjQOZu8buklPFPQSibOwsz5Zwy1l5Vc40jMwqgts7\r\nzSRrABabafiFaQxoDWdh7hnu8HusXRLB1wuj36x/Q+YONmzLbaC+fGV+gMps\r\nLB7JXw9GvB2Mqnxx/vMLUTp25hzxEez0FMIuDGaGzClicbPZXvfHTUKdE2lX\r\nUMmdju+iaQ379c9pERMtOK8332VvAB1dvmc=\r\n=cwg5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.12_1678265494990_0.19257108965897585"},"_hasShrinkwrap":false},"2.1.13":{"name":"@genx/data","version":"2.1.13","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"shx rm -rf .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.21.0","@babel/core":"^7.21.0","@babel/eslint-parser":"^7.19.1","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-decorators":"^7.21.0","@babel/preset-env":"^7.20.2","@babel/register":"^7.21.0","@changesets/cli":"^2.26.0","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","shx":"^0.3.4","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"https://github.com/genx-tech/winston/archive/refs/tags/v3.8.1x.tar.gz"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^2.1.4","@genx/july":"^1.1.1","@genx/sys":"^0.1.7","luxon":"^3.2.1","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"ab6bc8fcabce13822ee0719365babd6286d39455","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.13","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-IeoyAKTpKi4kMBh7sU4Qb96OuU1BFCUMIIG+oKWtvtWJumNc/7NT6QDDmk+tbQwxNKLtcfI89ZeftMPsI9U4cQ==","shasum":"3223bd487c1ec3d8a178678a8005ef1ae8cdb1af","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.13.tgz","fileCount":101,"unpackedSize":713840,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDX6vqmKuC/Lqb/ZsokKiIOl9Tf4KNRmEk7VdJWjmI6EgIhAIStlE/sXul7jVl3o4r5vQYdgAEpD8BzR/RS5hI8cxyW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkR7ebACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+yQ/+ImRAy2zI8xdACAWRJqslWkl06ZrB1hYUYVfPk0JfVBN2UVb0\r\nQfi5Ttaas+kEjFIBqABPykAB7RTV7MWUG4IPyEWD+74aywaTNeHnnSJYjswB\r\nwxEva9Fo/xTY6G7hThAsWgv+ha5AuLDX13NZI5HY8pCQO5FDTCiCrk5P1ZKr\r\nFF6r3i9yxp/UkpO+1MQHCIg4duZQJInp+mopV2NUWNUgV+ySb99J3o0nyzV4\r\nSrc844/Rpuo69vBW0z4QQdAgTuq5Ml3CF9txzUC0OAN7LV1w9UCRpyp2Jtlw\r\nSTWBE+00i6fLn/gF94p6+U1857JWinbjmgiNy4zIh8lZ0cCmfzRpNjQxyrvW\r\nbmANGfLhW7oqt6+UmZxBBdV2511Twl9UPhkYxVsLZLfnPbiK93hXEgOHXIyj\r\nNedysRf+aciFvYdagk304wq2k1pJw4ocfQY6oLETpoB5UzjfNqTUc9wq4olQ\r\ntmEQwxhx2dM/t4nykRkumUrv0DGVqDTA2lUIHTLu/418sRkexcfkr/b6a0di\r\nkhntitBwTSt/LHsCYFJzQFRshrcOIxGxLLh9mfdjoMKXnX3Gczs385217lNt\r\nY/AHLfF8lp+AsnwgHUwBWUHU1wkWjNtD02d/bqcXLmeuCIcc5NgW4Ed4iziL\r\ni7bhJktCkRWxqjIHreJYw6989BAVrvz2+7I=\r\n=oG/G\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.13_1682421659691_0.9783703943032898"},"_hasShrinkwrap":false},"2.1.14":{"name":"@genx/data","version":"2.1.14","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"shx rm -rf .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.21.0","@babel/core":"^7.21.0","@babel/eslint-parser":"^7.19.1","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-decorators":"^7.21.0","@babel/preset-env":"^7.20.2","@babel/register":"^7.21.0","@changesets/cli":"^2.26.0","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","shx":"^0.3.4","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"https://github.com/genx-tech/winston/archive/refs/tags/v3.8.1x.tar.gz"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^2.1.4","@genx/july":"^1.2.1","@genx/sys":"^0.1.8","luxon":"^3.2.1","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"eb38284fa3a26d5f6f27ed3eee71b3ff7c3c81d3","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.14","_nodeVersion":"16.14.2","_npmVersion":"8.19.2","dist":{"integrity":"sha512-aHgbha81z9lpcBqYgMbzpqoRW3OWcrq0yW0xvJxQbw82KC3nW38vb+zA27Vl8V33wy1H4ukTmbpNBw0b8AH/Pw==","shasum":"ec7baa805fe9b9a3fe80e3e05ec0f2e8778ea4db","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.14.tgz","fileCount":101,"unpackedSize":714027,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3Jdc+58U5dIsDM+uzmY3vlu7SL/nYxZJ9NgSAqt9BKAIgAcqahY2PNCCMa2vJdA7RSZA6bTaaV7YRaz+ELlWtERw="}]},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.14_1683377756744_0.21499831473961684"},"_hasShrinkwrap":false},"2.1.15":{"name":"@genx/data","version":"2.1.15","description":"Gen-X Suite data abstract layer.","main":"lib/index.js","publishConfig":{"access":"public"},"scripts":{"prettier":"prettier --write . --ignore-unknown","lint":"eslint \"src/**/*.js\"","lint:fix":"eslint --fix \"src/**/*.js\"","doc":"jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md -d './docs' -r --verbose ./src","jison":"jison ./src/lang/grammar/oolong.jison -o ./src/lang/grammar/oolong.js && pnpm run build","unit":"mocha --recursive src/**/*.spec.js","spec":"pnpm run clean && mocha --reporter mocha-multi --reporter-options mocha-multi=test/mocha-multi-reporters.json test/*.spec.js","test":"pnpm run unit && pnpm run spec","cover":"nyc --reporter=html --reporter=text mocha test/*.spec.js --recursive src/**/*.spec.js","clean":"shx rm -rf .nyc_output coverage allure-results","build":"pnpm run clean && NODE_ENV=production babel src -d lib --ignore \"**/__test__/*.js\" --source-maps --copy-files --no-copy-ignored"},"repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"license":"MIT","nyc":{"exclude":["babel.config.js","test","lib","**/*.spec.js"]},"devDependencies":{"@babel/cli":"^7.21.0","@babel/core":"^7.21.0","@babel/eslint-parser":"^7.19.1","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-decorators":"^7.21.0","@babel/preset-env":"^7.20.2","@babel/register":"^7.21.0","@changesets/cli":"^2.26.0","@genx/babelnode":"^7.14.9","@genx/test":"^2.1.4","amqplib":"^0.8.0","babel-plugin-contract":"^1.3.5","babel-plugin-source-map-support":"^2.1.3","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.24.2","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^5.1.0","exceljs":"^4.3.0","fast-csv":"^4.3.6","hyperid":"^2.3.1","ink-docstrap":"^1.3.2","jsdoc":"^3.6.10","mocha":"^9.1.1","mongodb":"^3.6.3","mysql2":"^2.2.5","nyc":"^15.1.0","prettier":"^2.3.2","shortid":"^2.2.16","should":"^13.2.3","shx":"^0.3.4","source-map-support":"^0.5.19","stream-transform":"^2.0.4","uniqid":"^5.4.0","uuid":"^8.3.2","winston":"https://github.com/genx-tech/winston/archive/refs/tags/v3.8.1x.tar.gz"},"dependencies":{"@genx/error":"^1.1.2","@genx/jes":"^2.1.4","@genx/july":"^1.2.1","@genx/sys":"^0.1.8","luxon":"^3.2.1","number-to-letter":"^1.0.1","randomstring":"^1.1.5","validator":"^13.7.0"},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":4,"trailingComma":"es5","useTabs":false},"eslintConfig":{"parser":"@babel/eslint-parser","extends":["standard","prettier"]},"eslintIgnore":["/**/__test__"],"gitHead":"95aa55d43815c8dee766b2a7af7f4cfa2c98a1c8","homepage":"https://github.com/genx-tech/gx-data#readme","_id":"@genx/data@2.1.15","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-BGWBn7sNrvgjP0Q4W89474gZrr8p2VqqCaR82a9iiqd2p4TdUO4KfgDoSRzgFGF4XMtGSPefbol1j59Vx5J++Q==","shasum":"e45a4aa49674d567ec6731e8b15c4600381bd3c6","tarball":"https://registry.npmjs.org/@genx/data/-/data-2.1.15.tgz","fileCount":101,"unpackedSize":716317,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkWG5TzZs3GlqV2eFLcpzIxgDIZTisNvG9Em6va0ZhmAiBSbGMLL0WjNOg6ZNVFherhdw8otaxBmg1pCrMiVPjr2Q=="}]},"_npmUser":{"name":"rockie","email":"rockie@kitmi.com.au"},"directories":{},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data_2.1.15_1689069764014_0.18642406090971853"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-20T05:04:39.709Z","1.0.0":"2019-11-20T05:04:40.050Z","modified":"2023-07-11T10:02:44.505Z","1.0.1":"2021-01-15T02:32:53.687Z","1.0.2":"2021-01-15T02:57:46.076Z","2.0.0":"2021-05-18T03:22:26.569Z","2.0.2":"2021-10-28T08:49:55.395Z","2.0.3":"2022-04-01T06:18:04.837Z","2.1.0":"2022-06-01T11:22:06.609Z","2.1.1":"2022-06-01T12:14:43.515Z","2.1.2":"2022-08-01T11:07:06.705Z","2.1.3":"2022-09-06T01:56:11.339Z","2.1.4":"2022-10-08T08:44:42.865Z","2.1.5":"2022-10-08T08:53:50.884Z","2.1.6":"2022-10-15T16:06:56.285Z","2.1.7":"2022-10-16T03:36:06.878Z","2.1.8":"2022-10-17T01:19:12.754Z","2.1.9":"2022-10-17T11:15:56.046Z","2.1.10":"2022-10-27T13:34:31.965Z","2.1.11":"2023-02-28T02:58:50.082Z","2.1.12":"2023-03-08T08:51:35.177Z","2.1.13":"2023-04-25T11:20:59.868Z","2.1.14":"2023-05-06T12:55:56.927Z","2.1.15":"2023-07-11T10:02:44.296Z"},"maintainers":[{"name":"rockie","email":"rockie@kitmi.com.au"}],"description":"Gen-X Suite data abstract layer.","repository":{"type":"git","url":"git+https://github.com/genx-tech/gx-data.git"},"author":{"name":"Rockie Guo","email":"rockie@kitmi.com.au"},"bugs":{"url":"https://github.com/genx-tech/gx-data/issues"},"license":"MIT","readme":"# Entity Model\n\nUpdated on 16/02/2022\n\n## Static members\n\n-   db - instance of the @genx/data/DbModel class\n    -   app - The owner app (instance of @genx/app/ServiceContainer)\n    -   connector - The driver-specific db connector\n    -   driver - Getter for the dbms name, e.g. mysql or mongodb\n    -   i18n - Internationalization\n    -   model(name) - Getter for entity model\n    -   entitiesOfType(subClass) - Get an array of entities with one of the subClasses as specified\n    -   async retry_(closure(ok, failed), [times], [interval]) - Try several times (default: 3) to do a transaction in case rollbacked due to competition\n    -   async doTransaction_(closure({connection}), errorHandler(error)) - Wrap a transaction block\n\n```javascript\n  // Model usage\n\n  // inside a entity model\n  let User = this.db.model('User');\n\n  // inside a controll or anywhere the app instance is applicable\n  let User = app.db('dbName').model('User');\n\n  // call CRUD\n  await User.create_(...);\n\n\n  // Transaction\n  return this.db.doTransaction_(async (connOpts) => {\n\n      let ret = await this.sendToGroup_(senderId, group.id, msg, connOpts);\n      await this.sendToGroup_(senderId, group.peer, msg, connOpts);\n\n      return ret;\n  });\n\n\n  // Retry and transaction combination usage\n\n  return this.db.retry_('transaction name for logging', async (ok, failed) => {\n      return this.db.doTransaction_(async (connOpts) => {\n          //...operations need to compute\n          // result set\n\n          return ok(result);\n      }, failed);\n  });\n\n  // Use SQL expression\n\n```\n\n-   meta - Metadata about the enttiy\n\n    -   name\n    -   keyField\n    -   schemaName\n    -   fields\n    -   features\n    -   uniqueKeys\n    -   indexes\n    -   associations\n    -   fieldDependencies\n\n-   i18n - I18n object\n\n## Customize entity model\n\nWrite a mixer for customizing a entity model\n\n```javascript\nmodule.exports = Base => class extends Base {\n    static async getStreetTypes_() {\n        const streetTypes = require('../../data/streetTypes.json');\n        return streetTypes;\n    }\n};\n```\n\n### Triggers \n\n-   beforeCreate_\n-   beforeUpdate_\n-   beforeUpdateMany_\n-   beforeDelete_\n-   beforeDeleteMany_\n\n-   afterCreate_\n-   afterUpdate_\n-   afterUpdateMany_\n-   afterDelete_\n-   afterDeleteMany_\n\n## CRUD operations (static method members)\n\n-   async findOne_(findOptions, connOptions)\n\n-   async findAll_(findOptions, connOptions)\n\n-   async create_(data, createOptions, connOptions)\n\n-   async updateOne_(data, updateOptions, connOptions)\n\n-   async updateMany_(data, updateOptions, connOptions)\n\n-   async replaceOne_(data, updateOptions, connOptions)\n\n-   async deleteOne_(deleteOptions, connOptions)\n\n-   async deleteMany_(deleteOptions, connOptions)\n\n-   async cached_(key, associations, connOptions)\n\n-   async retryCreateOnDuplicate_(dataGenerator_, maxRery, createOptions, connOptions)\n    - Regenerate creation data and try again if duplicate record exists\n\n-   async ensureFields_(entityObject, fields)\n    - Ensure the entity object containing required fields, if not, it will automatically fetched from db and return.\n\n## Helper methods\n\n-   fieldSchema(fieldName, options), returns the field schema for input validation, options can be used to override the default auto generated schema\n    - $addEnumValues, for enum values to add some fake value which not accepted by db but can be consumed by business logic, e.g. all, none\n    - $orAsArray, accept an array of the specified type\n\n```javascript\n    // returns a schema object which can be used by @genx/data Types sanitizer\n    Message.fieldSchema('type', { optional: true, default: 'info' });\n```    \n\n-   inputSchema(inputSetName, options), returns an input schema object \n\n-   assocFrom(extraArray, fields), returns a unique array combine the extraArray and the associations inferred from fields\n\n-   getUniqueKeyValuePairsFrom(data)\n\n-   getUniqueKeyFieldsFrom(data)\n\n## Operation options\n\n-   $projection\n\n```javascript\n$projection: [ { type: 'function', name: 'MAX', alias: 'max', args: ['order'] } ],\n\n$projection: [ this.db.connector.queryCount() ],\n\n$projection: [\n    '*',\n    'bookableResources.type',\n    {\n        alias: 'bookableResources.count',\n        type: 'function',\n        name: 'COUNT',\n        prefix: 'DISTINCT',\n        args: [ 'bookableResources.id' ]\n    }\n],\n\n```\n\n-   $association - No trailing (s).\n\n```javascript\n// use an associated name inferred by foreign key\nconst association = [ 'person' ];\n\n// use an explicit joining between two entities without connection by foreign key\n{\n    \"$query\": {\n        \"ownerUser.mobile\": \"+61412345673\"\n    },\n    \"$bypassEnsureUnique\": true,\n    \"$association\": [\n        {\n            \"entity\": \"user\",\n            \"alias\": \"ownerUser\",\n            \"output\": true,\n            \"on\": {\n                \"id\": {\n                    \"oorType\": \"ColumnReference\",\n                    \"name\": \"ownerUser.person\"\n                }\n            }\n        }\n    ]\n}\n\n// complex usage with dynamic result selected\nconst association = [\n    \"listing.prices\",\n    \"address\",\n    \"propertyTypes\",\n    {\n        \"entity\": \"resource\",\n        \"alias\": \"resource\",\n        \"output\": true,\n        \"on\": {\n            \"listing.resourceGroup\": {\n                \"oorType\": \"ColumnReference\",\n                \"name\": \"resource.group\"\n            }\n        },\n        \"dataset\": {\n            $query: {\n                \"mediaTag\": \"LOGO\"\n            }\n        }\n    }\n];\n```\n\n-   $relationships - Transformed from raw $association, used by the EntityModel internally\n-   $query - Query condition\n\n    * Non-KV-Pair query\n```javascript\n// See Lang helper for more details\n$query = Lang.$func('FIND_IN_SET', category, Lang.$col('categories'));\n\n// Complex usage 1\n$query = { // `status` = 'published' AND FIND_IN_SET(category, `categories`)\n    $and: [\n        {\n            status: 'published'\n        },\n        Lang.$func('FIND_IN_SET', category, Lang.$col('categories'));\n    ]\n}\n\n// Complex usage 2\n$query = { // `status` = 'published' OR FIND_IN_SET(category, `categories`)\n    $or: [\n        {\n            status: 'published'\n        },\n        Lang.$func('FIND_IN_SET', category, Lang.$col('categories'));\n    ]\n}\n```\n\n-   $variables - Variables to interpolate into query condition, will be passed on to associated operation\n-   $features - Custom feature options override\n-   $orderBy - Order by condition, map of column to ascend?\n-   $groupBy - Group by condition\n\n```javascript\nconst numDeals = await this.findAll_({\n    $projection: [\"status\", this.db.connector.queryCount(null, \"status\")],\n    $query: {\n        agent: agentId,\n        $or_0: this.db.connector.nullOrIs(\"fellOver\", false),\n    },\n    $groupBy: \"status\",\n});\n\n```\n\n-   $offset\n-   $limit\n-   $totalCount - Returns total record count when used with $limit, should provide the distinct field name\n\n    - Used without association or with reference association which only joins record, just use $totalCount: true\n    ```javascript\n        const { totalItems /* integer */, items /* array */ } = await findAll_({\n            '$query': { template: 1 },\n            '$association': [ 'template' ],\n            '$orderBy': { createdAt: false },\n            '$totalCount': true,\n            '$limit': 5,\n            '$offset': 0    \n        });\n    ```\n\n    - Used without association which may joins multiple records, should specify a unqiue field for preventing from counting duplicate records brought by joining, **otherwise the returned totalItems may include duplicate records**\n    ```javascript\n        const { totalItems /* integer */, items /* array */ } = await findAll_({\n            '$query': { template: 1 },\n            '$association': [ 'tags.tag', 'template' ],\n            '$orderBy': { createdAt: false },\n            '$totalCount': 'id',\n            '$limit': 5,\n            '$offset': 0    \n        });\n    ```\n\n-   $includeDeleted - {boolean}, for find only, include logical deleted records\n-   $skipOrm - {boolean}\n-   $objectMapper - {string} Object mapper , flat or hiarachy (not used yet)\n-   $custom - User defined operation control data, used by user program only and will be passed on to associated operation\n-   $retrieveCreated - {findOptions|boolean}\n-   $retrieveUpdated - {findOptions|boolean}\n-   $retrieveActualUpdated - {findOptions|boolean}, for updateOne_ only, retrieve only when the row is actually updated\n-   $retrieveNotUpdate - {findOptions|boolean}, for updateOne_ only, retrieve only when the row is not actually updated\n-   $retrieveDeleted - {findOptions|boolean}\n-   $retrieveExisting\n-   $retrieveDbResult - return the original db result through options.$result\n-   $bypassReadOnly - Internal option, cannot be set by user\n-   $physicalDeletion - {boolean}\n-   $existing\n-   $requireSplitColumns - {boolean}, for udpate only, will be auto set while input has function or expression\n-   $bypassEnsureUnique\n-   $toDictionary\n-   $migration - {boolean}, set by migration program, will be passed on to associated operation\n-   $upsert - {boolean|object}, for create_ only, insert or update on duplicate, pass object if insert extra data\n-   $nestedKeyGetter - a getter function to transform the key of nested object, default as ':'+anchor for mysql\n-   $skipFeatures - an array of features to skip\n-   $skipModifiers - Skip field modifiers, usually set upon importing backup data which are exported from db and already been processed by modifiers before\n-   $transformer - Transform results before returning\n\n```javascript\n$transformer: {\n    user: [ '$$CURRENT.:user', { $pick: [ 'email' ] } ],\n    agency: [ '$$CURRENT.:agency', { $pick: [ 'name' ] } ]\n}\n```\n\n-   $dryRun - for create only, just do the preparation check and skip the actual db creation call\n-   $key - specify the primary key field of and main query table for complex SQL situation, e.g. pagination\n\n\n## Complex usage\n\n### Using functions in projection\n\n```javascript\n{\n    $projection: [\n        News.meta.keyField,\n        {\n            type: 'function',\n            name: 'ROW_NUMBER',\n            alias: 'row_num',\n            args: [], // ROW_NUMBER()\n            over: {\n                $partitionBy: 'reference',\n                $orderBy: News.meta.keyField,\n            }, // ROW_NUMBER() OVER(PARTITION BY `reference` ORDER BY id)\n        },\n    ]\n}\n```\n\n### Using function as the value of a field to update\n\n```javascript\nconst updated = await this.updateOne_({ // data to update\n    score: Lang.$expr(Lang.$col('score'), '+', scoreDelta) // `score` = `score` + scoreDelta\n}, { \n    $query: { // where\n        id: opportunity.id \n    }, \n    $retrieveUpdated: true // select the updated record after update finished\n}, connOpts);\n```\n\n### Using expressions in query\n\n```javascript\nconst queryObj = {\n    $query: {\n        status: 'published',\n        $and: [ // `reference` IS NOT NULL AND (TRIM(`reference`) != '')\n            {\n                reference: { $exist: true }\n            },\n            Lang.$expr(Lang.$func('TRIM', Lang.$col('reference')), '!=', '')\n        ]\n    },\n    $orderBy: {\n        createdAt: false\n    }\n};\n```\n\n## Connector options\n\n-   insertIgnore - {boolean}, for create only\n-   connection - for transactions, reused the transactional session\n-   returnUpdated - return the exact updated rows id [supplement for retrieveUpdated]\n\n### Connector\n\n-   aggregate_ - [new feature] aggregation by pipeline of stages\n\nMySQLConnector\n\n```\nconst result = await connector.aggregate_('t3' /* table name of starting query */, [\n    { // stage 0, select from t3\n        $projection: [\n            'c',\n            {\n                type: 'function',\n                name: 'COUNT',\n                alias: 'count',\n                args: ['c'],\n            },\n        ],\n        $groupBy: 'c',\n    },\n    { // stage 1, select from stage 0\n        $projection: [\n            'c',\n            'count',\n            {\n                type: 'function',\n                name: 'SUM',\n                alias: 'cumulative',\n                args: ['count'],\n                over: {\n                    $orderBy: 'c',\n                },\n            },\n        ],\n    },\n]);\n```\n\n--- \n\n## operation context [for @genx/data dev only]\n\nThere are predefined context properties which can be accessed in an entity operation as listed below.\n\n-   operation - 'create/retrieve/update/delete'\n-   raw - Raw input data.\n-   latest - Validated and sanitized data.\n-   existing - Existing data from database.\n-   i18n - I18n object.\n-   connector - Existing connector for chained operation.\n-   result - Operation result.\n-   return - Data to return, if retrieveCreated or retrieveUpdated or retrieveDeleted is true, return will be the just create/updated/deleted data.\n-   entities - Access other entity models in the same schema\n-   schemas - Access other schema models in the same application\n-   state - Current request state\n\n## cascade creation / update\n\n```\nawait EntityA.create_({\n    key: 'value',\n    \":children\": [\n        { childKey: 'keyValue1', ... },\n        { childKey: 'keyValue2', ... }\n    ],\n    \":entityB\": {\n        key1: 'value1',\n        key2: 'value2'\n    },\n    \"@entityC:\" {\n        unikey: \"a entity C id\"\n    }\n});\n\n//1. the above call will create a record of entity B\n//2. then get the the id of entity C with a group of unique keys (1 or more field pairs) of entity C\n//3. then create a record of entity A with a reference to the id of newly created entity B and the id of entity C fetched at step 2\n//4. then create a list of children of entity A with a reference to entity A stored in each child records\n```\n\n## operation helper [for @genx/data dev only]\n\n-   queryFunction\n-   queryBinExpr\n-   queryColumn\n\n## operation execution sequence [for @genx/data dev only]\n\n1. prepare query & context\n2. sub-class before hooks\n3. wrap in transaction-safe closure\n4. pre-process data\n5. features before hooks\n6. driver-specific pre-process\n7. execute the operation\n8. driver-specific post-process\n9. store query key\n10. features after hooks\n11. end transaction-safe closure\n12. sub-class after hooks\n\n# Types\n## Sanitize Object\n#### Example\n```\nconst schema = {\n    a: { type: 'text' },\n    b: {\n        type: 'array', elementSchema: {\n        type: 'object',\n        schema: {\n            c: { type: 'text', optional: true },\n            d: { type: 'text', optional: true },\n            e: { validator:()=>{},convertor:()=>{}}\n            }\n        }\n    }\n}\n```\n\n## known issues\n\n-   hierachy projection - The key field of each layer of the hierachy structure is required for deep populating the target object\n-   retrieveCreated - The query for newly created maybe affected by parrallel updating\n-   retrieveUpdated - The previous query maybe affected by parrallel updating\n-   retrieveDeleted - The deleted returned may differ from actual deletion (when data changes between find and delete)\n\n## change logs since Apr 2020\n\n1. Add -1 for descent sorting for mysql connector, and now both false and -1 for ORDER BY DESC.\n2. Support custom validator and convertor to object sanitize.\n3. Add more runtime operator for database\n4. Add non-kv-pair query support\n5. Fix bugs\n6. [15 Oct 2022] Fix incorrect number of records returned, when using limit, offset and counting on multiple joining\n","readmeFilename":"README.md","homepage":"https://github.com/genx-tech/gx-data#readme"}