{"_id":"@digital-realty/ix-migration-date","_rev":"7-914f66c958faf7a4ffcf95ed5f361143","name":"@digital-realty/ix-migration-date","dist-tags":{"latest":"1.0.1","alpha":"1.0.1-IXUAT-11056.551193"},"versions":{"1.0.1-IXUAT-11056.550476":{"name":"@digital-realty/ix-migration-date","version":"1.0.1-IXUAT-11056.550476","author":{"name":"ix-migration-date"},"license":"MIT","_id":"@digital-realty/ix-migration-date@1.0.1-IXUAT-11056.550476","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"dist":{"shasum":"59c201497df022627c20fe42022dc5018bef2cac","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1-IXUAT-11056.550476.tgz","fileCount":25,"integrity":"sha512-qKsI9N/JDMKyTUTSUlw7FHeMgsc2WzHLaMPhArnBj/IGCjlLezBfgLrbcCsh5rwfDo4JOyuCAHysaSpghhBrCg==","signatures":[{"sig":"MEUCIG5f7zZfJBV0gm26anuO7sTXf7fwxUojKVuqv8KfA5d4AiEA/COITMxzUc71EQsXOiIDCtvtlRpjKMwif0gIY4Ver0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189879},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"gitHead":"e4e62188095fe404e9b420cea91e4efe6de885c3","scripts":{"lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","test":"tsc && wtr --coverage","build":"tsc && npm run analyze -- --exclude dist","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","analyze":"cem analyze --litelement","prepare":"husky","prepublish":"tsc && npm run analyze -- --exclude dist","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"prettier":{"arrowParens":"avoid","singleQuote":true},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Webcomponent ix-migration-date following open-wc recommendations","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"lit":"^3.1.4"},"eslintConfig":{"rules":{"no-unused-vars":"off","import/extensions":["error","always",{"ignorePackages":true}],"import/no-unresolved":"off","@typescript-eslint/no-unused-vars":["error"]},"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"husky":"^9.0.11","tslib":"^2.6.3","eslint":"^9.39.4","prettier":"^3.3.2","typescript":"^5.5.3","lint-staged":"^15.2.7","@types/mocha":"^10.0.7","concurrently":"^8.2.2","@web/dev-server":"^0.4.6","@open-wc/testing":"^4.0.0","@web/test-runner":"^0.18.2","@open-wc/eslint-config":"^12.0.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.58.2","@typescript-eslint/eslint-plugin":"^8.58.2","@custom-elements-manifest/analyzer":"^0.10.3"},"_npmOperationalInternal":{"tmp":"tmp/ix-migration-date_1.0.1-IXUAT-11056.550476_1786113043805_0.5901870951591184","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-IXUAT-11056.550497":{"name":"@digital-realty/ix-migration-date","version":"1.0.1-IXUAT-11056.550497","author":{"name":"ix-migration-date"},"license":"MIT","_id":"@digital-realty/ix-migration-date@1.0.1-IXUAT-11056.550497","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"dist":{"shasum":"8e3b4d1be894d8bffc822196ff2954db738e7993","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1-IXUAT-11056.550497.tgz","fileCount":25,"integrity":"sha512-VLrahn22zOSOqM6qeWO0d4aHziqcDgXLEpG7wgEJDHCmFPizXUm7CG+WPx/OVSpZQ9/R9i3PcROIWFBrrfSL8A==","signatures":[{"sig":"MEUCIQC7XlWUH7xV7Rxzgg14NI+d5tf54QFWwq1UaZdbNPeARAIgSTIyZdwt1g0MFwvBXjk5EdDxVmzG7TV9eqonImqbA6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190227},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"gitHead":"f36d6376d02e58f2fd43a03940afb285c0f2e543","scripts":{"lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","test":"tsc && wtr --coverage","build":"tsc && npm run analyze -- --exclude dist","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","analyze":"cem analyze --litelement","prepare":"husky","prepublish":"tsc && npm run analyze -- --exclude dist","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"prettier":{"arrowParens":"avoid","singleQuote":true},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Webcomponent ix-migration-date following open-wc recommendations","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"lit":"^3.1.4"},"eslintConfig":{"rules":{"no-unused-vars":"off","import/extensions":["error","always",{"ignorePackages":true}],"import/no-unresolved":"off","@typescript-eslint/no-unused-vars":["error"]},"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","tslib":"^2.6.3","eslint":"^9.39.4","prettier":"^3.3.2","typescript":"^5.5.3","lint-staged":"^15.2.7","@types/mocha":"^10.0.7","concurrently":"^8.2.2","@web/dev-server":"^0.4.6","@open-wc/testing":"^4.0.0","@web/test-runner":"^0.18.2","@open-wc/eslint-config":"^12.0.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.58.2","@typescript-eslint/eslint-plugin":"^8.58.2","@custom-elements-manifest/analyzer":"^0.10.3"},"_npmOperationalInternal":{"tmp":"tmp/ix-migration-date_1.0.1-IXUAT-11056.550497_1786117790272_0.4510685146347757","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-IXUAT-11056.551063":{"name":"@digital-realty/ix-migration-date","version":"1.0.1-IXUAT-11056.551063","author":{"name":"ix-migration-date"},"license":"MIT","_id":"@digital-realty/ix-migration-date@1.0.1-IXUAT-11056.551063","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"dist":{"shasum":"9240b3e8f8f6ed47ce1e892a61a659c901d57c40","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1-IXUAT-11056.551063.tgz","fileCount":25,"integrity":"sha512-VLEsAwGtsduljMzcQwj92InykwpqqeVRaALzcAfljM8hbaiu5vVwD1rnJdU4YLmCBboMz8iVIovvfV4XnCDR8A==","signatures":[{"sig":"MEYCIQCI8PkHCCG/CD7VAGLxOUerD4NZT27ffetybCLmlwwbcgIhAO/aiQsofeSZ1OituJLjy7z7jmrO20IQMtGxzVU6tVkT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190129},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"gitHead":"2777766b158fb3f37599228c9f456cdd22723dec","scripts":{"lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","test":"tsc && wtr --coverage","build":"tsc && npm run analyze -- --exclude dist","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","analyze":"cem analyze --litelement","prepare":"husky","prepublish":"tsc && npm run analyze -- --exclude dist","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"prettier":{"arrowParens":"avoid","singleQuote":true},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Webcomponent ix-migration-date following open-wc recommendations","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"lit":"^3.1.4"},"eslintConfig":{"rules":{"no-unused-vars":"off","import/extensions":["error","always",{"ignorePackages":true}],"import/no-unresolved":"off","@typescript-eslint/no-unused-vars":["error"]},"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","tslib":"^2.6.3","eslint":"^9.39.4","prettier":"^3.3.2","typescript":"^5.5.3","lint-staged":"^15.2.7","@types/mocha":"^10.0.7","concurrently":"^8.2.2","@web/dev-server":"^0.4.6","@open-wc/testing":"^4.0.0","@web/test-runner":"^0.18.2","@open-wc/eslint-config":"^12.0.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.58.2","@typescript-eslint/eslint-plugin":"^8.58.2","@custom-elements-manifest/analyzer":"^0.10.3"},"_npmOperationalInternal":{"tmp":"tmp/ix-migration-date_1.0.1-IXUAT-11056.551063_1786438234346_0.7734765364027503","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-IXUAT-11056.551071":{"name":"@digital-realty/ix-migration-date","version":"1.0.1-IXUAT-11056.551071","author":{"name":"ix-migration-date"},"license":"MIT","_id":"@digital-realty/ix-migration-date@1.0.1-IXUAT-11056.551071","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"dist":{"shasum":"c091e62df12203281fe73ffbfb6cbedf095c34a8","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1-IXUAT-11056.551071.tgz","fileCount":25,"integrity":"sha512-g7oH+wBaip9JtS7Br8nKgByZvdf0sX+IhhkfCIVn5p1gl4L1iQRKklHfAw0QYsQN1Umia7Dx9qqTJqzrscpCbw==","signatures":[{"sig":"MEYCIQDYog+BSg/r/RRIehOwH7sXx5rVQucClDCZD0gFLLWxvQIhAOmY98uW0mvw/jRpg0g28OQZvEfMHS9tXtwD/rkJSUb0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190227},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"gitHead":"c0c1bc966ddd72dfd4b7f96339b97e6aebc94984","scripts":{"lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","test":"tsc && wtr --coverage","build":"tsc && npm run analyze -- --exclude dist","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","analyze":"cem analyze --litelement","prepare":"husky","prepublish":"tsc && npm run analyze -- --exclude dist","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"prettier":{"arrowParens":"avoid","singleQuote":true},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Webcomponent ix-migration-date following open-wc recommendations","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"lit":"^3.1.4"},"eslintConfig":{"rules":{"no-unused-vars":"off","import/extensions":["error","always",{"ignorePackages":true}],"import/no-unresolved":"off","@typescript-eslint/no-unused-vars":["error"]},"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","tslib":"^2.6.3","eslint":"^9.39.4","prettier":"^3.3.2","typescript":"^5.5.3","lint-staged":"^15.2.7","@types/mocha":"^10.0.7","concurrently":"^8.2.2","@web/dev-server":"^0.4.6","@open-wc/testing":"^4.0.0","@web/test-runner":"^0.18.2","@open-wc/eslint-config":"^12.0.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.58.2","@typescript-eslint/eslint-plugin":"^8.58.2","@custom-elements-manifest/analyzer":"^0.10.3"},"_npmOperationalInternal":{"tmp":"tmp/ix-migration-date_1.0.1-IXUAT-11056.551071_1786439615550_0.26390004487409047","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-IXUAT-11056.551160":{"name":"@digital-realty/ix-migration-date","version":"1.0.1-IXUAT-11056.551160","author":{"name":"ix-migration-date"},"license":"MIT","_id":"@digital-realty/ix-migration-date@1.0.1-IXUAT-11056.551160","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"dist":{"shasum":"cb64c33e0a54b942aa03c805fa7cd5639848c2c9","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1-IXUAT-11056.551160.tgz","fileCount":25,"integrity":"sha512-Vr9i6zmC6ml1pYNnj0sci/2hAEn3uPmd+Lci31KFUy6RUSdtEhCnoo78FnZwmS6Jwo/QmjAH8DfRukjkKFc2yQ==","signatures":[{"sig":"MEUCIEO9vjajmrj3a2T9/KvIB9CQtY50bOQak6Hxi6CL4NrqAiEA2bxVyYzWaJxThFCUoqH1Hgy0dkcKwI9bZQZ/v928aOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190227},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"gitHead":"5856b6414d510c7659816a2f4e78a191e786b2e2","scripts":{"lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","test":"tsc && wtr --coverage","build":"tsc && npm run analyze -- --exclude dist","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","analyze":"cem analyze --litelement","prepare":"husky","prepublish":"tsc && npm run analyze -- --exclude dist","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"prettier":{"arrowParens":"avoid","singleQuote":true},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Webcomponent ix-migration-date following open-wc recommendations","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"lit":"^3.1.4"},"eslintConfig":{"rules":{"no-unused-vars":"off","import/extensions":["error","always",{"ignorePackages":true}],"import/no-unresolved":"off","@typescript-eslint/no-unused-vars":["error"]},"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","tslib":"^2.6.3","eslint":"^9.39.4","prettier":"^3.3.2","typescript":"^5.5.3","lint-staged":"^15.2.7","@types/mocha":"^10.0.7","concurrently":"^8.2.2","@web/dev-server":"^0.4.6","@open-wc/testing":"^4.0.0","@web/test-runner":"^0.18.2","@open-wc/eslint-config":"^12.0.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.58.2","@typescript-eslint/eslint-plugin":"^8.58.2","@custom-elements-manifest/analyzer":"^0.10.3"},"_npmOperationalInternal":{"tmp":"tmp/ix-migration-date_1.0.1-IXUAT-11056.551160_1786462817552_0.8358405982508406","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-IXUAT-11056.551193":{"name":"@digital-realty/ix-migration-date","version":"1.0.1-IXUAT-11056.551193","author":{"name":"ix-migration-date"},"license":"MIT","_id":"@digital-realty/ix-migration-date@1.0.1-IXUAT-11056.551193","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"dist":{"shasum":"a4c6cc7d3961382872379c4a515a5e843214bc90","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1-IXUAT-11056.551193.tgz","fileCount":25,"integrity":"sha512-iFpG3vogPL2O0O3IiFD/iJcr3rYhtTZVM3BZli7oVw9whE/nYcJSDkZZ2IF98k6AVvZol2O9sYITbJOHC4/SnQ==","signatures":[{"sig":"MEYCIQDVieE0bSsSTtYTYkuBw8Ye1mnGS4C7TtipuI32gfQAHwIhAIJhfnP6ClkRtBWsOSV8Rr3g9mI1hegUlbr/AxxLtZj0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190227},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"gitHead":"b36bf63b1303d0b7ae7cae68b8ff1d1f67f2161d","scripts":{"lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","test":"tsc && wtr --coverage","build":"tsc && npm run analyze -- --exclude dist","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","analyze":"cem analyze --litelement","prepare":"husky","prepublish":"tsc && npm run analyze -- --exclude dist","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"prettier":{"arrowParens":"avoid","singleQuote":true},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Webcomponent ix-migration-date following open-wc recommendations","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"lit":"^3.1.4"},"eslintConfig":{"rules":{"no-unused-vars":"off","import/extensions":["error","always",{"ignorePackages":true}],"import/no-unresolved":"off","@typescript-eslint/no-unused-vars":["error"]},"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","tslib":"^2.6.3","eslint":"^9.39.4","prettier":"^3.3.2","typescript":"^5.5.3","lint-staged":"^15.2.7","@types/mocha":"^10.0.7","concurrently":"^8.2.2","@web/dev-server":"^0.4.6","@open-wc/testing":"^4.0.0","@web/test-runner":"^0.18.2","@open-wc/eslint-config":"^12.0.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.58.2","@typescript-eslint/eslint-plugin":"^8.58.2","@custom-elements-manifest/analyzer":"^0.10.3"},"_npmOperationalInternal":{"tmp":"tmp/ix-migration-date_1.0.1-IXUAT-11056.551193_1786466493672_0.5756026481716201","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@digital-realty/ix-migration-date","description":"Webcomponent ix-migration-date following open-wc recommendations","license":"MIT","author":{"name":"ix-migration-date"},"version":"1.0.1","type":"module","main":"dist/src/index.js","module":"dist/src/index.js","exports":{".":"./dist/src/index.js","./ix-migration-date.js":"./dist/src/ix-migration-date.js"},"publishConfig":{"access":"public"},"scripts":{"analyze":"cem analyze --litelement","start":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"","build":"tsc && npm run analyze -- --exclude dist","prepublish":"tsc && npm run analyze -- --exclude dist","lint":"eslint --ext .ts,.html . && prettier \"**/*.ts\" --check --ignore-path .gitignore","format":"eslint --ext .ts,.html . --fix && prettier \"**/*.ts\" --write --ignore-path .gitignore","prepare":"husky","test":"tsc && wtr --coverage","test:watch":"tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""},"dependencies":{"lit":"^3.1.4"},"devDependencies":{"@custom-elements-manifest/analyzer":"^0.10.3","@open-wc/eslint-config":"^12.0.3","@open-wc/testing":"^4.0.0","@types/mocha":"^10.0.7","@typescript-eslint/eslint-plugin":"^8.58.2","@typescript-eslint/parser":"^8.58.2","@web/dev-server":"^0.4.6","@web/test-runner":"^0.18.2","concurrently":"^8.2.2","eslint":"^9.39.4","eslint-config-prettier":"^9.1.0","husky":"^9.0.11","lint-staged":"^15.2.7","prettier":"^3.3.2","tslib":"^2.6.3","typescript":"^5.5.3"},"customElements":"custom-elements.json","eslintConfig":{"parser":"@typescript-eslint/parser","extends":["@open-wc","prettier"],"plugins":["@typescript-eslint"],"rules":{"no-unused-vars":"off","@typescript-eslint/no-unused-vars":["error"],"import/no-unresolved":"off","import/extensions":["error","always",{"ignorePackages":true}]}},"prettier":{"singleQuote":true,"arrowParens":"avoid"},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"gitHead":"f62a14f71f253f20e9a93c2cb72f69a7196e804f","types":"./dist/src/index.d.ts","_id":"@digital-realty/ix-migration-date@1.0.1","_nodeVersion":"24.18.0","_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","dist":{"integrity":"sha512-BJwoXLn5bTosy6CPkFbWB+1Cf68SnLocZHEE9EUppGviewh58MCGJC7FdQsnDJCNl+xgO4gO5vQsC04d723Rwg==","shasum":"d1e21fe6a9227fb0c6d11fe47558c6bc6398f637","tarball":"https://registry.npmjs.org/@digital-realty/ix-migration-date/-/ix-migration-date-1.0.1.tgz","fileCount":25,"unpackedSize":190208,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEWo62BcDXDc2SQlXVMRjhwDoFKPppTchiAlBuiIIvUiAiEAi1I/26AnxNRvKP5daTJnkX2shXi5N2O5grofP2jy+Fw="}]},"_npmUser":{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},"directories":{},"maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ix-migration-date_1.0.1_1786523450572_0.7393280333309111"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-07T14:30:43.653Z","modified":"2026-08-12T08:30:50.969Z","1.0.1-IXUAT-11056.550476":"2026-08-07T14:30:43.971Z","1.0.1-IXUAT-11056.550497":"2026-08-07T15:49:50.425Z","1.0.1-IXUAT-11056.551063":"2026-08-11T08:50:34.505Z","1.0.1-IXUAT-11056.551071":"2026-08-11T09:13:35.695Z","1.0.1-IXUAT-11056.551160":"2026-08-11T15:40:17.705Z","1.0.1-IXUAT-11056.551193":"2026-08-11T16:41:33.817Z","1.0.1":"2026-08-12T08:30:50.728Z"},"author":{"name":"ix-migration-date"},"license":"MIT","description":"Webcomponent ix-migration-date following open-wc recommendations","maintainers":[{"name":"dlr-pi-devops","email":"svc_pi-devops-noreply@digitalrealty.com"},{"name":"nicholasnewlands","email":"nnewlands@digitalrealty.com"},{"name":"marcha-dlr","email":"marcha@digitalrealty.com"},{"name":"alex-sommerville","email":"asommerville@digitalrealty.com"}],"readme":"# `<ix-migration-date>`\n\nA headless [LitElement](https://lit.dev/) web component that surfaces a\nproactive **AppCues** popup on the legacy portals when the Inventory Site\nConfiguration API reports that the current account is scheduled to be\nmigrated. It renders **no visible DOM** of its own — its only job is to\n(optionally) load the AppCues SDK, identify the user, and trigger the\nmigration Flow at the right time.\n\nThe popup is throttled so a given user only sees it once per account per\nmigration date per browser session. See\n[Session dedup rules](#session-dedup-rules) for the full behaviour matrix.\n\n---\n\n## Table of contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Attributes](#attributes)\n- [Session dedup rules](#session-dedup-rules)\n- [Storage keys used](#storage-keys-used)\n- [Modes](#modes)\n- [Repository development](#repository-development)\n  - [Prerequisites](#prerequisites)\n  - [Install](#install)\n  - [Build](#build)\n  - [Test](#test)\n  - [Lint & format](#lint--format)\n  - [Local demo](#local-demo)\n  - [Project layout](#project-layout)\n\n---\n\n## Installation\n\n```bash\nnpm install @digital-realty/ix-migration-date\n```\n\n## Usage\n\nImport the element's side-effect module to register the custom element, then\nplace the tag anywhere in your document. Prop values are typically bound to\ndata returned by the Site Configuration API and to your portal's auth state.\n\n```html\n<script type=\"module\">\n  import '@digital-realty/ix-migration-date/ix-migration-date.js';\n</script>\n\n<ix-migration-date\n  proposed-migration-date=\"2026-12-31\"\n  hashed-user-id=\"sha256-of-user-id\"\n  account-id=\"12345\"\n></ix-migration-date>\n```\n\nWhen `proposed-migration-date` is `null`, `undefined`, or an empty string\nthe element does nothing — so it is safe to render unconditionally and just\npipe the raw API value through.\n\n### Example — React / any framework\n\n```jsx\n<ix-migration-date\n  proposed-migration-date={siteConfig?.proposed_migration_date ?? ''}\n  hashed-user-id={hashedUserId}\n  account-id={selectedAccountId}\n/>\n```\n\n### Example — portal already loads AppCues\n\nIf the host portal already loads the AppCues SDK and calls\n`Appcues.identify()` for the current user, set the boolean\n`is-portal-managed-app-cues` attribute so the component skips its own\nscript injection and `identify()` call, and only invokes `Appcues.show()`.\n\n```html\n<ix-migration-date\n  proposed-migration-date=\"2026-12-31\"\n  account-id=\"12345\"\n  is-portal-managed-app-cues\n></ix-migration-date>\n```\n\n## Attributes\n\nAll attributes are optional. Property names use camelCase; attribute names\nuse kebab-case.\n\n| Attribute                     | Property                 | Type      | Default | Description                                                                                                                                                       |\n| ----------------------------- | ------------------------ | --------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `proposed-migration-date`     | `proposedMigrationDate`  | `string`  | `null`  | ISO date returned by the Site Configuration API. `null` / `\"\"` / omitted disables the popup entirely.                                                             |\n| `is-portal-managed-app-cues`  | `isPortalManagedAppCues` | `boolean` | `false` | When `true`, the host portal owns the AppCues SDK lifecycle. The component skips script injection + `identify()` and only calls `show()`.                         |\n| `hashed-user-id`              | `hashedUserId`           | `string`  | `null`  | Pre-hashed identifier passed to `Appcues.identify()`. When omitted the component falls back to (or generates and persists) an anonymous UUID in `localStorage`.   |\n| `account-id`                  | `accountId`              | `string`  | `null`  | Identifier of the account currently selected in the portal. Used as a scoping key for the once-per-session guard. Leave `null` for single-tenant portals.         |\n\nProps can be updated dynamically. The component re-evaluates whether to\nshow the popup whenever any of the four properties above changes, so the\ncommon pattern of streaming values in after the API response resolves works\nwithout any extra plumbing.\n\n## Session dedup rules\n\nThe popup is suppressed / re-triggered based on the tuple\n`(userId, accountId, proposedMigrationDate)`, scoped to a browser session:\n\n| Change during the same browser session         | Popup re-fires? |\n| ---------------------------------------------- | :-------------: |\n| Client-side navigation or full page reload     |       No        |\n| `hashed-user-id` → new value                   |       Yes       |\n| `account-id` → new value                       |       Yes       |\n| `account-id` rolls back to a value already seen this session | No |\n| `proposed-migration-date` → new value          |       Yes       |\n| `proposed-migration-date` rolls back to a value already seen this session | No |\n| `proposed-migration-date` → `null` / `\"\"`      |       No        |\n| Same values re-applied                         |       No        |\n\nA new browser session (i.e. tab close + reopen or session-storage cleared\nexternally) resets everything.\n\n## Storage keys used\n\nThe component owns two storage keys. Both key names are stable but the\ncomposite session-storage key layout is an implementation detail — do not\ndepend on it externally.\n\n| Store            | Key                                                                       | Purpose                                                                                              |\n| ---------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `localStorage`   | `ix-migration-date-user-id`                                                      | Persisted anonymous UUID used as the `Appcues.identify()` user id when no `hashed-user-id` is given. |\n| `sessionStorage` | `ix-migration-date-popup-shown:<userId>\\|<accountId>\\|<migrationDate>` | \"Popup already shown\" flag for the current tuple within this browser session.                        |\n\nIf `localStorage` or `sessionStorage` throws (private mode / sandboxed\niframe) the component degrades gracefully — the popup may fire on both\n`connectedCallback` and the following `updated()` in the degraded mode, but\nit never throws.\n\n## Modes\n\nThe `is-portal-managed-app-cues` attribute controls which side owns the SDK\nlifecycle:\n\n**Component-owned (default, `is-portal-managed-app-cues` omitted)**\n\n1. Injects `<script src=\"//fast.appcues.com/26584.js\" async>` into\n   `<head>` (or attaches to an existing tag if one is already there).\n2. Waits for the script to load.\n3. Calls `Appcues.identify(userId)`.\n4. Calls `Appcues.show(flowId)`.\n\n**Portal-managed (`is-portal-managed-app-cues` present)**\n\n1. Assumes `window.Appcues` is available and the portal has already called\n   `Appcues.identify()` for the current user.\n2. Calls `Appcues.show(flowId)`.\n\nIn both modes, failure to load the SDK or reach AppCues is swallowed — the\npopup is a nice-to-have, not a hard requirement of the host portal.\n\n---\n\n## Repository development\n\nThis package is one of many in the `lib-components` monorepo. The commands\nbelow are the ones that ship in this package's own `package.json`; they can\nbe run standalone from this directory or via the monorepo's workspace\ntooling.\n\n### Prerequisites\n\n- Node.js 18+\n- npm (or the monorepo's package manager, e.g. `pnpm`)\n- Chromium/Chrome (for `@web/test-runner`) — puppeteer's bundled build is\n  used automatically inside the workspace, or set `CHROME_PATH` to point at\n  a local install\n\n### Install\n\n```bash\nnpm install\n```\n\n### Build\n\nType-check and emit ES modules + `.d.ts` files to `dist/`, then regenerate\nthe `custom-elements.json` manifest via `@custom-elements-manifest/analyzer`:\n\n```bash\nnpm run build\n```\n\nIndividual sub-tasks:\n\n```bash\nnpm run analyze    # regenerate custom-elements.json only\n```\n\n### Test\n\nTests are written with [`@open-wc/testing`](https://open-wc.org/docs/testing/testing-package/)\nand executed in a real browser by [`@web/test-runner`](https://modern-web.dev/docs/test-runner/overview/).\n\n```bash\nnpm test           # one-shot run with coverage\nnpm run test:watch # watch mode\n```\n\nCoverage is written to `coverage/` (LCOV + HTML report).\n\n### Lint & format\n\n```bash\nnpm run lint     # ESLint + Prettier check\nnpm run format   # ESLint --fix + Prettier --write\n```\n\nPre-commit hooks (via Husky + lint-staged) run the same checks on staged\nfiles.\n\n### Local demo\n\n`demo/index.html` mounts the component with sample attributes and wraps\n`window.Appcues` so the real SDK's `identify()` and `show()` calls are\nmirrored to an on-page log for debugging.\n\n```bash\nnpm start\n```\n\n`web-dev-server` opens the demo at `http://localhost:8000/demo/`. The\n**Reset session & local storage** button clears the component's storage\nkeys and reloads so the popup re-triggers cleanly.\n\n### Project layout\n\n```\n.\n├── demo/\n│   └── index.html              # Runnable demo, real SDK, on-page log\n├── src/\n│   ├── IxMigrationDate.ts   # The class\n│   ├── ix-migration-date.ts # customElements.define(...) side-effect\n│   └── index.ts                # Public entry point\n├── test/\n│   └── ix-migration-date.test.ts\n├── dist/                       # Build output (git-ignored)\n├── custom-elements.json        # Manifest (regenerated by `npm run analyze`)\n├── web-dev-server.config.js\n├── web-test-runner.config.js\n└── package.json\n```\n","readmeFilename":"README.md"}