pg-dump-parser 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortSchemaObjectsByScope = exports.sortSchemaObjects = exports.groupAndSortSchemaObjects = void 0;
4
+ const scopeSchemaObject_1 = require("./scopeSchemaObject");
5
+ /**
6
+ * Sort order for different schema object types
7
+ */
8
+ const TYPE_SORT_ORDER = {
9
+ // ACLs and other
10
+ ACL: 18,
11
+ AGGREGATE: 6,
12
+ CAST: 22,
13
+ // Comments
14
+ COMMENT: 17,
15
+ // Constraints (sorted by type)
16
+ CONSTRAINT: 11,
17
+ // Table modifications and defaults
18
+ DEFAULT: 10,
19
+ 'DEFAULT ACL': 19,
20
+ // Extensions first
21
+ EXTENSION: 1,
22
+ 'FK CONSTRAINT': 12,
23
+ // Functions and procedures
24
+ FUNCTION: 4,
25
+ // Indexes
26
+ INDEX: 13,
27
+ 'MATERIALIZED VIEW': 15,
28
+ PROCEDURE: 5,
29
+ // Publications and casts
30
+ PUBLICATION: 21,
31
+ // Types and schemas
32
+ SCHEMA: 2,
33
+ SEQUENCE: 8,
34
+ 'SEQUENCE OWNED BY': 9,
35
+ // Tables and sequences
36
+ TABLE: 7,
37
+ // Table attachments
38
+ 'TABLE ATTACH': 20,
39
+ 'TEXT SEARCH CONFIGURATION': 24,
40
+ // Text search
41
+ 'TEXT SEARCH DICTIONARY': 23,
42
+ // Triggers
43
+ TRIGGER: 16,
44
+ TYPE: 3,
45
+ // Views
46
+ VIEW: 14,
47
+ };
48
+ /**
49
+ * Get the sort key for a constraint based on its type
50
+ */
51
+ const getConstraintSortKey = (sql) => {
52
+ const upperSql = sql.toUpperCase();
53
+ if (upperSql.includes('PRIMARY KEY')) {
54
+ return '1_PRIMARY';
55
+ }
56
+ else if (upperSql.includes('UNIQUE')) {
57
+ return '2_UNIQUE';
58
+ }
59
+ else if (upperSql.includes('FOREIGN KEY')) {
60
+ return '3_FOREIGN';
61
+ }
62
+ else if (upperSql.includes('CHECK')) {
63
+ return '4_CHECK';
64
+ }
65
+ else if (upperSql.includes('EXCLUDE')) {
66
+ return '5_EXCLUDE';
67
+ }
68
+ return '9_OTHER';
69
+ };
70
+ /**
71
+ * Compare two schema objects for sorting
72
+ */
73
+ const compareSchemaObjects = (a, b, schemaObjects) => {
74
+ // Handle non-attributed headers (like database dump headers)
75
+ if (!('Type' in a.header) && !('Type' in b.header)) {
76
+ return 0;
77
+ }
78
+ if (!('Type' in a.header)) {
79
+ return -1;
80
+ }
81
+ if (!('Type' in b.header)) {
82
+ return 1;
83
+ }
84
+ const aHeader = a.header;
85
+ const bHeader = b.header;
86
+ // First, sort by type order
87
+ const aTypeOrder = TYPE_SORT_ORDER[aHeader.Type] ?? 999;
88
+ const bTypeOrder = TYPE_SORT_ORDER[bHeader.Type] ?? 999;
89
+ if (aTypeOrder !== bTypeOrder) {
90
+ return aTypeOrder - bTypeOrder;
91
+ }
92
+ // For the same type, apply specific sorting rules
93
+ // Sort by schema first (null schemas come first)
94
+ const aSchema = aHeader.Schema ?? '';
95
+ const bSchema = bHeader.Schema ?? '';
96
+ if (aSchema !== bSchema) {
97
+ if (aSchema === '') {
98
+ return -1;
99
+ }
100
+ if (bSchema === '') {
101
+ return 1;
102
+ }
103
+ return aSchema.localeCompare(bSchema);
104
+ }
105
+ // Special handling for constraints
106
+ if (aHeader.Type === 'CONSTRAINT' || aHeader.Type === 'FK CONSTRAINT') {
107
+ // Extract table name from constraint name (format: "table constraint_name")
108
+ const aTableName = aHeader.Name.split(' ')[0];
109
+ const bTableName = bHeader.Name.split(' ')[0];
110
+ if (aTableName !== bTableName) {
111
+ return aTableName.localeCompare(bTableName);
112
+ }
113
+ // Within the same table, sort by constraint type
114
+ const aConstraintKey = getConstraintSortKey(a.sql);
115
+ const bConstraintKey = getConstraintSortKey(b.sql);
116
+ if (aConstraintKey !== bConstraintKey) {
117
+ return aConstraintKey.localeCompare(bConstraintKey);
118
+ }
119
+ }
120
+ // Special handling for indexes
121
+ if (aHeader.Type === 'INDEX') {
122
+ // Group indexes by their target table
123
+ const aScopeObject = (0, scopeSchemaObject_1.scopeSchemaObject)(schemaObjects, a);
124
+ const bScopeObject = (0, scopeSchemaObject_1.scopeSchemaObject)(schemaObjects, b);
125
+ if (aScopeObject && bScopeObject) {
126
+ const aTableName = aScopeObject.name;
127
+ const bTableName = bScopeObject.name;
128
+ if (aTableName !== bTableName) {
129
+ return aTableName.localeCompare(bTableName);
130
+ }
131
+ }
132
+ }
133
+ // Special handling for comments - sort by what they comment on
134
+ if (aHeader.Type === 'COMMENT') {
135
+ const aTarget = aHeader.Name;
136
+ const bTarget = bHeader.Name;
137
+ // Extract the type of comment (TABLE, COLUMN, etc.)
138
+ const aCommentType = aTarget.split(' ')[0];
139
+ const bCommentType = bTarget.split(' ')[0];
140
+ if (aCommentType !== bCommentType) {
141
+ // Define order for comment types
142
+ const commentTypeOrder = {
143
+ AGGREGATE: 6,
144
+ COLUMN: 8,
145
+ EXTENSION: 1,
146
+ FUNCTION: 4,
147
+ INDEX: 10,
148
+ MATERIALIZED: 12,
149
+ PROCEDURE: 5,
150
+ SCHEMA: 2,
151
+ SEQUENCE: 9,
152
+ TABLE: 7,
153
+ TYPE: 3,
154
+ VIEW: 11,
155
+ };
156
+ const aOrder = commentTypeOrder[aCommentType] ?? 999;
157
+ const bOrder = commentTypeOrder[bCommentType] ?? 999;
158
+ if (aOrder !== bOrder) {
159
+ return aOrder - bOrder;
160
+ }
161
+ }
162
+ // For COLUMN comments, sort by table name then column position
163
+ if (aCommentType === 'COLUMN') {
164
+ const aMatch = aTarget.match(/COLUMN\s+(\S+\.\S+)\.(.+)/u);
165
+ const bMatch = bTarget.match(/COLUMN\s+(\S+\.\S+)\.(.+)/u);
166
+ if (aMatch && bMatch) {
167
+ const aTable = aMatch[1];
168
+ const bTable = bMatch[1];
169
+ if (aTable !== bTable) {
170
+ return aTable.localeCompare(bTable);
171
+ }
172
+ // Same table, sort by column name
173
+ const aColumn = aMatch[2];
174
+ const bColumn = bMatch[2];
175
+ return aColumn.localeCompare(bColumn);
176
+ }
177
+ }
178
+ }
179
+ // Finally, sort by name
180
+ return aHeader.Name.localeCompare(bHeader.Name);
181
+ };
182
+ /**
183
+ * Groups schema objects by their scope (table, view, etc.) and sorts them
184
+ */
185
+ const groupAndSortSchemaObjects = (schemaObjects) => {
186
+ const grouped = new Map();
187
+ // First, group objects by their scope
188
+ for (const schemaObject of schemaObjects) {
189
+ const scope = (0, scopeSchemaObject_1.scopeSchemaObject)(schemaObjects, schemaObject);
190
+ let key;
191
+ if (scope) {
192
+ // Create a unique key for each scope
193
+ key = `${scope.type}:${scope.schema ?? 'null'}:${scope.name}`;
194
+ }
195
+ else if ('Type' in schemaObject.header) {
196
+ // For objects without a scope, group by type
197
+ const header = schemaObject.header;
198
+ key = `_UNSCOPED:${header.Type}:${header.Schema ?? 'null'}:${header.Name}`;
199
+ }
200
+ else {
201
+ // Title headers
202
+ key = '_TITLE';
203
+ }
204
+ if (!grouped.has(key)) {
205
+ grouped.set(key, []);
206
+ }
207
+ const groupArray = grouped.get(key);
208
+ if (groupArray) {
209
+ groupArray.push(schemaObject);
210
+ }
211
+ }
212
+ // Sort objects within each group
213
+ for (const objects of grouped.values()) {
214
+ objects.sort((a, b) => compareSchemaObjects(a, b, schemaObjects));
215
+ }
216
+ // Sort the groups themselves
217
+ const sortedGrouped = new Map(
218
+ // eslint-disable-next-line unicorn/no-array-sort
219
+ [...grouped.entries()].sort(([keyA], [keyB]) => {
220
+ // Title headers first
221
+ if (keyA === '_TITLE') {
222
+ return -1;
223
+ }
224
+ if (keyB === '_TITLE') {
225
+ return 1;
226
+ }
227
+ // Then unscoped objects
228
+ if (keyA.startsWith('_UNSCOPED:') && !keyB.startsWith('_UNSCOPED:')) {
229
+ return -1;
230
+ }
231
+ if (!keyA.startsWith('_UNSCOPED:') && keyB.startsWith('_UNSCOPED:')) {
232
+ return 1;
233
+ }
234
+ // Sort by type, schema, then name
235
+ return keyA.localeCompare(keyB);
236
+ }));
237
+ return sortedGrouped;
238
+ };
239
+ exports.groupAndSortSchemaObjects = groupAndSortSchemaObjects;
240
+ /**
241
+ * Sorts an array of schema objects
242
+ */
243
+ const sortSchemaObjects = (schemaObjects) => {
244
+ const sorted = [...schemaObjects];
245
+ sorted.sort((a, b) => compareSchemaObjects(a, b, schemaObjects));
246
+ return sorted;
247
+ };
248
+ exports.sortSchemaObjects = sortSchemaObjects;
249
+ /**
250
+ * Sorts schema objects while preserving their grouping by scope
251
+ */
252
+ const sortSchemaObjectsByScope = (schemaObjects) => {
253
+ const grouped = (0, exports.groupAndSortSchemaObjects)(schemaObjects);
254
+ const result = [];
255
+ for (const objects of grouped.values()) {
256
+ result.push(...objects);
257
+ }
258
+ return result;
259
+ };
260
+ exports.sortSchemaObjectsByScope = sortSchemaObjectsByScope;
261
+ //# sourceMappingURL=sortSchemaObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortSchemaObjects.js","sourceRoot":"","sources":["../src/sortSchemaObjects.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAExD;;GAEG;AACH,MAAM,eAAe,GAA2B;IAC9C,iBAAiB;IACjB,GAAG,EAAE,EAAE;IAEP,SAAS,EAAE,CAAC;IACZ,IAAI,EAAE,EAAE;IAER,WAAW;IACX,OAAO,EAAE,EAAE;IACX,+BAA+B;IAC/B,UAAU,EAAE,EAAE;IACd,mCAAmC;IACnC,OAAO,EAAE,EAAE;IAEX,aAAa,EAAE,EAAE;IACjB,mBAAmB;IACnB,SAAS,EAAE,CAAC;IACZ,eAAe,EAAE,EAAE;IAEnB,2BAA2B;IAC3B,QAAQ,EAAE,CAAC;IAEX,UAAU;IACV,KAAK,EAAE,EAAE;IACT,mBAAmB,EAAE,EAAE;IAEvB,SAAS,EAAE,CAAC;IAEZ,yBAAyB;IACzB,WAAW,EAAE,EAAE;IACf,oBAAoB;IACpB,MAAM,EAAE,CAAC;IAET,QAAQ,EAAE,CAAC;IAEX,mBAAmB,EAAE,CAAC;IAEtB,uBAAuB;IACvB,KAAK,EAAE,CAAC;IACR,oBAAoB;IACpB,cAAc,EAAE,EAAE;IAElB,2BAA2B,EAAE,EAAE;IAE/B,cAAc;IACd,wBAAwB,EAAE,EAAE;IAC5B,WAAW;IACX,OAAO,EAAE,EAAE;IAEX,IAAI,EAAE,CAAC;IACP,QAAQ;IACR,IAAI,EAAE,EAAE;CACT,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAU,EAAE;IACnD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAC3B,CAAe,EACf,CAAe,EACf,aAA6B,EACrB,EAAE;IACV,6DAA6D;IAC7D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,MAA0B,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,MAA0B,CAAC;IAE7C,4BAA4B;IAC5B,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACxD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IAExD,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,kDAAkD;IAElD,iDAAiD;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACtE,4EAA4E;QAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,iDAAiD;QACjD,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAA,qCAAiB,EAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,IAAA,qCAAiB,EAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAEzD,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;YACrC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;YAErC,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAE7B,oDAAoD;QACpD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;YAClC,iCAAiC;YACjC,MAAM,gBAAgB,GAA2B;gBAC/C,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;YACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;YAErD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAE3D,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEzB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtC,CAAC;gBAED,kCAAkC;gBAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAE1B,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;GAEG;AACI,MAAM,yBAAyB,GAAG,CACvC,aAA6B,EACA,EAAE;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAElD,sCAAsC;IACtC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,qCAAiB,EAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAE7D,IAAI,GAAW,CAAC;QAChB,IAAI,KAAK,EAAE,CAAC;YACV,qCAAqC;YACrC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAChE,CAAC;aAAM,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACzC,6CAA6C;YAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,MAA0B,CAAC;YACvD,GAAG,GAAG,aAAa,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,GAAG,GAAG,QAAQ,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,6BAA6B;IAC7B,MAAM,aAAa,GAAG,IAAI,GAAG;IAC3B,iDAAiD;IACjD,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;QAC7C,sBAAsB;QACtB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,kCAAkC;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAjEW,QAAA,yBAAyB,6BAiEpC;AAEF;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAC/B,aAA6B,EACb,EAAE;IAClB,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IAElC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AARW,QAAA,iBAAiB,qBAQ5B;AAEF;;GAEG;AACI,MAAM,wBAAwB,GAAG,CACtC,aAA6B,EACb,EAAE;IAClB,MAAM,OAAO,GAAG,IAAA,iCAAyB,EAAC,aAAa,CAAC,CAAC;IACzD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,wBAAwB,4BAWnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sortSchemaObjects.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortSchemaObjects.test.d.ts","sourceRoot":"","sources":["../src/sortSchemaObjects.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const parsePgDump_1 = require("./parsePgDump");
7
+ const sortSchemaObjects_1 = require("./sortSchemaObjects");
8
+ const multiline_ts_1 = __importDefault(require("multiline-ts"));
9
+ const vitest_1 = require("vitest");
10
+ (0, vitest_1.describe)('sortSchemaObjects', () => {
11
+ (0, vitest_1.test)('sorts schema objects by type order', () => {
12
+ const dump = (0, multiline_ts_1.default) `
13
+ --
14
+ -- Name: foo; Type: TABLE; Schema: public; Owner: postgres
15
+ --
16
+
17
+ CREATE TABLE public.foo (
18
+ id integer NOT NULL,
19
+ name text NOT NULL
20
+ );
21
+
22
+
23
+ --
24
+ -- Name: bar; Type: INDEX; Schema: public; Owner: postgres
25
+ --
26
+
27
+ CREATE INDEX bar ON public.foo USING btree (name);
28
+
29
+
30
+ --
31
+ -- Name: baz; Type: EXTENSION; Schema: -; Owner: -
32
+ --
33
+
34
+ CREATE EXTENSION IF NOT EXISTS baz;
35
+
36
+
37
+ --
38
+ -- Name: qux; Type: CONSTRAINT; Schema: public; Owner: postgres
39
+ --
40
+
41
+ ALTER TABLE ONLY public.foo
42
+ ADD CONSTRAINT qux PRIMARY KEY (id);
43
+ `;
44
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
45
+ const sorted = (0, sortSchemaObjects_1.sortSchemaObjects)(schemaObjects);
46
+ // Extension should come first
47
+ (0, vitest_1.expect)(sorted[0].header).toMatchObject({ Name: 'baz', Type: 'EXTENSION' });
48
+ // Then table
49
+ (0, vitest_1.expect)(sorted[1].header).toMatchObject({ Name: 'foo', Type: 'TABLE' });
50
+ // Then constraint
51
+ (0, vitest_1.expect)(sorted[2].header).toMatchObject({ Name: 'qux', Type: 'CONSTRAINT' });
52
+ // Finally index
53
+ (0, vitest_1.expect)(sorted[3].header).toMatchObject({ Name: 'bar', Type: 'INDEX' });
54
+ });
55
+ (0, vitest_1.test)('sorts constraints by type (PRIMARY, UNIQUE, FOREIGN, CHECK)', () => {
56
+ const dump = (0, multiline_ts_1.default) `
57
+ --
58
+ -- Name: foo foo_check; Type: CONSTRAINT; Schema: public; Owner: postgres
59
+ --
60
+
61
+ ALTER TABLE ONLY public.foo
62
+ ADD CONSTRAINT foo_check CHECK (id > 0);
63
+
64
+
65
+ --
66
+ -- Name: foo foo_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
67
+ --
68
+
69
+ ALTER TABLE ONLY public.foo
70
+ ADD CONSTRAINT foo_fkey FOREIGN KEY (bar_id) REFERENCES public.bar(id);
71
+
72
+
73
+ --
74
+ -- Name: foo foo_unique; Type: CONSTRAINT; Schema: public; Owner: postgres
75
+ --
76
+
77
+ ALTER TABLE ONLY public.foo
78
+ ADD CONSTRAINT foo_unique UNIQUE (name);
79
+
80
+
81
+ --
82
+ -- Name: foo foo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
83
+ --
84
+
85
+ ALTER TABLE ONLY public.foo
86
+ ADD CONSTRAINT foo_pkey PRIMARY KEY (id);
87
+ `;
88
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
89
+ const sorted = (0, sortSchemaObjects_1.sortSchemaObjects)(schemaObjects);
90
+ // Primary key should come first
91
+ (0, vitest_1.expect)(sorted[0].sql).toContain('PRIMARY KEY');
92
+ // Then unique
93
+ (0, vitest_1.expect)(sorted[1].sql).toContain('UNIQUE');
94
+ // Then check
95
+ (0, vitest_1.expect)(sorted[2].sql).toContain('CHECK');
96
+ // Finally foreign key
97
+ (0, vitest_1.expect)(sorted[3].sql).toContain('FOREIGN KEY');
98
+ });
99
+ (0, vitest_1.test)('sorts indexes alphabetically within the same table', () => {
100
+ const dump = (0, multiline_ts_1.default) `
101
+ --
102
+ -- Name: foo; Type: TABLE; Schema: public; Owner: postgres
103
+ --
104
+
105
+ CREATE TABLE public.foo (
106
+ id integer NOT NULL,
107
+ name text NOT NULL,
108
+ email text
109
+ );
110
+
111
+
112
+ --
113
+ -- Name: foo_name_idx; Type: INDEX; Schema: public; Owner: postgres
114
+ --
115
+
116
+ CREATE INDEX foo_name_idx ON public.foo USING btree (name);
117
+
118
+
119
+ --
120
+ -- Name: foo_email_idx; Type: INDEX; Schema: public; Owner: postgres
121
+ --
122
+
123
+ CREATE INDEX foo_email_idx ON public.foo USING btree (email);
124
+
125
+
126
+ --
127
+ -- Name: foo_id_idx; Type: INDEX; Schema: public; Owner: postgres
128
+ --
129
+
130
+ CREATE INDEX foo_id_idx ON public.foo USING btree (id);
131
+ `;
132
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
133
+ const sorted = (0, sortSchemaObjects_1.sortSchemaObjects)(schemaObjects);
134
+ const indexes = sorted.filter((object) => 'Type' in object.header && object.header.Type === 'INDEX');
135
+ (0, vitest_1.expect)(indexes[0].header).toMatchObject({ Name: 'foo_email_idx' });
136
+ (0, vitest_1.expect)(indexes[1].header).toMatchObject({ Name: 'foo_id_idx' });
137
+ (0, vitest_1.expect)(indexes[2].header).toMatchObject({ Name: 'foo_name_idx' });
138
+ });
139
+ (0, vitest_1.test)('sorts comments by type and target', () => {
140
+ const dump = (0, multiline_ts_1.default) `
141
+ --
142
+ -- Name: COLUMN foo.name; Type: COMMENT; Schema: public; Owner: postgres
143
+ --
144
+
145
+ COMMENT ON COLUMN public.foo.name IS 'Name column';
146
+
147
+
148
+ --
149
+ -- Name: TABLE foo; Type: COMMENT; Schema: public; Owner: postgres
150
+ --
151
+
152
+ COMMENT ON TABLE public.foo IS 'Foo table';
153
+
154
+
155
+ --
156
+ -- Name: COLUMN foo.id; Type: COMMENT; Schema: public; Owner: postgres
157
+ --
158
+
159
+ COMMENT ON COLUMN public.foo.id IS 'ID column';
160
+
161
+
162
+ --
163
+ -- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: -
164
+ --
165
+
166
+ COMMENT ON EXTENSION pgcrypto IS 'Crypto extension';
167
+ `;
168
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
169
+ const sorted = (0, sortSchemaObjects_1.sortSchemaObjects)(schemaObjects);
170
+ const comments = sorted.filter((object) => 'Type' in object.header && object.header.Type === 'COMMENT');
171
+ // Extension comment first
172
+ (0, vitest_1.expect)(comments[0].header).toMatchObject({ Name: 'EXTENSION pgcrypto' });
173
+ // Then table comment
174
+ (0, vitest_1.expect)(comments[1].header).toMatchObject({ Name: 'TABLE foo' });
175
+ // Then column comments sorted by name
176
+ (0, vitest_1.expect)(comments[2].header).toMatchObject({ Name: 'COLUMN foo.id' });
177
+ (0, vitest_1.expect)(comments[3].header).toMatchObject({ Name: 'COLUMN foo.name' });
178
+ });
179
+ (0, vitest_1.test)('groups and sorts schema objects by scope', () => {
180
+ const dump = (0, multiline_ts_1.default) `
181
+ --
182
+ -- Name: foo; Type: TABLE; Schema: public; Owner: postgres
183
+ --
184
+
185
+ CREATE TABLE public.foo (
186
+ id integer NOT NULL,
187
+ name text NOT NULL
188
+ );
189
+
190
+
191
+ --
192
+ -- Name: foo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
193
+ --
194
+
195
+ ALTER TABLE ONLY public.foo
196
+ ADD CONSTRAINT foo_pkey PRIMARY KEY (id);
197
+
198
+
199
+ --
200
+ -- Name: foo_name_idx; Type: INDEX; Schema: public; Owner: postgres
201
+ --
202
+
203
+ CREATE INDEX foo_name_idx ON public.foo USING btree (name);
204
+
205
+
206
+ --
207
+ -- Name: bar; Type: TABLE; Schema: public; Owner: postgres
208
+ --
209
+
210
+ CREATE TABLE public.bar (
211
+ id integer NOT NULL,
212
+ foo_id integer
213
+ );
214
+
215
+
216
+ --
217
+ -- Name: bar_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
218
+ --
219
+
220
+ ALTER TABLE ONLY public.bar
221
+ ADD CONSTRAINT bar_pkey PRIMARY KEY (id);
222
+
223
+
224
+ --
225
+ -- Name: bar_foo_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
226
+ --
227
+
228
+ ALTER TABLE ONLY public.bar
229
+ ADD CONSTRAINT bar_foo_id_fkey FOREIGN KEY (foo_id) REFERENCES public.foo(id);
230
+ `;
231
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
232
+ const grouped = (0, sortSchemaObjects_1.groupAndSortSchemaObjects)(schemaObjects);
233
+ // Should have two groups for the two tables
234
+ const tableGroups = Array.from(grouped.keys()).filter((key) => key.includes('TABLE:'));
235
+ (0, vitest_1.expect)(tableGroups).toHaveLength(2);
236
+ // Each group should be sorted internally
237
+ for (const [key, objects] of grouped.entries()) {
238
+ if (key.includes('TABLE:public:foo')) {
239
+ // foo table group should have table, constraint, and index
240
+ (0, vitest_1.expect)(objects).toHaveLength(3);
241
+ (0, vitest_1.expect)(objects[0].header).toMatchObject({ Type: 'TABLE' });
242
+ (0, vitest_1.expect)(objects[1].header).toMatchObject({ Type: 'CONSTRAINT' });
243
+ (0, vitest_1.expect)(objects[2].header).toMatchObject({ Type: 'INDEX' });
244
+ }
245
+ else if (key.includes('TABLE:public:bar')) {
246
+ // bar table group should have table and two constraints
247
+ (0, vitest_1.expect)(objects).toHaveLength(3);
248
+ (0, vitest_1.expect)(objects[0].header).toMatchObject({ Type: 'TABLE' });
249
+ (0, vitest_1.expect)(objects[1].header).toMatchObject({ Type: 'CONSTRAINT' });
250
+ (0, vitest_1.expect)(objects[2].header).toMatchObject({ Type: 'FK CONSTRAINT' });
251
+ }
252
+ }
253
+ });
254
+ (0, vitest_1.test)('sortSchemaObjectsByScope returns flat sorted array', () => {
255
+ const dump = (0, multiline_ts_1.default) `
256
+ --
257
+ -- Name: foo; Type: TABLE; Schema: public; Owner: postgres
258
+ --
259
+
260
+ CREATE TABLE public.foo (
261
+ id integer NOT NULL
262
+ );
263
+
264
+
265
+ --
266
+ -- Name: foo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
267
+ --
268
+
269
+ ALTER TABLE ONLY public.foo
270
+ ADD CONSTRAINT foo_pkey PRIMARY KEY (id);
271
+
272
+
273
+ --
274
+ -- Name: bar; Type: TABLE; Schema: public; Owner: postgres
275
+ --
276
+
277
+ CREATE TABLE public.bar (
278
+ id integer NOT NULL
279
+ );
280
+
281
+
282
+ --
283
+ -- Name: bar_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
284
+ --
285
+
286
+ ALTER TABLE ONLY public.bar
287
+ ADD CONSTRAINT bar_pkey PRIMARY KEY (id);
288
+ `;
289
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
290
+ const sorted = (0, sortSchemaObjects_1.sortSchemaObjectsByScope)(schemaObjects);
291
+ (0, vitest_1.expect)(sorted).toHaveLength(4);
292
+ // Objects should be grouped by table
293
+ // First bar table and its constraint
294
+ (0, vitest_1.expect)(sorted[0].header).toMatchObject({ Name: 'bar', Type: 'TABLE' });
295
+ (0, vitest_1.expect)(sorted[1].header).toMatchObject({
296
+ Name: 'bar_pkey',
297
+ Type: 'CONSTRAINT',
298
+ });
299
+ // Then foo table and its constraint
300
+ (0, vitest_1.expect)(sorted[2].header).toMatchObject({ Name: 'foo', Type: 'TABLE' });
301
+ (0, vitest_1.expect)(sorted[3].header).toMatchObject({
302
+ Name: 'foo_pkey',
303
+ Type: 'CONSTRAINT',
304
+ });
305
+ });
306
+ (0, vitest_1.test)('handles schemas correctly in sorting', () => {
307
+ const dump = (0, multiline_ts_1.default) `
308
+ --
309
+ -- Name: foo; Type: TABLE; Schema: custom; Owner: postgres
310
+ --
311
+
312
+ CREATE TABLE custom.foo (
313
+ id integer NOT NULL
314
+ );
315
+
316
+
317
+ --
318
+ -- Name: foo; Type: TABLE; Schema: public; Owner: postgres
319
+ --
320
+
321
+ CREATE TABLE public.foo (
322
+ id integer NOT NULL
323
+ );
324
+
325
+
326
+ --
327
+ -- Name: bar; Type: TABLE; Schema: -; Owner: postgres
328
+ --
329
+
330
+ CREATE TABLE bar (
331
+ id integer NOT NULL
332
+ );
333
+ `;
334
+ const schemaObjects = (0, parsePgDump_1.parsePgDump)(dump);
335
+ const sorted = (0, sortSchemaObjects_1.sortSchemaObjects)(schemaObjects);
336
+ // Tables with null schema should come first
337
+ (0, vitest_1.expect)(sorted[0].header).toMatchObject({ Name: 'bar', Schema: null });
338
+ // Then sorted by schema name
339
+ (0, vitest_1.expect)(sorted[1].header).toMatchObject({ Name: 'foo', Schema: 'custom' });
340
+ (0, vitest_1.expect)(sorted[2].header).toMatchObject({ Name: 'foo', Schema: 'public' });
341
+ });
342
+ });
343
+ //# sourceMappingURL=sortSchemaObjects.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortSchemaObjects.test.js","sourceRoot":"","sources":["../src/sortSchemaObjects.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,24 +2,24 @@
2
2
  "author": {
3
3
  "email": "gajus@gajus.com",
4
4
  "name": "Gajus Kuizinas",
5
- "url": "http://gajus.com"
5
+ "url": "https://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
8
  "multiline-ts": "^4.0.1",
9
- "zod": "^3.23.8"
9
+ "zod": "^4.3.5"
10
10
  },
