@kozou/introspect 1.3.0 → 1.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAS3C,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAyBtF"}
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAS3C,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA+BtF"}
package/dist/enums.js CHANGED
@@ -2,10 +2,17 @@ import { runQuery } from './errors.js';
2
2
  export async function fetchEnums(client, schemas) {
3
3
  if (schemas.length === 0)
4
4
  return [];
5
- const rows = await runQuery(client, `SELECT
5
+ const rows = await runQuery(client,
6
+ // enumlabel is the \`name\` type; array_agg would yield a name[] (oid 1003),
7
+ // which node-postgres does not parse into a JS array (it would arrive as the
8
+ // raw "{a,b}" literal). Cast each label to text so the result is a text[]
9
+ // (oid 1009) the driver parses — RawEnum.values is then a real string[], as
10
+ // its type promises and as every consumer (docs renderEnum, RPC enum args)
11
+ // expects.
12
+ `SELECT
6
13
  n.nspname AS schema,
7
14
  t.typname AS name,
8
- array_agg(e.enumlabel ORDER BY e.enumsortorder) AS values
15
+ array_agg(e.enumlabel::text ORDER BY e.enumsortorder) AS values
9
16
  FROM pg_type t
10
17
  JOIN pg_namespace n ON n.oid = t.typnamespace
11
18
  JOIN pg_enum e ON e.enumtypid = t.oid
package/dist/enums.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,OAAiB;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,MAAM,EACN;;;;;;;;;;mCAU+B,EAC/B,CAAC,OAAO,CAAC,EACT,YAAY,CACb,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,CAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,OAAiB;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,MAAM;IACN,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,WAAW;IACX;;;;;;;;;;mCAU+B,EAC/B,CAAC,OAAO,CAAC,EACT,YAAY,CACb,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,CAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Client } from 'pg';
2
+ import type { RawFunction } from '@kozou/core';
3
+ export declare function fetchFunctions(client: Client, schemas: string[]): Promise<RawFunction[]>;
4
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAyVrB,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAyD9F"}
@@ -0,0 +1,321 @@
1
+ import { runQuery } from './errors.js';
2
+ // One query pulls every ordinary function with its arguments (resolved to type
3
+ // names), return classification fields, owner, PUBLIC-EXECUTE flag, and the raw
4
+ // proconfig. Arguments are assembled as JSON by zipping the parallel pg_proc
5
+ // arrays (proallargtypes / proargmodes / proargnames) by ordinality; the
6
+ // IN-only case falls back to proargtypes (an oidvector cast to oid[]). Return
7
+ // columns come from the composite type's attributes when the return is a named
8
+ // composite, else from the OUT / TABLE arguments.
9
+ const FUNCTIONS_SQL = `
10
+ SELECT
11
+ n.nspname AS schema,
12
+ p.proname AS name,
13
+ pg_get_function_arguments(p.oid) AS argument_signature,
14
+ p.pronargdefaults AS ndef,
15
+ p.provolatile AS volatility,
16
+ p.prosecdef AS security_definer,
17
+ p.proowner AS owner_oid,
18
+ ro.rolname AS owner_name,
19
+ CASE
20
+ WHEN p.proacl IS NULL THEN true
21
+ WHEN EXISTS (
22
+ SELECT 1 FROM aclexplode(p.proacl) ae
23
+ WHERE ae.grantee = 0 AND ae.privilege_type = 'EXECUTE'
24
+ ) THEN true
25
+ ELSE false
26
+ END AS public_execute,
27
+ obj_description(p.oid, 'pg_proc') AS comment,
28
+ (p.prorettype = 'pg_catalog.void'::regtype) AS returns_void,
29
+ p.proretset AS returns_set,
30
+ format_type(p.prorettype, NULL) AS return_type,
31
+ -- Resolve one level of DOMAIN to its base type so a domain over a composite
32
+ -- is not mistaken for a scalar (and a domain over a scalar stays scalar). A
33
+ -- still-domain result (domain over domain) is left as 'd' and treated as
34
+ -- unsupported downstream (fail-closed for that exotic nesting).
35
+ eff.eff_typtype AS return_typtype,
36
+ (
37
+ SELECT json_agg(json_build_object(
38
+ 'name', COALESCE(an.argname, ''),
39
+ 'typeName', format_type(at.typeoid, NULL),
40
+ 'udtName', t.typname,
41
+ 'typeOid', at.typeoid::int,
42
+ 'mode', COALESCE(am.mode, 'i'),
43
+ 'ord', at.ord
44
+ ) ORDER BY at.ord)
45
+ FROM unnest(COALESCE(p.proallargtypes, p.proargtypes::oid[]))
46
+ WITH ORDINALITY AS at(typeoid, ord)
47
+ LEFT JOIN unnest(p.proargmodes) WITH ORDINALITY AS am(mode, ord) ON am.ord = at.ord
48
+ LEFT JOIN unnest(p.proargnames) WITH ORDINALITY AS an(argname, ord) ON an.ord = at.ord
49
+ JOIN pg_type t ON t.oid = at.typeoid
50
+ ) AS args,
51
+ CASE
52
+ WHEN eff.eff_typrelid <> 0 THEN (
53
+ SELECT json_agg(json_build_object(
54
+ 'name', a.attname,
55
+ 'typeName', format_type(a.atttypid, a.atttypmod),
56
+ 'typeOid', a.atttypid::int
57
+ ) ORDER BY a.attnum)
58
+ FROM pg_attribute a
59
+ WHERE a.attrelid = eff.eff_typrelid AND a.attnum > 0 AND NOT a.attisdropped
60
+ )
61
+ ELSE (
62
+ SELECT json_agg(json_build_object(
63
+ 'name', COALESCE(an.argname, ''),
64
+ 'typeName', format_type(at.typeoid, NULL),
65
+ 'typeOid', at.typeoid::int
66
+ ) ORDER BY at.ord)
67
+ FROM unnest(COALESCE(p.proallargtypes, p.proargtypes::oid[]))
68
+ WITH ORDINALITY AS at(typeoid, ord)
69
+ JOIN unnest(p.proargmodes) WITH ORDINALITY AS am(mode, ord) ON am.ord = at.ord
70
+ LEFT JOIN unnest(p.proargnames) WITH ORDINALITY AS an(argname, ord) ON an.ord = at.ord
71
+ WHERE am.mode IN ('o', 'b', 't')
72
+ )
73
+ END AS return_columns,
74
+ p.proconfig AS proconfig
75
+ FROM pg_proc p
76
+ JOIN pg_namespace n ON n.oid = p.pronamespace
77
+ JOIN pg_roles ro ON ro.oid = p.proowner
78
+ JOIN pg_type rt ON rt.oid = p.prorettype
79
+ LEFT JOIN pg_type bt ON bt.oid = rt.typbasetype
80
+ CROSS JOIN LATERAL (
81
+ SELECT
82
+ CASE WHEN rt.typtype = 'd' AND bt.oid IS NOT NULL THEN bt.typtype ELSE rt.typtype END
83
+ AS eff_typtype,
84
+ CASE WHEN rt.typtype = 'd' AND bt.oid IS NOT NULL THEN bt.typrelid ELSE rt.typrelid END
85
+ AS eff_typrelid
86
+ ) eff
87
+ WHERE p.prokind = 'f'
88
+ AND n.nspname = ANY($1)
89
+ ORDER BY n.nspname, p.proname`;
90
+ // Who may CREATE in each named schema, framed for the owner-safe search_path
91
+ // predicate (§3.2). Superusers are deliberately not enumerated as creators:
92
+ // a superuser bypasses every ACL and can replace the definer function itself,
93
+ // so it is not a hijack vector — and this is what makes pg_catalog (owned by
94
+ // the bootstrap superuser) correctly safe. Inherited privileges are NOT lost,
95
+ // because `has_schema_privilege` is evaluated per non-superuser role: a
96
+ // non-superuser member that inherits a superuser role's CREATE grant still
97
+ // reports true and is captured.
98
+ const SCHEMA_WRITABILITY_SQL = `
99
+ SELECT
100
+ n.nspname AS schema,
101
+ EXISTS (
102
+ SELECT 1 FROM aclexplode(COALESCE(n.nspacl, acldefault('n', n.nspowner))) ae
103
+ WHERE ae.privilege_type = 'CREATE' AND ae.grantee = 0
104
+ ) AS public_create,
105
+ COALESCE((
106
+ SELECT array_agg(r.oid)
107
+ FROM pg_roles r
108
+ WHERE NOT r.rolsuper
109
+ AND has_schema_privilege(r.oid, n.oid, 'CREATE')
110
+ ), ARRAY[]::oid[]) AS creator_roles
111
+ FROM pg_namespace n
112
+ WHERE n.nspname = ANY($1)`;
113
+ function mapVolatility(c) {
114
+ if (c === 'i')
115
+ return 'immutable';
116
+ if (c === 's')
117
+ return 'stable';
118
+ return 'volatile';
119
+ }
120
+ function mapArgMode(c) {
121
+ switch (c) {
122
+ case 'o':
123
+ return 'out';
124
+ case 'b':
125
+ return 'inout';
126
+ case 'v':
127
+ return 'variadic';
128
+ case 't':
129
+ return 'table';
130
+ default:
131
+ return 'in';
132
+ }
133
+ }
134
+ function buildArgs(row) {
135
+ const json = row.args ?? [];
136
+ const args = json
137
+ .slice()
138
+ .sort((a, b) => a.ord - b.ord)
139
+ .map((a) => ({
140
+ name: a.name,
141
+ typeName: a.typeName,
142
+ udtName: a.udtName,
143
+ typeOid: a.typeOid,
144
+ mode: mapArgMode(a.mode),
145
+ hasDefault: false,
146
+ }));
147
+ // pronargdefaults defaults apply to the trailing input arguments (IN /
148
+ // INOUT / VARIADIC) in declaration order. Mark the last `ndef` of them.
149
+ if (row.ndef > 0) {
150
+ const inputIdx = args
151
+ .map((a, i) => ({ a, i }))
152
+ .filter((e) => e.a.mode === 'in' || e.a.mode === 'inout' || e.a.mode === 'variadic')
153
+ .map((e) => e.i);
154
+ for (const i of inputIdx.slice(Math.max(0, inputIdx.length - row.ndef))) {
155
+ args[i].hasDefault = true;
156
+ }
157
+ }
158
+ return args;
159
+ }
160
+ function classifyReturn(row) {
161
+ const typeName = row.return_type;
162
+ const columns = row.return_columns && row.return_columns.length > 0
163
+ ? row.return_columns.map((c) => ({ name: c.name, typeName: c.typeName, typeOid: c.typeOid }))
164
+ : undefined;
165
+ // Base / enum / range / multirange are scalar element types. Domains were
166
+ // resolved to their base typtype by the query, so a residual 'd' means a
167
+ // domain over a domain — left to fall through to unsupported.
168
+ const isScalarType = ['b', 'e', 'r', 'm'].includes(row.return_typtype);
169
+ if (row.returns_void) {
170
+ return { kind: 'void', typeName, returnsSet: false };
171
+ }
172
+ if (row.returns_set) {
173
+ // Columns first: a 1-column RETURNS TABLE(c ...) collapses to the scalar
174
+ // element type in pg_proc (typtype 'b'), but still carries the named OUT
175
+ // column — it is an array of objects, not of bare scalars. Composite /
176
+ // multi-column TABLE sets also land here.
177
+ if (columns) {
178
+ return { kind: 'setof', typeName, returnsSet: true, columns };
179
+ }
180
+ // SETOF scalar with no named column -> array of scalars.
181
+ if (isScalarType) {
182
+ return { kind: 'setof', typeName, returnsSet: true };
183
+ }
184
+ // A pseudo / composite SETOF with no resolvable columns (SETOF record /
185
+ // anyelement, or a domain over a composite) is unmappable.
186
+ return { kind: 'unsupported', typeName, returnsSet: true };
187
+ }
188
+ if (row.return_typtype === 'c') {
189
+ // A composite resolves its columns (a domain over a composite too — the
190
+ // query resolves the base relid). A 'c' with no columns would be an unusual
191
+ // unresolved case; fail closed rather than emit a shapeless object.
192
+ return columns
193
+ ? { kind: 'composite', typeName, returnsSet: false, columns }
194
+ : { kind: 'unsupported', typeName, returnsSet: false };
195
+ }
196
+ if (isScalarType) {
197
+ return { kind: 'scalar', typeName, returnsSet: false };
198
+ }
199
+ // Non-set pseudo types (record without column defs, anyelement, trigger) and
200
+ // a domain over a domain — not mappable to a v1 wire shape (loud skip in @core).
201
+ return { kind: 'unsupported', typeName, returnsSet: false };
202
+ }
203
+ /** Split a SET search_path GUC value on commas that are not inside double
204
+ * quotes, then unquote each element. Handles `"$user", public` and a quoted
205
+ * identifier that itself contains a comma. */
206
+ function splitSearchPath(value) {
207
+ const elements = [];
208
+ let current = '';
209
+ let inQuotes = false;
210
+ for (let i = 0; i < value.length; i += 1) {
211
+ const ch = value[i];
212
+ if (ch === '"') {
213
+ // A doubled "" inside quotes is a literal quote.
214
+ if (inQuotes && value[i + 1] === '"') {
215
+ current += '"';
216
+ i += 1;
217
+ }
218
+ else {
219
+ inQuotes = !inQuotes;
220
+ }
221
+ }
222
+ else if (ch === ',' && !inQuotes) {
223
+ elements.push(current.trim());
224
+ current = '';
225
+ }
226
+ else {
227
+ current += ch;
228
+ }
229
+ }
230
+ elements.push(current.trim());
231
+ return elements.filter((e) => e !== '');
232
+ }
233
+ /** Parse the proconfig `search_path` setting into elements, or null when the
234
+ * function declares no SET search_path. Each element records whether it is
235
+ * pg_temp and (for a fixed schema) is resolved to a schema name; a dynamic
236
+ * element (`$user`) resolves to null. Writability is filled in afterwards. */
237
+ function parseSearchPath(proconfig) {
238
+ if (proconfig === null)
239
+ return null;
240
+ const entry = proconfig.find((c) => c.toLowerCase().startsWith('search_path='));
241
+ if (entry === undefined)
242
+ return null;
243
+ const value = entry.slice(entry.indexOf('=') + 1);
244
+ return splitSearchPath(value).map((raw) => {
245
+ if (raw === 'pg_temp') {
246
+ return { raw, schema: null, writableByOthers: null, isTemp: true };
247
+ }
248
+ // A `$user` (or any $-prefixed) element is dynamic; it cannot be resolved
249
+ // to a fixed schema, so it stays unsafe (the predicate fails closed).
250
+ const schema = raw.startsWith('$') ? null : raw;
251
+ return { raw, schema, writableByOthers: null, isTemp: false };
252
+ });
253
+ }
254
+ /** Fetch CREATE-writability info for the given schema names. */
255
+ async function fetchSchemaWritability(client, schemaNames) {
256
+ const map = new Map();
257
+ if (schemaNames.length === 0)
258
+ return map;
259
+ const rows = await runQuery(client, SCHEMA_WRITABILITY_SQL, [schemaNames], 'fetchFunctions (schema writability)');
260
+ for (const row of rows) {
261
+ map.set(row.schema, {
262
+ publicCreate: row.public_create,
263
+ creatorRoles: row.creator_roles ?? [],
264
+ });
265
+ }
266
+ return map;
267
+ }
268
+ export async function fetchFunctions(client, schemas) {
269
+ if (schemas.length === 0)
270
+ return [];
271
+ const rows = await runQuery(client, FUNCTIONS_SQL, [schemas], 'fetchFunctions (functions)');
272
+ if (rows.length === 0)
273
+ return [];
274
+ // Pre-parse search paths and gather the fixed schema names whose CREATE
275
+ // writability the safe-search_path predicate (§3.2) needs. Only definer
276
+ // functions are subject to the predicate, so only their paths matter; but
277
+ // parsing every function's path is cheap and keeps the shape uniform.
278
+ const parsed = rows.map((row) => ({ row, searchPath: parseSearchPath(row.proconfig) }));
279
+ const schemaNames = new Set();
280
+ for (const { row, searchPath } of parsed) {
281
+ if (!row.security_definer || searchPath === null)
282
+ continue;
283
+ for (const el of searchPath) {
284
+ if (!el.isTemp && el.schema !== null)
285
+ schemaNames.add(el.schema);
286
+ }
287
+ }
288
+ const writability = await fetchSchemaWritability(client, [...schemaNames]);
289
+ return parsed.map(({ row, searchPath }) => {
290
+ // Resolve owner-relative writability for each fixed, non-temp element: the
291
+ // schema is "writable by others" if PUBLIC can create there, or if any
292
+ // non-superuser role other than this function's owner can (superusers are
293
+ // not a hijack vector, and were excluded by the query). A schema not in the
294
+ // map (e.g. it does not exist) stays null = unknown = unsafe (fail-closed).
295
+ const resolvedSearchPath = searchPath === null
296
+ ? null
297
+ : searchPath.map((el) => {
298
+ if (el.isTemp || el.schema === null)
299
+ return el;
300
+ const w = writability.get(el.schema);
301
+ if (w === undefined)
302
+ return { ...el, writableByOthers: null };
303
+ const writableByOthers = w.publicCreate || w.creatorRoles.some((r) => r !== row.owner_oid);
304
+ return { ...el, writableByOthers };
305
+ });
306
+ return {
307
+ schema: row.schema,
308
+ name: row.name,
309
+ argumentSignature: row.argument_signature,
310
+ arguments: buildArgs(row),
311
+ returns: classifyReturn(row),
312
+ volatility: mapVolatility(row.volatility),
313
+ security: row.security_definer ? 'definer' : 'invoker',
314
+ owner: { oid: row.owner_oid, name: row.owner_name },
315
+ publicExecute: row.public_execute,
316
+ searchPath: resolvedSearchPath,
317
+ comment: row.comment,
318
+ };
319
+ });
320
+ }
321
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD,OAAO,EAAE,oBAAoB,EAAY,MAAM,aAAa,CAAC;AAK7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;wBAMoB;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAkB/D,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsFnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQpD,OAAO,EAAE,oBAAoB,EAAY,MAAM,aAAa,CAAC;AAK7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;wBAMoB;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAkB/D,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuFnF"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ import { fetchForeignKeys } from './fks.js';
4
4
  import { fetchChecks } from './checks.js';
5
5
  import { fetchViews } from './views.js';
6
6
  import { fetchEnums } from './enums.js';
7
+ import { fetchFunctions } from './functions.js';
7
8
  import { fetchAndAttachPrivileges } from './privileges.js';
8
9
  import { KozouIntrospectError, runQuery } from './errors.js';
9
10
  import { filterTables, filterViews, pruneDanglingForeignKeys } from './filter.js';
@@ -49,6 +50,7 @@ export async function introspect(opts) {
49
50
  mergeTableMetadata(allTables, fks, checks);
50
51
  const allViews = await fetchViews(client, validSchemas);
51
52
  const enums = await fetchEnums(client, validSchemas);
53
+ const functions = await fetchFunctions(client, validSchemas);
52
54
  if (opts.privilegeRole !== undefined) {
53
55
  await fetchAndAttachPrivileges(client, validSchemas, opts.privilegeRole, allTables, allViews);
54
56
  }
@@ -63,7 +65,7 @@ export async function introspect(opts) {
63
65
  tables,
64
66
  views,
65
67
  enums,
66
- functions: [],
68
+ functions,
67
69
  };
68
70
  }
69
71
  finally {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kozou/introspect",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "PostgreSQL DDL / COMMENT / VIEW introspection.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "pg": "^8.13.0",
34
- "@kozou/core": "1.3.0"
34
+ "@kozou/core": "1.4.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/pg": "^8.11.0",