{"_id":"resin-multibuild","_rev":"345-7ca0e3eca0bc8d3ca169230500c1f0a0","name":"resin-multibuild","dist-tags":{"bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd":"3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd","bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37":"3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37","roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e":"4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e","rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255":"4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255","rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2":"4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2","rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53":"4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53","rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85":"4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85","rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1":"4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1","rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e":"4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e","rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6":"4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6","rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0":"4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0","rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385":"4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385","rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28":"4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28","rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286":"4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286","rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af":"4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af","rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc":"4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc","rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5":"5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5","rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e":"5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e","rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02":"4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02","rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e":"4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e","rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c":"4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c","rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3":"4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3","rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364":"4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364","rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5":"4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5","rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236":"4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236","rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208":"4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208","rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7":"4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7","rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776":"4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776","rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1":"4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1","rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5":"4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5","latest":"4.12.2","rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff":"4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff","rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca":"4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca","rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f":"4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f","rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8":"4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8","rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2":"4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2","rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728":"4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728","rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993":"4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993","rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b":"4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b"},"versions":{"0.1.0":{"name":"resin-multibuild","version":"0.1.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.1.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e6eed1249a6cd8d6c4728a22874807d439fbb0c2","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.1.0.tgz","integrity":"sha512-OQRSbaMPF39Vr8wIwti4LpEh2Vzmf/ccV9AE3GDz7jZ5CYd6ATZx+90KttQ8H9e0wrQaEWUnkIYs0PXPFi2LIA==","signatures":[{"sig":"MEUCIQCyaRejU20a9lBo25Y4O3jsvPz/6cRuZbmQEcSFakG9IAIgLBCqg02tzRH5VYE7cMVMBRtPeRc8wmuYFTxb85BmI8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"dd2aa21391669c5119c1666c917de0e329c81dd1","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.1.0.tgz_1512647961642_0.4864343455992639","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"resin-multibuild","version":"0.1.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.1.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"593b9b6794524012520a2df2fd060609976daf6b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.1.1.tgz","integrity":"sha512-jo31LnxkykupntMtgCc3xmiEQoyEQ72Hr+CMnrTjCGbarPGYe4Ph2H0cD1C0DOVDzQCzHFFzoYi2TN3ZNNqWcg==","signatures":[{"sig":"MEYCIQCU2do+pxt7kjA9pZ8NU5AQwysyuhFS5NhX5Ys//CXWRQIhAPF19Aw3zZNcVzcn8hdTpZthIHw4nWBJA6AdC+vWI8ZR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"dca1167a97b9176fad2e9bb4df9cf4cd307b5f10","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.1.1.tgz_1512654197585_0.21632701507769525","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"resin-multibuild","version":"0.1.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.1.2","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"66f9887bb668bfb33d1869e5bbf2fc98a14cbab8","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.1.2.tgz","integrity":"sha512-0vOZhiAkAI1SZO3qJUMpeUOBgUbnxQWFVheTEo4Rj4WFdA4+37/UHxYu37atgd7G+44P1KsL3tERXkFHF5iSIA==","signatures":[{"sig":"MEUCIDYBRANCuaY95TUirkLPKzYjJAHbKXiTS6E4RImUNO03AiEAzpHlEMiNgxhfIIwMO0DuuquOJuTFrc/NJsUbv4eJ32c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"f4d231651032e2cd79baca629c4c9bef39d632e9","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.1.2.tgz_1512661316499_0.2757546277716756","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"resin-multibuild","version":"0.2.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.2.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"5e61e7d90917a55c95612386dfc6eae499b9b335","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.2.0.tgz","integrity":"sha512-XVIyvd+6UCTnWZM+LXUHtpTxvSF0HPhrAKfmjw9rmVNORuZ9Xgy3oh2UAiZzRvpoMYNCMvMmVSLuEeazHOPGIg==","signatures":[{"sig":"MEQCIDEvNiYv9fZmAQ9JONEiK8+9pQvVOyEAkXC6jBauXzmhAiAMYSYYXjLUuKXXLqeuZDlbQa531VIUV27NeAJlNXCVjw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"5bdd87b5be5de3e11b0b5d4f88bdc5a28bd62f22","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.2.0.tgz_1512663941623_0.5485520507209003","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"resin-multibuild","version":"0.3.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.3.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b79f4d03cc5292d14a134212af3b71b4e55cc61d","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.3.0.tgz","integrity":"sha512-Aje0qeQoEwzi2kzcNGNLXSw9WbTsootg+JsWsHpr2jnZukLtZFl8lBoNxPqerNzbViVuPekAtgHyjAqvlcL+rA==","signatures":[{"sig":"MEUCIQD6EY4/dv72aj4un7pbYiEd6dFyDqMuI9s0vJIgVOPu+QIgT6ctCZBDxxrNHKJZqFb2JOxFJv1BAaeJwCaQ7gC/PQg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"74f296cd89d2b2d644b9fc66c9fc5a7ffaf0c5cb","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.3.0.tgz_1513165328680_0.750953201437369","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"resin-multibuild","version":"0.4.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.4.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"5ffdc54d630784933018861a48f0c1c11efaf288","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.4.0.tgz","integrity":"sha512-sHcOtCrxr1TakndbSOimq2EEFpQclFTm5+Svu5CRje+KKfZcL3gDScA8SkQ+KNUXeOTw/5l7FjTDwd5K0XbRtg==","signatures":[{"sig":"MEYCIQCFinsVHT5RCAALWzyj7UHwcS84IET5Eu3LMKLvYM+mnwIhALoboo676SQMj9SeUfgrpyxtGO7ZEJUcx6FYa487XS2h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"93640d863a76ed6f641c05b19a78fb72f0e0e301","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.4.0.tgz_1513258942719_0.632922931574285","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"resin-multibuild","version":"0.5.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.5.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ba2799816e580f2325bba91ba2f8835589738e0f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.5.1.tgz","integrity":"sha512-sJjaqX6CezV+Y2yBrkc973Venpkkv3Kj/SQuAh/1YcJzTrW6CZ+ut30zC1aTvN3wf6Xu14ZXYd97h0OjUub58w==","signatures":[{"sig":"MEYCIQCrkKDrvzs5rJ9anQxc2KVZA7Nn87Ws6jqcsuSthTZJegIhALw3hOU3lAluZusApWhVJUwD8oYSfIhq3+w/WXnoFUb5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"build/index.js","types":"lib/index.ts","gitHead":"07a575fb1f10bba55665ce7b5947fb06e1b62a0d","scripts":{"lint":"tslint '{src,typings}/**/*.ts'","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","tslint":"^5.8.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild-0.5.1.tgz_1513870220097_0.39827565429732203","host":"s3://npm-registry-packages"}},"0.5.3":{"name":"resin-multibuild","version":"0.5.3","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.5.3","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"4dc6b77a65694ebb66ca838f1f483b02ae118065","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.5.3.tgz","fileCount":30,"integrity":"sha512-Q+j/t2++v4PYRou0MokHkODkvsBz80NLacOCj3WVY2O3jE4nMtzk4ciAmGiktsutst6WcjeZj4wXhIMkm6CLAg==","signatures":[{"sig":"MEUCIBDxEjpJWb12/zi5yQakHFTWyFXW09COtmYJd1wCm1HXAiEA4yKK09Zi2KUF7kzN+esiSMof79AabcS19ZF8CjWf9zQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33337},"main":"build/index.js","_from":".","files":["build/*.js","build/*.js.map","build/*.d.ts","CHANGELOG.md","README.md"],"types":"lib/index.ts","_shasum":"4dc6b77a65694ebb66ca838f1f483b02ae118065","gitHead":"2282a4a2226a64b2afaafda7753b95758c9f15a2","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"4.1.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.3","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.5.3_1522168730129_0.40591980029512365","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"resin-multibuild","version":"0.5.4","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.5.4","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"5bec363fdbf0f31e57e26a5991a6ab7e2486d44f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.5.4.tgz","fileCount":59,"integrity":"sha512-GF90VXXsq6F2SEdx1KNgDNG6ksaSfWabXD3pbRZ/BG0aii915DbRnSzEXnbEC+wLt8JieEb3fhXt9Q5byU/cuA==","signatures":[{"sig":"MEUCIQDWItjjBFYCoiTtRTbcWqyQ+s1AmhZPlBdnTJPB0HA6jAIgFM8MinaPRS3QBcqvbXJO8qyvxokGMnqGPwk35b8Bm48=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149009},"main":"build/index.js","types":"lib/index.ts","gitHead":"636d3413cfac55b11807f9be3fd62943a4eaa4ff","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"5.5.1","description":"Build a docker composition","directories":{},"_nodeVersion":"8.9.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.5.4_1522227544187_0.9373118215629583","host":"s3://npm-registry-packages"}},"0.5.5":{"name":"resin-multibuild","version":"0.5.5","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.5.5","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e1194b02fde4dcacf62b84a6b91b220b73baa869","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.5.5.tgz","fileCount":51,"integrity":"sha512-zYtDrDqc6CgDQCyp+ZmVN/DLTucCUtlEkQYVWsgeLsyGhw1Fk85DAWjR3DCoSE/4SqefbyEQd105lgujWR7TuQ==","signatures":[{"sig":"MEQCIB8fbUqj02VAQsXojMGKZiyLXRUv6Dp5U502bjj0KuANAiAYWSxd87kGE324SPgZAjtNGHDVOuAMZTSSnmN4fBU4gA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3x2wCRA9TVsSAnZWagAA3WYP/051F3nuFtdNMxqAagaX\ncvdJH8QGZTLoKKQ6p8lH0TwvcYQguEqTYW1puKOliF7mGkV3ZJ66ldCnyxVm\nX3NNgeY8uJUOkkqCc8oa6TA6HgoHl1bMKGX9mUAxosPu9KpkJXSmCNcqPcOh\nUILUPFyZ2avlOqWovSsMuqgK3ww45icWNKg1osmjicVl9u5s3llJItrYiW2x\nl+Ix1bGwpNhZrfYztKyZMQSJGSyhMYpKURCy/o8ONm+g5Za7uuA8pG+0ADec\nqtOU+M5AgZsTg+zRG2hxJuZ+QA8qQiV404bPkDuBha04DELPe4o2dXpSAnIP\nr5PCWkbAUJ62wxwQtpRJQN81vpT5U2HIpUuLpukRyZEgJIo4uMgn6sa07EUy\nD1GEP+NX22xY55MIcVi8eEbN+CUQP/PZM7HrdixdqJQLc3pwt05GXAMeMdZ+\nctCk1dbN7dPeZWMvghS87Reilo9vcYoZ2Gpu0ubf3Orp3oRFKSquRhHrayMT\nEG+MS/Oae7Vyudi46RD/ivnT2EZG4utL4CkYGc9KqrbyOsr1N3fBT0cFpfBR\nmgPZu0sJJl7ADzCGPF5s25qPRKs9wXJ5o+yGILcfHHO7E5gRXTV6CnMWL1Hy\n8IRhKlEp2V+DBRdmrBg0yjuStmZ+f3cZHeKAvVibzIxNERh8k8+M5Emdn8Zm\nDSwq\r\n=+jF0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","_from":".","types":"lib/index.ts","_shasum":"e1194b02fde4dcacf62b84a6b91b220b73baa869","gitHead":"a4a7ffa4e7ddac691b5137e6ee8085439793388e","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build","prepublish":"npm run build"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"4.6.1","description":"Build a docker composition","directories":{},"_nodeVersion":"7.3.0","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.5.5_1524571568248_0.014364747901105535","host":"s3://npm-registry-packages"}},"0.5.6":{"name":"resin-multibuild","version":"0.5.6","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.5.6","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"0bcf8463068be459bcb90674d5fa9be3a14f41e3","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.5.6.tgz","fileCount":51,"integrity":"sha512-RNrTNDS6XPqi+UfWl6uqos6kEGpmsvqUrH0OYM7nS4c1o1Jq2StFAKgy0D36QdZrDkXmxlKGFjxc2tNOshBWbA==","signatures":[{"sig":"MEUCIQD0lfgK1VFNUbyWG4VzcnddihlaTJzb14edcg5fGMVBxAIgJMkHyXhC+av3n+dAQpP1O7nklQpjgoELi/yvAtmOfko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3zM6CRA9TVsSAnZWagAAwh4P/0Sh9x89Lz5SXGdDNoAU\nJavXWdwqTOXZ9VG8SU7i9yg1T2Eqx2Ms7WnD8hCIJRzC7KHTXTYY8g3sUnzN\nkB6Vwe8U0t6bLjKDNcwWjR9lW9jVPOxIMx9Y+G07AA3aw/A2+lEHwr1L7KcH\nkxg2fvvZzJEpYgZQvpR5Z3IX0puuQE0JI6uKg6mK5LnEfsPa5Fit3OPFn+Xr\nPA4eSB1oVFez/9uCkZloKMHcFWo4QLL8AafG/tDWxzOttWKzRyys5tv5FjqA\n6vD6RCbqaqeMBYoFKFB9KSVat6oM6SGRMQWEjqvc/VrHR+PpVLQ+/NRNZ7bU\n81Dix9mbcm69jD8WhspsW9jTznhySH4KgpVs5mKrE/PaCAV/qozcMXI0CW0N\nPPmV7wq1bqFVYnWTIc21hOtY5TawxMQ9g2VCFyBQDERwq73TcgB1PwAVgQpj\n11Q6f+nukPgJEqio9hFMfHgfLci52hmV5kLzKE3ofWRm57PvfDxWDRV9X0hX\n1phyImQcH12IR/PXAVwo+2itdkH25psTPWjrd/w/8o+FrQ0p9HMtNpkh9jud\nm+btzyUv4yEEyKCV6tr3WIyjENEnHcOHAWHhNuFsAvhKSbXTOCGV6+ofpFP1\nOmlAKN0bVanymyv/zD0audr/Om2VIi8stIL0cvbHc9bfhjxqoHfAZXcmeRfM\nNJQO\r\n=XRdq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","_from":".","types":"lib/index.ts","_shasum":"0bcf8463068be459bcb90674d5fa9be3a14f41e3","gitHead":"1d9ece4b307670cc040971742cd2611e177c1a83","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run test"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"4.5.0","description":"Build a docker composition","directories":{},"_nodeVersion":"6.10.3","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.5.6_1524577081677_0.03806594409930697","host":"s3://npm-registry-packages"}},"0.6.1":{"name":"resin-multibuild","version":"0.6.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.6.1","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"1b0a97b98fb2555889a0e32cb1c223c3ccfa4bfa","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.6.1.tgz","fileCount":51,"integrity":"sha512-u4lyCAqGf0aT6DK4Myecn9/LKNcb+InOmIuYj6t7E/EAzouHRuqx0+EHy3XIrkqfbs6Ox7OcBZ0A+pzV95I5Lg==","signatures":[{"sig":"MEUCICntbuuL5g5L2WoiQ28J+VhaRMX78KosLHRpza65hBHmAiEA2VQM3ap9ypoO5tGIuZHuMIVhN4/qHmDCmt0uPVjYNFw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa30ZKCRA9TVsSAnZWagAAbGMP/RrSPJCrAaDxasb+mMtC\nlyGHlBFdjtLs4q+M7JuZCCjo4gEFSPaDkGpvndFRilXYjJ+qWuQ3gQ1cBp52\nea1T0HsRB3uU4H7/Q+90XBat5ygrKMIT81G1/N9vqVZDuqmB4FslUVoSaBmM\nOh0dJvY1U7mcIfX9jfAWl6JFQbIeh+NS4cY/SMNvuQdUswpO5ooRcLGyi0D5\nGD9ezK96Spw++Jl6UMx4BeZ+qfgvsj7LVodDg2a0RdFqd3UTftH/w/qxc/r3\nhBuEchNy7O8xmG48Lbl52eGshKBk+WoVd9DOixmtQB5QpOQj6DCSZ8rUR3Ub\nBohsKrWe6HWofU8C3QQQVTnYSkR7+XxIuMm9DLILDwLn2wtOMm8OshLfiGXD\nzSPPgLkPBjkLNi1t9Qczz9pqfgPmKrKqAOFBcXxe4Pljdrd3rbmnubkq+J0p\nm7pM2LVTWZxRxxJ2AFJgi6JUvRXXglHK+fadcp+G76ol4rmCsYLH6BSjYvc+\nJwajf2k9N3AuZojJG7qdmm8kzLwdg5Fez2XhDSnRFxyu3tjILj44RIIcrl4N\n6jPDGnhCwpsY8tjqp0sIIErmgIEPbVGNYvOGdmOY6aOWpNTDcyFz6aPj7DPb\nnN2GFiglqXTUhxIQYq98mV5wsB+gGAOyj2NRAyhZtQUhFl+jM1u8sdUKTD7S\np4KB\r\n=RJ1j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","_from":".","types":"lib/index.ts","_shasum":"1b0a97b98fb2555889a0e32cb1c223c3ccfa4bfa","gitHead":"2813dcf3e4692edc98450230d144242ac46d33be","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"3.10.10","description":"Build a docker composition","directories":{},"_nodeVersion":"6.14.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.6.1_1524581962013_0.41925067361237534","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"resin-multibuild","version":"0.7.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.7.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bde3ad34532385c4efb1131a8a585df6522f8a70","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.7.0.tgz","fileCount":51,"integrity":"sha512-mFhqPTFjC3jX3rhtwlHSUmyV9nXWSI7OvQaTBLPSKucuAQ0Q1vfBPhNO5WOZxxP1pLJ9R432v1pPEIVF+SXuHg==","signatures":[{"sig":"MEUCIF5+J8XuCGkuEN63cfKm5Foep0JMC4X64BuT2CkMak1NAiEA4PRfAiQWk4ZbhPnZfU5VmZBuba0+o4m/UdnlXSf77Ec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5xFtCRA9TVsSAnZWagAAPz8QAJINQ7JfOTWijGIJ+Ute\nbqOh8dvuC2VbEPXn1zdjZruA6bGDozk4JvqulZ9AAZOjomnGAtHaJzpVRbUI\n1DIIQSzsf1Dfb+rBUnEkx8PFuIqPUKW41vxZEA4Z5rWbVUFihxbEuZAflHC+\nVSCTmarTQv1wORfppt8Rw8BWi3pZXHz5HPWsjA6qXF5N2o35SHfvE9vtYzoW\n2tfXbZtkIkr70XT3lomc9mA4vyU2qcOagLPFsNsTbj0HsV4+kUUEV8AumEC6\nU5OWWqwnG48sqL4oyf4NREM6eTqU42LN8DD3C/tDtdrVeiXUZzuFYQT/QSJY\nXutIn8IbVlFYL5kZR5hSRnFPgTuYXT/bOZpby3iQrekgJRoJDSQEW8IjlKNl\n2DNCxwyxgajy1rh7t4ec4sIi9b3nxgR/eSlixkGB3b5+6MGPMPvVAX2u3B4z\n2Yi4fqtMFuAlZ5zRSysXWlu3IpCidteAJMoTQ5eVr5lTpND15kzq4kkY6U5m\nL1Hoz9m4Vv4619Y8vOJAh1kdIe/y6WrNtErgc5YC3ZDALvntBJq/cWltsGF+\nTBMUNzNTaSzWXo2wucLMX2n2DO8iXp8umIlHwnXc/FzQ1Buzi0/zME+xiMl7\n32EDHmCVIh+82tFwvAzJ/OoEAlOD1tnnKXFZNSipb2rYQI5PerieZi1TqccJ\n1XGJ\r\n=2fdA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","_from":".","types":"lib/index.ts","_shasum":"bde3ad34532385c4efb1131a8a585df6522f8a70","gitHead":"fa61ea6bbe494f2172cca6cbb7ac185bde6e7f31","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"3.10.10","description":"Build a docker composition","directories":{},"_nodeVersion":"6.14.1","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.7.0_1525092717143_0.5610819073650721","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"resin-multibuild","version":"0.8.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.8.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"1287fe6183d0379aa189136a00ddf99f64716fea","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.8.0.tgz","fileCount":51,"integrity":"sha512-9pddXq/X5rmCoPO3jK2RPOMZV+ZOTX7zd0v/XnOZIboxZlWsSZdPp0ijiS4BRCd6audF9c8r/XV956K0b1uX1Q==","signatures":[{"sig":"MEUCIQDQgJ2wP7u7AZz4Q1jA4IB/vn1vbhdwEgPDGxmdTzsoMAIgafOgjp5vyoSlqBXYkAfjQnGDg5zC6EMZA6UTG70xNeg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9B7sCRA9TVsSAnZWagAA7ugP/i+v8a7Yuq/Yny2Y3Uua\net7jPZ6WQjvQ5+qfzjOTz5n0KFdGFE8hj5nAU0zA1AOnYZUq/JqniEZN3Yic\n3Pz1KapJ7UGRtlJUSaLblZsBG+JFUftN0BXCdVH9wGoAjntPocwwAcLzDjLJ\nwH/e9BqC5KdFZNTJWNvJiXrbjX2poLtkaeVbLc5ovB6bcgE5b0lH8xLna1Wt\nvjAD1qNE//c9zlBecPLMbNd6GE9VrCK4CLgjSRM7LX1n2z5nEkbazMJKtoFm\neYIbrzDoylHpxhaeNJ/HWkVWUHNZ4bganxxqbcDAB0naXEUaoyN5c9g1UmW8\nv3j5Jwx5DhB6+/Kwg2Fals6H89ZmsotsHsZYGfakJOXLLwZ6WjCfvkhXRPe4\ni2Mu+WaaNC4VYDHxt514kH00ZTjRgM3y6xhhn1OnX+ZwDLE44QL7ql0qAVXo\nlmA8XZ8A96V2YQpA9WASchPF2Je5mf4dFEyQ/dczlXtoyEg+jg0B5SUBmDqW\nGW3dTEUYX1bEnbFl/nloJMrCsbdAEujQkhNPkpfJ/yNMe8yBRLAhGUn+J0nh\nQcI/pw2sP5U8Oem5694QS1tKWjIVlQKZ3pWRvgnpXx4fHspjKzm0lm6/HVQ5\nIuJ9uVKLauJ3IFepzy545H8RzDU15bC9ZiADFi+o1qcZcOlsChuR++pMv1Ez\nAk9l\r\n=Jfr9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","_from":".","types":"lib/index.ts","_shasum":"1287fe6183d0379aa189136a00ddf99f64716fea","gitHead":"4d2495084b5fccd33d4fea126c5020ded743db8b","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && ts-mocha test/*.ts --timeout 60000","build":"tsc --project .","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"3.10.10","description":"Build a docker composition","directories":{},"_nodeVersion":"6.14.2","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","@types/node":"^8.0.53","typed-error":"^2.0.0","@types/lodash":"^4.14.87","@types/bluebird":"^3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","resin-docker-build":"^0.6.2","resin-compose-parse":"^1.0.0","resin-bundle-resolve":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","ts-mocha":"^1.0.3","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.8.0_1525948139339_0.6594599511930901","host":"s3://npm-registry-packages"}},"0.9.0-fix-repo-1027103ee3981f255820de513fdef19e955df0ba":{"name":"resin-multibuild","version":"0.9.0-fix-repo-1027103ee3981f255820de513fdef19e955df0ba","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.9.0-fix-repo-1027103ee3981f255820de513fdef19e955df0ba","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"52e20a63ada9dc39e62a4c33c48a2b5416902bf2","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.9.0-fix-repo-1027103ee3981f255820de513fdef19e955df0ba.tgz","fileCount":59,"integrity":"sha512-EmW3WZYKNFVs6XtqFyK1gWNs9GIeRqIJMBFBN0jKm0ZeyBe26Ofgq0BTQehK+7Qol7DZRJ8ByRI4/qX7EN/35w==","signatures":[{"sig":"MEUCIDrtx7XrSqGcIWHoTGOc51cepsb/P8jBZX6r6Ynh0W7LAiEA3FjgcPAv+en/4yLQTEXr75EphbpNRlu1TzRrMeJIuJA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo3nRCRA9TVsSAnZWagAApuYQAIuTYSS85SBSj6qSnW9N\nJApl7pYHPl11cC6ITJyA/5ZxUZcg5+5l/a2W9kjdTD4WBzsL94PYhZLIxE2M\narTU9Grh5HNYNFC0Dp5Di/sWJZgqcaDgEWLuOOcm46M44EXx2MCDhs2TmNvu\nRufEz0N2DsthUsZHomzwgzZ0jII2mGMdfW/wMVHgccfCCpBiew3xCRsttB1b\nxQ9j3Jr2KQzWW7zkO8lIJnt5LWEwwZ5KcIVIXmqpgjAuU5ks0Ac7hi0XNYkr\nlXRPSrwDOuH2Nx4JtILwFeUpmjUlHfYzX9qqwQFTWYCjcPvWyTuNPBSkqMmq\noMJgnkCun/O9PAT5iBvPwthygibgGht+kjLDj8QfdRTAM9GMTk+lyMWnQEAG\nYesUB6tId9Qc7/KO3rnQnDQPwzZNKGeHJDoXN0Ftrr7kXDRnuxkEzvwnbW+B\nmL//+SNFUO3hb+SSFEMjSvlLBArU4gVUf+cwj1nKXJ+hP3pXsXmBnB7mGi1B\nJAhmuBvtRQNk4pWHQJyrzI8Plp6COa0NlZvTl4rGIqqB1U8gE8aGC45q2Bc1\n/45TK9tb6xYohkIuuQKEnt+UDUpZAOwtXeDE1hgWmmT/SEPhbdevOhpFNa4I\n5IJV/4Xu7EVNv5TTeYgGL1z+YJ/hkiN/GS/UoVO5J3rkqJ2R7U8EjnrKG0Ji\naRM6\r\n=1hq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1027103ee3981f255820de513fdef19e955df0ba","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.9.0-fix-repo-1027103ee3981f255820de513fdef19e955df0ba_1537440208561_0.3376711759659716","host":"s3://npm-registry-packages"}},"0.9.0-fix-repo-bc4991f97f947407222344bb90fb4d263dadf30a":{"name":"resin-multibuild","version":"0.9.0-fix-repo-bc4991f97f947407222344bb90fb4d263dadf30a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.9.0-fix-repo-bc4991f97f947407222344bb90fb4d263dadf30a","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"7872ea8293f8acd481f0ca3bf3911443092d56f8","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.9.0-fix-repo-bc4991f97f947407222344bb90fb4d263dadf30a.tgz","fileCount":59,"integrity":"sha512-wRLPy3iPAH+QbdkgAg8/XHDzM3kTUcJ6uCb4hZbqJlCRG/L3Dh85vkvCjcFm0HDp9EiYdNfXsz4XbZ/rn4yLWw==","signatures":[{"sig":"MEUCIEkT8lHZ1XPVkxk75xpGGy3x6RpCHyPqTdj+RjkWoFMsAiEAtWAg9f0FHkno3YF8ij/fs/+zankpSJXeoBDocUtJByc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo5BhCRA9TVsSAnZWagAAVIEP/igT90rVe15SW2lh/SSE\nklEtuuGZfnsB/gMmFTd3M3X2HwbCVFRT292y5OiKczO30iRjC7jHEpFcLjLd\nvCU06oN1YS8m+te0QfvwdipSKdptHQQD7OKwHiFAxKtW5WM07MFBBC+1iJ2l\ni/DpbE5noIQr8eja3yHlOfrLA8uLzs3DkqtZrXBjt+R6QSH0+eZASLxDcJL7\nujc0QLo2v+CsLxjHBl3nD+dwxOzhtGs/bunZ0w4XZ4tLq+a9WfLfuzpSR/fh\nc5N/jYMs2ubXwaD75+wpxSMnbuKGAGYGxMtgBHQftAwYs3QANIL6L+N8a1s3\nzzPmlp2Xjw47xVIfiNOcOjkGI/n5kYENF4fzdzGKHf1ye6hbfgbFvcrLGKet\nw591wDKCNeMvJmabfd45OPOFqX4TuTtMQ+81S2akdHz91CMkT5+C2EcTbZt8\nH1MrAA0xsXjGdRH5kgpdaNxlpZdB9HtewaCCmjN1JxavJ7iV+xT4OuRJADbf\nBnt+WDp3JmJ6zHU/rRUOM+C21RK3C8AbwveWgtxwYondy7zEWkYf4mpJ3uU5\nqqTQUpt2pIwPsyFP3V61Apl7kzNDVfULegcpXoLD//CN+wsIn+QwKjVyEqt9\ngoH/8+tHGEOwYKOEL7F/SEqpDXwnUBjC3ROvjugFh+OAFYaoorGizPAZVHUS\nU5Y/\r\n=IJpa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"bc4991f97f947407222344bb90fb4d263dadf30a","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.9.0-fix-repo-bc4991f97f947407222344bb90fb4d263dadf30a_1537445985254_0.6271787133812823","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"resin-multibuild","version":"0.9.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.9.0","maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3009bf9afe3715c35b55829d0e7883ceb2d65ff2","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.9.0.tgz","fileCount":59,"integrity":"sha512-Z13k54R7v1cQat2TrnSa/OmeycrGBMcsyzk2roNUTaAGHq+f7mHGNHICnWwG5GJZOwul8u0iX/FZm8bFXUo/zA==","signatures":[{"sig":"MEUCIQDN95+7Hm2MJkl3Tb41G+0Hjfg0PLonrr/qH6zUPDCPgwIgf7P/HAGxVKtjWxD0+un7RC6PuSzPObzboqsJNgvFOhw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo5pgCRA9TVsSAnZWagAA7YEP/ib5hM4p5nyZDCtq1YMD\ndIgBldJbFp46+PcWmZAwkiabHvhL4Go3pTb0a/04YZUaJsaR+f5412e8w9p6\nDhVbMDr65xm59QqVGTAZNr7oNWTypZJrBF7RLrzMgJGdM7o6QUljBcNYwYDf\nxMpqruMIiNG6fIIh74+mFW1CEn0Go7aO/euaHHH50dYuxSAkTan4Q3AwptlV\nsDUJXT3gLxmVCGsBVzt80FW8M8GWEXfc1FrcN4aLGWJhrDSQ4bta9BwlOx/Q\nnCis2+qHl8SUEAp3gDQBFxKMgyWiCu8AnLz6zynsDNnG0jn+bbHM/sROSoyd\nliTiV26HhUHNNKyR/K85ZZURC1J0mjA0jDsEqG0UbmsqOIYWdOomq3+6PgC9\nis4Fp5idKAZLBhjRr1fYSjBNVr1PCXxMIhUeXsTbiyoKypcQFHqlnY5Sr9Bd\n5DNgJ7qMQcpMXMnPukkjBQj5FV1ded7vnp/Gjnzi6LUe00nUyM3JYw5Dnz0U\nS4XrcjBvL1YCVTaTDpy6m4NOUle0rW1N3eXdpZ0QUGcRaln8Vrdyaql0cUQP\nYfQ/fENnHAoPIIfYx86+Byvvgl4YxcdxEW8cESzchYtOqTEeO2GcS/vXoF0m\nlWCEk6dHlH/yCFYWH2Aej+8fJLo+1FmFxgWhVe/PlWf88Lo8+whEzwKFwLC1\nVmt2\r\n=OzJz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"456e042474685bab4ee10e5a213cb44d6bce77dc","scripts":{"lint":"resin-lint --typescript 1 lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.3","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"^2.5.1","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.9.0_1537448544324_0.4177290719223785","host":"s3://npm-registry-packages"}},"0.10.0-35-private-registry-auth-fb4f8c50f5802934c8203179dfcad84ccff43f17":{"name":"resin-multibuild","version":"0.10.0-35-private-registry-auth-fb4f8c50f5802934c8203179dfcad84ccff43f17","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0-35-private-registry-auth-fb4f8c50f5802934c8203179dfcad84ccff43f17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"7f24da25b79540ca9fee90f63e8854116c2fe44d","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0-35-private-registry-auth-fb4f8c50f5802934c8203179dfcad84ccff43f17.tgz","fileCount":64,"integrity":"sha512-90n2SRT+Wq2SjCJDtG1RfdrK8qINy0zDkXypF3zVQRiG0AtoykYuk/ptQj8klghilx29R1hOBoFgnOLoSfKN2Q==","signatures":[{"sig":"MEYCIQDKqCz815U7dBv6Wf1ON2i1oKbGJxrmrBSxGjiytn0UZwIhAPaQeSkcgvOPFa0IF0ozdPKbNQB9h0PUBIwct/jIQkRf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDX4xCRA9TVsSAnZWagAA07EP/jE+iTE2Nb69bfc8Jzl4\nRqUUzfWUQQZOxWaZqIzayodXu1CzFSlac6tNqoR2B87mh8xAyezcTYrVntNC\nIpBNhsDIoVHDr3YKQIZEhLtWBF8VGknMu0RbiYBED6qgCbXNxN73J3WQrlIs\nFZH2JVc9T8ASFjkcdRjJf7bHTuJQvGqTyeLlwSnQKixVRF7Q39iUAnLLYMQh\nKNxz93Cv7w6kqObx+o1m/AIW8yOvRcGW/QfbnpGbq+sat4JNwUql7ZqWHL5c\nVQLy3N19G0HdXS+o6VSYzmOIYM5HCJwRu6VT9FXKvWSpej6dDgdykPUrMUVy\n4pE2U4gdknRz98Xsd0Cnze0sGs3rCBFhVlTuJFF4rTNFehbPJha+hgHL1Bjl\n7W93+8ol3itvmLfk/4b71X9xdPf/R3CMjpwrat3OmK/ySnQx9eFUQRmBPP/k\nG9WlClgkOBuuFaO2ugAZxQlIX5qIKrVVXtDsjRoYq5H94MBBQX5ALKboYiMS\np3EynTxiFoEO/rZ3Gkk1Hnq18Z61CgHVT+RjEsLLOR8+JfKOZYpipESVGbXI\nfRT9Wr6SA0uslAq4yDG1ht/7njRn/FoSPitIXcoum+qCJfKeiDvrJSvosEp+\nBRz2zlWoWyTdEkDpj2ZOhp6L1f7Tq+ukigDTrkZhnxcsEGOastLVIq29DQJN\nMQoW\r\n=iG3Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"fb4f8c50f5802934c8203179dfcad84ccff43f17","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0-35-private-registry-auth-fb4f8c50f5802934c8203179dfcad84ccff43f17_1544388145234_0.05950089326718988","host":"s3://npm-registry-packages"}},"0.10.0-35-private-registry-auth-142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b":{"name":"resin-multibuild","version":"0.10.0-35-private-registry-auth-142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0-35-private-registry-auth-142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"22e0b931cd404cb3e05a5a96b909c051486d9a21","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0-35-private-registry-auth-142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b.tgz","fileCount":64,"integrity":"sha512-hmD7Dh5ZrEoZWk9byeTvy99ZaKTrI1wYflc7fxaU6NwZF3gPVV7b9Vz9CllajqsH+IiZoPPpVgdhRhBSnI5ORA==","signatures":[{"sig":"MEQCIHnZf2Uoru/dLO4yODKbBHZjVWXzSzZnZX2DUo9VYXAHAiBm3sK25b3kQ9LEFF6owGRsKwUpjmFUWQmCO6oWHt97+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDYZ/CRA9TVsSAnZWagAA5BEP/0daPaq+r2o3LN0gLUsG\nMZ1Iqaf9rgxF+/t5pe6sZO0HTnE5+xFQM/iqYE7zOI7ZPEoaOrsxREOK/3Id\n7EtlFSJcbkwi5dU3wWWuBbz0T9pIoYeau+5PhHmykKD4+uCxTY70GzAdorys\n7wn/IDwvlEZtkI3CbFSCabWsXilTFvW7MrSI5DbhsY5HatG2z5zjWgxD3snM\nn9iKAZEtQzwyiVNRMv5pgZstx0vnMF2Hsd9LKMIdty+V5P8phSlhQPdUuVtr\nm8W/hjYXybNl7PnUALOqHom4I04xLiPJMdfnk2NCu+6AcJjAspSnsBPEgN6a\na/uNU7RPrgdZQ+E0Gf3RrZesHDllXgdhLCqG4cyCab0fb6NPG5SCQAc7SGrI\nOKU9MEAo6edz+BbTlSMzJvYUz1Z5ZyJiqXTkkiFDMigTtho9lYHaztvbZqBU\n9cjfM25BA/eem/kkDVzcEddKx36G3xNDXkvBxfDp4OckTArpXtKsgxOCAX7h\nKWHz5u40IkSLWx3My0GjKWmJFbzjSHS6R2th/chqtKech0xDtQCDNHBQKTLG\n4JmIrU6Jvx3rdNIRHB0no474m1YhExvESpJNDhTtS7flmPsJRIrcMslGktua\nGnhQvPAP48jczbbP/s9gk4y+7KSu0alI6hHSPpzuP49A4CO812XEIvQ3lO+6\nJG2D\r\n=8z62\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0-35-private-registry-auth-142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b_1544390270535_0.7996797516782588","host":"s3://npm-registry-packages"}},"0.10.0-35-private-registry-auth-b7b7ce73626d57957aad638d0f0e48438de1bc9a":{"name":"resin-multibuild","version":"0.10.0-35-private-registry-auth-b7b7ce73626d57957aad638d0f0e48438de1bc9a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0-35-private-registry-auth-b7b7ce73626d57957aad638d0f0e48438de1bc9a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a75fb1f884966c2cf275da069dea44dc10a3ccc2","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0-35-private-registry-auth-b7b7ce73626d57957aad638d0f0e48438de1bc9a.tgz","fileCount":64,"integrity":"sha512-5SHBT7t32faognVVGSC8MkkzCFg4UCohq31+2bNkOR54Ve1Ta+umDDUyQkAajGlTIOu5Qt18yhPm8isc/U5v6A==","signatures":[{"sig":"MEYCIQCsi0SrETdPg7bqLTAV6hyFSfsX77ZRgvzv5DJnPsHm0gIhAOx67Y5/Ll6GSBrweLJDjHNryoG54k/06Cta/kWnI4J5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDkzwCRA9TVsSAnZWagAApSEQAI3IJMvNwanQ9EtogdDJ\nZjSFnwMSmjVSSMxILueGTb9xr3jkAodRMCC68rZf+ILD8esvmUjR3gdscEZI\n0rYczyA15zjYPSXhpoOYOGUqwWZMnfkRAJ9jPxnv9sl25Yft6g6siULlVIC9\nIsEelu1hDmO0QQCNdwKr7hxtrsuzuvriJjOM7Rf4ZZB7KcNUh9j7RGHtHRBI\nTbc36EHY3XlVPW3xMag4ZcLGy41cU/MCRAe4MbzvDb9Dprzoh8RDiGsAsKzh\n7N9JOhKKe1Bw9KejBNMEr0HbT8hyaN5jQS8XqW64Q3EksWDWivDwohWJUm8i\nntwdF3iw5XHq9RRWBNmAozOUG5+aR+QRrpkC7OtxU1215sJZF70QBgrOpnjS\nUNSfE5wyjLewi8PMp9YziEaL8D9/5HdhfQPU9ap3zKa7OMfwzEwAEy+EMuTS\nLToL93sCjCSzmXd2sVTCe+Q/ZBiST7UoUu5aDMcL1eMUY/aPx6CevFwy/TBr\nl/X8Hx6sUjSFVzm4pRrfk97Tz7GP1HOgX0mKoTLAvg1tuKmGU3QVpYyfH9jo\nO5khC78/8AwJMBI6yiE7L2GSHTjV5WFtat/WMyrrGvXGgZk37R+UTrWSKGIf\n+2qngFomVKV2Me9TqhKgtF+i7WnZsGPdS/2XCHDI5W6zCSKhUbiJDlysSsDV\nuLk+\r\n=nrn8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"b7b7ce73626d57957aad638d0f0e48438de1bc9a","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0-35-private-registry-auth-b7b7ce73626d57957aad638d0f0e48438de1bc9a_1544441071924_0.2002644089260306","host":"s3://npm-registry-packages"}},"0.10.0-35-private-registry-auth-83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f":{"name":"resin-multibuild","version":"0.10.0-35-private-registry-auth-83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0-35-private-registry-auth-83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"cd07982d18db67d0808d3619a6d23a33bf3b1970","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0-35-private-registry-auth-83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f.tgz","fileCount":64,"integrity":"sha512-713fd63Xrt1YH0LbDbFgdhA5W/WuIWQhBG7wtb9lMpARWqZBQt4CuVbr2zfQLb1W1No3ww5kaLv3OJFLI5EhIw==","signatures":[{"sig":"MEYCIQCdS66XJkgM/HPQo2YD3Xdt3+BUdysOH0vbWot4j94yDAIhAIe8Oy5owlq3ClJDUUjxBEP1TGgHiteFmlheC7gjlZQd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEQrKCRA9TVsSAnZWagAAxI8P/iW1N2KSRl2mpuo8MShB\nR8Y6FwtfcQrd9YyNtOvE0eQ2lO27Y0H8unAvbP8Uy2q1s/Uzx7keYVIYNvH/\nRfunpHDMQHOQ0oLaap6pnOhjOzADqdwPuse2yFEicDYZSfbVLgz9VlNdJard\nzEWO+RRIPUmk+ZIf0isErS1ggjoqHu9RNJqr2lSYrxLZ5cpeL+YxiD0m1nJ6\ndYlEP5mB7cHTq6h9v361kZccb0508anp3b5ksuc7rNlKFdAILI0Jm4hAKIBF\nK9NhSA4RALVR6Ra22teUT+H75o9L+3KTqHj1CdFBRLfHpSWUvtTNUcKEpK5E\nyp6c1I1gaFxXeSkGO3fP5wSPCkch+6s5CQ7XfLGIY01Y679ByXnGqEo4RU4a\n+1auuv80LlfA1CLEJZOItMp0yjSWqhZd2My1qOYr2QXv47nqInGi9yl1Srj4\nAW0RZprT+fKwwxbN7IT4KuGtgwi1ydVF8PgFSbtTCLXNVVXScPzbQWA6U2Uu\nCTGuMfYztYd3Y3YwnrPR8nvEwCVC+9QO962NkJEaOoo4X48NI8xmakKcVUQ4\nO5O449oFiIeMgm3bIvZqaccsjHfZDb7RA8vhJ9IiF8TQHfM2mbpTD9ag8agZ\n3yGnrBSWAL+kAy+F8585RsbH5Hehb8/zN5UbKzJkHk06L9QkdbR+efALVZqT\nfaAP\r\n=bY/U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0-35-private-registry-auth-83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f_1544620746099_0.32050689037073155","host":"s3://npm-registry-packages"}},"0.10.0-35-private-registry-auth-c894a3089d52a65bf92cc085feba672be14a39ed":{"name":"resin-multibuild","version":"0.10.0-35-private-registry-auth-c894a3089d52a65bf92cc085feba672be14a39ed","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0-35-private-registry-auth-c894a3089d52a65bf92cc085feba672be14a39ed","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6bd19a39acabbf1f19a8b6aceaf8816b0c62d0fb","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0-35-private-registry-auth-c894a3089d52a65bf92cc085feba672be14a39ed.tgz","fileCount":64,"integrity":"sha512-c9E05Mueqhc9TTwOnH98vXQvtOaL9LwLtLkq4QzlVkOv4ZZxab7pqrjs24pP89Rp34oCflUtRdjbrEF0GBOVBg==","signatures":[{"sig":"MEYCIQCvDcc7AudBc/oWBKCm/vHTByKPB9FPi/zsWanBGujyYgIhAJLNSomaT0tbMeDDKcSk1/usmsomKXT7Ik2+4YtLHU2e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFWpLCRA9TVsSAnZWagAAJeEP/1fxnG/fzkcaPmeQF+qd\nBK2jJo/W+4ohBN7WpggTTYJj5wbDEWm6ud5ann4pWseX6ADMmkUl2A6cH/zc\noDt4DVlDjQ9IDSiLNfmA6wRaX63IYj+JyKlPlLOr4DOT6oIsstZF1M8rckw9\nAkc9SqwGdYJ7de2oKpxHdLtjoeVYLKN9p08OH+frJ2J7cJbZV53Zh/8xHygg\nwXCsinkU9ARqSJK79cj23/lGFacircZzGWwzjs7RBwmTzgr9rd270uLY0ngr\nKwwYBtIRTiD2LB5pVteij1rpIfgRj0KmnbEoEfjPRSfu6LoMBs9DsKbwyphK\niFekEM5HfWl66DpUIYujx/B7tgo5XQ/51q6LhoveOu8s3iYqUpNozr702xkm\nXjk0L8lHYSHLrqcHXbSrSrhGHa4CDqCWMHdaBsbZNKofsMxswnUB9mEQNzAn\nIh9HsF/j1t9pExiIUzA0Fo16zL9o3jTn9h7HJGA5IyEmMfCEGjf5CHUFL3ma\nXKKs8l/jzFqcNORpU8EKDaWFh3eqSNEDfoEI6HlI6NbKZFYn3KV1s2f3iNEv\nxJRegFx7pvWrXXm4xmE2OWsK5Uo/DDBuehA9y/sBh21ZJUiAXoN7De4EJ/5B\nl6mRp/sS2/J2Bw8BAu52RgDu7b+F9a8Jl0xVFOIHImugyoErP811nZBm8QYO\nLdAF\r\n=KMpx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c894a3089d52a65bf92cc085feba672be14a39ed","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0-35-private-registry-auth-c894a3089d52a65bf92cc085feba672be14a39ed_1544907339312_0.8631181110379267","host":"s3://npm-registry-packages"}},"0.10.0-35-private-registry-auth-85472481827a682122b7dccdf92d31ce6d2b48dd":{"name":"resin-multibuild","version":"0.10.0-35-private-registry-auth-85472481827a682122b7dccdf92d31ce6d2b48dd","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0-35-private-registry-auth-85472481827a682122b7dccdf92d31ce6d2b48dd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c68453cc000d207ad5d8ff1c0272028dfe03c291","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0-35-private-registry-auth-85472481827a682122b7dccdf92d31ce6d2b48dd.tgz","fileCount":64,"integrity":"sha512-bbPN8udBs4ExpuWlz1+3J2ObaLs+F9tzi3fXtwy2dsMJ6JM4I/uhtaQehIY7hDN+yVmsCeLbw0fwONZ70knp7g==","signatures":[{"sig":"MEUCIQCISmF5ESUzwbkij319YAxdJEmeMhgh9qBJUTYvbSAKKgIgUxxgwowFqB6bxgPKEvUaar1wkLIK3HYxb6isn4e2jB4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF6oICRA9TVsSAnZWagAA5zAP/jqsH2L0vNR3NXFZM3IC\nVqooVsx5TeDROpYM7qPeKO554o+lnglhiorlu6FTnhKo8LVk43FSxMsrsQlu\nAZzjfszgEmwIRN1uUzohSP3HOwc1PU1QpjVlDb7nIAWHeoYt67likq6pBxST\nqaR/oVAOpBwW1gNfKM9UsWcSC9FDugybRaRVo8vqTNScm5k9JAbglnWwRrFx\nqEsPosEwVAqJwZHOLPFLl9J5ojBF+81Ayd10XMINPcepRKVLTmWf7IoP1Kqx\nG9A5/ZPmFOZnH3Jqa5FR0lObmMxSrO7xJoOda07+I8tPR08Mh7L0BHsKPLic\nSsWVwyBYVCMFXn7KgKCKh6HUd81cEt+5PImZWsNpDn2dqTD0Y+equw3iSU7V\nBpt3tEN6qLx3XBAH+X4sShT6N19/gY5PKJDNmUro7qUOCK4FHQNcBMzh41tr\nxZkUK1iCEEqclQ4gtvfVF2mjA6hmHw6P70vt1DVF6WGxJoeopJn7ZU0YGmMr\nXmu7O9z2v2jxQ6PAYIe8+yJIFV6rbMnQ/C+b2YJkhozx7Ev7F2UBpzAUHePZ\ntaV5RXX620/knp+FXzI65ktDmunp5gQ6yLsbGlnLuDTdJ7MTPB0vkWj0CaAm\nMNz4UkPsEP16UpKrkUGZyqadxjUZ9pwspEpc6WOMObkCcEHutzTB3DqvwODC\n6eBS\r\n=hYby\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"85472481827a682122b7dccdf92d31ce6d2b48dd","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0-35-private-registry-auth-85472481827a682122b7dccdf92d31ce6d2b48dd_1545054727329_0.2761965420069794","host":"s3://npm-registry-packages"}},"0.10.0":{"name":"resin-multibuild","version":"0.10.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.10.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3bd6b7ef995119ebac2b0ccb0dce988d585dc525","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.10.0.tgz","fileCount":64,"integrity":"sha512-p2JgrH2zMB8uS8MZWTmhj4l6X58gPG/SdWr77vs0JNidTRV9HpimNR6QrjivWxxYrkpFPT52D3eVj71q6olZlA==","signatures":[{"sig":"MEYCIQDC7agbnsnv/aEjhqXk+Ui34t0c6t4vDQ+wX4hgM91OXQIhAPjP3uT+EUAgCFNWyZ/ykswm8tRK+cE79em9BCHtskZ/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF6tbCRA9TVsSAnZWagAAYDcP/i1BmRcaeRaT36nya0/4\nOfCEgnZwa4E7XiRq1aOEdSBYB7/274t3tlJXOiI0IFshQNRxD3+zzQfUhXna\nQXdesV9nWJgWg4Nm2I+mFGXQljiJhhb5Ug2cmrbLIQba8kTKr4w5v5uaupbJ\ngBH4CxBp5/juFbz1/6Q+aLEQt69J8AXNz7ERSvUw0jY0M/zXkrMZmsDgMfLe\nvV0Fs+mXx04QDHcwPfLgwWrF0km02H0T4pIsHDa/E3psunugm4KKxwnz8tT9\nZ8E+goB/eb0xcJ9a+/iCVMnFGbk+1+wfV91PwRsKesmsA4OmeISGUVGF68yX\nhR0XJciCsJ0nJl4GR4loig70cG0EiwZPgdxHs1Xc7G4BHltYu+PKbhCvuUIr\nl/K3zs4kAQwQMVW9yw2eNZVeBdAdGCWDGkoQBi4jl9q9VlgHwBho2p5kVpY7\nVo08/IF8p/eXtLkTRPSkwCoNfeC5hCMBJhC6xCNfRUvp8BGgTJgRMWBorBvn\nAhAvPrtCeD5dbWSjVzcD2ZSXkNJdSwxQiIjBXX2wc+ubZlEeG6ptrgj9w/jO\nWwoZG/CvS07xD9aY8W6KnGZMWYC8cw/EozaX5nRASwHsOUKduIQatRf7JTml\nmolT3mZgAkMSnizmCA41tksEG90qn7eGnkP77Datw84djiFftKH6pDFwP+gI\nUq+j\r\n=42TJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"80845b05f7d1605cf1ed743fa6a1e7386da110bc","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","precommit":"npm run lint && npm run build && npm run test","build:test":"npm run clean && tsc --project .","prepublish":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","resin-lint":"^1.5.0","typescript":"^2.6.2","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.10.0_1545055067126_0.9901325915140637","host":"s3://npm-registry-packages"}},"0.11.0-prettier-773e68196760bd00d731aa87755b8901703e7aa0":{"name":"resin-multibuild","version":"0.11.0-prettier-773e68196760bd00d731aa87755b8901703e7aa0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.11.0-prettier-773e68196760bd00d731aa87755b8901703e7aa0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"eda3cee256db73515cf95186d4c1ef5861f95b59","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.11.0-prettier-773e68196760bd00d731aa87755b8901703e7aa0.tgz","fileCount":65,"integrity":"sha512-Hz4Z4dOfX7m9XvUTyVe2D46g1M9vmGjJixhUFijNWJCpIdOTwyFzOEQ85Hczi9NImyurWKbl7RO2SMyAfotX6A==","signatures":[{"sig":"MEYCIQC0AXmutNkxKikJ333TU9d5PqKEt1cSyTwBStK36kvdvwIhAOZPOA/fITg2MOKFP0mbCBdjtYEZ3k34c3jeCRTC/uXA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcN2jWCRA9TVsSAnZWagAACPUQAJAiBP/ZGKxtPt+N6zdm\n6Jj49+DS2mPmUmJQEENQTAz2hmPrR4S/vg8KgFMXkztsFTUwcWdNJoe86t+l\nePwafpr+P2H+fraDV1YoxoKhrSwk8zgL0fzLz08qNIQm4v3+9/v6cdXvOTMp\nM4VUfKwQTb3ra7DS/lNovvKgNWMk4/FJtCWC02sV14Io67k+pN80groIXBHP\nTy1Z4/XXuJ7yI1gieEJDDn4TL1ykADsWEYAYHcT/mp/P+Cy5WPcOospufMje\nNASjqdvwPJyyxHBBRH7rkWxqR9/PHstd8SpHmEjZUAAhpsbTndRBfZ1yOyHo\nvlpad2YGoUsvIUuSLc8FdflsT25bP4RxZXUN39InzoMAoOv1tOXx5jzk4wNM\nqFrTq45DTEjLzgRJp/yxGoQt6pmrow01dYHqBjUGXWT1QjkyoJfiUSfBeQMX\n6aUCaowDk8nG3objvIUUQnezkA1RSn16U58pQRbxkoYOjiO861ezVURMBonV\nhJz9AnwydLe3pbPvfeLv1pv2ikYQ5QHef8eYqR7lrZCIf74fJ0VUeN61YsYT\nwGxDCeb1dGM3DNDTKpROumxEuOKj1USSr3N9Uga10w7omLJTmjDlaQlQ4ZOL\nf5eoFldiexERf/W8BEunuQF94i05JDg1tiD+FCmDXhZglZa4F/bL0YewWtwT\n1vNy\r\n=87q/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"773e68196760bd00d731aa87755b8901703e7aa0","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.11.0-prettier-773e68196760bd00d731aa87755b8901703e7aa0_1547135189415_0.8482638505040705","host":"s3://npm-registry-packages"}},"0.11.0":{"name":"resin-multibuild","version":"0.11.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@0.11.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"5565c5ee767836c51017df2e2a253d9d9a43e51b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-0.11.0.tgz","fileCount":65,"integrity":"sha512-7DCQI7oJFxWzZ611YESFJULWFlXpOrsAjB9k3uqBmzbz7I9u+BPVn5ImtQQQT3bj1QjyRvldTm+IuCy/n2EkPQ==","signatures":[{"sig":"MEUCIFgxmy64t9m79T/Tvd1Z5Sucs2WK2wGlVLbU5Sssm3srAiEAyA2su3oKjX46+NiX+m2btP0p4fIQQ4r47PlTqwqhxFE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcN2mZCRA9TVsSAnZWagAA2Z4P/13+OetCFVU7GXLB3Pio\nm82pEUeVLCZGbK+dNvP0VuyP57+c04bprEH8rpmKsc/zjannfcfwqaQbXDBK\nd5117xnV6+LA3pBgF0WOIsMiB3uft0ekvj/gaE2KADuGRkKNRJEXuqPeNqD3\nkRBJ0+53E+s+9zOIB2tN0UdM4MrZmnCIyjKB3km/gEyQPUZ7RA246UgJJR2L\nc5gP8EVxrA+GutPi/WUIf1Gz6H28ZXa2rxuCA1zE3R5GqC3LYCxXQCFo+cTM\ne6NuqaJE6JEqibxrCQyz5ub0ZMziRDnkq6A9v3Yhn4rGpxw1y0X+ucQy6yqa\nXjTPdOSNTbWTNKeAY961Kmw2dL1yMgA7L/D0m3SSiWxyanqhaOhQEV+sZHS/\nN567DQy8/Zr+KNGfamS/WF8qVkogHHULBKiHTS0FaMGAcj7+6Ze3tE9svkEM\nK3UGburc5wJjsKKweDcjWMSCozs7kJ3EeEzzNuwFbI2QumN1XlkJlR5P3cFe\ntHebWptMXv2uxhBjHT8ap110Q7RG0I0b4dZ2DxwZKmtngMNWwmOEXU7eaceL\nmuA2Lgo4tYWT52b5ZIVpZQUT/eEEmSjJnfIItVmhMu+oiE/sxdJo8ABn+pTp\nkjqQr1rS9pAXZRrI65UiqWN1+CoNDSiR++xJSHGy5GXKifquQLjjhO9KATYY\nnAyO\r\n=2th3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"a89e5323a4eabc785d92bf59370b751ae62e41d6","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_0.11.0_1547135384332_0.1550974991582259","host":"s3://npm-registry-packages"}},"1.0.0-allow-specifying-dockerfiles-084847158e138c3f1e96e9d80986632da4395b65":{"name":"resin-multibuild","version":"1.0.0-allow-specifying-dockerfiles-084847158e138c3f1e96e9d80986632da4395b65","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@1.0.0-allow-specifying-dockerfiles-084847158e138c3f1e96e9d80986632da4395b65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3372b072bad6bd6b9f3d9f99ac79653361a962d6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-1.0.0-allow-specifying-dockerfiles-084847158e138c3f1e96e9d80986632da4395b65.tgz","fileCount":70,"integrity":"sha512-e4AdUZHHG1W5Zn6zbvIX8BYxIWI5oD8myOLzXrnjSJJdpz4oWGEe0OCbS3pc1YnwNjQsOkW/v2BDrKwo51OGDQ==","signatures":[{"sig":"MEQCICwZYhr4vE11uPAS4rr2ODHskPBXLLal47PsEErh+eAnAiAKobZjQQ6MBfFajN4M1esIzAB9uCbmkxKXGR++MH6SJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcN2zjCRA9TVsSAnZWagAAFt4P/34CTppfMig9HnTX3hM3\nywiMOxkt92xOUGg8JBvS/3nSSpLlsK1yBBbForTpncMxEgYm2fNSUU0PBDWQ\nbiyyKYpmF9pH/4wwGAxCWxYsnAR9TJSdhiBvuq5YGxx9KPX7B7z832fJjDaV\nmIoyBZPKlGFoPIjGxs3bL1ReZ/4TNZHfR9DaOLdSu6C863DZeC09IAcwHYRW\na+wGo0/WmtOw5MuK3AlSLdzln8P+r9Os41uUL1v85HK80z+vZxzdGT1pcRqL\ng4AXc5yoVYm00RZjULCqnN3PRDeOBwH3aGN2+ipnmBbDLtZ/4JHFWEKB57v6\npHxk05huI4+20RP9QjML+08v6ZT8wjf/IJBaNowcTwu6xBBD2vBWGhPNvMLJ\nvQUUVfhytZnPsav1FDl5WCHQCy+Fc3G9oUCf9/jGJFqYvVgfEWINaIeqlND7\nVX/2EHviD2YImUBxX+N+LcrrLpBxENhdd3QyTV53YXWr9f6oMASSUARm2GuX\ndVl5Tvxb//aWdXzpdVFBBmfrye6R7iPAihBosqJHPd/d9jiceP5iBEg61Eo4\nPd5u9zRmCpR3Q6EELth5YFMArCyrrjKFrVg8nBVnBpqLKvevBuLLNn/XDPb1\n9FITPmLSJ/cKgLbHaXumL7I/I9tcvpGkijtQdp8wjnrBrot8eBpBKgzp6Apv\nUjUU\r\n=rn1i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"084847158e138c3f1e96e9d80986632da4395b65","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_1.0.0-allow-specifying-dockerfiles-084847158e138c3f1e96e9d80986632da4395b65_1547136226931_0.5636347347777217","host":"s3://npm-registry-packages"}},"1.0.0-allow-specifying-dockerfiles-0982d75fc6cc1058a372d4b422bf10f39f02149e":{"name":"resin-multibuild","version":"1.0.0-allow-specifying-dockerfiles-0982d75fc6cc1058a372d4b422bf10f39f02149e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@1.0.0-allow-specifying-dockerfiles-0982d75fc6cc1058a372d4b422bf10f39f02149e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"98c0e0433f3fc4b74d9bddc24efc30d81c30bf8e","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-1.0.0-allow-specifying-dockerfiles-0982d75fc6cc1058a372d4b422bf10f39f02149e.tgz","fileCount":70,"integrity":"sha512-Dnzmbb3ZnYd250KlA2MF2/BIVoIgPHCjZOraE9nHeVMF7i1HKaAyi7MAHvR94ZKhWcIS4yosMXTF2Pe1wcBeuw==","signatures":[{"sig":"MEQCIGxlxJsw6QYDrOjaBK315BUjxe8xF808vXmboe4+uxz8AiA44J5D9zBU0CSrd/M7kDOOE+CmzmGdh1EbUlCVArHy0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOGnJCRA9TVsSAnZWagAAvGMP/RPzFscFYHYNV2BmZD+k\nB4EWUK9dV6DGxY+jqQnJpZkAW5EQXabv9uFyg67rOLOdQf4ZrjbVMaUAMwnG\nx/VKGTDddxZcsVu6gAYiQh92s8kW0/66SDLaPLh0UvofOwaFEBx4H9l4NFMr\nvtrem9oQcpH9PWhyH1PR2GBzqzU5wUS9KMz4r9flAbKxhYfPOkJOrugE8csz\nZuKysKbkNxhAGAS9d3rgCDI1LI9hBYXcn8iBhU9GKj8ioFC9KQlZCb8LfQUk\n6XmnGjCSyuaMzw0FtqYZhnIM265DjHHqP9jp6hR6p5uvaQVxPYkO2z3BP8xW\nyYP8hfYOMzVIDOpNv9ZLmQ+60jcSMgSvuSVKZmXsm2GAjl3kmsXtPKimNcV0\nZg4ALDuks7kMD36rbb4OW3HooxE7zYF4Qj3z30AqWZJ8hWSgfchCBMbrlBNB\nOvLXjfnAYWJOcbBvfkR4atX4fRJfjJKDiX3iVx+xZ8+3vVQl8xRIHyexGNWF\nasKBuSrGqps5gf3UkZF6aFHR9756D3F8EDyPoNu/UptrcMMTmhIea9JF0V2S\ngJh7n5M33plSNooT7/YtgPZT3Y8S0kab1FIi/vvhJLiiBtJkPmPkUJVNqobB\nOmwfVfNT74Z8+1M+MV/MngdKeKHv06xyioUcc/j14ZE4Fb+dG7Ll4qJSFbOR\nmM1K\r\n=S9Lo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"0982d75fc6cc1058a372d4b422bf10f39f02149e","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_1.0.0-allow-specifying-dockerfiles-0982d75fc6cc1058a372d4b422bf10f39f02149e_1547200968820_0.36979790634640564","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"resin-multibuild","version":"1.0.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@1.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"641af6c89e0953554087383a3c2934638e66ed21","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-1.0.0.tgz","fileCount":70,"integrity":"sha512-luksrGrumBzlUEOVs4krhGiMcZc9fkbrwt8oJ22opx6k8+8eFkOVlZ2giP1ha4ZkGaVj9nRJ0QnhRfWG7rpCcw==","signatures":[{"sig":"MEUCIQCuN3e2rmxdF1faoRzWOPPzLI5s7UW8cawkMVtU7sgs8AIgfWEBgD/zfU3yQDApPyFSAdewPcmFsrjWukPSGKPXI9w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOHBFCRA9TVsSAnZWagAAfjoQAJofmM9D86AnCJu1uzlw\n7geKybUz3guaNiuOTMnYTrASHewud6wJ8h5f8+4gku4tziSIR0r/WBN/VssO\nyBSjeY6v3DhSMn9jTGuQsjAlwAKtt22CWAwGBkZa7P9RflDbS8KIOr03IxA2\nLZOR2W5bVSwzqDY74szMdiINNP8HT4t3E68fwnl76KnQx02+nNJqQEjuigyk\nBt9cePojKcv9I0KeH0AYijFMuk5AfY7ymcZsogqZ8eYIt5D3HZykeCqmJr4G\nxsRgcPW2XYKQ6VK8vOguHFt9YJXTCOn70F2TrCYrJmbOIlf2ZglNmQkLO7uZ\n5WIKzFys83S55GwXaXBSO9T96l/X6X5NKrwAuPozGNRcvuduERPmjbdbVaLI\nozvXAXWHG9L0ckHfU9/tJN64oEKUrKvN659QiotMqJZSC2PaM6t+Im1aN9/+\nVSFqkGYkSryT8gaohVCML9/v29Wz986kYATAEByo/Vques6Egs2/DuSTJJbk\nWlDlkrthQlbQSM0tJ3achOC1Mawt91wwuKR5+xUc3P2/QyKSibK33sXxcEuX\nPoswn3XzUvDuKa7Lj22u9uHnkPZP2XrBF5CPSTY4F42Rxc3DXV/h0ygXRL8B\nhwgiTHN3+5+xS8es2imQWnByv7Nhc4JOpGE4gnX3JIjFIrVaZz0KAiYf3SP8\nAy67\r\n=gUKN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"3bb5d0f86e6ff6afb85e27fb740d58a0a30de74f","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.1.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_1.0.0_1547202628815_0.7276712871136493","host":"s3://npm-registry-packages"}},"2.0.0-34-add-performResolution-listener-arg-931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f":{"name":"resin-multibuild","version":"2.0.0-34-add-performResolution-listener-arg-931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.0.0-34-add-performResolution-listener-arg-931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"01983e94c34ad71fab3bcdd759d269cd39916052","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.0.0-34-add-performResolution-listener-arg-931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f.tgz","fileCount":70,"integrity":"sha512-xCNX/fuE4zDDvJNFhGOnuLxK+11tgPdiuSJZXUWPVCX/vgyjsnh73PSxpcK8cDXJ1H7h+Dd9eKHuywFJebQHVQ==","signatures":[{"sig":"MEUCIQCb7fXjFs/pbBhlosFU0q1g+JYgizdw7Guk/9soubhUvgIgWAdwH7uJcIQu2JBZuY5ZVlN2BAMTkDjvm1r4KNUIF8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJca+FeCRA9TVsSAnZWagAAVXYP/2+MGFFPfn6BuJJfdf36\n/8OXFQcYnBTs7+tk2AkUp21i5mC0MeKbXVymvoZ1fQBGV8jSlO+bLpn5j6Cs\nEqj9SdQm1afdbwK5QAkGMTgAtxBjK/pjJ3THDR4eeFS0Oucacw/mFkYmwaHw\nnfzTLb0pFZJGIi7LHxMqTquxUwJj4zipNN9YJKW8ecdJz68SyZi2opc1p9+C\n3sy2+uKaCuawmcqEXGuqqllTO+BXyLimgeNsZX2Z2Nw2zTFkRG9FljJAzYRS\n5zRn2IajX0hQJlTsw1gphvNeMx9IVVrkMA6viTBfzaZTNClIodMOhoGYfgkI\nvqfGpQR4/p8+RN+6gKSx4DpvpNMCS7p68tqdl4OS+sXxdvxJqa3EQEJplcON\nTEPUqymgV7hN5JIzf9nSig7OCbqYnhXa4DapKWgTXnMLugsztKLjFi19CH80\nFD2Wz937rECpMKSP+Ri+oONH8bWdINcgb7RetFw9H7funyn78eHpbEgyfQZK\nyaUhcf4Bf0lWXGDwVe1aONdi8ZXts4uheW1srv9XQsJU7oerN/D8uawm9nCS\nIDk6hqDqHvZBDXHx/DvyiJhsQh+thziUqzNyiC1yeHtiAREETQiMu4Mkpzeo\nnLeskvLloXFc85x9AtHOr7qo4mzxefbJFCc5Ekb+S902QhGtszwdoHU9Zy+f\nmIQy\r\n=efLD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.0.0-34-add-performResolution-listener-arg-931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f_1550573917408_0.23771035197886303","host":"s3://npm-registry-packages"}},"2.0.0-34-add-performResolution-listener-arg-82cb3f3b74228996012b6e10caffe2c8d2a53d48":{"name":"resin-multibuild","version":"2.0.0-34-add-performResolution-listener-arg-82cb3f3b74228996012b6e10caffe2c8d2a53d48","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.0.0-34-add-performResolution-listener-arg-82cb3f3b74228996012b6e10caffe2c8d2a53d48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"412e01ad3471a2198e876d43c6ec0152e581f6e4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.0.0-34-add-performResolution-listener-arg-82cb3f3b74228996012b6e10caffe2c8d2a53d48.tgz","fileCount":70,"integrity":"sha512-IHjXtafiXRp3xMz+3FCAUbK1eseVeW+fY6cAgE4gdFcC2i5yr+kJ1Eh6RwaZhf+gBafp76qsTCqfTMHn0RkTrA==","signatures":[{"sig":"MEQCIHQYPLOX1b4IVWrFWRHwZJHHJCswQcFlK5vnLxhV0Yb/AiBhSYSzftP5ZtpQU23xsPlKi1oNdyvM4138oyHN/GjbDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJca+YYCRA9TVsSAnZWagAAsZEP/2MZwSManOCRo8gtXT1m\n9FE3nxznjiwFHZVqlkpTAuCD688Cb8vu2oUxHGqK67Fn3+y7pfQQVrPwrEKZ\nIPOfzvCliYxqqF8kKwUVlam9VRoV/rHTAOO46/HLWkRl0FeGvDjuw4kIZQR1\nD2AZHC4nz2zaWQz61O6a8aj10+0gDFm0jvgads6ThSK95iCNTg9uI0M1v90C\nk930RF2g8HgtqRMqEX1o9so9kDdJ42pdI7mXv9rX+ai9pGvCIOR1nSeyBOJg\nzPaaDyqa96Jezew9Sss+93tn/SiohhUKuvkNWZfe4hpPkCHarLP7CahuPacN\nVwTdHy08EIVPXpVRcoqzEsW2L7exLl/0Z1SOyKue1Bu1HqmNaiHzfg11Ki9t\nYGjtkIK2cgBCywuapEAHVE+WUZiPd3v+1oVXQQwX6FJwuPvn9Fdgy6tNOybY\ntHl0pSZQu74xS1dFXdhcY718TfHgjbl9kXNDTO4GdNl+o0STv4TOSVomiO4h\nuvUaSICdrzgVebky9NIeOuNe+ysOckpjj/idgSqvsg5mYRbFgNEHXhKwFWz6\nYgHSJPIB5qRxZqrKqRQGFueJ8nmR5+MyoTnqONIeryHn/+XwZTa7TiPYNSvJ\njPLb1bO4pZMFlZSXyskmsG6wMaH4IJPAmlRaWwBtFdZUzzW3iOho8qjBZmMR\nHuQY\r\n=/nhj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"82cb3f3b74228996012b6e10caffe2c8d2a53d48","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.0.0-34-add-performResolution-listener-arg-82cb3f3b74228996012b6e10caffe2c8d2a53d48_1550575128274_0.1682147870449875","host":"s3://npm-registry-packages"}},"1.0.1-34-add-performResolution-listener-arg-5c92566253c0516bb7fccfde4ce1f59dd37d3e37":{"name":"resin-multibuild","version":"1.0.1-34-add-performResolution-listener-arg-5c92566253c0516bb7fccfde4ce1f59dd37d3e37","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@1.0.1-34-add-performResolution-listener-arg-5c92566253c0516bb7fccfde4ce1f59dd37d3e37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3aa01816e30236a0c03f169c2b2bdeac33f4cafd","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-1.0.1-34-add-performResolution-listener-arg-5c92566253c0516bb7fccfde4ce1f59dd37d3e37.tgz","fileCount":70,"integrity":"sha512-hv1E7qhHmskbptP8Vp+Ql8MdCe1A5PPpnUsnx9DGDFY/x3IGc+VcDshv13nCOHaCobF9RH2DWbHm0ji/tT6wsw==","signatures":[{"sig":"MEQCIGePE6xm9qfV6Wt2LedJUQqmcAYHmxDt1SQrW11erTfdAiAb4RlZLaInN9rwjUR1wJ6NqBuQE0JxAcSPd+mBwzcKRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbBfeCRA9TVsSAnZWagAAhjEP/jxayxF3WH4f5HGiUA81\nsjyCeBBpOzbbcdT1fSzGt741jdY0cgN3WWh7uyR06RzUI+CL03dJMC8jIMOh\n13m1NWaeLfIStaImbGovDdNVy5BTB/pw3BK4n6bf/e9CKga9+V8fN+GHkJk5\neZr+0DuPxJkoWPRRhcGsexxn3V+TzJjKIaV2+AFMH3KXGVnQwb6xWdNZnZAb\n6immOL7W690rKq61JTBcGAqPjgreZ9kiWcLzK8Av2PbZGJZTKUaynK5DGzH6\nk2a38p0oc0gO5BS9YIdcqzYCM1q4rRiBJaByQAknx/bj/FbNfpdpbIumIwVs\nJKRPXKhj3PMMlx9O9jDtfpOjC7+DGE9XbH7rFkCJXYGdVTp+mHuX6k3aePO/\nFaXfXcasa1aNnJq+uzAHxyOss6CG4U0UqczBkWxZEm5uzi5aj0L56iK000Kk\nNV58h5owSRBwd+wRExBQE27o+puPngHdt1eTZKVAMaFY8zapJ02ZVBiAJyKr\nmJuIr6gvj5vKdlghp1AJd+z8QnVwkAu8xCq1iaMF5jBeRWHLatbrFI08GNX9\ng8w4teCZBW6pvHsHhzxFokFvJRFCbVMAICQcLrPtfKdcdp9DW4mfUF/spTW8\nkLzk3LZ/C85WDmqe/oc+Ewt3kIb632CaT7N6zJtqB4MZ6RFNEKYWvfiVdYP8\nUKJa\r\n=2+FV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"5c92566253c0516bb7fccfde4ce1f59dd37d3e37","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.0.2","tar-stream":"^1.5.5","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_1.0.1-34-add-performResolution-listener-arg-5c92566253c0516bb7fccfde4ce1f59dd37d3e37_1550587869280_0.6262543642749439","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"resin-multibuild","version":"2.0.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"524757f5de5bd99dc2f82edf72e58a3638481750","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.0.0.tgz","fileCount":70,"integrity":"sha512-as+MBnNWZ4vrY2RYW2+ciQJqFyg35Spt9vOyFO6fMCts7/0ptS/JqTSyCFY0T3Qpg0XGGzQax1eqOMUIk6/ZAw==","signatures":[{"sig":"MEYCIQDyjZL0H6frDrnYuj3q/Ehofy6M1raJk8FhMf7S2sAG0AIhAIVvTGr5P05zIfKaZbH2nk+NbWm6NwSj/6KA1ZGskldt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbB8ZCRA9TVsSAnZWagAA+NMP/RTUcBkWCcMy4t07Iebm\n5lf9je64TGsQO/lWQAffCxJ2ijSyMCv2xQfmxzA6CmJ93mDWuAYjAtvpc1F0\nqGUrIT9ZhABH1Zp+Z54BDkmnhEVQkn2Zi/0Z1DWqUlBwXBZDmu/Ikx7T59ox\n3oYVKT2rTgJqy2xCwCdlibyg07IQaBqnRidXr21jJP6KXMPW9Glik4D5mmjR\niLAqK7EmDDclfeglCBy9B8N/mEA/nD05I4vqVTNvelb8jSxw/v3FqqL6SsUv\nVu90AP+n+EcWVYP3yLpdgCCa8SqN2xnp0dnKYO8TLCJxQaiE+YsM0TK7G9b0\nGNU0VS0B6BT9MkslH+STs1IKCEnYczEXfkrtvX5UMx21znQqKfD15N3tY4+E\nGcBj0UXzVvBN+9RwItZmqErPYBiWdKgJDNo+0z7hBZxhP6lm3715JdzmYHWA\n/51Dk4k991tFww1639BEEjTM6rRysU+JYR6UhszSg+601VUxG0e7Pyzm9hvQ\nB/i7migWc4vGEPSnFcMBPqEsLjSxZLWtoQnv/FRvSSZuBjb5zOU/yTc4ynXy\niKnWlDIdeFY/dD34CYOpZReXvTaNGAJ8fNn5aVhCDQx84Ca6jVXHF4vdH7bU\nsc0gUsHgvYPEq/XOK5S6TGMZAmd2oCWP3TSw+oQWC8MhI2IIb18vVQ/cjgJK\nrFI8\r\n=JYZ/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"44ad4e0ac013d61c043c97c6bc097565eeb7bc23","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.0.0_1550589720494_0.4141463406910435","host":"s3://npm-registry-packages"}},"2.1.0-39-docker-compose-image-private-registry-auth-42cdb5f4db7f39a84257e92c99593173c730f0aa":{"name":"resin-multibuild","version":"2.1.0-39-docker-compose-image-private-registry-auth-42cdb5f4db7f39a84257e92c99593173c730f0aa","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.0-39-docker-compose-image-private-registry-auth-42cdb5f4db7f39a84257e92c99593173c730f0aa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6e82314358084ec00899a21dfc39ea22fa431dec","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.0-39-docker-compose-image-private-registry-auth-42cdb5f4db7f39a84257e92c99593173c730f0aa.tgz","fileCount":70,"integrity":"sha512-YzMStfCANwDm2fKOGtG7etYmL828VLwBIUozS+0apxsNF9tSYLADupANWFqueTBG/gZAOcZNSlaTDVCsj9Inmw==","signatures":[{"sig":"MEQCIDwMlqwPIpAfo0vxgna9BmPVT59wbP0lRhTrYVogwdqmAiAlwY8Ygr8zZ/uxMvxFqUBfy20bNYI9aNjDsH+TvQucwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbCXwCRA9TVsSAnZWagAAYrEP/jXWx993K3bC6GzCPhlm\nIhOIAJGtrBL6BcsBGEA02O29wmErFyQ9BQh4OW0y6yyslbytcn3IvMFueYFa\nxBvMpaXtVfXKVjgqu9lJFQcC459OKQMymD+8O73Qv5V6HNfgEqeFByravYBR\nITOg9OVj09X01rOAYzq/4BUbTohUBzm52x3hdesiGhzUbhliHzwpRhG3oX2M\neQ+KswFt+M4C/Fahuk7GjzNy7/O9ZtW1nS7c3lv/AXUA1f+MPLoy/a4MX/pA\niDRTSTS34lj24jRqdtfoiD7I6Mk8KhDVzRcAM4Jpz+/wUf0GNvTaPU/qcVx2\niZIRc3F8SIqV04vp5yIsqLqc13DXdQra+Q88TrcY54iGxQ+Y2/emjWlu8aWm\nzxZbDcPvg4uwbHsnVFW2gWFBMyfNR18BIGm6nyGRVErxV5MW/28xV/fO8TWz\nZenlweEM57h/FNdvwTqsliyvbXjAY6go+/l2JuWFmbk5BpVEDraPZWvWt4kd\ncbO3HHQNaXyRa8g/GudCRVy7D8a0vA4x9tPrZiR+8nZvtK5IXVHdRczSvSCi\n5bArlmhr6TXH1R7ledKG34z/JA9rC+LZDPKJftSVJwVhBTErOmHyb7oo71kj\neBlwldr7L0Hywayjv+GaTUmxiL7zjuPPRZuLufdlnaSUEWbLLVc0NJG2LB6/\nboUA\r\n=pI/F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"42cdb5f4db7f39a84257e92c99593173c730f0aa","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.0-39-docker-compose-image-private-registry-auth-42cdb5f4db7f39a84257e92c99593173c730f0aa_1550591471562_0.25227332580024364","host":"s3://npm-registry-packages"}},"2.1.0-39-docker-compose-image-private-registry-auth-8f19c03345399ba304573fd074b948b5f59a652d":{"name":"resin-multibuild","version":"2.1.0-39-docker-compose-image-private-registry-auth-8f19c03345399ba304573fd074b948b5f59a652d","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.0-39-docker-compose-image-private-registry-auth-8f19c03345399ba304573fd074b948b5f59a652d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c33e0b9d8d7df6056ed14a81d2c0bf74ca926c51","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.0-39-docker-compose-image-private-registry-auth-8f19c03345399ba304573fd074b948b5f59a652d.tgz","fileCount":71,"integrity":"sha512-T8CQI7O6BmQo5jCtz45ipSXK/v6NcIMl775Fl+TLDLl4o2UyZu5rgkCodsm2v7AA/GN/DowA7qPGz/JzDY6rAg==","signatures":[{"sig":"MEUCIDWHPaZcr1TMnX1SFQaNnSNgHi6uHOaYAhTc4+8yEMfMAiEAlpcimagv7RzWRemlajeXZ7iRtrTTLUK3G4KqFqgFjxM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbCnYCRA9TVsSAnZWagAASlwP/R9D9YNmKrU83FTeO+Jx\npRV3yAZi++X8ShZEoYdpURQVZfXQT3e66RoX0NM0ipA8I5+YL5Mwg8zdgkwm\ncbaxSd5TA+WznxE9xrq67PAlSMIK/D5eObWRMXo18LQu0LK0sFFesipOgVsh\nkBXc9O+6EAsy22IHNrvcJh0wJmnQmP5BXD1knUD+VXjHAGnQXGqHUMxw3ckb\nnDelQmM2w9DNAXWyAWUpzBs8HCQDKf0Yrb+AUHtXTNdW7aHScSmU6LsIcBej\n7ncdNn7Yv/scC7y4ed3KiddUjqK6Zvplt2HbkDu4ksilx4GUS0of4VsXFimL\ndSjTIODu+sQ3ukNU+ThSBGdt9NAgrDBQ98NXJE3vzS05m+obY04JaDeaW94f\n+l80I5dKiqhpYi3Fe/6iTZ6eusyXn0+lniHzPVztE97HytI03w1pTUZgUac/\nU1IrC44CnTQCe90fP847nrgv+62auB889pLCsAm2QLCkgFpLV7M7f6uuQ29B\n4FLVWboc9J49tTNBwRS3vjHI7SVmfVDqNsC9C366oDsg0GmCnDm5GxhR8iQd\nHosv+SKEYcUrfT13jGkqzK/wiq25sKi2ot933fZtkbEJaV/1WIeZ95chm+Oz\nmQrpc+J085FUKcqBIzRposatev/3TVICozRn1ZW3YQsPjxg79H0oe+xDdGBf\ngI62\r\n=0M8I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"8f19c03345399ba304573fd074b948b5f59a652d","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.0-39-docker-compose-image-private-registry-auth-8f19c03345399ba304573fd074b948b5f59a652d_1550592471489_0.5978231307213935","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"resin-multibuild","version":"2.1.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a1f26b89eda02592b62d798a907a4364701a7504","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.0.tgz","fileCount":71,"integrity":"sha512-4VFYIB7NSx5tyN0DiUUz6KyPC/0CJm2mxuiJghNFVBDXNp8BbDXHMqSoIScOB8N4rw2XSqxtVN+ctlMrTu93Ww==","signatures":[{"sig":"MEUCIHY8c7VLo0tVF4oh3iwWUjyK3SDQ2FXA/UfIJBwKgA6WAiEAmnj0lOCX6dDtRXqirwWcUS3M2MftVhjq9VVGgEQnPk0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbpnnCRA9TVsSAnZWagAACdAQAIpXBrbHcpHdDJRO9Ziu\nVEuex/x1yWSFj1/ELiFgpMSMGvPArGqr9IDcYXzumbDvo8eN5PoSI7Hi0VmH\nRPZHOgVDRycdiUz+g7XKzdiXd5eBMbDCg9Tml0niOR5GI3KZbx4e2plQJ1OW\n76H2bLnf3BDWq3kfU+lHTQOfRpnYdjIFpUO2Td6MMFzuIbYLjt3zFPGcBzeH\nCe1RCHp3RIhoeMG86Lkhd4aS4EXiOHHkBaixP1zegd2a1STUwwq/5wowYeHJ\nlcRSEK1/7ItK9h+QD880G6J4zjOTigSGogUs1HP2278YfCErVJFy2BRNL1pK\nxyFgQC/3ZkY4GPu3h72aGNWbmt3jN5jnk8B6BcozqzYni2JVwRtUuTXSB4T/\nItYUvigfsFoh6e6yVqb/U4SGFDp4Du9HN7NdkNz4Drm6kHu2faSC/f09ppGZ\nOxxjFpf/s3GVU99DNupbgNyiU0wTC3ZZFf9STxge6o+kjEm4gjnspswRfe+e\nk5We1+6nocAp0iIScc2ZCrUf/YNNWqT3XVjI2QMrjahqx3dE2/s34PAwD5b/\n+B6OmZis8qrqnN+pskdP/X0eWIQu38zh2f+htktH6ccTS6d3txJF84xWyBx9\nNMKc809wl5mv8F0jQ+7QTBdIYS1wJdcTI9hxTRNcz8Ynsu8LlwtZMkZ4fea6\n5BsQ\r\n=TWFA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"f52c42ca55616d8e9037e77339f7c5623db4cc32","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.0_1550752230383_0.5295658772454592","host":"s3://npm-registry-packages"}},"2.1.1-bump-resin-bundle-resolve-099a413a822afde3ee92f3abba57758efd2c1993":{"name":"resin-multibuild","version":"2.1.1-bump-resin-bundle-resolve-099a413a822afde3ee92f3abba57758efd2c1993","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.1-bump-resin-bundle-resolve-099a413a822afde3ee92f3abba57758efd2c1993","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"8f41ed298c4cb21a15b91de4529ac13680f22092","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.1-bump-resin-bundle-resolve-099a413a822afde3ee92f3abba57758efd2c1993.tgz","fileCount":71,"integrity":"sha512-C0rMV0KpEgLqmOHwwMR2c4BsSKaZDK5Fw8tGghoW6Rxjh0jRKtCGz/eW1tlNuVqVV/P//N+1vbWR4JcTckzhTA==","signatures":[{"sig":"MEQCIG96cXhyD5eO1gzJfU/T8bnmSrV5cscSImIuK8CmBEv0AiBSrez5P1G5ZMVG2S8S+lU6niqbbVgZf+92MxP7o+zHTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceRjeCRA9TVsSAnZWagAAu5kP/1FDI600eHQRAAg2BIMW\nO7sKTT3xAOInMZP8FttLZdknAth07/K8XcvXEF3AsyRT4+sVKDVqljfFEysN\nmJtvYVowm4WoYonyMwsRRJUX1DDuqg5Y3yYwuX7Y53gtJWX0Nowd+L0zuLMz\n7unwCOp9+PEhk+YJPHziISLlPpQ4E8CjR74KTgPKHErcwkZp7Lp7lP++zkZf\nCgeD6ZX6EfRUtGnc0WM8Oa21t0Xx0qoGGkmstptghY11YnZ0Qt1BpzujITqK\nSfgln9QzCmMZMSLPPm2oJptA2bh3CfDhuS6nO8O0yUWGJpqR251nBOKZJtuP\nivGh84fXGuBGpxTE4oChUSvIGtZvyGkm0U4PrbQn8a7U7CtVPHBV5LgtbeZP\nDZHcSNFsibupBg+6XMiJwECq4xIkZIx0QVkTnm4Ukkb7Fca5iMbQwtHrFEje\nmj9zYCAJg26NafsYpPaJY6wKcypfRu4RuoYAU5MGUdH6RNpI2bum4qukGeGc\nAIKZF7IxXuFZlN/emzMOm7GE/kvMMQAvZxv6txkKlDvH7m4Uir9DAT9mW3wM\nrKO90l954BBD1CIzgJsU4AoTgO8/BqJV6a0aXBGQZDZHX19XZgOTg7yAtKtU\n1hqe0zDcJaHpKtP4tNSpTJ6oAoWbASXPqekeD4WL8DLy1q86DZ6ZuopMjvqv\nZl++\r\n=6bgk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"099a413a822afde3ee92f3abba57758efd2c1993","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.1-bump-resin-bundle-resolve-099a413a822afde3ee92f3abba57758efd2c1993_1551440093814_0.15339135654820368","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"resin-multibuild","version":"2.1.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9dbe3744083b3874ac36fa9b2a3dceee2b7af5e3","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.1.tgz","fileCount":71,"integrity":"sha512-d58SbtTLZry3w9NCUyOjvXS3M+izq9YTeBLZdC+/ZKubRa9mLnr2lf8HIPIHrI9x7QzcY8C1IDE1E0QvWWUf7Q==","signatures":[{"sig":"MEUCIF9KqWK2pY3ecpdBTgi3654Beimhcg/3y1vaM8PXo2n7AiEAlXCN03oiHtC8L7lyah5nU97rVQez7kP04d7fSGuS6r8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceRnMCRA9TVsSAnZWagAAow4QAIZhdD1oEVk1a+sJAiW5\nYhVTmXA82uKGOipJOG+/MW/MPqkN7NnkcFp2uj+WhP+Pj4yqdiG6dXaCIZAv\nixzYA1ICr9x4TeCkO7OxBJ0PdJW0DptphwEd7+fxn3nz5KgbdfJgGJXV2jyx\nzkvF7qAazPzt3Qffbqp5FHkfq3ilI1Y53v4Hmy5M349c/vgEkDPB8EYlv3o7\nNypCv7V9FM8+v4mWW1fWCrXcmTPz5VVOlgMySdbK6BbWeoJ5KqRtKBnuzXJF\nvd/PDPdGnrS1IondepuyAp3oPuhavwRKV9uG7mRCf4B8tOzFI3IxIlmrjyV5\nrBzLKblahADhkGkpfy6tVQKWpKMq251PLaKBFA0zpINyx/vssu82Vn8dSXtO\njzN7kwgBt+pVAy2ASgnU81pBzt4JLx+Fc9h3PArgFR3rGyN0vNVElh1wjSv/\nYn4HbwRQZF0OZf5tXRBAo0j3BPrCltnk+bxeu2aCMj3Dh6crQZWMOevMnHJB\njcfkwszW9WzF9jwpvYAA+z8N57sUf3UduqvVRqJdJnN46ZHbQiwU3wkhyDkg\nd1gQCqrmgUaUjKZ1eONE46eUQU8pP5ucDWcqGd17WsZBb3QA4mn6hv0UGErD\n6JS5IAfdN8h7wB7+sUlZ8FkFQIJCZnsVk6sB6867QPjWemgmzJgPasEX8TdY\nEWFt\r\n=BA+p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"db999e676a2e154c610596c9d9da72198d0d68d7","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^0.7.1","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.1_1551440331845_0.3687354549079589","host":"s3://npm-registry-packages"}},"2.1.2-update-resin-docker-build-a33a4a98684954325f4d88510df7858366847a40":{"name":"resin-multibuild","version":"2.1.2-update-resin-docker-build-a33a4a98684954325f4d88510df7858366847a40","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.2-update-resin-docker-build-a33a4a98684954325f4d88510df7858366847a40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3e781892934610331500390d413637598548c3cb","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.2-update-resin-docker-build-a33a4a98684954325f4d88510df7858366847a40.tgz","fileCount":71,"integrity":"sha512-UVfahvt7lrkF9W/K5Cb4m9Zgdt92R5ZeGCope5Kifce7W3aARLe5Bq1rG3p4e46D2yq8GplN9VT9Q4ZOXCZfwQ==","signatures":[{"sig":"MEQCIDyjhHZutr2l1p4MzSGnRULeabfmqHItxwUS0OlP7kkjAiAhMJrRVIu9kKMopJRMY5AErlzPXo2CruHQWfhmefEH1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfVLMCRA9TVsSAnZWagAAQ+QP/iDhG2PWbt0N0D3/1Yc9\n2N0t3ZePNREUSayVjvKx8v0VtygdXMBKmDAB+L7rP/Vvh+zrRg2I312UhFFc\nTecLvqE4Vas5Nzjjw5QJ/EUaNjc5GdM96ll4AEhaJuU8tM+5dKkubHE8/NB+\nl0SSjr1uBXgJ6PjY57aLkQme2m89djessW5p+xw3mborgtIxFupx1bBHr+Od\nDo2RD+9s8rBA+pdaqGiCHsVlKa8fCLzgN8g7DgMFegrZ/2tZw4XL1YjLkYPJ\noD0XHGmUrY+xptTTP8iuoJTBIlhD0xhKki5rPU0ENKcnVI/SvJcC8LEFfvUQ\nBpQuYLbvownvxtO0fccZGJoO7CMtzUe7af84dPghX2uChhkX2VvyYUDwupyh\nBTGjqY73zqHeosXoaodsr+1voLCIw7S5fxfngaWJHqGkfPt4SIseliReUtt4\nc0TUUJMkczrlGxfpUXA1v0eC49HuZH0wfbH15xBfh9XJqrfV3NPrQGRDpc6H\n/CebJeCbTsrU1EFmy+Bv24YdSKD6ZNCSAET4dZpcn4RF5vw3n/F9jX/uX/Ud\nzFGWB/FUWqIP6/2ZZQbHHeWfbtM+8xJghVtZ8/dnPCeFJfec3prc4pI0YpxF\nN2sytMsjI4b0YltOpt1YqA2MB/cr7vW5j2IzzWqbkjuofFZrMEZkaKLPcDKY\n3DJo\r\n=4V6v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"a33a4a98684954325f4d88510df7858366847a40","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^1.0.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.2-update-resin-docker-build-a33a4a98684954325f4d88510df7858366847a40_1551717067764_0.3345070685958227","host":"s3://npm-registry-packages"}},"2.1.2":{"name":"resin-multibuild","version":"2.1.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3cdc2a2987037063e5b6459b8cf8f2df137bfa47","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.2.tgz","fileCount":71,"integrity":"sha512-Eodt+DVLCAFkFX6hSFRE45rVIRyFOJcm+SPMKW/9XKrRW0ngaBese26zsifqhJ1xYwUjv1ARMGPpw7bBNc86UA==","signatures":[{"sig":"MEQCIBtBD0/hMsl2ANmkx3gSmLJ3iK3B4BrO8d8kmAA+IgucAiAeuNMMU/3c6NSDg2N4m/yo+LnxRme2Qa6lWmiC8lmfLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfVR8CRA9TVsSAnZWagAAIQsP/3JF7YFTuKWpUDQXLgsI\nG6OiZUqpFWwyxNcyDDYPhdmHVHZ+xmIfvirwA8dxPDAKaVJLrIG3ZO7NkJVi\n9nhemBT9ejLUuE2RtsUuvQpmGzZ5hOXUgTf8M7pEYM5srREamWjTcyMK7Fwo\nauYvmfmYnm7OYsMG9CpYZfRHRR43RQipUs7+Um+9SVVzsnAMXX0CWK7RfJHY\nFv5uNXjcoUPBpcScXTWOMJM9EDPVxcGLedJhQ2/PBHHeOzgmS/FfXYJMKwaN\njliPb2ErhWPopHCbfp2hHl2J24RpJpV5Zpiu+SevC7FLeJ33BLQM4V+Hfavr\ntn1GA46qHrqixJJ/SrKF2nwirxI/kJeEPE2MCOR+XZTd3boi6ssZyFu2AiN/\n/KqQQ3oouDDaOwD/6/GY6z7ypxl9bTPuqFMa2xx6GHduDyy364D7D9H0L1qi\nupDgdtHWnNtqpmrwJASOZb9SlPn6ZatakrVB1793XTWUuqZjnpylSkSKMnTC\noC0HnL4rRsE/D+6opJhYMAsuUGg4r383ECM6GIyuJtlOnPYsnSdYOKKuSQgT\nqoxi+RHTaQU4kIrnCLpGojxbkSR1v76Ka3uuWald7Lw4EW/ztRWgNPSU7GL6\nijbC7HsGnBv4qpgodN0LB8Lglmo/RTdAEzuPCM3EvEdsodB5L6jo9PBuO9yM\nbhPH\r\n=gLvI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"d9b7c096c9ae4c79980b8d75b70ee957138b7846","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.1","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"^4.14.87","@types/bluebird":"3.5.18","docker-progress":"^3.0.1","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"^1.6.0","resin-docker-build":"^1.0.0","resin-compose-parse":"^2.0.1","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.2_1551717500101_0.09680524260250634","host":"s3://npm-registry-packages"}},"2.1.3-bump-resin-docker-build-72a196b7f481c5fc8d6aa754e1195d177091a790":{"name":"resin-multibuild","version":"2.1.3-bump-resin-docker-build-72a196b7f481c5fc8d6aa754e1195d177091a790","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.3-bump-resin-docker-build-72a196b7f481c5fc8d6aa754e1195d177091a790","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"befc0bf1363cf0950324fc6a7726adf8b107df24","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.3-bump-resin-docker-build-72a196b7f481c5fc8d6aa754e1195d177091a790.tgz","fileCount":71,"integrity":"sha512-yRPxi7oacwjXWI5ATu22wG9s+zVO1GvHcLl1sgrR68HW40Mf1Fj4lbjVSKRDM7MA6tQTrhFXY1GzIcpFSKeXhw==","signatures":[{"sig":"MEQCID8Kiio3IPFPfMedbH694nioG8+W5Sr1KKT6DWLfc8gZAiBXnJX+22b9PZlr89hbtD1qhRKIQcW+h2/1v+nOpiCtvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch91lCRA9TVsSAnZWagAAAQAP/jghW4sk1H4ngZEE6LIA\na7YEP+3IJD3DcjPBWAlgLZtOaXYpghjkcIROMb/bO3IITERwvo8fBQjUt0oc\nm8ms2zJ+yLe8dUrZo0aqTAA4dCO35NmO2Y6mO2PAarlMXOjzJgBvLtkVuvNU\nAZOUrgfJLd7ctvHR6v4PDpE2dSnvKnVbxk+nrSjqqxqqe3AIC4/73RQbkQif\nJpVAAw1KG9Wil13IDUuhK/2ifo1IbAlwzolSKQDdlZtLzm2BRs/MPUVDcSo5\nmrTpgNIqljMXgd2R5JgPktQT+7VHJNFXZV5RWJ3Lz5jWoFgYdFxjRSf4ELZe\nJVITPyf3CVJHp+YsATO10H2ZNYkL0BT6dy2Cz2+iFwj0b6GRYrpivX1uMZCC\nNDd3hyeFs5M5z2fcssNQHSjzPzPGmchmHZ93ntwn9r+UO7F3sirFitJOovo0\nPrTQLxGQquV4o1G07BV6Ganlbt5ZATk3h+O6uq1sPKrITRR+6B9rS8oFvyIT\nSM78c4Xn8b3NbT+D3FsTwy5WZ35BOQHEA47q4fw8LxuWFn0BQAKcu7BXHzU+\nEIwqFqNHCWgbO/Q5ILnfeKnvr/Vu+oKfEcqyhIbPtupY7IXfjKe9cNPZHa3p\n3MvVk2TFY0zO5U0xxxse4VnS/DTNo9GIdzGRasb0X0DELMZzfssf+thlQ9t4\nUEei\r\n=deIq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"72a196b7f481c5fc8d6aa754e1195d177091a790","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.3","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.3-bump-resin-docker-build-72a196b7f481c5fc8d6aa754e1195d177091a790_1552407908778_0.8212486144389002","host":"s3://npm-registry-packages"}},"2.1.3":{"name":"resin-multibuild","version":"2.1.3","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dcea7379991e1d335a5a40616ef85aea769b7eec","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.3.tgz","fileCount":71,"integrity":"sha512-ZYSofMSfjaoRwD9uu2y9QMr2tqHGqoh6nz6tt5jn8Kqt0yMMgpEDmv2/jTQ3cTias+o+/N19Mv5C+sRgjoaLgA==","signatures":[{"sig":"MEYCIQCBYZPsl6X8l6crXBkXHVOlYMzGAkynh4WZuEK7xUQgtgIhAJUFXowvliavAwnw4egT/nR/MROcNH/ltW/xovtzvYTd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciCwhCRA9TVsSAnZWagAAzTUP+wXTsXWfXm2pKcu83QW5\naAvv2mFntbcZGb6Tzrm/9TzCWmkZJqeLVE1Vf8uNDjtKChZsFRMV2xaOHHrY\nf8HdhyZ3s9Ohb49LEPed8cBBoZ5jVFaLTgaG8dT5NttEj+0S38+8ZX6VFZ2L\nNpdaRFlsdSXKu96BHdsenFT5QCWPjrv59JrC+Up+ihUN7ym7iNPREbVUJfxE\nA0JN7EjODYK315BZxUlEfRQEwEd3clYe85P4ZU06wGaLV2BwdB086Cd9PR0/\nWZQWuTTSZB4B+L86p4ZC0SgtCcd0hAMBMpwHUmef7TOiLz7ws3F7nRsCEfAJ\nKAK27QSPKymH+DKM2+5eUfVaxRBFLx7OSnL/fauvIt5QhG1uCsNiPd7aZ4E/\nsP9jqLjAnO7dp9wCMYioY4EBdkYIR14/udp2/gnJfHfxt8eNOu8SReLa1h8m\nBjCfr3O6fGzKkYVbro6aymrGNwbJlhTYhVavhpvJGzkd1rUz+GWtDJKT026y\nkexjRNWAiu0kqHnNYQUYsrNUQZABgLhK5hHeazg8/ljfRcU08VmeEHxJJaDk\nEuLCUGV26PwQzv86CrCvWMGGUqtDVczJwfP7swqfjQcJVbkUnbvbpYBWhK76\npy56JID2Y9+Wr2Mv9NZmql7PqzosDh7+g141ePMItSCV9eDI8oQ8pCpPfVHS\nJ5R2\r\n=5mr4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"4c7f37c2d7422d35fc705b0595b406253019c8f5","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.3","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^2.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.3_1552428064240_0.43922978345911146","host":"s3://npm-registry-packages"}},"2.1.3-bump-resin-lint-3-0-1-c0ed6584643cac587fa085d945da8a6fda10c07d":{"name":"resin-multibuild","version":"2.1.3-bump-resin-lint-3-0-1-c0ed6584643cac587fa085d945da8a6fda10c07d","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.3-bump-resin-lint-3-0-1-c0ed6584643cac587fa085d945da8a6fda10c07d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"697dba66c0da9003de024792da1ff838a16b95ea","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.3-bump-resin-lint-3-0-1-c0ed6584643cac587fa085d945da8a6fda10c07d.tgz","fileCount":71,"integrity":"sha512-msa6KVaVuw5RbnXUPmMdMgoar5IxPlmqFZl6M5a2dG8WcVWzFEYkNjOwXfIjqk4bwP6MpxEJgKNvCD+xubqcKw==","signatures":[{"sig":"MEUCIQCd90paCw+TeWB+VBSb9n9u+RDw0rfiqBI5buMYAyEiXAIgc2JiWmA7fYt5OGSEBbRPNJwXfKx0kD77g1XAUR1jAEU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciQ6RCRA9TVsSAnZWagAAwyQP/2+gUMoi/dAUZYlOCkEP\nF4pgvRuDMEtykkLwEZRrhjPeN+GlVTBwfHQ9cEx/1eKwWUbi84DYhiSRKFeG\nEIxgY1D8kTmEzFhnD9xOwvTvLjUFbXjvExFfPpVDjbpMav8riPwPAwGi9qb+\nU9srQFmYpeNLcM4mN4+EVjHzf3K5Krt0EVTvFLA125kyTyKbQ8xapIDF9ZWk\nq4a9l+zBFuiy9Fsb7C3Lgy7eXxw9nHhvqI10srJC8HtHpnNak/gpEWEKBGzi\nhvhVpYveCY+nfgd2yHGQvWtTDMm737kX68VjsJy2GR4NQUIWWuySdIcMy9DJ\n+xr9qwY9Q7C5NPJb4kDmVcFA8S165tw+8jU22sxHafQPEppxZoN7j1W5QF+A\nK/dQr66iW9fPEAFVB2doAkavMcDYBKlwjeyQwSswdrJ4IsPcnT+n2xjdKifF\nTUT9MxOl4/dQAIzmC9n6c4g9vduJNyxdCf1PMQLI0Qe+1JyqTpAc1amdrkNu\nhBu/g8hooAGY4DTJhMPq68auIjwuWyFY4D5XRluiXmAqwZVtBG2D4aozuusu\nJwa6t8AiC4wx+Ym5Xp2c/3M8fsAQEUtrV3ylcOYVYqHcCA5BVCtdnPNirD+e\nPMnWKWLptPE/U4tYY53NYT6Ml9xRUq85Q7L7RQ580RwXkvzegXabhskXhIEz\niJAK\r\n=tTRH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c0ed6584643cac587fa085d945da8a6fda10c07d","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.3","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.3-bump-resin-lint-3-0-1-c0ed6584643cac587fa085d945da8a6fda10c07d_1552486032556_0.06541936041013208","host":"s3://npm-registry-packages"}},"2.1.4-bump-resin-lint-3-0-1-05c5ce3437b0c367533432c3609f204ff32bd50e":{"name":"resin-multibuild","version":"2.1.4-bump-resin-lint-3-0-1-05c5ce3437b0c367533432c3609f204ff32bd50e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.4-bump-resin-lint-3-0-1-05c5ce3437b0c367533432c3609f204ff32bd50e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a48d2a6362078c9383279e434e914e9054c1009f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.4-bump-resin-lint-3-0-1-05c5ce3437b0c367533432c3609f204ff32bd50e.tgz","fileCount":71,"integrity":"sha512-1TLDRKA8qS/FGHXW1pI9lZWRckQbOerVxFK5fWx4eYsBmexgjTKf7pRbzSZP8fOVSEvcAn9QBg9yLYlY5k7bcg==","signatures":[{"sig":"MEQCIGRIgjujN6ThPrV2Ee3a7WYxzlOl03p9Z5T07lWhH3RAAiBIVW/xzyrjmpaGbqEFrtdYZrPEYY4iuUniRcokmLEJyQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciQ/FCRA9TVsSAnZWagAApOgP/jw+WaPAx66R/Jcl7AbG\nHz686i8umW5Ch8YkbswFDbE8lkyGI64IqBOCQuq/6IiRm5hjIcAmu61qs5ly\nBTSEQ4+Wy9UfEfZRk3/xM6THTyL3up9nfAszJi9cVuCvfIevosaUhsU2CVJA\nztfaLm5nuJh1mMv7cUGfzKjfJWbccS2uW4QgCll5NMu6Mt8DknQDLRvXjNI8\nH95uxHBQs7VOMxIeSHtJzwR8zM2bjrNk2pbrahxm08Y3BMNPROOqy/Gc93Aa\nIgGbumT6RIMjV8hOr7YL3ooZiClvdmFr1S3uq5JwgxllWNnOFZhUyaQTJUvY\n/EfRXDnV9gqnPIbHNpIlnuFW5T001pW/8yOEG8FQLxbm41U5rdgcGJIlJM7M\nSwnRWNlwCFQ0EQUOy6Urw7iNPlnP/C2Vls8SQM4HsOTUyxuhutVVvnl/8wt5\nQCQRXiTcjIVk1NyORje18lUofgttEfXcoKWrUjl8NUxWGNKt0fuup2vF1+HD\nwTEyVQFau0YEbfANYka3kELcfhC4duEETqtVbpuUvtphUo1wjeMToc9770wG\nUG4Lrcn3iIaRveW6eK0qPmcX7g+lJVnd86qLr0fXbCYd/PBA9dJJkL2kghgd\nG6+JNdi86CYEb5ikmDHRqXYlII74fjIRt5ZkLKRqd8O7Fq1a5OS50wxLpgXg\neUGU\r\n=isGv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"05c5ce3437b0c367533432c3609f204ff32bd50e","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.3","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.4-bump-resin-lint-3-0-1-05c5ce3437b0c367533432c3609f204ff32bd50e_1552486340717_0.18200448219659537","host":"s3://npm-registry-packages"}},"2.1.4":{"name":"resin-multibuild","version":"2.1.4","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"748d10a06ce1f772155e20217824cebb50cd1c3c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.4.tgz","fileCount":71,"integrity":"sha512-w9AhogRmaaBr7PmSbkYtx3G72HnZ4+DUxe7P44BAf9a4jw7F6MQEkfeu87GRE7J6sAzPzlYOHRCCP20czrQDaw==","signatures":[{"sig":"MEQCIFML7ToOLsjUfs6wS9kiqu/AZjT5sAkZ1nzPh3z0iTXiAiB9jhiq8XvR/paRTyACls3FxD6cLcxI/1ebjDmWOAOF4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciROUCRA9TVsSAnZWagAAePYQAJqfd/OKILYlKYyz6Qib\n14gk8mWLZ689w0KHmp5Bpi28IOOX2sOpqzFi9mYSldGHZgEuP0hZ2r+8hKvo\nwL7opXDeKJ5UlwhvASlLKlfHWE2gCMQVpcoQGGm3eBchiRGOr0kKQ2PW6I/j\nVadEOFY26jJfgF+9J0Gj48oAYC8c3pMMtfjoXNDO1EAKqoUDIMdqvUAGvKkc\nw4EUJ4bo9KOKmD/TdVVPqcP2+yxbX99VXJcU3zJkS+m2RkG5IqsHvJTwCD3E\nVfZgNULdGFLyDIinCZgv89M82DWKFUCJYyq3tzkm/mee+0m/L5rMD0oIgZow\n44qycG4wg6OwJGXUSdmQSsstPIlxt74sqURdl3y0eB1ZEs3NekDAjYycbKQ0\njuKX7jPy4bCw618KEq1nmyxtOdBLK6p6z+9rN2j6gGRm2mzLolwIWYI0dbE1\nHmvsvgeggKNdhy2S3x/wKnNV9Vs3X7D8qqZYuyHUuOU4llLnOFALK5wylZqw\nKnxF0ic9At0/C+yrnVUi4EmEIqE0oUZV6zNsUK6eAoxUozIkiCh/bWP40gWQ\nAF2Ok9ux+0bByAWdOA9X0QqHbYYVBKbVdpANMSxgmyt4r3WqwZzau+gZDR5f\nXKDE+y20KSrZ8VA2vuga9HDaDL4Te99opamgbc8BCi/HABsxaWrV/+nlXtYf\nbTau\r\n=cQ2o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"200cf74fedb7cf5ca0cd88e8550a050bada33ab6","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.3","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.4_1552487316294_0.9486590484817583","host":"s3://npm-registry-packages"}},"2.1.5-resin-compose-parse-2.0.4-29552ca1df80e48c0fb9287054e3bd8a4b29274a":{"name":"resin-multibuild","version":"2.1.5-resin-compose-parse-2.0.4-29552ca1df80e48c0fb9287054e3bd8a4b29274a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.5-resin-compose-parse-2.0.4-29552ca1df80e48c0fb9287054e3bd8a4b29274a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"2d514a1f15582f82ac4053a81e22b08e370eedb4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.5-resin-compose-parse-2.0.4-29552ca1df80e48c0fb9287054e3bd8a4b29274a.tgz","fileCount":71,"integrity":"sha512-ONUwcnTxOqUqWWspnOgqoqy/m4a2VMeTeI0I18RSjO2LpH298S8tfEbfyyPJkBfF5aeoKYhbBQLn2wy1NSmeHw==","signatures":[{"sig":"MEQCIAc8M+f7AdmKY3/XXP/QmceF3k4cLZx55RQCOIULi50MAiByvGgFkAvctg7GResKebT2yhAf4lMgC4tMDOZnw0PQkA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmVEgCRA9TVsSAnZWagAAw70P/28H1BL0aJYhK3ODGTHc\n57ROBtH0yx62Owg4B81uH4S1X1yuN+L/CJP3xNJ7GPalYbnc+fO0FM0S25uj\nVp8jX4tNX8FmQ1Hj3CKeyvQ3ZRBMsMx1ArL79JPAWReoigksA37M+yI0CVhd\nTaI4u+K3W0qeNS7ZByJsnAPniKMtp93P96I2eq/P2wKxdzE7pLEZi9mLd5i0\nR3G8CD2iUwFPd8lInVJ7tLAdn8Fcc1YWaMRtEWLIsB3DInkrcgfntTIKefQs\n1cKvakLRRSUI70Ms1lCAKFoQ7iA6LpH/bQz6kyVW2ffTc0C72lRb+ZV0pbtE\nx48f5sh7Ob6jXYYLk2NDOPBvqkb7czLyWO2JfLcjiU9kUawL+5NA7Bmikv77\nwEVwepA5zLN1Sztl7ZCgKZyvtznhn5R+iA3SjWcq/sxSKfa3NIkCyd28aMHR\nPqlCu6isTkXYYqnROwYNC7SzZjkdaUc1B1Hth5LQJE/+i4tRBUx296LtmSgX\n7xmAoZoYPbQCkSOj3B9W09+oH6elrKyC1+E2TPfZZPpPQVlJhuZ7NGOqK9S2\nFt30aekZahoXWIOxGHyR54KmzPt5IfbyKW3qyp6za0A4G8oJ7n0ja1WPIG5a\niM/sf9/264S7785+riZzXAw4L7LDW9jkOzVQFyAHwfivWcARINL9DK55MaKR\nerjE\r\n=jbNZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"29552ca1df80e48c0fb9287054e3bd8a4b29274a","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.5-resin-compose-parse-2.0.4-29552ca1df80e48c0fb9287054e3bd8a4b29274a_1553551648038_0.5156746623296831","host":"s3://npm-registry-packages"}},"2.1.5":{"name":"resin-multibuild","version":"2.1.5","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dce59bbd70542acf15f466f8202576b07bf218b9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.5.tgz","fileCount":71,"integrity":"sha512-h7nbM/mMixZdcAdxEK+GtfWIWtaMA5uCaLUt+Z3qDQH87vs8h0VaLYDxdUK8v2Df+lW0hpHsJ4LfFYQn1Gx0ow==","signatures":[{"sig":"MEUCIQD+o4U+5jyJBe+rv2WFbh8Fol4qAh/Me3hWaWfwF6b/NgIgRFaIURMfBQp4Mrk/be3Ih8X+I7PBKrhZXQr7Dg5gB08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmVLeCRA9TVsSAnZWagAAnLwP/RWz9Q6JX7fT6ZGiu005\nLZVwa+cleHD3xorBpy8E9GNj+6qsZzK8Tb7NCpimRxPXN7WPHYs5BGlZ0uGz\noRXE51Mlv5CxCjMDgMa/7cacub0tGyL+k3+lSS12FF1F+Uso9wAwt1yINUVW\nlh48nFv+UXSggUP5aUgor73Q3HkOwkJGOaxeKMxR71wmq2OINP8aRV4xXWCl\nQv/fS08o92V+c+KkTbuQF5At0wOFv2J504YN4liP0ZepPOLq5GIR2ijpeR/P\nzF2EMKicJWftKLNr5xnmlPP343PzUdd8zZSR4FePvTdyOsVY28UQQ7XJ1yXq\nsHcSuxl6dw2CqWN8D3807U0pwX+fq16Frmy8hfdcRguMg1kuc8ilQtFKYKzm\nQRzFzk72rv7qmeSEf7cwOSc/lfursDIzXOOoUSG5L29B6g33glMwzdibnN+h\n7AHqh/of+IFj4fRR7JmGdG5ylj4uzPZciLt+jhMecrR0VUMVYgx3spxEYTxo\nWMnm8rby7grXOjmqSyrC0shMaWdX8bkbheKWzEqqngApDHkpYnFqQO34vE5G\ncOmcTZEJWPmrjYwhZSgA/Qh3I/hDnLvPfGq3/J9PsY5sZmo5WJLRQ3tVG7oG\ngx9UyiZbY2LwYGc4abqDy7zgwuER36pz0NftxmdT2iT0FXdbEUnYy9+t5R2T\nmcZe\r\n=QhzH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"a36582f8cfea36b90e663f3810d6f0f2e893eb82","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^3.0.4","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.5_1553552093801_0.08020554876748376","host":"s3://npm-registry-packages"}},"2.1.6-bump-docker-progress-400-d738478ddb6a3941bd557de4e92459cf81a42461":{"name":"resin-multibuild","version":"2.1.6-bump-docker-progress-400-d738478ddb6a3941bd557de4e92459cf81a42461","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.6-bump-docker-progress-400-d738478ddb6a3941bd557de4e92459cf81a42461","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"f4464268b99dff134da9a7e4ee312ed8c13561f0","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.6-bump-docker-progress-400-d738478ddb6a3941bd557de4e92459cf81a42461.tgz","fileCount":71,"integrity":"sha512-Y9KbsUZsg2YvfjoDqrOGD7SbEgSxXZK48bUCPaAsxt4WpFyjLBxxHB8FUvcR7b2IWIAne7z0Jm0vPpv5kj7Nfg==","signatures":[{"sig":"MEQCIHx+V0AKxmp7EyUEpKBhJg1ubKs8jgM0nFLp9FAAYWX+AiB6QI9gYwmiz7b7CrgIEICElERqE8Z/l3c77y3+3b/e6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmloQCRA9TVsSAnZWagAAG/QQAIeM17l2EolxQdbd6ZBk\nx9ATdkwHCep0+QLLfU6k7+53WBZ2uu9etT8itw9QaiO2VleOxryQ7NKmjRxF\nyajFZCwAuOZxBYDi0ExHvoHknUppVKjOCSXWNaF43SLRklLKPodmP6XUNxxQ\nOL5+28ooj22ym7YdYDcKEJTJArQ2tZ/VQUrcQCqxGtp8vrDG60NhucYGGNTz\na/P5qpbnP/yJssak2z/5p7K9QXiT3dEtP6sgnEJFOdqzi2PT027AHvcpVuLi\n5dQBEQspyddByphXUHTdAEMvwKSW5w96tUX1l/5x4F+P0N8IFHuYFB9EFM1B\nIu5/5n70zYosNUmzHzgbQepGwwx21op4F3PQSLbNzfVtk66QjDRsb8LFI8Ks\n2hRbYHP+8hVPI0nSizTaGp7gGwbeTEbAHoPDgbbqRlwBuMmX9jFDIVlpl9Yn\nQjn/SMSsKLUBzLPWtq6+6vCEO28pvUQFaSGI8EFVcXlwE3sSUIun4YzZgYLE\nE+8gVn7jul5LQuKB0xqkaoNuQyHZrA/iPbpo757fMko8R5n3KWr9Rf6eVxzi\naZO7UnzIYTRK4HNVTVU3l3x1jQtZ/+gLMQFbc6KioH95wHv624uFR3vI3U95\nmcrI2wCYs6c1VZzzV9xqHRvwUTdFdiehtqy6tn1Alg64/CpIoCRpTzFiJThu\n5FT1\r\n=k2/v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"d738478ddb6a3941bd557de4e92459cf81a42461","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.6-bump-docker-progress-400-d738478ddb6a3941bd557de4e92459cf81a42461_1553619471345_0.6453860188464033","host":"s3://npm-registry-packages"}},"2.1.6":{"name":"resin-multibuild","version":"2.1.6","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@2.1.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b229f77e7c0d7f099357aeb5906d4651e6083c85","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-2.1.6.tgz","fileCount":71,"integrity":"sha512-n2Xb688UxzuNdFEYS3EH81RXY9FlgSO2E3TsUL3y0aGNfup1s7G2uEQGc6GYk255nkTTGCxOQMyx4u5gTCPZtA==","signatures":[{"sig":"MEUCIQDIAuMwS0VDNCoeqk2Qs0B1bzovmELbP8VcoPrPwCX2BwIgN3CVImFDusz8YdrIHpdMnkLZ9jgR1wLF33PJhgYZOrQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmlxTCRA9TVsSAnZWagAAr1AP/0RW2Q2AvE5S6strL0zd\nVNKMTNp8w8KdGG7UpI3U6M3KFxYQIG0Jgi76LxfuWLWTkomKXvErM/Fv/fa9\nJL8hnwTiOQN83/K+mjo12tMKkysCmP2Zm1MUneVln1EkzXvkbTN/RVOm08I1\n0gsvje/WD7/8Mjqh0723ZJEQPbBAPz8piZ+KNsd1Gxo6d9WtnRDidpN2n9WF\nRC5WfhLf5YPf1p5gMzuHGH9G+R0Wn5tgaTrfEOHT+yS4TF0i6yVEka0SwK8h\nvmij/ghDrColC2BDRTqcZnWHZHnGQ/cAUAPvojuyoVkf3oAKP9EhurvWlWFs\n+pZpQq7HFORZWxHjUTMIRZ8JndqGdkkjn+BJxKiwBvNN2p+VMM2TWPOMhC3Y\n5VL5PMSrwaQSpcYaOXW0HFUU2grmeMXEFX25aj3/bjfGrLPjGVooewcwIGTk\nvoHOuRD2nyUcxy2CcoaRV2c10H/VBBJDySSYCjGyJU0+tvDU71SRZdyl53zS\nzA1q53nnJTdMopEQhoyrhc4rgBA4toUN/KvqHnHcETbtJIhjRlhZeNYGB2PG\nWvS6vOKMi3TFQlV3+xknLFT/ub3GzmNdZJRKSvV8YraKIomUtUXE4U2dH4MM\nO/DmRFvUX0puqcjsDyi2HMC6/Vcd8ipqUMJXmPhTAcc+SAeBIqEY5fwK4QHE\nbdLq\r\n=PWsm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","gitHead":"2b6fe4fb87ee8fd00b6873f46af5a491ae92d914","scripts":{"lint":"resin-lint --typescript lib/*.ts typings/*.ts test/*.ts","test":"npm run lint && npm run build:test && mocha build/test/*.spec.js","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","precommit":"lint-staged","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.7.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.6.1","lodash":"^4.17.4","bluebird":"^3.5.3","dockerode":"^2.5.5","tar-utils":"^1.1.0","tar-stream":"^1.6.2","typed-error":"^3.0.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^0.14.3","mocha":"^3.2.0","typedoc":"^0.9.0","prettier":"^1.15.3","resin-lint":"^3.0.1","typescript":"^2.6.2","lint-staged":"^8.1.0","@types/mocha":"^2.2.44","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_2.1.6_1553620050775_0.743643385858348","host":"s3://npm-registry-packages"}},"3.0.0-update-resin-bundle-resolve-c44fcbc156909604a2c576b3671563ae3a66c900":{"name":"resin-multibuild","version":"3.0.0-update-resin-bundle-resolve-c44fcbc156909604a2c576b3671563ae3a66c900","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.0.0-update-resin-bundle-resolve-c44fcbc156909604a2c576b3671563ae3a66c900","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ad85953638a8c86ca979fa00edf3edd731ab8851","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.0.0-update-resin-bundle-resolve-c44fcbc156909604a2c576b3671563ae3a66c900.tgz","fileCount":71,"integrity":"sha512-4DN8lfmMvPcxuK0Tk7VBlfZuht0P3pGDj20fB4ZF+aIwXcaczNGr3RMzT9Vt+mWTWoW0ZPKB4/pkDD5Hd36+lg==","signatures":[{"sig":"MEUCIQCNPGnQn0+xljxCihA8vvbILjeborAfpgQ5VKNgIqeqOgIgBZ+Y2sdVn/Q6lDSPvDcxUk/BJCeN5EqD4A7ZdUxyNDE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsKMBCRA9TVsSAnZWagAAS64P/i4ZoMKHkmdzKvbU8NDv\nusLZtnE8F33/07vSmAwnC+LoXDsJAKzgYk2nmgZnwnxBWIxO87tIpbYmjDGO\n7Xh1b2VJPf/RAAw+PeqyB9USQvul3QTccaHM1ThP75LLU8Dbd9dUIPnSXx54\n9qRTeeSXaohdsJpHxzmsfa7dap0PHIsaGN6dYKDYdj4HHfSGiA++BRviDrr0\nwifAiGjRoz/7DgM3GFX4e18xER5ramiBKKoolbqhN/HO2/+XuxUJYFc4Vg0K\nGugfCXGlOQSjabJU1aHFMCQohMvl0x4cTprnd8ezAD5LGAtUdR1NKMHyQrjU\nq+n7CfWu5AGIc6kuUd9kYO5wsML4H+IRdRkhbha8o1EYT4+m3gbaAY0qMDgA\n610VPb9IC8yQPE8En7f7PB7K/3VeSJPNLJ1fEAQz/EP+2TEOdrgvj/dYORiK\n643XdwCOqEeDpY/z9/N19ILyYKopKm/s+iwAd4DeBQG3mZUXituLJjN5a8tR\niZ8rcgmV1xARA5k1N5T0XSjaoFGjCsC/ZS4u64yw+w3m17DIeWyDeDyty6Ov\nKc/lEGgEzu+Vfo+Oq54GoY65mGAWaxmhJukWu3gWoAoYU+eQ1KA/39Oi2WoR\nb28cWRCshBzU10NmdE/uEDj57HtGUL4xtMke5NYuQoXnX1A03w5vnv5zub4n\n/ryx\r\n=b+qt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c44fcbc156909604a2c576b3671563ae3a66c900","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^1.1.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.1","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.0.0-update-resin-bundle-resolve-c44fcbc156909604a2c576b3671563ae3a66c900_1555079936899_0.7221971237371234","host":"s3://npm-registry-packages"}},"3.0.0-update-resin-bundle-resolve-35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd":{"name":"resin-multibuild","version":"3.0.0-update-resin-bundle-resolve-35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.0.0-update-resin-bundle-resolve-35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"680eb7aefc787a9f0e4442b45991b8ce6a754488","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.0.0-update-resin-bundle-resolve-35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd.tgz","fileCount":71,"integrity":"sha512-ggdVrfWlj6zEjaezcvMOEv3NUrprvgg28vEnAc/1Y9gALZxmucJlkFICnDR8468uD7PqnU4UCA8Z7Zdew3RKyg==","signatures":[{"sig":"MEUCIAfx4zHjRmnGAZeLLcH4jgiy17hN8HgvX6yVNpkzZvkqAiEAyP7BE8cxzU1NqUYh1TYdbu4nHv49Qxzi8hzl/D+aUwU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsKQxCRA9TVsSAnZWagAAwLMQAIpQok6/9vMmARbahdwX\n1C7l6RSiLZzFZ+8kUCzJmLV0yeV76LdyBoA2MdmwAIG6hUJEXn2jJAYVl7vP\nh/IJxeIZPZSfSru3hrPNynLdn8fgjoAWdwcO03FSZoXVFnHDLd+/NkHuKNdZ\njZ8wNIfXFmk4ggUfAQc+wN8wQOVwQRdSsYrwfEhq+IRNZvZjsRm2JagP+NzP\nZqZIyNZg1Dx/eVPPPoAItsTS8Xgh+XqifO3UbIVSDA9h5qrZ0TkICUyPpaDQ\n4hA8ZCGqVaxo/Q0txaS6T3cUCvzEF3iGDusshFvHxEBhiERZhf1NkBJjNjH8\n06aZH9d+zPzmmXvR0BiJA2QNcT2YImZWJNF4ENLVAPl2usGQuaL+w4WVc4Rr\n5eFmblUcvH33QUGLhH/IZQjvcABKlfvLoYwWHt9D66eTOzQ/vR+vwmkuCOkT\nKtBNmxFqia+/V1HWTcomXBho3H8jUDHUhMV0thGe3487grGsPOrEDKX0XyYN\n4GTOC6/duNeCbn7cbBXzm7wbRxIPUtvD9kPv9wiTemIoQGCjZB7YrnWn0/5u\naOj4RREjU5XPvG7LlqzxV1ZbVn/ibfLdU/4NX67+Fo+jU6CVqAjmxmk0SZm7\nf9OuWjGTqLWzjl7N/3pYtlPNTy2lQnd9TgWLFGAaw2XUHD01TjLanMQdQ8aO\nWwMD\r\n=ibB8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^1.1.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.0.0-update-resin-bundle-resolve-35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd_1555080240303_0.020816259781593516","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"resin-multibuild","version":"3.0.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"88ddd38824bfd0fae2b7981a8d319c6330ec8794","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.0.0.tgz","fileCount":71,"integrity":"sha512-o7TooB286RjvistI2Eg6bw22oB2Ave+sNlx0hDqas6li+xANaD+AhfOLXGqwCowZNYoolqnZaHgpJphirUxIlg==","signatures":[{"sig":"MEQCIEq5o0/n0v+7DflnXEc56g9OGSydDYFtsb813Ons+MBwAiAElv0NHE8Q2qYkRQkhwl7J4Oq73GJmupn2FFwXaQnZ2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsKdQCRA9TVsSAnZWagAAIQgP/AzafUwrsVdIVPtMeWfC\nL15OCSogLugOqP7reyMU01kYIWuXqAqBXc9MTeUcEL3e+ONfOm12fWGg1ZKM\nQg2WMsaQ36Ii0jCZut6J2B2G4lML80yFdRIOS9KZQ6hZBNBJJJonx3gOQwSL\nVJzSKREw5cyP3J73ki+RqOoqngcaEzpd7sJELEDY9mcN6pQNMi9Ck3v4cD+q\nhu7uSxbANoAxAlcCDV/Q4JTxTZ4j5DkPwVQabQPlnGQ2maLaymcf4gZTWZEE\nHNyiZq6QCjmUbnuJawSpSwhRGeq6YW2nsLRV3B7e2z53iTrsZE4TgEeiatQL\nYdJ3/ZikTwB+Ex1XhRt4Uwq/OozZ6sRZ1vyz2paga8XvHiWmgcqpg5VchFmU\nl1h1ISYreuaWa3+gr9fvCYHSA6I3UUjp2KgMTe8ZB4JaVV7ea7WhiFVKKwsb\nBcIX4giwB+RC03t01fP1JMDssEYU0uP0ReE1yvBQPioFehl6z/lDecpH0438\nxY5W5DrAipRUafWcMokgMqxtEcTjNdW6jCHk08r8rihRS+EaebrejR8WboFi\n9CuVx9IiZFad7IoB33SCc/jMqJnyycRF8jfOTTWap4xsZxTawnsKaH0baCnq\nYQClqLdnCfAhP/llLYyT9lmRY/JcM0F0c/4VkusB/WvkOqZJSYLKM1bMTrq6\nIS+W\r\n=jstL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"77da44b9b3b6f32d8fe4b9ef3dc4d557d3d21291","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^1.1.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.0.0_1555081039862_0.455380661503338","host":"s3://npm-registry-packages"}},"3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd":{"name":"resin-multibuild","version":"3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"acf8f1b058c1db5f4f94d880d26766b2d321d96c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd.tgz","fileCount":71,"integrity":"sha512-8UWk0PwR7wv1lEUkTO/PLR91j/1Cr0tN6JsGcktL6J0U9I9lmCKTiTw/ZkxO5bJo0RWJhiC+p0zrml24Pgfd8Q==","signatures":[{"sig":"MEUCICe2uZ2MlCDzidp9Edc1QuordvcDCJuqJmcCBm41oMInAiEA78W6AqE2FMMPvkNcMSOjWJWKeZyptWFs/GqtfcDQXdc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctSkzCRA9TVsSAnZWagAADeIP/j9vChJC0OFl1CddA/zV\nWH4wgpiLW3tAL33om/Eb3f0QdVxlLOzhY0dG+MyFS/C5XZTmncDBEtZP0/g7\n+xK34+fk5+HGJvicjnPSYdLa8pdaXbMLdwaNXz7JjhidwB1bNwssF+Off8Kr\n+QQE6aEmTk/DlPYcOAJf4QIw7yxrZS04XQeFT7wSeJYScLBTnA8fQbIdWJU6\nfqCwb90/cFKkVXwn59KOsmBEOHZxH+lmzi/DbY8bABbOgzzuP8mH8JAx31Dx\nIXsggU7didNrUM/itF8voCq0xDStGRf64hVb2dzJuebwEwzOHM0Ww5isltOy\nqH3GEm5I8HIa3NuNs8d41g2gJFHyjOodsmrcWRj4pYFHe8kR+Iv/1kmc/xk6\n0J9AJbPbUUaTHVirrSnT/F9RlIfXHUqmyDMNIgajSS5FyYmRJ0jwI3MNHk7/\nU6H4R5ZIWjLstTrINvPrE2uHbiey1/otzkI0Q12fHk5RRL/g/azOgC7QMODD\nG9KvpzLmtG2e6Url+s9l76VexRgKJ5ILFpYz7MmAbrASFK5ujFMfdO8n/1/4\nMisIRa3RRjchGK4OL1wTh4K6dN9X/FKZmOmxug9//00WWDEUMeBA+LnXmlOu\n7DVRnOWL64vLrfJYIIT2tfrfNLB64/aDvvn97/ngYpfbui4OfqHel05ZsOoH\ngkGG\r\n=dhEl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"cc1a51dbec5aecab6c171a31593d99e04d3fecdd","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^1.1.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-0a6d07dd2ccd64ac3834bc65ee30eee76375eb29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd_1555376435120_0.590462261602263","host":"s3://npm-registry-packages"}},"3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37":{"name":"resin-multibuild","version":"3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"420e5e4fc68565b6f6780a0ddcd0fb55c3bc866b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37.tgz","fileCount":71,"integrity":"sha512-Y7QiccX8HztdzcyPIX8ItDAa+/qc/xmrMGY65bJ2AKFg/7uDryvFBuuSfRHQYgmipEh8OTEOWpsFIkjnLZ7HRg==","signatures":[{"sig":"MEUCIQCSglils2cIz3pNOWHfy5VU7Tv9ADCp/aOOeTCmYM0IiAIgTIV4CLth5UCynSJEP4OWwsZzwgu9Std/molrBDtzeB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctgHBCRA9TVsSAnZWagAAdJoP/2F9x39HPF1lqZrMB+Tw\nBAbSyaOT3eVQswiEiPPW2QBRz5sxkJUWwd9zJsbWz+DxRIzRlIAyhG6fwaN7\nWsMPaVB3vsw/RKBy7YKkGXCwe6PGFk8eWpMs1TFcbrIDCGV33gEic45yk25O\n0/R1pgzfgVf/3IzpzasiCgoqpaFlTLecmhE8aQHbt7L1k2PrsPijS1ILDGXC\n+fteY0XPZywaNJCYRFJlMCDY64ryBBnya90OXv0cJPDFxh9XoLqCmiZKWYC7\nXvV8AVdLpXlkkZ2STVlmHya3lpqqqntx/vg2KQPtIAj9ClvCKO+o7VHiWJYt\nytQCWfc/LCCcz+qs6jCJM6S16UNrR0p0snOTlAl5deVGtwcdVKZZ45koWer3\ndROTp9ptZI9O88cBDmjC6H61kZkZiA+NwKXElog6rnF3lZmOSVeAQxgiTqkD\nbJtHDbfaR6anLkpqkUafD9HiUux8ftIP01s+zZjbgM+znemY6FvsrOdzi0UY\nPH0vWxMEzAooMovF5WfzmBoOX832/904rAV+M1RFA14xDXWXBGAqWlFv/sQ7\nU+VS2e71orQbAJVV58mMd7o7lKrxxUSKhG2I69qdmtBYolAXkj/waANgaJK4\nYI7pUK/nDRtZWTctB/dYAYN+eGpSdo5365Nvug15qTvas1NSXIXKn/P57pv9\nxMDw\r\n=RnuL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"a3232fc9ba46075dfec25dd2b17fe1318167ee37","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-dba0ecea12671ab1793e3d6d3b40ca44418dbb26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37_1555431873009_0.4760642868866245","host":"s3://npm-registry-packages"}},"3.1.0-51-fix-tar-paths-posix-windows-ee9a57847c2eeb35fcc4f10b193818e69f857d20":{"name":"resin-multibuild","version":"3.1.0-51-fix-tar-paths-posix-windows-ee9a57847c2eeb35fcc4f10b193818e69f857d20","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.1.0-51-fix-tar-paths-posix-windows-ee9a57847c2eeb35fcc4f10b193818e69f857d20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"33988094eca961537bbd3d5d958afe30771c402f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.1.0-51-fix-tar-paths-posix-windows-ee9a57847c2eeb35fcc4f10b193818e69f857d20.tgz","fileCount":71,"integrity":"sha512-Chh3tzThsMR4Cu0Wg3R1oohLcA6uc/RAJRokCfBU3tZMzwjWd1sFeuQE0xQwYyKhvUg5pWjO4YBNMDpvytBTxg==","signatures":[{"sig":"MEYCIQCOiD9sJn01oddgR5QGxG5WCsDX3NYqKWTaG//f99wUBAIhANlq8V5DOXJI1GYAZWpLrcNGajhMbzXyljAmKSZj78zw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctnG1CRA9TVsSAnZWagAAfUkP/iRhfsHbj4rOozABcwS7\neUMdKkWMcKCWvSeIPZ7/187RDn94cLjz2VEgGkDXL8cRS9wrNAeJZz0NsBwA\nSIPsSiyi9peZioMKf98NiGrf4pa/RkETupmzZsG8VRWJowfu4zLt5NzNVhI4\nD9Wn5gjabsPn9ZbPFRCevL5b6FDlT3WB1Gnkyn8rnw84Szra8KaguLpMllDv\n8krmaJlDja9JHAUJdM9B3jO34CSp+DnK1KN4sj4ptVUtao0LK2Bh/i7ur5XN\nC3WFkCr8sypQ7XjUD7VV3QE1ajoNvOL+Ldv/KDZJNaZjQNYVn/F5qMG/qJDO\n2dHGkwSwAUrIu5toLPbbdS/NboqFWfiKYG/sJbGaJytRX+W3bp0G4wacn5T3\nn5slTaeA/287ulSMht67EyYQeV16ysUErNmmVC0w5yAdxMgqx11yxfqP6JuN\n6yTyTKElgFiciNKWALNWvKhDDYWcjvVNZNRiX3h2ubpFapm/L2YhqoJ+13Zb\niPA5NK8VXqLzM/boJuvcmt5ZnVz1+tILtKA768vwqyG4WhGnayj/w6IgTnzd\nuW8bigeQoSefHNfnY5+56UCoDKNWyyajHOnMNko4Mayn0XIWseJd/gSkj1QM\nFSj21cplP8zTQ1R4GlAg6TD0yv0uM3UJNuBj8nIQutGXyZ85mfLoOv1NiJvY\nL1Ee\r\n=ORO9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ee9a57847c2eeb35fcc4f10b193818e69f857d20","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-dba0ecea12671ab1793e3d6d3b40ca44418dbb26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.1.0-51-fix-tar-paths-posix-windows-ee9a57847c2eeb35fcc4f10b193818e69f857d20_1555460532800_0.2548638081086554","host":"s3://npm-registry-packages"}},"4.0.0-51-fix-tar-paths-posix-windows-be2d76e37fa7c00eaa53829973e683c993b20f3d":{"name":"resin-multibuild","version":"4.0.0-51-fix-tar-paths-posix-windows-be2d76e37fa7c00eaa53829973e683c993b20f3d","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-51-fix-tar-paths-posix-windows-be2d76e37fa7c00eaa53829973e683c993b20f3d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"34bdeeb3b969d579b9e36d7b3a0282f90a20cbbc","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-51-fix-tar-paths-posix-windows-be2d76e37fa7c00eaa53829973e683c993b20f3d.tgz","fileCount":71,"integrity":"sha512-N6NrcvvAACO72MSA7S7qmR9pAoFLNgC6NJjHUm9kFC4in4VmAPwSQHAnMUGMWH/DPwDXyXNsQw+LlwQxyP++QQ==","signatures":[{"sig":"MEUCIFmOm8AFpLqoCzqaqEPwV0cvZYyvAqjF8Y+FwwXXHyVuAiEAj+oTJmFkZia3CX/pAVRn6btHwr4Wdouu8cUSn4IJJJU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctnQ4CRA9TVsSAnZWagAARwYP/RHQSusvFXBhFJS1sJ+h\n3AfCvBmkFyfsMvEgqa3eHLJrBQf7jLskNt4tLuXAw5HtjPN6k5+CNQF6VfEl\nrzMOknoXhU8jvLeGoIJELl2PAQNhUczObkJf/KNr6H2i3N4TMqJc1dwIpbuW\nCvWXGNBfqm4w2K3CdBJGucn1i8tBegAzWLoDpB3w9NF9ukUEcanZs7SNkWU4\ntyTilNzpbJYCzQ01TbTReXCt9aevwUfUSEHJ8kZ1vD1gq7xByaoYRzHb89s7\nOaYAXxPPJ9kEzpaVN8mk8cYy1ybaFQSDhd3Wo8Ppu2xVFPX5BGnKnCGOjzXY\nW3TCqy237DXFhuHyoTpJdQMAF8ps0Rp7xFbtn0NXhDwiyDEVJSG1UTzwMd0E\n6De2s+cqh8OOkPjosZJhzP0Q7lb5RcBJ/46lhJV9iHHw3t+M01laQz4xVAro\nZZyyAdsLjgA+l6gnu1TDDh6B4hB9Q+ARybcPp7/kWkoNQlRPYZXtgzF6Vx9G\nZ8SbFFh0+wpfSxtsLu/Ti3GebxV2pWpOeuwOQbNpp2I49Kays4aWInkZ+YHV\niWi5m6RO2z0vZBoAPjfSI/Vh66y+//YTW1G/Pz6JU6LbNSosaf3NfZS68hVU\nFH4SHcGfclEyHHbsY+G7OnaORsUnQX55zCSRP7uzlwFJky7LGHz+lBusm1Tz\nW0Cd\r\n=1ZfW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"be2d76e37fa7c00eaa53829973e683c993b20f3d","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-dba0ecea12671ab1793e3d6d3b40ca44418dbb26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-51-fix-tar-paths-posix-windows-be2d76e37fa7c00eaa53829973e683c993b20f3d_1555461176071_0.5398517819092952","host":"s3://npm-registry-packages"}},"4.0.0-51-fix-tar-paths-posix-windows-a8060cd1b966af8eb263dc0b51fc8524df4f5236":{"name":"resin-multibuild","version":"4.0.0-51-fix-tar-paths-posix-windows-a8060cd1b966af8eb263dc0b51fc8524df4f5236","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-51-fix-tar-paths-posix-windows-a8060cd1b966af8eb263dc0b51fc8524df4f5236","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"967f53847e3e8189a117a1486d091ae27f9105bf","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-51-fix-tar-paths-posix-windows-a8060cd1b966af8eb263dc0b51fc8524df4f5236.tgz","fileCount":71,"integrity":"sha512-w6sb8hkaHuYjAW7tt9WFw7ezq1KPKwQXzdL2OJwIXfSeT48pZbgv9ioancP3Cg1dFOLCEt1I990RfbCb132Xyg==","signatures":[{"sig":"MEQCIDoQpI/0UKNsrwwMS7T9INr89PPufBCmxuXvHJIsvXvYAiAUP129EqR1uwtU12B6hEQZaFEU+LSt0VXrQgGXnQ59/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctzoNCRA9TVsSAnZWagAA1vQP/1OZstdOSp7I+5mBRTZL\npsW5ISu/tvlMxm2wiTGOSP0gzEc0IzJN6VBRGAljK1/o4Qv8RICt78M4gZ8i\nZNuSuPi6SS5jodfTMIRzF47xwfMfRx/kvo5cHNSk6lco73JmohDuBHg06C+f\n6B0Y1zACHK5Q6jvs8HnUE+EE4wz9ADqXarvZhFlNFiVg6qAe+rfQL4d+ZB7q\njxjJmw2J0sh58xYHWK73/0QvYVAQE7hb0QB4GJmAjabTx+DDPBEyrZKF+AZZ\nKjsIOS67l9fEo5PXEauFjXtYH8oGwKqZyp7/YypFN87XX7vmQmmid1WwGHOe\ni3SNWrLwhyMrKaIplcy9WkpaXxC+ZtyptF8zK/XFWCwkat2jUlazKxKSnf40\n6H9QGQK1p2aeBwIWBWBo5vSBkow3LE0wCwhilHsAx66Ihzlp9V2C6kNqOv4F\nSZmqvs17bEjpvLas+JJ35yGYOtkTscnXv5RBOTZHV0/G7EhyNSgrJ0JyY3+F\n3np/pFicELgnau7yZPOKVDVzfWb3llLtAyWO0cbvy4lRbWFRkSkC8W3VDyFf\nIqDrnN0MP5+PchJgTVwEPlSiktz3FOxno6b0+YG91R6DfWjEfKzqgeLAVJU5\nuZsraCGX8K0gK1sYc5QEhTxHiV4yUhYFxx80kPKNWTqZRP/M0EKJ6Y5ZTugq\ntWfW\r\n=Ay8v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"a8060cd1b966af8eb263dc0b51fc8524df4f5236","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-dba0ecea12671ab1793e3d6d3b40ca44418dbb26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-51-fix-tar-paths-posix-windows-a8060cd1b966af8eb263dc0b51fc8524df4f5236_1555511821111_0.5123458782663033","host":"s3://npm-registry-packages"}},"4.0.0-51-fix-tar-paths-posix-windows-1cf3a659d68ff8072c3bc502d681d37111e85057":{"name":"resin-multibuild","version":"4.0.0-51-fix-tar-paths-posix-windows-1cf3a659d68ff8072c3bc502d681d37111e85057","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-51-fix-tar-paths-posix-windows-1cf3a659d68ff8072c3bc502d681d37111e85057","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"439d9dc849cf960b9e0dd85f50079b1a23937132","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-51-fix-tar-paths-posix-windows-1cf3a659d68ff8072c3bc502d681d37111e85057.tgz","fileCount":71,"integrity":"sha512-onYC1PjGGqEbjJwsoTUuK0nM6Ey7sYvsZckRBk1Oaale9NYfHBdg+DE4X2rI8VWzGM4JmSL0UiqyALYk/lyB/g==","signatures":[{"sig":"MEUCIAkwfA8DZJRUfISXRW7Pn7bTRY3Xl+sl3PGjPcxPwjeQAiEAgG2EeMwqcfre4JanBqt9yAhMfrYq5nKGdXGoXcR9LLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct0+ZCRA9TVsSAnZWagAAaBUQAKMoAOc4SvsviQHJWsnQ\n1ke6iF9NlHyxLHeItLiZSTYNbkoriSyOVihVryHrtJ/U1JG9jA3YQI0p/5uY\n8J+qt/fWfX8GTtWqDv4HpPYBoRtPzfFjHxJmzxOsp72H2gAHKb34Yl+Y5RJ2\nQCYjPIgfdy2I2HfpvBF2MoafyUG6pzjJLrYD4w8XAAJ1cS4jDMJf2cor9XzH\nn4alv5LTG0XZZGvE3pRrM53ShLdBYdYYlA+d3phMuR0IGUXkFeLGkKVsEa5x\nmkkNX7P93pLXu/DKmDM0Sc327N/cx5rkQIop22DejaB2NHCh1udgbfqqHq45\n1V97y0l55rgJK3ya7Nce4AroIXOD2fn3S/qlijJY7JYv5VZ7PI6PUwycNvnq\n2o8OVFVyXudWoTjkq8ia/gOo0L+s3xMHtQNL8PVimVxBQq5FgRxVyiSDJz30\nP7kRcyT2EwkpLN7PX7zx4zdVG4HjkL8kcyPvSE3ruzB0DMidjMD9p9BJjhzu\naQz9a1pjM8aSqK89DO5zMSYNvak+rdu0h6sPizGwagbYovst78dlPaFnV+ea\nirirvgKx1fozJIUnlQxbSx0gBYiLe74nDWsqNIWFHxyheCNzBsG4gNoEbfn9\ntbKqjIIITZWG1+Y6QtQ2uCJixcJJ5oIMY29zDsbblkp5p3oF9UzxA6tfb5uT\nQYLi\r\n=NsWu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1cf3a659d68ff8072c3bc502d681d37111e85057","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-d34cff2c51818c470b2300d535116a6c7a218ca8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-51-fix-tar-paths-posix-windows-1cf3a659d68ff8072c3bc502d681d37111e85057_1555517337063_0.17050390234693036","host":"s3://npm-registry-packages"}},"4.0.0-51-fix-tar-paths-posix-windows-52cf8b884e40c8c350104285f48977acc0b2fd2f":{"name":"resin-multibuild","version":"4.0.0-51-fix-tar-paths-posix-windows-52cf8b884e40c8c350104285f48977acc0b2fd2f","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-51-fix-tar-paths-posix-windows-52cf8b884e40c8c350104285f48977acc0b2fd2f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"54be772bce66838a4c9ef22d148da88e4445853b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-51-fix-tar-paths-posix-windows-52cf8b884e40c8c350104285f48977acc0b2fd2f.tgz","fileCount":71,"integrity":"sha512-SZqPDmjMX5YRzb2tExrCevVaj6bZOs8dXOeJ39bHPAsM/25V8+nWBPXktlxQ1RnpISmD0NEkm2Jn+UUMrHHneA==","signatures":[{"sig":"MEUCIBLut0ArQBDPeWqWFmeBAFn7WtilBvtcoXj6qcZXS1shAiEArxd5kPS+ctEjbuTLreyjOAzS1sL5LAWoF0uSsUzHWkQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct3v5CRA9TVsSAnZWagAA7wwQAJEM7Zdjyop/ffATw1cv\n1ZzPAEDK4/+Hs0l4hKnL/iPP225oihpOOQAnWUi1hQ45EIS+Uj2eVHd50x/U\nkHKvc6YEVtVzIKsP79C+xTr0U3NVDWETzHhQ0KlPdP0bG5Ci8sQ6m0WI78XG\nTCg+A6IE1ImqQtJ59zd7CVA6W2nHKm5xSLm7NJWFF8ZeLbm/8ks+mrx/9Pbw\ntSE5yhAasApksqmCEeDUiIsryMpurSHNTmWLgztHwhXvGhlaO1JQugQJaxrA\nLYzJNdezk6sYwkDhHH2+PSTIGE3n32WCOpKV/ZasO6pGLecsHAKziGVBVS7S\nFsit7RQWO8TLNw6DhTsebJ5ShqRU5IKLmVk8xVcUq9PS4Ueu2qkco1tyraO5\nfKvUXa4OFl3SQPzcxVYTFgKosOQFpF8P3x1uxfO8fjGC1Wwv7IaWk2WwvSWN\nYqdDwpGBIc2zmS8fH2aHWgkZl6atF8ltIlUKb0NPv6G5gTtwRs+KLqTn2Tk0\nq1Ze7XpVFVzkEYh/I5QIVhpCqzJmV/CprhC3mep8jehIhqZsTxTOiqfuem8P\nFYJO7ruRwsUQeHZ+N93eVzxT0C3FmNcuSR6s8Eq3wZJoiEm8oCmEB6MQJBxm\nXuJCAmUeMcL5+GsvG1PaZgs49XwLBLhtN7xtNrzHgcC5k+FS8XtA1vEFP8zJ\nLa7V\r\n=LBGw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"52cf8b884e40c8c350104285f48977acc0b2fd2f","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-d34cff2c51818c470b2300d535116a6c7a218ca8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-51-fix-tar-paths-posix-windows-52cf8b884e40c8c350104285f48977acc0b2fd2f_1555528696351_0.8073275547776788","host":"s3://npm-registry-packages"}},"4.0.0-51-fix-tar-paths-posix-windows-108892aa8532d040bf27542dd6e32001bb1902d7":{"name":"resin-multibuild","version":"4.0.0-51-fix-tar-paths-posix-windows-108892aa8532d040bf27542dd6e32001bb1902d7","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-51-fix-tar-paths-posix-windows-108892aa8532d040bf27542dd6e32001bb1902d7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6f6a6b3b08dab57a86c0788b2ca180a79e436e06","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-51-fix-tar-paths-posix-windows-108892aa8532d040bf27542dd6e32001bb1902d7.tgz","fileCount":71,"integrity":"sha512-MNu6a45NGi7XQWbGHO/U8fYq8GFoqCQFtvQeyG67ILIFybeokfo+f4gwQzAF+GGy5k9iOeiant/elwgCj3VvlA==","signatures":[{"sig":"MEQCIHbG5ugeoo+dWyekxMgycxPxxMhaEiW60bmy2suJlbdhAiB+mIddhlBF9N4N1jS6dmJVBbJs9LOaUZiciVT7xtLKxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct9RWCRA9TVsSAnZWagAAYMgP/jYEa6LidvorrZqdQ9JL\nS+FlXk4jrWP9a30/rRYbhjiLr34Qh6DuU0xYAABrZRR3EqjTxnI3UcLlY3mA\n2zbctmZxCnYhfLwH5xv47iMua/tLn4ZEBZ3Xf+liLVIN9MsLIa4lmBNtEpvV\nJLeql8Rtj6TeX52z9q+QHreUWTe3J88G6BHn1cCW/vEVhUcQfD/2XndmfgQc\n5oEam1MBpW48OkPBH7gNOjrFcfQMLbX/oeEcvaKXmDkphlChyHnIYSM/Uyaq\nWo/jOqjroSE6A9OaNpMhQ5QmbvqDXK5UTow1vwQNL5SZeibqOgu5R30T9rWN\nCsoR09h3pMbNfW/LokXhYwXme7ef6GbwVy4M23Bld66l7SdwRxZ/tTFzOfUo\nhdpQL+9Nix8Djk4RN7EHdCd+5kg0n0pfA9BxztA+cb0aJN0THaZeNeoy2+2I\nZZ5/O/MfwWG9+hgkM5Q/iwd0W6iGIPQoq4A0xn0LwO8YyvIcEfSQfIS5xZ1g\n/sJF4slE6I0iyjPUVQ+egEug132CWS+3hPJCZdCD8zGtsSVnNjNmW0rHU4E9\n6oKn2bPYSFlrI/OrVvJw/Kv+NedpJGAYnHNG8lPFV1K5nnRYWAFYYCB+JxBk\n7G5ozq1dFI5OX/magFK5u9cnsb6CaReY/Hlotd5N9hkT7EmpS/kt7SvGsy8C\nKVs/\r\n=bXDi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"108892aa8532d040bf27542dd6e32001bb1902d7","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-d34cff2c51818c470b2300d535116a6c7a218ca8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-51-fix-tar-paths-posix-windows-108892aa8532d040bf27542dd6e32001bb1902d7_1555551316979_0.3277446068832641","host":"s3://npm-registry-packages"}},"4.0.0-51-fix-tar-paths-posix-windows-dbc9d63eb5485aaaf77dea1ae1e6d588938fd538":{"name":"resin-multibuild","version":"4.0.0-51-fix-tar-paths-posix-windows-dbc9d63eb5485aaaf77dea1ae1e6d588938fd538","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-51-fix-tar-paths-posix-windows-dbc9d63eb5485aaaf77dea1ae1e6d588938fd538","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"4c9902e7abb6a8756d320ca90f46bf8518e083d4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-51-fix-tar-paths-posix-windows-dbc9d63eb5485aaaf77dea1ae1e6d588938fd538.tgz","fileCount":71,"integrity":"sha512-NFktl9U40CuymdWpZ4dRAnjUnzr0sdl7rxW+HdfjPyJh8iTlX5SjAzreiGd8v6qtPa0reX9/OOXyn4GilrqeJw==","signatures":[{"sig":"MEUCIQCl+TF1yb2R+yVTYY1FLByqsTI/jAVuSlJiSfv/2j3fHgIgNGntwDKxyiEiGgFdTBCorD3joSJPR4c+7HywTSvW/uU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct9Z7CRA9TVsSAnZWagAAFhwP/jItToyXi3wyWSaCDZzr\n8/voBySn/rP3XRJ7m1+UfRTQQSOL87rA0kCyhymZHhByjAWHLS9BDi/tT0+3\n0UjakjHJaPcIZnzPcvHedDxT4HiI26sq4Lkek7yijkAFNvudxQcz23uydTzZ\nF5rZHrgD21oUKLixRLEVa7KphD2thLlxhIt2sDuBjggF70l2NNhjCHWlHci9\nJ/fkR8dTRgpjEaxQAX5QUlzfb8MDaTsE+GJBGAqvskeeaR3VR0VJmEYS+rJk\ncfsfXp4bYXlUUWfqJAq55Y2z70FJ9DrrjU0bPkeJiyy9PLm/9YLU0paDxNLe\ntM+beweGtdUxXMG7UWJ6N0iwXL6I7Tm1NwMNcVuKdpMh+WQimv2Ve6pM7wvz\nDgi+abtdAbFUEYK76XbHwVQzSZaoLZk0EKrBWzYFFcMcruKqEHVTxAy3oFOU\ndVDHG4nl0Buh4bEI6SdlcoGG3xKvlg7UUM1SvZcbG2zMpv0D8OA3Sle5igNv\nBOzWik/dYYoQqUNbZcvKHVlN/apxlM7e2e7f+gMgW7NElB7GJ21b/dI1O5ap\nqgEBNdK1doI3CG6Gk5ATXLHmNnitX2bxNO79eE1NboOz40rdWB9udg1L850c\n2tSWJS3kCMT8RiTZA7MeeXeMNhsrYcDQpdyxkNWiMlLj2NHtUADGXM28PXgd\nveUw\r\n=S2fF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"dbc9d63eb5485aaaf77dea1ae1e6d588938fd538","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0-35-alternative-template-names-d34cff2c51818c470b2300d535116a6c7a218ca8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-51-fix-tar-paths-posix-windows-dbc9d63eb5485aaaf77dea1ae1e6d588938fd538_1555551867334_0.4491674206080536","host":"s3://npm-registry-packages"}},"3.1.0-51-fix-tar-paths-posix-windows-3fa3bda67bcdd48c083f85c952a1a5426ff85b43":{"name":"resin-multibuild","version":"3.1.0-51-fix-tar-paths-posix-windows-3fa3bda67bcdd48c083f85c952a1a5426ff85b43","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.1.0-51-fix-tar-paths-posix-windows-3fa3bda67bcdd48c083f85c952a1a5426ff85b43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"de9b611993108636bf873b97c772d7fade0c12f4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.1.0-51-fix-tar-paths-posix-windows-3fa3bda67bcdd48c083f85c952a1a5426ff85b43.tgz","fileCount":71,"integrity":"sha512-28RVtkNKYMhK+vf8vkdxGxGRzVT8lDiuMwcFhw/feB6xfSGt0ueYEDz6jcvuMU/Vb61nxhCKyrA1jMWXdNKWUA==","signatures":[{"sig":"MEYCIQC1W/dBgOulsgIO2BdnusItfST7mr/Wae8YswkKvST7NQIhAIU4Ko4UNJhPIyfFhpVnDb8rgUzqKplLOZqscOibux1L","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvk+rCRA9TVsSAnZWagAAj+sQAKNOSWn8TnBK4HXMOHK/\nFzqb7y21MrR/kGWnSi6ERcpDz/+2tDC6JaOLk3/OLasSl7oJDRhBjX1kOsXw\n+bg2QfRqEeVTGmp0mUcbrIyeZe92fwynYHukx7TJBxm263Ck7UQ6BCjTSaw9\n1YL3JkZt6Q7OOUAiutUAwaNhteJNqKNtIDTyAoWEraIXrhuAcNZd5srhRPzO\nDHsCnW9ganXPNVBt3U+jlqIOXyfolT9Jt0KIN6dlKH1PA/FG5lw3IFJALkPp\nEg+3cyj+DJBQo1CWzNHsAO4TrRjlcsFgkcHpPBk0A6F/vv7CzoN9G6jCWHiy\nJIhHnYS6QoACTN5lsVvkv4jc7lOblkygxRIEE5xEqEvLeHMjVEDIWeMde5Vx\nQ04DiFT0SmevcLk1j8EhpbAQxvCYj1czkhmaurUQlaXDRJqVvkt5n4mA0ZG7\nOxZpVxOXgnQCTXjbHtX1EbDNSVNoUBHms+EF1R+MyI4J8hw+SlInOERdDE4v\n0U0CmI2IKdZibx5ncPlUT+ruqo8RkJc2IhCt4H3T8+v6N8085jcFFR3tslrz\nCDkl87nm91awvQcNDClxXCeFIXgek60smnH0y0HteP9HGgOWXG3jfy/xjbne\nIX6AvLTvGX+41Pul5VVoUbZSVKhruRpfltD0TxwCXGK5ApvzzLvOYuSRuSHm\nX4S5\r\n=bJYc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"3fa3bda67bcdd48c083f85c952a1a5426ff85b43","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.1.0-51-fix-tar-paths-posix-windows-3fa3bda67bcdd48c083f85c952a1a5426ff85b43_1555976106861_0.2512152874187399","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"resin-multibuild","version":"3.1.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@3.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"resin-ci","email":"accounts+npm-ci@resin.io"},{"name":"resin.io","email":"accounts@resin.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"cee64e9b002e613acdd4fb4662edaeef51cb8c98","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-3.1.0.tgz","fileCount":71,"integrity":"sha512-GWRYTI3W28HqNidg2B3tOeiAmziSF38xgLxDq6lXa+2tu961kPNXrXqYg7GvpwakpsaC6HESu+mxYw+u+e4Igg==","signatures":[{"sig":"MEUCIQC84gJWVQgGbiVdPU8lPexHTUk3aKcFQv/wyvIDP1q/TQIgTj6GVK9Eu3XiDuU3vavGvywC0M8ld2qaTk6Y0JUKvZA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvlBoCRA9TVsSAnZWagAALZcP/11QvkIm3FfqgqYIpu3V\nkFE6XFoghS48YGTftPIwU43VFYqgjPj6dQAAiKOgRVhSPStDe4RX4lp8ioQr\nJRcarxWduGLbm1KvOhgUNh/jERI8JIbgfZGXIVqKvBPiZCvmyltCz+HEp5RF\nhdztt+hd+zH54dSse56yPhWugfP0S+n5C2H8jnoyoKq8mwf/YXltSSRPSKIE\nPnGNlX1yxWU+rcKoJGtLwObzrwizbjKPpG+MwyqXGbZfQ5Cb/FQN2U5Zdn6C\niUYwWCg4JCYBv9AVCduxw7JQVz4cdALo0Zf0A31S/wkUfubpLW86w5Je8Cma\n60jfCM8h7ZrbpGj71ENc89y7dR39SrnTUHKbzsjIJAbqwxhlInAu4nSAx+tk\nf3QMcz/0nxqKZqrQG7ioNsD6syBq1U5vU2cruS0rJLb1fIe3SLAjd9pe6NXO\n6Cg4xrIUNMmkd9Im8Ey7cBJmCL1NV1W4ho/VLFBxwi14tyzmd0fhgMuVtmyC\n1c6+lfVka7ilYY+0Bti5prtPjiKdLhLQnAOqfMqe4qOnRu678I2jKmtgpn/N\nXyBHN+IMGi1ueSAKLECLSWi1D1H5Z4V+RPSvvvghK7ORBmk8zNgp+C/6eH+G\nE5nEce15S/mJDV4RtqsmR/eeFv2mPxJVCYvwzP90DG42LeTJqqSJrRKzrm+4\nuvld\r\n=9Nqc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"8916220dbad0f2caa73bedfed9cb1d1af8312b0c","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project .","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","lodash":"^4.17.4","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_3.1.0_1555976296249_0.6589754442955889","host":"s3://npm-registry-packages"}},"4.0.0-build-secrets-092de67fd2fd1bd4404592d56dfa1f9cdcd8879a":{"name":"resin-multibuild","version":"4.0.0-build-secrets-092de67fd2fd1bd4404592d56dfa1f9cdcd8879a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-build-secrets-092de67fd2fd1bd4404592d56dfa1f9cdcd8879a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dc351bb2a1851ad1a66c44d7d756fb1b0e54b612","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-build-secrets-092de67fd2fd1bd4404592d56dfa1f9cdcd8879a.tgz","fileCount":92,"integrity":"sha512-jONgby3ZNX5RBCHnSnMnSLUclNFKmjs5tYrSFnWF4nbZmSPvca0k1OY33OzoBQNCOCmJeuTgyxYtSIjRhU5pbA==","signatures":[{"sig":"MEUCIB/9JLgm8pcHA72bscyc1xcN1bV0EOn519KLV/E0Gl6KAiEAky1B0rvzBLdnFlq9oleQJwYRggMCpLEb2tNlhqorz9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHx9zCRA9TVsSAnZWagAAiHwP/A2Px0LltN+eSbPD7NFN\nfRPzRBQ4BifZHldPAI5kKWT/25iKGZAhKMVHpBx7Jqvzp5hkt1JhA7t72mvz\ngucxVaCZH76y+bteFNuKm6tK362wfWS1kxfQi/h9BLv6qs8GKJlnyngKiul+\nVuYWZFKHMfyyFn2pZ5yVdcI88GfJa4OAIuncourBlZppagY/TnGvX2jfslPf\n9cXCLyOdWdH2WuH/HjGwPOwwo6EQm0o4G7zOTv8E5WaqamQmZqfAUf05eRzf\nq6lj24FPbyiI7liB7Dm7SveflNIsaoD2rxdZR0IUZpmbyLr0VAsxP8R56Co5\nXwSLgu1Kt/cfYR+U5hTA6B2XQOaqInwPDzKIcPErRVaE0j0+eTOPRAkfwvfk\niB9Cv43jTST1REBv8XlCtn1V0I0N7Ntos1gQxPWgc0pQOR+TVSHq8LmI/XX+\n0LcoK7TVzADgYCgkDPPX0hZSYDWgE3CRwe/TmwJxi4gINjuV4M1sGordHyOG\nBv8IUBhJtlixqhzMXQq/VyYHcCFyBaAC1gRFi7IudyP529edJoVvCSwJc+5H\nEjOOxPULiuAqMK9yw3J2VOTl0Eq650eoyBPDnhC60e5TYwi/Qz/1hXyuI0Fi\ncIlWJWXl5/rPn36pArtq11bouAPCNSEus4+AmCDI0DrhvpuKxuO8rqrnEtV+\nyW31\r\n=RRs2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"092de67fd2fd1bd4404592d56dfa1f9cdcd8879a","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-build-secrets-092de67fd2fd1bd4404592d56dfa1f9cdcd8879a_1562320755169_0.8227649497433398","host":"s3://npm-registry-packages"}},"4.0.0-build-secrets-b26b0db8b3aa5d400676572fbceac36a729b6657":{"name":"resin-multibuild","version":"4.0.0-build-secrets-b26b0db8b3aa5d400676572fbceac36a729b6657","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0-build-secrets-b26b0db8b3aa5d400676572fbceac36a729b6657","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e3a32f1296f4dbca0ef6b1341f01d062c66fdb93","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0-build-secrets-b26b0db8b3aa5d400676572fbceac36a729b6657.tgz","fileCount":92,"integrity":"sha512-N9AjPX0JM18u8y4UHLaPYb5IV7bHf6Sbd+I79JFVKvbS/EniHpOjOEJWc5rhNt59j1qzWtTt5ZT5Uqq+88ftyw==","signatures":[{"sig":"MEQCIDPi7BgqItQHb24x1cc54Q17r++G8pkVRAi12DQum8kxAiBCqEUseBWnaenr0hdOdFFkizTSO8+lk8+OppJY1IT1vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIx2ACRA9TVsSAnZWagAADP8P/1jnriuW1f0NVz/9+quu\nreYvZqlNRkMvETkrs5ROMkJynpZpp7/hKPT2exNNoRHs8OBaX0IJGP1uAQXv\nRrKWHACd1A052F6tS/5SPieyfDs5CacwchuoSR4Z6ujwf6IiQC+319mctKmc\nqT6WcUU+7XjWDjh9sHKA0Cd0trr0/G6Ndk3cLS85LZb9iPLrEqT3Ii0KLR1r\n7lfPWISMcBaqu2qCDu/XEVYOwlKb6TBY5twPLz+0pA88L42aqflyr6nP/JOf\nGBkfi4QPMXjY7oldzLJrNwL3j9dhRCTYiL8J0pE4ikqK0pCqVmSg5Ah9gKIv\n4UJjDywnaLBQ1zl8gjvgA+nRR6G+EpSLIyn+/+m5p79QNxBeKSi6Up8zYnUv\n9QrsW9LCk6OZp8rNtjJXXPB4n3Fiv/cGQtAmPcf7MBfJ1Tpot+regf7zPvyg\nHuiZJPrmDLHPcBukuxsm62gp42MAHCXZfVkjZoVt90oQgbmGtKAXOarNMFb3\nR6t0Dt5sOlRLiPIr6gknnBKpbz60uKv3gfpF5k2BV26pKiEviQVDdcrZzeDU\nCEJ/3hHLmSepAjq1kAc0U+1yQhSXaxfssB2ywukvmf+3Da+wUqoj+BPqFGQO\n64T1yaXrC/Jf9iqfZkcdMc6DzGLCkntDx1uUUYuTajh/ILkEpnKkdCAOjfjf\n1J5A\r\n=DpYS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"b26b0db8b3aa5d400676572fbceac36a729b6657","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0-build-secrets-b26b0db8b3aa5d400676572fbceac36a729b6657_1562582399368_0.1830749280584485","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"resin-multibuild","version":"4.0.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e01ec64a56d40f76ac03e3556e55327993b7ca2c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.0.tgz","fileCount":92,"integrity":"sha512-/THNj9shcfu83rN7IN8o13swsfmoN5bGkuwwfsYNJSkYH4a+mSqwxE8aNeXdZ1IU5XS8sppiESBax8G4cVUvgQ==","signatures":[{"sig":"MEUCIQCZPsGQptxVv3WcxJHOlJt6qstDIlVUKxPsnMwTwD5d/QIgEFGNDJm07DTOm6Ac2kovMRsABfZpJu732c7ozr39HLk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIx47CRA9TVsSAnZWagAASO4P/RJt3NCiCoazxP+fWiP6\ne2p+DWxxfmtVeinNxtKzkxNfpBTQBt9ZN2/M5Yiv+5tip8usGzr6Kmu/+3/a\nv94gW48yuOB4/o5Uoy5HqR2dhtOLCEmdb0qjP0EvgKTo8o3/5T1F5VqqHIB7\n3fnyedGf+CSYB8KI4kvy3MxV9c9pwoB/6NV8cUCQUHwgd0MSOKkfHFeYeDAZ\nmxUi887n5yYfo6VOMbmzS4/VXooW1CWTbYlISaAbdbcl7aBy2y6riF1y2Wzm\nYbls2QFABAlLBGKDJqm6naA5ainpW1LAAf4CNmhQxF6XKvhpbnBdUG5i9lOR\ntEJrgOSuZloVs3SMq3aq1KPxlV0Q4x8bEImwrY2IROdooJC4lzApaQ2TDqLb\n7nKFtI6LhPcGzM7leQEj1gRMpwJKqBUO4qIqpNTYlIBiOhvVllv5zEpv5Xbl\nxF5QRwcDCJrxi7aGLkXQz/WHuH+ZWYcjNcn5i88CLez8hYLp56COpjt9sP7T\nM6CiRtSMpjGGoIr6Fmar8TQujp91NTqJzDDrYVBL+A1WVA+JTisZ/xuNj7vc\nbG4zEJRRV8GoIjDb+bsZ86cFqyMEd+3IGGNo3OZnfQB9I73orI8XDL+9VDzG\nlqyoCeGqyiXaz6BCHs9Ez/fvUl4uEihsaovvbfQXpDNrYsHEQlAe21h91TU1\nglMJ\r\n=cQj9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"fb3339396a4495888fd060ea5fbcbb08555a007c","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.0_1562582586906_0.9354568577027724","host":"s3://npm-registry-packages"}},"4.0.1-fix-secret-map-filter-042112ce0bbb8019fe5bd864e45f9de8a7c2c948":{"name":"resin-multibuild","version":"4.0.1-fix-secret-map-filter-042112ce0bbb8019fe5bd864e45f9de8a7c2c948","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.1-fix-secret-map-filter-042112ce0bbb8019fe5bd864e45f9de8a7c2c948","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"eb2e9dad68114152aee770c24189f123a21a9768","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.1-fix-secret-map-filter-042112ce0bbb8019fe5bd864e45f9de8a7c2c948.tgz","fileCount":92,"integrity":"sha512-lGsJMn3yNEzx1bKBEydLYWf5+Emv3d5GTvkKKmOuPZxa0rIlI5KIo5ke0hiGvFUQbNfSR7uWu/Ljc1Y9o2rdHA==","signatures":[{"sig":"MEUCIQD4TtAx+wzbbqqGz3KHOI2wk2m1vnfbWObYQq36wcGpFwIgQCER/JAhYHf1MUYHcAXjZ+8JlLJW9s15aDAbgDCsZKg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKLH/CRA9TVsSAnZWagAAOPsP/Ako12FAreXxUITBQgsM\nQMbMJbDOb4F+QgIPl2mv5Oxu1xPwSPEhb+77GxNSIyvcmRgwTLfFS3j8k0aU\n9TupAwUnAjVRMMkC0xS3Bz4OoXjsrBJw3XwERlSi36thEHQYM+ikzaEEc7EP\nyS89hoFAg5K3zoxCl1MhGFTyD2S7iBhWrfu8OrCyG9Ly1UQWhOMJ3cjUEXJ0\n3H/xgLIaEbCf0ShFKQFxp46DPURqrihGiiInJzDD8wNeruUbJEB3FnnLj2DB\n3Co+Ym2ay+nWOxd9w/SUuPG9yzjZpTvTjBXBE+l5AIK4CO9aD6AqTre8KrLF\nu0yW+/l3OQlg5FqKGXg7N+8PmINObw5DGkuMIPvok3W9L7oSUw8IG3kfUGIE\nNYrVza8FuqhBia/hp+ukjeJT2RIWOGNZJkqbXStOL/60Z07YAJXyYd/vJGb4\nVlR4z6/29yB/mbskBtpNjiq1HY5RyokfAcB7S97AzmVFSUAODe89nlYi/2RN\nfjivFxd48L+g3T811MpHe0A2plS4QWkehc4KMvjfRtim7Efng077nQduKPXb\nXVQgJMn9yN5xDycEkJ4Vv8Exsv/g/QsdgnsDurvi5BR4RVuESWrrqh06mZor\nGuy68ZNAMnqa1A/Spwb0qrCQ924kXQCknmbRJYbnOomLq89HmfLk9ndddnRa\nUttb\r\n=n9ta\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"042112ce0bbb8019fe5bd864e45f9de8a7c2c948","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.1-fix-secret-map-filter-042112ce0bbb8019fe5bd864e45f9de8a7c2c948_1562948094727_0.8380258713530981","host":"s3://npm-registry-packages"}},"4.0.1-fix-secret-map-filter-ef4d93753d289aa5e56cd4a8bc8538505416d546":{"name":"resin-multibuild","version":"4.0.1-fix-secret-map-filter-ef4d93753d289aa5e56cd4a8bc8538505416d546","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.1-fix-secret-map-filter-ef4d93753d289aa5e56cd4a8bc8538505416d546","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"54cbef6518adce5513e42d24c0f32f9624c46907","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.1-fix-secret-map-filter-ef4d93753d289aa5e56cd4a8bc8538505416d546.tgz","fileCount":92,"integrity":"sha512-eYtZpXtv7X7Dkqp5Zn8g1Q6qV3zLUftACECUY+qURqyog3vds81i4fpR++nCW09Rrpzqa+ep2HpqIXytXO9ucQ==","signatures":[{"sig":"MEUCIQDz5vh0mwKIzfXPC5EyuO05Hisvm9ej/tK70cWsOQZI4gIgWYLsdSe3vds/XdtOd8Kp0X+52YQKdqEIfubpJXFbTkM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKLngCRA9TVsSAnZWagAATcgQAI0JhboYPhFAE5BAT2N1\ngbnlNhSDQu+w0K5qFiZ0j4c3PuGoyF6pAfK2RrHL42oN6lR1zRerXTIgTTGz\nBexNQYsVBgBuqjuuOHe3wzspV+Am3BI67ao6C/eZs6CQZwq9LiCdEhEVdh9K\nDkRbBW41uMI52Ukz0ugcIfixk7Cc8tGhWUqlNdWAuqZHoxcVyxM0AZx34mL4\n88RecYny1WlsCflwUHDndTlr3IdYdKPDtda0DYQ1EwSVVYTtithXMbVlmv6Q\nIRkW4KifuDRWzhloKR/R/CVwSL395j9uYBorSFG6J9ULkMyAH0wRfyiCzDo3\nWbMiAzLjAxnyJK6Nrv7mn3D0gb4hqA0cFGIwHSXXaYurYUY9MsTQvm/e+DO5\ndD3vJyFlvVyq4g0cFDNsiuzdfgeyA7OPPgFAY51XYUaUi0QkcnJYQn33KWFT\n5d/YZlyM1Z7EV2dKiihl8G9eAwegw5YjEDW5nF4vud6dSkWYo/5U7KltkdBI\nqsR8LhMsiT+dIMYeLK94dh2XF8+H48rmG2UYvJSa4G4bfsP4YGZayZIwgGWO\n7oGt0VGPTLnrjHtd7tvCk4SR6HgP5Hp5Euzn3oPsq6+Z7kqZQPkgED6gNj+w\nOo1LGtMOKHlmxK2jkV1oilK5zRfQg6kXRu3NtE1PYmG2H48XWbf881EXOzkU\nIVwb\r\n=Vy9i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ef4d93753d289aa5e56cd4a8bc8538505416d546","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.1-fix-secret-map-filter-ef4d93753d289aa5e56cd4a8bc8538505416d546_1562950112041_0.29550881048589384","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"resin-multibuild","version":"4.0.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c1c1733f22afe53a930618fd4805483ea97307ff","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.1.tgz","fileCount":92,"integrity":"sha512-TXWkWsbZMM92Y7Jo+qzRF8qdYeLCIpwQjYrHaAO5TlmUTk/Hb8QZgg1I9pV42mTi54AooXVHb0htE1YYbCxQng==","signatures":[{"sig":"MEUCIHVLHkoXgqvCXEzZY3hM1cFtblfJL7ikzioJyqrKHpE2AiEA4GpRPWo9tlOZ15YlmUaL8+aBqtx97xKZu2UVdzjZC8g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLE97CRA9TVsSAnZWagAA7OQP/jQhAz94kjbzyaGCW0UW\nagA3yw6VHjHHQzGWy6vr9w1rDFSeswooFiEjtCztDG0KMpN71VeDqaIOPFf4\n/J8Dy3kXpvkZh+BZ1u07komcQcKwP26Qa9Ndk2N/CeCQv1mTUaEL3lNBxuxH\n0VsN3lP4jUYVPowABC6LWCp/gtpFka5mAelnrU1AjfbmsACeuTKpkQ7vFjXH\n7cTj8KXD0L1IRLrGMnaAkijhDNrFkJx77/Q13ZDZssOTAwtT7f5Ok0cdoq30\nguFOSv9gdEO6+cpTwpwYXI1uSP5aGIotO8xwvxVB4kZ3+UgiFdhFaH5ONf8D\n+9kAnaiWamL1uFOS+Svy8FqFyo5doeX+qQkiGt0AzDuM1AbV8nJxUkB7PmIr\nY2CVh89hoIDgBsMwUI5e6u+yrkVisunCHkw12cQSibXRnAgGQLVfprORZFEv\nEwGtGYgatTG7hEbcN0mYDMjjOD4D6IokyQoFYqP/x6ZImrSMCuQlBRyCRKce\nW2/cXgCFMtaUDfrstUGyEFIJpVGOjqIAwxQ8jyZVGs7m+h43hamzoMVQJfJL\n8hlB0L5fb13LiSkDkvcTW/OYkGQvNYADLRdGpbiVgDU7ixbHvhvcNlBSIsY2\ngMLMYCJerhqxJEE1v3iFt8OfkDzIyJ9WPqzm25DZtQWSfDolsePttMZvy1rt\nvegD\r\n=eMKw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"ba165f045fdfd65c446bb64cf6801b81290ee30e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.1_1563185018811_0.9972237770100301","host":"s3://npm-registry-packages"}},"4.0.2-56-fix-secretremovalerror-78ec9b3b5201250084aa92e3a3eeee2df7d0675e":{"name":"resin-multibuild","version":"4.0.2-56-fix-secretremovalerror-78ec9b3b5201250084aa92e3a3eeee2df7d0675e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.2-56-fix-secretremovalerror-78ec9b3b5201250084aa92e3a3eeee2df7d0675e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b467815449332a94f5d7665438312234d4d1963b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.2-56-fix-secretremovalerror-78ec9b3b5201250084aa92e3a3eeee2df7d0675e.tgz","fileCount":92,"integrity":"sha512-sY0AM6x9yf0rL9h59sLwR/Zio7C2abKW9d1/Sa88+FBy+W5ixia07zE9e6gM41OPShq69z3Uv/bWIwXFBxbm9Q==","signatures":[{"sig":"MEUCIDrraF568I1KFX589/8xGRCyBZRJLDnjr/AZI8nYIKU9AiEAtdjcP4Mu18wmnYWt7f/xHVqxp9EgxDwqe0rojXvRnac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":243900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWgm6CRA9TVsSAnZWagAArOkP/2uA0+40C3ceUR6F+D1m\nj9vO4pQu90WX7DXH3RL59+/nPSW0gNT5eCCUVhn8TZmQjEXIVNlY/Kolbcmh\np5WCrZFuELshVyy23V01T3hxJUtUPp9PWTy0ln2BJidVOEasPS6knZG8eHLP\nnX+YnWhmWlL6NKQi/QU1h7tZTkyJbuuBKjqKVnk8zA+k/2cC6nOgGBtdjD7u\nW4LEIlUmcAmiZIwcEYVktPnLLvBlY/VafUvILadehxfjgATBmsxV1So+CnOX\n2A7TdedFO6ldPcshGlPu1w6yuyqvzxiOp6zCwWpWZf12N3vY1SR6kTONwwyg\n1PMINDqlDpwCIEmhxq29fO4MopP2D7MK/+5KqDfaka050jIRwrtujzcpOTvi\npEC+vBbSJcjOPp8lqywgAN3QC/MYxuY1ss/EaUTL+UggwoLRNj1EUAySNrQP\ng2RcK+9FyVB0Ou6xbpWAi72Or1lIJWPXuY/4dDxCG1IaAGc4/qw4/6/Rvsje\nIpB8JiYBMU6/IOVfzu6qdLJit1dHLgoETwBR9l6UoEMRJkHI+zMe1MzC6MNx\n9CW6f+ExksAbV9wkg3/DqvP4Hf9byLJ7Ku9AaHHJzBOedWQv8HcalX2FZMQ+\nSX3ZEID5KrzwUtIcsMWemMdGufCtY6fx5uHQvkkkdpw75S0ni5aHCzXkYSD3\nkocE\r\n=InIO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"78ec9b3b5201250084aa92e3a3eeee2df7d0675e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.2-56-fix-secretremovalerror-78ec9b3b5201250084aa92e3a3eeee2df7d0675e_1566181817537_0.1325657850164128","host":"s3://npm-registry-packages"}},"4.0.2-56-fix-secretremovalerror-666d2771c016c7a5e3f862a4f02e00fb979c2c40":{"name":"resin-multibuild","version":"4.0.2-56-fix-secretremovalerror-666d2771c016c7a5e3f862a4f02e00fb979c2c40","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.2-56-fix-secretremovalerror-666d2771c016c7a5e3f862a4f02e00fb979c2c40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"217550a50b5e1fab2fd9bc073c16f61fdf3c5348","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.2-56-fix-secretremovalerror-666d2771c016c7a5e3f862a4f02e00fb979c2c40.tgz","fileCount":92,"integrity":"sha512-JvwOLTd3cFB2F2vBx0eb8x4O/3Ko+tp6MytTDQ1yb4u+W73CGr+0QgnZo5eqsBfc9EjiS4jSB2LeRRi5s0nbKA==","signatures":[{"sig":"MEQCID/0ooJRxaiXIPJy4u+u6+H+i9VQ6F5sfE6dtv8Dz5R3AiA/5J9NKvkhded7Ki5WyX5Y34RTKMKPxzXhiBI7LbXcKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":243904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWuAeCRA9TVsSAnZWagAAm9wQAKKwjVzEoaZOVp9t4f/Y\nF1yAgUFHN9njrYtBEgWqpZ9bnRzjov20HYoJNsk04nLZng6QCy277qcI4ASa\n3gqXqnJwY/RfnVOdWF4P9bLUHWt16mfllOKogmOroedETJgPZopmY8IV2GEL\nMBpnpd78id3D/XttpaPWu60pcZfWWJQnW5/fnPYx8VRxpF9v3iotdPLgj6kE\nEM0rO0o8fBNxDBDPBUzy+ysl7mcmDW5eODUzpqwDZiukXDLqGweVVlKyqo/x\n/HvzjHitqQfxJlrpWxU6u3a8DwNEcHpsRjTf4zgtSw9C+07mQPdly+JO6sY6\n3IAEtQfXrLsVr/rzx7IUY3sCkROW59SjrokJk8W5wHhAtQ8SS0XdH+TKFsKJ\nJnAcHy7H6t/OVx/mQb1+EAqFxfb0Vyn02HxKAZ7Xm08sZpsTEy24s2UENKCh\nF8BsAYoG/4AwmecTo5LW9ZpwfIi8cXgPi11UZ6VT7xnRkQy/7K3daLiPHB5F\n+XVwnyElQ+668NcAbR60G2uVRu1E2Mk/Z3RkSslRgQY7mxO1ZjdUw4ipHQWP\nugQGBm2SyRmrQketBZGo8/aeVyBx+K9MrUlulUG2jaF51WkKTVP9IKlK6Mtg\nM/QLCLIJzo9PZTAiSXbtD30OmLPYqjYs4qHCYfYgaDWsaQDTcsS0Vl+anSuB\n5h9Y\r\n=/6Sx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"666d2771c016c7a5e3f862a4f02e00fb979c2c40","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.2-56-fix-secretremovalerror-666d2771c016c7a5e3f862a4f02e00fb979c2c40_1566236701105_0.7979982811217561","host":"s3://npm-registry-packages"}},"4.0.2-56-fix-secretremovalerror-2110724890ed80ec61c3be7e6f88bf53c7d1c153":{"name":"resin-multibuild","version":"4.0.2-56-fix-secretremovalerror-2110724890ed80ec61c3be7e6f88bf53c7d1c153","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.2-56-fix-secretremovalerror-2110724890ed80ec61c3be7e6f88bf53c7d1c153","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3c85c1f14856ed31a69c2890bf616d635aa8d769","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.2-56-fix-secretremovalerror-2110724890ed80ec61c3be7e6f88bf53c7d1c153.tgz","fileCount":92,"integrity":"sha512-R0dhFp/y833HZp9ASrE8G9sFNUft96E8F8WGJA6R0pVqmgmsSmnQvXCjw6J4XyNKfCrUkedopWylNaQzlP/ASg==","signatures":[{"sig":"MEQCIGP+bKKhuB9QHWdWMyh3ceFLOHM7KiUTmk7OE+6VvIAfAiBbKteLdAAZ3gOl1lBWjJA0g0+laXL1e+9yaOVTtq/BDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXJheCRA9TVsSAnZWagAAiGoQAIVGBW/JuO08gv0QrP2p\nwzefK4pwsskdkIrr0JRHlMkoLUlkcVYQzVvnfXqrL0uI63Ha2MAPidb8+21A\nMGfnnOeANyQZXQcMxnldakNKm5AqshLRYUZP12bt7Lg2sj5jed+nu4AzLFK6\neZ+Ghztm2OE3Ef3d3GOLUYze8kgsxvg4hUMhfExA63O56M+WyIFBAX1AUzVX\n6wIf8MI/77P1cCnrehyYzVfd9ixuYc5fS0cUsGqB5Dmei2xiKLgsIREkl1MS\nXH4ZxRT5SBIFG1mvEmxXQkYxDMM3oY+51vyUsjaAlA/ZNwkztEe1Ip22BdiZ\ny2NzIP6HAWPQPMeQkLVmbLEvZE0AcWog11QnzDQkd6FFzgGjnZGmfFwk+iPx\nL6WnTkmX2M6kBEz49MWrU27SH44yWBrQ6Qsn4SxzsAAKO3N2KUnCvY0ZuC6V\nbKGAN0P83GAmRvWXtpV5TpQSVrxiyWnBJbg4iN/Y56xyxmI8Ms4rgfzBTwX+\nOM96WTs1uGzRuA2hBrSxqE6jwGmfs3loEeElueh30oRyu0gVbaCdvUhFToIr\no34fs5pqFTcK+SxU9PFXitL49Xb1XdZQyTdFobseQzTibFsXMOWeUF/VGrqj\nDg6l5u/fAj7H6DiEWJBWF7FYyjwj2pIdp8rmB0bahZBxTyQ+VUDTEIo4EVyc\nWJRS\r\n=Y/Zq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"2110724890ed80ec61c3be7e6f88bf53c7d1c153","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.2-56-fix-secretremovalerror-2110724890ed80ec61c3be7e6f88bf53c7d1c153_1566349403894_0.017099944666594258","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"resin-multibuild","version":"4.0.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c0a8345d80dffb9a476e92ab0e4eb44feaf325ad","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.0.2.tgz","fileCount":92,"integrity":"sha512-rJkU33ytdxGMn5pPpnpVqaWsI8pETjXYarxdVvU6JPQBHJapKYLfAnMsAkAgFXNxKCs6an8uPIpjzapDJxwrfA==","signatures":[{"sig":"MEQCIDPBKwhpK5zo2iBm0HBGfUQPBHXt1Itfue89r7NH/oo3AiBD9/SX++gpPYgNqL+/0J5BExnomkk6Vnyo6nqHmh7jiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXan9CRA9TVsSAnZWagAA1kQQAIYBa8htTNeLHHA81NfB\ndpz3Y9psu7l6I5pzT8OCHWA0x+NTNpzGX5BQioVOSnIcnd42hFSjHQPJpDul\n/Fos2S4eFD+EuRb3u1NA6UYvjumQ4Vbrm72xQYkopPt9MU1xkN1YCCqhV/H0\nim2vlWE7t0WYPdPLhif9fFy9xRbMXV9gumfJI25zM50m0WKkqM5rBWR/HR5R\nQ+ro8iHka3uwC1If05iFWxvJUEbxcUnFpoAn0wntxIac6gsikKpSQpcneqxV\ndflXeX3hxXmEz0J2wcvCpnwhR/iBhmVA1fqMih5OvFImn61hu0fLXXkEGcrc\nrxsPHenElbNKljiye/kzVT2sMngBhtkFKIm3Zobxkhuf7eHpNU0io8f25GlT\nol3bSEXhD96pVztpJQuvwJKbSrxdwAV2WfI2uM3cUUL4AbXj1iDf0YbYPFa2\nPq6Qi+uMy72qiJEQ4jD3uUr7/uGD6q+ELzwqGYnVYFkbufd/20DtfQRlWWd9\nQSDXjSMoM59/SRu4tdJTE/NIaiYgEN3dhS/cFwncoiSeHx3x0Ooq7WvP1223\no68BDI6sLZWvH/N1gs3PZJWmbTU9K9Gu2X7XyK6QqfxzBofOAPGvAAh9/sIN\n7bm5YvICHYJilOpvWAhju9FY85gV5ZIvb9MSQGTxqZRZvUGOuEzZmvf/gYgZ\npu7W\r\n=qBog\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"c08dd82e2f96eb3eeb75fc830840135f4f37a22d","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.0.2_1566419453131_0.4780574985690542","host":"s3://npm-registry-packages"}},"4.1.0-improve-error-output-93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9":{"name":"resin-multibuild","version":"4.1.0-improve-error-output-93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.1.0-improve-error-output-93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"2b8c4bfa7232ee5db8d4ed247bb968378f5435b4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.1.0-improve-error-output-93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9.tgz","fileCount":92,"integrity":"sha512-zPkxIlv19uS13612l5SbknOYTSbf6gr3jSlPYdp/xHPs2nUqlUEyrYAt/uHk9obsjRTKpAUMJ+Spry1eS1YuYw==","signatures":[{"sig":"MEYCIQD4BaYTEeyH9yHq2MijRoyX1nHz6qT1B5z8+EBTOuvfJgIhAM336q3XRbXqUUJaJ48Vi7LI5ExCghcA87OF9Uo/3aEt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZ8nVCRA9TVsSAnZWagAAY5AP/iZIDpfsKcSzEJ+yHl0a\nf4Vlc2jZATDGTQBkLfLLcfQ0a5Zp50EJIpMB24FBL/l5wQo5uiQkPcki5M4O\nyUKpAPQz08MQh6nTJZRoX+/B3WoDxU0EQP59bTUQrVCVAG1qIrEg7dGoP/FW\nMgJwILGmjF7xhuTHoOBqw5Kdr9pu3uJmsSTPqV8sGPTTRJgEULfMQv2kLGsE\nNBYR7Zi4scswqcKXj1GLMHF5ng+uYnNHOPdvywHWbqtdYrDi6iDwth7uQ0Yq\n3J80RMVOZfdi2/Qs3PWBeCx/FH0jY9/Svq2Bp82mH202yg8+MwpjAGVxp0JU\ng10vjaxfN9ge0uXHulQMmNj+NP+F70og+vTFr3NGN7u04hcfvgz3lRweWt6p\ni+h404FrvD5knva75zdP3t1FWJMdF0B5UE+t3XZQbRJE+3hWqVrB+ETcaOm6\naLcWxTdntnDb9TDxqSY79zdQFA8mMFtNvD8uCbiqWfWhm44sxqQo5Jn6SAhb\nrmCOvwtF/Njt4bNRMLPCV3U1295MsR3A6NlBur4EdKF+jek794hM02PHO+bN\n2rbWj2NWOSSwLzN5or99V7HddIndmD+rDimSl+rZ+O3fHZ32QhQ5jR03oA72\nLblJYNaMAuaORUh6EZfhZKUohbXCZZ6KD7+90/YwolKOIm1xxHJ3KTFdpPmY\nDmIU\r\n=Cldp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.1.0-improve-error-output-93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9_1567082964725_0.21451980763819112","host":"s3://npm-registry-packages"}},"4.1.0":{"name":"resin-multibuild","version":"4.1.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"487c22380364fc97154ee7f1d54911a024e39b80","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.1.0.tgz","fileCount":92,"integrity":"sha512-oPssHLVxomj0loGf9Zzcnf2tgnJwGO36edZppAYh3PIJPx1MkHnZWuCI+G1nkPV9eCYOC8SyVMEYDU+mA6xZBw==","signatures":[{"sig":"MEYCIQCa4vsLgC2566TU6/Rh+HUn7I3DhTwkF3zF/n94KV8BtAIhAPIzkCLl6xseUSN3wb2dyDe0odVyjGNoFTsyWcMq63MH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaQkiCRA9TVsSAnZWagAAHjoP/3vu/BHMo2HNFKGDalah\nznGlkTFTN/oT2A3Zri8bLX6xqlgLBGoY736stMRrrtjOkfBPsUMp5cqhAQks\nW04X34oaKW3VWK7bDqURi2mFaK4w3oYNBDngDjjpKaC19/dmrh8SBRgVHz54\ntyI0K2Xt32xZtszOxRBJ8hmnLjXrO6lvRcrbGmUMKuY9GilrmTrX1QfJX3aI\nbUfOEdSvuKj0K9KiPx8VlPilK3TRI8mqU23azcVeBP9ugrdp7cvWszaHrWiS\nNoy8Gl7BHQKHCk6o9vNHcL+9Dbblce15vr2jH6DDZcdnfll4OlF8i/6MIYWY\nXBYrT1yqtKCbo3JUojQG/nCWHalf6ut1GBaNsKlRevabzp9JHWK8q9+nQd6x\nkYkwz1MVXWMrSwE5fkXlgP9EjtLQYySFuYnL2vMlaUMQFcksJj2M02G6YE2b\nRSfIsrQoYUMpfzHp6smTgLjqdEINMx7EaGK+X544Il2wy7CoNMbqhywnQKx/\nFNJx9fbilr+ejVQGyOYIQO/pQaQpHAG5oJvg8r3u6KbABemzneyEU5uerP5y\nqeoU3343PooxRmf/quNG6YmyXu78v8x165T3cIycM47EhzcwbFpKAt4cBAHI\n8AFUVG0o7QDSPZf+Kj7qj5R37ILqpqF/Jq8C9u/v+AXbpZm24zAFlts7KLY0\n6wth\r\n=VCeh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"b9719ab2a5c14d9f3a93c95934bc2fe4b1803224","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.1.0_1567164706150_0.12198118159367155","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-8add3c08d4707a650b590d05f464bc71b401ceaf":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-8add3c08d4707a650b590d05f464bc71b401ceaf","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-8add3c08d4707a650b590d05f464bc71b401ceaf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"011eddcd8233211183feb0782b9e80933e568449","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-8add3c08d4707a650b590d05f464bc71b401ceaf.tgz","fileCount":50,"integrity":"sha512-177hRbGDlZWOG+uq4vm2XqnEiCiA2Dlrf1oHA853wDyydCkwi4/9K4Yj3g1wC2T3Zt9UWl4/loJ6eXC3nEGz0w==","signatures":[{"sig":"MEYCIQCTj1H0NzLqp2cuue/Mwx1hS52ly+7LTdIXvyWRoihIKgIhAOmdbubCPpo/MPHAw0DTSPGa8Hq7wvnlbu3r5lehhxs+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbjWdCRA9TVsSAnZWagAAqD0P/0Ge7xmDlrWmWGOOZPhz\nZpcNTqOuddS49XJQ9Et5cAIoAIEDNHt7WmVv98EHQe5GScmPrHDwPxldOdQk\nOGkEzECAuisQVtEB7vzI3tmSMyqSCDJWFX8jNX5sKT+ZwK++vcbjXqd550sx\np4SUnYuoWpUcp8wKlpdZ0chiSIpRqwu00NSgnaW4+ytXBXbNp3EOGkraUOAd\nx3WcCt/FP5qVliCaU5qLknKADew3uApysIyOT1eZMnrl0GPIkhL+jW7rIf4Q\nGMBGOS2/QNVDwjxVM4IQOz3qojgu/YzyZNKppF1/+SS7Y/lnkPBk2/puxLqg\noB2tniJFKS+fcnKw//SjMV0Z6UcDpFtlHpW2pEywZhYoCfQi/YNebJMGGCMG\nQz/d0Mfpk14dsviNrm6+tQCQV9e1HS0VcAl4GTTXkTExu2Nxy3XbNqKiJx7Z\nCU1rm0e0V4aN1qD0b//D5jZ4pwtmUOcHcsEmvmgmlFhpY5Tlg9aLkQSwuYYL\nvG2o+DzuGPIvpZDF7uoXdc8CUDrjy6UPsZPI5oearxSeffEVUzvfCsP/PQl6\nUrr7MvOQPTANzvqGagHN8CIIiIr8kWPOWx5GpdLYPZmluscX9dR/5tc/KjV1\n+UJAtv92QG73Y0i+EKwgAjIjCd3E5dzq7lgTgleSRyyQ+f2yAR3E/NxYaGN2\n2RxW\r\n=PvR0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"8add3c08d4707a650b590d05f464bc71b401ceaf","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-8add3c08d4707a650b590d05f464bc71b401ceaf_1567503773002_0.21636217590674356","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-311be6e32285bf1514e8b73b23623abf33fc242b":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-311be6e32285bf1514e8b73b23623abf33fc242b","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-311be6e32285bf1514e8b73b23623abf33fc242b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"78343db63404bd5df16eef67975fe64cde83a216","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-311be6e32285bf1514e8b73b23623abf33fc242b.tgz","fileCount":51,"integrity":"sha512-LajCuoIVGoPnJ3hh3Wgsdr+uGj84jnAtH1EFOGUovi9IkANZwisGONIBAJUIZ9jdz9Gk3EEQmo3wW6HVy1pulA==","signatures":[{"sig":"MEUCIE7gIQ9eqST/9DShQhJp6OgPJ/ipUWc+A2weHG5nOlArAiEA67/mEzA/CPPyq3IK0IClgC6UOHEhRG120SEXTSf2vDE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbnMWCRA9TVsSAnZWagAAwNEP/jJsuP2itIALccmj60Kg\np7NMi+MCCSLDRUxH+cIqZWQe0xkGIJGJ06NxJ8bwMiCqPBMAwSQpfA6rDELI\nG2BU9W0KOEFUS+tl/QJmwt0jFVppkweqZyBqI3u1UPpstI/19RnTNFw2YCqO\nhX812tEuf2IjZhnpQKferbXCJ20WkK8ADqN/kwhhjM/dEcCHE3C6MTyzMqeU\n9InMSiHARTqrr07a23EvNtI0FsNWDpNugsN9ReveO2bk9/EYkLzFOG40wZrB\nW1PVwz2N8E5xaNWBxqk8wsnwlGHCqjDpf1HFuz8a/YpEJ/yOGGGagwsnW53s\nSWAKXaJBPIwX5fRfEMGDm5ePlhXJ6vcI7kUEJkI99kdJxQ6zASaZjCW20Pjx\n1G57ogfEGucoMHhp8I/Yo4KWHhNNKSIg7hqiDALCx5lRSK1TsgcM4OhoBJcb\nvcP7nnzu3+1ZyyLkbM9jdtIbSbX1+McNmYgZ/VzDZcZXWucey5UlAlyGEOJN\nPHErJ+5tBWg8rOnnwqaX9TFAH2kHTgUXNmAego6cEiM+TeXN1YloguFtjT3S\ngKCYRju5OiX06R9JdOZ5MjGVywMlBwuYcV6fd4RGw8COw5FWq0FM4SnEOxDA\nBwQSsWlfNZOLH++eBSvmC1RzgEvk7Ul53xiMjQ//Gue0GbmHLpRuo7ULmOni\n9lRI\r\n=ISmd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"311be6e32285bf1514e8b73b23623abf33fc242b","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-311be6e32285bf1514e8b73b23623abf33fc242b_1567519509582_0.678761491541465","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-cfc99a3b638d93c1d4f05572d577eb8be94805d3":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-cfc99a3b638d93c1d4f05572d577eb8be94805d3","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-cfc99a3b638d93c1d4f05572d577eb8be94805d3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bbf05e5f8ffe5c2bb486a8ee20fdee89e6895433","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-cfc99a3b638d93c1d4f05572d577eb8be94805d3.tgz","fileCount":51,"integrity":"sha512-Sz5RkPWJ4JGFSsOvXuxjTL+j8f1mZgUThx/nsAyyF+En/M2l5fHHfTERSvJXK/S1eeH1b6Vecg8fXpR56lwavg==","signatures":[{"sig":"MEQCIFUwtw4fJhcldggzK72A3NygMBQc5b2dCHf5g3Xuy3/jAiAaoGL+kAUxD5BILAmzhYEYitPYn96saGgr3wZqhvP/Jw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbnQKCRA9TVsSAnZWagAAArMP/jwARszY7iRsNFYiVWeh\nUUXyTxiWD8whSyVV2LhfYE1eoV3CJw3ZP9o2clIivjyeWxjlSXsPeWOFTJTc\n6QnBfiJQpuKtkEf3oRrdrlX4M/hGdOSrLC5GmniFCcsZsZg3nrKA45g1XpZj\n09vcCmz2racVDzNQMtnD0LMTgQez8ny9S0enPYpYpgeKgWs4fSSja85W8fcF\nl7MqnBhEFmLavsS6xUfbl8HGKTodb2Qa3txJ/3FGSIGB2sy+bpuNsP+1VPMa\nSXu8ld2W00yOWP3gHtFnb3eP2TpONsSetxoHZDqOonyPMp+TiEXxtIV41auY\nl4cY/gDvHH/cucT/GRcVsbyNr/XADrPIC7b+hHClNQEf2ROO0KRDaKohadfp\n+1aPEzwPn8OpOerCHHxEh0UQwrXXo/5blKpBNnRFHeVyb38iD1cMomvOY8ot\ngBsXgYye+bGG9KzbW8EJ3YvAXSwBL0fKqMB7G9VUgl6bo7rJEdJD7QWF6lgz\nY1wdTZoZ7fTSMH2gQQ4D71ZVl5TTl+/vKqci113IYfM7ayAP6qf7WwpOv9XD\nPmBd/yiajzLmrBHOKEOx7EnYncj13MJNNM4tOe3QVBHYVe+UMH5GwcySycAb\n/xr8y406+6Lt3qZ6DJZBYzQEhLNJ5pzMA3awwnOCSMGWZ/J9RcWC0x2zQdE+\nW8Lr\r\n=Sm1J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"cfc99a3b638d93c1d4f05572d577eb8be94805d3","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-cfc99a3b638d93c1d4f05572d577eb8be94805d3_1567519754360_0.5312996030126746","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-3d466267afdd189e69a3302ca31531134bd72f29":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-3d466267afdd189e69a3302ca31531134bd72f29","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-3d466267afdd189e69a3302ca31531134bd72f29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"675c2753831b2bd7121f6a12a82d0d870aacf366","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-3d466267afdd189e69a3302ca31531134bd72f29.tgz","fileCount":51,"integrity":"sha512-XWs0KGKh3evllvyYrmIn2YcO16dDqBrSHJKOWIFIJPmKc9OSgZ4ycbOD0IINCmm8UQCaPML2tjuDipHwxUrZgQ==","signatures":[{"sig":"MEYCIQC62ynL6EVokHWkhSj3oUyxrP1Wqc9WnDH2hWVdjVCwYQIhANO4IiYDJ/NalPPkS8s13koPZDKybekiFNjt2QlEmrnb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbnZuCRA9TVsSAnZWagAARM8P/3HuDmAcFbamEGKd8BBr\n99PB9FPJaaBUZlzPP97qrVRI9BEHe4PeiYCe7hIH1D8J2oJthg5XNAYicrWf\ndr8waE19jNREToRz0nlp7y0qv7NqMDxrry+yEXcJ0X4tnPry6/P4Y5fMAF62\nK8mU+4wRr+0s1tCxpe80yqrmyNqU/LInOQtiuZ0M96ldofJq/l0PpNPsE9dw\nxRfqKSaiEr169sSx5wpbCl6XgX1NVWYokzFzruMKlsoTHtB/SJ5D9z2wtWQu\nLVvN9Nf3MvOrS6+AeBu29oToWboyZrOUOgc1KVoW7Ep1aq/pL4yaOzVzCM8S\n4kluTSDPAtxHe2C32JypToCQIfGQvWcvfIOkTiHKGgIAbT+Fai1tmTtFVMDl\n13nPJO0yVXA9sU9Hv2lNKN0JLJ9gzpbsifL98q3kMCVas+18miNk1kBCuUl5\n++c17XtZlqjZTPjhWmXYyc6FrqtyWCv6hNhj05T9QtJJ8X343xT29Ezn1wdc\niW53ClS9m8CbxJwtSu8jGOBF/idXRKl9joKlcYHRIFU8hgIaVMCslp9a+ubl\nwaXbBmhkGC4Zy7AAsSkSbsQt8yAxNEt0poxlBKtITeNnfuUIglmPzXB3RMJM\nZVCuFgrh/NxHGij/1+5Iag8/ul8z0TFPyO1BPusAoAYkYQSLnEhvUEstO3HA\nXuwa\r\n=M13J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"3d466267afdd189e69a3302ca31531134bd72f29","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-3d466267afdd189e69a3302ca31531134bd72f29_1567520365684_0.7977320687589224","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6a7c15989640d814278a2f80a02720c057a60c18","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef.tgz","fileCount":51,"integrity":"sha512-aUXv8B8rmB+e6VEu6zy8qvVbZzSzunjlExDVWvWDB+sMqDRMs4b+MLN7rMcsZYzuvsJ67e4kTkovI2FayBt+zA==","signatures":[{"sig":"MEYCIQCR94avhM0E0fxosdkfSe4UxoNKndH+FYI8aRgzoKDKZQIhANzFJ82tn2dTN8FprgzRFI7BARATqjk6TLmtns1XLf75","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbn+4CRA9TVsSAnZWagAAqDsP/R8hwXTO5YSJVzHFSVn8\n1y/z45w7nl/f1ihh3jnzSDAlqanJ5BGXCA4PV4l+MFTa1SHiKjRtOBXBaBNs\nqU55LdVG3PgG2cV5feWuLYhq3OLB859M/YCv5GYqwsT/meI/Bi5R95blbBjN\nLZuNYB56xbc0iFRTgb5Fc718VeYeC+XpxQH8I8nqVFnptjddpjUzq2mUPcls\nM/kTrVRnGVmcHraMBRqawg8a/vmKsSxHQDxY1/l70ds7Smcg+/GEtIH+lFSd\nqBTtbPtoQhewK16PBCtohF5JSlau5lU7hcaGdr+s5WkdHKUbAZR+uz5LSDn1\nMmPzyXzPhhGCexNrPgDjWJXVaMUljp0UIPZ7t5yVY+T6D9iFk0TQ90W5XkOt\ne4hw2GrWpbHuxOjOIPVG+2W4obSIyE8IWptw5m3PxUhMRePW079t6QjmtFCR\noFPu6FgasrLz18O9KMZ15I8t/Dlv8hZCJG5i1mozMOkRHFVglabqx1miC4m+\n/C6FmrrKP4shMBy0h2VXXiGZ/mJrKUtlUe+QhVuABzt8F2AsYVjtfXQr3x5G\nw/iSTwuDyWrQYtcgXvylOricJDu94bK5ayxKJIIs13Oopvd2Yx94iJ5Sb3//\nRINMtwaYacU7HkUP4XO7Cme9xtzApYufDXuQk3s80VyJYW/KmdfyJoH9Urlx\nPJ0v\r\n=Aay2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef_1567522744055_0.08792315392823902","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-cc636996d01cffaaa99c3b0272053191f1179b2c":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-cc636996d01cffaaa99c3b0272053191f1179b2c","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-cc636996d01cffaaa99c3b0272053191f1179b2c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"2e1e1390bff79c1c7147dd2aeb29a52f9a5ddcdd","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-cc636996d01cffaaa99c3b0272053191f1179b2c.tgz","fileCount":51,"integrity":"sha512-2VmdsGcZHUY5rX7flCKrA62561m1S+69PDiUBVTU5LaoDeUHFmZW/98iIx73M3UaZQvN12UwPm0kDEv7e+mLMg==","signatures":[{"sig":"MEUCIQCDnrxvjWl1bYB0FdktTSGTVZ9vXgrm2sn+C71UfzSIQwIgMrGlP+kcM0mGJCiY4Czq793y+qx4wJKI2kzq9rSQlQo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdboHECRA9TVsSAnZWagAAURsP/1uumOnhJ1EgFaMfXfyS\ndyfX9PRTmLC0LXpjOcBN09iUhrjsGR/G/oG/PRqsOjPcUai0/KoiwKcx2wZ9\nGo7BoxRIbQ9vBGECABHrnZCjsh4ERY8XpL2+PezRxrq43z02sxRSOzF370gO\n56gOyjZUJWg2pf4qi2CETatxX1QOyvH56eWrVovOJ2f0ioKfxVMXe2eDLxRZ\n/1eYv0OFxu9ytGkvXnAOE9i9BgWCBNqV8NZL/h5R5tm1tL2a/RhJqhntZUzn\n6+je2AeftHUGwheMHGDveP3tcr7LBlGymUax6fRyg+xRTkVJiUDR0AulOyaV\nRvDA8qHueuJTuMJ4K9JfVsZ9cpPbs9XW1yjFDVdUmDoUmrF23AnoxWG1mHQt\nKSNrTmPwDs4dto8MnG4CYvpvJy75rRaNFKLiAa+KiEKNgfCYhlzxhCbHl7ob\nLCmceFr/u4YKAvF17bFgf7PmalE0Mzgh7gvSQS57aysDr2k+VZwNFgoBwm/7\nJ/WfNilVTcbrdELZzOOnfS/MyaJQLHmy2YwAForOJ/DiOLTggPEJlCQGy2cx\n/k2lSy21jqcuqUK+za8MU/4v+hm1wlYCp/RCIuCe4VjLeVoRwGyRsJII2zbJ\nAXAuiB2Au8puPCpNLRu54pIJQZqX8s737IKbm0dthcAPX2DPB3FSMQOuVmpR\nWTxB\r\n=KOvX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"cc636996d01cffaaa99c3b0272053191f1179b2c","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-cc636996d01cffaaa99c3b0272053191f1179b2c_1567523268075_0.48293770008040293","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-87c3e30e272576be53c3de45727f946b5034f0a9":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-87c3e30e272576be53c3de45727f946b5034f0a9","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-87c3e30e272576be53c3de45727f946b5034f0a9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"16f9d1e2b43fb654535b988876ea6c3fedca80f9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-87c3e30e272576be53c3de45727f946b5034f0a9.tgz","fileCount":51,"integrity":"sha512-cf4/sfvoYgK+3DHI2oNQGgIPyHoOe87n4sFVDRieC+7VLlW+ETrjWyZeoVHlpS0K0NbEb6EcdMK2mQlEKcaqjQ==","signatures":[{"sig":"MEQCIHExhxfC5Eq/ZzhUP8ocA37YYH5//m2rhBE1WPTAbQ/3AiBcImvbxzOMNywEba9lHrScPkyiQdcqcRpn1kWREt87Wg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbopuCRA9TVsSAnZWagAAuw0P/3p0ETsCsjiGolmjH/Zf\nG0R3jblJhRcdnEMBjVljneWQsN6cQIl7QMW37bGQIa7uq9CU61OJQ4Qo8myG\nPDnabjCqj4FAbF7ayi+fecRf9B7mJ8X/SjAbgLb75ExtZq7NtJMS2h/9D7qq\n372NoI5xx2QnLsBikTDvtDBT5IRIWFM1RdqMkh2fI46MiEXZep4asxMCNTIy\nOh/x+DiiFhYVsUvGaqWkXNFmTVCbDyfN4zLAd7jJkQolaNPW1nZa+WrsCjKG\nLKJcFN41eUuvAnF9sCkN3b60CVXMMwFCFF9OL2BJGhZ4Qdy0W282tHrBMXka\nHLzPmuC7fWktnDHbT6YBEWDv8uYW+BLwhMXL2bvQQdmzywaId7OsrgI9TW1x\nYd+11NndOn9GG8YkQwPPK/QQYPbHlxwac64iA9IEGvr8WEax+iCY7wDnezj6\ntnKw6bShoepDd57h9SK/Stom/gyGJ11ji9W5ZCsN8G5YR68kfnOdFiDEkepQ\ndsXP8yDJoYXR+y4uEPMZ4A16+iBBO8eKrL3cQaWNCB7TnsLl7ejS8ZeL07rc\nlKajgPW+KQQrWXuesPx2+wUDvynYPpbHQ1hBGN6bH7Xyr9P5Af94cwZzQ8Eh\ncwWBcuN9r7YsxrWBugySLnj1diOV3sCi9CnY7gK9AZ42odYmyXFnhpHz1Up5\n3FW5\r\n=n6FA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"87c3e30e272576be53c3de45727f946b5034f0a9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-87c3e30e272576be53c3de45727f946b5034f0a9_1567525485921_0.2113716394606513","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-dc88fc5004796ef441ba0055439159322c50db7a":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-dc88fc5004796ef441ba0055439159322c50db7a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-dc88fc5004796ef441ba0055439159322c50db7a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"beaae3563cac273eeb355bac60c39ae77d171077","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-dc88fc5004796ef441ba0055439159322c50db7a.tgz","fileCount":51,"integrity":"sha512-mcLpg0M/ng368ujSy4nvM2Od0xNkAFBe+o6dr1eOeOSBdO7T3ohrfiLmG4eVTdv85nEYcFAiWxIieRW4vX5V8w==","signatures":[{"sig":"MEUCIA/3olMVsPeNOeX9k/YeWjSmOVFf6hraAlupOen6oZakAiEA0yYGuTwBw5tnDz3/QHh1Ki6UVDzhBhfaqRwDIYq0xPg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb3bZCRA9TVsSAnZWagAAXP0P/0p55AfojlRQOrLIOnoM\nJlPZPMdg1ip6ji+YfaVQnwkNgztVBx8K6LKsgSa+pUE2696Q2ElwcVXnm75N\nUdK9H0Nes2yYYeYdz8cht4g7fOv9so9q7W45GlPzmJURaYPV+/Y98Quf45ul\nBu/Ad9vPJC13d1C4uXe7Qs+d2l1D0MUg8T7Sqsm9h/3mXSnveHMUmhb4yxBO\nbHMajyMFZxiWeBBZeawYaYWxUQNc1pwz0r0dtah59P1R/d/m01BOrGh+SYPR\nGVtZ95mFFPJO8OAnhIJ1MowQyeRSVqr8FO3ZpZpqezSHK6O1Kl2e7kf3jgxg\nmBdvIa6FRE79dzsPHgQwv6GOXChADo2fS0zyWowe78jQdpfELeZlN+fzJaDf\nubS4h37QzeqplwZoeJJ46JToWi9Z4tWH88Phfjua7Gg6uxXlvyVTg8MW99Sl\nVkh70yJDj88OzyC7ycgxO2CEDklv6uBhjRPxlkNZbQD227JAyNtPev4CvcHO\nWCtPyoVivFutxvmBeycH3P7biCSt1axerWrGwej1aWdEYgtD60NBRHkVllpg\nuYKAH9PoQ1UZ1RnvgKYYLyB+AdsbVO0cTZgqtqjLPL/3NmogdVpVqq++CzPx\nej+OVmwZ+cnNi/qVSN9irYNEHbtNh0ap5D4wXkkHuTgBHunhWIDi5Og6ZpJe\nltLh\r\n=0HdW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"dc88fc5004796ef441ba0055439159322c50db7a","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-dc88fc5004796ef441ba0055439159322c50db7a_1567586008908_0.09088875607627189","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-b4f017d525b85facb76fe971d7d1ee76c439b6cc":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-b4f017d525b85facb76fe971d7d1ee76c439b6cc","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-b4f017d525b85facb76fe971d7d1ee76c439b6cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9a6b599685c7c0147fca7b2d2f0d1ebefc861a73","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-b4f017d525b85facb76fe971d7d1ee76c439b6cc.tgz","fileCount":51,"integrity":"sha512-mgVhQIxpank06qxjWHLtOCu7qF6nuk9XrLP5w8+f2rFbaJhMrgtlvr4yqNrx4yiaKjENHeVkqF9GzuZrK5tLYg==","signatures":[{"sig":"MEQCIAQnY+bj0JDc9lXhIlJJ4odQ8jbYoTDclMaQV1l587t5AiB96O9Xy35od/U7TJNtS/6AgJiuy8nu9uoaUiIoioWTzw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb3izCRA9TVsSAnZWagAAybsQAJayPyVm5i48o07Wm/q0\nuUs/wYu4yT4gCtO4f6Jt0WCqbB8hIIydLJTlQxQ4oAnPNn1dtXwEU7wPCSaH\n4obzQ7QhoC8+tjwurz1raNhw/ISXfd8xBDNUsZ6Xp5s3YhBNUMaua1BRHdX4\n2CQ5W0+Q/CpPERfYY2vN5GE2Z3CtndhYdZeReHyXwX5VbbH4Jk8yvynn4JPg\nqTEcBmnU3h0rQ2grXU54xzu/ZRcIWCJ3QgaqdPP4hkEwDy6QMRFqSZZiD8i4\n/0Xda2Bh0tC0fbv2lJU7GK9mB4gb0IG8F+KwF4zu5/5SH+oHC/CsaYj0WTpm\nEBx7FJRJZRTEbtH79TD0UCW8m5IQU1BtW0h9PIwOdrAvWbDOkuYVE0wQrno6\n1zJ060AGL29CQi3ANbbrzXh0qOgLnWT609B3lAClEclh0na5wBF1EtwP7z77\nJLi2NHb1voMpAZig4573iEMUyCQLc1KbqXkLnznzSUzz69Yfq1NZzYeh3GCI\nG/k82hTESti7GA2ydjgppmiEEvKEwCOZ6EocKfMjdxzXBtNm3sevNFBe1n+0\nFt6QaTW8Iu7UisLSxC3Eqou+YzN76yfBFiKcR52b5zFRhZEKOR0RefTML7yd\ngcFISmk+okJ9WoD9dA1abcrYDk2mT+hf06K9Uirw4AK/FzpOSG4nqT1NFtLK\n7O5D\r\n=BSLd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"b4f017d525b85facb76fe971d7d1ee76c439b6cc","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-b4f017d525b85facb76fe971d7d1ee76c439b6cc_1567586483295_0.752089300156664","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-8fbfa57db70ad9e78adb2185055a43c583af0133":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-8fbfa57db70ad9e78adb2185055a43c583af0133","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-8fbfa57db70ad9e78adb2185055a43c583af0133","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"95ccfae39c760ee756388bd265bd68887d5b1fe5","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-8fbfa57db70ad9e78adb2185055a43c583af0133.tgz","fileCount":51,"integrity":"sha512-t+bGvNnx2M88P9y/F+Lc9qzKwgMXG92VxKq5a8HATnXCzuPifHetOcwjjGvzhGRuQXKwH8ran7HO6VrBIhYIvA==","signatures":[{"sig":"MEQCIGYNjebiT8Idud7rIu4vc2i7BcwfZG0ZWrkV+SporvRLAiAgwUbGpdp69+ysKrxF4zXc1j0sv7Hd3OwQypsJME6trQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb4JfCRA9TVsSAnZWagAA3IIQAJFtWvws9Z7Kr2lU3L1v\n8krp8ftNQyhZ1PE2zQJ4+zIyXEcnPt36tMLzDiUh0kPxSyNY+/b69TIIyMew\nO0dcUQdh7BfCWfuUloG5N6naoBOUv+g0uqBWlq3l2BBywo8CY+lZLpZIqYcn\nKqZxRKpwnqQOWZC0oy8Nzfkd6o8lVVuQBIbr4cStmAJ9Hl0G7w+Q6intfT+B\ngAaDTF9J1cC3WcH4teJq1TqsjRA2iJjapObVMsBQ3Ft+d6+PnwLuNQcz+IN0\n4u158ry6EHKW1uDKJxj5SdavY3fsj7oJme3o6YkRWyBMpGGdWR6OtOn4OaHY\nTbQII6IBGlGnagIrqSAKMNpuWbgZxLfWwpaRN8AEUOVyQLGjVZhkHi1jSoKQ\nn4IU8oVo3val22ajwuwLqXF7/xF4wb5rccbbpbOI9pQUfgbxvmuUhXcmR4+5\n3Qe93lDh8bVuZNZUQBsqRXlPIFx9SFQVPCT8mV7aNSTaQnnkEAZqKDlLGSJI\nnU+Zz/OLKiQD5onBldyPWxgToCWT71E+AKuYEKUjJisCQyhfXvp2J0kbablB\n2IAU8Ny1X/T3tYR39bGHBbiTa6QsUmCCL/hj2rT40mUtQR8a4x8FV1UUe6xD\nsmCSHPHYINifBbkmbypGKbqLHSxf9OJM4aOjjgL6NgW1yl7CujS8sVSYiDKi\nkCAk\r\n=+7XX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"8fbfa57db70ad9e78adb2185055a43c583af0133","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-8fbfa57db70ad9e78adb2185055a43c583af0133_1567588958528_0.39245375007856054","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-d3b05557191479c07ea242d4bb1d39d094b71290":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-d3b05557191479c07ea242d4bb1d39d094b71290","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-d3b05557191479c07ea242d4bb1d39d094b71290","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"01f7babbd67467f7eda6dbd2e79b246508a595c1","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-d3b05557191479c07ea242d4bb1d39d094b71290.tgz","fileCount":51,"integrity":"sha512-roULoIHTrovD5tYOidCwCMfQc9m9ttfNqP4WRgWY3dkEQHah0So53IfOKZwZxSaAlkhyIWPW1bqszvk50fTlEQ==","signatures":[{"sig":"MEUCIQC+9Gdf8NNL9xyzYmQUIlP2m5Lq0to9mUZiZqgOCwrlcgIgKPs2T2O+FLCNsQiWgKAUNCwoK3wQYUODivzbTcnjmuo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb4KICRA9TVsSAnZWagAA95IP/3qlAAby6glXyYpjX2ax\nkHrE5KvXrY99zN4rLrJlsWyKmDmjMKewfcBP3lWvTybPWVflg0dgmLmEQgqd\nSxnYCDuqyMAx073pmdiBXTeMkLSb6Y54y5BT/gI8Odpc0Kc21tjex7dBNxFW\nFwxPLQx8J00thaz20vvAOCV32tYX5uyH1gBCsYR3/Hpw1xZmHfP1A0G9TXUD\n5Bm0DuMGFDWIn0z+YnMN8t7X1GlnFoz8F0WlsQGsls0moDwB2OCspQ2GiJ3q\ncrNxcBoS8tn3zsb3HfOTiXJSpvBAZ2RtkFZuMQBLh429uWeZpsugZALZFgTe\n91qTbrZd3lirL+hIFyytKEuFlzXBE4kuQJ+LSrpx7M/lSNSCjDNtmqqso1+z\nfycd6+QsUT41wrWoexJRHI98TPrRijAFKW8n6HMU/ylxPNZSvuerwDuuL6T3\nGuqoRhdbxR3QQ6iopIE5ENI0b2g7D60kk/9ekOO8NEgXDoPfrINCW2tAVixZ\nbGqu4lVCyOrY3d/d1mET7WsaNmWPTUGgAOlKHDK0NE29YAiKnkHImPLSEBrJ\nj99m1Qj6yEneRa7WGlqUXThHNBBqaZFjMGWlbPsynFL2DvXPkh0CdG0RRSI6\nTY/8NKuBwbzZ3AIhO/OW2SJixfVqi5R2BWgh4WZ+d03QUXN1VejRmMukV9/d\nMzrz\r\n=LNVv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"d3b05557191479c07ea242d4bb1d39d094b71290","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-d3b05557191479c07ea242d4bb1d39d094b71290_1567589000339_0.010637270542132704","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-f3895bbdad088927d7197533f9f092e70c1add13":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-f3895bbdad088927d7197533f9f092e70c1add13","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-f3895bbdad088927d7197533f9f092e70c1add13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"fc2ea6f134c4c901cccffd0f586fc84e42a93677","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-f3895bbdad088927d7197533f9f092e70c1add13.tgz","fileCount":51,"integrity":"sha512-E+CMFnbi728zQxBrcrm3YL9dqmzaja+eXeoxAy3rjXH2huJ6n0rlYX+B2a37Gi/6RBp8F/VcKkdTUlL36haErw==","signatures":[{"sig":"MEUCIQDSSX6Pw0BaKXYfUPjSUCcyXpvmTVyGt5pS9YRkec09LQIgHz2tcaiW+acdJN9TIAKjnOYwkxsdoKkh9vtE6UdpN68=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb4gLCRA9TVsSAnZWagAAQ4IP/0YJtKloMd6aKTDYEgxg\nvpOG56YzOgxn+Rz1XJGQa8k90UMMo8oB+p2CoMncREkQf/b2qpepVe056Gzn\nemgzf4nt/fXxbkQ8ctLx7x0XdtDph+5ie1dXdKDJ81MHeRVwT/JgzRN0h0tu\nsgLYc9g9Rm5lJFf87MAx2tsHAGcki1Xa7by+S2AyJKtkxwIsp9E1hV4EqeS5\nhj+1WN1YDuXK6AslP9TpG2K8NZDVIWXFouc/UkS9he8QmimVkC8Rqc4Cn5bx\nHy5jhD/B0TVKprLy5ejInZvfbydK9cI4DDGTeXxNnM9uii8+tH+SJmpjOH5t\nE3bRjv3z+JcYG70/dd1+EDXXOEMBXS+RvtTbgCqx810JxnVkp+/TQq2M03H8\nyoBmwlCsVXtvCb3ENjtoJbtf4r/XoMqjqSCuMrmCQTpcCKuAdzr8/F55g3f8\n8QVdJBBvZsd4TXmdcd9s/zYBs9pUhTfxQOMzkUaP2g0BLBLNov+AV+vAObuf\nlIc6o2A+0gK4duqi8ifjZpEhi3bOQo1MZXQh9fxkWDLVg+yaD/Z/fIXLHRii\n6kwDHfUUDfH/nhF3o8ETBB6sGhVQmJaj37H6L9uNF8DqGno3xpxndgJFP1bP\n8c5mnJQZH+VYdoG0VSE5xmm+Xnc6d4wjnKpYfKPI+xpdgWwc0svpb9Bj8YAF\nQ3pU\r\n=HVRe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f3895bbdad088927d7197533f9f092e70c1add13","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-f3895bbdad088927d7197533f9f092e70c1add13_1567590404694_0.6284915311019399","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-b598e865fb3dc63a51b2578ca3944f5fec422eb6":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-b598e865fb3dc63a51b2578ca3944f5fec422eb6","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-b598e865fb3dc63a51b2578ca3944f5fec422eb6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dd263951d30ee2fa102191ca38f9453a36afd675","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-b598e865fb3dc63a51b2578ca3944f5fec422eb6.tgz","fileCount":51,"integrity":"sha512-Uf/rXBNGGZNJbQKzUPhTh4RZJKQAA5NbtlVv+Lqn92FPvUubzGK2duQvpa/y8FNYeL4DSSNqnclfqBdEjwptQw==","signatures":[{"sig":"MEYCIQCJhR46sTppeie0VviO0xF3PfiHZzsUGi7doFuIs9kQEAIhAJBVL1uTbx4e+OKje6Lg/2ASnszbQOJioqV1BvzdnkxI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb4qnCRA9TVsSAnZWagAAbwgP/juXkZYjp2dw2M+v9oGk\nSBQh4QY+wzRt6VGhZeH35BrZmULUasibeWM/0B+cn1YUip6NX9HO5z0KIxYt\nOxJD9hYuLJA3f/cdiK2WE8n83dsskqiekbeNhgLcWpB+KVInvAtSoRbsgji/\n5cvl7IdnD1T8p2bwjGT6aZFMjd/Zjp4Y1BAFRbniX/aLmvKVDsU+rmOzUOpb\ng3fxyK6q7/TIW6GIzWhX0OjnFlXkNJKgtCzzBtLMkoPGn2TZ/E5gqmkT34qm\nJ1UhyhYjRz6oWvviNEQ33m+e0CxjyPD9rjlQQyeD16DG8Uf7TbKT8fR+4qIW\nGzNiF+qI2FeaUBRCl2xSCkdvFzrcUU7tMNKda+R+dur2hrnSOiaFqxYGR1Mz\nV5RTWwBB68XOGrT1lTQR2YbE0dRvt/oaF2VrOnEYdOoUlzGLD/xiIH538lRg\nBJ1615GxWA/8q2b8k8zgkgj1z/f6N0KSduCy11TZVv6hL3xKJHJY2HZLEdka\nnvn0V5OPLXCwCohUihwEvx+7ZxTrSJHSUXvP8qPsdcCUMqO4NfAw9ddiylmz\nBdyE2GigP9azVroja6MjEiftX/kthtUF/NeVMuBbpUa055sYLsI1IkuvZ/MZ\n3MCUsG8omKSktGFvO3XwauN+VzUEjP5cM5udG35R0iuFTJ3Bg24KS8WqGvHk\n583a\r\n=BfbE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"b598e865fb3dc63a51b2578ca3944f5fec422eb6","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-b598e865fb3dc63a51b2578ca3944f5fec422eb6_1567591078626_0.0005496461992027246","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-6c7e1afc4f021367aca132a4864842f69f9c04bf":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-6c7e1afc4f021367aca132a4864842f69f9c04bf","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-6c7e1afc4f021367aca132a4864842f69f9c04bf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b47c6fe675a5f3faad8271a3fcb05a428dd8e66f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-6c7e1afc4f021367aca132a4864842f69f9c04bf.tgz","fileCount":51,"integrity":"sha512-MJII7TiSlSITpcHcN4nqEBu0J8raWlHbdnDGabVVQZn+x1Gwd4mdGtc8ZWVJBkPJSNkGIJtK8RsqiAez1KXq7g==","signatures":[{"sig":"MEYCIQC31IgrtH9rjaRp0yNktZBFXhZ4QhNnXqb9Ng8ke5O8FgIhAP95Pi7SGM+n6iU76Rf73am6nVpL4S3a7uozH9A76/nQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb4yACRA9TVsSAnZWagAAf2kP/RqBtthiLCtLQtNA3BQT\nhmFILzoZS/IoijhI/CfUW+CtZ/IxmcR+w57yvUGRL3Fw4/2mXkH9uSyP5fDQ\necspCb2S8KEYFeBuDKc51vj+so86Zr8i1AeVGDmWlgsmNb0NXrBtB9vCCOr2\nJ2Gz6S3jXADigmgO38HL5OnehjA2Ni9tNUPY7w1EQfvs7DzkgceWFrU8S89X\nyp0COIvxQBnYKwel+QcTlOAkn/7UbKkEUOs+w8qep/ARf1B/mHTKIx+EwTFY\nuX8CDJUkGDViCV+ZIP4VC5ogrQotRRJbdOMJZm2s88/F1RqL0kou9FJzoS1I\nhSet56aF7BAyMcPfo8zk6Jc7/Ho4um59JRD5qsafb3t9eA0Su9S+Uf22v4hs\n3leL/KLtd3gyiro0YmI9s9JRNdyVFSIMkk6Y6gkpQesXAgBPcNdUY75jcMbS\n18++eugdBt2pS9ZhLKyDJMfAdMBntRwZ1LKsCmC7pLkNyCqbyiFmRvAVFmQZ\nuQyUmxUmwWPRiS+sy7Kz/zspLJysZo5OhtLy0B/otnfAhgVByqMAJ+s6FSoJ\nYOHxi2I2wMktsiySw63tXzFFSQi7qpndXED6qd0HkPe1lVEgPwa+/1zF4LYx\nqLk3DeqfYbPRdToMPDY/2UOOYkojNA0iHUcjQrTZvsAQukyJo5c1bIYxrwzR\nic6O\r\n=JobS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"6c7e1afc4f021367aca132a4864842f69f9c04bf","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","install":"npm run build","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-6c7e1afc4f021367aca132a4864842f69f9c04bf_1567591551612_0.062266448358063275","host":"s3://npm-registry-packages"}},"4.2.0-add-reg-secrets-3551ccf05411fbc4afba7a29e3593003a60acd5e":{"name":"resin-multibuild","version":"4.2.0-add-reg-secrets-3551ccf05411fbc4afba7a29e3593003a60acd5e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0-add-reg-secrets-3551ccf05411fbc4afba7a29e3593003a60acd5e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6c46d0d5711dcedde825c6d18c094980add4c011","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0-add-reg-secrets-3551ccf05411fbc4afba7a29e3593003a60acd5e.tgz","fileCount":51,"integrity":"sha512-oAG9zpCQfcfb2MydyYjVYxk24mkgsLeA6sTnBV+hh7iCTZKD7iDyof18XZWgpxCLi1Kg78KdFJ+yqwkdQEra7w==","signatures":[{"sig":"MEYCIQCFzJIZczoCkaFFT9uHkdj5OSXwXPCmOOcGr5g4pCfEagIhAPTEBf6GyvEG77dCGWribxgJTZL2wU7kVQyEkhAijs2N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb5OxCRA9TVsSAnZWagAAbesP/2J7zOrtWGXlIKSX7KXx\nv06p1KUL5Y1qcAoEI2ENzrHYNMjWhTJMlY1XVvFEwV5C1vhaC0TuvSdSpm85\nDR5tW00oBwrWVSbuIBq1UFmN4JBZJ7s6hlOObTBVQkCC+8F/9EJbDbo2+PqS\nPnWkDyHTAFosEftRZq9jJDr08Ibcg4Ei2y9/GNb1xRBBgHn/lywvhUDwWYh1\nDpjuU+bd7MuQrcBIQf697sPVRLqobx2hKWwk13AkWK+sdcXh+SWgpf8bAgCv\nvbR9ujia3S77otzdacsZy/3H0Pe9LffnWtY9T+l0knF9emLtGAqI04YS/C+h\nUHeOn4BKWJ3KnyOnXkvOxKqzZWXYZPeV6vK9qti8u8do+XTeruw+q8m8djY6\nMHP0swZzQibpA3djdkx7JG05pkTfuRiSHf0/KpSCcIuouldAwYvi6YWUgWEU\nBtQVNmtjZCwsmtVusE1VtHgttig0lWNxmvje/2bjt8QpaDjNDoBSWLj0r0Z0\nMuudgkr9AFERCyEwrZukp7otxl80MyB63Dj0gm37fCFyIEwvbqBUQBtv1fc+\njtj7jYlmkcdhW0GO+GJ+DGDZs3clnhYiHUyGte9U/7K4cOXE6n8OxQerHEep\nAcjEWzYpijXuBqZRGaVLudzRY5Mvp/7YO/wuD4JgLD1ASmIlsC9Nj/X2ItXd\nWICH\r\n=+VNs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"3551ccf05411fbc4afba7a29e3593003a60acd5e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0-add-reg-secrets-3551ccf05411fbc4afba7a29e3593003a60acd5e_1567593392937_0.5809563664330939","host":"s3://npm-registry-packages"}},"4.2.0":{"name":"resin-multibuild","version":"4.2.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"29c2711be523ee11c8b2516a466cebe58b65ced9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.0.tgz","fileCount":51,"integrity":"sha512-fpMznSM0kLMlRDHarAQe2ugzNdNC2mnA48WmGJ7a4yk8eVAg4UfMA3utOUFtxJ4rosuxADV2jCw4hzT6wY4yrA==","signatures":[{"sig":"MEUCIHRXh/Y5LTefsCtNG0TrewMVI4pHwa79Cf1yv2UqSi09AiEAwsf5wU6gQxLule6pN+YlTDbnUK6wOT/4f0jV2aOTozk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb5R3CRA9TVsSAnZWagAAFXkP/0NMTUPHLzvolYunZ0+h\nMKfeKD/3qvGCb2wV27AglcBrK8I6pwIl+lZrCh4XbKlufJhlmPqj1QtnFpij\nl8Y1q4yd/zAgjdQJq2EVeaIkwGIItzgWyNWOlHkyjMEWRVGONLvqOQ4AMns+\nrAl1XXW+PH2JjlEHiWMJdeFHMDJvGDYvx82guPsrnebbMeAt2qENFmtOXzj6\nmlohesnAadTlRABydKJ3g8kZznC6/UMm6f9gxZ4XFaLsV/gsM15OwELmLwdN\nWWf3bVlg9Zsdygtqs/hnmZKnri00FVXtPwFk+FrgUS3gGdpjNdrpTgvVkNnU\n55N4G4jBAb3xBJ2ciUmFrAYEJ4btBxOWjzIWNomRCwBOvVNlT4dEfVQqGBz2\nsUN6zLhf7GISon7lyVntfIuzpWdXWPNUwhFH5I9pyOAlQ7uIxGQ6+G+iPCxK\nmLnIZqeLxAtp3jjLGlB23xAT1U9O2Wa8qujbEsBUO/yIz6WjaRlnQZMq5Rlx\n4ZunwUqOj4RUVvkcFpczQQmwjZYkCAEffkngqpEgqAq0I0yxiZcvdiWaWUZ+\ncYYLsf/iQF8kKYJ2XyBavHo+5B+gCZWtJXojZRms8emr3BRt58HnewGLZWz/\nhc8OE0zJnLjEP4hKAqxPEDQG+6dS60qprxoQsah4YEnEbjJt1jci7sBQD2E2\nMkxo\r\n=pEfb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"1cdac443f096d26deadbfe4d453f42b5a28d79db","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.0_1567593591156_0.1833584280282643","host":"s3://npm-registry-packages"}},"4.2.1-ensure-build-files-6839a93c636806ea983a3803936da23113a39e89":{"name":"resin-multibuild","version":"4.2.1-ensure-build-files-6839a93c636806ea983a3803936da23113a39e89","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.1-ensure-build-files-6839a93c636806ea983a3803936da23113a39e89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"cbf30b1ca85ba9ffb134aa97f0fa93d2fea2702a","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.1-ensure-build-files-6839a93c636806ea983a3803936da23113a39e89.tgz","fileCount":46,"integrity":"sha512-t5x3WatMuqan1E2aVD77auus5zZp+6jftzPG38vbbJRECvjD6A9N+oX7mjYMU9qP3jTPpwP8x46oooJ4nbqtEg==","signatures":[{"sig":"MEUCIQDqdBO4FqiouDUBEn0MAhsdYqU+UYh736ZX2qFVAY4g8wIgL9nTm0lFhHN4xD0706hETr3FOAMo85mXSRAwyvzhTCQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":83061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb5ifCRA9TVsSAnZWagAA13oP/j9nsfXh3vKOC7xdbLax\nmKvf0LMttc/2jf0S1k0+WtBj61mbyxG4WxQZMXspTaT201UsXpSvRDriuAX7\nFoQpeJFSaWyri0COGY8K/HS5ShokRLGIflG9WpXHrnm8ow2qrbCgYHkt7/57\nBAg3oUK06IlM7t7+jSzGh2b47Rrn4DJCqKNeALLWYZ3OWtcMY0Cmh79vFGTj\nC4aLXAztxgf33TBCNIUEwPGtGSh/D92oa4cPEee4YNz4Or1frD3RpFmITBeM\nbD+6p3rzg1nSacgH4KtZC3dj91UaUWuhhRmbfqVHM254WW2ACZ49FLtpzuav\nvV+SCca+KTp7F296aaVgO45Pz+4nvwvFSh6jcX+lsx+tgLYb0A8mOScgQP5b\n7Fd6EiAJqv60GIViy/lPtI92T71lLjkZlWtAfx/9cQ9heMXq/Pfzf2sD00i2\nh2RmzNq5zDxDKAKPlax3+qoutC5w8wOJWZeRrzWIKBQD5hFpKu7stH4mSkGV\nGc1D3PXLo6mkZXf2jG6K6dGrFDWCLdAlilqJeg9hV1A/vaMr6+agL5RXgK74\noSoCxdKU1H5kBWmT/fgKydWEHVy9C3NZj55Jvfx3T+clWa+qgP5WyL6Iw1ut\nlS+RWQZyGvE3ZI0awkY99Zfd5T6yKqipXI4lFyVCNASPybPwffrH+iD7yQD3\nsWjC\r\n=Tqnu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"6839a93c636806ea983a3803936da23113a39e89","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.1-ensure-build-files-6839a93c636806ea983a3803936da23113a39e89_1567594655185_0.8828031437324584","host":"s3://npm-registry-packages"}},"4.2.1":{"name":"resin-multibuild","version":"4.2.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bacfcb14387478e2c2b9ef84460bc17d0e3a8e2c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.1.tgz","fileCount":46,"integrity":"sha512-XyiZdTCKLhG43b2l11SfffKKaPekjb/ByQDZTeliGTBALKsyUWTJL40+H1Qz9g5vtTgKhSADSoK5DWJbO5bGMw==","signatures":[{"sig":"MEYCIQD45zTt3kSRKwmTbXWUZTIlI4giLphPOT4y+UySm+xZdQIhAOr600ZAdQ8o2A9bgFrGosiQNfwgrZET6FsAOhsuseJc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":83001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb5lKCRA9TVsSAnZWagAARYsP/RqzcsuetG2nLv8HhM2u\nYWaZSrvrYspCfkxJiSa4fkXzxypRiHBkBEl/ISvDgmpNd/9QrS4fdC0oylXd\ncA8Az11ZUe/5vcWZM25GM4ehHiqPWArbkk/emNsezsUGopWBe62/Eu4gVqyy\nDfR19AdhHhMTi/p/CefyBxYDypwFnCxeH56w7a1d1QLsoiJEnGpEWJVXr9+U\n8u+XLAGkXTbEwRNfyi4H86/byONWK6a5zVXgALNh+XzL+rjWOtJfaqnACyKb\n29EQWbJuYpIuMHnb6E03q3uBqYUm+kVUPRos3aWCnBltIlCBJy1eqRgu8ebC\nqzXv89rBceELJ5ql1xhk0uWgKu1KD3N7HGSHjL0CEw17k/l90JybJW5IaSsQ\nyjZBbliRNo4i13/riQiupgbpv3SltqMwXuq2yzQMVCntu+ASWNSq9M/nh1TF\noakBk17PA64spBPwCEWZb/rlYPETaKjVnEMSwd+El3H8rsb5VD84wkDEO0NO\ndA0XT71MTFuK8va/j0nDNXhgml5EvKWAITove6wbL6YyayrWVZGCrYkYpcwF\nt23jhbyyQ3XBcgvaK87jPAhfm8Cw2k/yuPMSqqebGcFuuQmEM8P47MaKosXZ\nRArej+3aJ7Kyl+cHOoaiqZxT7W5yuglJt4cFlw5DRDcRpXuXSX1oX8G+ePw8\n3BSS\r\n=1auv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"dc4d150f125bfaa92c657ec851ca8ebafae490d9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prepare":"npm run build && npm run lint","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.1_1567594825985_0.9792816570628478","host":"s3://npm-registry-packages"}},"4.2.2-dont-build-on-npm-i-87f387db0e60b9682306e7b19e631b40187f7802":{"name":"resin-multibuild","version":"4.2.2-dont-build-on-npm-i-87f387db0e60b9682306e7b19e631b40187f7802","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.2-dont-build-on-npm-i-87f387db0e60b9682306e7b19e631b40187f7802","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"2a7566afe5ee834189aa9f740befa4cd7b267286","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.2-dont-build-on-npm-i-87f387db0e60b9682306e7b19e631b40187f7802.tgz","fileCount":46,"integrity":"sha512-dSnuAk3A2VqPS+zO3cAoiHKr3/yqqx0cTWfwq5mksEr3JsWDNDzJJWpkz8K66PcI8raPQyp30jIM9XLAvoYRBw==","signatures":[{"sig":"MEYCIQCNiOMldxiAjDRFwiwdUuuZLzopBiwNObsAW8ZlS+L12gIhANs5B0OXQgwim+5yZ9RW/KQsOcP4YRoBcdhRnXc2l690","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":83175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb5xdCRA9TVsSAnZWagAArz8P/3G2meb4WA8QI1eU5k2r\nDeCcD7XsHzTF3NErRbRuMvFuzlPEv54RLJUF189O1Ni9ApqghGIMiu6Y7AGx\nE3X1prPhRHdQWPi/QiXthXkdrU8BtyABXujt28g4vLmba/K4o52MSPP9hUwp\n199Ox3cWB16jVsqQrW27jD/swAInQHAfGdCfxhjoo1E2USuE2S1WMLIRaaDI\nS/jXpkQsYUbZ2x3QqLCL00Lrj7nCj6i8MLwhYqhMRl+ojDdD29KIB3MIln+F\nCZhN4dNPj7iPaDH5n4/j4zKeolruUKx25lPBVRmJXclvQz6Gf9o0sAG8S9zH\nLygnIh5ChgC5C6eLekkHGfnvusTwjubN2U5yVehmbm7JoUBAVkWtEh3UgJS7\n60pRIxvxrz82/a/VUJ0astiwfzh2L8GbUy3KkfhVBo0TLlw10S60z0Z68Mo0\njT7n77eyv5gCEmULnUHuG2vXB4gPZNWZju8rHWyy0Y8/JUYxltGcWKDmLRhA\nSwXDdAkte/UwNgXhaRWRlk2DHwp59jGFGWbA7ZXG8l0Jm5AtJaAot/8FNqMv\nnk7IuSIyOJXbxRrWyKBTvEH3YR/65O4B5ROxLggvKnaoTFWT61MiSAcI08jh\nOLByrtbL3PIwOQq/g6ZkuHzwxR6rV/UBSiBD19Z9qmXISMcmTIGfKn5SW67H\nOwgc\r\n=cq3E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"87f387db0e60b9682306e7b19e631b40187f7802","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.2-dont-build-on-npm-i-87f387db0e60b9682306e7b19e631b40187f7802_1567595613239_0.12319206602326349","host":"s3://npm-registry-packages"}},"4.2.2":{"name":"resin-multibuild","version":"4.2.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.2.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b2db3cd401c5b82935e1ea561417f5142c2dd7ec","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.2.2.tgz","fileCount":46,"integrity":"sha512-f2DbgQjDMzb8FL9yyYvieXcqPVQ6kKb6XCTsvWwPgx/mbZYfFiIy0Ythlo8FVGh4/DLR6mo+X0QHLBZZ3ZSphQ==","signatures":[{"sig":"MEUCIQCFkoa3RKPBFW4iFPeikJqHt5l3uEJRaiL0IUUAs6s7nAIgQ5ARKOFbAKJjkLOOYWL2iSG0Jx8T5pPLuBJmNlYkEB4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":83114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb6wZCRA9TVsSAnZWagAAdg8P/i8drhcTPoyZr8Vo5kk5\n72skkcx9yYTUH+Wt1384G89j88XvXE7p41Ozdi7AFNC7cTshkWy2zSib9ACA\nsjmfKBa5QDeSlOWA/p0+YjLzKlzU2Gp6R65SLDaoGhSdqb9JMZwPQgbsLnw6\nJ1wqQK/vIEcQepIEv2DVqS3RcgAP4fIs8cXmDqjeXJBnGcbYfkGlBc4zjvgq\nnFclkAf8p6LvcL+MBv+BIiFBDWBQsX4gqYApDKnOUlmV8Wbr+Znw1F06qM5N\nUMdsGMmLEHt5zAuToik6TIN5jVi5QIuiYp/zQa5szOwBCjUj4jCioe4dfm+N\nT3kOvy7cMIvNUjJhCqkPsVqKWPA+sDFWNTX+vmq+DwKNchX+bnNEilpthf9x\nMbSq6BS+mgVIZvuaLbOzcaAHAS2OxWv129e/6oJ5slQ4E4Di5q18XAh84ULj\nHi50wlE+hMob6MUlDWyzdvsuCUNTQ1Qo0UBLOFafGbjsaFG14pO9ZspNg5F+\nzvTb0v/tB3RYqjjFYEiAp1Pj4Ebiigyd8+1xNG6Jj50LG8A48mN6XKmozz9B\nf4QzZ8Wr4ATe93Ei6yDGsWwfEaAo/5VreXj6m2EPBeyk7b4UHeRYFnZO3Vji\n224u6B6/pObXfknJUvknDTYHyq9K5iC1awXZrHk5yHIGeVOv0wka5Bhi74Xs\nRevt\r\n=XsDe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"c7559a5fb38ddbfc171690df58b35daaddf72ee2","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.2.2_1567599641217_0.7080909890109801","host":"s3://npm-registry-packages"}},"4.3.0-container-contracts-669bae9604214d259b937e8c5bf4107e611328bf":{"name":"resin-multibuild","version":"4.3.0-container-contracts-669bae9604214d259b937e8c5bf4107e611328bf","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.0-container-contracts-669bae9604214d259b937e8c5bf4107e611328bf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"d7123eb46dab5f14b0b64cd0c6d7e95a0489dacd","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.0-container-contracts-669bae9604214d259b937e8c5bf4107e611328bf.tgz","fileCount":49,"integrity":"sha512-FkBiTtdMALBMfcIJvvXguPsX/rAUrTlOsqJ+ckdn9zAoT9GovMNYXK2p+g5CMHQpZPeccLv9QEG/mq9cLZ+I9g==","signatures":[{"sig":"MEQCIBwW8XbPxHoX5aaCoF5uQeL84zdzxGwvwvx+cPGYgm4HAiAkb4NS5XKHxGnNMSbnceOhRkz2ax96cs6gJCs/TdG8vQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdizzACRA9TVsSAnZWagAAXdoP/2b0QjUW0QcgV0CTd1+T\nJT9uvENAiHPuj07vy1E7VJ96pmTeT0gsI28tb1JXUHpRmfxpw6qi3MzCNk/p\nL6ua+gBxPachnCGTR30D6Fiec6gb7sBkEB7e52plpfmzP70jiDh5sBcr4yFN\nVkyx1ixMuG9SAxIZJKnql+j1DEFRfyWh0spkRDSHTiIiNjo+T7REZv1Lj+HX\nmj8DQt7rJ6VzhPYw2y7U1v5mX7O7Oz+35WMuNj56F3xZMwfGIUh7t0fsWvus\nwKC6PuVCCXqCVblVG2ZpJkuvNss9HNrcti0zrGdo1MSJsWq5mo9O5Up2aDHq\nvE0u/XYV8Wd0M1jH/vSfJXJ0knBTgBLFGDWD8DLai6eAIOecYfplLzE6sId8\nBpWmm23ECL+iituju8q46so9D3GSzFU18mvTSd6MO8rWtmJiSUuP1GV1QHX3\nbZntimC5WV2vmYHvvGP5letuk19TfWhqC80pdy8m6UANggw47wfGJ8uXYxy9\nlWs1KtrOJnocfZzy9rbHiArRZFLxF2S59RahbknqqyryOfWxm6oX/vj4FMxC\nfZ0Mhe+28BgaLBRWZVoamwUGXL1yL85ITem1MsbZDpiJLPJOmAA+/+O0/k07\nmKCORAokPSTPc2RwXCjOoEN2FmGTgIQzZcOwCpBqmQKqI7AA700DGH7qfKxC\nT+pi\r\n=67KJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"669bae9604214d259b937e8c5bf4107e611328bf","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.0-container-contracts-669bae9604214d259b937e8c5bf4107e611328bf_1569406143517_0.9398489616937868","host":"s3://npm-registry-packages"}},"4.3.0":{"name":"resin-multibuild","version":"4.3.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"477d7d71cfcdbc708abdea0914acab879d75420e","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.0.tgz","fileCount":49,"integrity":"sha512-mPErF+6Cn5J3z20Beu8Eu8c4slcB5lD2D8pXDeFnfEZifXedc6WJUwPGH91SZWKAZjkdaVQeJ7gc+AoxUmiSPQ==","signatures":[{"sig":"MEUCIQCrP7kNGMKCaDax7w2NQthpmvGLk/tPBZ7n1LkCoTvdmwIgUsham5yDKZzwTxWMVZXvUhTYc3Lg2doPXnixd326lSw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiz3VCRA9TVsSAnZWagAAHmwP/jYkCP2orhddrm00Cqeg\nPxqgMA9H63Il9KNfsWwS7GDNJSxcNmYjymmay+aS5S/IRAPQIqKHvtfv7TM9\nPv6i3o/E0nYKlgqqVX6ZV0lyQgk1Xi82X0XQiEEHqJ4WK3C3/A0XKTMO07tj\n/UzHW/oETo+wt1SYMfI+xszJ/BwIeU7d2X1CQwDPDrNHwM4ytZjoILlBZb8b\nCTfD7KtRU2BR/HEwS1EMlPaWog6uWvOve+11VLri21XGeOuxzQkv6F3fplSi\nMLAUyFlMJqPoKZ/qQ+6I2pNZZ8rrUVAJiW9Ktms6XZvz+7Vt/Yn4uLoV/zw5\nOM2IaK7xa/KJG4y4EZ6LprKSIhOLhmd/hS5+4qWmPVtzTN+kpc1lSfWAfdL2\n1jvBeSWhfOW5zBiQLBH1zVCpnvesmsKAGgyjTNgaJj6nJDcWGfEgdortHqD2\nP7zYQYyNRhsxWkl2f6Rr73N6WRDxFRBMZUXiPeKFKiveS8+Zs1qlO/Wzj4XH\nlhlgWTLx635ZrOIvZ+qbYnwSwIbpjDYIkpScmJTlm8uYI6YioK1TkYACYdCW\nxvR/jnS88HJB9mvkmJc1tQ5X8yFcdX+QydtlwXAw3qol9zP/Cxr642PJrEok\nKMJAkEEBZbMrF7cV835Jmiyc7IG4KeTjrlCeLpi56wBylE/ADONlTsJJpgUn\nkxD1\r\n=fTP7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"ba84c0d08b100ca2b798a95ebaaa8ede141e9fb4","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* lib/build-secrets/*.sh build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.0_1569406421226_0.1826520372633471","host":"s3://npm-registry-packages"}},"4.3.1-secretremovalerror-2-ea5ec6d7ef5a19595d92908e0c2787002021e6b9":{"name":"resin-multibuild","version":"4.3.1-secretremovalerror-2-ea5ec6d7ef5a19595d92908e0c2787002021e6b9","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.1-secretremovalerror-2-ea5ec6d7ef5a19595d92908e0c2787002021e6b9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"fa5cbbbe4db07877423ef79c5f2f32e2c3aafdea","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.1-secretremovalerror-2-ea5ec6d7ef5a19595d92908e0c2787002021e6b9.tgz","fileCount":47,"integrity":"sha512-irfSvMP07a1fpjimR5RZ1JAea73w++XpxdKy6ueVzmef1vFxdaRdYyXIYKyhZa97DPh5D7U08K8/wmJhRhzkAw==","signatures":[{"sig":"MEUCIQDj+Se7SV0a3JeR0RrM06uE2tDaBu4bNeoZGLIv1gE9xQIgAisXVOzAz8LUymAToPm0+//eoKexZ0okzoAk17D1uSc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":88592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjA7uCRA9TVsSAnZWagAAOvQP+gNwB31oAFhgMfXrydXt\njZRtcwagBpmegCrFumeAA/0VBcnIzdXwWEbkL2D5fwjLawYt52Z48K/ZBzdA\nQqQiWZwF+h21kH0z5ELnX+cs7LU4eR0YCHL+udOcNPHb4CaJarex8WexjD2M\nRi1J6GiM1Si22QW/wwwuTwU5msHDKyCuoq1w4Romf9UCLrZHRJ4mq5zb5Xjd\nRUaL7z1cqszNmKkW7MAnJtPaVMfVBBep/KU0QduRKKNOivCoJgjyEyKAbKYB\nK1EkSUGyk1JdlxHslIdTaAFUxKEbBoGOBdUyltCpnLVS1rOBJfrvw/KXfBGn\nGeFglKWH+R8FcVDK1//nlf6HjMFSQ2I3h8K7Spy0H5LQBE6lM5CWLa9RuPUY\nt5TTUjpXjorF6Y6mogr/nyxkaKVTqRbU7ioItLHYlillxJ5T+b/TjU2MarYx\nMa9sH+s2KUK7G71VnweFZXatEc2neW35XWPHofegjObOYLpSEnFffb9jOiyy\nH5Q6WijzK+5GnieNHU5C8915jN5zKCUzSToYMvo1vVxKRodaipO8Mf3q7aMC\n8WvO4ECIvlgs68ZVIcDTQsxD5ItLnecSWtu9UqH1j1DWDdsvStGTyz6s1ap9\n/mCJAuXg6TV/UEbJ64CgJJFg0sXKfSPQWqZbcEaa9yA8inEXc3linhR9w+O8\nMaJK\r\n=Ojf2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ea5ec6d7ef5a19595d92908e0c2787002021e6b9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.1-secretremovalerror-2-ea5ec6d7ef5a19595d92908e0c2787002021e6b9_1569459949403_0.165228075432579","host":"s3://npm-registry-packages"}},"4.3.1-secretremovalerror-2-2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9":{"name":"resin-multibuild","version":"4.3.1-secretremovalerror-2-2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.1-secretremovalerror-2-2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"898299fa8718b13f3d738cf6a9177c54b1973db3","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.1-secretremovalerror-2-2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9.tgz","fileCount":47,"integrity":"sha512-jLJzJfIL/mYZJ4DKbOA5Eg8jDOyLQ64q6iZiOL1o17A6p8Wdd4akPgAB1YiJboPSnzyPUpfiqb0G76rjjAkFoA==","signatures":[{"sig":"MEUCIGMez5dI+NHRWKyf8HEcQjvfSLYdgbK71hReAU+cJs3zAiEAgvL9PYFR8N+tc57SMVKVyjN0BsHA02k/2PITlOEOX8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":88592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjBTnCRA9TVsSAnZWagAAhZYP/3q1rFibCpYfrnhYlFVU\nivN2Sssf7uyzE9FUdk1mgZ0hiCkFz0UbJ3zPdVBn5YP9lgSi8ol+Ex5tPev3\n/AArIL7Fax3rL/dahLxF5L1mNNlvvruZetn1Ix4JYMo5ITPObkIbVq953SrZ\nvq1vjPHr45+6iX6Hl+VQK/LMNzGW9+yoLhie/GuzdAae8kK0ozzVg+myf9MS\nJZXz7sxB3/T8C8P8qJQvQO1C0wiMqimut6hu5ejdzQqPb/HLaWfJKFNFeorg\nFD76WhR9gjyhIiG7FPgQKZHUX5POXoo3j05VadpEr4bd0i0rlQ6rs3Yd9/w5\nWY3GUC6iaf8oVVY2jwmJJ6t3Gt7V5gt61fQin6MGVNUEL+FGfTgBwO+eOd92\nOd06d/gnVOf+aREIOWtF0hhM5zJINNCB92nzQDZyUSuCNahfOG29PVTkLT6Q\nh8hAqeCaY62H0isPS3YjPXQAUFwEP4piMVjjE5GoDlTlo/R4GiXp9LXONLVO\nYiM/jYucgONnDpXvMgswWa3JsE/PtvanqNFByaICLFjnF+dxptHdrHT/WRU+\nuBBePleMU9eTzS4RpbTGFDM2E9Eo5suMRXixydrSNAEaSHI5JI2cJzClDMUV\nap1W9i1nDur2zn7F3oRywyHqW2FM+XPZzghdZTmIpv7ovnWZg2oe9L+C6PWl\nTbZL\r\n=aymn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.1-secretremovalerror-2-2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9_1569461478647_0.042993818743170875","host":"s3://npm-registry-packages"}},"4.3.1-secretremovalerror-2-d8ad649622d51cee4da990b8c409c52ef1ab9774":{"name":"resin-multibuild","version":"4.3.1-secretremovalerror-2-d8ad649622d51cee4da990b8c409c52ef1ab9774","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.1-secretremovalerror-2-d8ad649622d51cee4da990b8c409c52ef1ab9774","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"81f4d29881f67bd1302dbc20c434ee7435fe9cd7","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.1-secretremovalerror-2-d8ad649622d51cee4da990b8c409c52ef1ab9774.tgz","fileCount":47,"integrity":"sha512-YFte76hXJsjigPVQT6e1uBIJA1dDkaDb7CuD8bJu2EvkdQI1sMz24BE8guLULCPwblexsVcdpwKz7T+rL/nogQ==","signatures":[{"sig":"MEUCIH/V1zY/hHiyWWVZCyd66OFLLGHQ4kLO4ldffRpJ/UbRAiEAtRx4EsAsNnSivG4nYaMJcqVgJDEn60agKAVPJUyBr3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjKx6CRA9TVsSAnZWagAA8RgP/iDUAX8w8WFFmAMgK0nQ\nvvy0KgLdD+Z61ITVAQRPlUpbV/Vs/A2OgodcQWX0O/Iw9EjJY75hYuLaywpm\nSnKufGrQS+11+m+oYINB89bHqLsWJKHVSrFNUdjaVdcujVbawfg2qza0x3ed\nWKU9hKU3DjOZ8cxeP2ExH65XL08qGYeF1ESvMw2PUlnfLToL0xV1e++ea3XI\nAq1hyXKb9AcCLUpUDFOnQ55KYv6NMKmlLC1xv7D4e+lU8QGx+ajzqlWSQMnc\nPLGJJYtJD8EIiVsziWR7Ead58d+N/LJ+RbtHMZl5IRvVne9VXhzbIWHhSw7Z\nvxZfiiqNs0k24REYUHOr3AKiaQ7yuhaL90uXHh91zXZlOVL70UWOQTiVSf2p\nU9/dPNiXlAJcajDyVMCZaxFIaejeT1grxsv7uV9hgqZ6LQyKVgv6+8llZJf7\nRCe+9k92N5hfCQZmQJgBuAB+kEK3ZECCe3AQn1KdsGTPenQaj7fIUMbbSAf9\ndKZQNZxQiOxd3oJXXpOnVA/Uu7IgaF1Xn4AW8ufFZybCOJvIGIFQxN9XL8sR\nphUGqQY12BI0gtDKCdfFS442/hR2EHLP4Ou3R4ry+fnJvY4+59AJlZ+pbMuZ\nMPp63WdxzpK9adh5H+dLNXyp0FF5cBC1gE1xHunsUF8/5ttlWiCbUadN4hNC\nT/Hj\r\n=wWdi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"d8ad649622d51cee4da990b8c409c52ef1ab9774","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.1-secretremovalerror-2-d8ad649622d51cee4da990b8c409c52ef1ab9774_1569500281734_0.08803324612921104","host":"s3://npm-registry-packages"}},"4.3.1-secretremovalerror-2-72134af56ef6078c0ee3694db8144f7810ec4a8a":{"name":"resin-multibuild","version":"4.3.1-secretremovalerror-2-72134af56ef6078c0ee3694db8144f7810ec4a8a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.1-secretremovalerror-2-72134af56ef6078c0ee3694db8144f7810ec4a8a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b19cc30aef67d77e478009374cfd6450176a5a67","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.1-secretremovalerror-2-72134af56ef6078c0ee3694db8144f7810ec4a8a.tgz","fileCount":47,"integrity":"sha512-bKK7xRKMKhcQZjTcpvvuMJnEhAH+Z+JdqMS8FyUUknhXe8tNdTvbWaZ8eY0cUXE7Tq6HVXYECdIEIlUEgOhMdA==","signatures":[{"sig":"MEYCIQDbyjjZDAbF7VhMTdAKaAa9jj7poSI/xai4jaQ5RQb8VwIhAIYp2LmtFH/QrAiA/4Z8QJ47gCYxj2ALhxZwx5xS92Vj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk9ZpCRA9TVsSAnZWagAAM+cP/j4Rg3nRBPAuV+VlOBYr\n6CFyPXqrvQRYSRQefqAN1bL7I+uWalD/XuZAuCM03iImnvvQhph5xLPvVk7V\n1WAFe5J4g9beOR5j3REc8j3sAg1T6he7v0DFpjkkvXpKTQO7O8/yONBmuG9F\n9ORzFEe6txkhXCR9pMM3EkGezLtBSPvJAx0ikggvHv1eH6WsGKMi1JThfUW9\nOOYccYeTFMBFekeYThvfV/o4pSIRNtAswphqLZf0CDD3axew3eigHCdq0v3V\nY3lkamWkBK3Wl0h46Nan7w3KMPxmvsO8MmYDzIZ9LwsshM0q7gV/UtPkJbdb\nv7jJuuYJk0j3eq5UvGg3xjcU9oAwm861d6U3db8n7XfT3G2pVKXsamEBju0U\nzB5SGnn07ykzrcxjrEMDEwOV8ptjJXG15HDGrdOoYYzWWChB63/qe7H5hQTZ\nr/Zl+2VR5q+2L91xEP4MzM7LwxQVihRss7fNatFMxsG0A297kJpFOs/r4+Jk\n1wf5VWyTwbEpbfqPq8YUG5PXIymSU0djA+qbgeAmcfuFROMRVg/ttcTZnYiI\nqgAY7107OLlMA7JU8KVPaOo5zsXyd/Y+4ndMz5de708bHKEOhmGwYt3iM/aD\niKZTirK+uR4Os6FWj7IbsTW4AHto4xF5CjK9kPFllu7dGra+IUUfB/3OpUC5\nhZXu\r\n=owXh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"72134af56ef6078c0ee3694db8144f7810ec4a8a","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.1-secretremovalerror-2-72134af56ef6078c0ee3694db8144f7810ec4a8a_1569969768627_0.9033191725955514","host":"s3://npm-registry-packages"}},"4.3.1":{"name":"resin-multibuild","version":"4.3.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9b8e94e3fe9599b69a5eac1c692822a820e3920f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.1.tgz","fileCount":47,"integrity":"sha512-tpocIxmIRvMGMMUF5wCjy0DcZS2jIzKZ65CtMoIxMcV9Pp25JjhDyUqIVEpC1RO6I/C+pHqWfhSyLiYj9B+rYg==","signatures":[{"sig":"MEQCIGqnHhDYtWsfviWroVa0CjqdAIc0boL0NwMZhHt9m5gNAiAfHihJfRPMeaJxw0FQKNqxFSBFsc/VwKVDUTjhrtER1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlKLCCRA9TVsSAnZWagAA8coP/2BSHChtObv5/lx+0p0/\npoI5G1JJz85eCgjDAszhkCkB8FVy7S7DKz6nOBRE+hodJa+FPfFXwdXoWv7Q\nNAMJsL6a1eQtjOcDW++jRzEoZrPZWs1+LJKK2XmSCKokMwm8bkd9lJUuQLD7\nKnXlgQ/AasoLBdZg1zddQ0h5PPmfQj1lVHJFXIv1KlVqsDdD9IjaRyP1H2RT\nEy6ZWgm2LW2MmZe4W+4PZNSsWc69Hs8EJDJIJutRKLn7YLEILjglGRL3ZOLk\n6rmpGyxKsuHFyeVK4Lc1IxSI/6aA21ACYxAA7a8bOfx8dgbW0IH5AsfWylZY\nG38dEpWoq5KBEWiiDd+tsv1C44yZxPyQ3w/LppQ4CymD61QPUwlClFKHROeC\nR0iL9BhaSi2eScyrDUQWc2QOrvsBsoRsK6JGfP9NrmZXJw5SSNhozmrp+gtF\ntrP0jw5FpfZ8xu07kaWCQZ0lyXzRK9nFj2edMLqzoQIYqIJ7b2RztJQVjAAL\nZD/y+aVWKG4Fr/RB8SNEwQO4OAmK5OQRyQQVrMcEKAlCvNePvsqtg8qnfIsk\n7JKCpBhu0dXPrsonF/DWrbVJtqcM9MphSaMF+uqwBZNmFR1atO/NMgS8lbAw\nJffHYsF7n3d84pkv+UDWKzRvW2pqYJqlfVJjQvEM/2elaL/Rb6+DEml+RzWm\nE0lt\r\n=rhgP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"a2a80c191df1d08fd4c815888583fb50edc1ce8b","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rm -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"cp lib/build-secrets/Dockerfile* build/build-secrets","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"cp lib/build-secrets/Dockerfile* build/lib/build-secrets"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.1_1570022082192_0.591822750592047","host":"s3://npm-registry-packages"}},"4.3.2-64-fix-windows-paths-1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4":{"name":"resin-multibuild","version":"4.3.2-64-fix-windows-paths-1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.2-64-fix-windows-paths-1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e3e566b3caed57d733a1375a70772d6818b79c15","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.2-64-fix-windows-paths-1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4.tgz","fileCount":47,"integrity":"sha512-N5+9N97+C0CZGAjEFA513Fx6I/tR/kOpAOy6CA/anYGZQyLdPeL12P11HWEe1XU34u5fR99FZffwbWo1SejPUg==","signatures":[{"sig":"MEUCIFNWptmiSPBQHNIAew9q63MQP6FeDcN3x62JNr4lPsiRAiEA4wXrL3H3a2zs5ZWqdlG35yxgrxJMPATHwd5oRVSNIFI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmp1nCRA9TVsSAnZWagAAJqoP/RSpT3rtLyM/3GeaMdfn\n7UH6UOoxQnYskP5mlYSlJZWKWxbzaSazETYFoFzrSmHEQEz7LOh4MSNI4bgM\nIvUdwQIaGy36zhyQScSRW2IYyTj5iSxKGsEvw+aqY4l8fHkeGjy2bguUT+mt\nv+MIBFFfVWKHjwYcmuPtmbl5md/9AGh+BD+vE9DWtSJ2ZqVJ5uSkP4HHGy2t\nluvkX49sYtFtkyL8mcAur0JsUVuvmFpeeTrT5ilYMjbgRRVQ2knfXevNCCO4\nsQZOIV0odJB/1+PQx+VvnEasukFYHcXHy/mLFzD+AumCmTsZEya6vZ9TE5b0\nK8Ytqjckmuj1hid/REvd5jLrCe4B//H+npoglv3UEr6AyslILNRxlnJhAXG1\nSaVvLxaQsZP9S7hKBNxZtCYYRHXt8Ta34+WL89av0V/vGJ6MytnMwHFhLf/4\nkK9bS2eJ6NNwcbgnwiptV8MSJnyYd7mNOIpnD7m9Ybbrw/eay8fV/+JOITNq\nqzEl75g54e492Wab0vb3BjZYabYazPAC9nDPjQDShPmtXQlDkq769eYPi9zO\nyDGTL4Ko2hOL/e092R59XyVhOApPn8aL0L3HogpklUfUup9SscpcZYKvYnuy\n83pGl8hfxOcVUwjRR6dvg1W3h5jORV+nA4Igq7KzDHUuK/y1JTwdmyMwGfjd\nAnt1\r\n=tXzs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.2-64-fix-windows-paths-1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4_1570413926671_0.16177901540528983","host":"s3://npm-registry-packages"}},"4.3.2":{"name":"resin-multibuild","version":"4.3.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"04ed91d2cc70c8d54e4278f4c53b7fe06869eaa8","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.2.tgz","fileCount":47,"integrity":"sha512-ZBMT9AJ6IMkXW6VkQB4ZdNTB8TCpJjiroLleJ/Gmskgjzo/tVbMJPWimpYcpr8JrFfXPn8wt4bGuoVy59CzefA==","signatures":[{"sig":"MEUCIQD2dIVKStAHrNxhHyqXR6u9p9wC14/wzeArm/sM6FWEDwIgItEgemPELLtJfVg3EosCKQfHNZ8Hc853w+1eMB+81Q0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnLeYCRA9TVsSAnZWagAAZBsP/izOU66cg4RuRz62aYYN\nfYttIJo742P537cQu1G+uy4oEbrCeMKcaSvcHNIb0NIhdx4xtD81qNAza7lY\nblk0iLxwKT+oNpxfX1xpZZ+KnXVlM8UnYA47Jzes8GPN5qVWWOHxLBFL6UPZ\n8M+7Zg7ztVenKeBY7hP0y20mESfS7/384LmnWcKQyR8KV4XRv49AlRqjHwJu\nJyMTNR1ocmFXOT8+iR0F72z/dGuTOSFzliuqfAVhlgwd6texgf7Tcs94ZhIj\nQpS+C8NARTEIoeeHYjvzSHkNyyxclovqIgXr1xyI/QRFtx0JctFPIQiOvq1x\nPvHJIWArhIHsnXPETVFXTwur8zTER372bzYEvJBoW4dpAWMvjCVOONe2zZqw\nRA4psYZ8hRG1fJfJodwdbW+CcP2FN8aM0kHP6DvhcfeV6kE82i1/Q9lUulaM\nd/FgKlRkUN6YVBy1z6Wz9plAVOmlVpHobr3E41CuJuFDuIdV+7zh/lJxNVYy\nbSQBl0FdZ5fL8BNFVtd1bZVEIrEuhxNKIDqQ/8LjzvX1N7N+yO7VKbepaOeF\nnWF0Ozx97HvXkV1zn2Rv8Wxvwzo25p8kNG7IAgNuXH812Vwi7uMImvHFDtW9\n7qumF1AAdi6hDhAvzGnecjXQGeCh0H5IiZyFCdlvJRZpGkE+rQlCGV5SqEqa\nV/ua\r\n=eyRz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"0748c3ed95f9e6df59d81bbcf06312e508d7a8fe","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.2_1570551703455_0.8998242223230146","host":"s3://npm-registry-packages"}},"4.3.3-deny-slugless-contracts-85b9a9edacd6bc234538cde53f27702edec18c9c":{"name":"resin-multibuild","version":"4.3.3-deny-slugless-contracts-85b9a9edacd6bc234538cde53f27702edec18c9c","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.3-deny-slugless-contracts-85b9a9edacd6bc234538cde53f27702edec18c9c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"0924625fb65e4b83a5dafd2af9f91495c849c994","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.3-deny-slugless-contracts-85b9a9edacd6bc234538cde53f27702edec18c9c.tgz","fileCount":47,"integrity":"sha512-hFvPkK4d8GHY01VaA+qGq0lx/30CM/QMCHZzo6LtmO88M2WtL6/Oahd4Mbvyln79ukWdfz/BJKP1e6b9ifDDgA==","signatures":[{"sig":"MEUCIQC0doidiPOKgsSO9dpaUmiRiUh0dOGkkmH0DDNkN6IuGgIgRpCzIKzwwUMSsbVIWiEZVnMfFZHgvqjq80+BnUukAc4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwrUMCRA9TVsSAnZWagAAwBYQAKH/BYnrN8ah/RjCcfnq\nZzm8folpu86JGByojyJ6HPqeaaEq0wFq2uU/WuAw8sQh0Nl1prN42ixUEQcX\n5FQhlKa5McajvNR2nS5zwIaSFOLn2xa+k9UuyhMWqU9KDCOhaDG5IacuicQo\ndn3CqMy0cyvOEIkHTf4aQhZvsVqpnubjAfPUB3HyAzU53m4ADTVW7MiyNzeI\n9Uz5KNtdFAEPI9GkcNmaVJXkyA/HkCa7Zy2TCH+H45ptD9ZRxlxu4UGjdUnk\nkNn3WpEW8Ie/9SmvmgoMRDpq5ETMht+X2ea+isiWs0PvjxtlKcdH7eVUvJMR\nyUSAwwWzv5Lytx8AOlo3knnrnznGK8hKVUkb5SOGxZxs9688lbz8LaHz4YmE\n4q0Lxf4/HOnHculD+bVvRrGHoJoH0d8tDvrSV9B6gSryCR9mMRqTzovTybih\nE92HsD9maoiRmoFYmr4JwE0AnXY9AobZDNd8tlSPIapbVD8vkG4S4WVc418g\n2t5w7xXEyzUNu+KoNkMkSgvbrtME2hCohlGvdUZ9n4UDi7DukqaIViEmeC2W\nFf+wftdppGKvEiQ7JHs/8E8JMTVDMdjznGpCOd7cr5Zh0pd6VkzaMC48VPHK\ncM5bIQuZd0pI+4wIFe959vaU8qkkVIbJRv6+88HjTOCHy2OcOQrulxmsGRRb\nMPq1\r\n=l/dP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"85b9a9edacd6bc234538cde53f27702edec18c9c","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.3-deny-slugless-contracts-85b9a9edacd6bc234538cde53f27702edec18c9c_1573041420432_0.41005320298802594","host":"s3://npm-registry-packages"}},"4.3.3-deny-slugless-contracts-c9ffc2de71c66535613d8cbd0d07d685937b5126":{"name":"resin-multibuild","version":"4.3.3-deny-slugless-contracts-c9ffc2de71c66535613d8cbd0d07d685937b5126","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.3-deny-slugless-contracts-c9ffc2de71c66535613d8cbd0d07d685937b5126","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"106529247351fabf5c86a2e18baa93ce7e7675c2","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.3-deny-slugless-contracts-c9ffc2de71c66535613d8cbd0d07d685937b5126.tgz","fileCount":47,"integrity":"sha512-nZMHdWL7TlEEs2FFjQVVi2WexnlEwliLZivFGtZzZJinLNFDOEIR5rjqh6uKV2xWeCre3cXHsg7iEpITDnwzPg==","signatures":[{"sig":"MEUCIQDmcxOV+P2E0Gy9FWT99wXAROoGnqyhgKhhBIys7LBouQIgUkQ4RJiqeEKkrVSHTVRNPcjZGAmlomtscvTbH/ypHOQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwrqRCRA9TVsSAnZWagAAGoMQAIgMTLRhBNEvMpLapfdB\nZGOqSIVM0jKz3Vy8IgWhzqTmp8QQn7neziUcTdR7k/B0SgBU2D5osDbovnhB\nxFt2JiU93gQLDGm3k1RsO4stxSz67ap3dEBUY9uUmYt7KDB2+63guK2NMtuP\nAIROl1AGnF6RGmyTTsFSUTvv6CDmZctMpftI8xwu5T8ptNhhMXXyOxb+v3vR\nKsW1O1KVR0Risj2vSeklABcGAyntjp65serB1DsDrVHkeppruDEsWk/0iIH5\njIc2C7pl7gQYhgidfhaGlQaeqD3gg0o4aItAnri42K4HMee8ClOzWIv3oRoH\nHC51Txicz+3zjmDiB8WXEfFgZgCkAFMC5SuJmBcT1xy0aLouF2Iii1m15+fp\nZeCf4sbB8x7DAGlvnBxgMhZf6M4kN+jDYcnT4lbpLID3WdybffjF3sVd+zNI\n21yjXmcpOEPxAan6qLBD9BlZR0kgmJQ4Rb3iciUn8QiwDPZjsZ85wKTFjxKf\neWCZanI38+WMpZIHY9akCgWvUzWaXOV6R9Dn3BWL/t+CwozZYbCynGw7tJs2\nqB01cTW2Wo/eMpZFhBV85P8aI6Wr7m4HNcp7+5GE2/JfDYVRV2gGBuRXW/jd\naqAvMn/1bFKq2OM1dq83TFm5Nwut0SU15ZPvrM42w5Bumle+LTN5P++RDQ07\nTp7s\r\n=KSqJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c9ffc2de71c66535613d8cbd0d07d685937b5126","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.3-deny-slugless-contracts-c9ffc2de71c66535613d8cbd0d07d685937b5126_1573042832751_0.6579055086282899","host":"s3://npm-registry-packages"}},"4.3.3":{"name":"resin-multibuild","version":"4.3.3","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b00b9d3933929ded640c736c2a1df9af1b117dfd","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.3.tgz","fileCount":47,"integrity":"sha512-e0Iq96XHigfvk55PiLuTNDl2SOIf5M7VoJZ5JDNSQCSsCdL9ZPckSLaCDxrtGxZbqS/3UjJJr+0D748bo2fmYg==","signatures":[{"sig":"MEUCIEvedOAtoHd5yildYuaGZsP79qtPC7iNgRD9A9mPx6t4AiEA6m8ynqYJH/g98wBv5kpA66ZZBS2o7kzl75kt0fH7ElU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwruFCRA9TVsSAnZWagAAgPwP/iF2fUfT9MuHMVfHZTiw\nSOOH9mkzcv2wKiFmkdE6GpeDmUa1DxIU+i15UD/AuNOULoQ/a7K5DxY6SE9w\nSGT9bbDGUiLXfLNH7Pd+IGcr5y4HlfVbnrB8wsKCY+WnmcjdHj58c/7CyfXL\n1LOAKZWpGElB3H9zkryllhpSQ7c2+0tZhToNVjWO2mhhmFtSmlu2ltkTzPGD\nrRuEgK7eUncZNfxPEsmwfBPDvulQACPc6472SVp93nt+bz26afmYcdO6mllU\niRQQigiPGcAgKYAeyNsbnKxqb3mCFGWT8dNRTDfQRJ2X4MCIoy+Zw1j6ce2N\n1Gowm6bEiwNxYg1xCyYn6mQ9rqCf0lpAgF4jCbOhJspwuU7zND8uc/8pW0I8\n+B7VLeerA92ZXaJwiGiWyIBWwhacxPzaSd2GWrKTsiMwQVA0pSJB4W7v0LAB\nn18bUeHdDgaOAOyJEH1cXB5rbt9ONz705nj0qQ9EuMgZI5gX7hN9ULtdciev\nDeLCabKsY/FFSA1rIRzmioeWt5pOrNtH7QAL4wylEl2+mRedyy+UhcDcdc/k\npIDL+R8TKqiH6scCYQHabcVh+UJqM/VgDwQ7VlyLY/3+tfsVo+CqDr8pjBmx\naJYjlvnht0ubvxJXvsYYQZ048Tt+UFGOo00o6kbTgrpw8HSckiYuGCw+vrKw\nABC4\r\n=ZoRc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"227caca86f07d8a06253bbf9873702a73e500498","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.0.1","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.3_1573043076915_0.9084360965575626","host":"s3://npm-registry-packages"}},"4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e":{"name":"resin-multibuild","version":"4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dc53e7c11fa2da25312ecf40a9433cfe9f01db01","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e.tgz","fileCount":47,"integrity":"sha512-38x0k1sfXsCR92YmW0uiTDwF3/JCBlk+OXquaKtVulKoIIl8zZrx5F8MIDHHKRh5X7HANef68cqE1GG+V5HX6Q==","signatures":[{"sig":"MEUCIHICEzfibkz1vEWfbcAVNq102RONIfDXtLWDgDujG0rBAiEAmDJ/c8Rw8DG1opujSDwp5XCSOXY37q/sEkk4FfAFMeU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1nO2CRA9TVsSAnZWagAA5zkP/2ZmwOWdWL/NegYAxmpE\nO8OvuS/4aPHtjJJTshEwOO1XexlKxtyaYzY/Q8QpzsmeUmekjWOHA9p5WaER\njwVIu6vKCFKp1bv/1BKrXZ4I43jGsT9xr0P3nIZ+CMfDniqH9KgA9VQWr+YW\n4V/Dq4C4tMkrhsYV9YpHeji86DjwJrlhEp34jzP7s+zzfhR0mvSXFTlS08x6\nXiAg9G0Igt0vErUaPl3M/Zp9PBl3MFSmPAk18rqUBSeIKVqz0003Dy5WNB4z\nZx/OhswQBEK0WnfQbPsOtjgaPOQS3BZ3jfOqErKfzD6Ud6/HWxKC0ICcA4ZJ\nXnHH0qQb+ss+4Mej0ZuhZx1pxSa7Xptalp5kxZkxTmEfqa9MUJWNsNp58fAK\nU2+vS+E33ugUh2FqyixmYTsKhXvOqqvuJxKzCWRD+61pRrk26qX7cK86u0xH\nVpr90o+fsht929l8ubsrMc2dI4xThq1ZQlw0+o9AqaPc6PREFaLbkcvuMnx6\nJVWwqBX+T3n3knjTkcm3baUJsdu05LTrv/IhK1HAqML8foNxeFp+eg6XPSw3\nY78tsKChoy9qermfm5/Wg9GIfBF+OxQMDZs10WAeKbOyJPnIS1S+8G6sYQyq\nyXMS9Wi86DyawFaQt3Mb4z+7JOPOkRDdf0Q7Rfu5Em28CeXZomw7vO6pfcWT\nkOvM\r\n=pRJ4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"60e4fbdd969e5dff5e23d0dd51c81b91eb49336e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.1.2","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e_1574335414406_0.029163295151242608","host":"s3://npm-registry-packages"}},"4.3.4":{"name":"resin-multibuild","version":"4.3.4","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.3.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ec4121382bdb7ff2938c8971a0fe24f2a12c8e2a","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.3.4.tgz","fileCount":47,"integrity":"sha512-9CGuxvnEFP3h3kcBJb2UUr37DwTEEjTf8LduVRLyB9PVSp5sq+aj71/qhSbluvPfAUWodR7KtgnNa4ENYKe/WA==","signatures":[{"sig":"MEUCIQCWdvCMFRFhIKKjfrslbRwePW4zo2ltA7i/wcrKAUiUPgIgVRhEq/pfqxYHaa8ac8wBs8kuT83wxqM5dlUbPuaZWC4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89984,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3nccCRA9TVsSAnZWagAAnJsP/iLKplFU2O96hZawFXuX\n7rxdqFDODz2X1e+u45h/OfulUTc0jC3kl+nOynFO+iTZPs05aKxTM6J35DS+\njaNlf7aLFgNFw1tsYHenAMHGlpJPBgq/EFoB69nLGQYDEGzAt/0NPIrlCLeE\nLOjb1YW9C82k+S8j0N4KhW2UEkd/QmUuUmQ2W7enXpafeLLLXkw19fPIxUhm\n8bUWOkI1S4A5OsSPrF17Iwk6P9plcbCIgJt8TgirPYED1+uxXoHz6xVqBqEp\nuMI5RaNPr6lpvW4unfqXmOrF8RRtWL0f9pRYPq/f6pYLB9XGktr1yke85VlG\nK0bb5E+BkIRNH2O2KVIsyjbo9cMouiPpMz6YSb+6y88ZHsfaAFeEVkWJvlRE\n/A+Xax+OsiO/JFKmMSFSDPgKdw3ZTScaZrg6cjWuWHecLkbj5kcfLF/9fGvG\neb6k99CciDTK+dZuXjWiiNXQpWqz9Oz0jA792Z5IdMf4NZkgdzekkWAcJ3uK\ngHFS2ZqtfPHK/YB2zHSjHBsBYTENqPk1ugq3XoJe/vtpKx4Tkw281tHy9dw3\nQUybCBPgcCiSlE+/NVKrE6JNecHUdnLggOkWagbvIMTwow43ir3vaE+qvB8V\n0KiiiCzXXXdQCFyJM6G8j4XT++vY0im6XSD5f9I5FEtsC5+J/TWjzjPhq9jG\noYl0\r\n=Evfk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"26681f9847c3f8aaa3ac224e309a19c91b0d9c54","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.1.2","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.1.3"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.3.4_1574860571684_0.8441765528293981","host":"s3://npm-registry-packages"}},"4.4.0-additional-template-vars-d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9":{"name":"resin-multibuild","version":"4.4.0-additional-template-vars-d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.0-additional-template-vars-d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"f6bd64a8558c9320ae258d7517dfaebed24dbcb6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.0-additional-template-vars-d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9.tgz","fileCount":47,"integrity":"sha512-q8PI3vf4yTsNpmO3iQluf1V403WrPTZHE40JYNaW74L+SWgW89I1IKpAs/awALx3mAVSLkNzJCnuuFutBZ6Zcg==","signatures":[{"sig":"MEUCIQCXzwtVP7nFVVLplBqA8EC77QElTTtRnVTpLfY7arI6FwIgbCDhcOBEvAC1tnXXn2Jp/XLiwSy6QPplmy0EpXFhuX4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRPVUCRA9TVsSAnZWagAAfMAP/RSizS7IrxoQNZKoI7I7\nEKy7hXxQb2KLwhPiX7rxcSVXLKBCYRYcZ9cTYmuyJAEW9npNp9fxHV69Yz07\nvLuUSNU3D+3VckiICcLhg2vnPROarWsWl41ayNjq3mYCpFkK9Y7K1Q5NlAyj\nTCkZwcmsMFSe+zcDLmn5glLX94tSdjUtIg06YJktMWct39t3vQsiXnUYnMI8\nta4t8bH6aYwJj727ldYDQCIECWEkvWtYRFAke++hXH6wqGpnofHChieyVD5q\nhk4c50DCernVhU6N0a0TJEGTXjpAmzyHFTtVeKtag9i2IHYi4TNvqU4qiZMD\n3COoQFnWIbQeYb44X5oTB0k0hP1a7V2hegq7lFI4s3V1bVOxGGw0+BCOv6ur\nN7lBotey3wkyjzyxiSfVvaK3IXn5VqTRuhGbcEpSbdZm0zekSF10GtonETa7\nOOyAzJNFqKqTyTLai0BwswLQHjRELqEum+QDZEdT45LFijoHL1ypTSp/CQvV\nf/2ZqL21b+ZEBx0KqmSx9aa/snyDdqYiQskJGa9F7YH42zyXXPHldpAB5my5\nvXG5XWK5cJ6xxsKvfsHM3HSbA8a5eo6oRWoTPGRKQnWFFwL+bTdcOSjj+Kzc\nMhb83Sxxtqf2bnsfRunesdvVquOc2ydCwnA9j38RdB5vniYKlaveN9wH2uwU\nnIaq\r\n=DPIp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.1.2","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.0-additional-template-vars-d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9_1581577556320_0.1166082812116993","host":"s3://npm-registry-packages"}},"4.4.0":{"name":"resin-multibuild","version":"4.4.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c36115bf971d15df5f75e3dc9ded8b71504b9a29","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.0.tgz","fileCount":47,"integrity":"sha512-iC8oMvgsfFn7lCELkDHjavy4Me5MuhDxYkjcQv0P3p0uUbHeZV+XAScOPDpLyR9PTxTLvhXGg4DRPG28tN3SfA==","signatures":[{"sig":"MEYCIQDTpQa3MVcABdtYGWFisQsAUcV3Eg7n+Yn6YlMV6dwxfQIhAIgvqG0ysaScgT5JaDjR4cETSsHFwfkluxyWsrFF9r6C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRSWmCRA9TVsSAnZWagAASn0P/jXdL5e3q37eU0JFDgFr\n9lpX8OzhudBARYMtu6HUafG1YPkkIY2SjJPrsEPnPpzV0stxbQkAh4PedjgR\nzZxSqFhmiiFko/OJg/g1kUNlPn/hYp4zytkMFZso3y9PLrgiHtioUMGMiJRF\n9ersT55hXH7/6I6mBfe3M5bykQUSAoeqJ/2zuBc7Bk8LZ0P2+N5o8ER2NAHB\neAptBeSX12w8UhoPSKnTAkJ3pdRoB9WThn3LIqzGwI5wfJrNDpl3vVn1kPrU\nrR31QEf777WL9QeRLvUE+EMKl2IG52bHo9msmcisw0psnwBG9o8PzD2zGw5v\nsk5cZFnubusz30CdoHbADsHNSnePVyJCkd4iKnWRayP/0+M2jPz3VIZFBxO5\nUCQL+RKzxvwpa2Ml0OR5nyBeabbe5EKRQTj0oxyhHXJs7zN8MVXjU92a9Vvz\nxRvEmphpKPnLhp+NTybioae0yYtcJjTY8CKPa73Z27hbg0lNR0C8YieA5lFN\noZXyaSwyA17xL1d2FPe19am6ja2pBiY4a5z5k3GJ4QAgacI1DCyxo30rSAZu\nbgDs9ZfwecSdefOadZwQARI3vrADpeDQTtG60nf4uhwMAytZjXXZap4JV824\n3O07VZzSItvy5u+4Wi/zfcNgNNN6ofxGXN6VUmeu/Bwm6LPQrKl87Gq74bG4\nPmmz\r\n=+kuV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"0c20bc330a55cd7e02e0b637587486835b154ca6","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"prettier --config ./node_modules/resin-lint/config/.prettierrc --write \"{lib,test,typings}/**/*.ts\"","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.10.0","fp-ts":"^2.0.0","io-ts":"^2.0.0","lodash":"^4.17.4","js-yaml":"^3.13.1","bluebird":"^3.5.4","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.0.1","typed-error":"^3.1.0","@types/lodash":"4.14.112","@types/bluebird":"3.5.20","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"2.5.5","@types/tar-stream":"1.6.0","resin-docker-build":"^1.1.2","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.0.4","resin-bundle-resolve":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.1.2","husky":"^1.3.1","mocha":"^6.1.3","rimraf":"^3.0.0","typedoc":"^0.9.0","prettier":"^1.16.4","resin-lint":"^3.0.2","typescript":"^3.4.3","lint-staged":"^8.1.5","@types/mocha":"^5.2.6","@types/js-yaml":"^3.12.1","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.0_1581589925778_0.17566332253374073","host":"s3://npm-registry-packages"}},"4.4.1-update-deps-9aede6efa97b9da634e42cc6f11c46b81ff5c077":{"name":"resin-multibuild","version":"4.4.1-update-deps-9aede6efa97b9da634e42cc6f11c46b81ff5c077","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.1-update-deps-9aede6efa97b9da634e42cc6f11c46b81ff5c077","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"744d8eb52c5013a12bf96778b9675a2acce384fe","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.1-update-deps-9aede6efa97b9da634e42cc6f11c46b81ff5c077.tgz","fileCount":47,"integrity":"sha512-HIhePpxZ4/IpriYXWChjrYtFrARdxgNS9AKPPKbpmqS+/747FDrWmOUOIpXLbtsQJ+qcP3MEJAg4ERiNkl04aw==","signatures":[{"sig":"MEQCIHPuDmhVta9TcDS/a9k+iAIeENQdWDZ7tpN3KYq6/JFAAiA49kWrOJlLCJLXLslywItH5T+6kRD8TnUMqSbcmofmyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTyQuCRA9TVsSAnZWagAAmQgP+QFwgy0oZwe8aiADb0+i\nUHsreGIPAC0mHVoTDwXuvzgklXQfjnu60ehtrnCjJAbogLeOhHX2HVXps6vk\nquQ12LVGcewub7F/ftAhbdllzprYfUm4h8aY0iTO15zN9EX4y+vZGhrkXJgz\nmG+4MycWbfh7qTXDysFZTDNZDUmt7FzjzjMLXxCiyOzcbjKudul/vm+zj/Am\njWR7gm1bA4rrAqkdn86/7JyWJgMmg4p82HLEAQI5gsmD257TG2pnmsi1GQUU\nWRcVk6jHxeSIBwyEzAUA6Eq0AQKNF9NJgSMHF5TQR1aP2KS362TzDsN40NA0\njAbZl27ooZeIOLQ6J+sOiQuHviw2JSuuk2X3UIgpkBqeoK9TYT1nHd/1AiGl\nymyqZ5R+qECHl1Sv5bdgK0hwKLSmjcw9m5sPNiVUy0aV53TdtoPlLPAt0PMJ\nKnjgLpZB3MES4mp++jejI1fqUShmObGPyk7YeQAIxEekTOML6Lst1uaiC1q+\n1l/JwRU+Sa/x3aeybDauLP6lQL8cOyU7qf/G3kRceUt6zgXJtibhNxw32P4Z\nVs0LmqbiWtESfArOctqfxHnHsLIVeEeR7ycTSpjCmA0Hg+fuUpjT3GmWuZi9\n0+bpuD1AVpuaEIB/AsVU+eYK6ObQDb8+pem0OMfguCbV6xZiZNZ/xhfPQDZi\n5X6n\r\n=pYEQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"9aede6efa97b9da634e42cc6f11c46b81ff5c077","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.11.0","fp-ts":"^2.5.1","io-ts":"^2.1.1","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.29","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.23","@types/tar-stream":"^1.6.1","resin-docker-build":"^1.1.3-update-deps-272d8802d61625a4a51ca79feda4a5148d892e34","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.0","typescript":"^3.8.2","lint-staged":"^10.0.7","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.1-update-deps-9aede6efa97b9da634e42cc6f11c46b81ff5c077_1582244909826_0.7570275484971851","host":"s3://npm-registry-packages"}},"4.4.1-update-deps-159a090036d4862dd75927b174f98aab9d0d2301":{"name":"resin-multibuild","version":"4.4.1-update-deps-159a090036d4862dd75927b174f98aab9d0d2301","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.1-update-deps-159a090036d4862dd75927b174f98aab9d0d2301","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"02708bd4b2e8f22079d521cc581a46a8fc95bd4b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.1-update-deps-159a090036d4862dd75927b174f98aab9d0d2301.tgz","fileCount":47,"integrity":"sha512-7yrzeGoDaMSkgJ47PnZlb32CaOEbZTDITJrM8q+GGs21uGsqj/tbg0kO7KjiYIedWmSz5Y5RUcWfKqfgaYzWdg==","signatures":[{"sig":"MEYCIQC1pMLwMmcFtUXrPq2zy57DC4qvBrPqtCL8iUwuCUdNpwIhAMv7p+0xbUCxxpBou7sdfjhBMTMR9YQtK62+eCQ4beMq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU9IBCRA9TVsSAnZWagAA2fEQAJRTC6InHROuc7zIaKns\nbZEz7pP2JDNH9ECMz4U1lBfdAV2+gOEYqMBGDPhLJcLABLd4mU8r71OoefB4\njJpfsFYPMXynIDQF86bcbtNY7eEla27m0LUs3MOB2sShEpYGccnQ/vaPHtrW\n8X8kpbU1lHdhDDA/OHcTrcsN9JLId+kHRa/+M3duzN9RFxb+VlPKNElsaoWz\nkERnqe4zEK+lp87WuwQX7+DlGJB3+3wM7Ey38ieRRqpmaqFdD2c2xXK1ibKH\nEWgftStb3FaYL+ZqZSiCfRS2PJuxBCLeLO4ZDv+UuPYqnXzIj/uiddpwrSl4\n+UbZ4wHF0LOp3FhhbHfSnksXgnx3UdZMZcHMpdg2MUULKeoONDqMt47gMWMz\n4Qz+o4hpiFexul/bQ/Jn1heCAasMNR6eoM5EZSZML1Y55G5NLs9OvqHW0mZL\nzlzSZP4DTTcXjmYe23F9RZJSbR3NCY6SSD60sBxtEY9wbFNL4giAXE62Uc5L\ndMRqAzwkTnm6YBH/B34yUG0yiPF32dldtadqno6BCm2ov/gPu6bllwM0+t2i\nuBJL6b2tJEuaq8JcMaz/8CIIom5/vJM3otQ3du4PG63q4a8kSwtXIRDOk4cM\n+P5Y2DtIXv+apHPGL+ig8pFbHL9lR2QgOxm/cSkHogtsHuwuue0ojBsnKd0l\n1fi7\r\n=/xR8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"159a090036d4862dd75927b174f98aab9d0d2301","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.11.0","fp-ts":"^2.5.1","io-ts":"^2.1.1","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.29","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.23","@types/tar-stream":"^1.6.1","resin-docker-build":"^1.1.3","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.0","typescript":"^3.8.2","lint-staged":"^10.0.7","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.1-update-deps-159a090036d4862dd75927b174f98aab9d0d2301_1582551552509_0.3475005714651149","host":"s3://npm-registry-packages"}},"4.4.1":{"name":"resin-multibuild","version":"4.4.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"863009b8a4d907c9da682e251a3658dd81ac9cfd","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.1.tgz","fileCount":47,"integrity":"sha512-iKfXRwGuMIHLvhYBHHtEYSJa0aoBlFwrob1str860q4TwR50JVp5nclnFppChtKxjsnxsemheal3GUxZznOfCA==","signatures":[{"sig":"MEYCIQDi6uaHVvDHAMkT0j1K/gSc2/RaIVo17EqMw5hf0oNjtQIhAPqWbq46ZTVeK6umsZD3tW27S9st+2NbXQbVQa1+THyH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU9eTCRA9TVsSAnZWagAAQQ0P/REWr8NF/Ox+WQt2ivor\n5ylm3yqcmhchYuCkOtwwlW5ajCOikHOPcJoBzhaHhSnhWgjMh3k0hsgctB8A\nEjiTFJx8wUEypJF2S7lLRkkI5kCZ2qpjn3R3/8pAoPj8AQFvLkMASXpRzqcB\nGycZI1r0v75ih8fTY765VYFnSSYWmJ82PU3FQyjzn6CycQybmBoN1VC1ELb0\nmAMKPgak9jkYPZ/As2acGCDTKc4vp5KLrYHNpcW/yFR53XqaTJpp8fIakiLn\nRxAxx6JS7HJnaoS22yllNwOkPSVZTM5Qq7IZFONUe4FPYugVoa1taJJUYIXW\np46WLn13Em0IMIKIwmKi1aeCWxPxZzlhvd6Oj68L8wSPk1YQhadZ34pBotJg\nmoYWPINd49MCCtO9xECC9HJnPv00jUlNnQLy1hnH+BMCyBvE+7xoSgqDjf20\nFgwWzMDGOZ9YA3qVrT4rbx+o8mDD6zDwm4j40JKH5nmQH7md92ZSJXC5kyEb\nVL6nN96+wKEPpgcTl/VFdlgCrHKwcxrAN/HBdG5epgUrMHfRbdGw7vo9+fcY\n3s5CT/kZ9awbWO3vdQ8PYM9AWZHICxSlMnG5Z78VRcKp8S8GSBOSChVOEHus\n/6Cpck2EzeByOAILt56W3+OE/D9Dhn6tmSzJnewX5c8cHpzkTPO+e4NViHSv\nTczb\r\n=1TE/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"5f9d0102c75b679dd0b0ebe2b4526a9f2318e03f","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.11.0","fp-ts":"^2.5.1","io-ts":"^2.1.1","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.29","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.23","@types/tar-stream":"^1.6.1","resin-docker-build":"^1.1.3","dockerfile-template":"^0.1.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.0","typescript":"^3.8.2","lint-staged":"^10.0.7","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.1_1582552978554_0.6580974527771126","host":"s3://npm-registry-packages"}},"4.4.2-update-deps-36543429509755df934fcd5ff8207fb084088019":{"name":"resin-multibuild","version":"4.4.2-update-deps-36543429509755df934fcd5ff8207fb084088019","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.2-update-deps-36543429509755df934fcd5ff8207fb084088019","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"67460e42137e76e84cf926d1dcf57bea3761b1f4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.2-update-deps-36543429509755df934fcd5ff8207fb084088019.tgz","fileCount":47,"integrity":"sha512-IFt5HZk6zubRVy7o9tbWAIPSfqzmDhez5IllgFVqmh1jgooQIZl2z9e8ICZfT7uUC5qCC5mYqIpOILTckno3yg==","signatures":[{"sig":"MEUCIQC5oI3twam9rvuHK4613rb6uY0FxnM+59mXkMIhDpmEswIgMtYdPzHUv7xOknL0B0vUzMKv3w5aVuEgJF2jiOrglHk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXk6nCRA9TVsSAnZWagAAV4MP/3KluV06CrK8lhxaaoUa\nvzcE+dWz8xvs2hzzcrecQENLH4p3ool4G2tuD5ZBv5M1tLlyMMy0AvJDHrNL\nwotpdIAjuwpZLNQD53SgBn/1AGZN92lgMEQ/zlb2GvbdT/Zau87RLLsDGY2/\nUxHYWpTiuoxeTRsLBH1+bg41yPxqo+jMRVN2kglBMz0hba4dTlpC5rqGWEgh\npCDjnqKM1BmLzNsN1ZYs/K+faugq9+X1Zd8CnBURzlB+ogVsq7nQWDr8my1m\naS8s2zUSl0yge2UgKsrXVKVQz0eSxfIYL0RuhgrhpcJE1cW7IxDXf12+TrqW\nGDkPN3HJUersXbDX7cmxmr/O/qDq3P0Y7QXIADCsF/FG4Fok4Ldy61rmoYk7\nf7NEji2JSyGJmOq9V4SrT5HPxeooQz5Vv4/CMVEYjakoToL84Eykac8bYxT+\nYTtQS2mZEX125/S3RH5emb7kCZn1XywULelNgU8uM5vFC1b7RI13UVnEOdGZ\nT2qvKmD4417Z7nj/cHKsxibdfvnZWKFKZRCuIUiniFQOiC2IQXTssUeJtK7c\nTpTcFODMl8h6/NXwU+EMpqjtmQtmg8L76SkPg193QZO4M0kbDGz3x4VIwZkX\nVnZHZ7wUFby3GV7Dd8HdfTY3cF8kYGRuGFbOFZ8M0KbUGjGgIXQ8SuM2Zfyo\n8DZh\r\n=gODY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"36543429509755df934fcd5ff8207fb084088019","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.2-update-deps-36543429509755df934fcd5ff8207fb084088019_1583238822537_0.12262234471774125","host":"s3://npm-registry-packages"}},"4.4.2-update-deps-5e91a83f8c975a07c9096f67b92599e9240abd88":{"name":"resin-multibuild","version":"4.4.2-update-deps-5e91a83f8c975a07c9096f67b92599e9240abd88","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.2-update-deps-5e91a83f8c975a07c9096f67b92599e9240abd88","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9a50b1d109403adb891570c7bfd2eb7caffeae7b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.2-update-deps-5e91a83f8c975a07c9096f67b92599e9240abd88.tgz","fileCount":47,"integrity":"sha512-+j1uQuM8/ZArm9VGBBYbA6bTw4wio26G0tFOJUQCs4WWQ+vr+NKE2hTSwWaxqrDv4Dc1dfIx6FQemvXSvgA85A==","signatures":[{"sig":"MEUCIQCi3LGFvLsCtTGifMqOHG/tTiBI3W0aWPcgwcB4EUskSgIgVq30RaRIzJXWc/azYPJCM7oAtIww8YVLJ1mCk/yvW1s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXn+FCRA9TVsSAnZWagAAz9sP/3CGiCrn/gycN/q7cNMG\nVHH6U7cH1FHBnnkMLvl5MzLO2shnbasY9KW3dXpH6PrJXczEylgYuMjd5M4f\npqgjo7A+Sfuh18HV8DJ2f/TrmPJnkDYb19aJd5m+n5s2SP0fy05b23B0gjrI\nQwiAVU/bsS/KQeTlJ/2nz4HeolWBZjCXXvMrGHiLh5MLb+wnaqbbxSIhY3pS\ndG4RW3lkVhRJnFLdWIKd8p76H5rVKSR4ax99nUMJh3qvQf5KxnHoFzzEBKrQ\no9zbSTfbOivVqug5W9dmpJH1DB7hcqbH8N8dJ5Vsv4aasbzdh9uRnTIK48/G\n0fWVn5yMShMukScqYHZoctxkpDFGl1WPRYKn23dl1gr2SSW4XiLUtwTsCc6j\n91+8OB+GGL9mF/MqGTzSspWMvUoIwVXUad26Uz3FDcY6LUWjOx/ORfCS60OI\nWP9DuSNGB4wiSyzcS6MHm8acbUoh3ZIc7K0a+TWiOziGbAMg8Xum78zpILPO\nCPlR8JCNplP6F/MZppOmRfXGlG0ymxIWi6HiwUqBIuEnk7aguFE2ix3THZEZ\njPZ1NIpuOkiCgBPVMKq34aaetNBRAC/YJyrq4+va/7YCW5sh7oqdcqe5StX1\nhoBeEMnDc/nEO2En0CZMViojzGoJllXoaWumTBPqwqkH1+MWWN+2O3F7HCa8\n0POE\r\n=QirV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resole](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"5e91a83f8c975a07c9096f67b92599e9240abd88","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.2-update-deps-5e91a83f8c975a07c9096f67b92599e9240abd88_1583251332597_0.15249439615151128","host":"s3://npm-registry-packages"}},"4.4.2":{"name":"resin-multibuild","version":"4.4.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.4.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b7383fb50e268534d668771a39a2ba0a0b31ff7b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.4.2.tgz","fileCount":47,"integrity":"sha512-TVWKl1eMB25GlwQYKKSDyefDQmsOFJ/N76KlG43yzd3ch6F5/dlGHi4UbKuvZPH1NxIWbPKogldT7O+UPmKP3Q==","signatures":[{"sig":"MEUCIGN3e3alTm2qbcoi/piE9Z5wv8WkO6hQVYUb5n3/hcU0AiEA+CVC67wWjqpb7VLsZv69Kk/kIjaKpuh+Z+/OcucF7oA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXoDKCRA9TVsSAnZWagAAqA0P/2OP0tKV5kv6P13p04Q5\nDlc29MuvF2mBjy7kD6h87vjPJw4N3xzIi8mILVkbAi85Pg3cOlwiu12ocJud\n0/Q/QpzqlkCh2jbJVFgG4FBCcToe5RTmqnzlNizzpHCs8Oe8cR30IVsfXiWK\nY9JdzA9H8vhiaTf9G6xyJIGCEoik5vll3Gc8BWMLm+CL7/Dnsu13xLF2RFPi\nIhjZ0NsoOSUM/lMPl2ouVXH+Gnp7Z80pcjc2k4f96GmwAS8WDG43qQLdb3w9\niNQeBmEkIwc1/yAlofNqcrodYjdfe4X+IXYaXwC1no+QKj5XLChAgYDF1gNa\n9NI2M+JNib2FSFvFxU/I/vYic+sHmn4hsKBf7eAPnSPejQcJiGULTX+BJj16\nOs2CaHEoB3HTuXvs8KPnAVnGrGMWzcXNuU9ctrs5A1tfWH/CRulnTM0C1Tag\nimk4XiO8eqCYFzQfp833YUX7U7ZgQMV9qhJmtSQK34FlJhw1Y5cx4dXnpkF9\no+D/gJScntSZ30DD0ssgWTIqHWFLMV3cNbaOPRD++MoAMGQAj0fLESpJQOue\nLa0ELnqWBMmTbiyHDhj3ozWZT2npuxD83y0Z/jTWuGZufuv9v8YBy8KnEHs/\nozr8FB1L4A1eXElJvO0JReMAFZl+5Shx2mXJGZ2ygAhrXinLpQKysVlES7/e\n7Zk1\r\n=FZk+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"0dc4a0aed706ce3c60b3c8aa14b95f464ea44c5f","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.4.2_1583251657993_0.17241789684915676","host":"s3://npm-registry-packages"}},"4.5.0-add-preprocess-hook-9f18228a35adca197bbfb2182cae255c26d91332":{"name":"resin-multibuild","version":"4.5.0-add-preprocess-hook-9f18228a35adca197bbfb2182cae255c26d91332","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.0-add-preprocess-hook-9f18228a35adca197bbfb2182cae255c26d91332","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"519ef7a5d03888af10f92e73428984032fdbeaeb","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.0-add-preprocess-hook-9f18228a35adca197bbfb2182cae255c26d91332.tgz","fileCount":47,"integrity":"sha512-d5NhSYuyx+1tD2XP1lNF6Sfafn1iDlAFhoi4YBrgBVVHQq1TLSlVvdlyt5C/qO852bZel0S7pin5FC3T4sp2Mw==","signatures":[{"sig":"MEYCIQCgrd9Z2k4CKQBuj8zzTY3VXBpObPuQmSlSxglOsZcwagIhAI7gUScDQHLSfNct5W5Q/rqycJycqCvZOr9AuS32dT4i","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesqr6CRA9TVsSAnZWagAAZScP/3/+IRWyPKe+gOwnuuV4\nV26/cSG8KUm+3xUiyjjQIuhQsi6O8iKGuRVs+4syiVmM5HRKxgYBIyGMg4qu\n3pT5PyZH2QIi3vM0I4/raU89iKuJGik7SdIzDRzIpRY0gqhg1M02mxXOSml9\n7aaRrhLVa3tiNU2hLvfuk98EA3VolNiWilKtfbMqTvM/UmGHaPnIYwbRG4ZH\nRX0tSEVFk1UZcbjvc8bGAFkF5HbTuR2VKShy3GKypcdzhNmROnMBVYQQOzAq\nCxxZew5kLaNDmn0P5YhFkrq4vZNAryzlNluUp2oBZkF63lKp6FGJOpeiuTBZ\nvTT0AkyvUGjaca1ThDk2rJ31VHBBpoc23JomfVoNX5y5ljQ2EdUAX3GKpfo7\n+JimrVRDYDo5Qq/m3PP8wUixcMgyg4E8mkzIQJzXVqSMG8tMBD+0AB5+Shf4\nL/SpoD/hp0DuU3TBy7f9V88eNiV+ptG6uIinbxESMVn32tPS8nL9hV7fp81Z\neo01W47G/sErinr9eaH7smt3Jz/n2SZOFYGlf5SHzcPCeG4Imp/RQV+jTH1Z\nznoLnTr9zU5yc4o7sbeOGIVodT/GEg0rGNfzRb9T/gv+3blMuuMGFVx0j7ls\nLsGzljEA8ryARx9Iypod0QjlBNSpyDpr6oBc1uhU/YGLHQsdYhLWawcwMxvZ\nW9FY\r\n=67VX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"9f18228a35adca197bbfb2182cae255c26d91332","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.0-add-preprocess-hook-9f18228a35adca197bbfb2182cae255c26d91332_1588767481833_0.9368555820300599","host":"s3://npm-registry-packages"}},"4.5.0-add-preprocess-hook-c925efcee74a05ec99e1a87e66b941569de10a02":{"name":"resin-multibuild","version":"4.5.0-add-preprocess-hook-c925efcee74a05ec99e1a87e66b941569de10a02","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.0-add-preprocess-hook-c925efcee74a05ec99e1a87e66b941569de10a02","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"61e08f01b94563997228179af6623073ed5f4763","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.0-add-preprocess-hook-c925efcee74a05ec99e1a87e66b941569de10a02.tgz","fileCount":47,"integrity":"sha512-GozQDeCIpuCEnXCfIMxTT3mFahZKFKHG1pKORtIbfELlFAU8CRDJILdTShCtN1UAz/GLjksqCB93r+jyQu9gXQ==","signatures":[{"sig":"MEYCIQDOJkp++zDxRtwf65sP9EkXlqi6cQDiSHYPcZAD1qNYkwIhAIWWfcySiBv6/MAYN46smhCI3E/TEtCqRHnnH5OdNVx9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesqvCCRA9TVsSAnZWagAAv6UP/0+daXw/m0AednEMnaC3\n5NlGK74qHzk08WFdbz8A4lrzxXlwnueuz1mZWvxPat+ZCgfsqPcS26roc5wi\nxKXf5gj7VdnUAIxObDz4GP7/go6wbzCGt2pB1NuJhFqVZaO8jdExbWMWZHDW\n/LfQJOdZ9+WJJUXsNHNZ9nzFHqnVUbp8b4Tx7Xp6tNC+upofXhXK+TV+JYJ9\nvjrLnzX7lLFqOk2TYY0lavmYhzqdQFwWCY/Xladi2LrdazsffjZA+hGy1KF0\np9fj66c0FhQ2RygJyGFbYyS91Tj5eQkqKyyrVTLAleuZjP9epH9OBjx07FXZ\nIQxdT8rEg1Lstp1CwTAD4mc30wv72StFGeGk8Mzhlk6rd2QkXCnk5Kt5rxsb\nJ2Q/VAPyU57l0YmpZCG7I45xZHguNL8nAkgdYhSDprazZktKeV0KFXeUey1l\n3WhJTr+MTKxMrnCDuaREMyfSszMf1NLM5Mj5mbiBXXvWbxYUiM9X0zAakPaB\ns3Q5qjUQ0WPXgSjeewzbrAdBKrHo0kvDb7aqUXZ71Mi/qC0JVajVB6QbPqjq\nmBxe+dzR69RsBvW4tO8YRb0pIeHvYJ1rHpAMQG5qR/0aV2AWen///v5yvCMR\n9x/AkcdVO6MCJlPLsaTq5iix605wEy3YY28pzTNeKKQCE/iWznKbPqLfUcRh\nXPyP\r\n=rdPk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c925efcee74a05ec99e1a87e66b941569de10a02","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.0-add-preprocess-hook-c925efcee74a05ec99e1a87e66b941569de10a02_1588767681634_0.06696633163157695","host":"s3://npm-registry-packages"}},"4.5.0-add-preprocess-hook-44eb3b35010c322aa16773cd1c3c0739ef1979cc":{"name":"resin-multibuild","version":"4.5.0-add-preprocess-hook-44eb3b35010c322aa16773cd1c3c0739ef1979cc","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.0-add-preprocess-hook-44eb3b35010c322aa16773cd1c3c0739ef1979cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"71aeae5ca30befc0af0d387bfe20e5a287a2e4ea","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.0-add-preprocess-hook-44eb3b35010c322aa16773cd1c3c0739ef1979cc.tgz","fileCount":47,"integrity":"sha512-iFzAWBdwerVujGhrjsftQo8S4AO0x7HWO6e04rok2gt4eeBSY5E89nV7vwsMwy67U/5RrtHLejGIKkIaOQH2eg==","signatures":[{"sig":"MEQCIDTV3ETyzrHeGB+z4KC26r8Q7V9IR8tmC9XhxvNF6KqWAiAn+ecfG3zRJyPWO90Ah0QJZPF6KzyRUzT0yhNM0AjViw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetVaSCRA9TVsSAnZWagAAGkYQAIUmGnrFGmaQB+LvWhNG\nrCMoRZahQy1jmcvH/fsQVY7RpFz7pYLkNcsyQXFnCZ0lxNf7VDSoBplN8Zx7\nTUJLiGk+og57bvgUPIGiQpPxncty7tAVjQqa0kNrgkPl+65W727NlxlXWrr9\ntCtjozm7SBPeoXu06VWGcnE7Vkhe03H+iUyo4GcfBv7LIU4R58d/bpYSN2kA\no5tqKW9MuvUhq0jZrPZbYhmlp2oeBMbobsU+lcDK9kN9gJQNPYrrF8asEaoL\nTUFoPQk4aFgf+37M8w3Xr/Pt27LSJ08qXaOgVc/IqtSVadvO0Imq1vFTdxg9\nUTXKpkNNxfDjx5Phhkp23N5stWcJSuAw6GqDUY7HTb+NhSwkBG7057nIaRq4\n6aR31mBUhi6SrCmTz76dkKfXVtKUsAoVdnP2fEWZygvNpn/lzi2/4QpUMhDH\nY4r7+OCq9+9ISB/DsYys4T4dVqlO/Bd6i5eBlHPKIcnlKFFHMJMVYAmRBAPO\ng65Ks9LzMb3NuI2wNLBtdxXXYuXqnuc1O28eoBWIp0UFlsPIYuyGvdC3ntY1\ni30uelweAGWpWBemBR5bQ/KcIHuSgfsOfqCGTf5hjfoS3cJMi69cIXGiziRx\nnMUVVSI7An63Jui+fwQ78Zv5OjnvWrOo471NI7qCo7Cuc0R+TqYrxDbB0MU4\nEYFX\r\n=Qa+e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"44eb3b35010c322aa16773cd1c3c0739ef1979cc","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.0-add-preprocess-hook-44eb3b35010c322aa16773cd1c3c0739ef1979cc_1588942482460_0.81210173472935","host":"s3://npm-registry-packages"}},"4.5.0":{"name":"resin-multibuild","version":"4.5.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"fd7a4d7367060c556b7d9f71977d7b509748624a","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.0.tgz","fileCount":47,"integrity":"sha512-lvpG5VTHYiTly3Qg84gftXV2724nr5yp+r1HY8OeLXqAKvTzjK+c618rCVw0MH3Kb41LHHmNU0bm6fZ5QcOECg==","signatures":[{"sig":"MEUCIHzSDHmt8RPmNd55QFigQwk2FHyn4HvFt9KsH1pVNgO7AiEAxO3TuBwcoh/0Ssy51brebEQEjlsgYls3b56Sn5WsWJg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWbACRA9TVsSAnZWagAAs9sP/A9NiGwtGt89jmqpZ1nO\nhTI2zrSBLmwhCEqT8dzJJu/R2IBfrqcBn4ysOVTWAeYsMwvXXNhV2pxVnXzL\nq+YTrb3nizKxhzjGB5EFhxE08SfeBuB8AM1DSe/3NZGYZiJtT7T2T+Fg/arb\nuCbao115638ejtIpmu88g7LNuCU1BiQzraukWt9m4g4VbWRb5111vRVs1/Ei\nzzw4McRQ0Vyzx5+1yJlbkCqlEiRlPv+19ClreYCPrOMSjCPnO5DrPfVVTbPt\nHkyOTqREjDzQWw6Z/dAyNUA1eT+HR+PbUd5g61HbYn3gaIamFLAaYSbxeYwX\nfDeN3M8e9VuRIeQevyLMpNZv3g4K9wjPam8XuUE/BMbLQh4kldKG0XLbyu2j\nZeAWwxx7Fx3GUQqXkeHb11OPkmsHOYBjAjBvNxCEtgFATRBFvfXCked+p6XR\nXwIS6bIj+2uCwx5R4FZVcD8tVfSLqlS3MoYgvnbq7EBRQmB0BnVd9jiKzlCM\nPVhLDssta3kviCCQA/ndTxB0vdIohsqSfxcGZcPXlePf01W/UvsXgp1j+28j\nYYSC7XoylwHYFqvguygnOf5fCic2iY2MIXTxDC8XqoP0qpLtT08v7yz/krLc\ncmDNHnYxTeUknPOVxbYLf4ccuXb28tU+1q2zMD98vt11OGS3oO958H7Ut4LJ\n94Je\r\n=ntFN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"ce5148a813fabc9e2d8568d786986e71ab496f6c","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.9.0","description":"Build a docker composition","directories":{},"_nodeVersion":"10.4.0","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.0_1588946624231_0.3990885110962954","host":"s3://npm-registry-packages"}},"4.5.1-global-preprocess-hook-7b614b085efede72956ef805d7ac6f2fdbd597a7":{"name":"resin-multibuild","version":"4.5.1-global-preprocess-hook-7b614b085efede72956ef805d7ac6f2fdbd597a7","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.1-global-preprocess-hook-7b614b085efede72956ef805d7ac6f2fdbd597a7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"1391248fde76a5c1a7d6721c813fb41417f7e09d","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.1-global-preprocess-hook-7b614b085efede72956ef805d7ac6f2fdbd597a7.tgz","fileCount":47,"integrity":"sha512-G/3dHOaUD9kXC+s+jT0QDu0ZPpttR47u+NoNMSzYHmOCgpAw0c+eMxzyTMH5bWCT/UnIQpQfRLUrieT7EHmc5Q==","signatures":[{"sig":"MEUCIDDDeOGZS927i+HLr5vns5ECjEY0injXbh4zgkoLvkX7AiEAnEV0ekIuEJMaS+757zWAjrCMA40IbOYMSBnfHt1dsjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuYHNCRA9TVsSAnZWagAAaiwP/jrlDVhufyAcufCg6g5K\no2+YXB8YNExQzl+SBw8cIjcochlm7GJ7vnkaHe38J+6F+tiKlhBqsIkmRszg\nDPJLSurMKQsWgcrwtIQpwwOTEntf985gIgkIQUktralGsFxqLNmjPJfQIA5Q\nbJ4yNx9dIe4l8dSHy3dLvp4GI4xOoUWSZqukfZ3gM5cfCbJUEfGwFh+mwsjt\nTBsii2hAE757Hu8uaQxZQUTf1bsDh95tuy85U0DLG0XXSDGroO2tTEQm2+jT\nXQPBZjt7mhOb7yk4RFbbYpFtS+E/DSJSw+6AKD+0nuOgKj/TYiMmZ6lOgmWL\nhFhS1SLLxtXVfmlLLq+5Do6AqIIzh7V1oq22VB4vzPXQPVyfG34hEy/RBl4u\n5XstCID1yf5ShCJS3azYX2mHefxGnoWOVHc5rjREjGniKGlMNgd1/pVKzYmv\nQc6C92hz1ka5Q0UiAfGtXk2JLOsT4CFVDrBVsfxVQnAck6b+c/DXGq0IilEu\nauztqfN38Tq2MbHz5zGI5DvIh8UhZynwiNTkGFETptDiQiflJD0gonwLhzaM\nFsgFiUgZkDN0kkfi4OsjRZZcKOQhtZlgHvh4ookugp5XTHa636Y3GD5dQRth\ntm5DWzVxJMK24kpcedNkGwS4UwlKCKYZL7MV++ZfW2uiYzCjmOjuTw5nQGmY\nVxvc\r\n=oGMK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"7b614b085efede72956ef805d7ac6f2fdbd597a7","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.1-global-preprocess-hook-7b614b085efede72956ef805d7ac6f2fdbd597a7_1589215692447_0.031388046643143985","host":"s3://npm-registry-packages"}},"4.5.1-global-preprocess-hook-69b143286419a9d819c0014a0f7b389bc93cd817":{"name":"resin-multibuild","version":"4.5.1-global-preprocess-hook-69b143286419a9d819c0014a0f7b389bc93cd817","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.1-global-preprocess-hook-69b143286419a9d819c0014a0f7b389bc93cd817","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9aa16dfe0dfeea3bcae048d0e3be967ab1f418ee","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.1-global-preprocess-hook-69b143286419a9d819c0014a0f7b389bc93cd817.tgz","fileCount":47,"integrity":"sha512-Ws1vkqt9BF8/iSqtOwMpUK+roqQHu3qXVI1UYCaVam4nJaXXm+PVDNyBvBsWT4RnDfYJSnmEZIF0boEqJZ+w6A==","signatures":[{"sig":"MEQCIAPeBMHmEfht3hO+7a2lpvCjHIUojEjxiDxWZIPkf1mpAiBJX+MWPz4auDtioSl4uRO4SnujSFLYfgr2M0hm4t2seQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuYJECRA9TVsSAnZWagAAahUP/RXzgfpBRFZsChS+G4H3\ns7vkRs5aZZkrvLjdf02Fc0xTfSjlv9PO9FFlgqrQAeJ1tPhvr5X5uqLCrTNp\n9W1pQhT8h2Cgg4l7pjyTpkSXVMPFkK8AvZ6hAyp/iouigz9TrqqZTj5G7cFo\nv4s6l/7qc4sSPCR7N1PwT76y3I7njU+giU/uLXYDkw+GAV7nDdcoEPHtfkSy\ntIfeP5k4R3Ktq5C7iAnSNFCEzUMkhy5elx1qX0QpxcqAnf0WyKiJ7HbE3nYq\nMfM3pvfwN8W05x45SQE6ZaFdaCu7bExzkPZ/Yt2I4u0ultbWmo8kWTvdb+Vx\ne2RP8tH7FXdDObHnXb7yeTvHiIP1uoXxN73qxpjuOITQncGfN/vjNrEHz9+d\nvDnKsm60evMPExska8/wUaGr/d+PN1dSDJhsGu/Nem5EuaEwa2jxJYqodXRS\nUuIaugn8/bTZN0AsQEN2w29/HdtnL6WVsYTEWBcPQATC0LGYkS+/4E/YWivH\njM3Ng0qGgYvTL3ZsVN92D9KDFz4hNm+Fxog9sGe0+3CPFHsuGqtEnbjIUjik\nHljhNWebzGEdSq00mC1lQ6QvSPkJwh7rwnLs3AbZ6GRUOXdwudqIiyD8Riha\nCDII3aXz2TMq4WpQ7UqvAwtVPA8cXLICKkhWu/a4qDY2BGeHGiKn1CYdZHlB\nPm6J\r\n=cF3o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"69b143286419a9d819c0014a0f7b389bc93cd817","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.1-global-preprocess-hook-69b143286419a9d819c0014a0f7b389bc93cd817_1589215812472_0.13393732710851802","host":"s3://npm-registry-packages"}},"4.5.1":{"name":"resin-multibuild","version":"4.5.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.5.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"78aeed50849383d04cea95af463603b4b830033b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.5.1.tgz","fileCount":47,"integrity":"sha512-RuLpcZDmwiZl3ZiNFNCarv0nCh86NnumgscRlcKfi+j6lAfXrYYdEkVGM2VXie4FyjlgTvJvOr9ex4jjTTMaZg==","signatures":[{"sig":"MEYCIQDdbeHkQbd26DU30hvG32dckNUeHZYPU4lTc5R3/uXurQIhAKgP+w/JG14a+cDK1PCghwEsFuyYLcay4Ho1vdjT3I6g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuYMrCRA9TVsSAnZWagAAn9UP/1ZSSekOAkJc25d6tgPZ\nJhsvnJucah0tgfPAXloJ/Qa9NTHqRMjFwv5wrTSARQJ7hhGTx7c5+ko6cysf\nlm2Mr24eBwmJ3JkRLYOdtUAD6GYfDovFt43DSNM4FfgpzQRUFprRsOiOc08w\nWJAfzLzuYAl/vgPxhY5Llv6620h4NWkAKr1UwdroigyPCzNjUN/9o1HaPAv3\njhvmRVKvAGRx1qHcoEVWKZlgdxN+1bQ+ILHKWPd7/z1rSHbFXlPqi7Sh4n1d\nktisu9p/9JbITR2Is8ddSq7g4wsxbDQXdMMufxGNbX+t+D5EMg24POg5ORDu\ns5r9nK9OhweEdK1WQvw7KCf7qWkmFf5qerL0N4iFtJ4adeL8u9QnBWVe7sS2\nP+sEiYWnE8a9sVAtq4FDZQyMqD1QPrt5G3uvitpT1dB5XkDrP8iG0kSWBZ/Q\nGrfm1lTBUULoxOejJB/yvsYufhH9ytw9Slt+BPKwVbi1OGzW62jFtpVJH6Xz\nyJ+LBe9IdOwlnK+WXbGy805Z3CrnwJD2HhTJrIaojkh7mHNu6H9xwqHV6q+Q\nDcYIIJV6HGRG33d2/29LnIFsLT9K1t0fwZ5T9TFb89IcYLsVv5aDIvmBig6X\n/nxLHCQBKknZAPiDl/sOGA8Sy4O+KcJWmNd+TrCH46ZY1f55YGSx3pV3fpZG\n6zwk\r\n=3l0v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"f1abfaad531f240b5247b6f8003fdb9f6b531ad6","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.5.1_1589216042726_0.1174708160304363","host":"s3://npm-registry-packages"}},"4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255":{"name":"resin-multibuild","version":"4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"0bd28a0bc0de148b96f836012d3db7b535ec0344","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255.tgz","fileCount":47,"integrity":"sha512-qRmOyqkN+av/Ihfo1A/+mneSLVgSBtJy1GELRtGSeGfuMIhfHdfUw4+gdSCiOHFB+5QXL5y9KLzS23tIADoHkg==","signatures":[{"sig":"MEUCIQDAmlLV2ZJVcVBtO6Eh6vuUiE6dp9QsckF9GGQZIwcQ6wIgDeXE/1VW31fKOekYbEESF2xWymbKOHoE6TwRLM7vo8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevUhTCRA9TVsSAnZWagAA6VUQAI5zoSTRiOsCOFXQXNqW\nTnG5J9tdnSlcyxDgxQd/E8duOSpmGi/jA6JFsrXroosnPLhxi5nrL8Axsxrv\nkimm1Pu5zVIFbt4JGAVPMla546af0/NbIcnRel1iDbeNPt3ah6CfITBh561K\nwaSpXrHO6o6ruI4vaV73zCBrco19dKGqTIflHiYtexFIfpQchBlT06E4kdrv\noh1Yj8ptw4jPwutLW6308bZr3xYuYNWiKNhHbWdN6YCdX8kEkIdB6EGMcSt+\nl4fWDA6uQA9Y1XIqK6V5/7X7KmyOg/2XQOPrK53TL0aRnHpP8VJd8KL33Y45\nS2fnvJtcBZ2K2dhNLnT+Q3dRkRp4Pipnp1SGbOXjEeXVK2kEwkTgm9ULy9PE\nCDzXjjDm0wVQNX0vFwQh6Krcsp52hVVsmcKDqsvWBLYLGpvurp+IXhuicu38\nMgUwZbn0BI2qTeq8l1estAIXw37gfAiC1z3tvbqupaUBd/wDhO1ZfmByh3XZ\nju9UyAETqS6YlyA/dQP07k8ylL11C6oO0yOr+He6V4lMrdLe1aT+Dh5fu2a/\n38vGASKmo9i4cDw4qDnp+jrx0XyiSA2wHM4a7SQLgzk/TEAgntnYHcjwhJRs\nFPrZZ2ASxQmfI88MzG11KhOk8UZMFCcMORY6nNtW/Dl5ELR/QJU9vcq59Ggw\nFAhN\r\n=/SON\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"0d673c263697c9fa28887ba9fcc0a45edca08255","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255_1589463123071_0.8908561020306613","host":"s3://npm-registry-packages"}},"4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2":{"name":"resin-multibuild","version":"4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"76fe2a1e0ae7fb55a349fdea5a6acbe83abb1c93","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2.tgz","fileCount":47,"integrity":"sha512-wY4fgpYDDk+xq591IWyViz5fBOvdP1X9Mk8EpQIaa3cqdPFU3Eq6/wL61iyb/sy23v4YolGzsSt83YNbilqYvg==","signatures":[{"sig":"MEUCIDhiwqhvxViGdt17eeEH7ElMAP/TVI2MUb04+m6Gx8KJAiEAs9A5M76EuNR65F6tBwvVu90PoGnBqFx4jefFjuo9Bvw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewkyrCRA9TVsSAnZWagAAB84P+wUxSUc8FUBPnfdEntms\nueB2UcyyR2XEXVRB9yfBL0Y64ZwFWVxcxwgHUBUP52YsdjMIRW6rCaHZesNk\n2fkijUW8WhmbyGLo62jTPSQGN5bHe8tz/rTgYA/ED75uUkKCKYupAtXpbM2T\nDfwUT0CkUSZLC0zfuZqXTUe9yLtR7u7KexWZmxTdxtYhIrMqWmH2UlkzfB8S\n4FhMG4Tmfr+D7AwfPbThFYeK4xP6MZmyWIuiXpcaZt2iDIKypUfmO4TnH42E\nLBhsPF8yFVF+r93A31GxojbRV2+ebFU7HCejJgkQ/hBxNXaB06Tan1q/cPNP\nlckPdXad92HES6wxaepZN81VrkRNjafdPqirznD5yEekiKr02mkT+uCEoKym\n1VDhugeiUCQjQI5sW4SV1u8R5/SrcXcrxdOb+/uFmBBtQCq/5zCYeA4uTnhO\n7BHI1nEvx7ommUoi8Ir1gpS5gtSMcVdfuYOCui1jT3juydroQmU0qQwcy1kI\nu4C/uwWKzIYiX+dkMvXH0cb7tXzk4H33gwJF3H0oacrW49FqW865yRO0Yldr\nV4eRsBCp9+cWcn1G78LXKzqe5qdz2Iz4ekHxe6dRjbB5O53WvKJydlMNkcQ0\nuAXG7rafT7gMAzYMlL0HrngGCm+fy8aS+rkrgt2F0AWZRRCWN6+JI1pszsID\n+xZS\r\n=UPHj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2_1589791914832_0.22907454216839906","host":"s3://npm-registry-packages"}},"4.6.0":{"name":"resin-multibuild","version":"4.6.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b303057b1a91ff69b97a1ba2da03b8aca2a0ff31","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.0.tgz","fileCount":47,"integrity":"sha512-6rlKhF3hgkeYpM1FMJrpffCq3ufvy58q7Ev5/PfGxo7kxbTd3nOo8MIG/tnny4RlsourcV6xlsyc5wcxIlq4dA==","signatures":[{"sig":"MEUCIQCujiFoD4qPD00cI03/5PRydl8Vu4UWM29YnXYDp+TopQIgQ0PFGDd+WhEPftoEOoAaPuQB817AnF+R2CbVjZUFQgc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewr3MCRA9TVsSAnZWagAAtzIP/jAcHNtxZjhT0Iexmazo\nAOdb6rzf4q6ixYjaYgR6xCHFMcABaU7kPJNUB9A7oDHjF5sxD9m+JgLFt/NT\nLHEtwAyR6bPauPAMyBAbDhzke7cOS7HqxmOKCtrs9L768iKDuSbzSNovQKyo\nV/aWVrf91pPLGB37ZXo2LvA9YZIxPkzzQBY8kLoioMKgsBTgJCM1Hgz3vhCo\nAz3EW39+cX9MAo30oDwBGonxv8W5C1AXuPz7iQKC7fN1DDoEdnG9tGYFofJm\n2QW0SrvoXQCWovzgMtJzTzKn8jZOO1Mjdfg+j7rUbbCPJbYIbsnwq1UME9wc\nN+91rrhzV54c514jxBr1UtVtPgDcAXJJUl5xLIT2MPYHhAVq+HLSErQeMaAt\n5HxdPMLYm6DGJRbTcIOt5aTFKVLb5hXiCBlhIhRWgLlG1fR/FAUCuZcots1F\nobqcxvYneTe310ylAu/0iTsWyPqma4lcdK4b7kg4hzjzxngF9yI9JHnhZ20e\nT72en5OkB1L3LpXl0MExp5KgKAzZI3UvffruQnirtns6sRo4d6hCTpYWtCr9\ndCyWRNzFY9seOxUhdVnd4DI39Dp7AIB1+lNYtAlB41cNk3GNB4C2EjwV5Nh6\nkxPnoGPPIBYcyW9oWeHbYhgoI6/nCAQWa4Kb2ZhuJWdW1lfGJto3+cfDEKW/\nWTWk\r\n=30Se\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"76dfc69e449dde15ae9a7c7cf6d666850a7cd8e9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.0_1589820875883_0.8912296641713118","host":"s3://npm-registry-packages"}},"4.6.1-export-single-build-c8085686bf59431676895131219c92d7a1efb707":{"name":"resin-multibuild","version":"4.6.1-export-single-build-c8085686bf59431676895131219c92d7a1efb707","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.1-export-single-build-c8085686bf59431676895131219c92d7a1efb707","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bcdb4df883748a9db8ad85c668c12a59de34fc4d","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.1-export-single-build-c8085686bf59431676895131219c92d7a1efb707.tgz","fileCount":47,"integrity":"sha512-fXYy3wTra9t/Qqh9d8SpoaxKUTMggJmBx16XlvPzDz6736/MAbFm8S8ibS5W41z9NB1QNOsIyKQrNwCZ0mEkAQ==","signatures":[{"sig":"MEQCIGaoMKnOoEf8XA4+uyAt1YQfijFqq1BzqGCVyMItLz2GAiAm12EmrqQh5FqZeKMFkR4s9zsLnO9ap2O3tWAaNId5Fg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew5sYCRA9TVsSAnZWagAA3DgP/iUoG6a2jCAsM8itnVe1\nBg0NSo83juUR/XLRdSrirFZ84KRzLUa9h5WBrcdKk8R15K7U+nd1p08CJ/8n\nN/DKVqU15jMrxiJFNY4i2StXy+cEgds9BEsJ7WX/vOQgKWZ/qxleKROCFVQ+\nQcbqf8x0GOsSS4CPnnGIpND9zGUCuD1oTuorsz/AaZ17LTVFXPdeAHK2Te7N\n/6RmqQCzYOJRoG0vw7NRQ2/E9TNxJJHdM/fhrUQzPxBy9qPEDQk/rFS5YANT\nZVQWSM7DYrqlfPZoRu+DMWW6rmMLHio2yozkvE5hs1WlrhNRoIODAPtuscr9\nKso/TeRdykHUxOEas1Tk4DlvF7JPAnKi/j2z7vRJDGNPFZqrC5g1UC8Q8gF4\n/I8DgmxrjaTAmvnmByJYSFzYDBoonlNQLLmOOZncF5YEyfbt3f9hWDZDmwPz\nCIqtDy0xs4VGIq732UtTfCrNXLYVEi3FsxPUDBK56zHxbID0dBOvNn92g1U0\nKYzUcW7D4VPpoHJEdmdR9m5BM55DuzCZjdsu+z/v95gK5cO+rGDcQ5dkTu5b\nIa3waUFNNqVFv75e2iaVVmcQil4e71mdtvUYvuwzFxmwzNtgOaXeVA+M/Mle\nQzUicn7zOi8Hf/2lM4puBjBI7aXUTuoX492L7GHCLgv2VW0qYwsc8cDpc2l2\n7KL2\r\n=dffZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c8085686bf59431676895131219c92d7a1efb707","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.1-export-single-build-c8085686bf59431676895131219c92d7a1efb707_1589877527824_0.2270148556768643","host":"s3://npm-registry-packages"}},"4.6.1-export-single-build-cbebcac8c3c9a5f75d50644ba379ba74868b12dc":{"name":"resin-multibuild","version":"4.6.1-export-single-build-cbebcac8c3c9a5f75d50644ba379ba74868b12dc","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.1-export-single-build-cbebcac8c3c9a5f75d50644ba379ba74868b12dc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9913e5bba1587c0fc335b7332d6212a085fd527f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.1-export-single-build-cbebcac8c3c9a5f75d50644ba379ba74868b12dc.tgz","fileCount":47,"integrity":"sha512-CdbLO7saT/HN+Pb/WDCd9JjkDMzvCj+VK3BqEAUMgYF5doTEqX0eG+0g1rtiTsHhm9r94mpFXh+FvHrm4ILWFw==","signatures":[{"sig":"MEUCIQDXMSu9yA8eVLH6XG8LiOUMJPa6/bYI8o33rN8TP4aBawIgBJpW1ac3eVaTesomhoyEe5G0WHT+DoivPr8EJ7gZS0A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew51aCRA9TVsSAnZWagAAxl0QAIeJ7pFJt/4I00V/HnNl\nuwrShpNdvHqiVnxtcfMwT8bDMlmfKpcKbiOnGa9+GkKsacFEktlf5NpSTiRi\nUWShJKyKny7oPmnSMn2s6tpUe391CaK90ugqTx1KVNyWIqJOKGgsJ09AuagY\nHTWy66OldZ/cHESgnrJ6EbYxII9JWQa/noslLDd/LlXXXhCiBgARah3t4Wfq\n2Sw0iHvn34vJZCh8ZikTbmRVZqjIldTXLX5FDTolJXnaic/AQGNDn1kvBxWi\nXqNGsspsPUmz+ZTU7O9X9xpWog+eKpEwRv9SSwIb/ADuYyFXuSLJ6FY8O48M\nPTMNOY2hrvdfkpJt3+OV/mblkqCTnjLv/WfNHc80udVYvfzAoTYBAhg3J2UC\nlreFRQIqgl6HIeR1CWQF1OgHBFwU2t6XVG/teCUdEaaTxVDszi+U/KBmcti+\nheZoQFzbPlYzAkvKXdu0191AqPSlAo8qN/6FNmd/JehUvvXLOD6XX0ewVLgm\nUCocSAueD9i6gnFmosg6BgZIiws/c8ydys70V2sfJAseoxr6zYCDKE5nPj97\nRK4iiTXuyDquq3KG9flbF1jhICWcwPQoUuipazf8NKFuiTXjZzgFB/fXL86/\n8p5pDMIyTn1fwdfPfWyDqgNCECozAWMD+E0oFEWwc1McLZgHajEHsqwvtPXb\nQb3Q\r\n=MCfF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"cbebcac8c3c9a5f75d50644ba379ba74868b12dc","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.1-export-single-build-cbebcac8c3c9a5f75d50644ba379ba74868b12dc_1589878106572_0.1797733791618883","host":"s3://npm-registry-packages"}},"4.6.1":{"name":"resin-multibuild","version":"4.6.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"d65790d8160eb7abfb2738972d382001470bf850","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.1.tgz","fileCount":47,"integrity":"sha512-uPE3Y6Q+WkSoRpyqIXxPgUb5Anx7Cg1UN2iSfxANog3UF+gOackbxspBcWifmK4noFUqI+t54hu9KOV4rcMlRQ==","signatures":[{"sig":"MEYCIQCIsvDbrdXWaoF6dMTcrvSg49TNb6ZwGXUWZlbE7ZO0iwIhAK+diqAlQykLDVLzzQkRo6qybKqPBtLIbYNdGJQKyALg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew544CRA9TVsSAnZWagAA4IcP/24ALnrxS+8cMhtNuCxi\nDkmO+MXMQp+WanEvwH8qsgLzk4v3TL7Gm9Q3yjQ5/UXs8UVgOhj3sIVpsX1A\nyXeARtTtqaLGO9IWt2/rGVs4ltFBdfOsEjdnFd6whDycs0tWZXvP/dOgL/px\nvUZYjjBgRjqZsnDJbmLygOJ1W5l9O2TlkG9EBW3eYeR0crRpqgBuwdi2hB1k\nwCTPyDSCX9us86y60wie26XQpgPfDYNktvtq+mHhCswnBl98R2UG3KqaKDNR\n+vi08E3FNCVIVmwTOkngvoYQdjMLTNhJ/qCr2L5zodBNLCSYCGqUlbL7vWiW\noxkuaKsJHunxnIEEticit93djW4LzqptwSScRf2PJAJYLgdb3AK6XQ5ZhmOR\nDwzhef11hcjzu6fGXbW8cNBXMr5f0Gjyn9vguxReuc89WlokzpzCdyOZr7ZW\nXUzdnFL/zNuN0qkjw1MIgUX7GPgxQpqDgdu+R7v8QQkDDUgnkUlzJRBq26u/\nMWC6TZdeFII4aagxgkvTTzERqec9SKAXNegVas6rD8uUJwleGyKD471oV1ZT\nJeU6MEio7FE/DByj+rOGEsoO1//oH3MzxmE/RSyJgcyZbYAnped183Gb7ajm\n4qmT7PgwLQEfSTLrvr2waB4XxmBQ9maDf1WajsJbN9ddKo1hU5/A3ceuYyC9\nlK/C\r\n=4U93\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"3725dbf792e24acd3849bc893035e6e4ba556d04","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.1_1589878327812_0.3401002090580214","host":"s3://npm-registry-packages"}},"4.6.2-remove-image-in-build-services-30bc2540a99710c33e45adf58e1b4660503fe748":{"name":"resin-multibuild","version":"4.6.2-remove-image-in-build-services-30bc2540a99710c33e45adf58e1b4660503fe748","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.2-remove-image-in-build-services-30bc2540a99710c33e45adf58e1b4660503fe748","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"39c121a207602d55f8c9378e82a9df2117f11b21","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.2-remove-image-in-build-services-30bc2540a99710c33e45adf58e1b4660503fe748.tgz","fileCount":47,"integrity":"sha512-4zqIebIKrnpyuuhDCLRdlpwwT6dTEPneLdYhdM/RtMyjp8w1Mb1F1bfrvt4SCpJTNsfHezwR5Y6aG/F05W6RsQ==","signatures":[{"sig":"MEQCIHPX7Fi1VCkn/tYIFh4kIYh2fZAlzs4fFu+Wq1NlL5b4AiAYMnIH5KXQXtjKXayYXQ52NlR6yrsbxctqMJ1AtO/PQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew7qcCRA9TVsSAnZWagAAxccP/R+hrMAqshvjxiY6nlmJ\nfFafYevuLpY9SJO9qCrEtL7KjEA2sQkD/d9Z/0m9rgDmNjRUKy3xJUfh/IQN\nZVnphBzKIKp5EJA9cZlI6NHIBGubZ3tI1j5JWp9tt4dZ/pRwST8AKR2QRlAe\ntDBuktXY3VnmzcYpMI5i+XN2Ht9yTGYBuPcUk6PSiB9eNYPtATuxxITTtCST\nN9wG7aWs0WiEs3dFig535VuriLeNmKCS6VNPxFnhYsm4VNXZPLUno/qWrKUK\nRlZ3sXVFHjYQGYCxumONQG0vFtcj8L77oaP1KIS9Aa3k8LKqvGZH2OOyOBg5\n1zzdaPlN+MwxAsKQbblrWF6SCqqLv3HwgLCHQ8rKooXQ66+IrGe6YLLiqqN2\n4m7/XHTxmuAlgM547BWdJ5IogcsiwfqXf3SpZZRoYh03WmjoTXk+jpk6CaKL\n0UwXJmDFySA9iZRcaMoEiNsHSRJsfPhbqj/FCO4gJEBTt1BzeoDNKuyL+cRW\nEvx7HHrZCa7PHhd/XBZF+QnBJ7/uCkaRgRuVrtYbZgEjmHqmGh6VLdcQeimb\nhhGaVBUn5vB0j134GwtHqA87WsGYboUZnZtnwcdsA9TFTd6uAekDaCN5dA1u\n88tOKTAvseSuU0ZyR3rMt+6XY7kip/A9N3EH9nU4nK5Yd8kiHM+2TNM6mgBk\nLRjo\r\n=RPR0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"30bc2540a99710c33e45adf58e1b4660503fe748","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.2-remove-image-in-build-services-30bc2540a99710c33e45adf58e1b4660503fe748_1589885596513_0.24356225969017276","host":"s3://npm-registry-packages"}},"4.6.2":{"name":"resin-multibuild","version":"4.6.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.6.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bb02a724543094002c27395734d973d05db738a5","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.6.2.tgz","fileCount":47,"integrity":"sha512-QtQjFVjCsJadytEpb8h3xmqjagxLyYedKEUYkqQ7NDl9hG9cKBUQj3RAnjh4vVgtYvR5FIDxJxJPCc8x0YX4uQ==","signatures":[{"sig":"MEUCIEmntd7Yc1d63wJVDb1rOrheEEBu4Vv2+bdC1Q4PMTedAiEA1ivMQBcMWZhoO3LL6EOv2JE0Pt6NGoYhTUY5Fwt/4T0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew7vLCRA9TVsSAnZWagAAOvkP/05sjp37kRvwiU4cqGBE\nm9jh0Hrl23AhM2fY9WvXUe2IKRaTd1wDWMys+wA+slEm9Fnbrfo+e0ILIWTk\nOV6jVjtRHLb9KI50UvU0WkcdoPCjz/7tWlUCeRUJXIFPogYs0txkYRJc8IRz\nl+/cchXr9ffmnT4bB+yJPEaM/nRfYtnMugBPQkmQbVZZ8UGab/yS8sIFW5o5\nXJYEhoUJ+2dr09UUPjw3HcQ7Hcfpafpoe1h1SBLApgQXMD2naPw3BYZy+64P\n+fjQClvcklQbQcH7uZsOkvT0h26oNsg0gCkUhstgv5/VwzievrULees0SJ+n\n8y/4zuVVZRsDNJnxc16QJWaMvy2Jao7KJKYW0gRM/ozQQSY4TZrXojvfBfvy\n2YTZZPq85CNwumPpamdb2n/dEa0XLvaXLUc+BKuSNXLdRKAIGEFKVsRId6Dt\nzT78patIUctLcg/efk8RvOw7xxemhvmlQtWU5fOowhRpyFaN7Vry6RVsPm1D\nNEjIxGowk59zc/HEMCXT7a0rPhnVl+cfw8pR8vuERuqryipOQg+gliBCAO8e\ncHxqjKAvRNS9NUpLxXqw8tYHUa9wy/RQHI2tDe/JALqsfXgjQzIKdeO6xN8P\nPUwzK939VvUBLKIMpFxqgoGEKGxkclrpLGuaBwG7F0bwPHcBsCX1pHGDqeCR\nTCWL\r\n=lv2z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"d236398e3c81d3a6619ef1ed1d50974e4a02def8","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.6.2_1589885898627_0.9674461816456552","host":"s3://npm-registry-packages"}},"4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53":{"name":"resin-multibuild","version":"4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"772633c249dc59eab9b7f2e9a7854b00af63d012","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53.tgz","fileCount":47,"integrity":"sha512-6Dxw09fzptxoGtsXUJEtQv2HNRp0TRUc5xNlKoXp4haOCfeB2VEO+nLRSo1kcHkEHLCoh3DGLnJxGtJbG+1V1A==","signatures":[{"sig":"MEYCIQCzjUxARgt2xPU0iZGU8gxtvMLy88Wftp7twjj+fxlgdAIhAN6DEQ9FW0newiqoMEJiFye7oU7HpGUeQZ1u5HdRxEJ1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4053CRA9TVsSAnZWagAA3nsP/jSsemYX0uQlgte7BJwA\nDrGiqE+pkqZ4im0VL20JNgKELAv/SG/3QFmPnpXyzUsBWG/vQrsONdNl21QR\nB5DRXQUzrv0o7w4X6GMimKwIByuRut2hy5XKkQIQahKfEJ9qh2uwzx+1Yv6S\nKApfJqfmp5XcfvshkFoleUG/lfa5xOc/lo27six9eTNplcpmB1Ljqp2b7gVk\n62bEU13xR1l+H9sEXTocQVb68c/g0G9KSKcb7RMCDUoBBNj/XSj6CuiqSD+n\nNvC1FUUPovToNV/cuo9bRXtgU6dv+nVV6vFXZjQc/2FVWEdZAQyXe1vciElG\nfoxSCyAjtRoEKwMYahipsfvaev6NrUXvJLA+qag4HvnXfj8xF4X6aDTg+VUF\nIZe5OIj7EZDiw+wIGLNJTRCq5cV5oPIk9blsAFcfRZf0eegxDb4nUo7imGl+\ntHVI/b/S4/yI+MOsXMBvkcEr0cJUXB8Qc1G8lKpoW82C/VDpzenF/gOIQHtC\n2FfqSQucEASU69aS341l84esndIXLVdbpB9WGADl9R1OiozM5PlI6MPUvJ/9\n1p5i+OEBlwTyyBvgKI8k2CahK6bNyY00ipvG0IRe40DYpWZcV3i8xx1XD7hA\n+juqvaGAegzzzG1SxFxtTxEK8gKSfQSFUGkIFJXfnt2vj9AvB7xSpiAj7raQ\nVybx\r\n=FU9F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"b5633196b5ea2d7d9e159024ab4620407ef02d53","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53_1591955063430_0.8721197823132636","host":"s3://npm-registry-packages"}},"4.7.0":{"name":"resin-multibuild","version":"4.7.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ca1fb5ffb212736e940f4aa4c991f6acb5314a29","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.0.tgz","fileCount":47,"integrity":"sha512-/mrGtY6Nvl7NDS2OXGhffbGKfZ/gF518fosbg4GjGkfRPiKnMRLiK6TJq3sofvWWuKgS/wlHj123K79baXimWQ==","signatures":[{"sig":"MEUCIQCQQgnZXxQo0fmtkp2yWu8zCZMsxTJQ81/C6zAZ2LIKiQIgQmwsgGAdNdoRgAc2iY4SM7Fqy4gdN4K8yEVps1w/6Jo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe45ZWCRA9TVsSAnZWagAAgvcP/Rm8hvEbTrE0PXrm6O1F\nDJ1VULFkuez9MTZvn7CkpzzqJoveSDBkZrhf+6NMRfHPTAcy1UJY+EPl2JJA\nv1US5MvJaFgb48lVFUrRqi0GE8FUXNo0+xhqUYMiEWfyje6OKsPeTgH2pfri\nhEqHwom7bNHI3WzritVwfAg7LTwE9H6SoHefrm/HY6iqS9WW3qioCn6zIqiL\nphew/0FuBrM2zOhEfbrRkzFSrc23DbtT1BeLdpuqungXczqZ0yn7e5RLk2J8\nj9+28zZ0t1idGukMc1ozP3az7Ld2Oce8v0pFTJ6WRzsUOgKdtH8Z658BvdCg\n6C7mAPPSlT7bQaYJjaSFEFfJPsWFwnuG+mAEV3yBVJQQN1S7tiPfof25XjNT\nJ4o+z8TLZ1b6qtYEL1w/ZRQAoWywKonoxZdLUedgIYuuwrjo91wRb1P0yK8W\n2qnRdHJlJ5EuGzjJLSmnP2K9VDXeDJxDK/uVLv3bhxh+9+dDB5sAnPAOujBl\nfpgYoimZidORBF5IU3XgogZezu7JlwXddiXGMhm7C1fi/A0bcGBWgrMavRFM\n11kVfhVAtiHek4emyZWM/1eFisTbklkbm++HJXwwuyhdBqta1eVmYti7M3Cr\n4pOfbkniCEJV+AoQLYN8Lp5qXKcryhxSj7uVF7xs2l2nIWAT+bOTxVt2p2/R\nRyUa\r\n=podG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"dfa1c518c37b2a7225ba4aa1f433d40ae2a18625","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.0","fp-ts":"^2.5.3","io-ts":"^2.1.2","lodash":"^4.17.15","js-yaml":"^3.13.1","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.0.0","tar-stream":"^2.1.0","typed-error":"^3.2.0","@types/lodash":"^4.14.149","@types/bluebird":"^3.5.30","docker-progress":"^4.0.0","docker-toolbelt":"^3.3.7","io-ts-reporters":"^1.0.0","@types/dockerode":"^2.5.24","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.3","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.3","mocha":"^6.2.2","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.8.3","lint-staged":"^10.0.8","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.2","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.0_1591973462321_0.6598359866917785","host":"s3://npm-registry-packages"}},"4.7.1-update-deps-97f340799482fcc1d1ff28fd0b6b60343a13678a":{"name":"resin-multibuild","version":"4.7.1-update-deps-97f340799482fcc1d1ff28fd0b6b60343a13678a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.1-update-deps-97f340799482fcc1d1ff28fd0b6b60343a13678a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"14e2d60ed335955f538f319b954d6905ae7e8c04","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.1-update-deps-97f340799482fcc1d1ff28fd0b6b60343a13678a.tgz","fileCount":47,"integrity":"sha512-roYD8ZbY0D80zvVv3ybBo+dvf/seOeMxZfzsHM81sS+2CH/UnmjOh4/7I5bhPC6otu5ukyzDycp5EwE9l/vPQg==","signatures":[{"sig":"MEYCIQChHuLruCqnsWKrbC9BU7Rb5ouujJX0XrJce48YFw6IzQIhAPY1m1TMkrkHd2Uc1EdZS/C3x3eg9vJqxJE2TeBvCLua","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/OGyCRA9TVsSAnZWagAAoIkP/0bU9DQJCGBPzVJsLGD8\nbgjqIJq2aCi/ExsYUumsVpJOJoBa55orWxy0bdZX9+liV8mnWQPHGA5jaECE\n0tEt9rEbUonDYCzxDem2yCRnGlUaAc+1HGhR4NN9bL8OziHUAWp6UYJ/6YTs\nZdicr90y1PWR/95ddj6yuL1kQ4OsxZc//YVa46xDSC+A06lp7jspYeBLXzgB\nTJxyY9nmPei560zaDB6poq27UhjiwB7rv7jA2NdOXnSzou1OyK3SYZKMC3vh\nTwjcgXjfXqbrWoCb/M5TMkF9ChS5BVW81vXu9hibUHD9+QqpORUm00ubVijs\n92MTQcJ8zuk2Nlu+7BwNOa14ZxTWvU81SvqQ5pcTZ2sfkC67AOC34M7mPXqn\n/RS5ewTLgTpdkP4b6wYXVGToX2u8L7cm7H8BcPit5NQ7T28SgdzSNMoL7sUJ\nPZ1NVsRoeAxhjZyQ2QiQds2WPdSJEGbbsArYy35GsgNeDfKHtGIzqQtQVuTl\nDO6Dmpwh53IlDR9wv+3BEhDLq0NPXWpNK1Qr/2v/3OEkVuKCJwtUhUzwvrgG\nDO9KREA66xbtoBGsYOvbpV9gKm+AmLG+tfYcKzzBZ3QJ9i+MQVbNZmPqefsJ\naDFikWQciK+5u1837lOs9RAQ1cUq8HSiAhBHqX50BjR3ZiKXBYdpUb//10e0\ngmpq\r\n=bNSF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"97f340799482fcc1d1ff28fd0b6b60343a13678a","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.2","fp-ts":"^2.6.7","io-ts":"^2.2.7","lodash":"^4.17.15","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.2","typed-error":"^3.2.0","@types/lodash":"^4.14.157","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.0","@types/dockerode":"^2.5.33","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.6","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.1-update-deps-97f340799482fcc1d1ff28fd0b6b60343a13678a_1593631154278_0.789440822706414","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"f917297098d5584b607fe0a9a2c839851c2d2720","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85.tgz","fileCount":47,"integrity":"sha512-fsCrQadNWrICVXKi8wfmyp+w+kSKMYG3GflmOPf7GmhLvz3hxUm0Bo70ot11IIVw3DP+/jkrgXbifor6sRRJbw==","signatures":[{"sig":"MEUCIQCl82+bs+RoiHNYHoEk354s9+dIvV1JuOdyDc4fw4k0nAIgfM/wEyxo2YBiwNEFVSGzH6mdUXoo3g3AkekxHhsbPrE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/dNYCRA9TVsSAnZWagAA55MP/0ZHU/i7pGcHfNbsA13/\n6Xka2QQ/9DtFn3m9TiRj72rW4DHyJOo6D7HB52TI4+w3rzt/8AXAeGrGtcWI\nJTK/PhSaRxsPuqyKCFbCeFKqejipKXutmc3TaDgoIlBQpvGjgv/LiYy3Gmo+\npsY4IPwdieSn6J6lA60zBtpx346flX6hI85OBHvfoKSHLQHSscVWflKWKBH8\nPBUJITM+rNODpenVteI14/IWWk7SznODnYkxh8FnMqO1fWyzpRuWStMGvmvO\nXaP77bev7RIsdAFkYZxEo/7hl1yAna5Ep76WQxFjkEsYRESVmHEk7KaaCdZO\nhafgRJ/N0XK+25MGA1ru3yDiqeBJFGbRVJlEepI+14JK1vAxU2m8SuaQbRuT\nvHL6cwSy+DgFD37llQWWAv6kd8PfAOL33JdT/3sryePgU8uwQIa7CpULy0iR\nc+81mN3XP3sz5upU5W06/JvExW27W8KqV0uwkNKhuiYR2KDidV8mbDQAeLaV\nvz7m8hgM1pfW0ene/z6xTfZ8/8inJIwwm7UPOALOOp//2fvxmLXAWOCC+qFP\nl8c5akLfhEtmGuNEmAg0E8mqE0FTVV8Nh5HwWo+CwcD0HAICTAB8OgOM31vi\nyuJzhvPnOUN8TC1jintszA4RMoLpm/G4K16LZOLfKTTdfIRYvZgS1RPa/j+Q\nHVR1\r\n=/dj+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1141e064d9ef6f9aabc389aebdc61cca383e3f85","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.2","fp-ts":"^2.6.7","io-ts":"^2.2.7","lodash":"^4.17.15","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.2","typed-error":"^3.2.0","@types/lodash":"^4.14.157","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.0","@types/dockerode":"^2.5.33","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.6","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85_1593693016542_0.8865315935625477","host":"s3://npm-registry-packages"}},"4.7.1":{"name":"resin-multibuild","version":"4.7.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ee96f36c39c200b38c68159e120717c25e712fef","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.1.tgz","fileCount":47,"integrity":"sha512-wUmOvNXpmXs4i0+TyAsvCeiWayahP4DOkWHsKvbP+zb08Xn9931IaBWp4Ua7d2eKCzMsq2q2tTk8DGvTlK0FYg==","signatures":[{"sig":"MEUCICvyMnuyKeqDlpIvK8zTBvcmT3uoFPjnZ5kK3+X7hl9RAiEAlGjmaspdLcTKzMGkpOr2ZmZV92Utixxo5Kkcu0qeD9A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHv9sCRA9TVsSAnZWagAAf5sP/Ap8b7fyeFKjl+b/+RrC\nrYWgKARZU4M2xl9dcW/NZG6Rm4zE41Qc6Y+K8nte7RLhK04O1/sJ/8Az2wPd\nwzRXEyoF8pflUEHtiRzbThlm+AazKl7Jcy6AH8Iiw8Dvk78hBS/yH54Ljg5L\nLD9O0UKCNl2yfnFvoiWg2FRcmuThOO63Rr85qmW4Fj7mOpQYNAFEOKrzZLVY\nwd6HMuk1JSLS/vF/6g5ey8P0Z8IIm7cYE3xg1y0X648BdBjzT8clP/mPT6/h\nHendVQCdUIiROB++MtzZz7Z3w12vCnRBsKoevtBgqsfCxmKLC0lu66yhdqhH\nFnVhPu7XkQ7NfxlwETHhofbqD1Vw/ISGbCNYifWWWFhTzZX/5mutfp7fr5DN\nvivBeB3Ggk/ppX7c3lHIT/5Bf4YtYPT5gijaeuNg5HrMfNXj7U62NMYaR9yR\nwk2W6oetDVqTS76LbBemC90KnMxRUwOeCIqEX4O/V8aS+kzQSk2gMG7X1Jas\nrs2ls1jcQsf0T6iLUgTTPtBNQpTNtQi6vHF3qnOV3dxEp75TzC7R5DZd21mF\n1MBd9jhY7sq877LoZhyXNTkN8tyBZkhTeb0VvQVgFDQ886cgOLu1rPURai0a\nkB7K4KXCIWRoNDv91/H42DrQXA6et8hExEG+wR/sutHEKe76dN6moqhOyxox\nLes7\r\n=+x1F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"63d6a11fd6042ce834ee39de7d15453c6d8790f4","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.2","fp-ts":"^2.6.7","io-ts":"^2.2.7","lodash":"^4.17.15","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.2","typed-error":"^3.2.0","@types/lodash":"^4.14.157","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.0","@types/dockerode":"^2.5.33","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.6","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.1_1595866988424_0.6263421354924641","host":"s3://npm-registry-packages"}},"4.7.2-revert-breaking-7d1328f79a4434479c5d3a0e575da1fa31b048c2":{"name":"resin-multibuild","version":"4.7.2-revert-breaking-7d1328f79a4434479c5d3a0e575da1fa31b048c2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.2-revert-breaking-7d1328f79a4434479c5d3a0e575da1fa31b048c2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a7537e415373e6d0131417224ec8b3b1800ef452","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.2-revert-breaking-7d1328f79a4434479c5d3a0e575da1fa31b048c2.tgz","fileCount":47,"integrity":"sha512-kT4EPyU78tTM3Pwwc6fU8HF/8NBETiz21rqLvMZMQVUJl4Ma++inNaK8DP8mDFJo3LnGUCfdRpvJhRC+tv0Dfw==","signatures":[{"sig":"MEYCIQDatwtvJUHijFfdyOmkNa/yDiCIfRzPBVJCfqKgJaheXwIhAP4GdiSz60PWfoAOZ9PWpPquS/WfPxAFQ6JgRxMkVyBX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNO6yCRA9TVsSAnZWagAAA/AQAJ1ZERff0M1YyboucKLX\n7ZV7z9Fr1NAoSvKkPsJsfyviT0skhB/jh1EslcAYBO31s5C9OIUHmk5Ezhnc\n19eOdb4oUNG9HYLzcZ9aVJ+71jiH3wRDecSjDTSsB7YpZTg5x9Cr7Ll6558O\nA94aqRimHsI/KY5U+Bw/ytAjJbspEYbS7eFzGOprLCwE19hTXDBb88IjXZOy\noHoqmvLAQwNKlrNxVMfV5NRSnus67fJBy9/daGWc5VL8/VJdXHdSdLaBSukG\n5sBbws7Vu9310ayiAV06bFaVHPWaC8xdhuWftkGbweqJrZlaWdTL842pIUNq\nZOnC0zsN3sSt6I1M9bmyWL4bN20xDwdbb+jUhqVEnBO82NKKto4/WeK+jOWN\nyPdAfKgjzpx1pO5Fh0iam0fdqbxhWg72bawmH3vA017WAAF9dMSqQgE7wx/Z\nynAkV3MxcuGoQX3dCVE9+9hXpQ2GSFcbVw5Br+Gf4ChanbBjRklF4ciLOx7d\nPIG/MmFRIodqhWL8AbMiO2JI8LkeYjctNGFi4r8NVQ9PA+ZGV/5nwn8HJE9I\nnUz2JnZdrBz22lTwF7TEBxOm4SGn+N0Y9s+SM38jeXSgxBQNDvDtQjz+NXHC\nKnO8WmnvfVVj7O1agXzRuDrPkba+1pGH4cTeWTmoojFyluhwn0F3D4AZqn06\nk+F9\r\n=gQOH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"7d1328f79a4434479c5d3a0e575da1fa31b048c2","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.2-revert-breaking-7d1328f79a4434479c5d3a0e575da1fa31b048c2_1597304498091_0.31105191781157004","host":"s3://npm-registry-packages"}},"4.7.2":{"name":"resin-multibuild","version":"4.7.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"d6807ab9b2c5eab113367ce603db2783f3317504","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.2.tgz","fileCount":47,"integrity":"sha512-2Nn3wN09uQRuDrR0uOkK7bCKheSZ94rpY6ePt7IBVyxw/6EE0GfqSj/3y2l4lxzMFRfT5K4VDHlj5DUiNCKYkA==","signatures":[{"sig":"MEUCIAIEB6mhCA5gG4AcYZaag022La3bG50AQFUNXO5rUKCkAiEAivpolwqHuegrsiVOITm6O1tdfBvEmFfDSyCtCT5AD2E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNO92CRA9TVsSAnZWagAA/BQP/RYEmD7Av6CX2wlXTO/X\nMfsIcO97Q4qEr82it16smrRJHZ1W7nBenxepyRyF29TFQTPfkta4eO8sjpOe\nx0qqJ/vY6as1LmSxj0dd5iVrVDBSH7swDKczdWONN///RSmbLi1UWmmM3m+t\n+FQFd+EJRdTizQvYYCLUP26oPK2ccYocLECYijBjeFKt+/6UNsMnvEkmAUa7\nqOwy4Ps3SCaEJah2SP3fkrKNZxTdAu6uR2aU49rIc4TmWg8EcRHiVehw3pir\n/tOHnyEUpHznSUnv4kccnLzDkFX3qO0qt6Sz7Br1C6c1di9WV3mLsl6sKKlI\nXiI/EUaJ9BAzEhfE5qCE5FKU9o+hg3TE90DjA9yWvscYBv1MSin4x7ztsz/6\nlSuqod6m6nKzt7tizqQUAiFC5yK+ANK8zMCjfjk4ieYKcxp2m2ouTdwVA8U6\nSGQq0s8EOElkCOl9uzMGOYoiw6pDcqxKB5Ptdc0AraOQkL2fddjSL0409Owg\npQjpJuR8i4UtMc32YXrkEkhZp3fF7dRQczja5bwHbjuJaouBm4LbScVaPKjs\nyoaTDLaAUzb0lP5dJ6IEvW/kM1NWMZa8utdVxXSc717bHzCdmkk9UPsUWZ/a\n3VMyOEW6eMkUdLxodIy2+tamU/O/lJ0SXUrtUnxu1nicy5mDvYvhsxf0QIPd\nsKFN\r\n=LKGF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"33c1c1681e893a93857f9084e0b721a78acd008a","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.2_1597304693788_0.23903415572180808","host":"s3://npm-registry-packages"}},"4.7.3-nested-changelogs-13421b61ff5e33c6b6519338434474440a93c48a":{"name":"resin-multibuild","version":"4.7.3-nested-changelogs-13421b61ff5e33c6b6519338434474440a93c48a","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.3-nested-changelogs-13421b61ff5e33c6b6519338434474440a93c48a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"339bb9cbbbb9aa44d7f97e56b182c99a596f5498","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.3-nested-changelogs-13421b61ff5e33c6b6519338434474440a93c48a.tgz","fileCount":47,"integrity":"sha512-K6gES3Ba1U76N5mLQtcedMgGXteW2JEh+zJFNjIV3oh3ShzrOBV74v334LxaxyEbGJ9O1XOEoxjVcbqBYagoiQ==","signatures":[{"sig":"MEQCIFFC+x8Wn+4JyNCJXJsl/XahIYs6YxOumiqaguJEg4nUAiBhJl9JVeQzPQk/15+TvzI8VUyb4Aoj9Nxfb3if7HaAvw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPrxnCRA9TVsSAnZWagAAxRsP/3MvXmRmieUpJDU8qLwo\nWb23lgGPx9O3IUJk8yA4cliuZ30oyaKsFeWial52aZl44PDHD4ufn+T4xToS\nKMEQd036Rx1+7ms9Siy0EANRMyK1N0X8knI1B9WLP3++xkZTQIYGMarsFucL\nLiwdUMCXaNqGZUw6uQYWeeJPqsO4w3UCXfQXg/xKc+k7XHTjSxWwAcsFmAHY\nb3NM2LI0QJEWk64v5OaZSmYRegF9sMlmXKQtZZhyiMP3iLdhQgPNm9JbgMLD\nJyF1te+a5JnQN831cisO3chTkGIYPSR1Yc4QXtoZ87ctp2+Rq1s0n82EFGUe\nRxff3h9Q8vr5PkaaO9d6HoFfga2U6vu77CrvgXaO0rBxUFZfNe+uDzTtz4T/\n0hRfgQAtLEiBYp3x8BPPtMbGlB/A3V2wiDaACCPBZNSRKttKWhYd9hoGMawZ\ndWlBnTLywHGVFy7EVuzs9ZF/QRRDDH2R1x8/wnG+LeichGPcuAwWBzZySBYz\nFr1YatFCxZijwk5JvtwT+dWR7w0qtgmq5fztYNp7Pn8A2CsOCZprNcNZ9Lbd\nd43Z3tdcytaoREUSBaqg/Yy8wx5WdacdfaLf4pX5bwUslKVuf2sTOPS5a/RL\nN2usdRCf5EpUtDJEJ+JAjMiB5Dg314tV5CZMtoXMtxqjNxJJVaKE+RnmJ1k4\nILYZ\r\n=NJWm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"13421b61ff5e33c6b6519338434474440a93c48a","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.3-nested-changelogs-13421b61ff5e33c6b6519338434474440a93c48a_1597946983280_0.19800119520927506","host":"s3://npm-registry-packages"}},"4.7.3":{"name":"resin-multibuild","version":"4.7.3","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.7.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"eed659410b2c79c2bd488df7bcda3667d8def6c6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.7.3.tgz","fileCount":47,"integrity":"sha512-AMuqYpqfTNvVPcjnu+IrN0ZshLIlrCU7CEWqqwzJVutO2Ss1lpc787PaoJmaFPzj+niVPrjwpdimkOX+Wnu3cQ==","signatures":[{"sig":"MEYCIQD2ivwTcUqdJFxR69QFbC0ypzOsLa0kMEAKfp8qFkLTfwIhANlroI0XehhP52+JugnF3SMKtczselfIMGSJsF0PGU4P","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPr1ACRA9TVsSAnZWagAA4bAP/2gPTN6h7pghE8yOSWdN\njyflh39DRnvjq+yAy0yGSwfW2I5R2a07HGx27UxE8HeZuL7um0wqBS4JPQlE\nyZdLTK+7JzOITMB7OvR6kC5TUptS5RUmCACNksBUTPJYVBj39ruXFmLmRUDF\nBvY7HJiSBiHRuYRrRB6AgByA59ru9k+MujO8Y7IhdkUUDJC9e3XxWvYhEGxA\nlBUcYBvMl4esJ7hrVHEVU9GwSdnxHtakBwzsZTLGhiFWYJBX4+WyZts6e3Ew\nYDTDQud4Tqf3sb5qZ56XL2Fr3sxe9d920g1AQG77OhgeEJvlhH9CPSrmrv0X\nnBMuL7Qbs72jwkAtXpCvChBUBAf+7FgB0zg14UjAkboIU04kPacjdA7V3lKi\ny/+Ra/aKHf5UtrgB7GRUV6uO8GESZO3P29q/71b+Sle+j8kREW3Yr0nnfrOq\nB1GIWEy0ETQ+6r6v30aZIUUhLsKcHHd3/QCXCRpfgqHuS/kwAvHusR0Vrnrx\nsW4/JRkh8afKoBQyhRo84EmHVg4lTPkSd1OEKxoVrrdZzumaiVRBGPmeMB7v\n6wRrGXM4lOnZIAdUSCyH8bhNUi9enwU/FlX6C7yHNcjR44S6Mm8OwPyXjsvF\nmW3B0yTo221MQ9dJ1zn06hA1xKO6Pc7we4Vgn2Du1wIAOPc/tjPkWB+1yKZB\nfXNY\r\n=ZW4f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"8b2f4f6266073c3333f2a997dda2941c07c601f9","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.7.3_1597947199978_0.4062596788741386","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a63aac93b59c932a28e3553366618c2f4cd241e9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1.tgz","fileCount":47,"integrity":"sha512-KohmkCHPLp6Af+Qr7G9/stce8wr9ads0WV82redGIo0dWCSvN45DYRTI6PJB2zazWCwPiFWv0dzqvSJoKynn7w==","signatures":[{"sig":"MEUCIQDB6PjVWBI7f2WQSazHJ4+0PlIJz9K/g/up175HMD3YPgIgJRn49NblUW1VvH6vihVfLD3a9HYOquY6h03qCzWFnK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdbowCRA9TVsSAnZWagAA0RMQAJ6Fm6B2SI3uXTmbDxjZ\nfILMKuUdNV5GKMfdSB13aiwIxaokSYkofIcVsrHP84vHFEHYXn9S+uqHmflG\nJzw+78S0I1iRk3hZxr3WVmSaKH3NXqy2uVZ3oXSLwcWPeiXdBxRF0dymDfjN\n1s0xExWr+vP+3yLBdE3dULKtXPOSnnU/AykASOgSiuOwUBSo9mnzsQc6Tjxf\nlqEw11Dmg6musuPoD7htIjebPqQgGBH6L19ynbJ7gim0KbgDMGms+HGyEKQp\nxURHb/6u9qNxZOVO4NfcdMTyxvILXAmxb4jpSDiisvgTwpNMp7ieIBiQBI6J\n4CVN4VEehcD48Ne4U2SogN1AZQo1ch2WvPs3domZ/7xsgdI/g3H4vDSxs9uQ\nMJha9Z2tQ4RP9Y96OnZQunaBc6tJKU0fGL5SpllCZ5B90cPGwTE141+kwv2h\nDb7q5IlH6Z4Ob3wn/o4YGSan/LwTiSsg0FVsjwlugVxdapep1iiwyXNkzswl\nT89q1FDI6o3701M5Z1hqh1cz0hxnTbsPRTbU9tfIgc3WhiCSJ2Kh4gckAC6m\nZONswrpBjLH0bMGbrqd2Zb+WB3GjPCnEUpMScKbMzaGAX6TiTj49EPxIwha0\n7OrWl+Uw37UOyzTrFD7hnBO+s3ePuMQgs/FORtcE3yz9hauyn6m0bv7+9+ms\nyg4a\r\n=7sNK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1_1601550895872_0.12584111065889036","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c6265097a66ac7c89c6852d7caeb577948aa61d6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e.tgz","fileCount":47,"integrity":"sha512-nkevYEI+FxSVBEp0fo+A+u5lMqaVtlHMnm8agEeeSxYwQy9kl3YsWg4BCR2CuHmGfJfMNqUvv2HDgym5bUPQnA==","signatures":[{"sig":"MEUCIQD+kJjV/N3Bkwn/KYko7qIvVbxH2CpyD07+1J9dbQLelQIgY/nxG4xY4ABK+jgxaFDg3CF3lQCHExLXlwJ8f7Zoz0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98953,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdb7ACRA9TVsSAnZWagAAqz8P/0iZJarp3JcqboNVq/72\nNTqKvsUShV/EaXBBNgyvx8rmoRt+vb7FrU1Pn5Fhs17H16qcDBdOn+ndkIj5\nerlcIlr6B5+9+BK80PpoRVMXl6fixR/M2rEJe1Lyz1uhxFWK4TsaQB99hUVW\n+j1fEdf5Ja8+LWRBN6qE4EgBHRwjRc4Qh3I5yHtRKcEJljssvSE9wDD4uN10\npnCCSrcbj7dWz+5IgBHrMeP/EsVFGYYJv9MKgyRdg0OmUklTAnzxWe73dqA+\nP7bZo1FjjK52RLsluZRQtg49FAjAfCGZFD0N57Pujfq0FyJTc5egRGvtlzFO\n8jHnoWbV9zzyajHHSV2HzY06dE1wRStHClczTxgTK13Et0VXG308HC2dTqtu\nQWdwhIoYZmWcyHLQ5n0vgB1jViF53mSN/nAbu6gDUCBpH3etwcjThAKR7FnP\nfcjvCJvwkdf3rn6MvbpbqIv2/MRUsuz/6D+vGVqZTxAuCSLchv13sEqK8S49\nngb6AZ8BApb3LhysU4/KL+eEUsDY2380pfUNIauumWOdzARiCBE0Qjezx7zT\nU5VRjFJreOiYSacvxFdA4wKuQ0WoCnxUe0ZUhiy3Lseyq/OT4q1rFdXaBMHV\nWh61/Y/2R0lfJcsPMgL6uAeO6NuSG/1w79U0QWvuHbtitbDk46ty4QrCT+Lj\nSYsV\r\n=LObX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f2b81792bdba5700235f493ebd5af79dbf6d4b4e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e_1601552064275_0.8803902236847436","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ad27a16ab99aeacb63baba1a390d9388b52ffb45","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6.tgz","fileCount":47,"integrity":"sha512-3w4dAEA4FUVrG1LNJnN2lj53sDz59GsgfDGHT5Ti9u3UuF9UDEsNy24ML0Zvi7xQk41oGN2D8cJRR32U4LSVsQ==","signatures":[{"sig":"MEYCIQCV3IJHMGLrgGLaoVZJYuq+ASFGRhpdrI8nCUnalhCE3gIhAIB61bIB3vya9O8qiW5PjcDKkb0gQVGO4xlooDqLtb0t","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdcFKCRA9TVsSAnZWagAAlb8P/30nfjo3G7Bd4O5nLuox\nRoOtpHESiByyW6WHHHeApZF+pS9bhUwIY4DEuGo6yJQFO2x101n7pGg81mIW\nS+4IK1iAHtLTpB0uB3ffQeOm5QXCzzhXdp0kkAWxq6WiW3PU+b7cpZxBoCkU\nMZkIaCuZFYkvPVMSZr33RMuOzUWDSIFSMfGpDiV1zkIpX0IJjVdk/XvevEJd\nAOKeteP2uKl1ZDkAxrXSxMGDOZgLjk6tqmoL2ZpspB5MJCv3Y6K2SwUcEKry\nqHskYBXzFK7GR4ieXcAeyDzf0EMzBMEDGnMIprYwLgVZuNAgpEi3HmPZh4Tj\n/fEOSsSawHeupqHnclZY4ElQ1/FXLGqWlsGag+5gRhApMrvBbU0TvZpNYMzf\nONH5WSfLtpyd3llHG92Sj6roPWoETq6BmsO7xQx2Yfm9CSDYUeEt4g7KYfGU\nxYXlviwl7oMFJr7sh/aBIHIuYqHlQWKFiyq/4ZOFwT+nDNOJ+s2GAXInWxaT\ndND6wufcoMEtlgbzDfIOuEPBP3gETHbTGJiAD5zqKmqltPVf2WMp+ONa+S+Y\nVg05iafVNdK9GQT8JVSuKPOiD7NfzUT4qbKUf4N8Hr6FcpbDIvrDeW48TNGB\nQD0EnBhV0zBBbll5NdZe9sCVprnUiwmDO69CvE5FAzaWMd7/hckqRut4X7zT\nP3CX\r\n=lyxZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"cb749ca755448928217ce34a65c7125e700e2bf6","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6_1601552713543_0.09747511313512147","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"84cc30d492fc2eac5add0a1b568a9f9d7d13c936","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0.tgz","fileCount":47,"integrity":"sha512-fQbDlKS6ki38dp/HXPzow1GnWGPYJFOVfFQm695HsNx6kMa++VjqKEY/cQNcXifCfIbYg9/IaJA8MOIrtAsugA==","signatures":[{"sig":"MEYCIQCneESLV7LUF4zzmtzgvkrm2cTGD+I0I/8a7eNolpbh3AIhAPl4GPm3wiLWKr2MFUBmMFVtc5f6Iuxo22BcYIPL8j+3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdcvGCRA9TVsSAnZWagAAUjgP/34jpeadI+24GKjptRqW\nfvDYKPxEOceCOOFMJZ2IsLqLNL1SA085L3YPp8epnhXqgH+HiYUV0CvNYG+q\njN3PoQBWZXlyJwZqxXqps3TA270Gn8R+FlHYZ4W+OLtkg4HMxk27lf0bKfcc\nMy1iCyfX59y5JjQbz+htQFS/zezCu7YL5qVhVABI/um6EXAYFQzwrj7adXCI\nKtsJpKJYYEIABp2cr/fn+Gx/zK0hcSp9ZfcrJLXDELwcAu3nQXB5/8TT56RO\nC+r5+c8G2JDYXb2N9goVVJ9HsNoqKgpdk/fmtkPZWQPrgHUahiW0xt4flZjC\n6kdJHawLFRrQVqXZ6et+iuPNSVJm37akP05GcFh+dKUDjEXZVpihcQUNjHdR\ncFdu24mWDINVjA5d03R/i+QZbK4O5Z+K3uspyikOY3IXaT1nQrB0PqwgE4R+\nBC1LSY4o89gujEgHNHV++EaBG5twm79JCT04RbydG3DF3NfuXcy8ozWpQBco\nYZPawV5Y+yAYsXJogitJDy6bhDWL0x1Tj7VMXb9JneblB40HDrhAcwaTgDOO\nP2DY1oEPPUVhLeVBMq/xyxP8ZMevGPHfXXEmteOwhCEkID1eQyupoJLB2Cm3\nxBcMtmDmS8K5PclyU7dIPrSU2f1k0FSiABinJ7wEpu2EppXhXQd2Jnre3gzt\nKWSA\r\n=KnaE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"afb2b40e5ef24d32aa75f4eba3623688774a82f0","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0_1601555397806_0.7063690080924627","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"1217729284f74e8d7793499004641080bdd76ca9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385.tgz","fileCount":47,"integrity":"sha512-5j4C4251BuOQd9ESbIM3P8SyFNMJE0bU/oZ9KaLpZiiRc+cJQUGhlsjrZrd8PPp6LnfDS4yXTSKbTZ9/KT5ZdA==","signatures":[{"sig":"MEQCICq0VwoGTKCLgsWyQS932tXOWjxVKBZe+nKgirjQzOwPAiBL5CY2osarJs0dgCAobbCYnN8NQBgWobDN4d/JpHy61w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdd3YCRA9TVsSAnZWagAALHkQAI+t4zbtE9uSp6X6QkGM\nIk/6mwpegso3CAg4n7eY/3mHVfX5FXrkI20F34WaXEOGsAKqdr7xYckK0b8+\n2KG56KRR0Bnhql0K1vcdilGcTnzad+qWA9CfQlBrwZtl0KkIwK49dnLnVapz\n53IHoEYmIwWkWGqrNYTJzwFN7xpu3eN1d62/fYOl2+6H4LjltLP6Negoo7Ss\nKfRNTZbH+MOPb96DN2bz6HiG+l8179M/D6cXGfBzoKN1CHnnf8jknbEap6IS\nkywgA6RUtc0uclvDV5b3TB30AZA/1PS0e1Adx7TiLElRLJxbZSEz7C5j3iLs\n7ZfuBE6T2QI5c0O5iXvAIoNAx0rmKYDwB+7GKZr3cPgND5NTGNp1MnKG7Sqd\nAqiBCiKdl9NbpVRZ59cOwVplfByD9JJDRysHdWAh2ySOl53ikNjCu9BClgBs\npNyNz6XW/9KNl/dd86WTAEelAAc+WrALJknUALtI39bs3dwIpOp1kebGwo4y\nVFGiguRChbgqQUQrRdtUabMaKVvFqMIY9sewWz0zJLRZlTP07IseEHZ+/2YF\nFTR9H8N+0FcTsstWNSQ5YzHg5lqjbj9bSez1WVN3HHNTuXes0VslWat73H0X\n+YYjArQUYxECQhfKVzdHk0Oxg+E4lTVfq2HOAufoOwfHW0sdZvS16GDE9LmO\nKrZn\r\n=220e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"58c46a4fc3adfc1170665068e2ccbd97a634d385","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385_1601560023757_0.1750569129147015","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c8b6543025cb40ffb7dad3dde3d5e98b0ec61881","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28.tgz","fileCount":47,"integrity":"sha512-UE/iHw0Myh2FobhNN2btHH+rJusyxjPt/xeouNQxL6bhH0HuQ19PEXokxOj2rW2EA0zjMUFJUDS1JM17Q1KFVA==","signatures":[{"sig":"MEUCIQDv7cq6b/zZcXp9LrucGfSzlFQVquSOT7VkHf32+5Xt9wIgC8aYfgbfXagUoO3elbTDvcy2IWpVyC71d9nmXV4wfv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdeCaCRA9TVsSAnZWagAA3mAP/Amlzg+pKVZCka9tvWir\nT1VULHeLiPU5ZPxZIJJa3AUu26dEuh+1vO3J1VDuqePOxdFvvpmKCOCp5h9O\n+n4Zgwb0Si0/nVXptulhmSyo5bk+bhnhUoVvXQcLExuwmHsGRLGFQSpBE4Ak\n2CHT6BCJmqMlGIIfK4b+jQdR8MPXLJzdfAsmh/GhJyTkjbXk71IElTa08BdO\neyd6bDOzGkp4sSucMwOzf3dcZfq0Z008By+VNMH13U8XnjYMgOTvVbyG7buI\nWeKdsOmJ0XZddiw+nJQQaIPYSkjrKazD+yzsfPrcDkV+ErVjRH0pzDGamtm3\nH0Q/SqsCkqp+BEXqWbSTEmWJHRXLs/B0uTWB33G7hAfYNnI5i+fiDicwvmGn\naI3Ixa/IrNcKVnKZFdN74s+cmAaZO8T8kFQnHrI70ZFZ99BCU+9Dmo+M6yE4\n8cS6c5YYDN4VaP4TxOX+E7LamL0lIvBw9yN6frKiv5J/GfXWUnJe+wYWCfjO\nkkbaMGE1KP/HReTSMkb/LxDKsmKF4rXnbztwPinKI1hSPIz2gmFzIAUGOV9a\nIFgaE+N7fSsI6myLcwgbwJWwtv6g6LLl82tnUcO9YVtYnBODJ1wj5wQkqDTk\nKmnKXtWBHVhfjQgiIK/AEkFbhzBBXmRZuXJ89BpuCJZnOubYbBNvZCqUmRbV\n6a44\r\n=Y1Wo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28_1601560730340_0.1625935377869463","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c86a2518da3225c3487450d52571809ce348a9d3","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286.tgz","fileCount":47,"integrity":"sha512-9KINxa0uG5nOzwKR9JEcrd5qYweSRqHF8mIop+1MpkAH7jtQcraGF0doXl7dlZFpRItMor94RbWl3NcLAG0VaA==","signatures":[{"sig":"MEQCIGOPXfT0sTMP2BmWhNtsBC6A2Vpqd1SQS1P4t7tJPtQpAiB3y5/pqIf6YcgWdr1b3gGgPkH9xKly+V4EX4+EPVXTSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffDylCRA9TVsSAnZWagAAfWQP/2k0mnBu3s788t5JArsL\nG7o2qa+B4pDrMpFBsEyTB+ncvIlOs9UtKsr5z3jFglfLx8UNAmxlzHbiFqqt\n8c/CIHD2Yr7RKlBdeliufZIWpkUrsc4iNQMz9nNJLGL0EQpskR0Y0TIifaJL\nYH3nQ++U9JZwjtwST1Yyy9jSCichzk5xfUCUyeAvznT6gfTtEu341KAlV4dY\nvN5FCQOp2CTjkTybAicnwM/0Y+iCkAxlY/lvF8l6GOPrXNMfDX/bOUapcDgj\nf8jQ5jsN4pxpCXGk603wG1LiHXARdaGdzqzfI+YdyR4Rc2t3vM6qNnIUykkP\n6ayUDeFPseQrEMOi0PrOflK63nouyrA5JglVAPHJaZ24frX3HtYzr3tbMcxy\nj/MBSWhBV6IoSmZbvxN0zlOviguw/tbBSFLicQsrhdW+179GV4uIuUOxF+8n\ncrexxGbkoxEzSNg4UzBelCLfrvXsM17Tk1ZJSHXfqT1oUT3mAjplYSCZBGUy\nAsfbz8zfRaAfFNUQUsW4tf8GN2R4J4cC6fBZPFBEjVaPpWm32V67dGxZZGyU\nkrlkyPQ9Ar47y+2LuyHfMdgsBM6a2e1HXOZn7WcfhDs785FefiVp0jh2QBkX\nHsWNqSuzdm+a6/jgdQQNegiTxtM3PswwRVFVaoizvi7jL0d7W2h3nN/jxtCv\ncb/I\r\n=LZYI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"76ea1d063807a063ea99badedac357abe19ee286","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286_1601977508686_0.13580701136900486","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ab82fc8c92280abf988040d08368dbc651aa988b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af.tgz","fileCount":47,"integrity":"sha512-auGglzk8sMmq46TKAD3x/lXgfBqX0jmcH4kJNc0KHSJdS4pWt4xLsf3MV6tOxvQiI+GL+KhjznexZU7UBgzVkg==","signatures":[{"sig":"MEUCIAFzBN/gDemmP0RT8VIXVg2IHksDr7PCgCb5MQbsuBRDAiEAi4qpnO5YC9VV0R9PyJeX6cELBF6QyN3DXIATUt7tTxQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffcTHCRA9TVsSAnZWagAAXSsP+wXTHq+gpN+fhSnrq5+5\ntV9uyRGwOAcs0Km96Ga31i1x+sWONcMxpTmzV/6mqyo4zC2bi24einJ/HhYb\nQI8EgUoXsLjMLEdXB8Q2bBlFTrcFUMfBFZUiCGG0xUAHNjPjZtbCbaG3triB\nlVqcFj3nSqvW4Zzfy9EtoWBzmy8OQyNDf//qVQ32TTuL4L1dIrpxmZz0S9wY\nltJyj1A+IGlrKnAJ8L89yTHQ1RwE3W2sRKRfUW5SFfMKBaBmTwHbUtsr5lv6\n3epBsh11zEdweW/zYknC/hhstXty+U6ZH/XhXzWXx6SvOsFrQ505GxeTvoGj\nXvuvPxv0dUxYP1M+tQAhXsm9u9b5ABdYZqbTE1/TzCBU8/Li+nje8sAbb6Za\nqBnyi0CDvVfAOZHlMEM4M3RfcqD8AInNFe3+eQ4tOTmbT4JRkMQxnFI4ZjXc\nyUn1t8Q4FG4P2tK+WfLi+pmsXSEnhV1IL/1KH3QMKtUVOQnyix+dgUF6RBCN\nfTojp3rn2WJ6zgoB5YY1MGEKw/FB3CUtyMSLOqk+AO3XCfcu8cUm1y5C4UgY\nwuZvhr7YfZ+Psm8Euqa+Ekcf9y7gZs5IYNMbhBwfJ6qEfDmf4AIYmuF1e2jl\nn9xJKZxRnZAGWSHNiip4zQOlBh/T5uu3p5pcJZbhJAT++IcEw0pdeyHTo3Ml\nwdj9\r\n=KQr9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"4bc51c3847fe52f56479bba5d2444724a57e61af","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af_1602077895151_0.6781197929757818","host":"s3://npm-registry-packages"}},"4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc":{"name":"resin-multibuild","version":"4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bda8b30d48e2e7df7c1f160c1f1228703dee2305","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc.tgz","fileCount":47,"integrity":"sha512-4q6KiqsvvDy13xmqv5FINzN0brKF8K3/TTNf1SPTKn+EGkb6dslD354+8GW5AMbu/NaRu26CRpDxy4bTolM8Dg==","signatures":[{"sig":"MEUCIGKXtLI8Fa9gy7GNCqVXDY+EZchM6aJ34j6+dtQt1NkqAiEAxeNfqjyr3JJ2j4QBcTcZYAzsnQx6TY74femSTPDZDJk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffcYmCRA9TVsSAnZWagAAa/EP/3yICFYreI3zUFAVecOX\ngHbeHfwJSiUD2wJWC2QfsWwQIXwPk8AlCDp+TKtJQcrT9M0KsedQViMmTFQb\npY0nJLThAH6jCWRvePi8uWGzoMHdKiV0VRR2CsFVAj+Dci5BmgZ34uxx4RiD\nqGBmWH3RIw/YPih/ywZdXVkUujI0tffTcf13tqLy8OnvrLTf9dUVsnr/QRqY\n4nF6DOYbK2IbVvFKOGlKJ2SLwUPKU2TUhUrdygqwmiY6+Z+QCgKlFAMdsucI\nBJ30dWvrNk3c+1b+iAVQs3Q+R65iZsSIgWZiM+ZP6P2LzWtZfBLO7CyR/04c\n9SOcfoQqrRD9NSYuMKJ4TEYREOziLmReYszNv6ZCCdV8JSTLtxd58q9pAdjL\nOnLyLwBiVmvrg8fzrioSqVJgQDHcFN68iZ5qTfRD4fjMAem1YTY0AJA1rGW2\nY9gIyJevMg/2EvXrU1uOCv6SkmU5h++fzNqqbf232UEIjK2+iZ/L7UWIRlsL\nWFylHqnl/ZnD60IO7oGPlmGguzp/wF2aSjfaYia+CyyDh8iAQdtaCYySmOoY\nT1eYqQoalY/ETimphyIqn5iTYpnGtRDN970Bp+JAVwSl6h+HsM47d84kIHRw\nCicg9ZgrNjgpvh9KA8r+ltqbK65oZX8mEVUbOz3MGBMj8Mg2xgJD08eXXo1U\ncV5K\r\n=ydk9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc_1602078246546_0.09012878727672646","host":"s3://npm-registry-packages"}},"4.8.0":{"name":"resin-multibuild","version":"4.8.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.8.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a5bc0c3be310364d50ec9de30562d1e649cb4431","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.8.0.tgz","fileCount":47,"integrity":"sha512-9/W4AaIFTrFjzUOVOLU4wH4dIrxqcWZTa4zp8UaJ3sLLEDDyiNbP6nkQSgpWtztpjGIXRxlif2CFxZjq48/rGQ==","signatures":[{"sig":"MEUCIQCS5/FWgdZsBLNF2oRYZIkiEguEYHA5wxx58p+omnk4nAIgYWvKh0BG/NjO1UZd03/5zUgZoQmP4ZqqgiCS2Ol2sig=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffcbcCRA9TVsSAnZWagAAVroP/3pznKo27UbwrdUcPDEx\nBA1XZLSnfXAfcHjxJ/pNZrJVJzfDf6HN+c4PAzuO/qFNM2LchamNc6xkzR2O\nVjxT6JT6tPPbwYPHJPZp0HuIGZ83Pw4TL3jpUnbnKWsoKITagrR4Fqdz9Nrn\nfnFLELBz7AgfrBLv+5z5Lqgg3qmG4Rf99mIZw34SZdg9O8nL6Qd/jQoAQG0X\nQYYBTMbMWG4YzHVjYjW/pubRQuMSvLXMizFM2geSUXjPOI6CcYDVhrQEJx0N\nnoUOGF9CkW2crAk25Enht64LpWOue9RF2yxhqQ6bGWufsR6UNIusMJFufNFp\nODptZteJ76gUXikg6RS8KTzTQPcZxTGKLcA4tP+wscA3ORaF/aDxb2ieowmD\niau+ZJyX/KXraAx/qz96PA3ttDLpC+no/dLg+h5+0ZNpMeS2uAlp/RDueTry\n4N/9XdmxlRAA5LPnW3Ubu/m0PGQnwks03dEmkL790SKr96sMYyRkim7pK7y/\nV6lVSR6gLSlWClSH0bDtJsxhITkmIkMVNDl6+TOXyMMpVXwwNT6FbPyHhuxr\ngI/M3M4NYsxkscoImtnr1S0JYKF/c22ceKag1gPgrZHYHVUTrOevj5bUjQcp\n+2JubEw81l1YQe32UIhGY8VPyNDTB59iiJO6a2lJe0gVRlxqNfm1b/AUkpPg\nK8So\r\n=Q2tO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"2f5f6668335f8f548d2c29386d5982b537548904","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.8.0_1602078428023_0.9609098633749793","host":"s3://npm-registry-packages"}},"5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5":{"name":"resin-multibuild","version":"5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a806166d000ca4c17195a9cc8f6cb9d8ca446bb9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5.tgz","fileCount":47,"integrity":"sha512-gOMY/NeccuauCOdeTnWBKYogi1p+pCAwGr/AKyqfeh9bGnzHq4adNXHwkbTqgRl289OrDLLYtYD06qaz6m5HPA==","signatures":[{"sig":"MEUCIDjlzBXOkUX0YQEbgYF2KRNmf+RRdSCXjfqqsm41posbAiEA+Tdj/KAFr2SqOEz6rTlEGFHJxD8J9RM3PKshtQV+y7I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffd9nCRA9TVsSAnZWagAADJkP/RuwKA+5IcJlZAN9IMoO\nBCTXlu3lwzYO4oQoxmogP1uq0AicSyQjM6/fIx1z8apNJFE7a0ZI6zwJQ3qM\njxdpLXHm2DyFXYE9DyYocsFweziY8Va9GoQYMbUlhONpnFwpd8EOJoEuTUih\nDG5JxXXjPTLmuoPcnTNRarnPp7C+Z02H6ULRnY5YXFlaIrnLW1zD4PgToTEj\nQ+S6R16UMTouoW/d8XqnQrw2uWO1W6aOa0UGxsb2Jk8ZVdhnOJwEcH81ZjPk\nNcDe5QipyHswo/QZe5ZqIurK+5kW6l4wN2Vg6LrFi0oVOyg+wnJq+8Izo8NM\ni9V6JVm6N+76g3gLa1gFLkEQ+vfS7qlolqxhxIOC7ZAmsPkTyUFhB9HhLD1T\nOVVAeznIvVXwAYUqx199KPBTJmuoIAUndg8J1rrgp+a3AAoRNJLsbwqA+W/M\nkv4+WBjoOhWGxAobJbNFzgzAIguQggj7fg8MPqBf7YgkHFoZYhmN6q+/wjD5\nvHUkNvc7apRy7yqKu9aqpHLI+UzeMrze8whhEv59w/e4IiIntXftzG/lJ93x\nLsFpK4lbsiC6CTnWcuYAbPGtxfi2KslvzhUkQEXLA5f+QEW3gYxXIErsGpsL\nYfRYwlhSXCyQhGxrYpKa9rx7xBbzF6hvwQ5QBrYeJQWJ7ykRYN3vj3n5TdaR\nb2mi\r\n=+6DT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"6ef7a5ceb1a831328a759faaca160eef6f648cd5","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5_1602084711371_0.5599432166789644","host":"s3://npm-registry-packages"}},"5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e":{"name":"resin-multibuild","version":"5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c7137468459eb58be955ea177f206ecfe0a69746","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e.tgz","fileCount":47,"integrity":"sha512-xnYclP2j0nqTlWODlMoUjWFvAjbqnjZYTaENhz2vufmmHPWiXqbwqzN0NhU4nQ4gEspFsWDd9gp3RLaVvp3zRQ==","signatures":[{"sig":"MEUCIDx+vESmAm5PhJLAXvkGWeMqOgMYXG3pR/S9yujOpHAVAiEAuXr4eYiaxt8Ni85bErY3G0SJi2ni6h3nKW6MNuX5yJQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhbCYCRA9TVsSAnZWagAAqSQP/3ze34JiSSJLsXwZcdi+\novIOPMzN2wwGGi1I+Ekb/+XwUhqizmwk4riEtdPo3SPaVDJEJrRTdM47TzTW\n9tuyc6g3Fsc/1dV+K2FaEmR/4COvts2PV7/xYCfjjj9IqCa8UQ+6o9VmpsDs\nWTR1UycgYYcpn0jRze6trIL4U56fLkP+GPz4asWOtIrlys3rDjL1OcFa80Tg\nA+uCjXZUC9fnwc9bXXZvNc0d8GSSI2EoBLPL/MHYePIEbyuGyFYSCx41sqxE\nDmJaFOL2eru3TgQE+vdb6EDP07fvWQQdpjIRyC1hwx72cJSEshT/01bn5mGc\nqLM/b4LAOrvobN242KcrDFw1Ij7ZzB5uaLgNehjyl9u2gIzmIGriqMu8PfL1\n4aeE+7g2Beaw6CVpG6jh7DbFRhi04IJiT1svBgUhippHdphZrzhMLhP9ScWd\nYjTBRs+WR3MuhlKjrBsPF5e6GOY9lb4FEDO7wkKe9aPHU/nPWP/ZVcym8cWp\n1dZuo2U3aIm/CUeIJcPel2b9ZZbaKkKf88LD374E/KiaIdj+m/0YdHf+LI/E\nOAEyTvvaW4WhHAOxVmLYiyo4ikyTUf8tFrH8o6kMa4GiWuDaDp4cJCsapTag\nJ7grFnSZAlR7p8+FOxyC7KiTiR3JlU7LqXkxgAO81YRiQ9mYivG+Dp3CnKR1\nKijc\r\n=GUXK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f2d78717f97c2ad30f00dd788cf90c0527a4bc5e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e_1602597016298_0.6911437897441461","host":"s3://npm-registry-packages"}},"4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02":{"name":"resin-multibuild","version":"4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"352fe42e2a58b7333070895fcf8e86df401e1722","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02.tgz","fileCount":47,"integrity":"sha512-ExFj7XWJAGq3D8JljVRNR4uLdRwZGGhLhhe4Dcbbk5Un4SfeY2/U+ib2aGHt77D5PbJ9E4KHiglIgAnMW3ljug==","signatures":[{"sig":"MEUCIHSjQIbt8limOTu0caqe/tHWz7mNMFxalEq2/588q9oNAiEA6sUTqW2ZRrvEIguSyNTAMYPi70SR0CXyWGt+wxrFh30=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhyQhCRA9TVsSAnZWagAA21UP/0hPJN/br2p7aqZUuQgb\nAHqqsWNnfs6UcfC3G1tNbD0qTAdWzcH7rlqwI790y4XJtS43b54Whv5Rconx\n9evPIFjtt3e2IE2OWxZJSpkgqIPHv291ZCPNXhZgvUH/ZkThgq+4MRlqWAJz\n+unvtGOiq5nJ99fHuWXJIA1gfcRdUhzZnVsCET5/cD09j1YrIKFD8YyL0nEp\nKKd1nzWiFXI9nqLJjy1AhioxmQ18NvVlQbkvT8EjWkqzbeiuaMrzGwgiZotO\n+IKcFWwM8f6uG8IqB8ruAC7I3C6rUaQ+SG8e//E7kDUFAuekZA/d0KJG7m9b\nfn/E0BbpNfpqnzBb0vA+UNVsB1i7ol8WOdiwHtwb2OViXH1qw0glnyCMDrtn\n1ZJpOaWoYoPcTtZSOr8qXzEMm1daycKo/PebIsIPN0IJ48xM5GmgU6gw0iEi\nUA3GyoXiaJgEKMJwwq4w9NP9ZGynb+XKbg3BxEBAHgIkptJInEspZ68JEYjJ\no0I/WPKCXUrZzMp3h0l2haRrfmh2zimKqKvVuu6OAy6QcXPDXobq56cSebMz\nM00Puo4i4qJd7ZFA+pZV3GbPGzQ+byuxUiTvHVxscfs83sHdbGv/NDoRmSuA\nZKN0wZSut0tW36Ni7L8gjt+aeT/XHPEpAqLyXWDtlhHLsMs2I/fEkbTxecSE\ngY2L\r\n=G7so\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1162abfc1799458707ae75006fbdb38fd7d7cd02","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.8","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02_1602692129052_0.6952399744467719","host":"s3://npm-registry-packages"}},"4.9.0":{"name":"resin-multibuild","version":"4.9.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.9.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"571881f1cdffe46017399b50ff578b86c38a4e6d","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.9.0.tgz","fileCount":47,"integrity":"sha512-DDfstTOZMUNRkmQAf9GiFbOXXHA25Bv//wA3xHA4Nf5SZ8G9DvAuhjC8x5PQy+33oiAuWgLkca1+/szSQVqEYg==","signatures":[{"sig":"MEYCIQDCCtDoiOh/whiW7t0blURJXFdAlrsH5LN7vPrQO/rCqwIhAOq6oHWYrQmUZmZ0VJ5YFr7IymYxxNknN3D4wrCoqyzK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhyVbCRA9TVsSAnZWagAA9vwP/igEJ1J3ilsYgnY9piCm\nMoo2QQ1C37yZR8C5rGY+bKp+WzLbOtjz1sUy2lCqTTG1OH30RUbBb/G6LnFe\n+i2sCbqRaex0BnjxpXY4jGM5cnctu7yeaK+4bH9muOsxG99IYyNqW6w0ZaBb\nfZ6KvIZOT4aCA/KF91JUAqB6TA2L2jIfX3IT9WWG9L4gJUrzmtSE2jmnXKlu\nw8anHneykBoZDruQzsFY5+v4CQh/G7sz8KnGWg/lVA4cA+PD1G0Z67GsZQ93\nuA3u8CZe7kT9LrCKhSKETdC3gLDM+ba7uTNJd3DfSAJb8k6ds7m0nnF8aOrJ\n3wSeGjdk6ZlxvzHQ9lmKe9394ALvX9MficEmhG+DWxAX9agp3JSV7cyZq5Mb\nyH3kJd57YUFmc38u7vlF3CHmnd6Xlhpny0vFr1iASt0BD/Okea8SIng/S+tW\nBdfp+MBxQ6GtbUcHJBDBLI71Z/+myoqBP66HZ9narIxB2Iu3xbcBmH49vDK4\nl549DPxHNiDbLp/UydSwV9CR8rGhHwnQCIofKAZ4G0t9YlirIuhtwe98EQP8\nSkUXEjvVz8W98BAp089bNi6VRilEntOBUrZzTuJnvAKihgsxktKLqpaMSe1h\nKVlIofH52fYQG8rxvhMq+N7hBetxIsu0OHyoa8GFIs/vhq75qWnrAqaUZ5Ip\nTnhC\r\n=Mj7X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"7c6498e2c82c4b81101f2c099acde54e234bd777","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.8","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.9.0_1602692442733_0.6288228781628322","host":"s3://npm-registry-packages"}},"4.9.1-lodash-merge-dockerOpts-platform-7055071d5ab391cb5e9d8f0beb9259e962471aef":{"name":"resin-multibuild","version":"4.9.1-lodash-merge-dockerOpts-platform-7055071d5ab391cb5e9d8f0beb9259e962471aef","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.9.1-lodash-merge-dockerOpts-platform-7055071d5ab391cb5e9d8f0beb9259e962471aef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"59b67476bb2bb22a49865f303b62070076895cf6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.9.1-lodash-merge-dockerOpts-platform-7055071d5ab391cb5e9d8f0beb9259e962471aef.tgz","fileCount":47,"integrity":"sha512-iiNpe8zStB5Bp2OQkCDMQeD8fxazjEEqL0o2p7x9qg1rPFdleFTObzNVI4BnjQ7mdGqFRhQ6Qv8in5qey5SOEQ==","signatures":[{"sig":"MEUCIEf3XFmqjR7xOgco9vnA7sBRvHmSEwmxeVFvY8Xu1RCzAiEAzx2WbzcxIgcFpCmnlLoUE9J12GbgBKo4lg3z+eCPHGs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYPuCRA9TVsSAnZWagAAzZMP/A6t8VgPn3xrVTVi/RUQ\nn96Qt9CEiv+fVMwvCYojon8KnBelgNor6JPSQEUGOso88U3EHyVnu9qeuI/J\nvzjOQFWr25iky8RgXK19f/CYbgF8LEgHC039hbg50l+E8cx3sFKQYszXGvSH\nXf9z4O4dTSsm9/siDrktVP+ZzJ8Vcf17N3+bU75n9me9UxhH9B7iGkWSmc4U\nSZ9p03ajlxhSyIuxusoOUlx4NN+C2h+PmUFkiHOT2FNpz3Nx9q59Hnnjuzch\n4Q6FT4E3/3uNlYkbunGusqrhjiN++YaoFkKKtinAI5LZHStRbY7LrgVGNCVc\nmDlfeIzp+THLpkTGG9+q69AkN5qT1KQlizIxlNcoa2HuMstMuQjbVTemkiWL\nb3q2Q9IRLLMR/322kN1rO6pVr/T5AtdrF4sgUfu6y4tGWcnQqFvumm2l+F/Y\nQFDyLpWoXOYhhCsxdzA6E8K0lb5Hx8Tl3CF0vvFWJf9TDxcdEPbWL4lN5YEX\nhGW1k4NEC2bRpGawQt81ERAtNJG0nDA6UQdf5Gk0YV6DdwSBew7zEuoZD01X\nCrO+/OMFO+n+yAK41kxG9Zw9tYMF6A+5M3SCZlcac27rCKrI2msIvdAzRy6M\njW8y83U1vfH+jLEZIv4Y3swaA40Nieb6nMtRVHoxySUvSzyIOp6V1rVBkue8\nkEm9\r\n=wzv6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"7055071d5ab391cb5e9d8f0beb9259e962471aef","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.8","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.9.1-lodash-merge-dockerOpts-platform-7055071d5ab391cb5e9d8f0beb9259e962471aef_1603109870072_0.6021205133368177","host":"s3://npm-registry-packages"}},"4.9.1":{"name":"resin-multibuild","version":"4.9.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.9.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"393571c1a458792e20a7267dcce773169286d0c3","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.9.1.tgz","fileCount":47,"integrity":"sha512-AqbFpagJYvufxbrebZNlRTqioX1I1l2jKTS0rJPSN6mxdxZ+dUu+Jon46I+wmb2TKucqp9YhQrdAhul4iJJGqw==","signatures":[{"sig":"MEYCIQDerfYd3NknqYALzfGHLj/N4dx098XBYsHoMBOczEEeYAIhAPSG5O8Mo6t/n2mN9aymehwjqLqaNss0I22pRCl0iWzI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjaJvCRA9TVsSAnZWagAAKQMP/1Xp5jRVkCOJVPNMw+sv\n1saDLDY+BEyIuveJV6zBSkan8XXAK22+Ver0mr7Hjokijspv2XUAh8iUZa5Z\nj2uuXF7yT6v+0aDDbNe670qyEVky9n46JWFUZ7ejWNasmOpiG4QkjnVOBgUN\nX+KU8ISqYa/Uu7jYZqQ1c0Xc3oA+505gFaW234LuPnt2ECupk2yTOQItFVgH\nssed/UeAiVlgwxXvBg05NRSA/mcJbt5XDjW+Wv1rr6kL0sxPE4IdJKUGohGU\nKFnTrhFsyz+D0huljbPj9duVjZ2IHmrGPbj2qr6RYQO/EkCawW64xfrLstwn\ndkgTQeIvsiWsQw6v/BceG2ky4R194jVZCQtepZkGcmjjCvSubO3caVkflaOh\noSD4UWLz/XvAD0y/23B/9tx1oH52xidypaiP+KPzcZrquMNuNW5/cwusCUSd\nZMIKHjIF5OuVWG2GadyaLYFniANZnf5x23IPHvbNw1u9HzdNFi5XtDO5XBwu\nsoq+3mHKUpReQtDZYx2wb32fxvRrY56/yruzI/qlPDrZKgYXkJAhRnmGwHHn\nwgiEd87cVw/DK52gmqPspwZTcJczvt08BAgHQqdc2qP9UpZEPY1+pKhknf4X\nUJck483WGKqO+kXZkfRSRxvlaWVbDXYzDZ6G75MswBniZMIYVd4QRRtHhpcV\n7tjO\r\n=4rbU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"80eb3b0bea2a1e4940b3c92e1d38b6218a53af2e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.8","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.9.1_1603117678951_0.9170427997170043","host":"s3://npm-registry-packages"}},"4.10.0-dockerhub-secrets-1231d927e5c91ed27bc3cc479957d13de404255e":{"name":"resin-multibuild","version":"4.10.0-dockerhub-secrets-1231d927e5c91ed27bc3cc479957d13de404255e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.0-dockerhub-secrets-1231d927e5c91ed27bc3cc479957d13de404255e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"8c7bf4cf2e2a3aa7180d4a4514f37f0d96698117","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.0-dockerhub-secrets-1231d927e5c91ed27bc3cc479957d13de404255e.tgz","fileCount":47,"integrity":"sha512-P4HIEnEOgEg3Mc8dbJa+hvK7/jVh5jJ4SVCSObRh1R9hnlCJ4TReWjZ8minG8ziqh8iB+GtpUFOIy/h6NDsivA==","signatures":[{"sig":"MEQCIBoJoLPHgSph9T6dK/L6NXMCQrKPKthCpqj3Em3Rd7seAiBGj1isd7XdlvJzAo2fUToj1OmPW1X0RJS8SbWckdXHpQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm3mYCRA9TVsSAnZWagAAB78P+wf4wp2IX4KEBP/TtPBg\n2Dq5bbamZ1uXxBP9pmMov4Ct7Yx6s8BKKa/qQSor9QYXqC8mvaTevhdSQr7K\noE3WZj1+ltQnxd4r68HpjHJA5m97U72EBMEPxUxl+1VC0FIqN3HeFrZ32Qz3\nHtG9bspgjRLgJ5IhRNF6EcInGUxAvqcFxhCqzLC/QJpjbnKBf3wGopqsRanp\nZUh2NiZVOVI1v1QPEvbULLxgVq8pQgIbUtDG4RTXupKztc1Eo4hbXZNfk5nm\nhpunJKRwfCeGfafezIO5nDzw2UI9WMLcZGd4+zJ95azsokJ6REMzDsd0lNx2\nqEFZr5YqJOhV/I8q3m7D82IcQSZ0q8owE7MvkXxtpNL/6ea8wLSVa0JNIE7M\n/DidcnsAsQT51RmkpSgigz4hY87Ntdo4iB+LdsgR+7cAJPOoajJvBTbl85WE\nsTn1yFmBC2C5/8ZzE6UDVo9JxBX3yfcTf3i3yG2UMXbvvBoLy7wVnGBmL28k\nbNE3eCCBzODGY93QmiYc36KIhwBiaezlUlD6WGD9nozvp7Zllfbt4Lxj+We+\n0/iMGkPHiO/Psupfr484VcyPmfHjVQz5kRsHE9sm8X/3FV/ZnXBt/jpCXF4w\nJT3yVbhnIJ9pcKRbX3C3zthEgLYgLJUMVQbfQVFqnQKzTBWDgQEoEZNCAUoF\n6Soi\r\n=IYeI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1231d927e5c91ed27bc3cc479957d13de404255e","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.8","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.0-dockerhub-secrets-1231d927e5c91ed27bc3cc479957d13de404255e_1604024727923_0.14607274820627714","host":"s3://npm-registry-packages"}},"4.10.0":{"name":"resin-multibuild","version":"4.10.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"0c8003375881a9206ecd561d797a94521ad2ec58","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.0.tgz","fileCount":47,"integrity":"sha512-Eti1HGSzTAUmpQErD9Oz0NAj9yGFzWSM3aRDMGlK1W3GVggZsI+CZ/lM3+0ffMmPbDtkQxWqBoEtP3jUl36rIw==","signatures":[{"sig":"MEQCIBdwmO1YzOnxZPL78kqXQ0PWgYECWsZjBWZndAet6eJjAiAYEADcnfUucdfZhKWwJ5ewj9ivJh3UQuE3Qro0uyYlcQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm47iCRA9TVsSAnZWagAAmXEP+gNZTrAH5T1xqruXyGnn\nCwqCKe+XQVW6GYQN1UkNlgj8JhSqbGxavo+yWSUpVB+kvZbeubQK0hqmqHXx\nayXZ6hrAlonXcHbdu0u0BFSqi3pcQBAjWM+OhWS8gu2uLDQTmt4tbeFT78XF\nyh2/FWQflqDuifHofztZy6ozP/74u48DXqA7JPrEQpvRqO0D2WG1RcUsipQi\np09ijydIq4wcYFRfZ1pGC0EG/6lcgjECFsY+/LSNjfze4o9APv8B7OYZjEGZ\nXxfpd3/KgkurszJ19U4sCZk2HkQm+RyLnqPHGHrzBARce7XtxG8uiMhCCF4R\nQo8A9qT4FyiSy75Q4OqJy0OTF2hpFOxXUhSO6kK1GMIuJgnm8GPIW4EqdD7A\nOh1S+nhc2vILieydGlRCtAR1DWoUy+E5AIdnu4ACfm5CAC5ouODyUdTUqyCo\nwvC6iL69qMZaxc+1ZRAbEcl2Eo5t65N1Oi4UNSb4pPFYQSQ9io+jn1m3SHAn\niQMf/bRpu+W/Gg0mSdscsDPGqLYkgdgIvftQtTEJlqRHVqdaQ8bhGxcAegWP\nu8LaRl+ppqFzCOLQCdZbdlbW/E6iSXP0kQveDCF7tPENl936uD+2bMiD6fvM\nPIT27lMI9yogxrM+h2z6pLthN7DdhaYEW4eJ1RTJgD+BA/1o9yo4pSILjc56\n1pfC\r\n=Ovsd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"e05cfc01e7a34c32d05f2d70df28516d196826dd","scripts":{"lint":"resin-lint --typescript lib typings test","test":"npm run lint && npm run build:test && mocha","build":"npm run clean && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","prettify":"resin-lint --typescript --fix lib typings test","build:test":"npm run clean && tsc --project . && npm run copy-secrets:test","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.8","description":"Build a docker composition","directories":{},"_nodeVersion":"10.20.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","resin-lint":"^3.3.1","typescript":"^3.9.7","lint-staged":"^10.2.11","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.0_1604030178140_0.18734204280638034","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-14d9968d2377ca286eb33695dacd4230070f8526":{"name":"resin-multibuild","version":"4.10.1-docker-progress-14d9968d2377ca286eb33695dacd4230070f8526","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-14d9968d2377ca286eb33695dacd4230070f8526","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"0cd4e34ee33696ff536a55eba092c0566691caec","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-14d9968d2377ca286eb33695dacd4230070f8526.tgz","fileCount":47,"integrity":"sha512-L2ALAaVt6jv1MymWxdIuV6/6X7fzIJSKald7WrSVN8A4bxKV3rY2qkpV+Hcuc+toH8GDEBKRrxXLMY6U5RWlTQ==","signatures":[{"sig":"MEUCIQDWCZpnVtZh/9Ha/OzM9IoTphie2AZnbMh1qoJZmL+hVQIgNhBKzSl4ERZgX/D219UBObX8pArUQcG8U2Tf99Rwm+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjDMNCRA9TVsSAnZWagAAE0gP/2VZVAiK1UF/wXvayuE1\nF4VqYhkRP3wR+zKJO4UHgqVjhiD1qrSZypiDfG63yha2jn5wfjZlMmDVhV8n\nM9vi+gEyuXDmWpfUiAlouKwSqw/+OqT+JIuFFqOVXuKJNoBlBDkhLQPCoLXE\nU6U9OE7NepgAlb5/r4tNi3ToNiJ3vwJHznOv7CPw+YoNn2KglE8m+QmKR9Oa\nADKPt1ms6I67KWNbRFxIDFRLkdqIex9OoxE9O2vi8lucH9fCUXKX1Px4qUqi\niIX8xWENHKb2DjhN+NHPqmYQnWUKUZazVRel0mbJk78LADI5tLVncGFe7Vjx\n+LOmE6kjIaK1V57ey9PJRRHe7QBBLnNvkaysl31Udr9zrSeeZ6Z0Nq1glLVE\nN1ZuEfzZ/St+TaslanqFQaUOzkJnKlA914fnCCfwFVkGQ6tKbXMch8wCV+RM\nDY+YBHgnqDfBvFMq/qO/zpPcKNurd/XUJb7dlO+0sXFn11oes7YadaER9rgF\ns+1vESCkZcM1brQ95HsQpJ49opiUVfoxgSasDuzUcgxynyJ0ASNjsftB0jS8\nbm4Uz0uFiJfq7AJ9dwV4YRZMw5jx89E3RAv8NlzzJuIq6PiD3PdVWdMuMqgr\nAUqYEJrg4YX4uL2FIUW2ASp23cqpTrhGfSFKhdEUx14uq9G7Fp3rVqaSr+C4\nK/N3\r\n=7xWS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"14d9968d2377ca286eb33695dacd4230070f8526","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && npm run lint && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","typescript":"^3.9.7","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^5.2.7","@types/lodash":"^4.14.159","@types/semver":"^7.3.2","@types/js-yaml":"^3.12.5","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.1.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-14d9968d2377ca286eb33695dacd4230070f8526_1619800844818_0.39544174931776244","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-428e905fc7bbb2bbd43314b65e47594e943d9922":{"name":"resin-multibuild","version":"4.10.1-docker-progress-428e905fc7bbb2bbd43314b65e47594e943d9922","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-428e905fc7bbb2bbd43314b65e47594e943d9922","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"27efd3f8ccebc181f328c62207e19d511d6cb7fe","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-428e905fc7bbb2bbd43314b65e47594e943d9922.tgz","fileCount":47,"integrity":"sha512-FKdjg1x4EgrlmrUoIrXWdTCN2a/JHTpkoB4wRbrZZMuROrLQYowOzh2q9btJcj2VamJx9Z29zl0Th0qRjRk+mg==","signatures":[{"sig":"MEYCIQDleAqRmXBRBgC8FwJjWSXHoQwjSQ1Igv9fggAkBU8rpwIhAPN65FywmaVc05IMakDOHhyjhsYG4CQH1Nr9T8mEY49X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjDjdCRA9TVsSAnZWagAA9fkQAIZI6MrUZT5v9qlgYQjX\n/qCLLU8+VVFmub9s+N3maCziGenH+pouBqEPrQZkUCa28WRpI08kDODFCu5O\nzhvsbKxx482MetJU88gD7tMNrL/xBRbbegptuYV/c9GvUSMPCZElWLbX0qsM\nYMaNQffkiPssrUcQzXhXq46IRlCrD512bS2m6FSqqUO984Hs7nj0xxvzHLyG\nXkfV6M/yXxzh6bqKv79OgJESOU9cXWNVk2X9jYU5EcD7cOnNEBCwfL8k8rbW\nJ12AlH4HLjjBOW2UVgtEyjwcHreGNfs1+CmGlrcvUt+nKyZcfVmX5r7appOH\nmpgsw12Bq8V/xbbj0AREezO80BqH0KgujokW+nMSTgfbqKsK2runHuQN2es2\npYqhHK9ZMTje8u5BHVicliUfdvNKFm3jpwffDIzShm/EPoBXgA/0pkpBQaxM\nv6pjTlWNp3G70KOyfhVJUF9O7vOfs2yt3URSo1hFqmKOlVmK4cjFlFum+fwr\nUO5AV7a11CQ8OyIWzOaKDLS0CK+KEjZVRcijPnNkT/K8nw5x+G3PeUk860aZ\n9gs6ippNNNe/UNBS4tINxNwReWdoKnIadTeTE8p6/0UBcW3P4tNGrLfnMj8w\nDghFl4msYhJnRpl5v0Nh0YP6hczjqtUvQZWgB617JgfpukfV11yUSd21KyoN\nbAX8\r\n=SKTA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"428e905fc7bbb2bbd43314b65e47594e943d9922","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^5.2.7","@types/lodash":"^4.14.159","@types/semver":"^7.3.2","@types/js-yaml":"^3.12.5","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.1.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-428e905fc7bbb2bbd43314b65e47594e943d9922_1619802332489_0.9757624497193946","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-ee72ab5c7899126d4c733a543539c2cdc1a7d3c7":{"name":"resin-multibuild","version":"4.10.1-docker-progress-ee72ab5c7899126d4c733a543539c2cdc1a7d3c7","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-ee72ab5c7899126d4c733a543539c2cdc1a7d3c7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"af90ef3b9a2258cd95266eccae6e0faaed0ae8b0","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-ee72ab5c7899126d4c733a543539c2cdc1a7d3c7.tgz","fileCount":47,"integrity":"sha512-iCq2P3NEffYw9BSANPm35TLrw4Raf1hpS5aGdU5NKfn1sZM7lVxIaSrhQGZbqTSCi4WQt7Ytl6MGuPHwgxH4Xg==","signatures":[{"sig":"MEUCIFBQNxnoWGYmZx2QGsj/0oOnEetsipyxUE8noXIdkAYrAiEAyLXA5ysI5brrqLar9y8S9pZSsqWYpdZJA38iFw+UcWQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjFyXCRA9TVsSAnZWagAARsIP/3ePxAAoy6s/1Qud/atk\nm+aONzAkGEOJhU2X07R3a+o5wwmI2z+aiPD7lNn2SP+6lGeUc9pX4UhhRyqp\nvSJjps+F52/LRg1h7CERg5Ffd2tqAcwtqCe2SE0OZCe3IfYw7hUMZvQ8a2Mm\nsho4ovusqEthS7hPXzeLerstNLK4URqA/p1nEvQvGalV4WPsA6sYUUB1lzrf\n0szCL7qSP1Ryyx+N1S6LjkSnJ2KsPFH8MEN+tLRE3UDW4VBJQM1skmcFjUMD\n9Z77UOOLq/Ure0mtz81jQDTSxJPJ4KKFDBukPDUMcllNMGq9zqA0LR9CuJ1V\nNMGhi6Hzt3wdq5g7V0L31CdFfuwfWrrOk414jzDrguCy61Gg88eN7/gTfuPj\nLuSRxKGl/rEIWFuUHPJWiO6hqeZU1zyxNiiPOhCpb6rA//t4kESVqMZ0oIyZ\n1c6ASp10PZ+4mGoARvXosBA/A2CGiYsOCnb3EfUDZAwQX5VRVibKUMwPFA8b\nKXwaCA7Q9RVTL+o3HEfRyKJA8xHB1arZzTr9Hk2eiB6Wqmrwu3UL7FvMt2xQ\nnEePBOSwOJ6/EGRCXh9ya8AIPiIbeBQtRMezSk8JDm2+eAfrWYHvthjT5469\nOIUXsLkN+87uQg53LsfrZehXjwjF7IlHvwdmu8TMwN/iem9JlVN7eKXocyVu\njOUQ\r\n=Gjaf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ee72ab5c7899126d4c733a543539c2cdc1a7d3c7","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^5.2.7","@types/lodash":"^4.14.159","@types/semver":"^7.3.2","@types/js-yaml":"^3.12.5","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.1.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-ee72ab5c7899126d4c733a543539c2cdc1a7d3c7_1619811478565_0.6388305846734155","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-aeed4348606e0b0ebf29e021be3f78ec2f4ede6c":{"name":"resin-multibuild","version":"4.10.1-docker-progress-aeed4348606e0b0ebf29e021be3f78ec2f4ede6c","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-aeed4348606e0b0ebf29e021be3f78ec2f4ede6c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9421d595c4fa4d0e28041bfa2e1e3c8af142745c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-aeed4348606e0b0ebf29e021be3f78ec2f4ede6c.tgz","fileCount":47,"integrity":"sha512-GD93lVAUwlfgI4+nRGCJkMZkw8v2pismuNKr6XxmiKLF6QPumdiE2sHW7oifZUyJJMgIzeCb6V5vDeb6CgZ0VQ==","signatures":[{"sig":"MEUCIQCONg9MN7c5mvV35KA63Cz8Yc+u3sfsTLzvlIQ2N3j4/AIgMoiKpmueUcfw+aBMW/IwYRXKkEl8OjuK7MfeuLCFBGY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjF5uCRA9TVsSAnZWagAAj4YP/1elaKDW/umlyWO2h4bw\neeF9QmT/wWiFCHE4aXNqWaMqS2CDnvn5eP5y0MjkroHFgfoQGCQPglZ27XGI\nIRPCEv7QFBmv1Drez5R+2nCLdFsdptQ1LOWwm7oqvWZdymCYAo5VpOkvMYfk\nEWNq2Nk3bt5QQCuKgdtTcg7P26VL7a6m8nKXaaN9V/121qmywMVPTAwNZPBI\nPJ/P1chktpY1mp29GI6RuHxa+RU84LBbQYBK+47kdjc8J6f31LxAFEafofCb\n0qm344jFI1LTJlhHTfX4hE4AHqu6Zw5g1fxYr61fnhHJV3AufypY4o1wV/tC\nswDkudErFLDVg+w8TU1hkLyv3kdlbxa2CyaRKFzBNTCtz3uRNkSaFpJVFcYp\nFN6oRDFPsdQRSWru3n78pY0yl7ERjDqqr/b55o8X+KFcW3bTltOyQU2ymhgG\n7w+5I/m7JzRa7DVf+sGaAsWFpBgHYNwv2AYewqSVN08MwYJ5nGvpko87/zbz\nQztb5qqbtTJiCdc/nhq8wypi7MQUrc31XpY2CHsPvoGzlZVY2ovPi08OpziP\n2Aq0FdQ2bK/59tZgdjaI4tc18QXJi5LJL8dXOmFO/Jll+Aw274n7fawLn38V\npAoCvlFCsCyXmrevH8AhTmcDv4EEBS8ByUCxsW49EDFbJDTsheSxya75KsJI\nx6vO\r\n=5LOc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"aeed4348606e0b0ebf29e021be3f78ec2f4ede6c","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^5.2.7","@types/lodash":"^4.14.159","@types/semver":"^7.3.2","@types/js-yaml":"^3.12.5","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.1.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-aeed4348606e0b0ebf29e021be3f78ec2f4ede6c_1619811949691_0.3259637019627819","host":"s3://npm-registry-packages"}},"4.10.1-balena-lint-863e1124989df97c4f30363e62f18b8336431b5c":{"name":"resin-multibuild","version":"4.10.1-balena-lint-863e1124989df97c4f30363e62f18b8336431b5c","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-balena-lint-863e1124989df97c4f30363e62f18b8336431b5c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"5a415a71b73bc0af08cac232d5b74e7101907dd4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-balena-lint-863e1124989df97c4f30363e62f18b8336431b5c.tgz","fileCount":47,"integrity":"sha512-37p8+7iW3PcDdwAJk3qiXmUC7Z5rYw/4ICKy670Z3lh1HZLAzM39DwLLOmWPTjcKV6J6OsqHaPqWrx3pEqG6Kw==","signatures":[{"sig":"MEUCIQDWaSFv8cBOyIki6+zVLcHls9J3j8EU7TK/xOD/97XIEgIgH+smNcVlcoE5DuatouLM0n/Kt/YVmPrySSBbDIXWoBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":101135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjF/cCRA9TVsSAnZWagAAY3UP+wSVd4qjxMc5yym1ApJj\nfepl4E2Pev8lOYxzayostcoF5xqwZRRfRthb+N7MLzdEA0mai/gByJKNA50Z\nYDI/Qdt5KmvT2zyw0du4FkfB2U+nSFv7RIr/8amxXgxaMuzPgB/iaUuShmdO\n30WZwAJwn33eL6UUsHRnb7/qjKZPrI3JeJhsXtk7jr0Wa/WCD+bteR0K+/Av\nJNtCNQGXM+gZXQ0SvgN3dS54JR9dhuH4N5mO8os6UnkSdnuO1gcXWc4xmuM5\n/2kvZJpimHOzx0O2rL+SYqykLcFPWK1RMYFH1ivJPz4X6ISL3/tsgVW7syg2\nqKA7a7j8OZ3NsmRCsxHkmlldVIUyZU+Z5RrEdRLthGloLEooF4Vu+r/yqxn8\nFwmy/RLNCeoYj2Y9cb1j9ZIie3i5R/5YK5Ci5mp/gTQz7s6eu8XnrGLhkdo/\nOqKYRY/x1MH0oHx4U14UwL1oFwv1wfZ4ewwYy1zjxyDwhgViN77EzljCMAFF\now6CElQn6VWfP293uTZ2h2+d/TkGJXlR7Mh1WXoT8pM9ziwdWfYqYg58T22v\ngSUkhCaEVtgtuiH4Js7312ZED7krzXema4ueoimrzeshpXrZ41LLaVi0mnuT\nDLE8Dj+2Mw8qDEkhuuNpFroiRgjYBQcSP7V+b4iDMWUdzrbbwPJEiOBXlNZ1\njJqB\r\n=o6Fy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"863e1124989df97c4f30363e62f18b8336431b5c","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^3.14.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","@types/lodash":"^4.14.159","@types/bluebird":"^3.5.32","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","@types/dockerode":"^2.5.34","@types/tar-stream":"^2.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.2.0","husky":"^4.2.5","mocha":"^6.2.3","rimraf":"^3.0.2","typedoc":"^0.9.0","typescript":"^3.9.7","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^5.2.7","@types/js-yaml":"^3.12.5","chai-as-promised":"^7.1.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-balena-lint-863e1124989df97c4f30363e62f18b8336431b5c_1619812316400_0.8414735499028314","host":"s3://npm-registry-packages"}},"4.10.1-balena-lint-a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4":{"name":"resin-multibuild","version":"4.10.1-balena-lint-a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-balena-lint-a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6afcce1df68d4a37ead96728f7b97d092f8deaec","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-balena-lint-a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4.tgz","fileCount":47,"integrity":"sha512-NYIqMfU0U8hkbSaBy3YhoCDxthCoJccTEVB0t6XvOV97FDDSI5b/pzevYmC4VbECImerQn39cx8HJxNmaj+heQ==","signatures":[{"sig":"MEUCIQDB2wMvSidkQxMR/Ieewk+/P+EsOKOqwnqnIs9jBpvUJQIgJXas/wvq/bIeRNo9CEQPz2uwCVXYiF/12IPRKv1/8OY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":101527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjGlGCRA9TVsSAnZWagAAyBsP+QDn2r7rq1rRKUjvPdvl\nvxIEGRCrlI07TODnnUYGOoL1llDuESGIYecqX5/3eqB2lhxg/KOgIaPAmkvN\nWTDDDCpNbHBovhRSXeatchGdLsf6e5QNxdP4Ia00zvta4ztKUIDVTuYpzFZx\nKZmHAWJ4+f1rR/A1s7AEoID5pQC9l2HbxJpee0zkArqqFCwyWc+2rIwP4bPs\ngKL5Ye3SQ7XnK0y3sRgRuNiT1fBxJfr0W2FKXFLJaBZ/KVblnnPyX0/Q/WHK\nEBxLhLVfpirf9IgXHNDSJtIAhKQdj1VhwMikc2Ct9wx1rJGrA262fEH3z/ub\nJliUlPxv3j3JndSRxbWm15O4lDL0+Bxhon1qXFRElhxSJAFLeMtmQ4vRS6Bx\nqYTwkbtdEpzpATrrraOk/KzdxUqecUoWcikqrQ7iH6UTzGyzWL0sNbxaJuSP\nYNUtIunhagKYToRZVeLdgPH/+aVlN9/43hwsATtuwNHeomXBMfIvZtzt+rjB\n1Gk6HT+3kkiWs5vOjKuDj87YTIJqMOFu6TXKMY6qCmiIeDP4fYY0R1yzSyIa\nnpKQSApctq2ye5vMeUBZDtjlRZgGyB+z1TUpLIawj7vy3W8Fl3lqyqSPb+0t\njC5MFRPtAQXv6wIw3UkjVgawhBbBnICx1gOf87BBhph06NoCs7UYDDsJvGDQ\nwAzC\r\n=yZr/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-balena-lint-a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4_1619814726228_0.3680274476041958","host":"s3://npm-registry-packages"}},"4.10.1-balena-lint-ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b":{"name":"resin-multibuild","version":"4.10.1-balena-lint-ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-balena-lint-ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"bac280934042259afae243509a7ba4043b29b904","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-balena-lint-ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b.tgz","fileCount":47,"integrity":"sha512-spdUwF0hB8y8wxdPAbDgcz7RNGVpp6nfQe/f4P9UdjuVcruiPCvNpp1jtrO+MCA5fbYZ2GXxB47w7+6wdyfxwA==","signatures":[{"sig":"MEQCICdBT1lUYR11ImeGdRKFLKmUP+waeD9n3h34HTK5O0BBAiBm1l+MnuUUi4CcOdtVk+pathjZCtraComwn883sMJUCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjGysCRA9TVsSAnZWagAA4ycP/j5S5+Ch0F2DrEXrSKTb\nGS8YbSX0Bln+xOIC1y40uFzToxOXE1Nu09DdCOFdg0XNJmBzLl6f4SvVhvE+\nzm17NP0kRZaUBt7P3cSnUmXLkj3WKWgeQUebTa0AULA1909JIZqgMY12B4mf\nwhwoEb241OqqO20IZGehFwg/RayhTaYB3rpn1Hf2T2WUaU/sm2YUX+FEzboq\nz1oX73E370KJGvaxB36DJiZmDERdbScY1owC7l9UXUP2LluTB25Mn3/zizXG\n5njsfJT4xkTiRmxlz9qJT+F9jJ9Kl2nPmi3fUl0niA4HVRU29gFvkJIKgFws\nrju1N3U+cakd+hLz2OxEIbpVXVBcktQOPwPMwukz2Xvqe/03HWp9xmw+zW+C\npPBAAUb7WD7qbo9yPd0wfrFfe48WoeTFSJVbCnt81f+PwLbVB3axmy0YDL7K\nFcRYRMMmYXfe/9ldeSQ63eoUl9LMYvIiiqk2cIOmZU6PLnuTA1U1VrGw+Uem\nMIm/nLEnENr17gf8iQqhnJJwiyOas94LpA4ViRDXhADWQzWuugb1YKdclGcP\nKHAuyKuJ0paRKLEdW6oDgB5/FC6lLcTf5sFPUL6CezyUswLdszH5RdcB3fNY\nVgNJkscJph9KS/dKGb3frBw/0qNE5L8e2cYYm6anDVABBb0TddoGI4CYwiUM\nrP69\r\n=T59P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.2","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-balena-lint-ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b_1619815595848_0.24418755988856322","host":"s3://npm-registry-packages"}},"4.10.1-balena-lint-2f4b08fecb815c029e9f73745c1c65b84e2e9700":{"name":"resin-multibuild","version":"4.10.1-balena-lint-2f4b08fecb815c029e9f73745c1c65b84e2e9700","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-balena-lint-2f4b08fecb815c029e9f73745c1c65b84e2e9700","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6d713a24ec8130da9839769ddeae683effec0d47","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-balena-lint-2f4b08fecb815c029e9f73745c1c65b84e2e9700.tgz","fileCount":47,"integrity":"sha512-d/ABeofyxBatgunBvtWSSr0curCZD/PrxkDEcPM1viKEYhQ6pH1r38PM73HotFyDa302IHcCZlW270sY7U06gQ==","signatures":[{"sig":"MEUCIQD8k2jBDO15NN5U5chQzCmpHD1JrWIFJ/fTzUpKTdsl5wIgVMC3JsvW8mykNGLS+2Z86uMsH9OmU36TnOcG+2rZ7ew=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjHQNCRA9TVsSAnZWagAA6asQAKApu5pCOLpuhMWYI2Ei\nE2+j4nHAp7oZckfHGUu2LQCH7J7OHhD+Cqs4+9wmGFaiWjHGU/AS9y9Wae+r\nIGHjN8MSNFoZDSnHyVST8PzzNP+EnqxaHdvejvSx9PRTDp+BntsyRXE6K3yZ\nZcSIA9MtQ2uEoFTvSQC31pMZD1K6TQ7+Qm2DhsQZ2LknhD5Y7PRmKYwM0YWs\nIHE2ADT9a1br5gdq04WtWKdE6rqFHLQ3FVk/AFXdZ9UFCunaFQjKs3h8/KT6\n+ykZm0B5BSn123XJZoE2uCkO4HLZ0jO1VsDRFmv+JhYXhC0jj+m+WGyYBkMr\ngJUumPrhBxgIe9EG5EOOvN3xnZ91cWAv4XbN/qO3Twk4MmwBzRncX2HPFOx6\nphOehNoD1cysVQZBsRLllu6O+aT8Qtd+PbrqEiCoOGAkubwK9mhx7ToOujT+\nG8Z58I51fKHtC5Z95iuBI49PXu/E/b/9+2Gh1wY4uyGdSf47b0FcDhuKQNv6\nGHD/wWHCkoyM9rs3uH1GOUYAvBAPN5eBF+7pZ59E4fqU67ePsVImO4nyZpFf\nxWuyN2RntpAcKvO38NvnN9m210i8lD5wzISxqAMtoGxGd+PSvhtRscuomGRC\nxF+vlYGfBNruV8YMJ9WQxjUyqV6gt1mdoZOPC41cyGi5KKJXFeaso3kzgWpc\nQ6Gj\r\n=WotX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"2f4b08fecb815c029e9f73745c1c65b84e2e9700","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-balena-lint-2f4b08fecb815c029e9f73745c1c65b84e2e9700_1619817484807_0.17601430354764713","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-bc5388f0074885e39a011cc09179663cff3a533d":{"name":"resin-multibuild","version":"4.10.1-docker-progress-bc5388f0074885e39a011cc09179663cff3a533d","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-bc5388f0074885e39a011cc09179663cff3a533d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ebf31da8fa764c249cba4e491259ec6922b36c3e","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-bc5388f0074885e39a011cc09179663cff3a533d.tgz","fileCount":47,"integrity":"sha512-lWDXPAUzPkaWa85UAPvO3tvdUxn1ySjZziJYW+0/TP7NNmmuUJa5Pu3SMqhIp554Tt9jrttPUrGHeJvbekI9tw==","signatures":[{"sig":"MEUCIEZpy8P0Stevd8aoHwQWgmV7lMR/h4Efl51r31xmFH9dAiEAp0APU4ysZR9GJU5WqVs+bxvRG4o2fNmTNEO+G3bfn1o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjHTdCRA9TVsSAnZWagAA/fQP/3YhP40GJRSU0iEcdaE+\nLbXFDDDQ8q6xTm5nqBAgP/YD6/e9RqjQ0oidBH4LNkk/WxFFYA8tTDfd/GBA\nsXDR1Z+1k5Mfyq5a0mbI+ZzAv66kbS8BE7Aw1AzUqfxK9U05an79WgqcP2Kn\nldBmsgIHK7hFALgmv43sIIuDoEzMUoRpGNT+uyMX9Cw2eIzvdOkrWpGajyMw\n0tSlYaETWwVKpDJvAsAt0fHjT8XnPEtu0SQR/8d+ETfOMTgdtIpvMS+JGO6T\n1jio7kgzYsiKBjutqoacxXLoccOriUqUZfb0CP1d/KbrVuicaK/9FcLlJU/1\neaKYhwcCsA6thhHGDQLO03RqZOZ7tWCOpLQPNRgbt+LBu9rthpo5pkCCKJu6\n9rvPs2WtRESicrlO7zbeOUyFj0hbGTFC9eAbJ/RjGxe2vKU1IlZ4x34nLCq5\nmDtRqBMSnEwHQMARD3cFJmySwVZHF0/p6qmNlXJzFlL1TdyNGdIAcXaZkGDR\nvWaHfUnLy26hXqt2GGMCVllpfHetEEFjEvHt/ekLbVCwUl5ea+RUhC448iMx\nC7L7IrZUkDS6SSc0567FimjCgjH1olqG0KTRVUQceM8/ZedjhvKqPB3NViDd\npQUDhgzs3TokPiYPzyXtzXEj63SNu74m5IQKRcr2YHEX8GlBVC1JYpg9g6E5\n0Odl\r\n=qNR3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"bc5388f0074885e39a011cc09179663cff3a533d","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-bc5388f0074885e39a011cc09179663cff3a533d_1619817693071_0.5406762004373056","host":"s3://npm-registry-packages"}},"4.10.1-balena-lint-6fd832e2b9d9d15909d420d5e4183718f05bfee9":{"name":"resin-multibuild","version":"4.10.1-balena-lint-6fd832e2b9d9d15909d420d5e4183718f05bfee9","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-balena-lint-6fd832e2b9d9d15909d420d5e4183718f05bfee9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9188145fbed7c706de8a294072cea0911d318625","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-balena-lint-6fd832e2b9d9d15909d420d5e4183718f05bfee9.tgz","fileCount":47,"integrity":"sha512-8TU3HqygHjjGUYZ8HaagodjEcuvYlpTz8By7A4ioJBxju6D33JAr7ctke8UhZVHpz/bgcfpXty1sFW95cuzieg==","signatures":[{"sig":"MEUCIQDiUlWUzz3hb5bRUqGDlNLuZ4fM7azr+fS6B2PPeceBFwIgA0Lo22ZZo5wyEf7tAeemzepV0gsjA/xiIqqpW+Hgxu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjIZXCRA9TVsSAnZWagAA+/wP/2gk8W+fPhYk+Hd+t5XW\nosh/1ZCauVbpQur1zH4wn7Lm+Skd+utn/XIdYh5PRYfiWEVpkVOkx6udwQee\nyQVRQql91GSddWqgJ3rA28lJjc5//9hrspOzQQQusUxy9ndYq87SsPsedO/w\nRZthBZT18aY42CLGUZxhNg0RlaWTlHxwggCI1HHSqZYkUnK1MaybPz9bho8u\nDu9gSaY58uprFv7s5xruFdA6oJwb+onulQNOrcXkhX66p06HFHDSnhS155KX\nX7xSwSNysqjdOqlFu6rKZOEhrwGffx7nr9oa5eCgXAYc7CqSaNmLI1/qdRXs\nes94ONO26H6F0x2GEu3AN5QC2sBvPRezL8wMqdSdmopJ+kB6mfbDEIIdgsgw\nvpYvEfTw2sXU6X/QbFW7bcoxa0qaNqEQUFcfaLyKwuJajphaRZm2HH2Z+SF8\nSlgSo92lz4D+zkYZJFFTmkZi6RT2kqrJIfRL8MueQBKFyNI/OMKQLVCvS0is\nr5TcKPjkvxXHyY+Lf0yRXN2ZHkWM2hqlEJkNdqaC0MMH8prmnnDvEkp6eO7p\n7y2OaB2liwVO6S29+uiWfuMR7a/DkTrYQloC5nySMbSY2tQ0iRNoPj7RJ9z4\nWbTvyg/B8Myphm1fsMDtjHym3MLkRDPpluNc1k2KwhfJULX5VdM+hspois+C\nIAtg\r\n=Gydr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"6fd832e2b9d9d15909d420d5e4183718f05bfee9","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-balena-lint-6fd832e2b9d9d15909d420d5e4183718f05bfee9_1619822166652_0.5985025068695169","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-e31c1dbae8768366689a9704d69f486109001b65":{"name":"resin-multibuild","version":"4.10.1-docker-progress-e31c1dbae8768366689a9704d69f486109001b65","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-e31c1dbae8768366689a9704d69f486109001b65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"810730b7df278230e10ee70e2dd592c826525b05","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-e31c1dbae8768366689a9704d69f486109001b65.tgz","fileCount":47,"integrity":"sha512-FSVJyjBUnqv0jqwG6CsXrSgZG21OtiJewv8PYaCFjkiVQFW+RaPMa3LriOtebvZvBDbkGwrTHEIYD+tBdRh1Kg==","signatures":[{"sig":"MEUCIQCCcl33oPAPFVeBAfxkb85NMLi64tcTIACMMMZz+nuG1QIgV6Z9WcmNVjQKithtYSltn3OyBlaFbGMxIvYVgtVRRqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjIe7CRA9TVsSAnZWagAA/EcQAJWSBM+Nn1wSxn7tLj6K\n5klVTA/lwC+yb9VgumBSSRaofd09vB/8L+knuaXSZ1wD6KMIWUv4+uq8fS1c\nxDp9pPO7qcvWUIQglGEUMalfYsAZ3Aspt+HPGANlQiAp4TbexwiHpGT2MyPw\n6gqlo8G2k/mC3TR5+ZfEQmjsOjOvUgBypFcP5YHBnDAqbIoNFLvElH9PCVDw\nfmkx9fYyo5ChGhLr28Ul3wEerF6A7ODMpFFC63qKftNfM79HTht0AjgoWmil\nY9OO8WwNsjqE37vyLwNj1XZ7q4f7zIhYkyZqLfkVA7sPrBR9H0n0jcsvGSmW\n/7OHMRlCekgAhu5LDCyswmw7tfti+Jj454ZAffG+YpvBr6aEwol/A73FOKD2\neegQjo6Mc+dg2/RUVeYVo3MfZjM4m5spS/6SloYthU3oszv61ewG3c85nYvp\nvDBU49MC8O8rkia1TtqjM5Jh6fV3fEcOYVnwPtv8mENIKdQdBXhnLPL2MbFg\nLXOpk+DOtLxK1mQLcose0VFEowJeFESAPoVvWklPUW0AFf/IDucAcRzp56ro\nfyfWmblD0tOthDe2K1eaohPBTY7atDPgrAvmDp4ZpVG0ALHqEDKJNahaDaco\nbOPKjWd4qmkF5RrL6c7TDDDA6vu8wW16BriEx3/MezHjx2WgxqgK31oBsAbC\nrUGW\r\n=FGj8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"e31c1dbae8768366689a9704d69f486109001b65","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-e31c1dbae8768366689a9704d69f486109001b65_1619822523360_0.5101129226953149","host":"s3://npm-registry-packages"}},"4.10.1-docker-progress-25fa79de5d948bdfa093578379c61ee75c3ea931":{"name":"resin-multibuild","version":"4.10.1-docker-progress-25fa79de5d948bdfa093578379c61ee75c3ea931","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1-docker-progress-25fa79de5d948bdfa093578379c61ee75c3ea931","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6ac31ea0456dc1ca1d82e7747085870eb4e4702b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1-docker-progress-25fa79de5d948bdfa093578379c61ee75c3ea931.tgz","fileCount":47,"integrity":"sha512-pZFxNIiRLLuDce3AcbEhHHU0fPj5rhknjG70EIj35rzNor/LFV6AEMqcCT0IS+oLAyLzFtFhCyNlyuXHdU7+5w==","signatures":[{"sig":"MEUCIQCzeOiT69J9eUWUsEo9nOGO6gkb1woWmjQ+cgC/KN/fvwIgSt51eL3Q/mbe5k+Wa1fmeEvX5+fT7/pLHCt2MdYFt7Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjIpQCRA9TVsSAnZWagAAKgAQAIRov/b77FFk/BGMx4j9\nSDXAFxBeAlmJwGusDXiVeP2pTUoc6yoENi0fNP6wxF00T+3NlIzrf6BcCrkd\nOXoDa2Zz0qI39GyfZWoobtLQeufsWts5X7BuCANvEzbqd7ikveylggorhI7s\ni0tTwbAIy2gkHIaQ422AiombEoC2eBmIEYMWimPdSr6650WMpcOatc9O5G2c\nPc3nCIyqHVb4W/+Wb4ty2fW4tQ3E73kD1ljOJL4sUhY5eylzCG1a9f7fQIkj\n7asjOhQmxV14vhkTziBhKc/NI0/8yi4p44vaj6ng3s8IB0PjktdxGtytBOd3\nZqkd//pxnivC5yE5X9TKmfO5A6q2xjRBnvXODymf+KghsN3bTSFIk9MCUR46\nJ2ioVn4PMIjL+iiyC5r/tTJ0JmPQgX/4vvcw91KyrPNqAdydEVuSEnKQHor3\nzM8o7H3t1XcFYc/CJi8WZXrMTDYbbuNsfGOkxM8zIqQAOnXCPFUDTGoaISzi\nInWAVhmGwZGQNqp3zO6K9tlbSxkWdXdsHdykzz9Gu/lfl6hd87s3eezfTjdQ\negSV6WGnnCrdZVtA+ALedOoQsAxkDYQzjz0jD8KtuIrGGqAJywv+AwBhDk1S\nyE77sr+4yTQPaFWTjjkb7tm2aG/uGgccO23VuyOJr9OxmpzPrM27jl92pK2M\nAJVw\r\n=PEU8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"25fa79de5d948bdfa093578379c61ee75c3ea931","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1-docker-progress-25fa79de5d948bdfa093578379c61ee75c3ea931_1619823184333_0.14902532757854647","host":"s3://npm-registry-packages"}},"4.11.0-docker-progress-1c8043e2327d708dac7e9d23ed135690a52223ab":{"name":"resin-multibuild","version":"4.11.0-docker-progress-1c8043e2327d708dac7e9d23ed135690a52223ab","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.11.0-docker-progress-1c8043e2327d708dac7e9d23ed135690a52223ab","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"6c30c114a3bc8a6be2b3c84f380de55e458a86ec","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.11.0-docker-progress-1c8043e2327d708dac7e9d23ed135690a52223ab.tgz","fileCount":47,"integrity":"sha512-hQ8N8o6q7UdkIVuvC3w8PJ3gzJ9HbD0zmq+8VgTAtXF/6aRhM4BfPshP8ZkU3VbjKEO5FIV464hxQiJT+7OkhA==","signatures":[{"sig":"MEQCIF6GXzldcz9tEJ+iDg9a2hHl1MWKOOAlCmC1nwreOU4/AiBMaZiXydRZ1CiJ5TwT8NrfLsneqf0FqYMA7xzz02tjzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjJWLCRA9TVsSAnZWagAA4m4P/jhCuqkRaFT13pxSBCIf\nsW98UXzSYuc1TKuloveZFt/OoPQq/koVzfEyjE4UzFlxmZnrc4J/+kSXxG6y\nBq8Cx2vSMl7cMXubnWCeOX24AU0rtcMI2rG6nEwLaYNh9VxXW1ktGXEFn3/p\n3Y3mJV5SUO0ZExo2lF80vuBfTh89a3yuzj1Z+LCw1PFFkLfDZm/7IU4i570w\n7LKmeG/12m41jHDvrtdX/z7qC6TV567+K3cPu/95puAnWm9dnnX67G0sn9qT\nz01gYtZ9IYneYCudLHy6FdXoIF/M/J2f+zhqzYG/0q+dfZZ5wWivzArCTO7H\n1mE0c7X+SeL8ejz8C5i1BIA9YLYmtHi0Ypzu0WgoC6xD5n6Klnfsma9QId+D\nOc2/hVJGVfM/OebxHjFM068TM4VGJBz5RWPorYnjHzqIWFhvp94M7jp/L+pL\ngx2WlpkFdml9y8O2QOY306v5GGZUNmU3QymQZD5c2Hgi9wr2da14jjkKn5Yb\nadP3fPokKr/Bm6+5rRNGrVmBLmXSxKhjiYJMsH+x3suIVIojrYBrtMhknUf5\n9yz125TtL40FrbGQnerRtBS1ap9ezrs0aFft79CsJWS6aOA5BHDijbsestUx\nkHy/4TdKBlIHz3lNoIepTH4egxmfskYZQEybxu+FC9iD/zZMCR264cJkeE5Q\nNSjz\r\n=Hvjp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"1c8043e2327d708dac7e9d23ed135690a52223ab","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.11.0-docker-progress-1c8043e2327d708dac7e9d23ed135690a52223ab_1619826058750_0.035937325538824005","host":"s3://npm-registry-packages"}},"4.10.1":{"name":"resin-multibuild","version":"4.10.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.10.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"f9f7924d9b15b3be59c32d65260edfc0bb69d118","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.10.1.tgz","fileCount":47,"integrity":"sha512-9JNNDpPsiyrCtehUxT3Az9iAk70CcfoFFShwTe4uCfst43YPrlJWcxgMI3MnF76qoKN3Y+12vKYyn2O8T5eTHg==","signatures":[{"sig":"MEUCIC3WExCxN4H1hvBmJ8TbS6nx8aqfYh9X//UrXYQ9J9USAiEAqP7x+MK3McBjRSJqIwNL5VZ1VSxEJxLO1d3ap+jjwgg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj/umCRA9TVsSAnZWagAAAUMQAKUOe7831lZGQZ37RZkL\nNbZV6AC9feLEcwbh3k29BLsrtK7fiHIIawe0TQqT+ftBCtbZH9apQjM0V/tE\n21g+paeJl/OtIw5HvI8WD8UxtUe3FscHj59CJKSiCGRZjqMEUNsB7q3KLDLE\njZFgdpI7PmXpvpCecF6W22puexItPDyHIPp+3o9AaYBmfROhWMqul7syRAJD\nTcHGdBDJasZeLjoqKxf2Iwos8AMtqFU3u5gFBAlPsvtJio/5d1CZOCaiEfYk\n9JPUrUBEuiesJMr1RStYqbGzT212uyl2VRIGcXnopGPvIfU2sXQ2W6dD3cLJ\nKoge2CIVnoZuhsGNC9ZNQgf3/Z8gw74x90rvLn77BCpXcyjNytlh7dHbUtNJ\n0OruSwQfQvd7Zh1CHBNqCUEcqKnJDOdBoQKXHCg1vuoC6huJH4M4mNb4zsib\nDeA9rj8IuwjcGbXni/qArQsMEggeAuBLzpgKQmZvltVtzMZC2TPBSLcnNWBO\nFgh7SMPk1siXAR1PvzK097xaKFmElsdi6f6PtwGGPfBFTF3YOuex+MQXdR5N\n68u99a9n5vonW87IBN2ftOlgy2or7Yd/8UoHf1+1c68gbGw6dJm+XqtytQNU\nEDl3lLD53H9rPG0xq5Te9/UszQ3XDT5/PqR3vVMdoVlb/IOPOE22maQ75GXc\nWWz3\r\n=tA5k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"a4bcb942f8007f8ed00c3efd5e0a0d20faaf4ca4","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^4.0.1","docker-toolbelt":"^3.3.8","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.10.1_1620048806014_0.18098537041933294","host":"s3://npm-registry-packages"}},"4.11.0-docker-progress-e3c273cd25d0e7bc3e00e08bc22210f521a565a0":{"name":"resin-multibuild","version":"4.11.0-docker-progress-e3c273cd25d0e7bc3e00e08bc22210f521a565a0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.11.0-docker-progress-e3c273cd25d0e7bc3e00e08bc22210f521a565a0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"7bc26c66f1e3f0996859d184db7da6f60301727c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.11.0-docker-progress-e3c273cd25d0e7bc3e00e08bc22210f521a565a0.tgz","fileCount":47,"integrity":"sha512-qsJVXuleGiuaDB19TazsqEOPzv/h9Nv7PhcuQo8bCf3KSNIRAWTd9Ga1kfT2lYt7xr5aKT0EM8o0HW7WJMdIqQ==","signatures":[{"sig":"MEUCIQCQ0lCyfg9RqaABbfc86gdMM8ko2ehTx6qdTAPs5yVp4QIgNrspSezrxYxcCx3f9/3z+4+C0c0oCqo5C1n7bwUqFsc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj/0HCRA9TVsSAnZWagAAisQP/Aq8rwfB2FJAHZLeBpd4\nQpQrEqSm0JkupC9oZbtyerBcRlzVXsWWyXGWoHjGITK9yHpk54r6qPVrOcqt\nphrJoE8Q16EqbPbeLX5nyRzK2Uxm8kigH7M5EKNUu/DKfWW+xWIwRKpVatbO\nXq/bUgN0TadOcPXRZRFAneUhnJUgvciEdgu/BHFoYqXsShbXrd55wyssyd5w\nQpPglQwUUgxbmq6GeWAVd8HrDFrCmkkXzrcOA7LD4g6Zm3neI5Dj+EWc5bbB\nYY9wl5+txLDbF7K4PGkRjfmfn4rLL9SJ8OAAt4lrMwhWYz6keUDTWIgp+XQd\nLn1qepbBMAklltdsrX2np5lkoQ1XtOOHMZaVOpnW0T/V8A88gv4vUUG/r+YW\ngp9I0tmbiPUSwsq/Cmmymjn9Au80zZO4mCBvIHKe/nV/NO7p5kFEaNwm2z3K\no+u2e1ln/xB57X1LLecd7vR0zrClZS+2DNqkZ9uW129jtezd8cCknNjFY5Ul\nI3AilKYkfRXnqxWc/oNdH5orr86xr6GfpzfyATmfxabuYSiq+YRSZgCG5nYN\nN4PCkRNV0MufxUVObi7Vr2uValYScPGhATU9O1vHp3ZjBGSrMY2hj1N+HVuo\nYSx8EZIMXsh2xvhL3UgwtYaxsgKxFLA0AjPK6J8Tx58iJJOVbefaeqmfIFRj\nqwuT\r\n=8aH3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"e3c273cd25d0e7bc3e00e08bc22210f521a565a0","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0-decaffeinate-a7f38e63ccb88d70553ea25cd0b4fc858e510778","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.11.0-docker-progress-e3c273cd25d0e7bc3e00e08bc22210f521a565a0_1620049159443_0.14456222569708865","host":"s3://npm-registry-packages"}},"4.11.0-docker-progress-a98812ba901849eea9ea335b32c7df8ac2fe26a5":{"name":"resin-multibuild","version":"4.11.0-docker-progress-a98812ba901849eea9ea335b32c7df8ac2fe26a5","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.11.0-docker-progress-a98812ba901849eea9ea335b32c7df8ac2fe26a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"24286068856b9df71c9d501c32fc14ba3f43083d","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.11.0-docker-progress-a98812ba901849eea9ea335b32c7df8ac2fe26a5.tgz","fileCount":47,"integrity":"sha512-5mAOggcHe6KndfHgwroEuGa9qAvTHWC0OtDHhfHTSiXkBaYnuk9x3sBJ1wM6VZIZRsKXJcO6WQSI8N0LSbFDaA==","signatures":[{"sig":"MEQCIEguVXP8mN9pg5vF0yGfNC1hKOmaUUCtDIaKH3p6kH2vAiBvTRieR//aY0MF7FNTYQFnmssGhiPJ6FXpjuKDLqmtTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkvtqCRA9TVsSAnZWagAAk2sQAIitOBdVe6OmeSk0Zody\nPhbLGFY6kDD2Ven1jtrk8a2xA/Q1+lrk++DbuCCM88FUFFsFNUVJN2hgFB6+\nMjRwiJhfSmEBXi5FPbhlzaR1EqNmM51/nl9rJdxY+WR4+BrNgEdjiOKi7V1b\nKgPi93NpbE/7dhuiZDOjDtpvQRReYJ5nt0o2iyTUELK70Ay8vr0pOObMaRV5\nr3zmXQcptJ42pfRSJOPON0fSNYoSYZ85oUrNViXaST+UVtYotFd9XYDLdP4H\nIs43Ym3T97ZGmsWAsxmu0rE3le5aL9q4i8BaRp8GJcw9G7hT7knVrtTBvXWg\n/mlpmLW79JCl36O/U9dCGqeWm1O3Uu1FGE1Sxo8CCUiKn6AzjLE6P2UhJqIm\n5QUCmIsppwhixbl+04VjcGqyQrQra5cOO/j/umnapM6d/nk1NFP9tb9flv1p\nrGqL1a73PEVU8b47RN+7u36bEQUZiHbEGF+0RrcZ7c/8SPgXDQiGY3eOdF5q\nDjkO6/NWfIF7CkT6IKxfbCNd97bwUa40QK5o4zSVyJKtduee74EGKjV+LCuk\n/DYgIYEkxN6xPpq2+edALfQGTOAXjCZQ8PnSMkI0b5HS1uw3PZqtDUp3DH9I\nnEPzzbCbja20N8EiYl9fbdXPmAj/X3LNuat+omyliU74PD99/lffKNii/64Z\notFB\r\n=ILmQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"a98812ba901849eea9ea335b32c7df8ac2fe26a5","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.11.0-docker-progress-a98812ba901849eea9ea335b32c7df8ac2fe26a5_1620245353977_0.05285616882207944","host":"s3://npm-registry-packages"}},"4.11.0":{"name":"resin-multibuild","version":"4.11.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.11.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"34e28d9cfccadee3925044becd20153c59f44e23","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.11.0.tgz","fileCount":47,"integrity":"sha512-rIYV9GDNuI8pU9N+wGdVRIOGAnw1BFdbyt3BkvERFxbf+b/e7jpBjHkbK8VPQdRMlKPyu137ZxQlR3z7EivJBg==","signatures":[{"sig":"MEUCIQDeaI7y/G9fHKWErloDSI2TK2gSzk5mstlD14UrddVDnwIgTdM+6i0Xl/Mkt6NOzxgai+456r7vo0a5VZhwe6Wk280=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglBtRCRA9TVsSAnZWagAAjYMP/itJcQkD3cM9AkfSUGqh\nfdSPGGMvMMM84D/o6N6wHTi31xilfywFCqt0tnRr27f2obs2zgxeXgv6TdgZ\nATW3XyWIGaxhMrvEMUHl8gUSva0dm4bFjjwxslDOJ4HVQaN0XWoAlTOc+A79\nSXLpT609SsBGdmmdASPfiNtq1RlXLXd3UhMzuy8ds0jaaZ4inyUaldlaRcWu\nej2QpRLF8wfGaTu8bSRCLoagjo6MWl8GGKY2ozbnglAWIto2iIi86IMzTOVm\nGxHMsYN7cAXqhTvQSP+UBfwjxvzedRjWAZHdeI53Cr0ksPX5NBeKuCy0Vneq\nPapM1i5hduQ73BDOy/uwaTtg8R3fC4+gRW4zPVfEIhZyd2BQc9sZ++Gqq13J\nYT9wSvblwvk9qRLjOVco6m9RggUaPOfQSlEmD6Nvc37mMuWUkQs7x6xBIKrD\nSdOyo06sXVsAA5NPOxlsQo0PgMYBQgk9HgEJrZBI0ixInqPVDuVJ/WbXey0r\nnYqXUca01svhlUtevoCaxD/OL/wLGKqEbaMW9J7ohJi+knY/bzBdPH4f+Lrn\nKHzgPyz31NtgJeHSi3D5B9y0QkMLZJ7oYQORmblhFthhBbAXH/PQuF2g1kWQ\nwVDz7l/YrunP4ewa+ouIzwG7/VqEEAqtzGnwE4YhvbQv0R2d+FGZxDWGBjOm\nI45B\r\n=vVOh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"cda88bc0f434cae3b1594ee15e532d2d455ae510","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"_npmVersion":"6.14.5","description":"Build a docker composition","directories":{},"_nodeVersion":"12.18.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.11.0_1620319056914_0.5040046443694084","host":"s3://npm-registry-packages"}},"4.11.1-it-only-and-balena-lint-f4bb8e00e1b61909c4950ba4c160c6a0b00002fc":{"name":"resin-multibuild","version":"4.11.1-it-only-and-balena-lint-f4bb8e00e1b61909c4950ba4c160c6a0b00002fc","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.11.1-it-only-and-balena-lint-f4bb8e00e1b61909c4950ba4c160c6a0b00002fc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a73d71ee68dc1b94f68684c62acb33d44f90ec3c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.11.1-it-only-and-balena-lint-f4bb8e00e1b61909c4950ba4c160c6a0b00002fc.tgz","fileCount":47,"integrity":"sha512-QKM2njbrnk7UKKGEDicfzbK9oQdyghMkzZDGBQcqQ+cMdYnILRa/bkfK+BrvSzjigPj27fjuMS8eDfd3t9ZrEQ==","signatures":[{"sig":"MEYCIQDOB6PuUoUPx8deGzDpHr3+hHoXbjsAqKLSBJtsXWlVuAIhAO3YRXcPkt7yVM1Oh/mhZRKXnk3g9hO2F1Vv/2vPN5eu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+CoHCRA9TVsSAnZWagAAyHcP/3nbdGHsfwvvWxaQkeuP\nawP1kJzaQmEe3t9p9FAdoyUrACPAlEJJJEBfguSwQU6WBVmSrKdk1xJ61U+y\nKAQDQsWlXmgTEnw5cecN3s3rpLbBxOo4cU3FlhFVmsnYyHEW5/nmZNrh2Epm\nktdA9GlZSoQGR243ysEsNZDHZZgILJB9ZBjtZsIXVhqSl6yHeXY8l/4x2K/o\nHnV5i0MAOubNMnEeC5YFIjaMHU81K6DQdHqtJaWYxcw2+jB4hUg63ze7is1t\n/gZOi2eDWWj0kCZzfB/NwQ93s11PXGDpGLN8ZFLzgk/nWsBiCr0hA0ZmSGRG\nmdSnw/ec7u9dzudnPhQ4VulfNTaMGf158KgXQMXlSlbMFplRqn2zZ9Tza9Q9\nGyWYSDIbMTGbMSwvHxnRFYQnUHlhh/8y2trxoUZqZXsgjPivUdEIyzctpwHh\nTHsymIZwOSz9vHEQDo84uOjn2xZU/h1vgzh558/z2u0XZ3Qp3rcvDPePu+5N\nYDLpkMVtdXQy4UkLteFJ9FFUNG1AZBnlKjooGz7Iph+rJYe4giobLlYykYgE\nlrB5IWCb6NRFjBAip+pjq7DeETHU64/bhNm3qAUno0C2Vg3RLW3jfJO1VGEF\ndimbv0Tk97gdkqjEHfLjRSEVJ4iPRmhYwdrjWAW1eNHINZeCuWRt2+Yl3pTA\nQlKl\r\n=jbEh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f4bb8e00e1b61909c4950ba4c160c6a0b00002fc","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-07-21T14:02:59.419Z"},"_npmVersion":"6.14.13","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.11.1-it-only-and-balena-lint-f4bb8e00e1b61909c4950ba4c160c6a0b00002fc_1626876423649_0.8233234068806503","host":"s3://npm-registry-packages"}},"4.11.1":{"name":"resin-multibuild","version":"4.11.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.11.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3084e61073cd4a816b90a46c54a54156f2a68dba","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.11.1.tgz","fileCount":47,"integrity":"sha512-x8l15zJRBTyeu9i9M1iitBWsaIYggZ0NnY2wkmuW84qbjeNaQTp9xcPaYIqVFnysiJ0QCdGVcQL5pWrUpe1ljQ==","signatures":[{"sig":"MEYCIQDRYpSlLGSeQGOEJT2wFqld6BAkwi/j0qCO6Ff2ArR3AwIhALKPq9VUpRrrU8BjWVCgsTtHBeub9eTefYEfyIXbNKZC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+CtVCRA9TVsSAnZWagAAWlQQAJ8MhFHJR/eJ9+xelDEF\nfvmgmLX2rbJLGD8lbekOAfKaqjAyBMHTe0Tf6/iu3rM+3+xGYAQmndidZ5fk\n2naS2i9t5LtvrerAZzPj+tgjUvcFntXy8tqHbBPbshEpNfK3EaJqKBFt8iUX\nxj21veOaDLx9UB2PYqutBxHWh3/AwpPUB5A0OzetK82jA7z7LZUqK//npY5Z\nBqdWbIZlY/2Uch3wXJc+nQKR0Wv4JfifXcS3Uonj6C6Y4klMRO7Y2vvF3uif\nSMuCqM1XgCpSYifZvDzAjNv+fygge6GZi2jDs6jr9oGusDaP7Y6O2IZSZrRP\ne3qdKtgLIohtUYy273JNYh2yNzhB+ANcCJqBtsqbiuAYZuWB9tjedynmazGd\nTqyWW0HW/lHVq8TxaRL2vk25z4pNz1A64+2Q6KG9CfmThXD9v0Ll+qXoKmWb\nkrFdbgEXbztYPjb0DDOW6fq1t7wpwkSTE7BOjtMJHF81NI/5msdly4PF0pAg\nL0/Daito2N8rdYMef+IYycas9rpI7kV38RLfNBy3y4ZlKs2sO3plkiNNLsgk\noiHCyGTuC18Y/xYcYlkS48LTNgvLagrmbQXZFz/OEvBwn8m4NeGWMZ9dB0YW\nroI14X/ZdlDmtJi5PKYtbb1ZAS1/yL6VNi9x/UMk9bfje30UoeE03l87NLz2\nJI1X\r\n=qJ3/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"30cf54ea5aab7fddf34e1204c439b4331bf00f35","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-07-21T14:10:51.182Z"},"_npmVersion":"6.14.13","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.11.1_1626876757850_0.5976940518266616","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-ab65185271cda09aa8f215772c0d6ee314c86d37":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-ab65185271cda09aa8f215772c0d6ee314c86d37","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-ab65185271cda09aa8f215772c0d6ee314c86d37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"deb8e0611f9ca68d796190b587a55979f2171c14","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-ab65185271cda09aa8f215772c0d6ee314c86d37.tgz","fileCount":53,"integrity":"sha512-WE6iexz3OytJ3WOVyXknbJTdi32NDjQFkocFY8AxaVVTxJzritOrDm8FLAYpWIE5g2E3Wy0Kt8e5T26jY40Auw==","signatures":[{"sig":"MEUCIQDbkahQq3epGgmsp9s5De792XK+AdBPogJRrmjaE9S/xAIgMyLZry/6xIlqQ1obQnqb0oA7sou8aAsW8ecpw2dS8eI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+u8rCRA9TVsSAnZWagAA+WEP/1k109exPXUQhHU67pL6\nlr37hKXDfXs150yvoQVwX+mg+V/ptsz0OMKuok/DR+60HBhZgTWZGTrY4lGl\nWZXtpngL4RZKTTG366+eoNKCTNRqivuZfnc/aVwhRHwDniuafxRs+D0xtTjX\nmv2tGuqhVQ59dWywPoGOLHcS03zXgzbksi6nnUM1bh8VKBcagbwmcYQ91xHp\n4xnycp5vXXyQ+0txo0JY+T/TLpZDTIARePtYNZft/jYQ9KXdqItSzKi8gR4W\nz69TeeJqJVW6giIpPhkNHincM9x8iORLGLD85IYvBfxH2oYtnEFrVENhx/UB\n2pt+dZjzlZeLot14X8zPJcSAXdwJ9UtsjxMN/IiB5EmUtc56538Bt8drvaeg\nzYrAnd/G/0ygqoHf+R0LfHnfgcJIs9GqVA+JPfLPkzUsgLvelc8DLvSu53JN\njs/BZ3mFf/wbeHGtQ2sGRieK2KtpCOR6mR8yOhW7IiniiSs35QCSFcDXZeCU\npH3nZaTmsp/csghmXCJgJ4scSGLEdWYm5AQiPIL8EqdufN9POEkCnvZvrdJQ\ngPooRwj5Bn5l8xzD1yYtZF20OuqtVFcscpvzYLxaJy85xkMduYLlL5xb96Sd\nTl4uOp5ABxsTr7ugVNAOejweQocejGiw1G37C7pgnmV95+wW4jhAk7LYCvJr\n8Zdu\r\n=mYCV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ab65185271cda09aa8f215772c0d6ee314c86d37","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-07-23T16:30:40.255Z"},"_npmVersion":"6.14.13","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","restify-errors":"^8.0.2","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","restify-clients":"^3.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/restify-errors":"^4.3.4","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-ab65185271cda09aa8f215772c0d6ee314c86d37_1627057963521_0.3219816502448052","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b5e637070fd4aa3461527b4376eab7682c35b811","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1.tgz","fileCount":56,"integrity":"sha512-REXOvjO6qvipP0exZENHaIhzz/F1Zs5v0e73yN6fpM241PgjTV4yc6B6idWiPhYkzFYDiFVMC0EIeomAbi9lUg==","signatures":[{"sig":"MEUCIEf5wyjUbsHFqPdby7znh9CqIPBXmMt1xHkgasdfznZzAiEAqSNDixwtgDn0vp2xhzkylAM/skRonVtjNxwWCndDuy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAKZZCRA9TVsSAnZWagAArhwP/3u94jvW4TwlHS1cEQWj\nnsOBzX9pUegdBDNboRY6nTgBHi0ucf7MWP5Ql7kDAeQM3tH2/pKEwHMkK7ej\nmk3H43zDmk8fMRsQdNfTgdw0eJ5nDFDRg8q8Zz01mEGvKQinoP3tFEs0Dppp\np+endUvw95wucO7nJ6AbjfxzAwCqCHNgfEY+VoBrLRvVrIEceDhTO/VwtHML\nehpfldBPLcfzMRaRmbm7QS1lNuAddSwxMuwNre/GEWqpDmdqg4eg4m96y+NV\nntPeUY6zFTOS1zZ8a7zlHmFsn3TtEQlf1lXmoykXCngyGmNEZ1EZwAyVFWPT\njxDBSMCHJ4u5YWCLRFVAcVviTPMGiocwAep/9pHyfYHcnHatFJjoUIeyKT7j\nwvAFtDjGbVx9HWaGxFMQkWFXIsDnYBRndRXT+QtbydT+YJc/66b5tT+QQTeG\nwSgTPbL0w1ZibAHtiM5UYQOtzoJ3fxxCumGkjBtiRJQRVaXimbcNBIi6gO/B\ndlj+MzkUDLBroE17vnlDRZGFHr0jm95OKLLVsIgsKRyw0PQMw0wzp3Nt71D4\nj5gHuQSNvHipvYf3AtHgLyq8M73MoRdq9VZMxNmOXyB9KqLwl/7WyjEGchjc\nYNyRqqow6G3txA66WV8CuUpsTUx7UDCbYkm8XJ8TaGmWArxpHf7RjhOfPxbY\ndiA6\r\n=3zGZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-07-28T00:33:24.929Z"},"_npmVersion":"6.14.13","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","restify-errors":"^8.0.2","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","restify-clients":"^3.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/restify-errors":"^4.3.4","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1_1627432537647_0.28523637509483213","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-72b79fe6e6e764dd83ff146dc19145c8e56af2a7":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-72b79fe6e6e764dd83ff146dc19145c8e56af2a7","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-72b79fe6e6e764dd83ff146dc19145c8e56af2a7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"004848d87e8e4a4f9302d780cf1ab795472c1f33","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-72b79fe6e6e764dd83ff146dc19145c8e56af2a7.tgz","fileCount":56,"integrity":"sha512-zmuWm1W5IBgXXxqnp/dhDwB6VOPBb7UsANZ4KmLVXuj47mPipVvhLH+wmpVy7/k6bz9NUCs6oIiXNC8niNB47A==","signatures":[{"sig":"MEYCIQD5ce2nzRePb2qYj7t9bHmfJ1ED8y3b0/Ig5qcmKJ63OAIhAPg1V+FIP1rGbJdyESvGZgCsz+iPX8ZVeR1xGK+gNcao","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAee8CRA9TVsSAnZWagAAhDsP+QBebMwzT7qeqSM/C5SI\nt+dY8Y1TYRBR3dUoWVvdT4A7QQeXtimOFF/TvdSmZlwfam0zb76Z8Mj0UOBv\nKWRpNkTbLgaDRGgXKcT4fJbEcq2ILJ7TzCeqsT7NDWZlNZkwiW9i++Y+GpAo\nq22+DV1dpFWXpJUjYTKs6i1SejL/IrUMJYsgKqLp2/ys+Lbr9aFo8PiwI1ap\nLzbwhpXoMHNtziwLI1ZswaN8SwTpRo8yyosfyAFhGjFr7roB/EltIOWTDwGl\nZxF6g4sLythyZNveEAq8rrN3Eu1GDoQwsS3OApx/hAt2/bwktb+EvhlpOhfz\nv5C6rbE9JPpGJn1Kfo5CGk9wcIXeVRHtsF+BCtfV9IyV0UqIHmS4ySxSgdiC\nYAvgrK7nc8IISHYUBHiVLTh2qJtI26AsM7uX5j+36iVItMdgwOSq6Ufg9Ay9\nVpAWuLa9Kw4Q/yXmu7jYmsiCiGYjyCIvmV7VM4VzOi84aKl7i44t4bdcWq4v\n/s/5Z1S5JGxWBTuC1MTEIaOCsE4u77FissJ15O5fCoYxDfWE0qtq97XbR8n3\ndLiy5N1lLgtP1MxJKyCBv9cHoRz33H1xJ0S2Xoa1gsZ/WHpO7eNAke4sRtBJ\nBxEMcoc+BT9gDgyiSaPN09PcDFwqM586qReQYfmkIEx64nO0Kes+TNhb/C3J\nCH5Z\r\n=akkf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"72b79fe6e6e764dd83ff146dc19145c8e56af2a7","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-07-28T23:25:00.539Z"},"_npmVersion":"6.14.13","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","restify-errors":"^8.0.2","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","restify-clients":"^3.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/restify-errors":"^4.3.4","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-72b79fe6e6e764dd83ff146dc19145c8e56af2a7_1627514811991_0.04153214808124184","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-882745d0dc731f1ba3b022d274f2f14026cf41cd":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-882745d0dc731f1ba3b022d274f2f14026cf41cd","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-882745d0dc731f1ba3b022d274f2f14026cf41cd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"cc0dc4baa93b9ef9383b75a0ef87b10af19bd4df","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-882745d0dc731f1ba3b022d274f2f14026cf41cd.tgz","fileCount":56,"integrity":"sha512-nGBQmVaWtp7Lp0iVEvsFi9BC3Y5YLfHSK0XM3TadFrU1dEkPcdcjDKpRmasDIC7+Ss5segPq+Uq5YosKHs6zCA==","signatures":[{"sig":"MEQCICS5vAHkd2scTIM30L7UCcuyBxhOWcz+locvsLrtQM/jAiBJGfhLon9JgHO96tgyza8Y/krMkerMnysTH+2+bu3m8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhArPgCRA9TVsSAnZWagAAlk8P/i/6q7t8J+CQ4Ci1kJ+d\nnY2SWXN9uurZEOQJI9Qj3iW3UwqTyfbZe3p/35n7y4ZExfKX+QHzLFSqgV5E\nLupe//g+1yGCoit8rB92usJSiaC5A++zAW1Cc6S/RCA3uokCXjWROJxvO99m\nq6tcpK4pOgHMlke+YFm80qEb19MDDGE27ATsIARxshqwe5ztn+tG6Etu/Clj\naj0e7XY+4oPdrozRa0616rSxDhp6SdxLrYn1q+2vnLoBR+nnKxpJlhXz9pzy\n2LZar8wIac+sZF3XXqcubMrmeqFjLadn+OGPU9OnTdAmRewtb2T39vEyVL7A\n/KXtKbwYJ/QZvX6EKWgYTcZfLLbQt0Xah/Yic5CWt7fItyZUM2ws4kLBvY1/\nxjbUSjjvqrtucQ7ZxC5385jXhXgLM58uRI/3IjcmQoy+2C0Aimz3mQZ85JAL\nEiH59RYcUNOucN4AVoFB0TMY6kNK4RAqbfDRNSShz4GX+ZeXAUhRI2Rx7yYE\nVYlJ7HM3JdCjiwBkFCjURrAGSNM1mNddb7BBOZLHvCOCmI69YT3dg0shZ4Xs\nOHpo+QVUyLGED1xIqXVYJZ4A5jUhLLVpwN/dpSFJkIQWfWzEXWCA8NtrVQuE\n6rnuxcjfpbg9whMrlrSXoLixAerihaX0N+Pd0WnzKunYcm0b2c0ApccQ0JK6\ni2rF\r\n=qhlE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"882745d0dc731f1ba3b022d274f2f14026cf41cd","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-07-29T13:55:20.204Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","restify-errors":"^8.0.2","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","restify-clients":"^3.1.0","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/restify-errors":"^4.3.4","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-882745d0dc731f1ba3b022d274f2f14026cf41cd_1627567072670_0.24690420193929175","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-9992df4616a521a5ff8d47f676798aef0064cda2":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-9992df4616a521a5ff8d47f676798aef0064cda2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-9992df4616a521a5ff8d47f676798aef0064cda2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e70216462493f3f35b161e5ca64926d72faff8a9","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-9992df4616a521a5ff8d47f676798aef0064cda2.tgz","fileCount":53,"integrity":"sha512-R85ffHC2mfEZk0rDmWN91NzIzFivLTCQiaXIaIP4qA7gVG7rZJ/1q14QwAp89PydvYaw03Lp4pomod/kNqh4OA==","signatures":[{"sig":"MEYCIQDrMkgFF9vW4f6xPmZM64z+5BCppo6SyPwRppwahA9HaAIhANFKxwl8fCrmMiCwZFDii4OcuSa/dT3qDdPSqDs8uSaQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDJPwCRA9TVsSAnZWagAAhf0P/A0JW2bcrm+Cd2KFKwzg\nC3HPDs6uEkYigtLu7U4wcghU0p4UsGil31jwq0njLARgsSTdLchG8PQmhdU9\nDwxvJRxPPRZUy51GCTXsY1VvZwZm0473yivO8Yoe/J3a1xKbuSyB+o4V4sX2\nKwdIQm7lsPpa7jpNKY/54Iaocf5uFSjht7Wy5w6vcp7YPBDR0tGNauCdZmMR\nrMiw2RWgseXrIzeMvQnE6J5sk4n99m2ced+CmZx+Gngd4JAqAX6ho1LTEyVY\n1Q2g9thsDCNiaLpDU9v2y/lswthetcM3j+TJd/rH3rczUWXbbq88h5wAVFc/\nTIQ1vDk9il/exgEA4PXOHEJbSdl9GWrGMW8DsUFIWqKXF3Zk0aymVNGbLOUi\nCSinZCrY243LA9jRAU1GKWgdTPTfnZbFOo0JWDOzN5xuqhRfu+r5cgatp4lr\nBfQk28JE28KbeQwKzdmTlDbhQgAkFtb/YMpVAtdm/rGAQ9KBZPVhBhIdo5JF\nuEwP3mHIhLOfIBs4RYD4ZFNPGgiCSSs9fxHFtqrlkyn850pGwK+dpwZIapmI\n9a1AdP7XosYYvr0D2tEhm53gz5iDHR5TV6qOnPP8BSEe5e4cLbvk6V54jjQk\nE0tgshob+lPzbtQbboG8CyI5pJOoSojM0xX8LiyTKzUMnHOMFVNZ9fJ6N1jz\njcWN\r\n=EhY4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"9992df4616a521a5ff8d47f676798aef0064cda2","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-08-06T01:41:39.449Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-9992df4616a521a5ff8d47f676798aef0064cda2_1628214256801_0.07052941217724062","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-e60b709e455d5f9df02871268b46bdc24e3e597d":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-e60b709e455d5f9df02871268b46bdc24e3e597d","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-e60b709e455d5f9df02871268b46bdc24e3e597d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dee8b52b0b9a80898859df17f8b90315169415a7","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-e60b709e455d5f9df02871268b46bdc24e3e597d.tgz","fileCount":53,"integrity":"sha512-AVAwz5BHrp7Hc+2TctS9bv4zpQd7bvljgeoPUvKpSBX8QC8NPK4JY85uj6ZPGd2BW/I4COyoYR7ru1i14ztDfQ==","signatures":[{"sig":"MEUCIQDoiONkBRlcKcywZCTS2SZgFtmHzJHB1kdNJe26bxC2vAIgZJn0pNKzbMaVCT9AtOzBIVNLGWL1x+uWJWa13FjSIYU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDJUpCRA9TVsSAnZWagAAcZYP/RBmg9Z+ZT5abiZ4dbDJ\nsv5CoTUtfFa/kd3WZp3Rz9DYDC9fjxZdH4rheuhknnFKNHbKQgQPrtUgnZzH\nR1ErfHUJYt0yulCtalXdG3ngrkuQ+NEq+diwjBjiJeHsbNFmdVyyBYe8xCol\n+WrFlPeHgMwS3s3NN/2DPevfu9lbnVEsz3EBcEB6Lioo9T26lZ6LkhUizOzu\nWmgDsZngvJHgo+RfLINXDKQq1cY9pv6zjF5WLA9Nx+oJAlRUeSrUAMlVGlmK\nQZXsv4dTZAgA3jDr9GokdrFnk6v5dFEWgJRo/rtRt7kIyHdmLt4dl20VKKIl\neCJhp7Nw7iaXXHwc5WzRKR991byQgTmTqyDH/FDjme2RpMgd6LfpBAQo+awk\nF+GIhBMLbLwjR2eJmAc2YL8dEAN8N2brvWvD5oc0OX/bJXqKDrtTCUyyH/MH\njedcs/3mJ3cfENkGrs2LjJ2pXibu7v7Bw5IniQ/r9U2NP8dS0RYEjNHQqGjc\nlx7guLXeY4ng+o88hRUxoLtqvABbkxmc0yOjdkvfH83PzMSZgWoLCDE0883k\n4mqbznp7vaz4zetdFRUjyGwkWtQ8ulWtZSLqIHM6Lu1INbru0vMLWhzDenl7\nE6qLWML/tlnhfWviXfVZhEHYjR8/DnwVooqe7tDqr6qty+9wMTVZZFBh+fbm\nzB9A\r\n=JbBp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"e60b709e455d5f9df02871268b46bdc24e3e597d","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-08-06T01:47:17.266Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-e60b709e455d5f9df02871268b46bdc24e3e597d_1628214569808_0.9062831351372045","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"9af7f9df20d98e44609750b5acce4e478c6c14cf","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e.tgz","fileCount":47,"integrity":"sha512-9xNgb0LM7/bXZdv4WT4TuXV4zpvsbnE+i3oVB3Giv83Ixq+A2qpp1HMMjxj2wFVYyXWpJfCQ4mzpPdqItd0pDg==","signatures":[{"sig":"MEUCIQDQowghgY92m0qvfjoCdGV5cd+c4++fC/Il7QGwvhvRngIgJlZcA68svEdbR8ttW2UK0JAyr70kvoDVe1jL/yW+vVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHTRxCRA9TVsSAnZWagAA7AYP/1dHdaeMSQCbjAPynl5f\ns/J8p5Efe0959v65hYFaXR+mzOA+g3LWdSLt14jbkb/rHeidxZ3e7LHRYY1v\nGgF3nLYXhp7ZOEJLZ/vT9mFp5lSxWqGlh6OiL75QzUiRRajaGlnGjg+Wtd83\nLPzbskKyC13rcvqSd694Z+XYdnPrnnxrirNg0yIBk/HG4/7LDPlo4Vb84pD+\nnx6e710oTI5c9isdZQrWrLAw829F7I50AMC38FxYFyC5Zvs+AhvlzYQIvMMp\n9Xd2wWkPIF5b2tWvrMF1lSeaysLQXtmXieahLA6meG60EfunWzcs+MW6yHz4\nf9uAcvaFWnkatk+xifse+IKkobm/lDt2GYMqOk1aV+/I97diNlzJUGm76ica\nxY4jOjO1lzF7mMMdulO3OcFDH3n/Kkbr+jGAZ5Kjo9fBlI0ekfK1nSTBD7pY\nmQAn7ll4Zv577TwN0tAgZ0HEPRXv2/7E3Af/irMqK5Si5oDk1uGqI1Xf8of9\nWIkTVs1i4TzBZBXqjBOdUwTkPQ8bLWMiQryytdmkwNIibwoJVjfPriKa/pag\nGKmK5icwP51CUbRVZuRxoul14K6cWergI7OP2F0BvqAa6SQ+mISIPDgDeiyX\nX2a3L9WIErZ5TBiBIGPR08tZudJ9KMiDbkfRbOrVMxBJJ/2Vt70ejm46rF6/\nov8H\r\n=/ea2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"de182e950a7603982e5331e7c9cca0551369fb5e","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-08-18T16:23:10.906Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e_1629303921636_0.22194174171969516","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"7fa4179ac2777fa428ba4f7d4226300c73d957e6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c.tgz","fileCount":47,"integrity":"sha512-SEZS//V12FU9sC+2aWQzIBGYQbNkkDqlTk7EiyDYoejY55V/wbbvQ6j4SlUOxY9gB30BIN4LY3iaCczM3PuHGg==","signatures":[{"sig":"MEQCIGyj9hUkBWzzDQt2PACJIFAF+ZG2nPrRS22+7gno4kldAiB+2i+QjuwQ//d8QcsAgGSY5X3Av9Fa+RJLPH9uxN7Ppw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHTWbCRA9TVsSAnZWagAAF1sP/A25VHY5REoPFFGUJcLe\nY7DcaRvecBLMmEp882q9bRwp23d+ce+fUx576VF7XsPhHcqDAWex75u8z6Wy\nc5g6YbKToorJY7Jg/PADQoruTfzTaJS1kxioEFanyKDkukB//PXSQrctYDFc\nfpApGS6X5H2gYhZImOMq0Tih+WkpKwfkdYDhDZyN9iJraJOwvkYgwYVwt6n+\nNUmGXH+uSYGkyqYScGMmb77Nzwn0ltetR71fKwEqCWc8nUZcmeiOas4+TIrX\npmPyIrm/ve0CaVQ4q6XyhvMY2dC5+xUihhZ9NYWM275Xs0i+E70kJQnbHsYw\nsxO/E45OIjy8bwud56OeOTauKvLe8IHBd4+e1cpDnXDPi5MxC7/Y6aVdL7lj\nXOo7nM+sogqDWdkJPYPSR+sL51sKEhvKRB17e5rfuoGFuKj0k2Vl3ThfTuFi\nDg5ZsKeWyqZKp57OZZMpjxZ6ro/yEBCwoFYukWPW3dy4M5eeP2I46usLtChj\nyz9f54IJkq46Rd+wU8NOcstsmSnhWX4tWbbLwBLeRYDI9SQuMncz8RRq6fv0\n2JtjwUz7cnHYybFsUQwQh7jxyR1QUb872cmZbv/V+GoyRHUy1jFMdyhsl058\n9ml0tLm5zFwmlGlEfj0sHRkRCdFZSaCBvUybkltHJ0gTKTgYdwVXB7RFJ9+b\nJljs\r\n=4lfK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"486bd8dcdac25c52ebf65b70f6848ed97421265c","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-08-18T16:28:51.730Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c_1629304218879_0.42407630062238577","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b0bd317fcb8840bfda4440105ea4e6066f1848b8","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3.tgz","fileCount":47,"integrity":"sha512-bDGCHgVuyTYtCknRnSto++WLq8orpTEIh7RVtBQCuCc/5GiMXB21Iamvm38HfOS6aeb7/FHI4vr69OyTuYfFPg==","signatures":[{"sig":"MEYCIQD45daSTmdEOdX8GxmHp3HF5C4wHjhVvFCTIwdCsk5IdwIhAKzsd/cr/cWbPrAdnnyNRYEo1FMfqN6FKvyhfQJH8icM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100227,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHT/2CRA9TVsSAnZWagAAFC4QAJ1YD0BQ9bg/aRpN//ho\nFP8Lq99njDV3xE3MJt1P0l5/WxYs65PXDSyXM1ZFrOGqZIktedKd9NGPtpU/\nUyMJ4BKGaUqMbl9JmSmwwhCK9JgnJwsbO8zyTUMYLOMrj6gFxfr2Z7b+OPgy\nL9EBcKhBEe966inj/K6uLuJ3XTi5Js7P6P63WVE8aIYOln9p1bPocACOv15J\nyPRTENIQ/ls/G2BAZ6SD2GaSfbokqjxj032VfhQKdGcDafPcjifbzxvgty7V\nLxpfskf6upHKNqZMm4P1lgmOoLvZacFwnPvvl1pf7hghIgfTvdYOVFyI/Vby\nUaF9xZ7h2F/1Ab2ur0e+SYNXwEnpyQMR23o0Ltp/MlvqvUJIY9oTm4gthj3r\nW+7IMi35ZFcE49Q4fO+eSy2kCpxaKY6AGe9vTqddKurTWkBuO9GI1npp80mu\nqsAhvqAHoG7UAekNPyM+brN1qxg5xWoVOv2V5iWOCt4etbb3oKMVWRNbg0u2\n5WNiW4kXZ0/V6KqOaAvQLyoe4IcooHs4lvj9nz04/uB9U73Fftdl8cagDR4a\n9OoHAP67yalWWb2F71Rp36uQ/t7r7g1XSRLkCC5noSuOwCjVam6AOIKYuh1R\nOSZjYXKfOI/A7J+5LxSswbMkvzFR7sac3H/A0Ad3E0neM1lsw0LoO9vYiwGf\nY68u\r\n=oMQX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"613bb3128699c8d2cb6f0a58a9521ea21d7e83e3","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-08-18T17:12:48.995Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3_1629306870357_0.34008888684026184","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a1097fac26725dfefdc5fc8ee3a34f0a19fabdd3","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364.tgz","fileCount":47,"integrity":"sha512-FRXShrevBrzVmVNVa0oU/dQKLqqcJAEHHAdYZDcfqTngqpkZQ38q+tNsDf2SzN0F22IRr+9N1UW59ouvW4yMAw==","signatures":[{"sig":"MEUCIQDJEwiUl9Mzk5LWMUuHo4Rvn5DBj/jAewks6sDsPxYbsgIgLLm2/xtRP643IWZFQI74wk5uhzqc42zO+yEx3gUgUyM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100227,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHUDXCRA9TVsSAnZWagAALWMP/2s+3ZBKVZWzW0S4JFe+\nMnuxd213m4IwzEQkQeBVagmounYbfZj8O4GvB+5UbnJgUwIrRC7zAnjAno2r\nrP5RF/ADdN0/FUvnwM3ESI/kj/o1NO4V9y7qHH70u238TyChKv+nqb9WZNkD\ns77GI9L+gg+tZH8rJG8LjKoihZJa7W+JbmkO/PHWK4R+uEwSYGzXBV6lgVPV\nwGlKMnGH/SJ+p5PNWpN75f5zF38Xl1uT2/SsN/DV6uoZbqGOaQ2ZBVetBMu4\nV+EKvsN5QOsXEfwRdllF9QYvIzyRcj61sUrEX6YBuLieVDYtJrmehNZJfzV2\nDIBHgA9IY8jFFKK198xIoNE3L2fXl03J2DSdq28gnbxyOL+JEyyE0bNfv6L7\nmaTia1ad24HCRCMTIFJ1EbI7U2ARW0Vgkd1R58AuHPf9u5zm6DNmGC71Zbc4\nHvsue4aC9vZEYK+YZxPLQpfHR1riADAnjHeLumHJnyRJ3w5bVdadYAqM73V9\n5hCRReeOkTz7H99DiCXpPd0p/oGOe3NFSmViMy951xGkRjIiqxJ1tk3ykfSy\nijUDqXozbkqOgTPeCfK+CKWjn0x7XPpc1uj9Uq31gq8UMFgBdVZ4Xanj9cnS\ntQ0nHAcFRKQL5xGzJigl/Q/njqQWv2T9mRyZyklHLk9HRfvLh/RWS8qS20vZ\nPTXX\r\n=QuOl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-08-18T17:16:30.029Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364_1629307095685_0.6004477772544596","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"04e5dfc78298dfa8ea8d620c1a61f0e18d1635fe","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5.tgz","fileCount":47,"integrity":"sha512-jAcxhzx1ACHjtdovbO/usHbbADj72mSC3Tb89X/aRtV+lSqHJTEWoJqaWtOWeGZ24wBvnpqz7nUbV+epDYuEHg==","signatures":[{"sig":"MEYCIQD2ZQmmHQdRoVFriUw9Fa/t1A1MT+XXJG6MH5QvZSlCywIhAMxuztJZu85KZjbU9U2ryrMiXufVYa0L/eSHxDpKccTl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL2DHCRA9TVsSAnZWagAARKwQAImOkbkLNzvSjTQthMzg\nI1YG6ErRCzmsg1VGNMawL7VxOB83CLevxjHXyqw/1XGDxqO4oDt+igvxW1lM\nI8H2kF78gOxBywaWEvcC6fwSdxlmIBKqee3ly4IAvjjH2Lf0CKmoZu/MUkRi\nHP5geHe/MO50wHHRrlyR1zCm1xG627InDsNwaBH0uB5qQXeYYATERE+1VN66\nd+jZgWg7B4Erc3jnZp+zIdMTQ3japr/08lniTEkdXgC0wvo8RcKXJZztv/kY\nHyqu1VyaPs/bZ19FIjzPkogQU9GGeCNwjX5kBxPzSqLE4SC6gn6xjGsAKpcW\nL4hWMNE6ZoBhiNdOTxFId7M/nK7BEtQ2sRypag/L11ra+k2BZzytmxaglbgn\nkoedMRK3sbT2HsO6NdeVTYXIOOdH/2hM3UGtUQG5AEjiCC7HmxrJsxbv3otu\nqo9RPB/AMv5izVu/9VzCTFrZqWFL6L12Z9DQrOxsD8zajtw7qoFp0X59fY2N\nFl9xKqHmzEYmeIz5D20lTtG+2iajcOs0NFCWKrXZ85xXvFgvhG8p3yjDSJt0\nBLyHPg/RM81CzAeLxcwdBWt7r0TJHWhqrvKef4hhTOSb+E8YSUM1SucuxRbl\nrUJmyOKfv9P1RfGrfJg2VaSZCWSd0LNz+YHyjn+ffbMezfWm0R4KRpYSMbjL\nUDOz\r\n=+tDR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"243f72be45689fb0cd0e45c437fa2dfbef0412a5","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-01T11:13:19.605Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5_1630494919614_0.5121297180625186","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"b523a61511b4eca518a0c167633dede2762e6f7a","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236.tgz","fileCount":47,"integrity":"sha512-Wtxb7uY2khCstdN4+xOrB6GlkxYUFLZI79SvinTAohGQcEdcn4v+0lph11DRf905I7Je/9KUIkKnWFM//6HgtQ==","signatures":[{"sig":"MEUCIBm0cMFSiXPUrf3hZgXRdxVLTRMt82+n+Tx6Qqb0Hv4NAiEAnSVBMBACpo2ZT5+7SbZYqrQFycjWOJ6yk1ogEQSi20k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN2IjCRA9TVsSAnZWagAACFQP/16wqCZlMfPXw+/JLYK1\nblzmh+cxJjucbY9g0uDWUtEygwu05AuKmir2oaI7gIHSw57QGlHGK/6+ANcU\neuhfWmX27IEQh1ZVXOYLZ6jX+JqhLVxFc+lJyel+Ph4YmTwipw8QJ4opD4Yp\nhsiO4vGSweemm8opPMf/L5mA2aLhnzLMhVfjiKhjPKKGH7XCH7Jmxe6QOVS4\n3xWDN+5RGgn8R3ZFC6Ky2JRg1+CdwvlHkQ/rQDLwB4lSVX9yig4a8wT0IlqY\neid+TTQUpjaKvwcTMgHyNdj1Yog3Lu1iwq+MCkNbGAtAASyqr2DgMk29zyd9\n26Gh8HHfI30K3nrM6FxeY0nQBu+XCbp2JSWzHItz7YEc7LveealMXggOtywF\nxjrpm4fTlJi/mqaFzwFAxwUztKj/G8lSD1GQOaVLr5blM0uM4/qDIouxZnLN\nRGeZsSuDRTmJhUOxd8MXGN9eGFWIQQ36+fIGnA46JLXLEs/f33fa3StwgvBv\nA+ezUDEBTM+GP+sADeqv7ko4/wHOB6DJCge50vjEjOj8BQpNOC/qno+JFYc5\naMfqJI9N6jtbwcEN+y9r9edIAl2DoXHhnGuDw//iloxGSOWYKSDqSCJnAoyv\nfopatJeuGRbuYojU9GVmxti2U0VmY35feKjQMQ+arVPncpdA+pKDQQr2RwDs\nEBBe\r\n=66Le\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f58de7d22709fe4f2e39b8298213048b06936236","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T12:55:26.155Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-modem":"^3.0.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236_1631019554846_0.5288728023439258","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"d8fa6abfe6835c1689efb3e69fa752cad418e293","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208.tgz","fileCount":47,"integrity":"sha512-jxSRqs1a8gzYLRQMy/x3FAUX1yqwzuMiKgqpcwF/J0+cXnU2W49iF+FjY18LudPLJTsxmZ2vgLynm7liXWic6w==","signatures":[{"sig":"MEUCIQD73jKdOd5D05XzsHTEKNS8XF8Oy/BaRRax3ParQadCAgIgXZAuvB73QQ/q1j3K9udEVOxPFed4YPmcado6aLgYwMQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN2NICRA9TVsSAnZWagAAYm0P/0WP1RZrXIw5Uc35rer6\nBVdyJKDSZegVtF8WvF4mhMaDgt9I1yH1quzTRxle8LCD9f4yB1SFSAysk1Td\nnBHS9TgSdCi9vXsJSXSvcCIhT8A4fTWeX/uO6FbPeD5ileQjHhKP0Vx1pBdS\njkLQCu/o5CiG+aBqJs8IS66YEpEWUM4d16SMcmBDQGdeIyLtRa0PUd8iIWV/\nXZfln074s/sw8iNbui9ur54I9nNKyFwmnmsUeweNF2CVGO1AdJhVBIaBXM8l\n6HnofV/dXC53JKZOoULrledQqdy2AE06hkWQCQBrMQKyQ3LY0u3StW93WQVN\nMIZEN+yJ8/Zz2b84HmPRv5tRmQ4cTSE0ZTflkcU0Jm/B8KZ+DFqnUHO/VbtW\nrZKhZDgkaaM7DI/Gm3eTEu+wcjid80+5+DQ5BgcgsSrnUEzJy630PH2im6l+\nkjNhb9rc336lSt68GVN6tys+XrNNrDzuuR5hX0tUGiubCPDCWj5fvZVhr8oS\nxjsg+MBlsBmMCZg/l2tH5g1bWNaq4xh6NIzTTFmbf0joFTgPQN6W7fVG18rm\n4U+SjjM5jAkaJvHPYRUsuPEMBY9AAYigFfYLD7PphLkxbDdpAHXh7G/gS+us\nzF0eHPpUw2rOgSLjDVxurB5KuwIhO08rKNivrgb0cTKIL+Q+eZZBGfEeF91j\nDCf1\r\n=6Dyx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c17cbd39c8b981c8fe1da60fd19324630c11d208","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T13:02:22.446Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-modem":"^3.0.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208_1631019848022_0.4276350136182536","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"42d80d9ebc761a18608f6034eee82b281ce641ea","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7.tgz","fileCount":47,"integrity":"sha512-Jgr2js1vSPY1kIbPT4GD0POyt0kmSSn6OnEGk/tFNiuygQQxClgy4maLdqt9MxgDn3CukcLlwdYsMxU8EU+hJw==","signatures":[{"sig":"MEYCIQCnPNC9NSTNoksDarl/qj+fWx4oxfaQQDuBTyxZ0ZvAuQIhAOUwoV/Bkn5iYmQRMeEwbbg5pQhTGehhRqUAcWK4pAW5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN2UkCRA9TVsSAnZWagAAgQsQAIBVcNmAo/41pyWaEsbQ\nd4b4A6KnpAFfOHFc4ah4VlJyT2Wb13xCLfFHl0kTZRjKfpLRgwkFQDmdtaTR\nxt9Xw0iGE9ISvWwz8TNLuqgZJ2Y8zvUj5n+/JomuTM7ub7FH1BqRMlTNCaHZ\nwe+LM69ci4uBgz0PmKXrhOglLPKzgT4iJEJ2bwiyfKbJaTLlhZPtQ3kRbd83\nOW9zBNMiz8TJC2bbiE8DeXkVjRo/kOzXZF34Fgbt3TZzXQNbY3326latxM2T\ndcDVF5VqBKuGZ5PdMzZOik3BUjTb9rFhF33fkjEs/QDMU1hyJ4XnnItYhxSr\nSbRKjRunH/1O6IQupDUrXU8x52LQa/4PWmuNxiMS0xRAYAGbo7X31AAD0gmr\nlZOw6alFZmegfhCcT745S4xHUS/L1v9I7lyjKAXA2dStplhcrxskKNHLlRa2\n5tgS9H0skrX8A9PKb+yvYfkjqLQaIBpbZrcbq+I5cUnah9dxbJdbq712zTG0\ndHfU5+2piLR0LKM8tul4LuL3SmMS9GSVy/3DsFEHLVZ44g3qrUGq1FaKQ+Yy\nTBGG+L4LYh9SfRoqrvm0PjsUEuhzTwWuH8LYiWLAqWZRKr4/tDmPXp4M3sp4\nm8cfvhjM1Bg//wc58K9ed0RGKfKosuUkYeGFjiCrUADqJ2vKp7iP70DCBrgK\nGeE+\r\n=GpEy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"865c125ed1ad1101c5dce9befde9d1df7e6f83b7","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T13:10:00.235Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-modem":"^3.0.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7_1631020324488_0.9665730388379128","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"087b21accca5041d12249d5763857dbc8accb35c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776.tgz","fileCount":47,"integrity":"sha512-0z71TQDmLe0Hud6WcHsvsC+QTFSdSIORqtSEerC+cniDAkPjpVe6rlLwoA1ilHYNmmWqk0CbZ+AfgPoVz5eoSQ==","signatures":[{"sig":"MEUCIQDbQEk62TcE9/hMem2giY9T01onao0ktVvJOU/bXW4yDwIgOI5QvItDts9WIVnc/g2G/JS2f+XYDyNYZ5BCBJ2hYBs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN2aPCRA9TVsSAnZWagAAMm4P/0MFXaDpMtggz4ylkpau\nsZvY9KfUS5onRS8VxZOTQQQQe33r7wROUGx4nUfAMyCFg+C5VdSCaXaK9gl4\njNtiRIESic/EKgtdYFbK0eDcYm78GffgYvGkHRLV3R0PUAJFNTtUrms45uJJ\nyoz0AiGS9tLVlp+HGMK/e9RLLzglvg8VjDUanZj1oNmEunoMOjWdX//PVbOE\n2sMB3Cq7RlhfIU+Gefqnn1gRvTbGVBRlpPMWUJYSklT++gt6O56b7WakjvkI\n0PjitM/2qXs48qcBmHl5kUFqHDqX2JBYDcCnCeaa+nFY+T9QOVX+1/48lYtZ\npyPkKXryFo/+PwQrCfR9jAhjjL5cxB5OLn0AfvXhPhlRquUNve/z7FF/j9/u\nVLtkQ4I5bKyA0nbA6yN73iTD54JxFQIgzU3gdgTnHWw7XjbhuBEh8Us1SpR6\nWgWKlo91B83qlvcDdAKkJk6HYC4PZDUuGvZFEnFeIrmx9+7/KooxiGfkwEMr\ng5a1KGySGUTLaB18RktZr/qz5506tJMZ8ptWtRW503m/yFpYsq7C/C60ZJmJ\nmjidnQa/PnNtK/pCcAK6qJXoRNo5BaFUTItmYeJPn5HrhmbaK+W+vS0Z7eo4\nNHE4pR+pGgUcU63FJyvkt3Rji2r/gFrnawqUdrL2xBcUmLKWanf7PO5u/lCP\naLMA\r\n=hvsX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f9a1305a67696a3e2b3a60af999bed558fd4b776","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T13:16:02.202Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-modem":"^3.0.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776_1631020687059_0.463276963583237","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"917689573d4767f6b86646127c1ac1be8454bed1","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1.tgz","fileCount":47,"integrity":"sha512-OieAkswVMGcE0JXAmbPWW7e4dFr3v39eKdmAL3Bxovqc2C1AleZ1D3ekZo+JElFaOVFrzyOCX2W0zoT/bJhQDQ==","signatures":[{"sig":"MEUCIQD9wE2V/kwu9WpdY0Xv5o1Ww2/xVOT0DY5aV166m7O/CwIgB5dxRdXW9ScZL/X0lIwSV+Nq/Xuw9YJGCLuGQKh0h0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN31QCRA9TVsSAnZWagAASOcQAIYTOK4mncMgWNhB4hBo\n/XRBgZ6N8fFP40qgXzT5aH79+5hySzTf2lqClbnYh1MYv36O5DTRfc6uPCOe\n8GdVg41VmB1PxiRUxnd+pQvc8i72LpgRg/oEXTX6vDLaZoENMoDLFSVhpgQr\nrlPmuzw96oK300OukYkQSK0ip69UGPcGPKQJiQ/pt/nseBO1R8wXjseIupOK\nGmR1MQJffs471CXDnckZfKdAejyLBJMwvtyDGFztvvRoVFK0fsLbL3u+Eh+5\n37u2Q001BfouJaKNLO1iXEq/6Ocal1IAvaL8oXIQX9tclOGs9E1xMwhL4wxl\nh9ZRFPBARgg3pQwU7TGpwuenLaLtCpFMwZmtDrMBHhOFSKKGtiv78ajNLs8M\n760mYZ6v0CoIXEsvZs7wDEMMU8CCiTXqWjt0+KDgoAWNISrb+wkVdnfCWh2o\nwGark3gBsxpEJ/TQWoTiqvyEapb5dTWb0yH85bsaEztPjMxmIunFu3UB+U9m\ne0nsbtgHLvl2wAwxpwYJhyelU+pGxhYvEo54ujQAkPAJsgtrp8+n3sF3Er4Z\n5SaCT/DBxB2Lt02LhzyblfAkB3bEhrvzP2/DWbCkR3EL/l+5V9sTAJz2uahs\ngrSpLrNBExlKyt/wzrb4xeKG2OJTZOCLxX6Q2c3Ix12xRsa/zws3uZZPVK9B\nnMOA\r\n=cJdR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"6f73354b95b0b73535316943a53cc33126cfc2f1","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T14:53:09.860Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1_1631026511820_0.8852093438004691","host":"s3://npm-registry-packages"}},"4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5":{"name":"resin-multibuild","version":"4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"24fcbaeed04ba4fe0eef2619bd23d47814d4007f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5.tgz","fileCount":47,"integrity":"sha512-fmSaexf9y2nxH/UBBz0RPm5El6uecYn6gypAVk97vYxIfEBfJdIVeD+lFMRWOiIxjZu9JlXFy6pxYbb4tAyX3g==","signatures":[{"sig":"MEYCIQD4igexZiQRsKalHkjodSK4Mm8ZxPeR6U57fIZnoZuQCQIhAOlgVOk6HMBPc34fuWK18gpkdcTG4UstqHusCioVc5sk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOMKnCRA9TVsSAnZWagAA2IQQAIoyERodyDMozI4xvqjp\nnzOAMX5S7SxsBvafwqviw0FyYRHxsXNbp23LnMFmToUXV9/9lZV6+onOket4\n7rzrEKMCrn+yOSoaabXbqkztqJIlGtw2gO0sTkNJhLQX0iKIHZ/dAHjO9BGB\nP6JY6pLp7osqQ3FDibMN0/7u+klO+NDP1ocdhko8Y7XRe7cVoyTq5IckSlrR\n9OVaCRpy+eVzp6qv7SmNe5uvJ3cs7oOQkiDsnVU1rExQbzg9pSOFTfscMFZY\nbHlhuUZQFBsJhgGO8ZzUhjl2rT6RkKPJJapyn90EDJE2mJvu7qsAGPKGAaJR\n3CG4f4U/aKBupjBSsmTKDsYYCwPu4WIzB7ZbTtF4P902CnxsAF0zZ4PWgf57\nW0xGcVj14jfdQELOZFCFFQVMedBFZlFDqnjVBMqZQGvwFeyTK/IU5clt1il1\nQDGguwb++1nkauUxjOpV0/c9W9+CGXt58mDzSIR7VKWbbTJHrOIWDSlaFFGz\neMqU1y28ecP0xZT41ViZfAMWi9XgRcKfRKH/qGZwW74a8nm4XBHh/cem7IO8\nyHVsL5iHvAWA2+dHXm7uAMFXzfy58D46MXYrWhKsTL+mmbdCT0yfd8FNme5Z\nUTxTRkUGqEinOhAfU2KtejZgJsZyx7bqpo4dTjC+bF1M8VXXquOPvfQZnB5w\ngGat\r\n=BfK9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f5475946401fd7eb458e0199b965a965e4a891b5","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-08T14:01:19.939Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^3.0.0-rgz-compose24-c319954e0c66401f5e43640d70501cfe3bae47fb","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5_1631109799039_0.9978029349947137","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-5a5991f025ded82ea463a5bc0ee8fce206eff08e":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-5a5991f025ded82ea463a5bc0ee8fce206eff08e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-5a5991f025ded82ea463a5bc0ee8fce206eff08e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"e1f250510abe82b897fa546f5ca01548856266e6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-5a5991f025ded82ea463a5bc0ee8fce206eff08e.tgz","fileCount":53,"integrity":"sha512-5wWFaVKfYY9XOrKEhw0ddHm2ArYA3i0KTouGs/Dz0huY6nITWYESo8VBvd1SivYoIiJYD7fNTbO0lrzSxhBqCA==","signatures":[{"sig":"MEQCIEIXm33EkG1hdi84G7lTdFCNODd6oYZu9NQfUeqVyvP7AiAyZLwpL2fg0hTslqbetIu9PS8BWA4BN5c6+CuRtYFQJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOS7dCRA9TVsSAnZWagAA4UsQAIU+UwL6afTi9g7rEkRB\nOmBrrihzQLweHQr5tFtnVUmcx83JHQaK86B+4mfSYe3BYkeE51oHkWrRYeVa\nLaGLozxJ/tYUcMGE0ZEBBn5lyKsTNLt5bsP999EqI24ufBN520ieSfAe5+Xe\n3QEL7Ffcyxa3CQQDI5mz9RgPqXj0F/7ZdZSdRvggNjO7enkE0tcXe6MwsXjw\ny8eJgFP/+dCBDDkSLXBUEIhMo3+syc9cb695INZohFgQpdWX5OO1KXnSZ4PV\nvg19ceGDPVmWJ3kukLPMXH60hdoMCh7Dkmu12OMOK4d6iEzDQNLCsRzxOQtW\ng3FTU5uOEz3FFDO3jQ/4zIAOyaX1k+O5/r82CKMlQTcikcg8QyJQShbO60tO\n7qg2oI0v7DMSIlsaZvvlPY7pSA/q6YXb9SAS0972Wj4Wlz+Ikq+qyaQZlafr\nyRJjUU2o7dJMPiW+OuWbDfrGyp1q6oDyDfZFYEVFPDoDjtuBkB3Rlowvfa9E\nB1v1z4xBEwnHnKxHwlIH8PVezYnEpmTyK7Wd6DDij+nDKFSgpVQh3yux9ksY\n808CDPIWqLSnK5IqX821GIsuSUNH0JYmw2zFf0/vCG3QuXgeI4UEX4axLhwL\nUXCFLnkixSHii3Y5Sxv6+TECU5Z/4Okv2OYgbtnB1EH+NHOS2cQfJ/nD7kMD\ncHVN\r\n=A0lp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"5a5991f025ded82ea463a5bc0ee8fce206eff08e","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-08T21:42:06.968Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-5a5991f025ded82ea463a5bc0ee8fce206eff08e_1631137501610_0.8723285205095368","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-582ef8bf3cdbc64ee3bc0300692799829b02ee3b":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-582ef8bf3cdbc64ee3bc0300692799829b02ee3b","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-582ef8bf3cdbc64ee3bc0300692799829b02ee3b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"99ab319a240d360e829d5c2949d2e838cd4217f5","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-582ef8bf3cdbc64ee3bc0300692799829b02ee3b.tgz","fileCount":53,"integrity":"sha512-N989mv6Yu6ZfxMocfG5UjhOrsoXzyi6RQa3Bj9Xk8XkXbDLx1B5D/LnRahLmjwVWHWBRDB7qGKobmK7a7AkAPg==","signatures":[{"sig":"MEUCIGD6M8wbVfO/zleVn9M8d5PyFnoeZcyJ8KLNpAnMXhgCAiEAro0o2YHubp+vCweWYMrQysxipslVns78KExGzh2gRYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOTC0CRA9TVsSAnZWagAA08oP/j76QLOWWc2x0oDkXzqu\nM47LMxOeUiiaJccbT6NbIHjHd0l0EM/cPKkGyHOEKi41Sh65kvqZzPydmmAG\nBJeyTIXQdysBOYDDMFQubjf80zWxArXVBX1lcbAHrof14pV0x8/23bxUoLOJ\nbrxfBwOSWqoppx2lI6UF8xR9Wiw9zjVp0emL56/uy9sUPFwDzVXQq5VYb8zq\nCCP1eeOE9zPNzqAwBQqJcAfCd9Nxh8aNvGHREdwR/akGJarNuIKkLfqknKqd\ncY97MJMbUDE5QRj5gwkCpVdXgBAKLFVuSD2O73ivxGiVueLyBymVcQn/Ch61\nRt/red1poEFiM42u0tttZnS9wvcCqYlNAruD3D3XKP31sodwj4iyQcAmIO7S\nEteVNzEsX6adQNBSESzNpcQxpsRnRM8W6f0V3tpu9JZkpQLpgMrPmdBAWORg\n4+CKGOqusuVILcv8/Iy+InL82ZkMJ1Qx3wAB09zNmwPpEzLcthYhpHvvPUeU\nWIMvVCoKmR5kYhyfZPa5F1eOwckuxYbS9luf5GVyXMCXX/bLB5wfIt/M7ttH\nHitnd+oo9fYP+aVtyBVYmUxD0rtt7c+7j1xmeAKnMvddkUmwgvhqNPtOTYUX\nbcd3634I68XhTsUoSiHPAB/0NJF/uYcraP3brqM6og9IoZvrNMg2IiUHQ+SD\n+514\r\n=Tud2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"582ef8bf3cdbc64ee3bc0300692799829b02ee3b","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-08T21:51:19.332Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-582ef8bf3cdbc64ee3bc0300692799829b02ee3b_1631137972046_0.13271218614791014","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-c27dad3893812d7935c45ef99515b8e1fe824e34":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-c27dad3893812d7935c45ef99515b8e1fe824e34","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-c27dad3893812d7935c45ef99515b8e1fe824e34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"67f34cbd4a8235f30850e0341811148979ba37cb","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-c27dad3893812d7935c45ef99515b8e1fe824e34.tgz","fileCount":53,"integrity":"sha512-mivoe6TtIXZA3WJDi15z3xCB1eargYMaSIyZHwNxbIoCXy3IL2aXA+ol7HYCh6Nu2zlrLbXxtSG/D6UNz5KW3g==","signatures":[{"sig":"MEUCIFy32Iez3/hezfvuqnxGtPF7olEWVWeoprZaa5/yGX8aAiEAsrH66yCA6SNK4rjaRjQB0uJYv2I7rGblqazC3eieFrE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP6utCRA9TVsSAnZWagAAnvcP/ijEz2Q1g+8dZiMuoHF7\nkRC5DmkFLdYhvB6lkR3pXTNs5/5I6Ph0Po2Wu1P7kWWvZAZA4wRDNNFqfP6c\nhqEwRao89t/yCa7HLyP5XiPmYrYCgkq6p2WlrZTBNjmKd1abP9mtIj5Ftk8m\n40NZxp8oplAd1LvHkPvWn4fixmn+BKk9xHxoaqgROO4AGOddtxtZ6CR5LSe0\n3Q+va5L5fQxd1/0ZsFShTIYZiksIEFjI9dBmhHXmmEGKAAitFCNckI0WAgwD\nFuOvSXypfpAYGweT6StFWgMeubdLmP1xlVyOESAVJwkc+AwwVwgEtpqp2X3u\n16P5bY1FO8lHOvb4OSSNbMrnCcC2WAdm0v1wvPzkieYFemzKIUe6fP7LfcYd\nhXSDc8VJhECF6nLwqn4tpx/1/AW0SO02Dptmx/IkotBXont/4dvEP+hbjBwc\n3WVV9+ghGyk31gMUjlK8ictVm34zTDXfR7OAfZhap39XsWrvaJBTlVSuMm4f\n5bQv7JgyY+iVG9GtQXrKsY9UcMjpsxJRzAQl7xt+lIN2t3eeFGAVmyrYz/s2\no9cRkEdxbbr/O1o2izH8hRjV+vlMR6BQjGmTC87hqstONQTEmJVqpKSYEvfX\n8Kd3hik2lvltKnHHblvMfXvnvFQV1+78TISuXTD/dzS96yywN2ZBHGgnZBAU\nCSTo\r\n=NkhK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"c27dad3893812d7935c45ef99515b8e1fe824e34","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-13T19:48:59.786Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-c27dad3893812d7935c45ef99515b8e1fe824e34_1631562669715_0.5995872798604802","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-ad2d7e85a08b2b12d9306abee686d3b8db96d875":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-ad2d7e85a08b2b12d9306abee686d3b8db96d875","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-ad2d7e85a08b2b12d9306abee686d3b8db96d875","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ecd6f4272963bfe7af2873adb53f40fa1511cdb4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-ad2d7e85a08b2b12d9306abee686d3b8db96d875.tgz","fileCount":53,"integrity":"sha512-LSz7bY7Q7I9E1O+z67Jv4dyqZqCeGI18SbkvvYSdCdF77gczeZ4Q1MKyIG+Yf2fPb/GPeMEv8YYPft1SSOKFog==","signatures":[{"sig":"MEYCIQDn+Li1LYutFfHgBk+2B30wsxuTzqfZn+U3jZc7EiQ1RQIhAMuu4TycrszwYcC2u6l8f2Mux7uMVn5F3ChNAAXvTUZa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQlmmCRA9TVsSAnZWagAAihYP+wZQjCp5HU4KUHMbxswx\nsesLjOww0x0X8VTQelb0sLAfMFRG1+92iXKQyjRC2WBjXQOLUrnOlfskq5L0\nUXe4g++1WuphLU7JsuStnXSjEmb87lXGxbUhWuYw4Db0cFBe65QFBj9Z1JPe\nLAkpwcVHeSkzlL3KgrYbE0fr4orD94I20BEISmsJck4Lg6tpgFfByAf0hDKC\nvxZwh0jpOEaeBPBgFDBwcLquxIKdYgdamcay14nE06BjSwfroHR6c3ug4Hs8\nsGAkIDsHIpKq5yBVvLEFM+cbqILxJEYFbO/EM7DtqSoIJeIscEp09A1BjYu1\nMjdyCu4Wg0uzbAoKEYb8iMvrdF08W8MUXclWePFVRC2ElaBobdMAQkkDyjI/\noNA4RDLtD68+eAbIn8v3/467ET7udzxdzVSaG88e5j/esOcedj9bhaCPeWw+\nfFEZZZOM0Gc82PiSdMgXCNj9tfbVgPMDp+kYrTY/ECNFLlW+LQC+baTfQHKi\n+S3NXUUUVOw73T0/3wHPz4OiiFLHxjswn+QZtzcWiC1OYmvE+E9lsqlQbAuH\nS2m5rlJebLoURJ4+ECIyX/jBwoyLtuN8FuhWowoAxYUIX/Rhz/eOHrPTgxXu\nyPDocn7huazpWidtIyxZJsvKOCGb6T3wll6rvj6Z8qMUS6iXqYWVdyQBS71q\nfb0H\r\n=BJHW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ad2d7e85a08b2b12d9306abee686d3b8db96d875","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-15T20:36:10.214Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-ad2d7e85a08b2b12d9306abee686d3b8db96d875_1631738277675_0.6358076340691687","host":"s3://npm-registry-packages"}},"4.12.0-add-multiarch-handling-202ae1eb977b55e01c269439a275c257b02bd1db":{"name":"resin-multibuild","version":"4.12.0-add-multiarch-handling-202ae1eb977b55e01c269439a275c257b02bd1db","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0-add-multiarch-handling-202ae1eb977b55e01c269439a275c257b02bd1db","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c2fa97ae05d90a1bfbf72dd8d7b644cff9c2e26f","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0-add-multiarch-handling-202ae1eb977b55e01c269439a275c257b02bd1db.tgz","fileCount":53,"integrity":"sha512-uKFWN6Gi6JQOsvZRnIW/QuUmF1CliDiDg9sf45km9L78l8oFAhCg9PlX72D5LMC2/h0QOCqt72u8f4UTthHvIg==","signatures":[{"sig":"MEYCIQDoQOeN2ibkhIq6vFhh/TxVlpWQvn8xL5/SvP1J0bYq6AIhAOiakiSrfJgEI0KeUr1pbLzCRyb2bSHC+rCw/KtyAaYQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ0UCCRA9TVsSAnZWagAA7eUP/A2cENtHy6bYojIBaFaM\nzQJgxLFXrr+0RHOH90v+PCsERJFp6EEPGmSom5KCagpvQv9zimGV7odxTQmx\nmxDt5/jc24oQrTNCdKWarjlpnlWrH1Dcbywkss8I80Wn2PzRu2orwPA4t/3s\nNENGSf4WydpYHuLGDcjQyppQ5/gP36Cu6q1iLKErmkq0/4vKIbbDFIFGcAnu\nClzLUU74hgFANuLHw+4WgMfTkxFCnopsXE8cRPHG4gluSSSs1YvcgJ1hFEgN\n7TbAYVox4r9w6e9NT25kx8CN1z2AotaOpsc7ind0oiwGvpAU8uiWTODp4OtD\n8Ih5N8frisOjndIepvhXZenfxojr8WFH3RibdziyiH5HRwp4tZ3eo3P4XOof\nnxI75OdkvYa/rprk5u1z4w2GQ1tyXsz44i4ESRbbHH0Rm+AlJMCyUbQKCRE0\nGij9q/Macnzmq1k6bt1ZkSzrv0Gk+jIydrG56+eYazLRHAepON1vceDaH409\nZYdFcsQI0gz/C0DKOaIwTKPa+t696zz9VT35dBofdo4e1pnoDguu1QFMFTNl\nog2S7Gz5WIH4/dajWhbNKeXm6r2WPRekA1pvbom05gxH5X9y4bzO91M8KwvY\n6yDh99Y06rec6CZ6ufo/gqQaFSuhHWNXmMBvRMVn/uz0ATYouxbPkvKEXMQd\n6RXT\r\n=uEr+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"202ae1eb977b55e01c269439a275c257b02bd1db","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-16T13:20:12.167Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0-add-multiarch-handling-202ae1eb977b55e01c269439a275c257b02bd1db_1631798530210_0.20350898166385645","host":"s3://npm-registry-packages"}},"4.12.0":{"name":"resin-multibuild","version":"4.12.0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a9a3cc3aed407fcda9fadc4929b05fdd277526ce","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.0.tgz","fileCount":53,"integrity":"sha512-fPcUj7UHrFbL32sSb7fmOEg9xLA8Snw5K6jB6aFvbDWltBnzIH5orqcc4/GA4kqm0N2HjOaLdV7yQOy9lNh0gw==","signatures":[{"sig":"MEYCIQC+aMo2JoOTTBSSeJQszxQodBgWZOzsmqz1nNva3LlSZQIhAN9WIxRiN6V2ocBQJtjEDywGb4GlLbVWYV9F2/I1ZXvw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ694CRA9TVsSAnZWagAA6Y8P/jeghkut2dFJhHjPYGm9\n6P414P/Znd+Yfp9ls/F4yaVe0EF64+BA8Anb4NSL1bYlmvEHwW5PIdtQZUQb\nHTd8w2AOc/eVyLPO4H3gtPIqmImkZkgBFT1cvr0vIKziDMrFncM0Qd0RJCQL\nS5K/o6zEdBzdMOXCSURqYJ0OEDi6ap8i8WJQD/Xf/1IYYgKobfnpAZMRd54R\n/3GgULRShkBd5rueUPjTYhHFUBK9gKu01nv5aAYdzyLWayyXvt01hD2rNbVT\nlMbNScfWI0ec0QD2G+9Vt4/0GfGMkdPoDg/sMbacBjS8bqaphZol27ELH6Nj\nD8BFZRDb7D/UcXkfd+LxopbrzOK9nY8DPUnWbogcNmhvldh3xIFozFaGUJyU\neR9qwdrWcFn8+GxIqiw04wpcIx62PAAV3tWe7RY84daJRImBDgtp5nqldRPN\n7XotEWC+XJF170JsFspUhfoVtM+pLvagkYvIaEhF1LanN/vdLbpft4FZgJ9F\nD0vCahj2SvjB3Mi9sI5bgECI+MBteHfT9dcwRM1izDarf97C2RznUGLvW8vi\nKUz+KP2G/fqWJQV/+OpINuuf4vvmpbyhxgSu3BtwA3hckTTnxzuPTaCxksKW\nM/x74V5YeOJYL6dmRzrFbQF8705KEFiW/poXbivdbY8EvAxSv/Tfe5AxC7Bv\nASpG\r\n=BQUG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"23e018557b58735a8c4202996133059818468d25","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-16T20:54:17.606Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.0_1631825784819_0.7568301074732673","host":"s3://npm-registry-packages"}},"4.12.1-fix-broken-platform-support-be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e":{"name":"resin-multibuild","version":"4.12.1-fix-broken-platform-support-be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.1-fix-broken-platform-support-be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"3504a32e30178b87c9de3dabc087f3967f56a36c","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.1-fix-broken-platform-support-be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e.tgz","fileCount":53,"integrity":"sha512-PJoc+svvhahYFW0ovuGHG5zrTxnNf4itdJeumLHlxvb4kH1owl6zft2QJN8AdheZ66QsWRVE735l46V6UgwVdg==","signatures":[{"sig":"MEYCIQDU3+w0dop1ovdKoMIdh9Z22u/XnMsM51KqmxbViHAMjQIhAJkg5uoeXRLlEBrlnvl9V9bbXLJOQo1K8delAeZAWuMt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ+VLCRA9TVsSAnZWagAAEZwQAJqzTE60L9ZIYtSJj04G\n033xcwS8Wkb12TNyomYHeD5jOUQuU8b5m0NI43rFcLJzmkyaoqVilrd4h5Sd\nCZtBzzmq7E6A+yI05OtQ+4s+U9odpAIPj5LETno+bfcVbJBy0BT+kYbo3EyW\nlg6BlFiiubL0WEo4+X8BnK50/LYyiiVHy7zcPjCeLo6rp+sGo+rhtO0qlhnk\nVcsO5zRHvSoC7FVSQKNsoI3IlyUphDjNoXmImWPViN3X9USfX+YZRFYgSiEO\nAR9q65h9OsM8q5wxTWyVXQgEj7QcsTfFOxhuRzBmHnwB3z+c/97pMRmyuSZY\nfVdQSnACxrpfJWsMfzQJXeJj6PORlU/h4LGy7nDaTepCo8vXmOsDBoGOIx/3\nCC++EspGcV2fkUFhQM5T0trwYmJ41rIaZi0jkS/vf/cfKX+5KiE7W9wULTB+\nOB8obbmYPnvuUO2s1C+VM/QwkxSYjaxatpMDy/aBLAM0yFT/kqkRXtSsyGvk\nwuPuN+HrFCzwcumQDv0PuK2kyeC8vDYJHuzbmRKBANZ3pbRbfnBORAGnqA2K\nXimhZbv7/hV10Z/XXOEkk7nC+/w8X5q2IYCmZMYNMl+pTjeKNn2VyWT4MWp1\nYn+Ys5s2mhJUW6oj7eVSQ322Rlks7dxkMFqAoPR1CJpAMRBV2TVZfKB+gdqV\naObp\r\n=5nyu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-17T00:44:05.298Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.1-fix-broken-platform-support-be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e_1631839563199_0.11172297441936108","host":"s3://npm-registry-packages"}},"4.12.1":{"name":"resin-multibuild","version":"4.12.1","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"a170ef402125d3447761274ade0884a26d9fcada","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.1.tgz","fileCount":53,"integrity":"sha512-ORtzaDZGS5wftNo4KXi4yOcqSsjU0/56oY7mXlc8XcmqusOOfr1N3rnFpXkjQ7COJLcPvfPT+OEeJuQ7l7cOmg==","signatures":[{"sig":"MEQCIDzvjfvqz9XD3CM9FQhBVJuqjHweMlxiYKW7XTbkLcPMAiBB90aWl4UF6yNVCTm+1lYcbhZybWtRrzopx4bEVGASJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ/CjCRA9TVsSAnZWagAAnKgQAJ2NcKL2nFGBheswxMSq\nMTLvZGQRPTtXUPjH+ZO0edIiotvEMfEcjAxMb35HikCle5IMSus40420CchL\nn4OnS7XKkNts7CI8HjOuRu6MKuIXSWUUmkWcwetNWatDAxHrcHmr92XxIGlv\nGfkee7Dp8nK2XnAsKqcLvJ2saeMvupuzo1/teH96ROIxMCTKRLQscqzBbRmx\nY/dGYKbf5+cdIC6sz6v574fc+F9bFcyd0IxYrkoyNbv/hmwfy1tMW6l34rHC\nJ5e9pZqGvvM1pyOtbNV3z/97OxTZgWGmpPcDoV3LxISJpwUrl73BR+5wFSRB\nd4wDMfo4XJGI/XjlJkECXy4uWyrXEfMWIIvhkgJ2ZoDO4OWJDdJyI72npoCA\nee4XidQiumCJGxYIYZHIStzheThSU5wIq8Xvcr/p7ff4SAwUnrMmwcooWmsy\n6uZ9ktNKbvDaLbD+Pg2VZn4TsDZYskiVv5ZZZQoAgx5D6f7Va1H140l58ks5\nDO6VNk3H7UntKrzbC5zdWXyywbeDhj5sXBwdf3XkIcYguCY/s1BASwV0+Be7\nnXXSQyJFywYX4SVr6ZYHYegCSWf3C/NvhEstuiR1NkLdI5do5uVq0oRVM69k\nvHkTvdta4UvF5SKi31MR9zzAGIadcsbcbPUUCaARmwYz9FCewNlUDGvSc5hT\nTgm/\r\n=1Se5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"a69df0e2615d7d3fe2dd2577fd8410111500f587","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-17T01:32:23.302Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.1_1631842466902_0.9643802613699539","host":"s3://npm-registry-packages"}},"4.12.2-logger-for-multiarch-warnings-2ce61c87de678fc9fda90f01c20e7f7517055821":{"name":"resin-multibuild","version":"4.12.2-logger-for-multiarch-warnings-2ce61c87de678fc9fda90f01c20e7f7517055821","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.2-logger-for-multiarch-warnings-2ce61c87de678fc9fda90f01c20e7f7517055821","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"02baa96feb509f10db6db9069863b02518c4c04a","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.2-logger-for-multiarch-warnings-2ce61c87de678fc9fda90f01c20e7f7517055821.tgz","fileCount":53,"integrity":"sha512-cbGey/+qOINTdOtrFQEUIqProQbNpLaWaolMlV8VK240S6N3TS6yecRHsRE1Vgz3hGaZfw6Doohpg3p+0CM7SA==","signatures":[{"sig":"MEUCIQCbuFJwyAfOwjZLNw/F6AoUQAJeOFlpGra8gAKYOjxRowIgabe442b7mLF8Wnt2fFhU9uaqR0sb2svYV+H4EWFi3Is=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108916},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"2ce61c87de678fc9fda90f01c20e7f7517055821","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-17T14:28:29.584Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.2-logger-for-multiarch-warnings-2ce61c87de678fc9fda90f01c20e7f7517055821_1631889038632_0.5881431483651325","host":"s3://npm-registry-packages"}},"4.12.2-logger-for-multiarch-warnings-f848b248061bc7153bbd3145c71f4ae8e25a1710":{"name":"resin-multibuild","version":"4.12.2-logger-for-multiarch-warnings-f848b248061bc7153bbd3145c71f4ae8e25a1710","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.2-logger-for-multiarch-warnings-f848b248061bc7153bbd3145c71f4ae8e25a1710","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"01e0399a89c7a15121cb1be9ec19554330908e38","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.2-logger-for-multiarch-warnings-f848b248061bc7153bbd3145c71f4ae8e25a1710.tgz","fileCount":53,"integrity":"sha512-L/LqMrppYiWexWJvSCBs+Vp0dOYeBHK7cKCqn4Z2DrPlCyoLDZxCFtJNmpRseKIf6b6UPh3dRSf34nycaXCZwQ==","signatures":[{"sig":"MEUCIG3oJvCeUB2fYvR5gz66wC8cx1+r85EwJ6F5mDCoqhFFAiEAtyPOg+fzSP052MvK1le9m4FlU69ok4QZ6yMX60OY088=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108943},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"f848b248061bc7153bbd3145c71f4ae8e25a1710","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-17T20:56:35.506Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.2-logger-for-multiarch-warnings-f848b248061bc7153bbd3145c71f4ae8e25a1710_1631912328531_0.7302004799370911","host":"s3://npm-registry-packages"}},"4.12.2-logger-for-multiarch-warnings-86df646035e7c51d8a86a0542dd73eaf53bf0008":{"name":"resin-multibuild","version":"4.12.2-logger-for-multiarch-warnings-86df646035e7c51d8a86a0542dd73eaf53bf0008","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.2-logger-for-multiarch-warnings-86df646035e7c51d8a86a0542dd73eaf53bf0008","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"2a23e572c3d5096dd8b182625d65bad365b88ca4","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.2-logger-for-multiarch-warnings-86df646035e7c51d8a86a0542dd73eaf53bf0008.tgz","fileCount":53,"integrity":"sha512-xbFeFQGn/rcSw8zJ3hpa/rn6kUZLLc+0r7hPmUOn+N+W15kt58eC2HwHGsdfUE8a0x66UR6X6b7olaGH401NyQ==","signatures":[{"sig":"MEUCIE4pEfi0LC0rZdv//IlbHjRdkaycLkVTLzWBoXHrbsP1AiEAi5WhNOJ8tlsOkWcl6Iz1XDNSoYSqTHKEjJ3Epjo5YbE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108944},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"86df646035e7c51d8a86a0542dd73eaf53bf0008","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-17T20:58:50.511Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.2-logger-for-multiarch-warnings-86df646035e7c51d8a86a0542dd73eaf53bf0008_1631912447341_0.0815711302272375","host":"s3://npm-registry-packages"}},"4.12.2-logger-for-multiarch-warnings-277a26c5e7ea11c2c4bba007263f4c168232682d":{"name":"resin-multibuild","version":"4.12.2-logger-for-multiarch-warnings-277a26c5e7ea11c2c4bba007263f4c168232682d","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.2-logger-for-multiarch-warnings-277a26c5e7ea11c2c4bba007263f4c168232682d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"c8c4cc5c08314e2b062ef14a889c282766ed07b6","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.2-logger-for-multiarch-warnings-277a26c5e7ea11c2c4bba007263f4c168232682d.tgz","fileCount":53,"integrity":"sha512-jA1OuXpcuwtrVJB4gdS54r7O3htvHfUeqgjn2ZTf4tmhuJDloktAGAhyIl7iUA+gp6GV1dviV0UaXWWufsEuaA==","signatures":[{"sig":"MEYCIQC0QS4GHvseedVv4Qm3Fd3tXwC2llHMkbKPpXnB7tUW6AIhAKDp/hddA9CXbSMwsqnEqbhCeTpYKfTUiklaXfqY5Xst","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108945},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"277a26c5e7ea11c2c4bba007263f4c168232682d","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-17T22:23:50.392Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.2-logger-for-multiarch-warnings-277a26c5e7ea11c2c4bba007263f4c168232682d_1631917547423_0.2612657410867756","host":"s3://npm-registry-packages"}},"4.12.2-logger-for-multiarch-warnings-42766be3d4df67319e34ffcb3cb89af1dd51a4c0":{"name":"resin-multibuild","version":"4.12.2-logger-for-multiarch-warnings-42766be3d4df67319e34ffcb3cb89af1dd51a4c0","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.2-logger-for-multiarch-warnings-42766be3d4df67319e34ffcb3cb89af1dd51a4c0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"cc41f0a925a641d0cef6116c6195e34066d6f76e","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.2-logger-for-multiarch-warnings-42766be3d4df67319e34ffcb3cb89af1dd51a4c0.tgz","fileCount":53,"integrity":"sha512-+ehXW8anhscfQqFlFd+LSrG6DaUNRvDbRhMJP4/euLSArplPaS/F47B+GB1pwXV/TPhfMtduUYdt9tQtni/ciA==","signatures":[{"sig":"MEYCIQDDJahQz4NBCF/Hqwxn2KFjZ9Webwf/nExg/6vay2ywegIhALrujQslgYC/PBya4K3PkPVZDOPoAMbHa2iKj1swBYTd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108568},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"42766be3d4df67319e34ffcb3cb89af1dd51a4c0","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-18T01:16:49.372Z"},"_npmVersion":"6.14.14","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.2-logger-for-multiarch-warnings-42766be3d4df67319e34ffcb3cb89af1dd51a4c0_1631927889701_0.8427125596398595","host":"s3://npm-registry-packages"}},"4.12.2":{"name":"resin-multibuild","version":"4.12.2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.12.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"ef9d6293a0adf2cdbe54c3aa03d4ae16ab062a9b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.12.2.tgz","fileCount":53,"integrity":"sha512-FkRqGEM588wA6v03pQbodPqWQdAs6aMh+GWvYQBz5IxqSVecn4FLHaRE0pF6VFKtjf/XBuPw7dtqiFzH+NIz5g==","signatures":[{"sig":"MEUCIQCZ00vujReaBkGzcQJFpMjm1BTL0bRReVdHessI67ASigIgZuqc1ZcJiYp6Yz8BTN/fxkopEP2iLxC6RYBGx7qwucE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh25vlCRA9TVsSAnZWagAAyoYP/3PvvMxP/zLmcmUimvzI\n2Jy2Qwv2nDGKVtZGDVf8R+ygayGKcJnc8/T6Y+zCyevGhLODxpXJrhw6SkDE\nLf3VjgsErEs5/EqB8G9l7xoCbgOG4ULvxP5JVAhwsfUpmdWYucHZKdqgoC8T\nbn1G2mFRBZNd0Y3UEzt5ezR8BNCazNJ87mYGpNKzpC28xoTwyCTHlsFavMIe\nevC0QYf7snl6WyLcHQPcdI2zXj8GvMiBfgj7bRqrSQmLMtutXSfhmW2Zn89N\nuKlIdsXiSM124OfJC/7pLo+gFA/GCEfuMYpv1IxzwAZlmvzDMqSaIrsADq9N\n8PNNqj2u6MwQotvoSZaOzhRJZ/ch1HlnQChpFA2BSgwd+dJo1W3fuSvk3Ryd\nmuzoZ/fBdjK9uRbNnMD0U+iux++w52qTnJrOrzaGcwNcvvSEnJC1AaVaB253\nDKyX1haiCaGwNa9ezgZSobqOxR053ehALf7LUXr3bihFDUW0z8+5Nn2dmes7\nLNuBL5owUHyuhKlr+t0hksNaXmePVtKd2SuB15HZe70CbqEpfMGwhjX/fXcG\nhLp6ujPPiOJHcOTA9GThY54SULObjIZmf2gXHqn6zVgieEH23y294OFm/IZI\nOH5dX5rwhiSRHi03NChzvdR6Q2pqSBpUbvl3ps3YvyC0EnYc7drYcgiA2weM\nFKOF\r\n=IdhN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","gitHead":"3a83f07af3e712064459e40dfbfc566cab5b0557","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-22T13:05:49.662Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^2.5.8","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.1.2","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.12.2_1632316063073_0.9365947627068463","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"adefd7b4b2004242a19932890808673d7644dbc8","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff.tgz","fileCount":53,"integrity":"sha512-vGPRVWPDELqziod0TnaDPkCZOHzOAfpLb5O2G5V23x/jISuBm6hHqXkzFOb4JhMAO9D3+xYnpgfncApjeYo9Sg==","signatures":[{"sig":"MEUCIAMO/MjogOYl18m9Orqfb6xg4WxOXWq2U+KrQe4yCYUvAiEA48zLvbHKdPRA5Qx3+bUsQXnxGqtZk+MqAbdC0ECvBRI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109792},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"11d7c3ae29395e54aa11d33923484bac176282ff","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-29T11:02:10.150Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.3.0-rgz-compose24-1193a1f788ee4b6fbdd1deea59b9e1f30e334f9a","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff_1632913582742_0.7378422078707758","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"dedbad29f13c5bf4c4704b90b3c537eb37b7a2d1","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca.tgz","fileCount":53,"integrity":"sha512-PYzz304eLoBJ6Ey4y2YS3db1yBttgOrYZXDAl0tVXeNTD0BdyjbO/tK9Ql+Ux7Fmw4j44KxAIv1Q9c6pGZFbuw==","signatures":[{"sig":"MEYCIQDyAYHuB9m+0L3rgpG4UGJiVf4vQ6o8GSEY2b4BtjiNMQIhAMnEc2TAJYe+XKWnmqJFoE62QiqkrYkCQ/oY4pmWvWO7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109737},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"9a0a648689f5c4f877b2372c4ffee521b2c8fdca","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-29T11:51:29.585Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.3.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca_1632916435435_0.7217581272679991","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"130910bc1ca0dfa2d1baab3d5f838ff1f2f3a68a","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f.tgz","fileCount":53,"integrity":"sha512-ROoZ/94HgUMGGrHEqCkW3PQfjJw7zxh01AJV+HDO/EGZAynGcUYQq0j0tgI8q+6GuWKwFhCy3gQq8T9CPYo9qA==","signatures":[{"sig":"MEUCIQDNdvubI0qMmkVM/muM44d/XbDr8X7NrVMw1Rza92gS7gIgDN/594B8tRfhkjIsC7ArmciSihLkl5eQnZGHRmkltU8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109458},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"ff38b78b9fa96420df2cf9db53ba0052392c1f7f","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-30T18:10:28.778Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.3.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f_1633025558382_0.8764473547049105","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"93c022b8903d5222617c050cd3c850b0197146f2","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8.tgz","fileCount":53,"integrity":"sha512-0HN8ObLGU6yhsPN0ttnzuAOIdDAMgMXqXtWtnzA+nfTbfIdshI7+cypQZIaQ2ZNEGFykX7AvOkc+/9dQ4uwMrw==","signatures":[{"sig":"MEUCIHAWcLcMiQJRJzsWDC0qtwJ/v8hJhK2LJ7j6jBLot/ffAiEAxxCQHI6wJn+iefdONg2fDM/PM9rNkwcjnKFk9arQulg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109458},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"18af5273d0396ada971a8ca8b2b9303781b71ef8","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-09-30T18:17:39.419Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.3.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8_1633025985912_0.6426069011908506","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"1bc04df511357c41d108648167cfa3a3659fe43b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2.tgz","fileCount":53,"integrity":"sha512-LGTsEwUQok9vNk4Ct/ClyK2fwucQnwFFOkWHPSJQs0uicrNf60iWJnRl7EbJQ1Q3Pzl6fpwSqpNU2I6JA3cHEA==","signatures":[{"sig":"MEQCIDOGXK6C4m+B9vHxnga4QFtJeCLHSW33yB/gehWF1tN2AiB0QRKzkAvwDblFSDAnqu/G62WgszR8IaFrX/m6ZpNUAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109458},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"20f9063d84cbe65dcc2ad5ad508b38494039b5d2","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-10-22T12:56:47.769Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.4.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2_1634907537739_0.6820395012131002","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"fbc23c9fe313c82fc89d9dbba89a592c729fbddd","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728.tgz","fileCount":53,"integrity":"sha512-Cz40vMSN3orA1WPgpJ3SVImGXVhod/7XQl4zIVNZqRSg9QtaexTHD8+p1GBRUD8JapPviAHvGL5xNBzk19/nEg==","signatures":[{"sig":"MEUCIB/mZq1/w23gomGK8TU6hYAiIZRh2bywc5ILEXK3pTL5AiEAoVxUhAa4qydIT/xB/+xazQgNn2uyKdYZY9DI+XGVBY0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109458},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[resin-compose-parse](https://github.com/resin-io-modules/resin-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from 'resin-compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"fc2a1fc5c5111d5c371fcc162d3586360d13b728","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-10-22T13:00:56.479Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-compose-parse":"^2.4.0","resin-bundle-resolve":"^4.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728_1634907750952_0.7240958807069513","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"f58dff72bfc308d0576bdd0cb05e39144b751981","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993.tgz","fileCount":53,"integrity":"sha512-t6J5fC+AAfNAGryNsHLgx9j7iQZ2zRIGfHYGV6UWVqxmUok64i1UpedJnt5AeaVVfcINmmer1dflYNA+9uF93w==","signatures":[{"sig":"MEQCICgnf4HtWbry74R5msIgsolg9hGyO+BgBGoDuLo+deCPAiA3/lm8LW/fQGwq6iJXYch7FAJqLmio1vBtlK8ymdpRvA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109472},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[@balena/compose-parse](https://github.com/balena-io-modules/balena-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from '@balena/compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"14dc45067e72ea3e8c575643f700c7d16365b993","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-10-22T17:49:16.565Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-bundle-resolve":"^4.3.0","@balena/compose-parse":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993_1634925081399_0.1828790266802227","host":"s3://npm-registry-packages"}},"4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b":{"name":"resin-multibuild","version":"4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b","author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","_id":"resin-multibuild@4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"dist":{"shasum":"39815f1dcbb4e5b96ca9f17e0c8a8a411091f48b","tarball":"https://registry.npmjs.org/resin-multibuild/-/resin-multibuild-4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b.tgz","fileCount":53,"integrity":"sha512-ul98diDhk+ZDuggBkGemxD6d/KntPfBeMhXVRMnVeltm5u4+ZLWSsHLxbl64whJbHS7ojFUplMEzXsnABOoBDA==","signatures":[{"sig":"MEQCIDRsvaIdjJtLBDiPCji6vH/vOUZTvbI1NtceiFVc8vDbAiAUTGvzCH9bTXJO8QWXKinUp266Gvz2yH00qM3QjVIbKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109472},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"types":"build/index.d.ts","readme":"# resin-multibuild\n\nThis module is designed to make it easy to build a composition given a\nrepresentation of this composition, and a tar stream. The output will be several\nimages present on the given docker daemon.\n\n## API\n\n### splitBuildStream\n\n```\nfunction splitBuildStream(composition: Composition, buildStream: ReadableStream): Promise<BuildTask[]>\n```\n\nGiven a Composition which conforms to the type from\n[@balena/compose-parse](https://github.com/balena-io-modules/balena-compose-parse)\nand a stream which will produce a tar archive, split this tar archive into a set\nof build tasks which can then be further processed.\n\n```\nfunction performResolution(\n\ttasks: BuildTask[],\n\tarchitecture: string,\n\tdeviceType: string\n): Promise<BuildTask[]>\n```\n\nGiven a list of build tasks, resolve the projects to a form which the docker\ndaemon can build. Currently this function supports all project types which\n[resin-bundle-resolve](https://github.com/resin-io-modules/resin-bundle-resolve)\nsupports.\n\nNote that this function will also populate the `dockerfile` and `projectType`\nvalues in the build tasks.\n\n```\nfunction performBuilds(\n\ttasks: BuildTask[],\n\tdocker: Dockerode\n): Promise<LocalImage[]>\n```\n\nGiven a list of build tasks, perform the task necessary for the LocalImage to be\nproduced. A local image represents an image present on the docker daemon given.\n\nNote that one should assign a stream handling function for build output OR a\nprogress handling function for image pull output **before** calling this\nfunction. The fields for these functions are `streamHook` and `progressHook`.\n\n## Example (pseudocode)\n\n```typescript\nimport * as Promise from 'bluebird';\n\nimport { Composition, normalize } from '@balena/compose-parse';\nimport { splitBuildStream, performBuilds } from 'resin-multibuild';\n\n\n// Get a tar stream and composition from somewhere\nconst stream = getBuildStream();\nconst composeFile = getComposeFile();\nconst docker = getDockerodeHandle();\n\n// Parse the compose file\nconst comp = normalize(composeFile);\n\nsplitBuildStream(comp, stream)\n.then((tasks) => {\n\treturn performResolution(tasks, 'armv7hf', 'raspberrypi3');\n})\n.map((task) => {\n\tif (task.external) {\n\t\ttask.progressHook = (progress) => {\n\t\t\tconsole.log(task.serviceName + ': ' + progress);\n\t\t};\n\t} else {\n\t\ttask.streamHook = (stream) => {\n\t\t\tstream.on('data', (data) => {\n\t\t\t\tconsole.log(task.serviceName + ': ', data.toString());\n\t\t\t});\n\t\t};\n\t}\n\treturn task;\n})\n.then((tasks) => {\n\treturn performBuilds(builds, docker);\n})\n.then((images) => {\n\t// Do something with your images\n});\n\n```\n","gitHead":"7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b","scripts":{"lint":"balena-lint -e ts --typescript --fix lib typings test","test":"npm run build:test && mocha","build":"npm run build:common && tsc --project tsconfig.publish.json && npm run copy-secrets","clean":"rimraf -rf build","docgen":"typedoc --ignoreCompilerErrors --out docs --name resin-multibuild --readme README.md lib/","build:test":"npm run build:common && tsc --project . && npm run copy-secrets:test","build:common":"npm run clean && npm run lint","copy-secrets":"ncp lib/build-secrets build/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\"","prepublishOnly":"npm run build && npm run lint","copy-secrets:test":"ncp lib/build-secrets build/lib/build-secrets --filter=\"build-secrets($|.Dockerfile.*)\""},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published.","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"versionist":{"publishedAt":"2021-10-25T16:29:57.394Z"},"_npmVersion":"6.14.15","description":"Build a docker composition","directories":{},"_nodeVersion":"14.17.1","dependencies":{"ajv":"^6.12.3","fp-ts":"^2.8.1","io-ts":"^2.2.9","lodash":"^4.17.19","semver":"^7.3.5","js-yaml":"^4.1.0","bluebird":"^3.7.2","dockerode":"^3.3.1","tar-utils":"^2.1.0","tar-stream":"^2.1.3","typed-error":"^3.2.1","dockerfile-ast":"^0.2.1","docker-progress":"^5.0.0","io-ts-reporters":"^1.2.2","resin-docker-build":"^1.1.5","dockerfile-template":"^0.2.0","resin-bundle-resolve":"^4.3.0","@balena/compose-parse":"^3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ncp":"^2.0.0","chai":"^4.3.4","husky":"^6.0.0","mocha":"^8.3.2","rimraf":"^3.0.2","typedoc":"^0.20.36","typescript":"^4.2.4","lint-staged":"^10.5.4","@balena/lint":"^6.1.1","@types/mocha":"^8.2.2","@types/lodash":"^4.14.168","@types/semver":"^7.3.5","@types/js-yaml":"^4.0.1","@types/bluebird":"^3.5.32","@types/dockerode":"^2.5.34","chai-as-promised":"^7.1.1","@types/tar-stream":"^2.2.0","@types/docker-modem":"^3.0.1","@types/chai-as-promised":"^7.1.3"},"_npmOperationalInternal":{"tmp":"tmp/resin-multibuild_4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b_1635179509708_0.1633680822492336","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-12-07T11:59:22.644Z","modified":"2026-01-29T14:02:18.831Z","0.1.0":"2017-12-07T11:59:22.644Z","0.1.1":"2017-12-07T13:43:18.534Z","0.1.2":"2017-12-07T15:41:57.484Z","0.2.0":"2017-12-07T16:25:42.609Z","0.3.0":"2017-12-13T11:42:09.696Z","0.4.0":"2017-12-14T13:42:23.761Z","0.5.1":"2017-12-21T15:30:21.088Z","0.5.3":"2018-03-27T16:38:50.203Z","0.5.4":"2018-03-28T08:59:04.241Z","0.5.5":"2018-04-24T12:06:08.334Z","0.5.6":"2018-04-24T13:38:01.754Z","0.6.1":"2018-04-24T14:59:22.096Z","0.7.0":"2018-04-30T12:51:57.230Z","0.8.0":"2018-05-10T10:28:59.448Z","0.9.0-fix-repo-1027103ee3981f255820de513fdef19e955df0ba":"2018-09-20T10:43:28.722Z","0.9.0-fix-repo-bc4991f97f947407222344bb90fb4d263dadf30a":"2018-09-20T12:19:45.431Z","0.9.0":"2018-09-20T13:02:24.535Z","0.10.0-35-private-registry-auth-fb4f8c50f5802934c8203179dfcad84ccff43f17":"2018-12-09T20:42:25.352Z","0.10.0-35-private-registry-auth-142bbbc9352ea1e97bfd55f85bb37cc1bbc6dc3b":"2018-12-09T21:17:50.680Z","0.10.0-35-private-registry-auth-b7b7ce73626d57957aad638d0f0e48438de1bc9a":"2018-12-10T11:24:32.085Z","0.10.0-35-private-registry-auth-83ce7f8af1331d5ad6c56dc5a0004a12e5d68c5f":"2018-12-12T13:19:06.247Z","0.10.0-35-private-registry-auth-c894a3089d52a65bf92cc085feba672be14a39ed":"2018-12-15T20:55:39.435Z","0.10.0-35-private-registry-auth-85472481827a682122b7dccdf92d31ce6d2b48dd":"2018-12-17T13:52:07.528Z","0.10.0":"2018-12-17T13:57:47.341Z","0.11.0-prettier-773e68196760bd00d731aa87755b8901703e7aa0":"2019-01-10T15:46:29.540Z","0.11.0":"2019-01-10T15:49:44.756Z","1.0.0-allow-specifying-dockerfiles-084847158e138c3f1e96e9d80986632da4395b65":"2019-01-10T16:03:47.204Z","1.0.0-allow-specifying-dockerfiles-0982d75fc6cc1058a372d4b422bf10f39f02149e":"2019-01-11T10:02:49.059Z","1.0.0":"2019-01-11T10:30:28.976Z","2.0.0-34-add-performResolution-listener-arg-931c194e1bc88e6a4b5403b7c76d2b7dc0db1c6f":"2019-02-19T10:58:37.617Z","2.0.0-34-add-performResolution-listener-arg-82cb3f3b74228996012b6e10caffe2c8d2a53d48":"2019-02-19T11:18:48.427Z","1.0.1-34-add-performResolution-listener-arg-5c92566253c0516bb7fccfde4ce1f59dd37d3e37":"2019-02-19T14:51:09.476Z","2.0.0":"2019-02-19T15:22:00.631Z","2.1.0-39-docker-compose-image-private-registry-auth-42cdb5f4db7f39a84257e92c99593173c730f0aa":"2019-02-19T15:51:11.738Z","2.1.0-39-docker-compose-image-private-registry-auth-8f19c03345399ba304573fd074b948b5f59a652d":"2019-02-19T16:07:51.627Z","2.1.0":"2019-02-21T12:30:30.552Z","2.1.1-bump-resin-bundle-resolve-099a413a822afde3ee92f3abba57758efd2c1993":"2019-03-01T11:34:53.966Z","2.1.1":"2019-03-01T11:38:52.059Z","2.1.2-update-resin-docker-build-a33a4a98684954325f4d88510df7858366847a40":"2019-03-04T16:31:07.931Z","2.1.2":"2019-03-04T16:38:20.267Z","2.1.3-bump-resin-docker-build-72a196b7f481c5fc8d6aa754e1195d177091a790":"2019-03-12T16:25:08.876Z","2.1.3":"2019-03-12T22:01:04.400Z","2.1.3-bump-resin-lint-3-0-1-c0ed6584643cac587fa085d945da8a6fda10c07d":"2019-03-13T14:07:12.700Z","2.1.4-bump-resin-lint-3-0-1-05c5ce3437b0c367533432c3609f204ff32bd50e":"2019-03-13T14:12:20.979Z","2.1.4":"2019-03-13T14:28:36.405Z","2.1.5-resin-compose-parse-2.0.4-29552ca1df80e48c0fb9287054e3bd8a4b29274a":"2019-03-25T22:07:28.196Z","2.1.5":"2019-03-25T22:14:53.950Z","2.1.6-bump-docker-progress-400-d738478ddb6a3941bd557de4e92459cf81a42461":"2019-03-26T16:57:51.532Z","2.1.6":"2019-03-26T17:07:30.943Z","3.0.0-update-resin-bundle-resolve-c44fcbc156909604a2c576b3671563ae3a66c900":"2019-04-12T14:38:57.076Z","3.0.0-update-resin-bundle-resolve-35dba45f74e07b8e5a14ef6031cc5f0aa4aa82fd":"2019-04-12T14:44:00.510Z","3.0.0":"2019-04-12T14:57:20.036Z","3.1.0-bump-resin-bundle-resolve-20190416-cc1a51dbec5aecab6c171a31593d99e04d3fecdd":"2019-04-16T01:00:35.252Z","3.1.0-bump-resin-bundle-resolve-20190416-a3232fc9ba46075dfec25dd2b17fe1318167ee37":"2019-04-16T16:24:33.151Z","3.1.0-51-fix-tar-paths-posix-windows-ee9a57847c2eeb35fcc4f10b193818e69f857d20":"2019-04-17T00:22:12.947Z","4.0.0-51-fix-tar-paths-posix-windows-be2d76e37fa7c00eaa53829973e683c993b20f3d":"2019-04-17T00:32:56.255Z","4.0.0-51-fix-tar-paths-posix-windows-a8060cd1b966af8eb263dc0b51fc8524df4f5236":"2019-04-17T14:37:01.209Z","4.0.0-51-fix-tar-paths-posix-windows-1cf3a659d68ff8072c3bc502d681d37111e85057":"2019-04-17T16:08:57.175Z","4.0.0-51-fix-tar-paths-posix-windows-52cf8b884e40c8c350104285f48977acc0b2fd2f":"2019-04-17T19:18:16.601Z","4.0.0-51-fix-tar-paths-posix-windows-108892aa8532d040bf27542dd6e32001bb1902d7":"2019-04-18T01:35:17.121Z","4.0.0-51-fix-tar-paths-posix-windows-dbc9d63eb5485aaaf77dea1ae1e6d588938fd538":"2019-04-18T01:44:27.495Z","3.1.0-51-fix-tar-paths-posix-windows-3fa3bda67bcdd48c083f85c952a1a5426ff85b43":"2019-04-22T23:35:06.972Z","3.1.0":"2019-04-22T23:38:16.361Z","4.0.0-build-secrets-092de67fd2fd1bd4404592d56dfa1f9cdcd8879a":"2019-07-05T09:59:15.284Z","4.0.0-build-secrets-b26b0db8b3aa5d400676572fbceac36a729b6657":"2019-07-08T10:39:59.589Z","4.0.0":"2019-07-08T10:43:07.018Z","4.0.1-fix-secret-map-filter-042112ce0bbb8019fe5bd864e45f9de8a7c2c948":"2019-07-12T16:14:54.919Z","4.0.1-fix-secret-map-filter-ef4d93753d289aa5e56cd4a8bc8538505416d546":"2019-07-12T16:48:32.304Z","4.0.1":"2019-07-15T10:03:39.002Z","4.0.2-56-fix-secretremovalerror-78ec9b3b5201250084aa92e3a3eeee2df7d0675e":"2019-08-19T02:30:17.703Z","4.0.2-56-fix-secretremovalerror-666d2771c016c7a5e3f862a4f02e00fb979c2c40":"2019-08-19T17:45:01.432Z","4.0.2-56-fix-secretremovalerror-2110724890ed80ec61c3be7e6f88bf53c7d1c153":"2019-08-21T01:03:24.117Z","4.0.2":"2019-08-21T20:30:53.265Z","4.1.0-improve-error-output-93c2cdac07c70e26f6c1bed0c8005a52f93a4dd9":"2019-08-29T12:49:24.866Z","4.1.0":"2019-08-30T11:31:46.390Z","4.2.0-add-reg-secrets-8add3c08d4707a650b590d05f464bc71b401ceaf":"2019-09-03T09:42:53.140Z","4.2.0-add-reg-secrets-311be6e32285bf1514e8b73b23623abf33fc242b":"2019-09-03T14:05:09.729Z","4.2.0-add-reg-secrets-cfc99a3b638d93c1d4f05572d577eb8be94805d3":"2019-09-03T14:09:14.466Z","4.2.0-add-reg-secrets-3d466267afdd189e69a3302ca31531134bd72f29":"2019-09-03T14:19:25.863Z","4.2.0-add-reg-secrets-78e38b57bd9d4a6a7f435ecd917276bcf3b8b3ef":"2019-09-03T14:59:04.204Z","4.2.0-add-reg-secrets-cc636996d01cffaaa99c3b0272053191f1179b2c":"2019-09-03T15:07:48.297Z","4.2.0-add-reg-secrets-87c3e30e272576be53c3de45727f946b5034f0a9":"2019-09-03T15:44:46.068Z","4.2.0-add-reg-secrets-dc88fc5004796ef441ba0055439159322c50db7a":"2019-09-04T08:33:29.068Z","4.2.0-add-reg-secrets-b4f017d525b85facb76fe971d7d1ee76c439b6cc":"2019-09-04T08:41:23.440Z","4.2.0-add-reg-secrets-8fbfa57db70ad9e78adb2185055a43c583af0133":"2019-09-04T09:22:38.697Z","4.2.0-add-reg-secrets-d3b05557191479c07ea242d4bb1d39d094b71290":"2019-09-04T09:23:20.468Z","4.2.0-add-reg-secrets-f3895bbdad088927d7197533f9f092e70c1add13":"2019-09-04T09:46:44.821Z","4.2.0-add-reg-secrets-b598e865fb3dc63a51b2578ca3944f5fec422eb6":"2019-09-04T09:57:58.759Z","4.2.0-add-reg-secrets-6c7e1afc4f021367aca132a4864842f69f9c04bf":"2019-09-04T10:05:51.768Z","4.2.0-add-reg-secrets-3551ccf05411fbc4afba7a29e3593003a60acd5e":"2019-09-04T10:36:33.035Z","4.2.0":"2019-09-04T10:39:51.311Z","4.2.1-ensure-build-files-6839a93c636806ea983a3803936da23113a39e89":"2019-09-04T10:57:35.391Z","4.2.1":"2019-09-04T11:00:26.276Z","4.2.2-dont-build-on-npm-i-87f387db0e60b9682306e7b19e631b40187f7802":"2019-09-04T11:13:33.369Z","4.2.2":"2019-09-04T12:20:41.337Z","4.3.0-container-contracts-669bae9604214d259b937e8c5bf4107e611328bf":"2019-09-25T10:09:03.669Z","4.3.0":"2019-09-25T10:13:41.363Z","4.3.1-secretremovalerror-2-ea5ec6d7ef5a19595d92908e0c2787002021e6b9":"2019-09-26T01:05:49.592Z","4.3.1-secretremovalerror-2-2ef4cb58008bb08ff2fe0b8bd45d77c3dc15bee9":"2019-09-26T01:31:18.752Z","4.3.1-secretremovalerror-2-d8ad649622d51cee4da990b8c409c52ef1ab9774":"2019-09-26T12:18:01.841Z","4.3.1-secretremovalerror-2-72134af56ef6078c0ee3694db8144f7810ec4a8a":"2019-10-01T22:42:48.821Z","4.3.1":"2019-10-02T13:14:42.324Z","4.3.2-64-fix-windows-paths-1bc22a9c4e1cdd4395a3da2d3dbcadf8950701c4":"2019-10-07T02:05:26.808Z","4.3.2":"2019-10-08T16:21:43.699Z","4.3.3-deny-slugless-contracts-85b9a9edacd6bc234538cde53f27702edec18c9c":"2019-11-06T11:57:00.602Z","4.3.3-deny-slugless-contracts-c9ffc2de71c66535613d8cbd0d07d685937b5126":"2019-11-06T12:20:32.909Z","4.3.3":"2019-11-06T12:24:37.064Z","4.3.4-roman-base-images-info-60e4fbdd969e5dff5e23d0dd51c81b91eb49336e":"2019-11-21T11:23:34.564Z","4.3.4":"2019-11-27T13:16:11.843Z","4.4.0-additional-template-vars-d1ee899a29eb27a3bc8f9b2bb34f4e0d36779cf9":"2020-02-13T07:05:56.509Z","4.4.0":"2020-02-13T10:32:05.871Z","4.4.1-update-deps-9aede6efa97b9da634e42cc6f11c46b81ff5c077":"2020-02-21T00:28:29.947Z","4.4.1-update-deps-159a090036d4862dd75927b174f98aab9d0d2301":"2020-02-24T13:39:12.641Z","4.4.1":"2020-02-24T14:02:58.665Z","4.4.2-update-deps-36543429509755df934fcd5ff8207fb084088019":"2020-03-03T12:33:42.820Z","4.4.2-update-deps-5e91a83f8c975a07c9096f67b92599e9240abd88":"2020-03-03T16:02:12.907Z","4.4.2":"2020-03-03T16:07:38.137Z","4.5.0-add-preprocess-hook-9f18228a35adca197bbfb2182cae255c26d91332":"2020-05-06T12:18:01.991Z","4.5.0-add-preprocess-hook-c925efcee74a05ec99e1a87e66b941569de10a02":"2020-05-06T12:21:21.721Z","4.5.0-add-preprocess-hook-44eb3b35010c322aa16773cd1c3c0739ef1979cc":"2020-05-08T12:54:42.612Z","4.5.0":"2020-05-08T14:03:44.350Z","4.5.1-global-preprocess-hook-7b614b085efede72956ef805d7ac6f2fdbd597a7":"2020-05-11T16:48:12.698Z","4.5.1-global-preprocess-hook-69b143286419a9d819c0014a0f7b389bc93cd817":"2020-05-11T16:50:12.649Z","4.5.1":"2020-05-11T16:54:02.808Z","4.6.0-rgz-platforms-0d673c263697c9fa28887ba9fcc0a45edca08255":"2020-05-14T13:32:03.193Z","4.6.0-rgz-platforms-9e75147cfd1a11d0c57d8589a5bc8bd9c5ba43c2":"2020-05-18T08:51:55.008Z","4.6.0":"2020-05-18T16:54:36.028Z","4.6.1-export-single-build-c8085686bf59431676895131219c92d7a1efb707":"2020-05-19T08:38:47.952Z","4.6.1-export-single-build-cbebcac8c3c9a5f75d50644ba379ba74868b12dc":"2020-05-19T08:48:26.684Z","4.6.1":"2020-05-19T08:52:08.056Z","4.6.2-remove-image-in-build-services-30bc2540a99710c33e45adf58e1b4660503fe748":"2020-05-19T10:53:16.640Z","4.6.2":"2020-05-19T10:58:18.754Z","4.7.0-rgz-platforms-b5633196b5ea2d7d9e159024ab4620407ef02d53":"2020-06-12T09:44:23.566Z","4.7.0":"2020-06-12T14:51:02.421Z","4.7.1-update-deps-97f340799482fcc1d1ff28fd0b6b60343a13678a":"2020-07-01T19:19:14.577Z","4.8.0-rgz-platforms-1141e064d9ef6f9aabc389aebdc61cca383e3f85":"2020-07-02T12:30:16.642Z","4.7.1":"2020-07-27T16:23:08.522Z","4.7.2-revert-breaking-7d1328f79a4434479c5d3a0e575da1fa31b048c2":"2020-08-13T07:41:38.245Z","4.7.2":"2020-08-13T07:44:53.901Z","4.7.3-nested-changelogs-13421b61ff5e33c6b6519338434474440a93c48a":"2020-08-20T18:09:43.442Z","4.7.3":"2020-08-20T18:13:20.197Z","4.8.0-rgz-platforms-0c67a021b6d4b58f78ab72cf3b1b8be6b98bd9b1":"2020-10-01T11:14:56.090Z","4.8.0-rgz-platforms-f2b81792bdba5700235f493ebd5af79dbf6d4b4e":"2020-10-01T11:34:24.419Z","4.8.0-rgz-platforms-cb749ca755448928217ce34a65c7125e700e2bf6":"2020-10-01T11:45:13.731Z","4.8.0-rgz-platforms-afb2b40e5ef24d32aa75f4eba3623688774a82f0":"2020-10-01T12:29:57.936Z","4.8.0-rgz-platforms-58c46a4fc3adfc1170665068e2ccbd97a634d385":"2020-10-01T13:47:03.909Z","4.8.0-rgz-platforms-9f7c4b1d4c0fbdc1cbb238bc82465b6ab17fbf28":"2020-10-01T13:58:50.481Z","4.8.0-rgz-platforms-76ea1d063807a063ea99badedac357abe19ee286":"2020-10-06T09:45:08.793Z","4.8.0-rgz-platforms-4bc51c3847fe52f56479bba5d2444724a57e61af":"2020-10-07T13:38:15.324Z","4.8.0-rgz-platforms-6769e99cdd54c40b76ea3afa2f4773f6fe96c3cc":"2020-10-07T13:44:06.645Z","4.8.0":"2020-10-07T13:47:08.186Z","5.0.0-rgz-platforms-6ef7a5ceb1a831328a759faaca160eef6f648cd5":"2020-10-07T15:31:51.498Z","5.0.0-rgz-platforms-f2d78717f97c2ad30f00dd788cf90c0527a4bc5e":"2020-10-13T13:50:16.502Z","4.9.0-rgz-platforms-1162abfc1799458707ae75006fbdb38fd7d7cd02":"2020-10-14T16:15:29.179Z","4.9.0":"2020-10-14T16:20:42.907Z","4.9.1-lodash-merge-dockerOpts-platform-7055071d5ab391cb5e9d8f0beb9259e962471aef":"2020-10-19T12:17:50.172Z","4.9.1":"2020-10-19T14:27:59.156Z","4.10.0-dockerhub-secrets-1231d927e5c91ed27bc3cc479957d13de404255e":"2020-10-30T02:25:28.094Z","4.10.0":"2020-10-30T03:56:18.303Z","4.10.1-docker-progress-14d9968d2377ca286eb33695dacd4230070f8526":"2021-04-30T16:40:44.972Z","4.10.1-docker-progress-428e905fc7bbb2bbd43314b65e47594e943d9922":"2021-04-30T17:05:32.654Z","4.10.1-docker-progress-ee72ab5c7899126d4c733a543539c2cdc1a7d3c7":"2021-04-30T19:37:58.729Z","4.10.1-docker-progress-aeed4348606e0b0ebf29e021be3f78ec2f4ede6c":"2021-04-30T19:45:49.819Z","4.10.1-balena-lint-863e1124989df97c4f30363e62f18b8336431b5c":"2021-04-30T19:51:56.512Z","4.10.1-balena-lint-a4f975d3fd54bfc6f28a4d814d00b63d8a7afbe4":"2021-04-30T20:32:06.410Z","4.10.1-balena-lint-ca16c9f6880fda18c50fa2502ef4efc7b6a97e3b":"2021-04-30T20:46:35.997Z","4.10.1-balena-lint-2f4b08fecb815c029e9f73745c1c65b84e2e9700":"2021-04-30T21:18:04.943Z","4.10.1-docker-progress-bc5388f0074885e39a011cc09179663cff3a533d":"2021-04-30T21:21:33.215Z","4.10.1-balena-lint-6fd832e2b9d9d15909d420d5e4183718f05bfee9":"2021-04-30T22:36:06.860Z","4.10.1-docker-progress-e31c1dbae8768366689a9704d69f486109001b65":"2021-04-30T22:42:03.495Z","4.10.1-docker-progress-25fa79de5d948bdfa093578379c61ee75c3ea931":"2021-04-30T22:53:04.467Z","4.11.0-docker-progress-1c8043e2327d708dac7e9d23ed135690a52223ab":"2021-04-30T23:40:58.938Z","4.10.1":"2021-05-03T13:33:26.137Z","4.11.0-docker-progress-e3c273cd25d0e7bc3e00e08bc22210f521a565a0":"2021-05-03T13:39:19.557Z","4.11.0-docker-progress-a98812ba901849eea9ea335b32c7df8ac2fe26a5":"2021-05-05T20:09:14.130Z","4.11.0":"2021-05-06T16:37:37.059Z","4.11.1-it-only-and-balena-lint-f4bb8e00e1b61909c4950ba4c160c6a0b00002fc":"2021-07-21T14:07:03.779Z","4.11.1":"2021-07-21T14:12:37.994Z","4.12.0-add-multiarch-handling-ab65185271cda09aa8f215772c0d6ee314c86d37":"2021-07-23T16:32:43.702Z","4.12.0-add-multiarch-handling-c39ac75c2abbcc9049f80be263b65ef6bdd3fbd1":"2021-07-28T00:35:37.790Z","4.12.0-add-multiarch-handling-72b79fe6e6e764dd83ff146dc19145c8e56af2a7":"2021-07-28T23:26:52.106Z","4.12.0-add-multiarch-handling-882745d0dc731f1ba3b022d274f2f14026cf41cd":"2021-07-29T13:57:52.806Z","4.12.0-add-multiarch-handling-9992df4616a521a5ff8d47f676798aef0064cda2":"2021-08-06T01:44:16.997Z","4.12.0-add-multiarch-handling-e60b709e455d5f9df02871268b46bdc24e3e597d":"2021-08-06T01:49:29.965Z","4.12.0-rgz-pass-build-options-de182e950a7603982e5331e7c9cca0551369fb5e":"2021-08-18T16:25:21.825Z","4.12.0-rgz-pass-build-options-486bd8dcdac25c52ebf65b70f6848ed97421265c":"2021-08-18T16:30:19.096Z","4.12.0-rgz-pass-build-options-613bb3128699c8d2cb6f0a58a9521ea21d7e83e3":"2021-08-18T17:14:30.502Z","4.12.0-rgz-pass-build-options-bb13c620c36bde9b2d0bc1361b4cd33f4e5d0364":"2021-08-18T17:18:15.817Z","4.12.0-rgz-pass-build-options-243f72be45689fb0cd0e45c437fa2dfbef0412a5":"2021-09-01T11:15:19.738Z","4.12.0-rgz-pass-build-options-f58de7d22709fe4f2e39b8298213048b06936236":"2021-09-07T12:59:15.026Z","4.12.0-rgz-pass-build-options-c17cbd39c8b981c8fe1da60fd19324630c11d208":"2021-09-07T13:04:08.158Z","4.12.0-rgz-pass-build-options-865c125ed1ad1101c5dce9befde9d1df7e6f83b7":"2021-09-07T13:12:04.628Z","4.12.0-rgz-pass-build-options-f9a1305a67696a3e2b3a60af999bed558fd4b776":"2021-09-07T13:18:07.440Z","4.12.0-rgz-pass-build-options-6f73354b95b0b73535316943a53cc33126cfc2f1":"2021-09-07T14:55:12.027Z","4.12.0-rgz-pass-build-options-f5475946401fd7eb458e0199b965a965e4a891b5":"2021-09-08T14:03:19.240Z","4.12.0-add-multiarch-handling-5a5991f025ded82ea463a5bc0ee8fce206eff08e":"2021-09-08T21:45:01.856Z","4.12.0-add-multiarch-handling-582ef8bf3cdbc64ee3bc0300692799829b02ee3b":"2021-09-08T21:52:52.200Z","4.12.0-add-multiarch-handling-c27dad3893812d7935c45ef99515b8e1fe824e34":"2021-09-13T19:51:09.862Z","4.12.0-add-multiarch-handling-ad2d7e85a08b2b12d9306abee686d3b8db96d875":"2021-09-15T20:37:58.077Z","4.12.0-add-multiarch-handling-202ae1eb977b55e01c269439a275c257b02bd1db":"2021-09-16T13:22:10.457Z","4.12.0":"2021-09-16T20:56:24.955Z","4.12.1-fix-broken-platform-support-be37812fe1d0feb7e7e01c0ba23e4606abcf9b8e":"2021-09-17T00:46:03.418Z","4.12.1":"2021-09-17T01:34:27.100Z","4.12.2-logger-for-multiarch-warnings-2ce61c87de678fc9fda90f01c20e7f7517055821":"2021-09-17T14:30:38.807Z","4.12.2-logger-for-multiarch-warnings-f848b248061bc7153bbd3145c71f4ae8e25a1710":"2021-09-17T20:58:48.714Z","4.12.2-logger-for-multiarch-warnings-86df646035e7c51d8a86a0542dd73eaf53bf0008":"2021-09-17T21:00:47.505Z","4.12.2-logger-for-multiarch-warnings-277a26c5e7ea11c2c4bba007263f4c168232682d":"2021-09-17T22:25:47.563Z","4.12.2-logger-for-multiarch-warnings-42766be3d4df67319e34ffcb3cb89af1dd51a4c0":"2021-09-18T01:18:09.862Z","4.12.2":"2021-09-22T13:07:43.219Z","4.13.0-rgz-pass-build-options-11d7c3ae29395e54aa11d33923484bac176282ff":"2021-09-29T11:06:22.866Z","4.13.0-rgz-pass-build-options-9a0a648689f5c4f877b2372c4ffee521b2c8fdca":"2021-09-29T11:53:55.572Z","4.13.0-rgz-pass-build-options-ff38b78b9fa96420df2cf9db53ba0052392c1f7f":"2021-09-30T18:12:38.558Z","4.13.0-rgz-pass-build-options-18af5273d0396ada971a8ca8b2b9303781b71ef8":"2021-09-30T18:19:46.494Z","4.13.0-rgz-pass-build-options-20f9063d84cbe65dcc2ad5ad508b38494039b5d2":"2021-10-22T12:58:57.937Z","4.13.0-rgz-pass-build-options-fc2a1fc5c5111d5c371fcc162d3586360d13b728":"2021-10-22T13:02:31.146Z","4.13.0-rgz-pass-build-options-14dc45067e72ea3e8c575643f700c7d16365b993":"2021-10-22T17:51:21.641Z","4.13.0-rgz-pass-build-options-7f6e19fbe9cd2627ff7f337a933ed3caf4a33a8b":"2021-10-25T16:31:50.044Z"},"bugs":{"url":"https://github.com/resin-io-modules/resin-multibuild/issues"},"author":{"name":"Cameron Diver","email":"cameron@resin.io"},"license":"Apache-2.0","homepage":"https://github.com/resin-io-modules/resin-multibuild#readme","repository":{"url":"git+https://github.com/resin-io-modules/resin-multibuild.git","type":"git"},"description":"Build a docker composition","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"readme":"","readmeFilename":""}