11
11
  "description": "Parses PostgreSQL dump files into an array of schema objects.",
12
12
  "devDependencies": {
13
- "@semantic-release/commit-analyzer": "^9.0.2",
14
- "@semantic-release/github": "^8.0.7",
15
- "@semantic-release/npm": "^9.0.2",
16
- "@types/node": "^18.15.3",
17
- "cspell": "^6.30.2",
18
- "eslint": "^9.14.0",
19
- "eslint-config-canonical": "^44.3.28",
20
- "semantic-release": "^20.1.3",
21
- "typescript": "^5.0.2",
22
- "vitest": "^0.29.7"
13
+ "@semantic-release/commit-analyzer": "^13.0.1",
14
+ "@semantic-release/github": "^12.0.2",
15
+ "@semantic-release/npm": "^13.1.3",
16
+ "@types/node": "^25.0.8",
17
+ "cspell": "^9.6.0",
18
+ "eslint": "^9.39.2",
19
+ "eslint-config-canonical": "^47.3.7",
20
+ "semantic-release": "^25.0.2",
21
+ "typescript": "^5.9.3",
22
+ "vitest": "^4.0.17"
23
23
  },
24
24
  "engines": {
25
25
  "node": ">=22"
@@ -56,5 +56,5 @@
56
56
  "test:vitest": "vitest --run --passWithNoTests"
57
57
  },
58
58
  "types": "./dist/index.d.ts",
59
- "version": "1.7.0"
59
+ "version": "1.8.0"
60
60
  }