{"_id":"@axyl-tcb/middleware","_rev":"14-c2d714deafe548ce35dc98f33d8c6040","name":"@axyl-tcb/middleware","dist-tags":{"latest":"4.2.1"},"versions":{"1.0.10":{"name":"@axyl-tcb/middleware","version":"1.0.10","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@1.0.10","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"f53d14e28f3e68fb3b7e03776d7a719b2a5273e8","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-1.0.10.tgz","fileCount":46,"integrity":"sha512-tb+IPye69LeGXoLdeC2Or8SkwnIi0TKXUUG3lZ6DQMhbh7l7zndV1Hja9D2q8kZ9JW4i9DG4aSZ5CmA0Ej68qA==","signatures":[{"sig":"MEUCIQDHpImMOBoS/pNwGQCIbtkj1zNhUwaoeXGhFj/kQ6QhZQIgLql6HX6T3LH5bJ0Jr4yBHEcBOlb1JkB7yVFeWmAoWX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39772},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"7906eb2784ba9715cfa1848cab6108bef4f9da65","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.0.10_1780306063439_0.3156473597786775","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@axyl-tcb/middleware","version":"1.1.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@1.1.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"854c8a7770c1c4519e16f87971ad4391a27b22bf","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-1.1.0.tgz","fileCount":54,"integrity":"sha512-I+PFewI2iGMmTQtoChSzLF3mtnD1sCfPr0j/HE310eKad6d1dLd94vtOwJt1Wfj1MDnM4q33WGEpilqx2n17Dw==","signatures":[{"sig":"MEQCIHMb6R1RJXc00w6XfoWxdEfLlm59jVpJQRXgl4F7UCELAiAXteqW/6kwq8AhzqijlM4Z/sbVJvGTwFsUBBmgRGczJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46392},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"416276cd3f0b09beb99fa73f46552c618add4dfd","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.1.0_1781598490498_0.27904593079977813","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@axyl-tcb/middleware","version":"1.2.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@1.2.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"5725d1d4e3808aece0f9614bfa58baecca124c17","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-1.2.0.tgz","fileCount":66,"integrity":"sha512-p7kIrlqTIbCajudRZxCg4/gT/8ZXhMJ0z2ki+4qeKRDO1i1G/SVZp/k8QUy19fnnoBfh/0+xFOnllES7TJukKg==","signatures":[{"sig":"MEUCIQCWJTwblCKZCU1azQYV3jnODa4x459CHTdY8wwxg12nSgIgBelt5wbo2oGmYLPoeHo6AmGRpxWKXUSQ2MFvQo6FEvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79470},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"ca657dd62dddf1d138d74c2612d0323d07a74b07","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"peerDependencies":{"mysql2":"^3.22.3","@cloudbase/node-sdk":"^3.18.1"},"peerDependenciesMeta":{"mysql2":{"optional":true},"@cloudbase/node-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.2.0_1781667742434_0.6848683782949692","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@axyl-tcb/middleware","version":"1.2.1","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@1.2.1","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"a19bcd893a5133f3adc6f58b8692f736c9ffa44f","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-1.2.1.tgz","fileCount":66,"integrity":"sha512-VDiLEHlD0PHsO2v26InfYJGC3CkULbYXtLzsLxSGzvKbPv9ATbD8vSEE50Bek+aI5/P9vI6gco9oozd408h+Bg==","signatures":[{"sig":"MEYCIQD3tONSafWuEAHWt9dJos4yNqkxGz8XLVRmuzZ+uV1nKAIhAMbTvHbdS9AtoWgyHUaV3N48TQblkWAsUYzzJoXqpj+C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79581},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"0e2725a3eafdcb71c4bb0dc3731902852065cc8c","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.2.1_1781672283196_0.7740080449511633","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@axyl-tcb/middleware","version":"1.2.2","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@1.2.2","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"aa1c50725f010d79c2393984475379bb0583fd53","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-1.2.2.tgz","fileCount":62,"integrity":"sha512-cqN/5FT7bm9ZJ3YxzViavpYq9Pk8B30HmfVJkGbLDDBOICFKyT7L5Hjc0L6nP0sX5aiA7+Cn0oq0yfjKCPUyFw==","signatures":[{"sig":"MEUCIASPbM6Ol4AZsRRbM6zezqZPsw0YDidNojs7966hwje9AiEAsx19ENAB90u0eWFwuz7bfhlNlOYSLYEbIDHnfxGXkUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77326},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"f0197a5ee8de82f5c2c29c5bb2322da902a9bc6a","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.2.2_1781753964876_0.9598724859168399","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@axyl-tcb/middleware","version":"1.3.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@1.3.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"bb43179a36410b94a988af5e0da3318f9e6f34d3","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-1.3.0.tgz","fileCount":62,"integrity":"sha512-KAKkDWh5qCZXthK4F2vB1vVh43b96oFC4n3uTjoy6Nm64bZvTaurm0lA8JIqmCrgRXjrKKQXV1RhAiB3z8f84g==","signatures":[{"sig":"MEUCIAsDHItw9pT+ErPtUeaITyXUMCgo/4klvii2Vr7i9dYoAiEAletqCirm54ibR/ukpm7I+xnZYLit1FoAbS8kZwFESjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79081},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"0d43297d76340bd1a6d17fd0cfd91d9ca8d73d67","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.3.0_1781758367482_0.5292245301967267","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@axyl-tcb/middleware","version":"2.0.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@2.0.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"aec6e0c57e7128530875f911e3619c85018b907c","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-2.0.0.tgz","fileCount":62,"integrity":"sha512-UmGBdu/aZiFpnhYA8QEyN4E2MaWMDmfR+9quWxmfu928jruQp5Blps3mbn9MK3emR32oRCL3t0WLKL8ZBVvuvQ==","signatures":[{"sig":"MEUCIEnmIrJ2u1yBbNzLv9yintjy7GOxUK1+PyopZ8OkbZAJAiEAlmPyKiC/cS1+mnNC4QprURRNPsYU4WsuQhjSMmx9msE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78129},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"0d43297d76340bd1a6d17fd0cfd91d9ca8d73d67","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"deprecated":"더 이상 유지보수되지 않습니다. 3.0.0 이상을 사용하세요.","repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_2.0.0_1782720587711_0.9830487330739175","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@axyl-tcb/middleware","version":"3.0.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@3.0.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"66769b243d631253891b4b0ca7614f87f9610b93","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-3.0.0.tgz","fileCount":62,"integrity":"sha512-Uf/CvOrgMPSoAIo+lcxE4SLTnDNXBBrKlEDDz3CL3QuPAWuUZj299K+VRBM3siKxi55XG0xymHX3fRfEciKhDw==","signatures":[{"sig":"MEQCIFOspXCRqoiAxw6zx3PrVyWrJCCHG7NxKk0PCfgIY88bAiA4F8Fn6eiT88or5s+LnV5k8AnmAgUyhB8XMKbhbKUc7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77298},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"5d118b707b0afe4251b33c6b7395751f3182e0aa","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_3.0.0_1782723041045_0.9240714395510139","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@axyl-tcb/middleware","version":"4.0.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@4.0.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"d748d4e1dc687c02eb45d54c0c74b2917d967528","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-4.0.0.tgz","fileCount":58,"integrity":"sha512-l9qQUUPvUEq3CHbnRS1V4eHpghP+CfaT3iF3HWyv352j1yc5IHZSATPBa+FAFCM3w/bnNXIcrcFpfgtAnoiANg==","signatures":[{"sig":"MEUCIQDtV0gbuBZ5msNzGZ9hJZYuDEUdMOE/T8XHeK5i9kc2VwIgU8LodE7y4j2Jkuyx/APLZ+Fd6L+Ogfz25FHm+pJCnqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72890},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"312c867f473ae349f891e0c4e8a01975abc822a5","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_4.0.0_1783491670675_0.8934806844104417","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@axyl-tcb/middleware","version":"4.1.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@4.1.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"6fd5a0eb96c4d974a8189a31d51b9245ba40f927","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-4.1.0.tgz","fileCount":58,"integrity":"sha512-d39W3PawWQUH5vtnOTjg0zRmIF3pqX7PI6r7ZVmOxJ2qI8bamm9+Nq17OOGb1GztT6/rEB4cCVmWiHZT+I6jMQ==","signatures":[{"sig":"MEUCIA0yz/910ZYatRoINN/hYdGmsgHeiIeOUlZLMIcp2/7uAiEAouoVAz43/e3QbcVpbZC8t6gLqOGHOObNQAHTw9vLvXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73905},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"312c867f473ae349f891e0c4e8a01975abc822a5","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_4.1.0_1783904369667_0.7296688460836558","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@axyl-tcb/middleware","version":"4.2.0","keywords":[],"author":"","license":"ISC","_id":"@axyl-tcb/middleware@4.2.0","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"dist":{"shasum":"c8d46ec22a7bf9ac1f1b0d236df9552b83f2bdad","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-4.2.0.tgz","fileCount":58,"integrity":"sha512-yacq56c9AqDXIvl6PlUiFkxJAgnqvaIxx9dL4dmjF8nfR13z18F7y8c6namN441CLuF4AmL3ASt93QYpH2D+Zw==","signatures":[{"sig":"MEYCIQCA5fNOEhTxb41RJ4e24UJ9PJS8MLwk6+zRJtcsatIV0gIhAKCWBPMKZw9SUr+jIdU69U6e4WYuCmxqncsMijWacKgC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80802},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"}},"gitHead":"b9dae261cd039494338d8911087f05c83edf95fd","scripts":{"test":"jest","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"repository":{"url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git","type":"git"},"_npmVersion":"11.6.2","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^25.9.1","@cloudbase/node-sdk":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/middleware_4.2.0_1784079059991_0.012731239602100208","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"@axyl-tcb/middleware","version":"4.2.1","description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./db":{"types":"./dist/lib/db.d.ts","default":"./dist/lib/db.js"},"./storage":{"types":"./dist/lib/storage.d.ts","default":"./dist/lib/storage.js"},"./docdb":{"types":"./dist/lib/docdb.d.ts","default":"./dist/lib/docdb.js"}},"scripts":{"test":"jest","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prebuild":"npm run clean","build":"tsc","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"keywords":[],"author":"","license":"ISC","type":"commonjs","bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","devDependencies":{"@cloudbase/node-sdk":"^3.18.1","@types/jest":"^30.0.0","@types/node":"^25.9.1","jest":"^30.3.0","mysql2":"^3.22.3","ts-jest":"^29.4.9","typescript":"^6.0.3"},"gitHead":"f8748c83220d3cef15a33f70acaaef221659e835","_id":"@axyl-tcb/middleware@4.2.1","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-pvqwp7nv+NxYnidZ8bCUdqhQz/3nAvqH2Wkv6u/Ud/HEFYSz1R4aSBMeZAj05iN3Cg3bVDwky9Yq0ih8VDuWyQ==","shasum":"f88def3095359e926f3162eee10463b384b086ca","tarball":"https://registry.npmjs.org/@axyl-tcb/middleware/-/middleware-4.2.1.tgz","fileCount":58,"unpackedSize":81709,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHSIfyrWUoTiEqyznq7Va+PLHKoRLPz0lNqhAE50zl/XAiEA8CC1qlW/YjRohpSDfbNDTTHKkvh62HPBwmvguRhNmpQ="}]},"_npmUser":{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"},"directories":{},"maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/middleware_4.2.1_1784081639471_0.25495627163185897"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-01T09:27:43.247Z","modified":"2026-07-15T02:13:59.750Z","1.0.10":"2026-06-01T09:27:43.578Z","1.1.0":"2026-06-16T08:28:10.725Z","1.2.0":"2026-06-17T03:42:22.579Z","1.2.1":"2026-06-17T04:58:03.347Z","1.2.2":"2026-06-18T03:39:25.057Z","1.3.0":"2026-06-18T04:52:47.623Z","2.0.0":"2026-06-29T08:09:47.846Z","3.0.0":"2026-06-29T08:50:41.175Z","4.0.0":"2026-07-08T06:21:10.813Z","4.1.0":"2026-07-13T00:59:29.790Z","4.2.0":"2026-07-15T01:31:00.134Z","4.2.1":"2026-07-15T02:13:59.618Z"},"bugs":{"url":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware/issues"},"license":"ISC","homepage":"https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/Com2usPlatform-Hive2/axyl-tcb-middleware.git"},"description":"고객사에서 TCB 용 함수를 개발할 때 사용할 수 있는 JavaScript 래퍼","maintainers":[{"name":"axyl-deploy","email":"hiveaxyltcb@com2us.com"}],"readme":"# axyl-tcb-middleware\n\nAxyl TCB Cloud Function 템플릿에서 공통으로 사용하는 Gateway 주입 헤더 기반 컨텍스트 미들웨어 패키지입니다.\n\n이 패키지는 Cloud Function 진입점에서 Gateway가 주입한 `X-Hive-*` 헤더를 읽고, 필요한 컨텍스트를 생성해 `baseHandler` 에 전달하며, 최종 응답을 Axyl 표준 포맷으로 강제합니다.\n\n## 목적\n\n`axyl-tcb-middleware` 는 다음 책임을 가집니다.\n\n- Gateway가 주입한 `X-Hive-Player-Id`, `X-Hive-Aud` 헤더 추출\n- `X-Hive-Aud` 파싱 및 컨텍스트 주입\n- 공통 로깅 처리\n- 템플릿에서는 `baseHandler` 만 구현하면 되도록 handler factory 제공\n- 성공/실패 응답을 Axyl 표준 포맷으로 강제\n\n## 타입 설계 원칙\n\n이 패키지는 다음 3가지를 분리합니다.\n\n- **ReqDTO**: 사용자가 입력으로 받는 비즈니스 요청 값\n- **ResDTO**: 사용자가 반환하는 비즈니스 응답 값\n- **Context**: middleware가 주입하는 런타임 값\n\n즉 `playerId`, `aud` 같은 값은 ReqDTO/ResDTO가 아니라 **Context의 필수 필드**입니다.\n\n## 제공되는 컨텍스트(context) 값\n\n`baseHandler` 는 헤더를 직접 다루지 않습니다. 미들웨어가 검증·주입한 아래 `context` 값만 사용하면 됩니다.\n\n| 필드 | 타입 | 설명 |\n|---|---|---|\n| `playerId` | string | 호출 플레이어 ID (형식 `^\\d{1,19}$` 검증 완료, 항상 존재). 플랫폼 BIGINT 규격이므로 JS `number` 로 파싱하지 말 것(정밀도 손실) |\n| `aud.appIndex` · `aud.projectIndex` · `aud.companyIndex` | number | 파싱된 인덱스. **데이터 격리에는 신뢰값 `aud.projectIndex` 를 사용** |\n| `traceId` | string | 로그 상관관계용 trace-id (없으면 자동 생성) |\n| `logger` | AxylLogger | `info` / `error` 로깅 |\n\n> `traceId` 는 observability(추적) 전용입니다. 보안 판단이나 멱등성 키로 사용하지 않습니다.\n\n## 주요 기능\n\n- `withTrace`\n  - 이벤트 헤더의 `traceparent` 에서 trace-id(32 hex)를 추출해 `context.traceId` 에 주입\n  - `traceparent` 가 없거나 형식이 올바르지 않으면 새 trace-id 를 자동 생성 (로컬 실행·직접 호출 대비)\n  - 성공/실패 응답의 `metadata.traceId` 에 항상 포함됨\n  - 로그 상관관계·분산 추적 전용 — 보안 판단·멱등성 키로 사용하지 않음\n\n- `withHiveHeaders`\n  - `X-Hive-Player-Id`, `X-Hive-Aud` 헤더 추출\n  - 필수 헤더 검증 + 형식 검증\n    - `playerId`: `^\\d{1,19}$` (플랫폼 BIGINT 규격 — 숫자 문자열, 최대 19자리). 경로 조작·DB 타입 오류를 신뢰경계에서 차단\n    - 존재/형식 위반 모두 단일 `BAD_REQUEST` 로 반환 (세부 사유 비노출)\n  - `playerId`, `aud`, `injectedHeaders` 주입\n  - `AxylContext` 를 `AxylAuthorizedContext` 로 승격\n\n- `withLogger`\n  - 공통 요청/응답 로깅\n\n- `createAxylHandler`\n  - 미들웨어 조합을 내부에 숨기고 최종 handler 생성\n  - 템플릿에서는 `baseHandler` 만 구현하면 되도록 지원\n  - 성공/실패 응답을 Axyl 표준 포맷으로 생성\n\n## 응답 포맷\n\n`createAxylHandler` 는 최종 응답을 아래 구조로 강제합니다.\n\n### 성공 응답\n\n```json\n{\n  \"success\": true,\n  \"code\": \"OK\",\n  \"metadata\": {\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"elapsedMs\": 3\n  },\n  \"data\": {}\n}\n```\n\n### 실패 응답\n\n```json\n{\n  \"success\": false,\n  \"code\": \"BAD_REQUEST\",\n  \"metadata\": {\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"elapsedMs\": 1\n  },\n  \"error\": {\n    \"message\": \"Bad request.\"\n  }\n}\n```\n\n즉 `baseHandler` 는 최종 응답 전체를 만들지 않고, **비즈니스 `data` 만 반환**하면 됩니다.\n\n## 설치\n\n공개 npm 패키지이므로 별도 레지스트리 설정이나 인증 없이 바로 설치할 수 있습니다.\n\n```bash\nnpm install @axyl-tcb/middleware\n```\n\n코어(헤더/컨텍스트 처리)는 의존성이 없습니다.\n\n## DB / Storage / Document DB 헬퍼 (subpath)\n\nmysql2·TCB Cloud Storage·Document DB 클라이언트를 subpath 로 제공합니다. 라이브러리로 관리되므로 수정·보안 패치가 `npm update` 로 전파됩니다.\n\n```ts\nimport { pool, transaction }              from '@axyl-tcb/middleware/db';      // mysql2\nimport { uploadFile, getTempURL }         from '@axyl-tcb/middleware/storage';  // Cloud Storage\nimport { db, command, collection }        from '@axyl-tcb/middleware/docdb';    // Document DB\n```\n\n이 subpath 들은 `mysql2` / `@cloudbase/node-sdk` 를 직접 require 하지만, 미들웨어가 **자동 설치하지 않습니다**(헤더만 쓰는 사용자에게 불필요한 의존성·취약점을 부과하지 않기 위함). 사용하는 subpath 의 패키지를 **직접 설치**하세요.\n\n```bash\nnpm install mysql2              # /db 사용 시\nnpm install @cloudbase/node-sdk # /storage, /docdb 사용 시\n```\n\n> 설치하지 않고 subpath 를 import 하면 런타임에 모듈을 찾지 못합니다. (Axyl 템플릿으로 생성한 프로젝트는 필요한 패키지를 이미 선언합니다.)\n\n| subpath | 필요 peer | 환경변수 |\n|---|---|---|\n| `/db` | `mysql2` | `DB_HOST` `DB_PORT` `DB_USER` `DB_PASSWORD` `DB_NAME` |\n| `/storage` | `@cloudbase/node-sdk` | `TCB_ENV_ID`(미설정 시 현재 함수 환경) |\n| `/docdb` | `@cloudbase/node-sdk` | `TCB_ENV_ID` · `TCB_DOCDB_INSTANCE` · `TCB_DOCDB_DATABASE` |\n\n> 헤더/컨텍스트만 쓰는 사용자는 이 패키지들을 설치하지 않으므로, 코어는 가볍게 유지되고 관련 보안 advisory 도 부과되지 않습니다.\n\n## 프로젝트 구조\n\n```text\naxyl-tcb-middleware/\n├─ src/\n│  ├─ constants/\n│  │  └─ errorCodes.ts\n│  ├─ factory/\n│  │  └─ createAxylHandler.ts\n│  ├─ middlewares/\n│  │  ├─ withHiveHeaders.ts\n│  │  ├─ withLogger.ts\n│  │  └─ withTrace.ts\n│  ├─ utils/\n│  │  ├─ aud.ts\n│  │  ├─ hiveHeaders.ts\n│  │  └─ traceparent.ts\n│  ├─ errors.ts\n│  ├─ index.ts\n│  └─ types.ts\n└─ test/\n```\n\n## 사용 예시\n\n템플릿 프로젝트에서는 `baseHandler` 만 구현하고, `createAxylHandler` 로 최종 `main` 을 생성하면 됩니다.\n\n`baseHandler` 는 Gateway 헤더를 직접 다루지 않습니다.  \n`X-Hive-Player-Id`, `X-Hive-Aud` 는 middleware 가 읽고 `AxylAuthorizedContext` 로 전달합니다.  \n따라서 템플릿 사용자는 이벤트 타입에 `headers` 를 직접 정의할 필요 없이, 비즈니스 로직에 필요한 필드만 정의하면 됩니다.\n\n```ts\nimport {\n  createAxylHandler,\n  type AxylBaseHandler\n} from '@axyl-tcb/middleware';\n\ninterface HelloReqDto {\n  message?: string;\n}\n\ninterface HelloResDto {\n  echo: string;\n}\n\nconst baseHandler: AxylBaseHandler<HelloReqDto, HelloResDto> = async (\n  event,\n  context\n) => {\n  context.logger?.info('business logic', {\n    playerId: context.playerId,\n    projectIndex: context.aud.projectIndex\n  });\n\n  return {\n    echo: event.message ?? 'hello'\n  };\n};\n\nexport const main = createAxylHandler(baseHandler);\n```\n\n## 실제 요청 payload 예시\n\nGateway 또는 테스트 호출에서는 실제로 `headers` 가 포함될 수 있습니다.\n\n```json\n{\n  \"headers\": {\n    \"X-Hive-Player-Id\": \"9999999999991\",\n    \"X-Hive-Aud\": \"2789-539-1\"\n  },\n  \"message\": \"hello axyl\"\n}\n```\n\n## createAxylHandler 기본 동작\n\n`createAxylHandler` 는 내부적으로 아래 순서로 처리합니다.\n\n1. `traceId` 결정 (`traceparent` 헤더의 trace-id 추출, 없으면 자동 생성)\n2. `withLogger`\n3. `withHiveHeaders`\n\n기본 정책은 다음과 같습니다.\n\n- `traceparent` 헤더의 trace-id 를 사용, 없거나 형식 오류면 새 trace-id 자동 생성\n- `X-Hive-Player-Id`, `X-Hive-Aud` 는 기본적으로 필수\n- 성공 응답의 `code` 는 기본적으로 `OK`\n- 필요 시 `successCode` 옵션으로 변경 가능\n\n예:\n\n```ts\ncreateAxylHandler(baseHandler, {\n  successCode: 'CUSTOM_OK'\n});\n```\n\n## 공개 API\n\n현재 외부로 공개하는 주요 API는 다음과 같습니다.\n\n- `createAxylHandler`\n- `withHiveHeaders`\n- `withLogger`\n- `withTrace`\n\n주요 타입:\n\n- `AxylBaseHandler`\n- `AxylContext`\n- `AxylAuthorizedContext`\n- `AxylHttpEvent`\n- `AxylHiveHeaders`\n- `AxylAudParts`\n- `AxylResponseMetadata`\n- `AxylSuccessResponse`\n- `AxylErrorResponse`\n- `AxylResponse`\n- `CreateAxylHandlerOptions`\n\n## 테스트 범위\n\n현재 테스트는 다음 범위를 포함합니다.\n\n- `parseAxylAud`\n- `getHiveHeaders`\n- `withHiveHeaders`\n- `withLogger`\n- `withTrace`\n- `createAxylHandler`\n\n## 참고\n\n- 이 패키지는 Cloud Function 비즈니스 로직이 아니라 헤더 추출/주입/공통 처리에 집중합니다.\n- 현재는 `X-Hive-Player-Id`, `X-Hive-Aud` 만 사용합니다.\n- `aud` 의 비즈니스 검증(예: 게임 정보 DB 조회 기반 검증)은 제품 책임입니다.","readmeFilename":"README.md"}