pg-dump-parser 1.0.4 → 1.1.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.
- package/README.md +38 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/parsePgDump.d.ts +26 -1
- package/dist/parsePgDump.d.ts.map +1 -1
- package/dist/parsePgDump.js +43 -41
- package/dist/parsePgDump.js.map +1 -1
- package/dist/parsePgDump.test.js +146 -56
- package/dist/parsePgDump.test.js.map +1 -1
- package/dist/scopeSchemaObject.d.ts +12 -0
- package/dist/scopeSchemaObject.d.ts.map +1 -0
- package/dist/scopeSchemaObject.js +298 -0
- package/dist/scopeSchemaObject.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +8 -0
- package/src/parsePgDump.test.ts +158 -78
- package/src/parsePgDump.ts +48 -42
- package/src/scopeSchemaObject.ts +418 -0
package/README.md
CHANGED
|
@@ -57,6 +57,44 @@ The output is an array of objects, each representing a schema object in the dump
|
|
|
57
57
|
]
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
### Grouping schema objects
|
|
61
|
+
|
|
62
|
+
`groupSchemaObjects` is an opinionated utility that assigns object to a scope.
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import { groupSchemaObjects } from 'pg-dump-parser';
|
|
66
|
+
|
|
67
|
+
const schemaObjects = parsePgDump(dump);
|
|
68
|
+
|
|
69
|
+
const schemaObjectScope = groupSchemaObjects(schemaObjects);
|
|
70
|
+
schemaObjects,
|
|
71
|
+
{
|
|
72
|
+
header: {
|
|
73
|
+
Name: 'TABLE foo',
|
|
74
|
+
Owner: 'postgres',
|
|
75
|
+
Schema: 'public',
|
|
76
|
+
Type: 'COMMENT',
|
|
77
|
+
},
|
|
78
|
+
sql: multiline`
|
|
79
|
+
COMMENT ON TABLE public.foo IS 'Table comment x';
|
|
80
|
+
`,
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`schemaObjectScope` is now an object that describes the owner of the object, e.g.,
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
{
|
|
89
|
+
name: 'foo',
|
|
90
|
+
schema: 'public',
|
|
91
|
+
type: 'TABLE',
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
> [!DANGER]
|
|
96
|
+
> The implementation behind `groupSchemaObjects` is _super_ scrappy. It relies on a lot of pattern matching. Use at your own risk.
|
|
97
|
+
|
|
60
98
|
## Alternatives
|
|
61
99
|
|
|
62
100
|
* https://github.com/omniti-labs/pg_extractor
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scopeSchemaObject = exports.parsePgDump = void 0;
|
|
4
|
+
var parsePgDump_1 = require("./parsePgDump");
|
|
5
|
+
Object.defineProperty(exports, "parsePgDump", { enumerable: true, get: function () { return parsePgDump_1.parsePgDump; } });
|
|
6
|
+
var scopeSchemaObject_1 = require("./scopeSchemaObject");
|
|
7
|
+
Object.defineProperty(exports, "scopeSchemaObject", { enumerable: true, get: function () { return scopeSchemaObject_1.scopeSchemaObject; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAMuB;AAHrB,0GAAA,WAAW,OAAA;AAIb,yDAAgF;AAA/C,sHAAA,iBAAiB,OAAA"}
|
package/dist/parsePgDump.d.ts
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
declare const TitleHeaderZodSchema: z.ZodObject<{
|
|
3
|
+
Title: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
Title: string;
|
|
6
|
+
}, {
|
|
7
|
+
Title: string;
|
|
8
|
+
}>;
|
|
9
|
+
declare const AttributedHeaderZodSchema: z.ZodObject<{
|
|
10
|
+
Name: z.ZodString;
|
|
11
|
+
Owner: z.ZodNullable<z.ZodString>;
|
|
12
|
+
Schema: z.ZodNullable<z.ZodString>;
|
|
13
|
+
Type: z.ZodEnum<["ACL", "AGGREGATE", "CAST", "COMMENT", "CONSTRAINT", "DEFAULT ACL", "DEFAULT", "EXTENSION", "FK CONSTRAINT", "FUNCTION", "INDEX", "MATERIALIZED VIEW", "PROCEDURE", "PUBLICATION", "SCHEMA", "SEQUENCE OWNED BY", "SEQUENCE", "TABLE", "TEXT SEARCH CONFIGURATION", "TEXT SEARCH DICTIONARY", "TRIGGER", "TYPE", "VIEW"]>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
Name: string;
|
|
16
|
+
Owner: string | null;
|
|
17
|
+
Schema: string | null;
|
|
18
|
+
Type: "ACL" | "AGGREGATE" | "CAST" | "COMMENT" | "CONSTRAINT" | "DEFAULT ACL" | "DEFAULT" | "EXTENSION" | "FK CONSTRAINT" | "FUNCTION" | "INDEX" | "MATERIALIZED VIEW" | "PROCEDURE" | "PUBLICATION" | "SCHEMA" | "SEQUENCE OWNED BY" | "SEQUENCE" | "TABLE" | "TEXT SEARCH CONFIGURATION" | "TEXT SEARCH DICTIONARY" | "TRIGGER" | "TYPE" | "VIEW";
|
|
19
|
+
}, {
|
|
20
|
+
Name: string;
|
|
21
|
+
Owner: string | null;
|
|
22
|
+
Schema: string | null;
|
|
23
|
+
Type: "ACL" | "AGGREGATE" | "CAST" | "COMMENT" | "CONSTRAINT" | "DEFAULT ACL" | "DEFAULT" | "EXTENSION" | "FK CONSTRAINT" | "FUNCTION" | "INDEX" | "MATERIALIZED VIEW" | "PROCEDURE" | "PUBLICATION" | "SCHEMA" | "SEQUENCE OWNED BY" | "SEQUENCE" | "TABLE" | "TEXT SEARCH CONFIGURATION" | "TEXT SEARCH DICTIONARY" | "TRIGGER" | "TYPE" | "VIEW";
|
|
24
|
+
}>;
|
|
2
25
|
declare const HeaderZodSchema: z.ZodUnion<[z.ZodObject<{
|
|
3
26
|
Title: z.ZodString;
|
|
4
27
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -21,7 +44,9 @@ declare const HeaderZodSchema: z.ZodUnion<[z.ZodObject<{
|
|
|
21
44
|
Schema: string | null;
|
|
22
45
|
Type: "ACL" | "AGGREGATE" | "CAST" | "COMMENT" | "CONSTRAINT" | "DEFAULT ACL" | "DEFAULT" | "EXTENSION" | "FK CONSTRAINT" | "FUNCTION" | "INDEX" | "MATERIALIZED VIEW" | "PROCEDURE" | "PUBLICATION" | "SCHEMA" | "SEQUENCE OWNED BY" | "SEQUENCE" | "TABLE" | "TEXT SEARCH CONFIGURATION" | "TEXT SEARCH DICTIONARY" | "TRIGGER" | "TYPE" | "VIEW";
|
|
23
46
|
}>]>;
|
|
24
|
-
type Header = z.infer<typeof HeaderZodSchema>;
|
|
47
|
+
export type Header = z.infer<typeof HeaderZodSchema>;
|
|
48
|
+
export type TitleHeader = z.infer<typeof TitleHeaderZodSchema>;
|
|
49
|
+
export type AttributedHeader = z.infer<typeof AttributedHeaderZodSchema>;
|
|
25
50
|
export type SchemaObject = {
|
|
26
51
|
header: Header;
|
|
27
52
|
sql: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePgDump.d.ts","sourceRoot":"","sources":["../src/parsePgDump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"parsePgDump.d.ts","sourceRoot":"","sources":["../src/parsePgDump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,QAAA,MAAM,oBAAoB;;;;;;EAExB,CAAC;AAMH,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;EA6B7B,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;IAGnB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAyDzE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,WAAW,SAAU,MAAM,mBA6BvC,CAAC"}
|
package/dist/parsePgDump.js
CHANGED
|
@@ -2,48 +2,50 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parsePgDump = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
+
// These are the attribute less headers, e.g.
|
|
6
|
+
// --
|
|
7
|
+
// -- PostgreSQL database dump
|
|
8
|
+
// --
|
|
9
|
+
const TitleHeaderZodSchema = zod_1.z.object({
|
|
10
|
+
Title: zod_1.z.string(),
|
|
11
|
+
});
|
|
12
|
+
// These are the objects with attributes, e.g.
|
|
13
|
+
// --
|
|
14
|
+
// -- Name: citext; Type: EXTENSION; Schema: -; Owner: -
|
|
15
|
+
// --
|
|
16
|
+
const AttributedHeaderZodSchema = zod_1.z.object({
|
|
17
|
+
Name: zod_1.z.string(),
|
|
18
|
+
Owner: zod_1.z.string().nullable(),
|
|
19
|
+
Schema: zod_1.z.string().nullable(),
|
|
20
|
+
Type: zod_1.z.enum([
|
|
21
|
+
'ACL',
|
|
22
|
+
'AGGREGATE',
|
|
23
|
+
'CAST',
|
|
24
|
+
'COMMENT',
|
|
25
|
+
'CONSTRAINT',
|
|
26
|
+
'DEFAULT ACL',
|
|
27
|
+
'DEFAULT',
|
|
28
|
+
'EXTENSION',
|
|
29
|
+
'FK CONSTRAINT',
|
|
30
|
+
'FUNCTION',
|
|
31
|
+
'INDEX',
|
|
32
|
+
'MATERIALIZED VIEW',
|
|
33
|
+
'PROCEDURE',
|
|
34
|
+
'PUBLICATION',
|
|
35
|
+
'SCHEMA',
|
|
36
|
+
'SEQUENCE OWNED BY',
|
|
37
|
+
'SEQUENCE',
|
|
38
|
+
'TABLE',
|
|
39
|
+
'TEXT SEARCH CONFIGURATION',
|
|
40
|
+
'TEXT SEARCH DICTIONARY',
|
|
41
|
+
'TRIGGER',
|
|
42
|
+
'TYPE',
|
|
43
|
+
'VIEW',
|
|
44
|
+
]),
|
|
45
|
+
});
|
|
5
46
|
const HeaderZodSchema = zod_1.z.union([
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// -- PostgreSQL database dump
|
|
9
|
-
// --
|
|
10
|
-
zod_1.z.object({
|
|
11
|
-
Title: zod_1.z.string(),
|
|
12
|
-
}),
|
|
13
|
-
// These are the objects with attributes, e.g.
|
|
14
|
-
// --
|
|
15
|
-
// -- Name: citext; Type: EXTENSION; Schema: -; Owner: -
|
|
16
|
-
// --
|
|
17
|
-
zod_1.z.object({
|
|
18
|
-
Name: zod_1.z.string(),
|
|
19
|
-
Owner: zod_1.z.string().nullable(),
|
|
20
|
-
Schema: zod_1.z.string().nullable(),
|
|
21
|
-
Type: zod_1.z.enum([
|
|
22
|
-
'ACL',
|
|
23
|
-
'AGGREGATE',
|
|
24
|
-
'CAST',
|
|
25
|
-
'COMMENT',
|
|
26
|
-
'CONSTRAINT',
|
|
27
|
-
'DEFAULT ACL',
|
|
28
|
-
'DEFAULT',
|
|
29
|
-
'EXTENSION',
|
|
30
|
-
'FK CONSTRAINT',
|
|
31
|
-
'FUNCTION',
|
|
32
|
-
'INDEX',
|
|
33
|
-
'MATERIALIZED VIEW',
|
|
34
|
-
'PROCEDURE',
|
|
35
|
-
'PUBLICATION',
|
|
36
|
-
'SCHEMA',
|
|
37
|
-
'SEQUENCE OWNED BY',
|
|
38
|
-
'SEQUENCE',
|
|
39
|
-
'TABLE',
|
|
40
|
-
'TEXT SEARCH CONFIGURATION',
|
|
41
|
-
'TEXT SEARCH DICTIONARY',
|
|
42
|
-
'TRIGGER',
|
|
43
|
-
'TYPE',
|
|
44
|
-
'VIEW',
|
|
45
|
-
]),
|
|
46
|
-
}),
|
|
47
|
+
TitleHeaderZodSchema,
|
|
48
|
+
AttributedHeaderZodSchema,
|
|
47
49
|
]);
|
|
48
50
|
const isHeader = (fragment) => {
|
|
49
51
|
return fragment.startsWith('--\n--');
|
package/dist/parsePgDump.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePgDump.js","sourceRoot":"","sources":["../src/parsePgDump.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,
|
|
1
|
+
{"version":3,"file":"parsePgDump.js","sourceRoot":"","sources":["../src/parsePgDump.ts"],"names":[],"mappings":"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"}
|