{"_id":"@pgsql/lint","_rev":"9-e268b72e7bc456d6879878108e77c4b7","name":"@pgsql/lint","dist-tags":{"latest":"18.2.8"},"versions":{"18.1.0":{"name":"@pgsql/lint","version":"18.1.0","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/lint@18.1.0","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"e69a5e0449b28d1330862a890747254c3942c01c","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.1.0.tgz","fileCount":48,"integrity":"sha512-lMKacnInGGNo76vjIrV9o8aNUB6sheWorGpMsXZJlA7UJ2UhxO78/yOCjDxExFdFLZZjbVpck7zdBm1eGEi2QQ==","signatures":[{"sig":"MEQCIB/EnaZZVw3RtId0bLoTGzLal538Xp1n2Eng6P3dZPP1AiBm+xnQ0eeYBrelOuXZGvewlGeXxlnTRtxPvLichKc1Vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121283},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"a437944187066a60705bcf11fda60bc457fa14e5","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"https://github.com/constructive-io/pgsql-parser","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.13.1+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","libpg-query":"18.1.2","pgsql-parser":"18.2.1","@pgsql/traverse":"18.7.1"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.1.8","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.1.0_1785699553817_0.5891054291730546","host":"s3://npm-registry-packages-npm-production"}},"18.1.1":{"name":"@pgsql/lint","version":"18.1.1","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/lint@18.1.1","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"82c08234b51d276c2a6a897c37495c0ef432de65","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.1.1.tgz","fileCount":48,"integrity":"sha512-vzsuZr7XJogU4YiZUd8gQglS7p1C0dBMTyCLgWhrgc3wTV5qwxelET1uJj7prPE/J/E0ONAbOeJa4e1i66GJig==","signatures":[{"sig":"MEUCIFM3JwPZaVR5BHLqzJ6hExxwaX1IFoHXQ+AX3rlBN07PAiEA62aj9JNeyJ3wQq8XlkvLc6kGXcUAvklKZj2SIIjxzOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121283},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"bc21e590439743a236da9757adf2d43d34432710","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"https://github.com/constructive-io/pgsql-parser","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.13.1+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","libpg-query":"18.1.2","pgsql-parser":"18.2.2","@pgsql/traverse":"18.7.2"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.1.8","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.1.1_1785711205497_0.6786379646868081","host":"s3://npm-registry-packages-npm-production"}},"18.1.2":{"name":"@pgsql/lint","version":"18.1.2","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/lint@18.1.2","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"51d2885b429e096fc62f0178cb109cf07c04bffd","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.1.2.tgz","fileCount":48,"integrity":"sha512-p4EahYz5oODr9zu5z1EnZbmPghDnTf8HFPW2E6qykP81QWBfBokmuJeMwSggSrOlz2ZuI0ePdYRVTTwM/2zVaA==","signatures":[{"sig":"MEUCIEBh+HX1YoLmewqVjU5Ay+2mFm1VfLQdT+5OHzy633DgAiEAoeSNBwk+sqDlKVrzZCmmawO4RXDnu1Ur5Cts+o2OhhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121283},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"b6105874628cc7b8517c1ebbd99e9ad6fe786976","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"https://github.com/constructive-io/pgsql-parser","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.13.1+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","libpg-query":"18.1.4","pgsql-parser":"18.2.3","@pgsql/traverse":"18.7.3"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.1.2_1785738542206_0.5369933780238045","host":"s3://npm-registry-packages-npm-production"}},"18.2.0":{"name":"@pgsql/lint","version":"18.2.0","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/lint@18.2.0","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"01fb8c9bd1d411072281345e7cbdc582458f5c8d","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.2.0.tgz","fileCount":57,"integrity":"sha512-qdexYQs6wLUirfysFYZ8HcqcoYMzfvI4s07JDaIFoBxIEYKxNyZ+30aEZZcuWILlso5+BL2T5DgFcQYap58nCA==","signatures":[{"sig":"MEUCIQDKPNk9l40+UZeOJElToYpYRDdWMbPxMQXdWWAFO5FGdgIgLSXLzV2V+My/WXGSH9VEaOZY3fwfSTfoXrMe3/xePX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172524},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"fa4ea3167cadd5eb0e9a216a2abfa564f6c62364","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"https://github.com/constructive-io/pgsql-parser","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.13.1+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","libpg-query":"18.1.4","pgsql-parser":"18.2.3","@pgsql/traverse":"18.7.3"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.2.0_1785744229683_0.6138016686848409","host":"s3://npm-registry-packages-npm-production"}},"18.2.1":{"name":"@pgsql/lint","version":"18.2.1","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/lint@18.2.1","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"784c4976abfa277ead336a79eb0bfeae37a0f30b","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.2.1.tgz","fileCount":57,"integrity":"sha512-VZo8wlY5/2STfSmVd8f5AlXS7SKjRQQLoW9zpGZUA9PrnNeNgWbasOc/bv5gaMu+ef52kE6fp2CVuh+dHfgI+A==","signatures":[{"sig":"MEUCIDX583Za7fRsZ+a0b/xsjnsRlg/PS6kzEhGTpZqhkA1uAiEAxmQyIDRcTG7lepbrWp/4KwQaH9n0yQr7nDHgqkbqKE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165153},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"69cdce673db035fb1ee3b529480d39fac01512ab","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"https://github.com/constructive-io/pgsql-parser","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.13.1+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","git-changed":"^0.3.0","libpg-query":"18.1.4","pgsql-parser":"18.2.3","@pgsql/traverse":"18.7.3"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.2.1_1785970222652_0.4019713714924511","host":"s3://npm-registry-packages-npm-production"}},"18.2.5":{"name":"@pgsql/lint","version":"18.2.5","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":{"name":"Constructive","email":"developers@constructive.io"},"license":"MIT","_id":"@pgsql/lint@18.2.5","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"cdbfbfbbf602a8b89c0319eac33ec37cb423f5da","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.2.5.tgz","fileCount":57,"integrity":"sha512-qjDN6vXt4IYlEaoVxgFZvj4lkDLMSdHFc1Hbyve3XJDIZbhUiq8kn1fcdxWqRbfCLEhtAko5IFjG05mkyZowCg==","signatures":[{"sig":"MEQCIHUhMe5WJRfDhrdIsmx/Bm/Jlr+IjO7VX29m7keyxm4VAiA/o+eA5HuWRkM+N1ZoEXQmZIggkT7sNuI75+KROb1n5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165153},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"30547f42aa4eb3b5677701b921cca23378452b0d","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"git+https://github.com/constructive-io/pgsql-parser.git","type":"git"},"_npmVersion":"lerna/10.0.0/node@v22.13.1+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","git-changed":"^0.3.0","libpg-query":"18.1.4","pgsql-parser":"18.2.6","@pgsql/traverse":"18.7.7"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.2.5_1786140184306_0.9028718684798205","host":"s3://npm-registry-packages-npm-production"}},"18.2.6":{"name":"@pgsql/lint","version":"18.2.6","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":{"name":"Constructive","email":"developers@constructive.io"},"license":"MIT","_id":"@pgsql/lint@18.2.6","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"fa0413505f03ade97e0decf9036caea4ec07da04","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.2.6.tgz","fileCount":57,"integrity":"sha512-DVpJ4ESaVrCh+8lXG8S76T95jrKqjHqf4aGQLPyJ/R4LFEvWgJ5alQJHeffg06vWdbkM1IXsq/ZniTmkmDVXqA==","signatures":[{"sig":"MEYCIQD86mqdZtE1/gpz3i65byLjD/P+srwT3UuBZaKFleFu0wIhAJPxr22sLsHKnTdxSQEfFNEPFwOrxGI3SaSpaEs0fZMT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165153},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"0a734eba1425f7a1c15c3fc67550a81a5fbcba01","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"git+https://github.com/constructive-io/pgsql-parser.git","type":"git"},"_npmVersion":"lerna/10.0.0/node@v24.19.0+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","git-changed":"^0.3.0","libpg-query":"18.1.4","pgsql-parser":"18.2.6","@pgsql/traverse":"18.7.8"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.2.6_1787111433488_0.328411711505358","host":"s3://npm-registry-packages-npm-production"}},"18.2.7":{"name":"@pgsql/lint","version":"18.2.7","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"author":{"name":"Constructive","email":"developers@constructive.io"},"license":"MIT","_id":"@pgsql/lint@18.2.7","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"bin":{"pgsql-lint":"cli.js"},"dist":{"shasum":"27d7a9880d6510eea655bd9fe6a80111dfab2610","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.2.7.tgz","fileCount":57,"integrity":"sha512-53cH0/HrA1KvkzIHWtDZ0s6J0njO6aCb7hvym0meAAxLg7XXZwsEJ8DWogxJJVpcSmNTGrV1UGNd4XFkUfLwyA==","signatures":[{"sig":"MEQCIH47zh87e0EBb6Kdevl1c6xjBaglciqAwHFvTYZzwU6VAiBlM50SjX5zNbpFn09/FNlIeknEcnHoE+UnzrrJ2L+vfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGnEd1fYwYlz9CZruQMNCGMRVybHvIgZ4/lrfDBGJSVEAiEAzhuu+kWo36MwTMjpgL7/hAqb+ncklDXz16TDID3mzLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165153},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"d8a34a60dacf1b7d5ba6e7443e2438ff049b6a56","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"repository":{"url":"git+https://github.com/constructive-io/pgsql-parser.git","type":"git"},"_npmVersion":"lerna/10.0.0/node@v24.19.0+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","git-changed":"^0.3.0","libpg-query":"18.1.5","pgsql-parser":"18.2.7","@pgsql/traverse":"18.7.9"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/lint_18.2.7_1789631772391_0.2880413536350497","host":"s3://npm-registry-packages-npm-production"}},"18.2.8":{"_id":"@pgsql/lint@18.2.8","bin":{"pgsql-lint":"cli.js"},"bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"dist":{"shasum":"abb37c87c9a9abba334e8f178f191c40eaaf5bcb","tarball":"https://registry.npmjs.org/@pgsql/lint/-/lint-18.2.8.tgz","fileCount":57,"integrity":"sha512-G+JpYZZecVBR4+VsSkLqkvTiQblDs5rvCuOrZ/oP6ZngtG9xJg0QC57GSsCKx+iOF9NxUxaBCn9msIHWcDetGA==","signatures":[{"sig":"MEQCIBhgbnamL7rILD041+2pXeQQpGilocpixcGnffzPDa1/AiBYsRRVcfhnAl7Vb2DaumO5uGWNFOzy8ZY25M058DELEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGlMbG6r9P/ceQqTH/VeUY7jOk8OGb674FQ0wrn6jJPDAiEApgrxgwZgkogE322SWlsCk31WVGYtEtqsB4AF8Ff4CiU="}],"unpackedSize":165154},"main":"index.js","name":"@pgsql/lint","types":"index.d.ts","author":{"name":"Constructive","email":"developers@constructive.io"},"module":"esm/index.js","gitHead":"b93d0f73eab976c7db21f7bc7e2dad165d25173e","license":"MIT","scripts":{"dev":"ts-node src/cli","copy":"makage assets","lint":"eslint . --fix","test":"jest","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","clean":"makage clean dist","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","test:watch":"jest --watch","prepublishOnly":"npm run build"},"version":"18.2.8","_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"repository":{"url":"git+https://github.com/constructive-io/pgsql-parser.git","type":"git"},"_npmVersion":"lerna/10.0.0/node@v24.19.0+arm64 (darwin)","description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","directories":{},"maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"_nodeVersion":"24.19.0","dependencies":{"chalk":"^4.1.0","minimist":"1.2.8","git-changed":"^0.3.0","libpg-query":"18.1.5","pgsql-parser":"18.2.8","@pgsql/traverse":"18.7.10"},"publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lint_18.2.8_1789675571938_0.08855873771206024"}}},"time":{"created":"2026-08-02T19:39:13.618Z","modified":"2026-09-17T20:06:12.238Z","18.1.0":"2026-08-02T19:39:13.968Z","18.1.1":"2026-08-02T22:53:25.643Z","18.1.2":"2026-08-03T06:29:02.358Z","18.2.0":"2026-08-03T08:03:49.814Z","18.2.1":"2026-08-05T22:50:22.808Z","18.2.5":"2026-08-07T22:03:04.464Z","18.2.6":"2026-08-19T03:50:33.639Z","18.2.7":"2026-09-17T07:56:12.472Z","18.2.8":"2026-09-17T20:06:12.041Z"},"bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"author":{"name":"Constructive","email":"developers@constructive.io"},"license":"MIT","homepage":"https://github.com/constructive-io/pgsql-parser/tree/main/packages/lint#readme","keywords":["sql","postgres","postgresql","pg","ast","lint","linter","plpgsql","search_path","dynamic-sql"],"repository":{"url":"git+https://github.com/constructive-io/pgsql-parser.git","type":"git"},"description":"Source-level SQL/PL/pgSQL convention linter: fully-qualified references, no search_path, no dynamic SQL, with ESLint-style inline waivers. Pure AST, no database.","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"readme":"# @pgsql/lint\n\n<p align=\"center\" width=\"100%\">\n  <img height=\"250\" src=\"https://raw.githubusercontent.com/constructive-io/constructive/refs/heads/main/assets/outline-logo.svg\" />\n</p>\n\n<p align=\"center\" width=\"100%\">\n  <a href=\"https://github.com/constructive-io/pgsql-parser/actions/workflows/run-tests.yaml\">\n    <img height=\"20\" src=\"https://github.com/constructive-io/pgsql-parser/actions/workflows/run-tests.yaml/badge.svg\" />\n  </a>\n   <a href=\"https://github.com/constructive-io/pgsql-parser/blob/main/LICENSE-MIT\"><img height=\"20\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\"/></a>\n   <a href=\"https://www.npmjs.com/package/@pgsql/lint\"><img height=\"20\" src=\"https://img.shields.io/github/package-json/v/constructive-io/pgsql-parser?filename=packages%2Flint%2Fpackage.json\"/></a>\n</p>\n\nA source-level SQL / PL/pgSQL **convention linter**. It reasons about the *text*\nof a `CREATE FUNCTION` definition — from its AST — and carries **no `pg` /\ncatalog dependency**, so the exact same engine runs over a definition in a\nmigration, an editor buffer, a pre-commit hook, or one read from a live catalog\nvia `pg_get_functiondef`.\n\n## Installation\n\n```bash\nnpm install @pgsql/lint\n```\n\n## Rules\n\n| Code | Id | Flags |\n|------|----|-------|\n| `C1` | `no-set-search-path` | `SET search_path` clause, or `set_config('search_path', …)` |\n| `C2` | `no-variable-conflict` | a PL/pgSQL `#variable_conflict` directive |\n| `C3` | `require-qualified-refs` | an unqualified relation reference (`FROM users` → `FROM app_public.users`) |\n| `C4` | `no-dynamic-sql` | `EXECUTE`, `EXECUTE … USING`, `FOR … IN EXECUTE` |\n\nThe rules encode a single discipline: never depend on `search_path` — fully\nqualify everything (`C1` + `C3`) — don't paper over ambiguity (`C2`), and treat\ndynamic SQL as opaque and exceptional (`C4`).\n\n## CLI\n\n```bash\npgsql-lint path/to/migrations           # a directory (scanned recursively for .sql)\npgsql-lint schema.sql other.sql         # explicit files\npgsql-lint . --rules no-dynamic-sql     # only some rules\npgsql-lint . --warn require-qualified-refs   # downgrade to a warning (won't fail)\npgsql-lint . --off C2                        # disable a rule (by id or code)\npgsql-lint . --json                     # machine-readable\npgsql-lint . --ignore 'sql/,**/generated/**' # exclude generated trees\npgsql-lint --changed                    # only .sql that this branch touched\npgsql-lint --changed origin/main        # …against an explicit base\n```\n\nExit code is `1` when any **error**-severity (and non-waived) finding remains,\n`0` otherwise — drop it straight into CI. `--warn` findings print but don't fail.\n\n### Changed files only\n\n`--changed[=<base>]` lints just the `.sql` files a branch touched, so a CI gate\ncosts a second instead of scanning the whole tree. The base defaults to the pull\nrequest's base branch (`$GITHUB_BASE_REF`) and otherwise to the repository's\ndefault branch; the diff is taken against `git merge-base HEAD <base>`, so\ncommits landed on the base branch afterwards don't widen the set. Uncommitted and\nuntracked changes are included, deleted/renamed-away paths are dropped, and a\nshallow clone or detached checkout (no resolvable base) falls back to working-tree\nchanges only. Nothing changed is an exit-0 pass.\n\nDetection is [`git-changed`](https://npmjs.com/package/git-changed), shared with\n`pgpm package --check`, so the two agree on what \"changed\" means.\n\n### Config file\n\n`.pgsqllintrc.json`, discovered by walking up from the working directory (or\npassed with `--config <file>`; `--no-config` skips discovery). The keys mirror the\nflags, and any flag overrides the file:\n\n```json\n{\n  \"extends\": \"./ci/lint-base.json\",\n  \"paths\": [\"packages\", \"application/app\"],\n  \"ignore\": [\"sql/\", \"application/constructive/\", \"**/generated/**\"],\n  \"warn\": [\"require-qualified-refs\"],\n  \"off\": [\"C2\"]\n}\n```\n\n`paths` supplies the default targets when none are given on the command line, so\n`pgsql-lint` and `pgsql-lint --changed` need no arguments. `extends` names another\nconfig *file* — a path relative to the file that declared it, or an npm module —\nand the inheriting file wins key by key. Ignore patterns are gitignore-flavoured\nglobs relative to the config file's directory: `*` within a segment, `**` across\nsegments, a plain path excludes the whole subtree, and an unanchored pattern\nmatches at any segment boundary (`/` anchors it to the root).\n\n## Suppressions\n\nESLint / Prettier-style comments, authored in the function body (they survive\n`pg_get_functiondef`). The keyword is `pgsql-lint` (`safegres` is also accepted):\n\n```sql\n-- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: building an IN-list of ints\nEXECUTE format('SELECT … WHERE id = ANY(%L)', ids);\n```\n\nForms: `disable-next-line`, `disable-line`, `disable` … `enable` (a range), and\n`disable-file`. A directive with no rule listed applies to every rule; a reason\nfollows a second `--` or a `:`.\n\n`no-dynamic-sql` **requires** a reason: a reasonless waiver does not silence it,\nso an approved use always documents *why* (`lookup-only` / `codegen`). Suppressed\nfindings are reported as *acknowledged* accepted-risk, never dropped.\n\n## Programmatic API\n\n```ts\nimport { lintDefinition, lintFiles, lintSqlText } from '@pgsql/lint';\n\n// one definition (e.g. from pg_get_functiondef)\nconst { problems, suppressed } = await lintDefinition(defText, 'plpgsql');\n\n// a SQL source string with many statements\nconst report = await lintSqlText(migrationSql);\n\n// files / directories on disk\nconst reports = await lintFiles(['./migrations']);\n```\n\n## Custom rules & severity (building an ecosystem)\n\nRules are **injected as values** — never discovered by a magic npm package name.\nA rule is a plain object; publish it, `import` it, and pass it to `createLinter`.\nSeverity is *configuration* (ESLint-style `off` / `warn` / `error`), keyed by\nrule id or code, so a consumer stays in full control of how loud each rule is:\n\n```ts\nimport { createLinter, defineRule, LINT_RULES } from '@pgsql/lint';\n\nconst noWritesInView = defineRule({\n  id: 'no-writes-in-view',\n  code: 'X1',\n  title: 'views must be read-only',\n  reasonRequired: false,\n  run: (unit) => [/* … inspect unit.fragments / unit.dynamicSql … */]\n});\n\nconst linter = createLinter({\n  rules: [...LINT_RULES, noWritesInView],\n  severity: { 'require-qualified-refs': 'warn', C2: 'off' }\n});\n\nawait linter.lintFiles(['./migrations']);   // also lintDefinition / lintSqlText / lintSource\n```\n\n### Source adapters\n\nRules are pure `unit → problems`; an **adapter** decides *where* the definitions\ncome from. `@pgsql/lint` ships `filesAdapter` and `sqlTextAdapter`; a consumer\n(e.g. safegres, reading a live catalog via `pg_get_functiondef`) implements the\n`SourceAdapter` interface and passes it to `linter.lintSource(adapter)`.\n\n```ts\ninterface SourceAdapter {\n  id: string;\n  definitions: () => Promise<LintDefinitionInput[]> | LintDefinitionInput[];\n}\n```\n\n---\n\n**🛠 Built by the [Constructive](https://constructive.io) team — creators of modular Postgres tooling for secure, composable backends. If you like our work, contribute on [GitHub](https://github.com/constructive-io).**\n\n## Related\n\n* [pgpm](https://pgpm.dev): A Postgres Package Manager that brings modular development to PostgreSQL with reusable packages, deterministic migrations, recursive dependency resolution, and tag-aware versioning.\n* [pgsql-test](https://www.npmjs.com/package/pgsql-test): Instant, isolated PostgreSQL databases for each test with automatic transaction rollbacks, context switching, and clean seeding for fast, reliable database testing.\n* [pgsql-seed](https://www.npmjs.com/package/pgsql-seed): PostgreSQL seeding utilities for CSV, JSON, SQL data loading, and pgpm deployment.\n* [pgsql-parser](https://www.npmjs.com/package/pgsql-parser): The real PostgreSQL parser for Node.js, providing symmetric parsing and deparsing of SQL statements with actual PostgreSQL parser integration.\n* [pgsql-deparser](https://www.npmjs.com/package/pgsql-deparser): A streamlined tool designed for converting PostgreSQL ASTs back into SQL queries, focusing solely on deparser functionality to complement `pgsql-parser`.\n* [@pgsql/parser](https://www.npmjs.com/package/@pgsql/parser): Multi-version PostgreSQL parser with dynamic version selection at runtime, supporting PostgreSQL 15, 16, and 17 in a single package.\n* [@pgsql/types](https://www.npmjs.com/package/@pgsql/types): Offers TypeScript type definitions for PostgreSQL AST nodes, facilitating type-safe construction, analysis, and manipulation of ASTs.\n* [@pgsql/enums](https://www.npmjs.com/package/@pgsql/enums): Provides TypeScript enum definitions for PostgreSQL constants, enabling type-safe usage of PostgreSQL enums and constants in your applications.\n* [@pgsql/utils](https://www.npmjs.com/package/@pgsql/utils): A comprehensive utility library for PostgreSQL, offering type-safe AST node creation and enum value conversions, simplifying the construction and manipulation of PostgreSQL ASTs.\n* [@pgsql/traverse](https://www.npmjs.com/package/@pgsql/traverse): PostgreSQL AST traversal utilities for pgsql-parser, providing a visitor pattern for traversing PostgreSQL Abstract Syntax Tree nodes, similar to Babel's traverse functionality but specifically designed for PostgreSQL AST structures.\n* [pg-proto-parser](https://www.npmjs.com/package/pg-proto-parser): A TypeScript tool that parses PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums.\n* [libpg-query](https://github.com/constructive-io/libpg-query-node): The real PostgreSQL parser exposed for Node.js, used primarily in `pgsql-parser` for parsing and deparsing SQL queries.\n\n## Disclaimer\n\nAS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED \"AS IS\", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND.\n\nNo developer or entity involved in creating Software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the Software code or Software CLI, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value.\n","readmeFilename":"README.md"}