{"_id":"@dreadkn1ght123/odata-1c","_rev":"14-4af7b42a345d8c9a216b525366438b19","name":"@dreadkn1ght123/odata-1c","dist-tags":{"latest":"0.7.0"},"versions":{"0.2.0":{"name":"@dreadkn1ght123/odata-1c","version":"0.2.0","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.2.0","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"ac7b64a58c85deccc8b3c2e712ad757b04fff3f8","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.2.0.tgz","fileCount":45,"integrity":"sha512-rSdFrThhF51taMj4OLBfg8G82Aps7u4tDpDYDKwFd6GMI5o6dCc2YrCA+HXPZIp5AdYUhf9Vb6BMS21zu/UsRA==","signatures":[{"sig":"MEUCIQCuotXjuBQJro2i1oALuPeWr0ED9WFMNoCK5jWJ7aKpTQIgKVum5aMdma5o/JeuPWWHMdfrjzCj5xG4rmZwK5/M/js=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77242},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/09a5f44a216cf9e5560457d61063f255/dreadkn1ght123-odata-1c-0.2.0.tgz","_integrity":"sha512-rSdFrThhF51taMj4OLBfg8G82Aps7u4tDpDYDKwFd6GMI5o6dCc2YrCA+HXPZIp5AdYUhf9Vb6BMS21zu/UsRA==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.2.0_1783556854582_0.3737097657093704","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dreadkn1ght123/odata-1c","version":"0.3.0","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.3.0","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"ff1306f28891035166342c76926bb3822337454b","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.3.0.tgz","fileCount":58,"integrity":"sha512-75HXLW1vRSk/JbVi9PSVKamsJyf5XrbzkUg94mxkaybnL0wxnr/i26xBes810SXKUxrH6gnruHc75jy2lOOxFQ==","signatures":[{"sig":"MEUCIQDUoawotb6GQmNa01rBW8wpeoXvior8xhRfWF5EMlWyBQIgI7AejbGVLkcke/s7CabEv2hiGYvrrkIyjNWN0npXilo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110317},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.3.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/16181c983b7ca8a1247645886d48fa06/dreadkn1ght123-odata-1c-0.3.0.tgz","_integrity":"sha512-75HXLW1vRSk/JbVi9PSVKamsJyf5XrbzkUg94mxkaybnL0wxnr/i26xBes810SXKUxrH6gnruHc75jy2lOOxFQ==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.3.0_1785062593981_0.8342085333710343","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.0","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.0","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"960f5fc47126a27c73e224e4ec6c2b21bb7836b1","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.0.tgz","fileCount":58,"integrity":"sha512-SLDTJPpMOObSlFkd4HHRRwTb4qkvUbZGkSHWoil/fYnIWxls3FVcg/dh3Bks085YyOqSzibo6rOKQ2DKii9i5g==","signatures":[{"sig":"MEUCICHIlX6SuCyTQBYVWVMIkejrXi7Fbsrm/qQ9AaEtSeNsAiEAyUlNDwXB+Q//TjxitAFL4BkYuXlUS2HqZdXoKn3VkJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120460},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/cd71df00875d137d3a3082c9fc46c181/dreadkn1ght123-odata-1c-0.4.0.tgz","_integrity":"sha512-SLDTJPpMOObSlFkd4HHRRwTb4qkvUbZGkSHWoil/fYnIWxls3FVcg/dh3Bks085YyOqSzibo6rOKQ2DKii9i5g==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.0_1785144130516_0.4960527249770039","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.1","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.1","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"91030e232c43b754def57d95ec95c40114ee8395","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.1.tgz","fileCount":58,"integrity":"sha512-zZNKTnVQpSDDWKQTWDifKMdz3LJr00CYm3jhh4NGNIyKe86OAywrSVX1DqFqzTNs90BCOtzTeuu7uFRZp6YLrA==","signatures":[{"sig":"MEUCIQCUDvZ8qZJhvY0iPejLo3QJ31M5z+JAHRrjequN8di2oQIgMBTEomoM/feV4+lnxLgsCFd6VeZ6ap//08F90Zi1v6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125293},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/a5ff4ca50871de6ce506da52db95bf3c/dreadkn1ght123-odata-1c-0.4.1.tgz","_integrity":"sha512-zZNKTnVQpSDDWKQTWDifKMdz3LJr00CYm3jhh4NGNIyKe86OAywrSVX1DqFqzTNs90BCOtzTeuu7uFRZp6YLrA==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.1_1785144518715_0.3186766867846331","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.2","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.2","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"b3ea420297ca73eba946211e721c679a4bbaad03","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.2.tgz","fileCount":58,"integrity":"sha512-Lko/70wa7sb0ap6iWcYUjdDdLjH0ClZrW9+bckNzdOeHG/UkSwKW19s8xXZHddkxQPzkHf6GogzhDcjLIaHyGQ==","signatures":[{"sig":"MEUCICcr102VIqH12qVEhUF5GQaAuC4F+AQ94hncahkGeryAAiEAiA6bo+jJpPMB8erlOZqyYQtNRVjRDOEJf7mQY2amzBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125621},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/32e22f4b78f74c5cf1d1a7c03f1830f6/dreadkn1ght123-odata-1c-0.4.2.tgz","_integrity":"sha512-Lko/70wa7sb0ap6iWcYUjdDdLjH0ClZrW9+bckNzdOeHG/UkSwKW19s8xXZHddkxQPzkHf6GogzhDcjLIaHyGQ==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.2_1785147072344_0.09827745782816955","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.3","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.3","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"af3dd486cb70ef87a82976590f168916f2e7f396","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.3.tgz","fileCount":58,"integrity":"sha512-YVXqfVBu1wconww7krBreTIHxD2cOepypKZCKq3/Ccmkbp5Twlcd77HPq5NPQ4qAEpVxDG8x7E82tWNlt2IE9g==","signatures":[{"sig":"MEUCIQCF4rjxBeGt5bN9dYc/XPuTIP2VHwZhROXKwrXmnOXEbQIgJ09KPojFXE9DfajaZWKIi0FkV9CekQpmIZI6tUpjOC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127493},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/be531b01127ae31e7d5b65124aba2ebd/dreadkn1ght123-odata-1c-0.4.3.tgz","_integrity":"sha512-YVXqfVBu1wconww7krBreTIHxD2cOepypKZCKq3/Ccmkbp5Twlcd77HPq5NPQ4qAEpVxDG8x7E82tWNlt2IE9g==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.3_1785156034124_0.3113586780137134","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.4","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.4","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"f2c59884da16403127cc15bdf8a2051fe22a879f","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.4.tgz","fileCount":58,"integrity":"sha512-6E0bsztIZqiZ9lCJDOiLPWMXmbUcT/paeZxgEN6Q6dsXnobm2tlv2SK8nqdV/AlMa0wqkx3yCDXxxRYYUwjong==","signatures":[{"sig":"MEQCIHx6G2JNL7ixCg6490WHGn7aPWVKg5djcyP/j05Y2kvEAiA3Zu6bwQpmBTJdw1tpgZPTl0HpF3cBkNSFtpM5j2X+TQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137630},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/e8174a71a8e1e160c49a1bb53e4992db/dreadkn1ght123-odata-1c-0.4.4.tgz","_integrity":"sha512-6E0bsztIZqiZ9lCJDOiLPWMXmbUcT/paeZxgEN6Q6dsXnobm2tlv2SK8nqdV/AlMa0wqkx3yCDXxxRYYUwjong==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.4_1785157764764_0.6903285905381309","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.5","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.5","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"b89287a445c888ea8dd45c23cac505654c9723bf","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.5.tgz","fileCount":58,"integrity":"sha512-VcwArq3SckFgL1Lh4NQ+0MQK7aGS2OAbtSVPBESs/PL84s9fNYusPmdJKwbm+RzJfhaHv49gDbUxgKrAlRIF0w==","signatures":[{"sig":"MEUCIQDQ8HKupopSzBoDePwdnqlIDxSTCqPsQVv6E9HtoKNDcAIgV7cnl2UX3nlZCc7GpjwUGzX7KEic8UYnNGBXu0YOAu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139902},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/68ecef3b462bf64c5e8f499830914c79/dreadkn1ght123-odata-1c-0.4.5.tgz","_integrity":"sha512-VcwArq3SckFgL1Lh4NQ+0MQK7aGS2OAbtSVPBESs/PL84s9fNYusPmdJKwbm+RzJfhaHv49gDbUxgKrAlRIF0w==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.5_1785186445026_0.5419556762827984","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.6","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.6","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"27f562933724238dd01962d49b9b6bd820201884","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.6.tgz","fileCount":58,"integrity":"sha512-J5QFpGs9dJN01q6OsWE3rWFX1BI7wpCWGCIMzjRCQN9XA0SNlzjfHru6sm1gpKZXrnVPjdDEdaJao7gb2tughg==","signatures":[{"sig":"MEUCIDcmjSWSoH95Df+Mkyp+2lZRT4bkevOmpV5l+jeQ9H3uAiEAhHXPpy9cFgztlrPdrWm+YUOpYvj9vuD4JDKYvJ8zR4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145327},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.6.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/b9b5658c8dcbb40b580665d8f4114d0b/dreadkn1ght123-odata-1c-0.4.6.tgz","_integrity":"sha512-J5QFpGs9dJN01q6OsWE3rWFX1BI7wpCWGCIMzjRCQN9XA0SNlzjfHru6sm1gpKZXrnVPjdDEdaJao7gb2tughg==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.6_1785188684371_0.4572009419380749","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@dreadkn1ght123/odata-1c","version":"0.4.7","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.4.7","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"90556245d40f431e9f6481b742d6e092b23c90e3","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.4.7.tgz","fileCount":58,"integrity":"sha512-YB4IFphSMvoI/vVAaFyzJ6lFyd6grYMZp4jo0S8509bDvH5Igxd4yQnbz67L1qSJ0DHMhHIA2o+PFYG0F6jObA==","signatures":[{"sig":"MEQCIHIiiRfFFPnkRcfKHqokj3zn0lYBhDlckjuyA0eb/cbNAiANQvf1METkxfiEkC54ULNGBZVeERVSNn7SgjRW8GS34Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145539},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.4.7.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/b6641f13e697274724428868909f58d7/dreadkn1ght123-odata-1c-0.4.7.tgz","_integrity":"sha512-YB4IFphSMvoI/vVAaFyzJ6lFyd6grYMZp4jo0S8509bDvH5Igxd4yQnbz67L1qSJ0DHMhHIA2o+PFYG0F6jObA==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.4.7_1785188795976_0.09515550224490732","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dreadkn1ght123/odata-1c","version":"0.5.0","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.5.0","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"6e8801afe683b408277459b5b9838a07a1294767","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.5.0.tgz","fileCount":58,"integrity":"sha512-/yXy4wYbaP9I/uGanhKGIq7mT/kClW/QSEcHpPWnXibntyG7RxN1+zGHzRFpcUu6ONsVMgQSWeEo05l8AIEhHg==","signatures":[{"sig":"MEQCIGfp0L5/L+dBsNGS8QGb/u0vUyty5YMMqMe4MAXJ488HAiBY0OfdJVOLtEQbLHMUvMbJjkdNUm9fNM85uuZBqscmrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147644},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.5.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/2584f254f10419601c084d6ab97786d8/dreadkn1ght123-odata-1c-0.5.0.tgz","_integrity":"sha512-/yXy4wYbaP9I/uGanhKGIq7mT/kClW/QSEcHpPWnXibntyG7RxN1+zGHzRFpcUu6ONsVMgQSWeEo05l8AIEhHg==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.5.0_1785242385300_0.9476776212537414","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@dreadkn1ght123/odata-1c","version":"0.6.0","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.6.0","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"25f3b4623f966337dba6c00fcbddddf1da20e3b7","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.6.0.tgz","fileCount":58,"integrity":"sha512-NnkocFNTIuQLbqepCshzohrkC6OUx2YWUUxOZpO+BVCIdCVjNAAFFrKzI7qt86NbwnjJ9dxbFXltdVA8Z5b4sA==","signatures":[{"sig":"MEUCIDsz+LIbCMoANOwWAY9c+YyVt6zTJ4BkhZbsFiWriBUwAiEAmwMPfKBZwocADEt7k4CflAVpkTarGLjC4hLUyHXiWFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151658},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.6.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/d36f155348a872d6b12cccc2718c2545/dreadkn1ght123-odata-1c-0.6.0.tgz","_integrity":"sha512-NnkocFNTIuQLbqepCshzohrkC6OUx2YWUUxOZpO+BVCIdCVjNAAFFrKzI7qt86NbwnjJ9dxbFXltdVA8Z5b4sA==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.6.0_1785275442930_0.15127530304923242","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@dreadkn1ght123/odata-1c","version":"0.6.1","license":"MIT","_id":"@dreadkn1ght123/odata-1c@0.6.1","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"dist":{"shasum":"b6dcd2e2fb8abaa20f412f2a97fe83dc9f817981","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.6.1.tgz","fileCount":59,"integrity":"sha512-eNiN+H5ke5u7hS2zsPdzRM/x7y8fetoOb8FJ0YRy6/8MqPqaiQK5OVGN7y4y56e5NT6NnwWaXaWKgCcR68DmPw==","signatures":[{"sig":"MEYCIQCZHaA/qST7g9cTCtoD+xfFos0jGQTzpArVsKdUv2Q12AIhAO5RVnAh8Cfwm5b6PDcGq2yW6P9cIFsrQyEHdh8FJj1S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162006},"main":"./dist/index.js","type":"module","_from":"file:dreadkn1ght123-odata-1c-0.6.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"_resolved":"/tmp/309495ca34eee82a1ab9e609a06b95b9/dreadkn1ght123-odata-1c-0.6.1.tgz","_integrity":"sha512-eNiN+H5ke5u7hS2zsPdzRM/x7y8fetoOb8FJ0YRy6/8MqPqaiQK5OVGN7y4y56e5NT6NnwWaXaWKgCcR68DmPw==","_npmVersion":"11.6.2","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/odata-1c_0.6.1_1785278369461_0.519341708801089","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@dreadkn1ght123/odata-1c","version":"0.7.0","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"devDependencies":{"@types/node":"^25.3.3","vitest":"^4.1.7"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"@dreadkn1ght123/odata-1c@0.7.0","_integrity":"sha512-zdlswZ797j4n5aORag3wGK6pqk2vNc++WQCUVsZ0R3I3tnaBFzfE03wpRjHRGX1tcUWFK41/n5KOfEA748E9qQ==","_resolved":"/tmp/0b6e8c7fe370fd71d29c4761739698c1/dreadkn1ght123-odata-1c-0.7.0.tgz","_from":"file:dreadkn1ght123-odata-1c-0.7.0.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-zdlswZ797j4n5aORag3wGK6pqk2vNc++WQCUVsZ0R3I3tnaBFzfE03wpRjHRGX1tcUWFK41/n5KOfEA748E9qQ==","shasum":"d37f0522f5fdc6a1fc801619f3a19ae917851dcb","tarball":"https://registry.npmjs.org/@dreadkn1ght123/odata-1c/-/odata-1c-0.7.0.tgz","fileCount":59,"unpackedSize":162966,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAG1u63ABpGT9Qa+s62d0XA8gbhHRWw6EZpzfOzSDsC7AiEA8zIV4VcY9tD3gGNY6qJ/0BGzHnPdswrQYQ1JV0v+/V0="}]},"_npmUser":{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"},"directories":{},"maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/odata-1c_0.7.0_1785598000251_0.9970020831033006"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-09T00:27:34.370Z","modified":"2026-08-01T15:26:40.592Z","0.2.0":"2026-07-09T00:27:34.709Z","0.3.0":"2026-07-26T10:43:14.153Z","0.4.0":"2026-07-27T09:22:10.666Z","0.4.1":"2026-07-27T09:28:38.864Z","0.4.2":"2026-07-27T10:11:12.485Z","0.4.3":"2026-07-27T12:40:34.260Z","0.4.4":"2026-07-27T13:09:24.920Z","0.4.5":"2026-07-27T21:07:25.173Z","0.4.6":"2026-07-27T21:44:44.508Z","0.4.7":"2026-07-27T21:46:36.115Z","0.5.0":"2026-07-28T12:39:45.466Z","0.6.0":"2026-07-28T21:50:43.074Z","0.6.1":"2026-07-28T22:39:29.662Z","0.7.0":"2026-08-01T15:26:40.445Z"},"license":"MIT","description":"Storage-agnostic toolkit for extracting raw data from 1C OData endpoints: discovery, SSRF-guarded origin-pinned fetching, cursor/offset pagination, retry, $expand flattening, and DataVersion change-token tracking.","maintainers":[{"name":"dreadkn1ght123","email":"dreadkn1ght123@gmail.com"}],"readme":"# @dreadkn1ght123/odata-1c\n\nStorage-agnostic toolkit for extracting raw data from **1C OData** (`/odata/standard.odata`) endpoints.\n\nThe package owns the universal extraction layer: URL building, auth headers, catalog discovery (`$metadata`), SSRF-guarded + origin-pinned fetching, server-driven (cursor) vs. offset pagination, retry/backoff, folder filtering, `$expand` flattening, and DataVersion change-token tracking. It performs **no persistence** and depends on **no storage layer** — you map the streamed records into whatever store you need.\n\n---\n\n## Frontend UI\n\nПакет — только слой извлечения; готовый UI он не даёт. Полная спецификация трёх\nнеобходимых страниц (Источники 1С, История импорта, Сырые данные) — маршруты, таблицы,\nформы, бейджи статусов, диалоги ретраев и весь API-контракт — в\n**[FRONTEND.md](./FRONTEND.md)** (входит в пакет). Стройте фронтенд по нему, не\nпридумывайте заново.\n\n---\n\n## Authentication types\n\n| `AuthType`  | Stored fields             | HTTP effect                       |\n|-------------|---------------------------|-----------------------------------|\n| `\"none\"`    | —                         | No auth headers                   |\n| `\"basic\"`   | `username`, `password`    | `Authorization: Basic <b64>`      |\n| `\"x-token\"` | `xToken`                  | `X-Token-Pass: <token>`           |\n\nBoth `\"basic\"` and `\"x-token\"` can coexist on the same source: use two separate `AuthConfig` objects and merge the resulting headers, or combine them in a custom implementation.\n\n---\n\n## Recommended SQL schema for `import_sources`\n\n```sql\nCREATE TABLE import_sources (\n  id            SERIAL PRIMARY KEY,\n  name          TEXT NOT NULL,\n  base_url      TEXT NOT NULL,\n\n  -- Authentication\n  auth_type     TEXT NOT NULL DEFAULT 'none'\n                  CHECK (auth_type IN ('none', 'basic', 'x-token')),\n  username      TEXT,\n  password_enc  TEXT,    -- AES-256-GCM via encryptCredential(); NULL when auth_type != 'basic'\n  x_token_enc   TEXT,    -- AES-256-GCM via encryptCredential(); NULL when auth_type != 'x-token'\n\n  -- Import target\n  entity_type   TEXT NOT NULL,            -- e.g. 'Catalog_Организации'\n  page_size     INTEGER NOT NULL DEFAULT 1000,\n  delta_field   TEXT,                     -- NULL = full sync on every run\n  expand_fields TEXT[] NOT NULL DEFAULT '{}',\n\n  -- Delta cursor (persisted after each successful import)\n  last_delta_value TEXT,                  -- DataVersion token or ISO datetime string\n\n  created_at    TIMESTAMPTZ NOT NULL DEFAULT now(),\n  updated_at    TIMESTAMPTZ NOT NULL DEFAULT now()\n);\n```\n\nStore encrypted credentials with [`encryptCredential`](#credential-encryption) and decrypt them at runtime before building headers.\n\n---\n\n## Full example: discover → stream → upsert\n\n```typescript\nimport {\n  discoverOdataCatalogs,\n  streamOdataPages,\n  resolveStreamOptions,\n  encryptCredential,\n  decryptCredential,\n  type ODataSourceConfig,\n  type DeltaCursor,\n} from \"@dreadkn1ght123/odata-1c\";\n\n// ── 1. Load source from DB ─────────────────────────────────────────────────────\n\nconst row = await db.query(\"SELECT * FROM import_sources WHERE id = $1\", [sourceId]);\n\n// Reconstruct auth config from stored columns\nconst ENCRYPTION_KEY = process.env.CREDENTIAL_KEY!; // 64-char hex = 32 bytes\nconst config: ODataSourceConfig = {\n  baseUrl: row.base_url,\n  auth:\n    row.auth_type === \"basic\"\n      ? {\n          type: \"basic\",\n          username: row.username,\n          password: decryptCredential(row.password_enc, ENCRYPTION_KEY),\n        }\n      : row.auth_type === \"x-token\"\n        ? { type: \"x-token\", xToken: decryptCredential(row.x_token_enc, ENCRYPTION_KEY) }\n        : { type: \"none\" },\n  entityType: row.entity_type,\n  pageSize: row.page_size,\n  deltaField: row.delta_field ?? undefined,\n  expandFields: row.expand_fields,\n};\n\n// Reconstruct delta cursor from the persisted last_delta_value\nconst cursor: DeltaCursor | null = row.last_delta_value\n  ? { type: \"dataversion\", value: row.last_delta_value }\n  : null;\n\n// ── 2. (Optional) Discover available entity sets ───────────────────────────────\n\nconst { entitySets } = await discoverOdataCatalogs({\n  baseUrl: config.baseUrl,\n  ...(config.auth.type === \"basic\"\n    ? { username: config.auth.username, password: config.auth.password }\n    : {}),\n  ...(config.auth.type === \"x-token\" ? { xToken: config.auth.xToken } : {}),\n});\nconsole.log(\"Available catalogs:\", entitySets);\n\n// ── 3. Stream records page by page ────────────────────────────────────────────\n\nconst opts = resolveStreamOptions(config, cursor, {\n  logger: console as any,\n  logContext: { source_id: row.id },\n});\n\nlet lastDataVersion: string | null = null;\n\nfor await (const page of streamOdataPages(opts)) {\n  console.log(`Page ${page.pageIndex}: ${page.records.length} records (mode: ${page.paginationMode})`);\n\n  // Upsert into your store — page.records are folder-filtered and expand-flattened\n  for (const record of page.records) {\n    await upsert(record); // your own persistence logic\n  }\n\n  // Track the DataVersion cursor from the raw page (for the next import)\n  const { extractLastDataVersion } = await import(\"@dreadkn1ght123/odata-1c\");\n  lastDataVersion = extractLastDataVersion(page.rawRecords) ?? lastDataVersion;\n}\n\n// ── 4. Persist the new cursor ─────────────────────────────────────────────────\n\nif (lastDataVersion) {\n  await db.query(\"UPDATE import_sources SET last_delta_value = $1 WHERE id = $2\", [\n    lastDataVersion,\n    sourceId,\n  ]);\n}\n```\n\n---\n\n## Credential encryption\n\nUse `encryptCredential` / `decryptCredential` to store passwords and tokens safely in the database. Both functions use **AES-256-GCM** from Node.js built-in `crypto` — no external dependencies.\n\n```typescript\nimport { encryptCredential, decryptCredential } from \"@dreadkn1ght123/odata-1c\";\n\nconst KEY = process.env.CREDENTIAL_KEY!; // 64-char lowercase hex (32 bytes)\n\n// Encrypt before INSERT / UPDATE\nconst passwordEnc = encryptCredential(\"mypassword\", KEY);\n// → \"base64url_iv:base64url_tag:base64url_ciphertext\"\n\n// Decrypt at runtime before building headers\nconst password = decryptCredential(passwordEnc, KEY);\n```\n\n**Generating a key** (run once, store in your secret manager / env):\n```bash\nnode -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"\n```\n\nThe ciphertext format is self-contained (`<iv>:<authTag>:<ciphertext>`, all base64url). A wrong key or corrupted ciphertext throws a GCM authentication-tag error — there is no silent failure.\n\n---\n\n## Security\n\n### SSRF (Server-Side Request Forgery)\n\nAll URLs are validated before each request via `assertSafeDiscoveryUrl` / `fetchWithSsrfGuard`:\n\n- Hostname is resolved via `dns.lookup` before each attempt (DNS rebinding protection).\n- IPv4 loopback (`127.x.x.x`), link-local/metadata (`169.254.x.x`), and unspecified (`0.0.0.0`) addresses are blocked.\n- IPv6 loopback (`::1`), unspecified (`::`), and link-local (`fe80::/10`) are blocked.\n- IPv4-mapped IPv6 (`::ffff:<ipv4>`) is re-checked against the embedded IPv4.\n- **Private RFC 1918 ranges are allowed** — 1C servers commonly run on internal LANs (`10.x`, `172.16–31.x`, `192.168.x`).\n\n### Origin pinning\n\nBoth `resolvePinnedNextLink` (server-supplied continuation links) and `fetchPinnedToOrigin` (every redirect hop) pin all requests to the **configured origin** of `base_url`. A spoofed `@odata.nextLink` or a 3xx redirect to a foreign host will throw before any auth headers are sent to the attacker's server.\n\n### Credential encryption\n\nNever store passwords or tokens in plaintext. Use `encryptCredential` with a key loaded from an environment variable (never from the database). The AES-256-GCM auth tag ensures any tampering with the ciphertext is detected at decryption time.\n\n---\n\n## API reference\n\n### Auth\n\n```typescript\ntype AuthType = \"none\" | \"basic\" | \"x-token\";\n\ntype AuthConfig =\n  | { type: \"none\" }\n  | { type: \"basic\"; username: string; password: string }\n  | { type: \"x-token\"; xToken: string };\n```\n\n### `buildHeaders(auth: AuthConfig): Record<string, string>`\n\nBuilds HTTP request headers from an `AuthConfig`. Also accepts the legacy raw-string signature for backward compatibility:\n```typescript\nbuildHeaders(authType: string, username?, password?, xToken?): Record<string, string>\n```\n\n### `resolveStreamOptions(config, cursor?, extras?): StreamOdataPagesOptions`\n\nAssembles `StreamOdataPagesOptions` from an `ODataSourceConfig` and an optional `DeltaCursor`. Pass the result directly to `streamOdataPages`.\n\n```typescript\ntype DeltaCursor =\n  | { type: \"dataversion\"; value: string }\n  | { type: \"datetime\"; field: string; since: Date };\n```\n\n### `discoverOdataCatalogs(input): Promise<DiscoverCatalogsResult>`\n\nFetches `$metadata` from a 1C OData service and returns the sorted list of entity set names. Accepts `xToken` (preferred) or the deprecated `authToken` alias for the `X-Token-Pass` header.\n\n### `streamOdataPages(options): AsyncGenerator<OdataPage>`\n\nStreams a 1C OData entity set page by page. Prefers server-driven cursor paging; falls back to `$skip` offset paging. See source for full `StreamOdataPagesOptions` docs.\n\n### `encryptCredential(value, key): string` / `decryptCredential(encrypted, key): string`\n\nAES-256-GCM encryption helpers. The `key` must be a 64-char hex string (32 bytes). Throws on wrong key or corrupted ciphertext.\n","readmeFilename":"README.md"}