{"_id":"@apostrophecms/content-upgrader","_rev":"33-ccf5f66e846c152e64d9ff7ce5ad7999","name":"@apostrophecms/content-upgrader","dist-tags":{"alpha":"3.0.0-alpha","beta":"3.0.0-beta.9","latest":"1.2.0"},"versions":{"3.0.0-alpha":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-alpha","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-alpha","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"62cd83cd5d746967dc48bf60b3b67e251010b3b2","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-alpha.tgz","fileCount":5,"integrity":"sha512-ssGC1P9d+MLKZ9i4HnOwl9u/1E9WIIF65CCTRvdWvw6LwCZfmjCKzTHqer0GwRzXWeUzPrAm9wBrQUrP2jwFiw==","signatures":[{"sig":"MEYCIQDHc3s39N60O00RzlSRQNw21CViPUEGXI84IY5Kf6Vu0gIhAPH7cxkkxPJBhVb7QDRl4lJqbnXDAUWdfmf/nP2yfq+D","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwylfCRA9TVsSAnZWagAAOHIP/Au1u6mvTP129Xfe/Rei\nqiMg4bCDK/cbLAq112LkwHN5/+kVV2gBxmN2vfm9pDi6bElhAj1EtrS2mVvs\nIeVX/pzVUAlquiNaGzKRcnDlJN4Q7jd1Rg4s8drru5P0detm4wCqHb4JjGUt\n1C+vsWKamf7ZmfANbbAYkqbKzdsiD2KrY5SeBZscuproEB7qV7sRL+YaHK7k\n0DmY3ypEmtWPBm9rOqUy9zww9uPJueqpJl90Y7EEbLQPoH1+ayHV6V4S2cig\ne6ewv1KLNc7U66CxVmwo9SuyjYKfJavlJUxH/RWCx+o+fmaB6HNoXT6oIXBQ\n/9J+aCG5dYOzjVVRmLJKNlrbyDt33uShQ23LIAjoSkjqDKgqS8IyQukkK5OP\n1Pbfg/A/ptIxPjWVoPZ3ijKDxsO7NC8Km0KR1KSJpm7jGe66dO3U8Ho6WcQh\nLf40hc80L6BDxzAuX04mrZ0qDOuT/MBM9q2ZYBiSiKt7KCDrSHVuGVmXkU2W\nU3GcCD97QR3ZsNRBuN4yykHclM+tWOYy+VEgoKWG2+53KzQO0/GLNTU+iovy\nq5xY6OITRkhvPnfXCIzoQBM1W+03LrB0KrR1Ski7RWPe7/F7tXeScphJknGH\n686W5ETZYLj1OZ4xTSlZwCpiPd8JnWi5cFG/1I2uvGJyqzo+Uzge9bleQGYp\n5DBR\r\n=WslW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f405ce4ef16fb5803ac29f2a2b424bdb15426e9a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"6.14.15","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"14.17.5","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-alpha_1632414585452_0.3219862927843833","host":"s3://npm-registry-packages"}},"3.0.0-beta":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"e8d30b815cea653cb9cc697558f0b3c2ff3a058d","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.tgz","fileCount":5,"integrity":"sha512-yv1QVKqhUCZC2dKGVevVM8Rbr+zi/fDDx0J6JPuciMhncpfZ6RKx3qN8ZTMfkPvx+MtGd7auYJO4EYJiV7nRmQ==","signatures":[{"sig":"MEUCIQDOvl2ImooHtYWYXbrCXDDUhvWxumRb6DixmDe+De863QIgY9zzf1MdNi5JqyT3urXbxgh0kj5zt6F3GU2w5aFRlLQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/UsMCRA9TVsSAnZWagAAVroQAIS07T/eyMpJKWesG44z\n5ygvYgbsHYn9UA8CuJPKRWHCXTmONgwuRcRZ8IpYVUR2MdcUbdms37V2bmMr\n/93Lg+91tDdJTaot4diX8WuYrFTkxQX8xWS5tPOiORJdmOuTia6/bHdLO9GE\nyernC4lBMBK2+HC6qYr01lwcHTpbqopyGE2mrATfWN+j38y7osgV4kBX778/\nguPM906Zuel4LggTa8mp/g9tF11oTb7Dk3MmIKtlTyB4HCoBnlpllIJp4hkS\nnxXDaLFpByxToYrAYSOfakhXSS8dQ3WbSApESaOB13lw5umXl2ODdL7vHlHh\nRXNJL/s7dln73zzIjPGi8xO0nDz07yy3dxO2Fwb4xfh2lu/awtI9o7AVxhgP\nWqClyEgd8NFPXBXdOFUE+m/pr8L8OwuGWbAFo8LcosBBik1XYmGNohaPXSo7\n5PDTaX44nlsK0Yi74WganoCJNuuDLPAmeEKN7BUChiOMz3GHrIPQusY8yqD8\nvMNcoHr/wFl2ke+FDL2vBPSIMoR6ZOQRZ2czAk91heN7qc/ux70Qsa+/kgFN\nlU2yNu1kHWHaAzVSQao4ba5ogxAX/1+SnUMzd6buSPpERUuHbTruSKHrImGY\nMjWrvOPTIQwS2OPIGZsy7F8H9ht4nbWgn25+m75Som33CQZ9pggt7e3EDnSv\na/l1\r\n=pGoB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b4d8c08b45af071cda7782418b32d4a5db4a8991","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"6.14.15","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.13.1","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta_1643989772178_0.231143635461025","host":"s3://npm-registry-packages"}},"3.0.0-beta.2":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.2","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.2","maintainers":[{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"58fa74b482abd313541c74e1b0e7a19b3a126ecc","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.2.tgz","fileCount":5,"integrity":"sha512-DZ+64uVk61xO7H5eWZQop3+U9fEwtLNLcgXriqbOLhzwI6gC76ejqcEOczmgwnMaTBcIUCRp0w74kMe3/tY+WA==","signatures":[{"sig":"MEUCIAMvjd4QYg5PMp7d7jxqWONS+61gdeozrsPgtQacxxhPAiEArxEn1jPLojWKakIIsxU1nCoRq9P4a/bdr3bEn14WnQs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbqxCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVcg/9HEbvyX5RxbaQGTsh+hmbCda7FwzWBY9Q40P/XMk5IfwX/ADg\r\nLdewbnTAUDPB+DBVVH10t1O1cPk9LlHJHiPyG2XK9uvL2PRjcSitlZH8mWLD\r\nef0/LkvzNifeQvYCK+sqUaBNkaliLmpbGnKTvC7dlKQMYxrjzJbthksv3jcR\r\nqk1cB1g0eSUsckY8bGzprEyD1UGvL279CjhKQixbdLW+J+t5sPuFX+Ac1a2J\r\nCXmunryxsRmXRD071wIhPkdyH32z/rIxgXlDrFtTE9d7lF4VAEjit3CrIPDr\r\nZLo4xxgwtpxM/h4fVIpeI+K8y+sf5/gd2kjNOeHksc3hhdIqzXLmFiM3Oyf5\r\n8JzGObWF2PQtjm0eO2LTx8JWcrl3wVEKfLpHbg5tu9u3FB8fHmHHLHUsd8QG\r\nN9jGV5DqMicjU905YZjGHRo280TLRfAPfUz1jmqzXcRoN6tsPhj5tSjHihPl\r\n7HFHPCgbvkLallj3i1lRcCLxyw1AVvQIDqynhvO/5subIcXtPZy5U/aOJWcT\r\n2MRNw6LGr83UGS+FdEwLdMG5tR2QPU5yvFlVX53kAptiy/Q4WCbMwOpwcK6N\r\nMw7uadLFUx1tKQJsjbpfmEO98aA70a2Gh/gID3l2KWDXdmuDMrk7VZYv8q53\r\nU5nez2k+tA75AcEJgjdGWJkFqCZXq9yqC2M=\r\n=BbBG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"094bde05689b6f4aa1013a90cb2f90515b8a722a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.2_1668197441916_0.06952663568256678","host":"s3://npm-registry-packages"}},"3.0.0-beta.3":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.3","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.3","maintainers":[{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"61d9f8d51d867d2a84a60f2c093556458cd4ff40","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.3.tgz","fileCount":5,"integrity":"sha512-QkoZZC4ZGFpkLZFC+Fd0bpHyWe1wlCOr3f4oWlDYEiqBKu5fa3/u4WA2qLGAHrNryKMS1vEyXr+M+TcZo/jeoQ==","signatures":[{"sig":"MEUCIQC2SQwpujNbsXeaeqRRt3xXn3ZTtZ5NQ4jaN9hev9bdRAIgbPDMKzBxjzQ5udpdW357KGWirLDJMLBSkMy1cPzB1hY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdQmuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTBA/+O8NREovE6skTTk8G1M6m+ebGsgfPgBZyCcST3b6VO8b6a0/F\r\ndAs9fSxCe/m3WBAzip+OqkLXgav4FSKhPg7RkGeJxUL4UbzpPEu1bUXgxchz\r\neEZpo4iAWGxPWkwXSQ+zPVsVkrdnIMJ4+HlA27IqYnA05PBo0+MihwsWtd8G\r\neAJrHh3ZmhnHqzh5nilmXM/NaYsgODvtq92GKVFjA3+1sUychJirowIjLpVJ\r\nHCbbOOFskmpJ3VZi/jMzO+u0J55btgoLbCQw3L9tpOAvGOh/T0UQxDRHWy6z\r\nBMQHJvi77bAvkDAzR8GcglCyccIo6AOrmoC9XUpLtp0F81xExQWGV9NIZYHg\r\nm4OVn1JIj/9CjbODVQzKnVft87uytkBhTOYMNFoXphYUzzMAAPawL7pIQjYh\r\nHyOjN10Sqik0Sqq8CxzGzG+rj0M4RiI2Od5KLGuK20HHdPS4zmS7gxHWoxj4\r\nYlhE2ylv6oxEgcGjrSRxdAK2335rPpIjT7LexWgOahl2ipt/tmqiB2ntpWdw\r\n7opilBIG1tsP8TLP1SJT3IF1s/pgOf8ZO09PaCYNIdmzlfabHtaI3ibxnEZl\r\n8929xqIxUuuTIQ4XNngCk76a3RYhKP+ZD5Qq1lOqwPaHf93aQG/nSLWAZzTb\r\ni+UfV4zrFpxKDIuUSf9pYGGL+nbWhk2BO3Y=\r\n=qeN9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"e77223a0136e7306e72e4141a94cee77789c7515","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.3_1668614573904_0.7217682740771867","host":"s3://npm-registry-packages"}},"3.0.0-beta.4":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.4","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.4","maintainers":[{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"cc6673fb69a1065fef781cdcf871d052b9fdff1b","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.4.tgz","fileCount":5,"integrity":"sha512-diVPjSUwxxs0EbxRwg/dmzhK6QmIRiIazkqxuNsmx3Ma4JCYir2us1R9L50J9xR0Th0okuLS33S6JZW9N9BKpg==","signatures":[{"sig":"MEYCIQDEAxLe7ReIDGc7tsC50ZkIGnvxFqgIxRJqBQ2xf4rGIwIhAIaXUl91JmUFXWWL63Tqg7cd/vrO1P8O5xEoQ4CY2Cir","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfLpiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHrA//fSnlldZnisgsfSwLXqbY+FcmKFEy0Z8A+kDMlN6Jhkg5KIzw\r\nQHcKX9WKxfegzNuiwONmyVNbun8VYRJMj374kcEX7FfGFCoewMlfxvHL43Hb\r\nRsmnVsj5Rn54z3qGOJiYHf6JLvLi9auoLFvOAiBfd3z9FPIIfhEo7blwO85j\r\nia6ble+D6Sk19SKRO8gDkqdDIKppuo/lzt1TDlPj2igJNFXTrPMzWoRLa1DT\r\n2ZmEKq9l1maX4Ba41AH/T/iGzTwLDDv4EiNxpLzAUevhOElck+dqPs1L7agq\r\n+b7UsoTZjUdLLeOQgm82JkkzCXLgOZ9QUHDwZ4icfrpr/HJ4vjBos+q3v8qx\r\nx+JMoHD+cApYTgay+ojuV9KbG/q6RWdl0eWe7REDtqH6Caw1O59C0ayKZgCC\r\nI0zxNThOCq3yT3Noy4zMF+Gev7e97Sz/WHZB4SzDmxMVdaHxI7vSFqQokKZL\r\nnbux4LwEimwToElYYdQyRIiI1vyOoTYr5nQcJibs7+aHFC77S94NZXwPLqa8\r\nn+axC8De0Ft0ocakQxbuSZvqXsnpeHegXPwcaTFxa/wgZ+MAmQAx2H7XNIud\r\nXSjcVJL9vBuyl9h+sGTTdeM7gkQyuZ1SDUOB1nafSbjUjGBSG2ssvDzpA8jq\r\n535+q2sVswXkFwKMyc/wsF+uOKs0l4b+0Kk=\r\n=0YFR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0086dddb127da0d59a5d659af0c1c7f91ae1f7ec","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"etlaurent","email":"etldev@tuta.io"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"14.20.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.4_1669118561855_0.8579100508012272","host":"s3://npm-registry-packages"}},"3.0.0-beta.5":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.5","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.5","maintainers":[{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"f089fecae1613a4790f7f3e219731f5de46ac753","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.5.tgz","fileCount":5,"integrity":"sha512-JG0pVslGVE6KOWoQEMFwxbMCoGuIEnoUE/mZa/+VXF4TN1lD/cgjV0t1fel+GDJsAjrsk7/62yD9gkKmEWFX2w==","signatures":[{"sig":"MEUCIAunij0WlhZ+/K7fK0wGt5qbtnpvP2EtUXIz6KVWmJBdAiEAgXAHwyn1zt1KlNkVyw3u0LLSLZYRlVXIjEZHllPY4A4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfRNEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeJQ/5Afe1TS9lFBaErmEyr7zKpbz8fZ4dDwHzXJOaHgnR1y22DoBO\r\nvg5kZk3YHzvRUfPuTQFEnojQkb1yqgDcUHknvxi0Dnxc8PlwAVvQ9HT79BN4\r\nLU83cKnHOm1IwLa3NZQRp8R1hkrwBelYBq/2gQoCu2gq0sDngWpS8a46q4Ku\r\npX/epZT8wUWIvBKT7JxJjTtKw+262sjmI5BeJL6y86922MY1XMP++mcTPv00\r\nMLMbkBPm8fa51wt+ykoujyUKAYfxbdjoaloMZyhcAGn25yUErx0iXoVYyFKT\r\nx0gfsHcG8rUWirluAdtm33Ax/t7cMsfSuJ/eP4avqTk8PH265MomRmKNOo9w\r\nqsvjX/nh0WVjvxEljeSOmXo9qcWAB3fp4YCENnGuqLtXYjLmP2OEq+rqDeM2\r\nJ8J6oJu6CIuNh1MYN1BeHkw3NppwhsasN7Wivzw5PHZRRG4JXAU8ghUBpexX\r\n87F13JChY8OA4/GY2biGDjwHOskIxK77kVRPsPLxefOzcQSUKptUFpMfsy/q\r\neOv3emWufgL/oaHsC22vGJlCvBOXvNPyafHO4XXvNcplRWhwOmdc0udpsH34\r\nic1gaRrC7rkf+17STIAhX2W+MkxdQ891GPKz3OVaoMG+M9AfVH3SkWeyCira\r\nsI06kN74YR4Oma6wdBLkaalNUoG3PzZVhtE=\r\n=6nYu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0fb6d023b67ec9b15e4ed718993f51939a3f5648","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"etlaurent","email":"etldev@tuta.io"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"14.20.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.5_1669141316350_0.624153058513429","host":"s3://npm-registry-packages"}},"3.0.0-beta.6":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.6","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.6","maintainers":[{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"570129d90a15e70e248fa374284d554c83f13531","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.6.tgz","fileCount":5,"integrity":"sha512-CPA9Cacu1j0ORb6LO3JM1tChV9MhLuaWCu32nbm1f91HUwAZMm1mdzUlAxoVxkTnEWIKQc3FRZAMcd752rw9cw==","signatures":[{"sig":"MEUCIB2DbSCn+HUza9PaDj1WeiWhjmAizMV1RHeVsuzTR978AiEAmFH7D85n90SOK5/Hx/+QwnoMEM5zBt2y6rCO7G7FHew=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjl2xkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrzaw/5AB2Vp8Jnb3SmCGZNjr6v7K1EQpYFU2kkNHBDWlQIrgXtroxT\r\nRh/Xl6WUHG0lAJwmpUiRdDnIE7wWy0hXTxMTcmh23WhyxSY3rbxuKzXxEzYM\r\nU+0EN7Z0hlpcyZ3QWfGerGy0BJnYHR6e4AyHFT7YVUmfffznktQ/ilMZf9IO\r\n5EV864ykg2cxSAFqcOkFlR6LS93RzbC+d3ZtKRcCf2TWO+1M1smNIvXQG9Ay\r\nAaYwyFJMy6nVy5o3Y7KcIP2+viKUFWprirt+dtvClldWEMOw3ffVQMb4m2US\r\nw++qU4kMaS1pflanj9CdBvYVpOerfd+sSrt2sz/bsBa/8sFMfhCdmqUIJp5d\r\nUYxS10LD6eFHU/m9fJz6wuvg94eRAPl37eL96c08PJwxWRpvN+zPZ3rFjrkR\r\nwN8GgtqJypA1JUFerqF+WGeEqv6t13L6jMg+46Qu3ig8U0uoiWri0+rHG08c\r\niFsvnxgqPSVOlnpj0qyHdrItye5tgr5l34hc2c6C7ptWOM+w3YW/SlEqX8J9\r\nXTQW14pGBX7lXcteWXFF6wuP+tr2jsrnvD/dJclvlwesmFzwE8V5uAmFPiAd\r\n0d3bkUH/K7AXoBGUXsUMcwzdvpjKDAxIPnHLI31qnK4d9n2UYqCYsw2S8dGj\r\nPPwhhKwnN/MXthuQ3EmjfoPPVgTPUeO+eAU=\r\n=TbqB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"094cbb14be0088e5a972dbe418f8d144242cffbf","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.6_1670868067859_0.4015375584217038","host":"s3://npm-registry-packages"}},"3.0.0-beta.7":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.7","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.7","maintainers":[{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"f8ee3c656b9a6e68c4dc6a993b3bc1e783b3ac57","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.7.tgz","fileCount":5,"integrity":"sha512-+HpbNymf/wkKuzCI3okGZhk552RG6ZWCO4KBhajHI8mjyUJbywcNujzT6POmZaz5H9INZVVMXFmDLrKvD5vFrQ==","signatures":[{"sig":"MEUCIQDyPI5QjEDZnuO7IJoQ7R8h5TUHyhIokr4XOR0gswdmQgIgH1NYUFtI+Ra0yN3+zYIx7ZkUlcJ+iH1kRgsoxuk9w/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpJBjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqT/Q//VkGJ9jRiWnX3PaHFahkifVDOmxaa8nMBkYNOteHO/gdwunMz\r\n3Fus9MdJHm/sqUL5Fjl1CyCVp5pXy9NJGG5yVh7s+HxwjRwdGtIa+0hMPxbN\r\noW9g2BCUSLiaxkEHgoSHRGks4Z1R0TSh1z4QH1mRLbTJNU9GKfBDllYadqTa\r\nWWseDBIMDQ3sxx1QvVHNrvyeOOn3YFeNsOZ6o/8SV0DmjzrDmKvGk5LGSMUg\r\nWI3pGcGMEDSzBkexrtD9VXKoNryWcbToKnXv0oc+CckjFuqNjND6821j0vjS\r\nsKLHIiJw5JmjYPURqQLhRig8f++gP0m9n7uZV46wjyLMOYVsbQxlggc5vX1l\r\nvOn3KlUArgGM+NZI6mCLeOkJsrZBj+nsA/GEQ66j9kgG31jKXyGomj+ABtQF\r\nrVtFgYLyNVUJMWMZoGo4vKUaY5rHKrNt7AvUCzkT3UkwqIdpa61Mbazg6+Gk\r\nFgmOuOF7jmlHN19U/mTMyCp8RqsyKLCTlqn1rB7Aq9TFG3bTZVtucOAyJYBp\r\nvQ7dFCbBoQrzZNXJFO6Zh4TpOiQV7nqkDSq0fiHz6XG+h+4jUJScfodeMN+6\r\n7VgYtoHtHERGH0zicl9m1ZQt7VSPEXUsAC1BK1XxZrPeIPijgvpErGF7AVRC\r\nV+mWQlEo/JpcxreqHPBPlJDZg19wbhSFnJc=\r\n=v0Ja\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f2767d4e0e653770dd4de5c0d7c9886353f4fe05","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.7_1671729251671_0.17464565826539613","host":"s3://npm-registry-packages"}},"3.0.0-beta.8":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.8","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.8","maintainers":[{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"041e45f338ddfab7788f1067ae69ff66aa87e59f","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.8.tgz","fileCount":5,"integrity":"sha512-BETUo7xOES4IoSSUXDsB+TsZ62lAsNfmlcDUjTqJRFhIjHPz3aeLDfut9K/IqdBimJXjG9js5FFdy0RBDSCOIA==","signatures":[{"sig":"MEYCIQC5NsyFBXnl2luQ1XAzjZAPwOPZ7+IAlf3MOOtYeBdiQQIhAPUg6CPp+yheiR0JMyTvloVqhfb7ESZLezYtX4U+D8fl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2n3XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQQBAAiJ29e8SHPp8klpCFCbwp/ODfNh/fIG/RoGKHYxbTX+8pK7g7\r\nVUbbpU+E88aEk195YFI7GDqvkq5K/yK9Nd02Lh1aysqIMHGo2yNFjHfILIai\r\nNokZiXlXyywtikfxmDwpzBanf9Kv7VMVut6SlrBcFLiAJDSmeJ3KCxN/IOyn\r\nKv1PlqO4kEpY820g48cZF0p/UnZivj8m5S892/kkukJ0D08r0H5WQoUsam5w\r\nJD4Aa4OA/Ok5DSJkKQOIe+/MDyXil9VNRj88PcRgHDgp2476Y1X/10SxGA1K\r\nbOud9C9uZW2kIOSOCpkHRjIlX6+qk89eofwJotJU48c8RBWlBCWGRQS/tY9c\r\nK4VBJ3Aorea7Qgr5daojfotsJax3cxi2rRbg33JHo4ywBhX/KbNQ0JxpliYh\r\nuxcwKAO4PSmwFpeKED4Q7ipYExkGOFapG5uPFrQdMWSji3Qd0KAazyhiBVFC\r\nZPqK/g21FKfLqXVIhfQ/KnQt6zjse3SpKADzB7oFYgjsKz83PsTVHMlBm0Wi\r\nIYAnR2HC/rpgF0qWicJsZbHnh+UzYII6cEcvgkqfiYnm/bA6jQQ4GZ7hTX4E\r\n3swR3sNAf2xrp8qJf2jdbqBV76ITLrTvRQ+twoQ0k4LfR53l/nrB97YZFWxm\r\nQHvnWia9iLEfpJdNlGE1JoeQklTIyAPT6dk=\r\n=8kPm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"cf0cc0a69f9330250998350404abeadbb7b39166","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.8_1675263447267_0.6030596445444492","host":"s3://npm-registry-packages"}},"3.0.0-beta.9":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.9","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.9","maintainers":[{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"edbbd9f52bdb0b7a668b881bb6e94ab225a2220d","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.9.tgz","fileCount":5,"integrity":"sha512-QyDLvLZv/hyD3qgJzGjho8NEsqXttyBBWryTy0x/6MJrGy8NRGbfLk+LvDpyL6cc1DurU/HZhS+IcOMvpgrtWQ==","signatures":[{"sig":"MEUCICKCztfJSk09pnb2jJXminRbsWPbmLizy0YA0PHEn52jAiEA1CMA6FnVWbXBW0OJDevzkwaF1QOxfS7kv0OR1gE95Q8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3S6wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPUw/+KkzIoFS3frvyM8f8s/8ci0MWI+8glOHcR93IVAE8tpn5QSZD\r\nmkdrx1SwzsGZ6g52m3eOAZa9tq0CSEFrM74CkW2QAchxMLnhLbbpT/9uYBx8\r\nztPKZ5AwX6REZ/NrI2W+F+HtlJvFzIIkXc/DvMBUQct5sibIgaCNn9899+9V\r\nkpd/FJPFEN4G40ayTjvyzOHXoFgz2OwpCdFMqQw+Db8G719QWDYvHoEP+mbY\r\nxuQH+Im2dsaFk+ZoI1y5mtGiZ9pHlXzzPPw+ij0gLq0nWD6Jn8yP7JWy1d1X\r\nfqWXZNjRqKvLU4LN4FGNUpuLiu2Oh0GtadH9oosHy3GxJCc3QVo59vw+gJ6V\r\nBzyXI9qdK51UmbyIuZTfIt1EnZPMVGy31LsVg3q6v6UKVCINKPDEV3VcNXkB\r\np0mvrk4oRIKjd1mLz4/+uPdDJJPqqE289n81kfuUwSZQRNmiG6xhzFhzpJSv\r\nnbzV3WGFeJiIka1CX2Pr5rbToOTP8eTNg9Y/DBjjNN8JXoSML/Tl6r088a3J\r\n9J1qx/7JRDozqJXWbZPL3+vhRHuzHVQPMzXjOVdlihgqoi3bwpXWHAaHhq7E\r\nEm7qasW9kL0ghZRXHJIVCn1SUX1lsYM+YPout7HLfBFc1CeS3+YDFji47p3V\r\nGQIgk006AF6Sni9ZfAkWqozKyhNQGfuwNYY=\r\n=ZilD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"10f0ee43f49f02a2d791313ca88cb7c623a4cd4c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.9_1675439792528_0.11514083035740641","host":"s3://npm-registry-packages"}},"3.0.0-beta.10":{"name":"@apostrophecms/content-upgrader","version":"3.0.0-beta.10","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@3.0.0-beta.10","maintainers":[{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"d559befdee679940ddb9890fc97d4a268efb4239","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-3.0.0-beta.10.tgz","fileCount":5,"integrity":"sha512-Ojcs1zKqCLLnyMYNkS+0Qq56ozr+MTkXHWCknnVgXj7yQqtZlDXMu8j23W3m7X4Gaq0W7gPaxD4VrMr+2tZzKg==","signatures":[{"sig":"MEUCIDEHSTz8V6BWv3H1U+ijcWTTW2jaXD/i5KKq4RXPDHK/AiEA6juahbT+U0rIqNu6XyXXXYOr9R8yPA1PSR5dEBgzmWA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3TEnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrDxw/7BXe2ZTaB7ndq8wHlJU0m+7Z/Vvjdp/ZiaL9fbWCdc4L+jOrd\r\n0cqjdWhxf+VEP1yVkxj3WZCiqmpR6YGdgGX9JNFniY15jOeC3XsNoaHvPf6Z\r\nR25RdIB3eNHcF9jcyOrDeyjtNuIC2xvenr9yGQjkN9echiWxnwYHj2dWTdNj\r\nmKko8nO7uKrt2ACb7zY5+BnEo2+0TJI0bh/WX1ZetFJ725mER9kDeVEg2FWy\r\nzHvRLhQwIJBqOaE33nHEbKNPuYWus4JU4NRSR5HwCZBYgmLsqT+Anpo5e1B4\r\nIoIBXyx43msLgnEYQ+P/FcZACJISfiLc/lFkK5Is7PplwA0zQVYpAtg9Y1nL\r\n4IjTGTkzLr8p/cfQZHybKp4Ke4kfagRvEh7AhlkuI2DRLdapfjLB/PeUBuP8\r\ntPPweO8dDxw2cFW86deV1/YGTcZYKXxH0NVcXsXeWOIOM5jK5amch9i+FT3J\r\nZMKxXAxH6WOpm+VVfBMTsMUy5KjWLIEVaz2PLKCfJLN4L6noZ4LCdoPYliTw\r\nRAlwnPFH62XwPDYCA7fbjDSppEEe1RL0SiSdfc5YGZvjPzqWeBWlJeA6OqMP\r\nYyfWba7RtoWcBEC9Udf33UPjf92KmpYynsW+/TdgGzCT1WtpbCgFbKw3MzcX\r\nWB/7qEd1NagY0zVNEHgrRbgdmtfDIvuW6m0=\r\n=0mPx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"aac5486306c2526ee87bb1c085bc087e103515db","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_3.0.0-beta.10_1675440423360_0.9603858242460666","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@apostrophecms/content-upgrader","version":"1.0.0","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@1.0.0","maintainers":[{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"780f467576d32261260d157e394a08f71b2b2b84","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-1.0.0.tgz","fileCount":5,"integrity":"sha512-oj4I/sncVb2S3OcyZfiCBEdQayWEDX88nyENhrwjaypPAkKPGeo+rQ4xGsKYDupXuGTS5p0VNvH/6SRpO6TRPg==","signatures":[{"sig":"MEQCIEhJL1MfP4MOnKm/cIoIccDoccRL3Xe2ozqWoscemhGTAiB1Uc87ZRGSEMzghSgrrQVmnzhTnAua4jF2BPXfEHrZbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkE3CpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+/Q/8Div/PMSDS0DAbUrILnJ4xOsr5ycf6MA+o3xqv1DLGjwbbEiT\r\n1waK/wrdnJDL5u+G/JqRLN8QIAoxU/1zuUQK/VwrF9hma2JKwOYyDqN2Wevy\r\nuCpnL/pstGBQ3cOIprsOi8DA46IvA2xO4veGznEHPgSG5PT3cKwTl5mU1ThJ\r\nqnHPRxQ6BeyDl2eoVlz9iDJ4o8nopEoL44RC37pXzb+wH0hR4/NIlBOsUxh1\r\nf11H6UAQ0GKqH/mC3875Jp43VMShhL59NHSF+OPY43UENlDvtRf8hMhjYY4j\r\nJJcEGmwLDk8FmaYhnxKaT2bOQs2bhEeQMl/CaTVKfNBBLmzgoR8ehTJCQdAY\r\ni6ThOJdDQpUGWiaMqfbb7cS36K3Xd4/pwo+bmwfeAE2rGYuCm6Ck4HN4FGKg\r\npoflSaXcDzRmXDUyjIqlv7/+Zlf8SGg/Poo/j+KjB02liWg0YbkvCY3aIV/w\r\nDC3QKkrwth2GCQpR1kXTDgLELsUDF8xxXWiaktj9VZzAFM68LCj7dYOODj+C\r\nInxBKekjj/NPyyDIfjUobN8MP7zwNwk/HLVtWzZbC9+InBcwfkK9zJOJB28A\r\nFsOaiATtUMwFGQ2eLCp9/ihiV6UsXRvli0A347dF0BkeH5NqTNIPbH3Ocw3l\r\nGQiQqOusr+8ev4tioWd9T5VEq0u2fL2Kzus=\r\n=KmeF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"89daf9687e958eb964835a536ae24c45551b09e0","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"8.19.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"16.15.0","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_1.0.0_1678995625567_0.1922825448849177","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@apostrophecms/content-upgrader","version":"1.1.0","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@1.1.0","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert.means1969+apostrophecms@gmail.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"1f736cec452e69cab5357afcf4bb976c059ba796","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-1.1.0.tgz","fileCount":5,"integrity":"sha512-8tzTrPhgpYY9C0UcC2AHRM7O+83JjQODNBhV4Q1BmwZSKlrnUhfzkGSnvOVxkOG2hwS0khJV4uwxHN95XaYx+Q==","signatures":[{"sig":"MEUCIBZlCSBLawLUMS4lhG1jzrZX6TRw0ile3wy91XQksu0aAiEA3TYP8f+eGAszM9asHKU1VC2V/pJdfR2uAid1sEcQcr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34749},"main":"index.js","gitHead":"50337cf4528608d47a0bd4a9812e3abbf4fdb9d1","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"10.9.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"20.19.3","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_1.1.0_1772543149664_0.3143669193856238","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@apostrophecms/content-upgrader","version":"1.1.1","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@1.1.1","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert.means1969+apostrophecms@gmail.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"e9b7eff2be44004d8781e3e06dac72477576b177","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-1.1.1.tgz","fileCount":5,"integrity":"sha512-W/hrEXLughlByZllndFu70Kj8DFeWBIdeCrqXsBX8OMN2Rs6lwPmtSPyiKHDmVoX/hzNYqLVhHGm+iKmNWra7g==","signatures":[{"sig":"MEUCIQCpuXI9/K6U3alqkCywplBnLEeI0aMkVHqLQ7LEKHVlCwIgLfRsqIrXOX+cGbmXBjB/vIE/0zMjQn4KRfc+A/6kZMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35696},"main":"index.js","gitHead":"246ad17e7e75d4af34e8bdd6fceb13c35180f5be","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"10.9.2","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"20.19.3","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_1.1.1_1773952155229_0.20497571483135268","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@apostrophecms/content-upgrader","version":"1.1.2","keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/content-upgrader@1.1.2","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert.means1969+apostrophecms@gmail.com"}],"homepage":"https://github.com/apostrophecms/content-upgrader#readme","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"dist":{"shasum":"66497435daba3a723d0ea187a4073d170e7dedff","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-1.1.2.tgz","fileCount":5,"integrity":"sha512-99fyRnnfGvbyMXQRERhbrbhZ11Z+bzGSlUIKUOvSdVomchBht+8d55TQXUD6UgF+lDD1oDujI83QkT4gLXdM9A==","signatures":[{"sig":"MEUCIE8IM26AxIED04QLrr9FBXdZzun0MCxst3pSoUZoZn0zAiEAifC2iaY6k0CH2YDhYBw/S4ULEYcYNQIGv9kfwSRLC08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36212},"main":"index.js","gitHead":"7436fc002882ad99ae546a65ac087442e00a5598","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/content-upgrader.git","type":"git"},"_npmVersion":"11.12.0","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","directories":{},"_nodeVersion":"20.19.3","dependencies":{"mongodb":"^4.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/content-upgrader_1.1.2_1775072304690_0.26227927648625493","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@apostrophecms/content-upgrader","version":"1.2.0","description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/apostrophecms/content-upgrader.git"},"keywords":["apostrophecms","apostrophe"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"homepage":"https://github.com/apostrophecms/content-upgrader#readme","dependencies":{"mongodb":"^4.1.2"},"gitHead":"f5d83daa82407e09f95abe5640c0d16974507313","_id":"@apostrophecms/content-upgrader@1.2.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-HtHAkTvEDpDR0tqgcu6Pysebcs6JlqmYIj7P+vqNawfYOsj7oET6Sk03aZI0CLEgitRqXUWeZGNwNVsNWAaVvQ==","shasum":"28573ab4b9c19d69701f97cda6ac03cf7a3e70f1","tarball":"https://registry.npmjs.org/@apostrophecms/content-upgrader/-/content-upgrader-1.2.0.tgz","fileCount":6,"unpackedSize":55884,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGgZJDnulrvM8zB88TFGbV/0/rvaOmNv5OlJHT7t2ALAAiEAvyyjvH9DBBnkEvVyc0O+u0lLpZ8k5mqAWAv2kST4EfA="}]},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"directories":{},"maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert.means1969+apostrophecms@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/content-upgrader_1.2.0_1783708915387_0.726260056852817"},"_hasShrinkwrap":false}},"time":{"created":"2021-09-23T16:29:45.451Z","modified":"2026-07-10T18:41:55.701Z","3.0.0-alpha":"2021-09-23T16:29:45.647Z","3.0.0-beta":"2022-02-04T15:49:32.364Z","3.0.0-beta.2":"2022-11-11T20:10:42.156Z","3.0.0-beta.3":"2022-11-16T16:02:54.185Z","3.0.0-beta.4":"2022-11-22T12:02:42.078Z","3.0.0-beta.5":"2022-11-22T18:21:56.520Z","3.0.0-beta.6":"2022-12-12T18:01:08.015Z","3.0.0-beta.7":"2022-12-22T17:14:11.912Z","3.0.0-beta.8":"2023-02-01T14:57:27.422Z","3.0.0-beta.9":"2023-02-03T15:56:32.673Z","3.0.0-beta.10":"2023-02-03T16:07:03.520Z","1.0.0":"2023-03-16T19:40:25.774Z","1.1.0":"2026-03-03T13:05:49.816Z","1.1.1":"2026-03-19T20:29:15.386Z","1.1.2":"2026-04-01T19:38:24.846Z","1.2.0":"2026-07-10T18:41:55.534Z"},"bugs":{"url":"https://github.com/apostrophecms/content-upgrader/issues"},"author":{"name":"Apostrophe Technologies"},"license":"MIT","homepage":"https://github.com/apostrophecms/content-upgrader#readme","keywords":["apostrophecms","apostrophe"],"repository":{"type":"git","url":"git+https://github.com/apostrophecms/content-upgrader.git"},"description":"Upgrades Apostrophe 2.x databases to be compatible with Apostrophe 3.x","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert.means1969+apostrophecms@gmail.com"}],"readme":"# @apostrophecms/content-upgrader\n\nA tool to migrate your **content** from Apostrophe 2.x to Apostrophe 4.x. That is, it creates a new database in the A3/A4 format, and copies over the uploaded media. This tool does not upgrade your source code, see our `code-upgrader` module for that.\n\nSee also [Coming from Apostrophe 2.x](https://apostrophecms.com/docs/guide/migration/upgrading.html), especially the Breaking Changes section.\n\n## Limitations\n\n* Users and groups are not migrated. This is because the user roles of A3/A4 differ in design from the permissions groups of A2 and we wish to avoid creating any security issues. You should create new accounts on the A4 project or arrive at your own migration strategy.\n* A2 has a built-in `apostrophe-images` \"slideshow\" widget type, while A4 only has a built-in single-image `@apostrophecms/image` widget type. By default `apostrophe-images` will be upgraded to `@apostrophecms/image`, with only the first image present in each. However you can use the `mapWidgetTypes` option, documented below, to override this mapping during the upgrade.\n* A4 does not have a standard \"piece widget\" with support for display of all widgets, handpicked widgets, or tagged widgets in the same way that A2 does. Instead, these are well-documented examples of custom widgets. You will need to use `mapWidgetTypes` accordingly after developing an appropriate solution for your needs in your A4 project.\n\n## BEFORE you use this module\n\nMake sure you take the following steps in your A2 project:\n\n* Be sure to set `parkedId` for any parked pages that do not yet have a `parkedId` in their configuration.\n* Then update your apostrophecms modules, especially `apostrophe` which must be updated to the latest in the 2.x series.\n* Then run `node app apostrophe-migrations:migrate` to make sure your database is fully up to date.\n\nIf you do not take care of these steps, you may get difficult-to-fix errors when following the steps below.\n\n## Installation\n\nThis tool installs as a module **inside your existing A2 project.** This is necessary to gain access to information such as the schemas of your existing piece and page and widget types.\n\n```bash\ncd my-existing-a2-project\nnpm install @apostrophecms/content-upgrader\n```\n\n## Configuration\n\nEdit `app.js` of your A2 project. Add the module to the `modules` section:\n\n```javascript\nmodules: {\n  // ... all of your existing A2 modules here ...\n  '@apostrophecms/content-upgrader': {}\n}\n```\n\nThen create `lib/modules/@apostrophecms/content-upgrader/index.js`. Here you can optionally address any content transformations and set the default locale, which is important *even if you have no immediate plans to localize your site in other languages.*\n\n### Mapping locales\n\nIn A4, \"workflow\" is always present, and the default locale is `en`. In A2, the default locale of the workflow module is `default` if no other configuration is done.\n\nBy default, this module's `mapLocale` option will do the right thing to ensure that typical A2 content is reachable after the migration to A4, but you can adjust this option if needed. here is the default setting:\n\n```javascript\n// In lib/modules/@apostrophecms/content-upgrader/index.js\nmodule.exports = {\n  mapLocales: {\n    default: 'en'\n  }\n};\n```\n\n### Transforming doc types\n\nIn A2, the names of piece type modules themselves and the `name` option configured for the module were often different. By convention the piece type module name was plural and the `name` option was singular. The `name` option is what is used in the database to set the `type` property of each piece.\n\nYes, this was confusing. That's why in A4, the `name` option no longer exists, and **the name of the module and the `type` property in the database are always the same.** Also, by convention, module names in A4 are singular.\n\nWhat does this mean for us when we upgrade the content? It means that most of the time, **in our A4 source code we need to change the module name to singular and remove its `name` option, but we don't need to change the `type` in the database,** because the new module's name will likely match it.\n\nHowever, if you *do* want to remap the `type` in the database, perhaps because you're choosing a different name for your module in A4, you can do it like this:\n\n```javascript\nmodule.exports = {\n  mapDocTypes: {\n    'old-name': 'new-name',\n    ...\n  }\n}\n```\n\n🎩 **`old-name` must match the `name` option from the old A2 module,** not the module name from A2. `new-name` must match the module name in your new A4 project, which will also be used for the `type` property.\n\n#### Providing a transformation function\n\nUsually just remapping the name is enough. However if you have designed a new schema for a doc type in your A4 project and you want to migrate the A2 data to that new format, you can supply a transformation function:\n\n```javascript\nmodule.exports = {\n  mapDocTypes: {\n    // Async functions are allowed and will be awaited\n    'old-name': async (doc) => {\n      return {\n        ...doc,\n        // We've decided to change the name\n        type: 'new-name',\n        // We've changed to a single string field for the address\n        address: `${doc.street} ${doc.city}, ${doc.state}`\n      };\n    }\n  }\n}\n```\n\n🎩 **Your function **must** return a doc unless you want the document to be **removed** in the upgrade.** It's OK to modify the original doc but you must return the modified doc if you want it to be kept.\n\n### Transforming widget types\n\nJust like doc types, in A2 widget `type` properties were set via the `name` option of the widget module in question. This was *set automatically* in most cases based on the module name, **with the `-widgets` part removed.** \n\nIn A4 it is similar, but the `name` option is no longer supported, and the suffix removed from the module name is `-widget`.\n\nFor most widgets this means you should not need to remap the type names. You can just rename the module from `-widgets` to `-widget`.\n\nIf you choose though, you can rename the types like this:\n\n```javascript\nmodule.exports = {\n  mapWidgetTypes: {\n    'old-name': 'new-name',\n    ...\n  }\n}\n```\n\n#### Transformation functions and pieces-widgets\n\nKeep in mind that **A4 does not have a direct equivalent to `apostrophe-pieces-widgets`. So when you upgrade your code, you'll likely change those widget modules to extend `@apostrophecms/widget-type` and just use a `relationship` schema field to select pieces. The catch is moving the data. A migration function can help you do that:\n\n```javascript\nmodule.exports = {\n  mapWidgetTypes: {\n    // Async functions are allowed and will be awaited\n    'old-name': async (doc) => {\n      return {\n        ...doc,\n        // We've decided to change the name\n        type: 'new-name',\n        // The old widget extended apostrophe-pieces-widgets, which stores\n        // widget ids in a pieceIds property. The new widget has a\n        // relationship called _products, which stores them in a\n        // productsIds property\n        productsIds: doc.pieceIds\n      };\n    }\n  }\n}\n```\n\n🎩 **Your function **must** return a widget if you want it to be kept in the upgrade.** It's OK to modify the original widget but you must return the modified widget. Otherwise the widget is **removed** in the upgrade.\n\n#### apostrophe-pieces-widgets: \"most recent\" and \"by tag\" views\n\nThe `apostrophe-pieces-widgets` module also supported \"all\" and \"by tag\" displays. Since these were rarely used, they have not been included in A4. If you need to migrate the \"all\" functionality, we recommend using an [async component](https://apostrophecms.com/docs/guide/async-components.html) to display \"all\" (typically most recent) pieces in a custom widget. The \"by tag\" functionality can be addressed in a similar way, however see the note on tags in A4.\n\n🎩 **Your transformation function can return different widget types based on the value of the original `by` property of the pieces-widget.** You're not limited to mapping a 2.x widget type to just one new widget type.\n\n### Tags in A4\n\nIn A2, there is always an `apostrophe-tags` module to manage tags, and every piece has an array of tag names in its `tags` property. These all come from the same namespace.\n\nIn A4 there is no such type. Instead, you can create new piece types as tags for other piece types and use `relationship` fields to connect your pieces to them. This avoids an explosion of poorly-curated tags and keeps them relevant to the right kind of content.\n\nMany A2 sites don't really use tags. However if you do, keep in mind that the `tags` property remains in the database after the upgrade. Although you could use a global transformation function to convert these to a relationship (see below), it may be easier to do that with a migration in your A4 code after the initial transition to A4.\n\n### Global transformation functions\n\nMost of the time it makes sense to write a transformation function for each doc or widget type. But if you need to address something for every doc and widget, you can write a global transformation function:\n\n```javascript\nmodule.exports = {\n  async transformDoc(doc) {\n    // This function is invoked for every doc type\n    return {\n      ...doc,\n      // changed properties here\n    };\n  },\n  async transformWidget(widget) {\n    // This widget is invoked for every widget type\n    return {\n      ...widget,\n      // changed properties here\n    };\n  }\n}\n```\n\nNote that as before, transformation functions **must** return a doc or widget, as appropriate, unless you want it to be **removed** in the upgrade. You can modify the original but you must return it if you wish to keep it.\n\n🎩 **Not all transformations are easiest to achieve during the upgrade. Some might be more easily achieved in A4 after the initial upgrade.** Keep in mind that even if a property is not part of the A4 schema, it will remain in the database.\n\n## Running the upgrade\n\nYou'll need a new A4 project to copy the content to. Specify the new project folder and the MongoDB URI of the new A4 database. If you are running MongoDB locally, which is typical during development, you can specify:\n\n```\nmongodb://localhost:27017/your-new-database-name\n```\n\n🛑 **Don't use the same name as your existing A2 database.** Your new A4 project should also have a different `shortName` setting in `app.js`, for avoidance of any possible confusion. Also make sure your A4 project is not already running, for instance in another terminal window.\n\n```\nnode app @apostrophecms/content-upgrader:upgrade --a3-db=mongodb://localhost:27017/your-new-database-name\n```\n\n## What about the media files?\n\nThe media files themselves don't need to change in the transition to A4.\n\nYou can copy the `public/uploads` folder from the A2 project to the A4 project manually, or use `rsync`. If you are using uploadfs to store your media in S3 your procedure will vary.\n\nAlternatively, pass `--copy-media` (together with `--a4-dir`) and this tool will copy the media for the migrated attachments for you. This is especially convenient with `--only` and `--related-images`, because only the media for the attachments actually migrated is copied. See the options below.\n\n## Options\n\n### `--a4-db`\n\n**Required.** This must be the MongoDB URI of your new A3/A4 project. By default it will be **cleared and overwritten**. See `--merge` and `--replace` below if you want to add to an existing A4 database instead.\n\n### `--drop`\n\n**Optional.** If at least one Apostrophe doc exists in the new A4 database, the task will exit with an error message unless this option is passed. If the option is passed, existing collections are dropped to start\nfrom scratch. Cannot be combined with `--merge` or `--replace`.\n\n### `--only=type1,type2,...`\n\n**Optional.** Migrate **only** the specified doc types, and only the attachments referenced by those docs. The values are the **A2** `type` names (the same names you would use as keys in `mapDocTypes`), separated by commas.\n\nThis is useful for re-migrating a single piece type into an existing A4 database without redoing everything. Combine it with `--merge` or `--replace`, since the target database will already contain data.\n\n🎩 **Attachments (images, files, etc.) are only migrated if a migrated doc references them.** For example, if you want your images to come across, include `apostrophe-image` in the list: `--only=apostrophe-image,article`. The tool does not try to guess which other types your selected types depend on. (See `--related-images` below for a way to bring across just the images your content actually uses.)\n\nNote that relationships/joins pointing to doc types you did **not** include cannot be rewritten to their new ids, because those docs are not part of this migration.\n\n### `--related-images`\n\n**Optional.** Instead of migrating every `apostrophe-image` piece, migrate **only the images actually referenced by the other content being migrated**, along with their attachments. This is handy when your media library contains far more images than your live content uses.\n\nIt works on its own — `--related-images` performs a normal full migration but leaves out images nothing refers to — and it composes with `--only`:\n\n* `--only=article,apostrophe-image` migrates every article **and every image**.\n* `--only=article --related-images` migrates every article and **only the images those articles reference** (you do not include `apostrophe-image` yourself; it is handled for you).\n\nOnly images **directly** referenced by a migrated doc are included (one hop). If an article references some other piece that in turn references an image, and that piece is not itself migrated, its image will not be pulled in. References are resolved against the migrated, A4-form content, so for a legacy `apostrophe-images` slideshow that is reduced to a single-image `@apostrophecms/image` widget, only that one surviving image is considered \"referenced\".\n\n### `--merge`\n\n**Optional.** Add the upgraded content to the existing A4 database instead of insisting on `--drop`. Existing documents and attachments are left untouched, and the newly upgraded content is inserted alongside them.\n\nIf a document or attachment being inserted has the same `_id` as one that already exists, MongoDB will report a duplicate key error. Use `--replace` instead if you want matching documents to be overwritten.\n\n### `--replace`\n\n**Optional.** Like `--merge`, but instead of inserting documents and attachments, it **upserts** them: any existing document or attachment with a matching `_id` is overwritten, and there is no duplicate key error. `--replace` implies `--merge`, so you do not need to pass both.\n\nThis is the option to use when re-running an upgrade for a subset of your content, for example `--only=apostrophe-image,article --replace`.\n\n### `--a4-dir=/path/to/a4/project`\n\n**Optional.** The root directory of your new A4 project. Only used by `--copy-media`, to locate the destination `public/uploads/attachments` folder.\n\n### `--copy-media`\n\n**Optional.** Physically copy the media files for the migrated attachments from this A2 project to the A4 project. **Requires `--a4-dir`.**\n\nOnly the files for the attachments actually migrated are copied, so this respects `--only` and `--related-images` — a targeted upgrade copies only the media it needs.\n\n🎩 **This option assumes your media is stored locally**, under `public/uploads/attachments`, in both projects. It copies files directly and does **not** go through uploadfs, so it is not suitable for media stored remotely (for example in S3); copy that by your own means. Any migrated attachment whose files are not found locally is reported at the end.\n\n```\nnode app @apostrophecms/content-upgrader:upgrade \\\n  --a4-db=mongodb://localhost:27017/your-new-database-name \\\n  --a4-dir=/path/to/your/a4/project --copy-media\n```\n\n## Next steps\n\nAfter the content migration, you'll be ready to test out your A4 project. Existing local accounts should work properly at this point. The extent to which page and piece templates and settings work will depend on how complete your code upgrade work is.\n\n## If you get errors\n\nIf you encounter \"duplicate key\" errors, you probably don't have a `parkedId` property on every parked page. Manually locate your parked pages in your A2 MongoDB database and set the `parkedId` property appropriately for each. Then try the migration process again.\n","readmeFilename":"README.md"}