New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@pgsql/scripts

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pgsql/scripts

Migration script generation for PostgreSQL — derive revert and verify scripts from classified statement facts

Source
npmnpm
Version
18.0.1
Version published
Weekly downloads
7.1K
83.89%
Maintainers
1
Weekly downloads
 
Created
Source

@pgsql/scripts

Migration script generation for PostgreSQL: derive revert and verify scripts from the classified statement facts of a deploy script (classifyStatements in @pgsql/transform).

import { classifyStatements } from '@pgsql/transform';
import { revertFor, verifyFor } from '@pgsql/scripts';
import { loadModule } from 'plpgsql-parser';

await loadModule();
const facts = classifyStatements(deploySql);

const { sql: revertSql, warnings } = revertFor(facts);
const { sql: verifySql } = verifyFor(facts);
  • revertFor(facts) — mechanical inverses in reverse topological order of the statement dependency graph, so dependents are dropped before their dependencies and no CASCADE is ever needed. Inverses are built as AST nodes and deparsed (pgsql-deparser), never string-templated.
  • verifyFor(facts) — one existence check per created object, each raising on failure via SELECT 1/(CASE WHEN <exists> THEN 1 ELSE 0 END);.

Nothing outside the supported vocabulary is ever guessed at: revertFor emits a -- revert not derivable: <reason> comment plus a warning; verifyFor emits nothing plus a warning. The list is exported as SUPPORTED_STATEMENTS (and SUPPORTED_NODE_TAGS).

Supported statements

StatementRevertVerify
CREATE SCHEMADROP SCHEMAinformation_schema.schemata
CREATE TABLEDROP TABLEto_regclass
CREATE VIEWDROP VIEWto_regclass
CREATE INDEXDROP INDEXto_regclass
CREATE SEQUENCEDROP SEQUENCEto_regclass
CREATE TYPE (composite, enum, range)DROP TYPEto_regtype
CREATE DOMAINDROP DOMAINto_regtype
CREATE FUNCTION / PROCEDUREDROP FUNCTION / PROCEDURE with input signature (overload safe)to_regprocedure
CREATE TRIGGERDROP TRIGGER ... ON tablepg_trigger
CREATE POLICYDROP POLICY ... ON tablepg_policies
CREATE EXTENSIONDROP EXTENSIONpg_extension
CREATE ROLEDROP ROLEpg_roles
ALTER TABLE ... ADD COLUMNDROP COLUMNinformation_schema.columns
ALTER TABLE ... ADD CONSTRAINT (named)DROP CONSTRAINTinformation_schema.table_constraints
ALTER TABLE ... ENABLE / FORCE ROW LEVEL SECURITYDISABLE / NO FORCEpg_class.relrowsecurity / relforcerowsecurity
GRANT privileges (tables, sequences, functions, schemas)REVOKE same privilegeshas_table_privilege / has_function_privilege / has_schema_privilege
GRANT role TO roleREVOKE role FROM rolepg_auth_members
COMMENT ONCOMMENT ON ... IS NULL—

Not derivable (warned, never guessed): REVOKE, unnamed constraints, ALTER ... SET with unknown prior value, arbitrary DML, dynamic SQL.

🛠 Built by the Constructive team — creators of modular Postgres tooling for secure, composable backends. If you like our work, contribute on GitHub.

  • pgpm: A Postgres Package Manager that brings modular development to PostgreSQL with reusable packages, deterministic migrations, recursive dependency resolution, and tag-aware versioning.
  • pgsql-test: Instant, isolated PostgreSQL databases for each test with automatic transaction rollbacks, context switching, and clean seeding for fast, reliable database testing.
  • pgsql-seed: PostgreSQL seeding utilities for CSV, JSON, SQL data loading, and pgpm deployment.
  • pgsql-parser: The real PostgreSQL parser for Node.js, providing symmetric parsing and deparsing of SQL statements with actual PostgreSQL parser integration.
  • pgsql-deparser: A streamlined tool designed for converting PostgreSQL ASTs back into SQL queries, focusing solely on deparser functionality to complement pgsql-parser.
  • @pgsql/parser: Multi-version PostgreSQL parser with dynamic version selection at runtime, supporting PostgreSQL 15, 16, and 17 in a single package.
  • @pgsql/types: Offers TypeScript type definitions for PostgreSQL AST nodes, facilitating type-safe construction, analysis, and manipulation of ASTs.
  • @pgsql/enums: Provides TypeScript enum definitions for PostgreSQL constants, enabling type-safe usage of PostgreSQL enums and constants in your applications.
  • @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.
  • @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.
  • pg-proto-parser: A TypeScript tool that parses PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums.
  • libpg-query: The real PostgreSQL parser exposed for Node.js, used primarily in pgsql-parser for parsing and deparsing SQL queries.

Disclaimer

AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND.

No 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.

Keywords

sql

FAQs

Package last updated on 31 Jul 2026

Related posts