{"_id":"@pgsql/quotes","_rev":"6-e44482a3198fa7b92fdf49d633c386e0","name":"@pgsql/quotes","dist-tags":{"latest":"18.2.4"},"versions":{"17.1.0":{"name":"@pgsql/quotes","version":"17.1.0","keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/quotes@17.1.0","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"dist":{"shasum":"a1282bb982adb4138f072142bf9cfdbc6c4081f6","tarball":"https://registry.npmjs.org/@pgsql/quotes/-/quotes-17.1.0.tgz","fileCount":12,"integrity":"sha512-J/H+LcrENBpYgL45WW6aTjb5Yk4tX4+AmB2/k8KZa+Zh3wiCtqmNIag+HZz5HmWaF6EZK9ZGC95NBD1fs+rUvg==","signatures":[{"sig":"MEYCIQD4Jfnz/AI5w7K6/RHVBrFUnQW679mErf+HdkXajjprlQIhAPQGirTq5U4aLGmG4FsRT9c3gIXxI/+2fX5v1dkZ9W9q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61724},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"ab3eacdb20a9378b5d7aade0035e07b2edf85b90","scripts":{"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","keywords":"ts-node scripts/keywords.ts","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":"PostgreSQL identifier quoting and keyword classification utilities","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/quotes_17.1.0_1772596391238_0.5838626922912982","host":"s3://npm-registry-packages-npm-production"}},"18.0.0":{"name":"@pgsql/quotes","version":"18.0.0","keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/quotes@18.0.0","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"dist":{"shasum":"929feb83891cf04a57874a5bff88211989ca5ad1","tarball":"https://registry.npmjs.org/@pgsql/quotes/-/quotes-18.0.0.tgz","fileCount":12,"integrity":"sha512-lI3RAl7t47R4a0SEB6Z0RSB93Rel7IEh9gd7j9u//94dcGpBAJSubBhwRbTU8AN0GEElkg8kl5AIyMJnXQhQCQ==","signatures":[{"sig":"MEUCIQDCI+loQblDdxXvN57iO9m4DtM6/RNe5JINrUoA7Nf4DgIgNRgTso6ZVmQVYITX/O28/Ij2ZiPdYKPrzDexY4zp3m4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61451},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"f700ee16d18aeacd2788eeb4410d73928cd11a5f","scripts":{"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","keywords":"ts-node scripts/keywords.ts","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":"PostgreSQL identifier quoting and keyword classification utilities","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/quotes_18.0.0_1784667809250_0.26443936774180554","host":"s3://npm-registry-packages-npm-production"}},"18.1.0":{"name":"@pgsql/quotes","version":"18.1.0","keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/quotes@18.1.0","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"dist":{"shasum":"9ebe958beb982e6b254eaae9391209ed61bf8537","tarball":"https://registry.npmjs.org/@pgsql/quotes/-/quotes-18.1.0.tgz","fileCount":12,"integrity":"sha512-wZcMP1QHiQbWWKOw4nfvZ74xUSz/9jqeSUXVnoR1saI5M0D+iYbiuOlfNDyYmziLwgEkCuSJLZK1dZ+eQCwgAA==","signatures":[{"sig":"MEQCIBxK50PLAxYiyOdJd7YDAUEdARPKAG6YPil0ZM8zbVtJAiAwAXhwTgqlXn5KK0KNFcK/HJd418qQcFd4KKukR4mNvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61451},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"13f064c263eb304d704fd21148add24a9d60a8ee","scripts":{"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","keywords":"ts-node scripts/keywords.ts","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":"PostgreSQL identifier quoting and keyword classification utilities","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/quotes_18.1.0_1784669862820_0.9920888695320393","host":"s3://npm-registry-packages-npm-production"}},"18.2.0":{"name":"@pgsql/quotes","version":"18.2.0","keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/quotes@18.2.0","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"dist":{"shasum":"d3fa7896aa9d91db845c94ca7a8bf5d725f14415","tarball":"https://registry.npmjs.org/@pgsql/quotes/-/quotes-18.2.0.tgz","fileCount":12,"integrity":"sha512-iAbNljBqhOu1zwcCGrZlS+5asih64d5QZwle6fVOVK6KqPYP6byw59xa8+tSGH/wj+PWrA0GzMB1ak6OWzEcBA==","signatures":[{"sig":"MEQCIFwjy7EYj/NhuZlJGS3BoBv/PVCvAay4k1P46gTzEUFvAiAWFq33ATKElVTNc1vdvuADkzahdWq1jeU0lVCZTBbs5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61451},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"a60df59baaf11fbfe516b0ed25280d5854ad00e9","scripts":{"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","keywords":"ts-node scripts/keywords.ts","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":"PostgreSQL identifier quoting and keyword classification utilities","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/quotes_18.2.0_1785547905480_0.8519830842341618","host":"s3://npm-registry-packages-npm-production"}},"18.2.1":{"name":"@pgsql/quotes","version":"18.2.1","keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"author":"Constructive <developers@constructive.io>","license":"MIT","_id":"@pgsql/quotes@18.2.1","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"homepage":"https://github.com/constructive-io/pgsql-parser","bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"dist":{"shasum":"780f1a2fd9a661acff05f5a857a08d4af99358de","tarball":"https://registry.npmjs.org/@pgsql/quotes/-/quotes-18.2.1.tgz","fileCount":12,"integrity":"sha512-tsSWkNAKL5aTMrgRKE0dYYlbeZMLVcN9pgjq4TYDmCHzPP3I6p1/pV09Fn44Pd7r6pdkvehYHaoLWQq4jw4I9Q==","signatures":[{"sig":"MEYCIQDz1JR+wbNqzLm165MrdOnzqJGQFDiTMpXBU1/TDY0pvAIhAPF+ii5KZu6vx1ZMgg4NpOmZKoKiIZuyzG0Du8qXQRaB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61451},"main":"index.js","types":"index.d.ts","module":"esm/index.js","gitHead":"b6105874628cc7b8517c1ebbd99e9ad6fe786976","scripts":{"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","keywords":"ts-node scripts/keywords.ts","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":"PostgreSQL identifier quoting and keyword classification utilities","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public","directory":"dist"},"_hasShrinkwrap":false,"devDependencies":{"makage":"^0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/quotes_18.2.1_1785738536249_0.47819110182767655","host":"s3://npm-registry-packages-npm-production"}},"18.2.4":{"name":"@pgsql/quotes","version":"18.2.4","author":{"name":"Constructive","email":"developers@constructive.io"},"description":"PostgreSQL identifier quoting and keyword classification utilities","main":"index.js","module":"esm/index.js","types":"index.d.ts","homepage":"https://github.com/constructive-io/pgsql-parser","license":"MIT","publishConfig":{"access":"public","directory":"dist"},"repository":{"type":"git","url":"git+https://github.com/constructive-io/pgsql-parser.git"},"bugs":{"url":"https://github.com/constructive-io/pgsql-parser/issues"},"scripts":{"copy":"makage assets","clean":"makage clean dist","prepublishOnly":"npm run build","build":"npm run clean && tsc && tsc -p tsconfig.esm.json && npm run copy","build:dev":"npm run clean && tsc --declarationMap && tsc -p tsconfig.esm.json && npm run copy","lint":"eslint . --fix","test":"jest","test:watch":"jest --watch","keywords":"ts-node scripts/keywords.ts"},"devDependencies":{"makage":"^0.5.1"},"keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"gitHead":"30547f42aa4eb3b5677701b921cca23378452b0d","_id":"@pgsql/quotes@18.2.4","_nodeVersion":"22.13.1","_npmVersion":"lerna/10.0.0/node@v22.13.1+arm64 (darwin)","dist":{"integrity":"sha512-muCDdPu/bM/f9d7IquBNfkMgiRPehv6vvjdhSMxXeVKwJKPX9xIscDu11ju15s7UeEXoWntE8zrSaR9wQ9wgCg==","shasum":"c3789fcebd0c274a452c4f27c61c09e818d95a64","tarball":"https://registry.npmjs.org/@pgsql/quotes/-/quotes-18.2.4.tgz","fileCount":12,"unpackedSize":61451,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDrDa4m/CvqMX4pcAImUAYTn00vOrRtz7VCBmoj1Mpl8gIgL0hjtiOq+5EYacNpa7sSkXp5WCx+owoaEt9idA3ljm4="}]},"_npmUser":{"name":"pyramation","email":"pyramation@gmail.com"},"directories":{},"maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/quotes_18.2.4_1786140178215_0.9196976308265197"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T03:53:11.167Z","modified":"2026-08-07T22:02:58.569Z","17.1.0":"2026-03-04T03:53:11.483Z","18.0.0":"2026-07-21T21:03:29.388Z","18.1.0":"2026-07-21T21:37:42.971Z","18.2.0":"2026-08-01T01:31:45.629Z","18.2.1":"2026-08-03T06:28:56.412Z","18.2.4":"2026-08-07T22:02:58.366Z"},"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","keywords":["sql","postgres","postgresql","pg","quote","identifier","keyword","quoting"],"repository":{"type":"git","url":"git+https://github.com/constructive-io/pgsql-parser.git"},"description":"PostgreSQL identifier quoting and keyword classification utilities","maintainers":[{"name":"pyramation","email":"pyramation@gmail.com"}],"readme":"# @pgsql/quotes\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\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</p>\n\n\nPostgreSQL identifier quoting and keyword classification utilities. A faithful TypeScript port of PostgreSQL's `quote_identifier()` from `ruleutils.c`, with full keyword classification from `kwlist.h`.\n\n## Installation\n\n```bash\nnpm install @pgsql/quotes\n```\n\n## Usage\n\n### Quoting Identifiers\n\n```typescript\nimport { QuoteUtils } from '@pgsql/quotes';\n\n// Simple identifiers are not quoted\nQuoteUtils.quoteIdentifier('my_table');      // 'my_table'\n\n// Reserved keywords are quoted\nQuoteUtils.quoteIdentifier('select');        // '\"select\"'\nQuoteUtils.quoteIdentifier('table');         // '\"table\"'\n\n// Unreserved keywords are not quoted\nQuoteUtils.quoteIdentifier('schema');        // 'schema'\n\n// Identifiers with uppercase or special chars are quoted\nQuoteUtils.quoteIdentifier('MyTable');       // '\"MyTable\"'\nQuoteUtils.quoteIdentifier('my-table');      // '\"my-table\"'\n\n// Embedded double quotes are escaped\nQuoteUtils.quoteIdentifier('a\"b');           // '\"a\"\"b\"'\n```\n\n### Qualified Names\n\n```typescript\nimport { QuoteUtils } from '@pgsql/quotes';\n\n// Schema-qualified names\nQuoteUtils.quoteQualifiedIdentifier('public', 'my_table');\n// 'public.my_table'\n\n// Dotted names (first part strict, rest relaxed)\nQuoteUtils.quoteDottedName(['public', 'my_table']);\n// 'public.my_table'\n\n// Keywords after dot don't need quoting (PostgreSQL grammar rule)\nQuoteUtils.quoteDottedName(['select', 'select']);\n// '\"select\".select'\n```\n\n### Type Names\n\n```typescript\nimport { QuoteUtils } from '@pgsql/quotes';\n\n// Type names allow col_name and type_func_name keywords unquoted\nQuoteUtils.quoteIdentifierTypeName('json');       // 'json'\nQuoteUtils.quoteIdentifierTypeName('integer');    // 'integer'\nQuoteUtils.quoteIdentifierTypeName('boolean');    // 'boolean'\n\n// Only reserved keywords are quoted in type position\nQuoteUtils.quoteIdentifierTypeName('select');     // '\"select\"'\n\n// Schema-qualified type names\nQuoteUtils.quoteTypeDottedName(['public', 'json']); // 'public.json'\n```\n\n### String Escaping\n\n```typescript\nimport { QuoteUtils } from '@pgsql/quotes';\n\n// Escape string literals\nQuoteUtils.escape('hello');        // \"'hello'\"\nQuoteUtils.escape(\"it's\");        // \"'it''s'\"\n\n// E-string formatting (auto-detects need for E prefix)\nQuoteUtils.formatEString('a\\\\b'); // \"E'a\\\\\\\\b'\"\nQuoteUtils.formatEString('hello'); // \"'hello'\"\n```\n\n### Keyword Classification\n\n```typescript\nimport { keywordKindOf } from '@pgsql/quotes';\nimport type { KeywordKind } from '@pgsql/quotes';\n\nkeywordKindOf('select');  // 'RESERVED_KEYWORD'\nkeywordKindOf('schema');  // 'UNRESERVED_KEYWORD'\nkeywordKindOf('json');    // 'COL_NAME_KEYWORD'\nkeywordKindOf('join');    // 'TYPE_FUNC_NAME_KEYWORD'\nkeywordKindOf('foo');     // 'NO_KEYWORD'\n```\n\n### Raw Keyword Sets\n\n```typescript\nimport {\n  RESERVED_KEYWORDS,\n  UNRESERVED_KEYWORDS,\n  COL_NAME_KEYWORDS,\n  TYPE_FUNC_NAME_KEYWORDS,\n} from '@pgsql/quotes';\n\nRESERVED_KEYWORDS.has('select');   // true\nCOL_NAME_KEYWORDS.has('json');     // true\n```\n\n## API\n\n### QuoteUtils\n\n| Method | Description |\n|--------|-------------|\n| `escape(literal)` | Wraps a string in single quotes, escaping embedded quotes |\n| `escapeEString(value)` | Escapes backslashes and single quotes for E-string literals |\n| `formatEString(value)` | Auto-detects and formats E-prefixed string literals |\n| `needsEscapePrefix(value)` | Checks if a value needs E-prefix escaping |\n| `quoteIdentifier(ident)` | Quotes an identifier if needed (port of PG's `quote_identifier`) |\n| `quoteIdentifierAfterDot(ident)` | Quotes for lexical reasons only (post-dot position) |\n| `quoteDottedName(parts)` | Quotes a multi-part dotted name (e.g., `schema.table`) |\n| `quoteQualifiedIdentifier(qualifier, ident)` | Quotes a two-part qualified name |\n| `quoteIdentifierTypeName(ident)` | Quotes an identifier in type-name context |\n| `quoteTypeDottedName(parts)` | Quotes a multi-part dotted type name |\n\n### keywordKindOf(word)\n\nReturns the keyword classification for a given word. Case-insensitive.\n\nReturns one of: `'NO_KEYWORD'`, `'UNRESERVED_KEYWORD'`, `'COL_NAME_KEYWORD'`, `'TYPE_FUNC_NAME_KEYWORD'`, `'RESERVED_KEYWORD'`.\n\n## Updating Keywords\n\nTo regenerate the keyword list from a PostgreSQL source tree:\n\n```bash\nnpm run keywords -- ~/path/to/postgres/src/include/parser/kwlist.h\n```\n\nThis parses PostgreSQL's `kwlist.h` and regenerates `src/kwlist.ts`.\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"}