{"_id":"@bobfrankston/gcards","_rev":"46-4395a86cfb85ea21d0d169dafaaaded7","name":"@bobfrankston/gcards","dist-tags":{"latest":"0.1.46"},"versions":{"0.1.0":{"name":"@bobfrankston/gcards","version":"0.1.0","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.0","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gcards":"gcards.ts"},"dist":{"shasum":"7524cf612982c1959669a07fb96b122d325277d4","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.0.tgz","fileCount":10,"integrity":"sha512-2YYG3SJN3+quTI+KgtrkkR0xtfCaOl/FZJyk4gSO+oeOnU9uJkmGdkxQhocbFnBmFGobcp//6fQXwTViDUoqag==","signatures":[{"sig":"MEYCIQDIGpWUAOnf5IQBsCEL6+GNEJ0lOLUOSn38UpHb3yvuwAIhAJCTu2JTiLJgXIiXw33hNcavyrjH8q5dVL0WP0zIm4JF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35172},"main":"gcards.ts","type":"module","gitHead":"dbceef169c8131967151990abe3ba62b09112a98","scripts":{"check":"tsc --noEmit","release":"npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.0_1765238014157_0.8525774371496295","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bobfrankston/gcards","version":"0.1.2","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.2","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gcards":"gcards.ts"},"dist":{"shasum":"991da42ecc474eff21d87461d5c4af12c282ae30","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.2.tgz","fileCount":10,"integrity":"sha512-/gdTZQxwBWwXnAC0UCbzWSKHOXjReAqZZRTNOaZ+gYMzwiYmew1kimq31yJIPAUfuQRNzlA1OHSFBWmh3ICO8Q==","signatures":[{"sig":"MEUCIQDdattXWAdMIkbGfPCCmADQ1dfHhMvWlnWJDgNkjHjsJQIgeyYydSnpPisdKCp/PrhLqez9cyM1LeU2ZceMgMdL0rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35365},"main":"gcards.ts","type":"module","gitHead":"5fe23ebd35bee3b0616f79517a830567018327cc","scripts":{"check":"tsc --noEmit","release":"npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.2_1765239990467_0.4919343442555515","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bobfrankston/gcards","version":"0.1.4","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.4","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"ec593f88840564aed0a21816917a717821cfbc96","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.4.tgz","fileCount":15,"integrity":"sha512-UmtumOylcBiE0yRP0AzlG0TEFfV1Fpn6cESIrWKMiuAtXXbYIXVnpzGfszElO4Ddami/8hLok3gCRhEGh8x4tg==","signatures":[{"sig":"MEQCIDGnaqxnmTCrULz3G39emquUhY3VXJ+waxiPa+O+tAHUAiAV7K6j3Rso96gFoApEcv1E+lXtHEWCwaiFzbvLF3X+1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130035},"main":"gcards.ts","type":"module","gitHead":"8836427665d608f3e6387bc8b137b4a8895bf926","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.4_1765378937782_0.08615971950672718","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@bobfrankston/gcards","version":"0.1.5","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.5","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"55af2bc6deff18d9d99b2d0ccdc297910d23f7ce","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.5.tgz","fileCount":15,"integrity":"sha512-z9vNkC90X1JtW991wLn8Dmx8UstDncvjHwaqbsQpiTTH0JYKTX0fUh/lcSqPJDfWp8bidyxlJBUiDpwjoS5cVQ==","signatures":[{"sig":"MEUCIDNcuUhNs21W9+70EcAly38zeXqfgdhk5Qx8pkx3L9ZuAiEAvFh2+u2O/aDXDqlGtLsFXSuLtuOTSOm7750O3C2Q/J4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147005},"main":"gcards.ts","type":"module","gitHead":"ca00037969b743cca999e4ebe887adc24a8c7a15","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.5_1765417866452_0.7321788081136875","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@bobfrankston/gcards","version":"0.1.6","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.6","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"6c31dfdf0f037759f9471a73667f9348dddefe43","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.6.tgz","fileCount":15,"integrity":"sha512-P4r9I7sbMPjsziLWgMBHYxR9ncj9yPzunXq5sYl6XzO4SWu4XYO5nBD+NJKOgMFoRkLowAqq1oUe4sHW6TeV+A==","signatures":[{"sig":"MEUCICRt65PAP21tsEHc0oa+tQEH2clrCXY58IlcBXTGaWnZAiEAvWCnOP0IaZDCGTb21yg5bLLC0Hc7/r40ZzqItVPbCWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161128},"main":"gcards.ts","type":"module","gitHead":"5e633555e8b0a92838f3de52a0ac6fc1ed1676e7","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.6_1765430447113_0.39370989256874833","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@bobfrankston/gcards","version":"0.1.7","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.7","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"5a89619469eb668e431c427960a1a457147a4dd7","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.7.tgz","fileCount":15,"integrity":"sha512-0WX9CNu0DmSmHxJE4e4l7zhQzIyqAYbLZwwMGwfxopUIZ7Z3UQwqH5q4/oa3i7DTeJNTWs9MvY7aZB6G9LCl8A==","signatures":[{"sig":"MEYCIQCqh7lHjU6i06czRbATVTrX8lV8tsYsaLgF92Jg+OUNNAIhANsKtXInMspJ3GebunfRP1/QoNrHVREs6hcmcLUEhwU5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161584},"main":"gcards.ts","type":"module","gitHead":"d2dbfe6dde1a07cf08e58eea8cf0606f8085fc21","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.7_1765484994135_0.07498058009161301","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@bobfrankston/gcards","version":"0.1.8","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.8","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"4579b620aa75217ed4adc6077ce41603d2095914","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.8.tgz","fileCount":15,"integrity":"sha512-o0OOdLOH1E0TxfIqnv9VKeKGMGNq2L5DadrJARhvTeNByYlDmrbYFcdLM18gNb34yhwzG5FsjYcqCPB4JVwJtg==","signatures":[{"sig":"MEUCIQC9Z7YUBLPtHRTKUbCTw28YVlZMbkL1rBOzVJAJFZYj3AIgLApzQO5oUlNDit4+l/IT4GM+mhvLyPVVKF+1P/930LM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161584},"main":"gcards.ts","type":"module","gitHead":"4e3dce1fe6d194c655fc9290d76e820a9c0fbb25","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.8_1765485299423_0.21623303465192278","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@bobfrankston/gcards","version":"0.1.9","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.9","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"a832662283324335835dcbf86dc889682d9777bd","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.9.tgz","fileCount":15,"integrity":"sha512-QaDNNtfepujkBj6mFCe29djJA/l5eDrMdlEeD8k0HDB7wFagr737IJZLdkm8nl2vnBlYE2iOIinh7MAOYiaUXQ==","signatures":[{"sig":"MEYCIQD5XPI+4MSE2qBJrCKd7GoflsPtUOwnWr8e5EZk0/J6qwIhAKbk6kABCGlIUmMXVcTbBQlwQNvQ7VQUJw8jLpeCBJUd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162691},"main":"gcards.ts","type":"module","gitHead":"923215ed073555ea557eb8cb9df009a31aa11cc6","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.9_1765488724626_0.6243128878627924","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@bobfrankston/gcards","version":"0.1.10","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.10","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"c20607709ad54a4e290bab2a5a2be1ada74b142f","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.10.tgz","fileCount":15,"integrity":"sha512-zE7Ts6Ns8QNtxwdTCJVCcKfG+5Q7zFsi5l4wUvDzO+VFgzHyyFDjmuA4ZbwzYeAo+Uq1X9d5pInoHA1h6mjm7g==","signatures":[{"sig":"MEYCIQDssS7JzJaADiuuIH417Ogz1pgA4cAs6eAvWsSwkv2oAQIhAN3S8rnfFKks4XcHTq7v5PXZRAXgwh25NLdUaAFjSsXf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162692},"main":"gcards.ts","type":"module","gitHead":"e55c5c21e02dd4e9c95224260da6dfb2135fc41d","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.10_1765489840816_0.7842326487358606","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@bobfrankston/gcards","version":"0.1.11","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.11","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"a4bb7dc9f7c43c193ac6058e1adbcbe7749c4fc2","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.11.tgz","fileCount":16,"integrity":"sha512-DdRlVLSnt6inGNQaXmiR31oQPkiC1O7Iyp++vrDeWO1PXrRJ8D+ZcnwIPLB3585+lLY3j7NPvtL9y683GTPBmg==","signatures":[{"sig":"MEQCIDTlDPLKTImg8Gk8j0nk95RMbD6/eGyW3jlC/PvIbArPAiAaERYTd7VqKvzz78WJiR7XiXOFK+9lNHEywCtUuBLlGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170880},"main":"gcards.ts","type":"module","gitHead":"865d5ed995b597ada4996de4e20ce2d86d085823","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.11_1765492231018_0.41447471236817024","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@bobfrankston/gcards","version":"0.1.12","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.12","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"78427390f9c68d27266246b3c63e72c4ecc5e4d7","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.12.tgz","fileCount":16,"integrity":"sha512-dtD9xS+6CK6e2uJ77+e6OR0CyTxAsxErdvoXaXR4ElJHl3PII8mxz2O5F7u2sVg0e+KXUSQwToiqIA64ka9gxg==","signatures":[{"sig":"MEUCIQDFxisl85ZHiSceGSOFDlpmZHgGopYSCSCS75L5kMa1mwIge3reM0igTTQaEda9U3yCFUjF0M5UPgBIji0b8OGttFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171315},"main":"gcards.ts","type":"module","gitHead":"4dc83852c34b203ea47b8cc1ca36df51e8fe78c3","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.12_1765496777196_0.5502873684150908","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@bobfrankston/gcards","version":"0.1.13","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.13","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"6f8e9e538f0fd4273a6fe2842a154a0630a6c167","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.13.tgz","fileCount":16,"integrity":"sha512-KRNav0VHAJu8Spy3VUBqojEiJTx3qhyDy/ajA898hGfnKdYx6YzEbycSYQ3opfZfrVz+QCA8f9//HmXlocMyuA==","signatures":[{"sig":"MEUCIQCFHI6FwZLld9o6HouQ132LUfncaUbu7r/pt/87zMwhoAIgaSssVILm6CJ3wyMNEjtE9mZp78Agt2z8dDb79J2vmmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173635},"main":"gcards.ts","type":"module","gitHead":"dc93e4fe77b2f8a837ec29693286a9ef75c78e6b","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.13_1765509136174_0.9143793143369481","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@bobfrankston/gcards","version":"0.1.14","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.14","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"da0874807b7f956ab4127f6f1aa46cc962997dad","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.14.tgz","fileCount":16,"integrity":"sha512-QtcPzSQ8W2Gci/O4O5MeDrplBTR/O1d+tERgAR8y9tXy1fDCXHXxAhlT442V23a/XfoXu4FKcmWgbGHlyPOTMw==","signatures":[{"sig":"MEYCIQDXYccrYiyL6qj5mLRmEr3sMSDDAgkwfixMsyccwSDWwwIhANBt7jzQQrT5EdycWuU9L29QoQ+42DNBqdQTPvsYQVZj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174049},"main":"gcards.ts","type":"module","gitHead":"ec3c82a45a14ae2dd7a3ff5034f49db43a08272b","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.14_1765509825563_0.5249282957830104","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@bobfrankston/gcards","version":"0.1.15","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.15","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"e4831b808c8c0ba968aed2301f2b616d34e170ea","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.15.tgz","fileCount":16,"integrity":"sha512-ZCgj9/z48Rk8b31UA/IUXxlhPs2pB8/3Cp+5vPpnXSxI3gSvDqLEg8CMKtuO0RIWNZpg7guxbmW13XTwz1PkVA==","signatures":[{"sig":"MEUCIFihRivaIrniQ+as3c8j0oaTtuXuqDH7Ho0mLTUwbxMkAiEA5NoJbu6VEsqSid3O4INweTHgCEhUJZwSUKYLIvbDdCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177325},"main":"gcards.ts","type":"module","gitHead":"784cd4c370d9ea4a24b1aae8d8a8bc546568dcbc","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.15_1765510886743_0.46537861396125946","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@bobfrankston/gcards","version":"0.1.16","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.16","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"28612c0d3c17e883edf7b307e43effc405ebffb1","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.16.tgz","fileCount":16,"integrity":"sha512-+hxztOFGfHV2QOZUAQ3gvShRTQbG+plQKc2CyhPlNdKJq4VC/gVdn2h3daY8/gfQVFJAb8Y2Na384a3mdHHLZg==","signatures":[{"sig":"MEUCIQCDEcUw3ZiwJ/9clfUWd03IkeZguRsfWsnm8SVW1qU7DwIgfzOPAKO12OK55mtV2QlB3tWytsOosHddkrl/NMp62yE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180499},"main":"gcards.ts","type":"module","gitHead":"1a6f615c6ff87e5b6f6129d8661c4586fbea9558","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.16_1765515601872_0.8033123864041798","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@bobfrankston/gcards","version":"0.1.17","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.17","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"e6e018c639f806686939dabee3791f3c419f88bc","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.17.tgz","fileCount":16,"integrity":"sha512-+i4rZZO+yjsFo2+6szsSsTxXoC+blNzEBibLbznICEvt5+qWP2MLPgS5fRDWfPI/T9VC3hyY0eR+BzLpzgBoAQ==","signatures":[{"sig":"MEYCIQD0BO04w8TYw5osxa8FkeKB83sIFPy9vTotE4x87HfPfgIhALxwkphrx/SCtJH/zCzUVsj4DXRRzAqELrY3uuIoK4XD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192069},"main":"gcards.ts","type":"module","gitHead":"924fb27d5a243bf0395392e62d809342c1ef97a9","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.17_1765517355279_0.7744508152566745","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@bobfrankston/gcards","version":"0.1.18","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.18","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"7e8eb93e4dcedd192c7659b28687065fd3e874f9","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.18.tgz","fileCount":16,"integrity":"sha512-p4Tt23MdI0GMvEQTIU021tr3+avsEpA80zJajQ78zrRNgpZw76aN/r4HtS16ArkLZrJJdUACRHRc6jT9fsmfZg==","signatures":[{"sig":"MEQCIDgQnLhEs2ISQHoXO58aTKUloDFzAfBgwX7cTulP3NVqAiBEuuUECq1naaJjiVXijbXIkl/gPkqTYgReIkQxNxs9HQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197372},"main":"gcards.ts","type":"module","gitHead":"d70b177871fd1a453ac69b7c201a31f602f86f5c","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.6.4","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.18_1765551424711_0.06620606142615482","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@bobfrankston/gcards","version":"0.1.19","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.19","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"9615e090a02da1bae0a75606eac44e6139c381e6","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.19.tgz","fileCount":17,"integrity":"sha512-X0cAI75mJ82wc3qF9DgbLvPSdaPCAHN0Lsxnc8kS3xcWdvgYMwOtNlosfMe/tQdvdCab9rVt+yr18/9JM/rfEA==","signatures":[{"sig":"MEUCIQD0KN97SevWNyHZGjx8phtXQbL/dzZ0UfO4uN1u0o0zggIgTkzMHS+Xcr9Hdhf5+AKZ6GqdV9prWJd5LgGcytOc1oQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198733},"main":"gcards.ts","type":"module","gitHead":"f585e9f3c68726ae43526a6f04bfd5f427a92a1a","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.19_1766328564570_0.9133864986134832","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@bobfrankston/gcards","version":"0.1.20","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.20","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"9b49b0a56ae01c6289d139dc6fb1ad5a8cd226e3","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.20.tgz","fileCount":17,"integrity":"sha512-cTZFw0untALCg6AHnlAsXlXv5u5rrT5HywS1uIhfG0e0RH5l/MDk9ZoAI9Poiq0he9vugb+6i2l941ejVB4r3w==","signatures":[{"sig":"MEYCIQCoOUDb4V+LZCNBXhkvnudo9RozwuFrOGhAQ5nVwFeKbAIhALWCnrJIcTJtd40h7USdYvI0ZqAJITMLpyxRAjgRx1Ri","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199284},"main":"gcards.ts","type":"module","gitHead":"13f7ca35902fb57afd87f8dea568883b912bc95a","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.20_1766330169454_0.6131364604310743","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@bobfrankston/gcards","version":"0.1.21","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.21","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"5e3e6fdd1998e0946e27c6f1fd1f1b94f05f9bec","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.21.tgz","fileCount":17,"integrity":"sha512-xSIKBL8HZnlwL0DfOU4CBOtxCainCgsMD1QeW2+N6BZD7L548UANA+ZkSGV/60Vh7RIH0wdwJIQxV6elQ+XwnA==","signatures":[{"sig":"MEQCICe+yr92L41wqqs50RHDMcHvZWPKX9poRou4uk+OwgcIAiBTqthJoOdBruKO84srpG2hTuCVqpgh5Ezkulkrqgo8Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209280},"main":"gcards.ts","type":"module","gitHead":"7f2570f7ce829f0715a58a95d804b6b628580b3e","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.21_1766452691128_0.11216575908822835","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@bobfrankston/gcards","version":"0.1.22","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.22","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"3b1ef3f4a221dcf520b051339114efe9d397f8ba","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.22.tgz","fileCount":17,"integrity":"sha512-XJtflELDoMCYT0cL/mDYVDKVBhKpod0M7tFWHaCAnrBMpNF6A5aHMScLyUwQyeC3XHv8WftaXcvxqSVcBErOUw==","signatures":[{"sig":"MEUCIFOE7RFqgolNUuFHLYzU4fkjx7Ranr00skq2bNlEXZa7AiEAkOdcttoAMgTGrnoSysEwkBmPrIspGAv6BZEgtZpG2pM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214844},"main":"gcards.ts","type":"module","gitHead":"67d9ccde14a25f7b16ab2f860983e75ba364e7e9","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.22_1766939281517_0.9016543830572461","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@bobfrankston/gcards","version":"0.1.23","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.23","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"7b68fa541fcd7436227f21f51f1b90a99519ce1e","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.23.tgz","fileCount":17,"integrity":"sha512-s9GNyLeLZb4MZEaL5WOFq9l+GMRekHT6j+hYYJMaDvHIYXlyD3JvG3L6mpgOF032zq+OQLlLwq3KSGYrz+IWzA==","signatures":[{"sig":"MEYCIQDFNZAD8gERjUJ8MwmQSBsivmFWLGc1ExVYXXaX9tqQCwIhALoEbtTa/RM0pKlsb2cy+xUQBzGN3NZLi1Bv+uujdeTJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219423},"main":"gcards.ts","type":"module","gitHead":"685d658112446c0b3b4e9d0d1420575f4bf05db5","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.23_1766941834381_0.2755138757228335","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@bobfrankston/gcards","version":"0.1.24","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.24","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"47832ac8d6d045236ae3379a8212c5d788a67ef0","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.24.tgz","fileCount":17,"integrity":"sha512-MOmatMruDNfp4pBPPwsJISxW1fVLG/7pLamSygPZOf6KzZutFTCsE9MOUJj55W4ex5qz2JCsPu68DY34taClLg==","signatures":[{"sig":"MEYCIQCMFPzVRO4fGK/lZytjqRkQ2j4AHQg7aZzSjuh3JBPdrAIhAOKLFX5h1T3v/ux/8il2LBHf3d+TqDdaZuYYNnOoKMJ4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219794},"main":"gcards.ts","type":"module","gitHead":"5fb4e88d7050c43ce65b34a945c892a76b1a4de4","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.24_1766945674372_0.423739559333594","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@bobfrankston/gcards","version":"0.1.25","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.25","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"6a0139b2ae969d025ad1a5236f039880361cfeb4","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.25.tgz","fileCount":17,"integrity":"sha512-KLL7o7Vt6Qs747Q0EYJN5auI96I1U2JV25w6gMLr381lOkc+phecHThHVwobyM6rULYXad1ub4Pr56s43qAXmQ==","signatures":[{"sig":"MEYCIQCkxJW0nlEirRfzGlFVV0I7mRQSQrOqD+3XgKiU5ez5ZQIhAPUWVoHlYUaaKkuTYLGveSk2EJad01rk+uurBtiWXQWj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220941},"main":"gcards.ts","type":"module","gitHead":"37d6aa8e1ad4ca2ad5e389c6b3b32b795211ab3c","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.25_1766946568627_0.6878438032787426","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@bobfrankston/gcards","version":"0.1.26","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.26","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"6bf2bcc93037b2e6e8231ca0ea7708b8f0141b92","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.26.tgz","fileCount":17,"integrity":"sha512-K1R9yXdUqxxEXjQ8Vb5w5oCvAkhwd6321x9Xx+vgpWL65efHZ4/awbgrqpsSwLrVTKxZ6rESlgPsHO95MboVOw==","signatures":[{"sig":"MEQCICQB0K+XbdBVy6P5joCz1HMKG8FpSbUeTzoUZdBqa27TAiAgd4xS32qa+zjZgoqjnbd+3bXIT2tN5pr+KHdDqPy2tA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224141},"main":"gcards.ts","type":"module","gitHead":"a0af358bd0960d59105bc48028c9a47c8aa5d6af","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.26_1766948103897_0.07624452179247898","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@bobfrankston/gcards","version":"0.1.27","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.27","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"36f12d4b87fa84bd0dd118ec31836cf5c8b1ba8a","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.27.tgz","fileCount":17,"integrity":"sha512-IUCSmswxnEQv1AOVh7k2gQnh1TJdXlmJTY5RJioZ57g2+txqrOGcm2GH4CRSfiYGOZ7PTXy8x2tgqlCELC5cUg==","signatures":[{"sig":"MEUCIDYTtgqdn38SpyieEpY8B1Xq9CAQ4asbBtI9rTQTk3mEAiEA7opf8fUFHmEmD4CFAItMTQvJbC3rXI3GuWq50dTjdaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224142},"main":"gcards.ts","type":"module","gitHead":"1a83ba70d877a73b4a74e328383e0cd4d9eae002","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.27_1766948417538_0.09509667844924308","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@bobfrankston/gcards","version":"0.1.28","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.28","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"07301a5ee68cd68135e236ad3e5e220775eb6386","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.28.tgz","fileCount":17,"integrity":"sha512-5+kvtiTdD90mtVD3D8LXGBv+0c0dAV+ecAMbDol0SInic4In2RHJj7MjdmyzDmBMDLyW0b0bqkXNhWilYExpDQ==","signatures":[{"sig":"MEUCIG8+BFsbG3Ow7zs68/Ks1NwR4os/oh0pALXLeZ+KCnI7AiEA6M9hejcVEIFJ4Sz4/Z5SWaZ1MJa1sUPHQls9Mk0yLQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224142},"main":"gcards.ts","type":"module","gitHead":"7025563423db7a6ee40eb8daf37523549ad737c6","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.28_1766949452265_0.08923113312592257","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@bobfrankston/gcards","version":"0.1.29","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.29","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"fe4fdf4a9fe8e45293fab21d858d9de51dc997e5","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.29.tgz","fileCount":17,"integrity":"sha512-t/AybSz8zq6iCLeX5PF48CmmdVqd8LoCwGVnezTx5qw97IBYEu+Ru6VrEM8IfaonultCUUSE1D8ficEvUr9AOg==","signatures":[{"sig":"MEUCIQDFiz9n2TpD1HKmwZf3Wz91rzlG5dP/t8zzdEc1Sy3/5gIgYPseCvUQ8svaN9plSWjzHaFvF86jtmSQCz8KHWRgrlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224142},"main":"gcards.ts","type":"module","gitHead":"def15fad6f2013f4706e64ce78ecd37e55bc60c1","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.29_1766949624448_0.038004595691101484","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@bobfrankston/gcards","version":"0.1.30","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.30","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"08e04fa6f763799f63d59250c0b4a3c419a97584","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.30.tgz","fileCount":17,"integrity":"sha512-rigWIfi2q41dLKzI6xH4NwSKUHUlSWj6d/Z0A4aM0pvoltx6CBFljaG/jR0laUIhFJIsmDrNqdh1WWQ4fo74xw==","signatures":[{"sig":"MEUCIAbFr8KuczXi3gkUYBJ6Mmd2hy8TkjTRCYy44d0U0DyYAiEAlpedX7SbNqfE47LvEvtf418GrZOsGgV+qU/qkn+iegQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229212},"main":"gcards.ts","type":"module","gitHead":"8a2ce4f918cdc94b811881b40dfc83e76eb90418","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.30_1766950234419_0.07115893271517071","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"@bobfrankston/gcards","version":"0.1.31","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.31","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"eaec0eccbed11a9bce85ba1007f16a969e469a84","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.31.tgz","fileCount":17,"integrity":"sha512-GIMU7SgvSimq/yO9+krvtwVInO3NvydbPhrqNnB7IgcOmgeZfNWmLBvLMrqXgbxWTSVbOFpMIFDTzIhzJcVlVA==","signatures":[{"sig":"MEQCIBC8Gd8PBJitZyrn7YxaugpHsp/pvWN0YsJaR5BzgFNMAiBDE7rf7eQEvDdODPCEQfUDGl2fJnh6EV/CVDx7giircQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229716},"main":"gcards.ts","type":"module","gitHead":"808e503994c272907a22e6c913844121741667b2","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.31_1766952985101_0.9885153764390355","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"@bobfrankston/gcards","version":"0.1.32","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.32","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"36dec721894cd16a485eadcf8e9d91cf7ce03c7c","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.32.tgz","fileCount":17,"integrity":"sha512-LGbo46znuCs31EMWR4tneYXVBREoPrGBHLdjGb3HWQvlArZKySFqp0r7a9OEznhK81+8Bk+jpdIxZptdsoHONw==","signatures":[{"sig":"MEYCIQCK2jFUEJ0aNKNsVyKT51nDTNnLeAJMd6cA4fx4HlpdvgIhAOJbxAihD5CgeVsjcIyDEiGZqbwfmyPt/n5J5rLOYdgE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230915},"main":"gcards.ts","type":"module","gitHead":"bc5ac8f0b4132e9e99f70ec9c20b013221d9a874","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.32_1766955731354_0.9011787107778215","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"@bobfrankston/gcards","version":"0.1.33","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.33","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"dd9a905e10b0c618ba2cca6d4a8a3afc9f75bb2c","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.33.tgz","fileCount":17,"integrity":"sha512-dNc+9jJWBs/D0V7pgNo+aqNA+9KqXZqPoZ+iFIIV2AAfZd5WNnppEUQqwZHBamENwbgtu4z1Eaiod2BhFgI3Eg==","signatures":[{"sig":"MEUCIQCvjNyPkVFJ+OTCLb+MCzsI2Dr4ZiQklr7eJddSQRjrQQIgECDN+SEZjfS9+60Mr8Xr2Ge1O7hNYlnLcL11vtyeewE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232511},"main":"gcards.ts","type":"module","gitHead":"d69e32c48abc562c436bdad4706ae18231367e5b","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.33_1766957659122_0.2870667709507293","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"@bobfrankston/gcards","version":"0.1.34","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.34","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"450b9998210a2cd657485a196dfcfbd3cdbbb928","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.34.tgz","fileCount":17,"integrity":"sha512-3bGwgy9FPSnAOCTxnS9xbYbE0OjtBaLs6yhCPVG2jzUj49MSf/nHmCxlJnSxzea0OsVQYxQzASFcqcVJVPD7vg==","signatures":[{"sig":"MEUCIQCtUuKrQZp4GRNCwyoE/ryk0tFL7cqxpWg+sSYGAHXynwIgJsdlEozlj1j/XGrtCqMo3+evmLUnAHghQxrUnVez4dg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232563},"main":"gcards.ts","type":"module","gitHead":"810e5a77655164d73199eb0440d35cceb9038b73","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.34_1766964752987_0.4813265791018404","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"@bobfrankston/gcards","version":"0.1.35","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.35","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"bd489ceebcb7e8b13eff76aec90f517dd91bf370","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.35.tgz","fileCount":17,"integrity":"sha512-/Rx9W17a2fqKNku0vZPyf/MPN0kRUnJsJzYqY8dVuY6Vwre5q6mOORPLLP5SCq6jqiyXMIEO2G3icnBL/nXYDw==","signatures":[{"sig":"MEYCIQCkIf0Myi23E54my/pQNk4AbAI+xfDwj3Caia97kQ9FewIhAIBK4QoAr6U6/vBcg3ZEgoqnmYvIDJrvHdjVoiJ7a4TZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233329},"main":"gcards.ts","type":"module","gitHead":"ab921321b4a53ac6ad242317d3fcda33badfae86","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.0.0","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"file:../../../projects/NodeJS/miscassists"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.35_1767052948121_0.6377816804925751","host":"s3://npm-registry-packages-npm-production"}},"0.1.36":{"name":"@bobfrankston/gcards","version":"0.1.36","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.36","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"79aca08334c71d6e1af53fa156686b423e9b3f9b","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.36.tgz","fileCount":17,"integrity":"sha512-ufJaqxWVAlqgGK5l2J1aJKtEy0TSHZ8u6stsX8JGBqudUNbuDnvRJ4txwpWW2eOWk3ZA/zwhyYbdc6rUVW0LbA==","signatures":[{"sig":"MEYCIQC+qAmKe43bW5Wruvrt+IsDlDFq87w5DKUmUc6dXT38JwIhALg8Yc8h2agGf4NFvptJQ7UKDweEHmB+2V54MIdIrZfA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235474},"main":"gcards.ts","type":"module","gitHead":"b1c75f0e4aea6c3f9f27693760afd09e322e283c","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.2.1","dependencies":{"jsonc-parser":"^3.3.1","@bobfrankston/miscassists":"^1.0.36","@bobfrankston/oauthsupport":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.36_1767923890646_0.316623363713346","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"@bobfrankston/gcards","version":"0.1.37","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.37","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"d30368a49145b0aef751bcfdecd3c8ac46e7e117","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.37.tgz","fileCount":7,"integrity":"sha512-Nj9agUfj1EkdcGi7XzZtVPMyX6XOXC5s1BH0NOEvTRj+8XYdbei/YMoKKqbdhdd/SwZyTa5/V5VrH0/+xzqpIg==","signatures":[{"sig":"MEQCIDlh4nXNoXyS72yyvhgg3AdmkHskOvMzPhFfdZuFDLb0AiAYucehK9X2MXVrM50a1CiS9I/L8Ev77YUiVfgWc3UDjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187629},"main":"gcards.ts","type":"module","_from":"file:bobfrankston-gcards-0.1.37.tgz","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.37.tgz","_integrity":"sha512-Nj9agUfj1EkdcGi7XzZtVPMyX6XOXC5s1BH0NOEvTRj+8XYdbei/YMoKKqbdhdd/SwZyTa5/V5VrH0/+xzqpIg==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.3.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.41","@bobfrankston/oauthsupport":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.37_1769655509651_0.30945026091155925","host":"s3://npm-registry-packages-npm-production"}},"0.1.38":{"name":"@bobfrankston/gcards","version":"0.1.38","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.38","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.ts","gcards":"gcards.ts"},"dist":{"shasum":"c8b6ed2743a2e8d9a76d54d4357449efcf63117d","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.38.tgz","fileCount":7,"integrity":"sha512-iyf+DSqrkoaBDJaoVKf/rjLb6SWwL9rPq7eAi3E8QqwZw99IZXGo+z3oo5914IrRQc5O4X3F1CE5T+ucmZ9EFQ==","signatures":[{"sig":"MEYCIQD6I6I8o9MZxjekXtLFNvx8PZFTyJdy0NOX5DNDobeLPwIhAP/tFndlG9E3ynLzKla41Ts8fc6sb7jjbfvIPQQlqVv7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189213},"main":"gcards.ts","type":"module","_from":"file:bobfrankston-gcards-0.1.38.tgz","scripts":{"check":"tsc --noEmit","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run check && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.38.tgz","_integrity":"sha512-iyf+DSqrkoaBDJaoVKf/rjLb6SWwL9rPq7eAi3E8QqwZw99IZXGo+z3oo5914IrRQc5O4X3F1CE5T+ucmZ9EFQ==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.3.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.41","@bobfrankston/oauthsupport":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.0.9"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.38_1769661318879_0.5946802895931285","host":"s3://npm-registry-packages-npm-production"}},"0.1.39":{"name":"@bobfrankston/gcards","version":"0.1.39","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.39","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcards":"gcards.js"},"dist":{"shasum":"8e3f825bae808facb2f07d83854d6a76f4df9cb0","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.39.tgz","fileCount":21,"integrity":"sha512-bynoyfZ3yZCNJoQ0dgnRpvJxFyAM53M8Aa5Q3M6+9QFeDqG+tUB7Z9OFqMwDlwCpv3HJaQa8AICkmFP2u4zdcQ==","signatures":[{"sig":"MEUCIAeCtOA8QAx9EIAbUZS5NprVOj/Y+cgRD1Hk8t1YLv25AiEAi1u2ktiif2NPh/L3XMOZagWFDgOTPgmfL5+oz6JweFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246851},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.39.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npm run release && npm install -g @bobfrankston/gcards","preversion":"npm run build && git add -A","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.39.tgz","_integrity":"sha512-bynoyfZ3yZCNJoQ0dgnRpvJxFyAM53M8Aa5Q3M6+9QFeDqG+tUB7Z9OFqMwDlwCpv3HJaQa8AICkmFP2u4zdcQ==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.3.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.48","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.39_1771100475804_0.37381259835964187","host":"s3://npm-registry-packages-npm-production"}},"0.1.40":{"name":"@bobfrankston/gcards","version":"0.1.40","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.40","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcards":"gcards.js"},"dist":{"shasum":"79a90f30b73d61157419fe4ae510e21fd6bbd315","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.40.tgz","fileCount":21,"integrity":"sha512-buKq5Ni1dxDE20KQccD0SvNr7b7GIueAJbby9CnQ4d8rohe1qmZU6RYsI6TNd168Updb30dwAzMD72J3yuMZMg==","signatures":[{"sig":"MEUCIQCTC/zq1lN7Mla/dgNiLCKlgWK0aCg0yEw+IHuq19ccUwIgFaaCPvua8zRgE1cSv7aq+fiJxs2PLrqniCHPTS91txA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246927},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.40.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npmglobalize","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npmglobalize --install","preversion":"npm run build && git add -A","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.40.tgz","_integrity":"sha512-buKq5Ni1dxDE20KQccD0SvNr7b7GIueAJbby9CnQ4d8rohe1qmZU6RYsI6TNd168Updb30dwAzMD72J3yuMZMg==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.7.0","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.3.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.48","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.40_1771105282270_0.1345625868335052","host":"s3://npm-registry-packages-npm-production"}},"0.1.41":{"name":"@bobfrankston/gcards","version":"0.1.41","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.41","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcards":"gcards.js"},"dist":{"shasum":"6f8b6bddec7b8eaa25c3e8ade8f278d4464502bd","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.41.tgz","fileCount":20,"integrity":"sha512-L5DANrK87yC2fuQ8Q7U7D1RNl6DZUo6Nv7juWBTihKWMu8pZgGLE8wRXA0wSlkcK1e6Gmf8Z3kKxnb5swznIew==","signatures":[{"sig":"MEQCIFBJiJj5V6KzDtF6uLW+CxUJsWR1hqqcWeRhHJt2OqliAiBtk09I4tqPxtPuAinTDsMmd2n0fk5Rg0kF7nDrs89H5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256311},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.41.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npmglobalize","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npmglobalize --install","preversion":"npm run build && git add -A","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.41.tgz","_integrity":"sha512-L5DANrK87yC2fuQ8Q7U7D1RNl6DZUo6Nv7juWBTihKWMu8pZgGLE8wRXA0wSlkcK1e6Gmf8Z3kKxnb5swznIew==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.11.1","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.8.2","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.50","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.41_1774575269543_0.2584301986662614","host":"s3://npm-registry-packages-npm-production"}},"0.1.42":{"name":"@bobfrankston/gcards","version":"0.1.42","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.42","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcard":"gcard.js","gcards":"gcards.js"},"dist":{"shasum":"80f2e8673340fe840fcfdeef17c640396f99c1e8","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.42.tgz","fileCount":22,"integrity":"sha512-dpZbeahAGYENKQS7EheluMjD/xOebxUPTfik9reLfrWhLuizC1ZDzNR2cRqEfXa3fmgirpHhoynY0ZAaQDgWvA==","signatures":[{"sig":"MEQCIEkczkafY0Gr63wNRypjW8IPsJKRSTl8b5C13xaD6cXTAiBmKejnrUrPbShBcs6A4p909sgE3/f7fj81PKIuqknOzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275402},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.42.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npmglobalize","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npmglobalize --install","preversion":"npm run build && git add -A","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.42.tgz","_integrity":"sha512-dpZbeahAGYENKQS7EheluMjD/xOebxUPTfik9reLfrWhLuizC1ZDzNR2cRqEfXa3fmgirpHhoynY0ZAaQDgWvA==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.12.1","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.9.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.50","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.42_1777228742780_0.29282131489186947","host":"s3://npm-registry-packages-npm-production"}},"0.1.43":{"name":"@bobfrankston/gcards","version":"0.1.43","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.43","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcard":"gcard.js","gcards":"gcards.js"},"dist":{"shasum":"c189b00527ac2594ad2794f4148702e91293b218","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.43.tgz","fileCount":22,"integrity":"sha512-ZkQqIynCUMoSPeX7DDRbSt6FkjZfFDVlNEgFzYrK+3D3aFtFZXO1mqKdAc3N3HdK5VGZSpkVBHr+reuIVLYSqQ==","signatures":[{"sig":"MEYCIQCmFnAWLmaaXOSqTUhLxKniPOVTPCY0E8xGkzdVCD5JOwIhAMB0IWeDbUAP1/c/xu3BNkoSDhwI6MIFhusoj1a+qNZZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276053},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.43.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npmglobalize","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npmglobalize --install","preversion":"npm run build && git add -A","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.43.tgz","_integrity":"sha512-ZkQqIynCUMoSPeX7DDRbSt6FkjZfFDVlNEgFzYrK+3D3aFtFZXO1mqKdAc3N3HdK5VGZSpkVBHr+reuIVLYSqQ==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.12.1","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.9.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.50","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.43_1777316198966_0.2072473372196335","host":"s3://npm-registry-packages-npm-production"}},"0.1.44":{"name":"@bobfrankston/gcards","version":"0.1.44","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.44","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcard":"gcard.js","gcards":"gcards.js"},"dist":{"shasum":"8e75f33a1ae49c0ce0f1b3c538ec2f43eaecc69d","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.44.tgz","fileCount":22,"integrity":"sha512-7byw910pz42mveMUl+tySr5t9Soeom1YYVQQGcJGuvEPbLSQ/1GavVngf7LGozt3I/vngVuJWUee2qX54w3uNQ==","signatures":[{"sig":"MEYCIQC7OxysPjI+V84wGEWNYwvNSk6Qrg7bxwdEmE6IlaMUgwIhAJyasG4Wamf18iC7OKEc0IXGRjz6LjHIFahvWn33u1Pp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275170},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.44.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npmglobalize","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npmglobalize --install","preversion":"npm run build && git add -A","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.44.tgz","_integrity":"sha512-7byw910pz42mveMUl+tySr5t9Soeom1YYVQQGcJGuvEPbLSQ/1GavVngf7LGozt3I/vngVuJWUee2qX54w3uNQ==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.12.1","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"25.9.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.50","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.44_1777319149112_0.7082358370401134","host":"s3://npm-registry-packages-npm-production"}},"0.1.45":{"name":"@bobfrankston/gcards","version":"0.1.45","keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","_id":"@bobfrankston/gcards@0.1.45","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"homepage":"https://github.com/bobfrankston/gcards#readme","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"bin":{"gfix":"gfix.js","gcard":"gcard.js","gcards":"gcards.js"},"dist":{"shasum":"b62160cd953450671bf90950984779802064a79d","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.45.tgz","fileCount":22,"integrity":"sha512-Mvg0os/Bun+3+OzJ2I99QJs2mwqwdPX4yOdcf54an9GCm1+P6sodBwzn4OsXzCdigUdlvaeEl+myV0RH5EGhAA==","signatures":[{"sig":"MEQCIGRbquUzJhXqMnGHVmI9AmtjDiCQth7LL57mppoB+yLpAiBjIdmf4CgxV8KLQ8Gl+j9hH0SuduqgLzIzUm/dd7tEVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289290},"main":"gcards.js","type":"module","_from":"file:bobfrankston-gcards-0.1.45.tgz","types":"./gcards.d.ts","scripts":{"build":"tsc","check":"tsc --noEmit","watch":"tsc -w","release":"npmglobalize","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","installer":"npmglobalize --install","preversion":"npm run build && git add -A","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","postversion":"git push && git push --tags","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")"},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"_resolved":"Y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.45.tgz","_integrity":"sha512-Mvg0os/Bun+3+OzJ2I99QJs2mwqwdPX4yOdcf54an9GCm1+P6sodBwzn4OsXzCdigUdlvaeEl+myV0RH5EGhAA==","repository":{"url":"git+https://github.com/bobfrankston/gcards.git","type":"git"},"_npmVersion":"11.14.1","description":"Google Contacts cleanup and management tool","directories":{},"_nodeVersion":"26.1.0","dependencies":{"jsonc-parser":"^3.3.1","@crosscopy/clipboard":"^0.2.8","@bobfrankston/miscassists":"^1.0.50","@bobfrankston/oauthsupport":"^1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/gcards_0.1.45_1781527548248_0.08164873235559122","host":"s3://npm-registry-packages-npm-production"}},"0.1.46":{"name":"@bobfrankston/gcards","version":"0.1.46","description":"Google Contacts cleanup and management tool","type":"module","main":"api.js","types":"api.d.ts","exports":{".":{"types":"./api.d.ts","import":"./api.js"}},"bin":{"gcards":"gcards.js","gcard":"gcard.js","gfix":"gfix.js"},"repository":{"type":"git","url":"git+https://github.com/bobfrankston/gcards.git"},"scripts":{"build":"tsc","watch":"tsc -w","check":"tsc --noEmit","prerelease:local":"git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")","preversion":"npm run build && git add -A","xrelease":"npm whoami && npm run prerelease:local && npm version patch && npm publish --access public","xinstaller":"npm run release && npm install -g @bobfrankston/gcards","release":"npmglobalize","installer":"npmglobalize --install","postversion":"git push && git push --tags"},"keywords":["google","contacts","cleanup","oauth"],"author":{"name":"Bob Frankston"},"license":"MIT","devDependencies":{"@types/node":"^25.3.0","tsx":"^4.21.0"},"dependencies":{"@bobfrankston/miscassists":"^1.0.50","@bobfrankston/oauthsupport":"^1.0.7","@crosscopy/clipboard":"^0.2.8","jsonc-parser":"^3.3.1"},"publishConfig":{"access":"public"},"_id":"@bobfrankston/gcards@0.1.46","bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"homepage":"https://github.com/bobfrankston/gcards#readme","_integrity":"sha512-J3VZ+jHc3CTUZow8sngSv+vNj9wqvzCotXBMonV1KhyzjHr1lU1LG5YZSAldFEgSZZmLla6Lff6oGz6nrf827g==","_resolved":"Y:\\dev\\utils\\cardx\\gcards\\bobfrankston-gcards-0.1.46.tgz","_from":"file:bobfrankston-gcards-0.1.46.tgz","_nodeVersion":"26.4.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-J3VZ+jHc3CTUZow8sngSv+vNj9wqvzCotXBMonV1KhyzjHr1lU1LG5YZSAldFEgSZZmLla6Lff6oGz6nrf827g==","shasum":"5c47f90ab5ad52a9c2ce990afc5c3fc8b0d3055d","tarball":"https://registry.npmjs.org/@bobfrankston/gcards/-/gcards-0.1.46.tgz","fileCount":28,"unpackedSize":306040,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDtd/hyfjV/1Z9YvF83/nI/dMTpr2WJjfsdNQo0rp55qAIgF5ZI7LF1UATmtC4a96zRZ1kpWUgOR0Dpd9NjAyQAhCE="}]},"_npmUser":{"name":"bobfrankston","email":"npm@bob.ma"},"directories":{},"maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gcards_0.1.46_1783519679060_0.9642451256353033"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-08T23:53:34.156Z","modified":"2026-07-08T14:07:59.307Z","0.1.0":"2025-12-08T23:53:34.315Z","0.1.2":"2025-12-09T00:26:30.602Z","0.1.4":"2025-12-10T15:02:17.947Z","0.1.5":"2025-12-11T01:51:06.590Z","0.1.6":"2025-12-11T05:20:47.276Z","0.1.7":"2025-12-11T20:29:54.272Z","0.1.8":"2025-12-11T20:34:59.580Z","0.1.9":"2025-12-11T21:32:04.816Z","0.1.10":"2025-12-11T21:50:40.995Z","0.1.11":"2025-12-11T22:30:31.178Z","0.1.12":"2025-12-11T23:46:17.341Z","0.1.13":"2025-12-12T03:12:16.317Z","0.1.14":"2025-12-12T03:23:45.699Z","0.1.15":"2025-12-12T03:41:26.901Z","0.1.16":"2025-12-12T05:00:02.034Z","0.1.17":"2025-12-12T05:29:15.462Z","0.1.18":"2025-12-12T14:57:04.853Z","0.1.19":"2025-12-21T14:49:24.727Z","0.1.20":"2025-12-21T15:16:09.607Z","0.1.21":"2025-12-23T01:18:11.325Z","0.1.22":"2025-12-28T16:28:01.659Z","0.1.23":"2025-12-28T17:10:34.523Z","0.1.24":"2025-12-28T18:14:34.542Z","0.1.25":"2025-12-28T18:29:28.794Z","0.1.26":"2025-12-28T18:55:04.071Z","0.1.27":"2025-12-28T19:00:17.676Z","0.1.28":"2025-12-28T19:17:32.426Z","0.1.29":"2025-12-28T19:20:24.613Z","0.1.30":"2025-12-28T19:30:34.566Z","0.1.31":"2025-12-28T20:16:25.252Z","0.1.32":"2025-12-28T21:02:11.520Z","0.1.33":"2025-12-28T21:34:19.274Z","0.1.34":"2025-12-28T23:32:33.135Z","0.1.35":"2025-12-30T00:02:28.278Z","0.1.36":"2026-01-09T01:58:10.825Z","0.1.37":"2026-01-29T02:58:29.787Z","0.1.38":"2026-01-29T04:35:19.069Z","0.1.39":"2026-02-14T20:21:16.024Z","0.1.40":"2026-02-14T21:41:22.418Z","0.1.41":"2026-03-27T01:34:29.682Z","0.1.42":"2026-04-26T18:39:02.917Z","0.1.43":"2026-04-27T18:56:39.167Z","0.1.44":"2026-04-27T19:45:49.271Z","0.1.45":"2026-06-15T12:45:48.403Z","0.1.46":"2026-07-08T14:07:59.202Z"},"bugs":{"url":"https://github.com/bobfrankston/gcards/issues"},"author":{"name":"Bob Frankston"},"license":"MIT","homepage":"https://github.com/bobfrankston/gcards#readme","keywords":["google","contacts","cleanup","oauth"],"repository":{"type":"git","url":"git+https://github.com/bobfrankston/gcards.git"},"description":"Google Contacts cleanup and management tool","maintainers":[{"name":"bobfrankston","email":"npm@bob.ma"}],"readme":"# gcards - Google Contacts Management Tool\n\nA CLI tool for syncing, managing, and cleaning up Google Contacts.\n\n## Installation\n\n```bash\nnpm install -g @bobfrankston/gcards\n```\n\n## Quick Start\n\n```bash\n# First time - specify your Gmail username\ngcards sync --user yourname\n\n# Subsequent runs remember the user\ngcards sync\ngcards push\n```\n\n## Commands\n\n### gcards\n\nMain sync and push operations (Google API):\n\n```bash\ngcards sync [-u user] [-a]    # Download contacts from Google\ngcards push [-u user] [-a]    # Push local changes to Google\ngcards -a                     # Process all users\n```\n\n### gcard\n\nSingle-card operations on the local store (use `gcards`/`gfix` for bulk):\n\n```bash\ngcard label <lastname>           # Print Dymo-style mailing label, copy to clipboard\ngcard label smith -u alice       # Specify user\ngcard label smith -no-clip       # Don't copy to clipboard\n\ngcard add \"Jane Doe, jane@x.com, 617-555-1212\"   # AI-extract text into a new contact\ngcard add -clip                                  # ...read the info from the clipboard\ngcard merge \"Jane Doe, cell 617-555-9999\"        # Merge info into the existing Jane Doe\n```\n\nMatches contacts whose family name contains `<lastname>` (case-insensitive).\nMultiple matches list a numbered menu; pick one.\n\n`add` converts free-form text (or `-clip` clipboard) into a contact via AI\nextraction and creates it live on Google. If a contact with the same name,\nemail, or phone already exists, it asks whether to merge or add anew. `merge`\ndoes the same extraction but merges straight into the existing contact (only\nprompting to disambiguate when several match), creating one if none match. Both\nneed `ANTHROPIC_API_KEY` set for extraction (same key as `gcards add`); add `-y`\nto skip prompts.\n\n### gfix\n\nOne-time cleanup operations (local files only):\n\n```bash\ngfix inspect -u user          # Preview all standard fixes (no changes)\ngfix apply -u user            # Apply all standard fixes\n\ngfix names -u user            # Preview name parsing + dup phone/email removal\ngfix names -u user --apply    # Parse names, remove dup phones/emails, move email/phone-only to _delete/\ngfix problems -u user         # Process edited problems.txt (x=delete, or replace name)\n\ngfix birthday -u user         # Preview birthday extraction\ngfix birthday -u user --apply # Extract to CSV and remove\n\ngfix undup -u user            # Find duplicate contacts -> merger.json\ngfix merge -u user            # Merge duplicates locally (then use gcards push)\n\ngfix export -u source -to target \"pattern\"  # Export contacts to another user\n```\n\n## Library API\n\nOther apps can import the package for contact lookup and mailing-label\nformatting (used by `@bobfrankston/dymo-print` for its `-contact` option):\n\n```typescript\nimport {\n    resolveUser, getAccessToken,       // gcards auth (%APPDATA%\\gcards; no extra consent)\n    searchPeople, matchByName,         // live People API search + name matching\n    buildLabel, pickAddress, formatAddress,   // contact → mailing-label text\n    promptChoice, promptNumber,        // interactive candidate pickers (CLI use)\n    parseVcf,                          // .vcf text → GooglePerson-shaped contacts\n} from \"@bobfrankston/gcards\";\n\nconst user = resolveUser(\"default\");           // last-used gcards profile\nconst token = await getAccessToken(user);\nconst people = await searchPeople(token, \"smith\");\nconst { matches } = matchByName(people, \"smith\");\nconsole.log(buildLabel(matches[0].contact));   // \"Jane Smith\\n123 Main St\\n...\"\n```\n\n`parseVcf` returns the same `GooglePerson` shape, so `buildLabel` and friends\nwork identically on vCard contacts. The CLIs (`gcards`/`gcard`/`gfix`) are\nunchanged; the library surface lives in `api.ts`.\n\n## Google People API Fields\n\n### Identity (Names)\n\n| Field | Read/Write | Description |\n|-------|------------|-------------|\n| `names[].givenName` | Write | First name |\n| `names[].familyName` | Write | Last name |\n| `names[].middleName` | Write | Middle name |\n| `names[].honorificPrefix` | Write | Prefix (Dr., Prof., etc.) |\n| `names[].honorificSuffix` | Write | Suffix (Jr., III, PhD, etc.) |\n| `names[].displayName` | Read-only | Full name (Google generates from above) |\n| `names[].displayNameLastFirst` | Read-only | Sorting form \"Last, First\" (Google generates) |\n| `names[].unstructuredName` | Write | Free-form name when structured fields not available |\n\n### Sorting\n\n| Field | Read/Write | Description |\n|-------|------------|-------------|\n| `fileAses[].value` | Write | Custom sort override (e.g., \"Home Depot\" instead of \"The Home Depot\") |\n\nIf blank, Google sorts by `familyName` automatically.\n\n### Contact Information\n\n| Field | Read/Write | Description |\n|-------|------------|-------------|\n| `emailAddresses[].value` | Write | Email address |\n| `emailAddresses[].type` | Write | Label: home, work, other |\n| `phoneNumbers[].value` | Write | Phone number |\n| `phoneNumbers[].type` | Write | Label: mobile, work, home, main |\n\n### Business\n\n| Field | Read/Write | Description |\n|-------|------------|-------------|\n| `organizations[].name` | Write | Company name |\n| `organizations[].title` | Write | Job title |\n\n### Dates\n\n| Field | Read/Write | Description |\n|-------|------------|-------------|\n| `birthdays[].date.year` | Write | Birth year (optional) |\n| `birthdays[].date.month` | Write | Birth month (1-12) |\n| `birthdays[].date.day` | Write | Birth day (1-31) |\n\n### Management (Required for Updates)\n\n| Field | Read/Write | Description |\n|-------|------------|-------------|\n| `resourceName` | Read-only | Unique contact ID (e.g., `people/c12345`) |\n| `etag` | Read-only | Version key - must match when updating |\n\nThe `etag` prevents conflicts: if Google's version changed since you downloaded, your update will fail. Run `gcards sync` to get the latest version.\n\n## Data Directory\n\n- **Windows**: `%APPDATA%\\gcards\\` (app directory)\n- **Linux/Mac**: `~/.config/gcards/` (app directory)\n- **Development**: `./data/` symlink to app directory's `data/` folder\n\n### Directory Structure\n\n```\ngcards/                   # App directory (%APPDATA%\\gcards or ~/.config/gcards)\n  config.json             # Last user, settings\n  data/                   # User data directory\n    <username>/\n      contacts/           # Active contacts (*.json)\n      deleted/            # Backup of deleted contact files\n      _delete/            # User requests to delete (move files here)\n      _add/               # User requests to add new contacts\n      fix-logs/           # Logs from gfix operations\n      index.json          # Active contact index (hasPhoto, starred flags)\n      deleted.json        # Deleted contacts index\n      notdeleted.json     # Contacts skipped due to photo/starred\n      token.json          # OAuth token (read-only)\n      token-write.json    # OAuth token (read-write)\n      changes.log         # Log from gfix names\n      birthdays.csv       # Extracted birthdays\n      merger.json         # Duplicates to merge (from gfix undup)\n      merged.json         # Processed merges (history)\n```\n\n## Fixes Applied by `gfix inspect/apply`\n\n- Remove leading/trailing dashes, quotes, spaces from name fields\n- Extract repeated honorific prefixes (Dr., Prof.) to `honorificPrefix`\n- Remove duplicate phone numbers (normalized comparison)\n- Remove duplicate email addresses (case-insensitive)\n\n## Name Parsing (`gfix names`)\n\nWhen a contact has a full name in `givenName` but no `familyName`:\n- Parses \"First Middle Last\" into separate fields\n- Handles suffixes like Ph.D., M.D., P.E., Jr., III\n- Updates `displayNameLastFirst` to proper \"Last, First\" format\n- Cleans up `fileAses` entries (strips junk characters)\n- Fixes repeated words (e.g., \"John Smith Smith Smith\" → \"John Smith\")\n- Creates `changes.log` with all modifications\n\nContacts with no real name are moved to `_delete/`:\n- Email-only (no name field)\n- Phone-only (phone number as name)\n- Empty contacts (no name, email, or phone)\n\nRecovery lists saved to `emailonly.json` and `phoneonly.json`.\n\n## Handling Problem Contacts (`gfix problems`)\n\nAfter `gfix names`, ambiguous contacts are saved to `problems.txt`. Edit this file to fix:\n- Add `x` at start of line to mark for deletion\n- Replace the name with corrected \"First Last\" format\n- Leave unchanged to skip\n\nThen run `gfix problems -u user` to apply.\n\n## Workflow\n\n1. **Initial sync**: `gcards sync -u yourname`\n2. **Review fixes**: `gfix inspect -u yourname`\n3. **Apply fixes**: `gfix apply -u yourname`\n4. **Parse names**: `gfix names -u yourname --apply`\n5. **Push to Google**: `gcards push -u yourname`\n\n## Deleting Contacts\n\nThree ways to mark contacts for deletion:\n\n1. **In index.json**: Add `\"_delete\": true` to an entry\n2. **In contact JSON**: Add `\"_delete\": true` to the contact file\n3. **Move to _delete/**: Move the contact file to the `_delete/` folder\n\nThen run `gcards push` to apply deletions.\n\n### Photo/Starred Protection\n\nContacts with photos or starred status are **not deleted** from Google to prevent data loss:\n- Contacts with non-default photos: `_delete` set to `\"photo\"`\n- Starred/favorite contacts: `_delete` set to `\"starred\"`\n\nThese remain in Google and `index.json` with the skip reason. Review `notdeleted.json` after push.\n\n### Backup\n\nAll deleted contact files are moved to `deleted/` folder as backup (not permanently deleted).\nIndex entries move to `deleted.json`.\n\n## Duplicate Contact Merging\n\n1. **Find duplicates**: `gfix undup -u yourname`\n   - Creates `merger.json` with contacts having same name + overlapping email\n2. **Review**: Edit `merger.json`:\n   - Remove entries you don't want to merge\n   - Add `\"_delete\": true` to delete all contacts in a group instead of merging\n3. **Merge locally**: `gfix merge -u yourname`\n   - Updates target contact files with merged data\n   - Marks source contacts with `_delete: true`\n   - Moves processed entries to `merged.json`\n4. **Push to Google**: `gcards push -u yourname`\n5. **Resync**: `gcards sync -u yourname --full`\n\nExample `merger.json`:\n```json\n[\n  { \"name\": \"John Smith\", \"emails\": [\"john@work.com\"], \"resourceNames\": [\"people/c1\", \"people/c2\"] },\n  { \"name\": \"Spam Contact\", \"emails\": [\"spam@x.com\"], \"resourceNames\": [\"people/c3\", \"people/c4\"], \"_delete\": true }\n]\n```\n\n## ESC Key\n\nPress ESC during sync/push to stop safely after the current operation.\n\n## Multiple Users\n\n```bash\n# Process specific user\ngcards sync -u alice\n\n# Process all users\ngcards sync -a\ngcards push -a\n```\n\n## Exporting Contacts Between Users\n\nTransfer contacts from one user's account to another:\n\n```bash\ngfix export -u bob -to alice \"John*\"         # Export contacts matching \"John*\"\ngfix export -u bob -to ali \"*@example.com\"   # Export by email (partial user match)\ngfix export -u bob -to alice c1234567890     # Export specific contact by ID\n```\n\n**Features:**\n- `-u` source user (partial match supported)\n- `-to` target user (partial match - \"ali\" matches \"alice\" if unique)\n- Pattern supports `*` (any chars) and `?` (single char) wildcards\n- Matches on: displayName, givenName, familyName, \"Last, First\", email\n- Searches both `contacts/` and `deleted/` directories\n- Multiple matches prompt for selection: number(s), `*` for all, `q` to quit\n- Creates cleaned file in target's `_add/` as `x<sourceId>.json`\n\nAfter export, run `gcards push -u <target>` to upload.\n\n## Setup\n\nNo setup is required for normal use — Google OAuth client credentials are bundled with the package. On first run, gcards opens a browser so you can grant access to your own Google contacts; the resulting access token is stored locally under your user data directory.\n\n### AI Error Explanations (Optional)\n\nWhen API errors occur, gcards can use AI to explain what went wrong and suggest fixes.\n\n1. Create `keys.env` in your gcards app directory:\n   - **Windows**: `%APPDATA%\\gcards\\keys.env`\n   - **Linux/Mac**: `~/.config/gcards/keys.env`\n\n2. Add your API key(s):\n   ```\n   ANTHROPIC_API_KEY=sk-ant-api03-...\n   ```\n   or\n   ```\n   OPENAI_API_KEY=sk-...\n   ```\n\n**Get API keys:**\n- Anthropic: https://console.anthropic.com/settings/keys\n- OpenAI: https://platform.openai.com/api-keys\n\nThe tool tries Anthropic first, then falls back to OpenAI if available.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}