8000 fix: full esm build support by sweatybridge · Pull Request #444 · supabase/postgres-meta · GitHub
[go: up one dir, main page]

Skip to content

fix: full esm build support #444

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Dec 25, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
chore: fix library imports and types
  • Loading branch information
sweatybridge committed Dec 23, 2022
commit 2189e346d8ba39175f17b66dccae8b6fc0b37f28
8 changes: 5 additions & 3 deletions src/lib/Parser.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { FormatterOptions } from './types'
const { parse, deparse } = require('pgsql-parser')
import prettier from 'prettier/standalone'
import prettier from 'prettier/standalone.js'
import SqlFormatter from 'prettier-plugin-sql'
// @ts-ignore library does not export types yet
// Related: https://github.com/pyramation/pgsql-parser/issues/22
import { parse, deparse } from 'pgsql-parser'
import { FormatterOptions } from './types.js'

const DEFAULT_FORMATTER_OPTIONS = {
plugins: [SqlFormatter],
Expand Down
34 changes: 17 additions & 17 deletions src/lib/PostgresMeta.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
import { PoolConfig } from 'pg'
import * as Parser from './Parser'
import PostgresMetaColumns from './PostgresMetaColumns'
import PostgresMetaConfig from './PostgresMetaConfig'
import PostgresMetaExtensions from './PostgresMetaExtensions'
import PostgresMetaForeignTables from './PostgresMetaForeignTables'
import PostgresMetaFunctions from './PostgresMetaFunctions'
import PostgresMetaPolicies from './PostgresMetaPolicies'
import PostgresMetaPublications from './PostgresMetaPublications'
import PostgresMetaRoles from './PostgresMetaRoles'
import PostgresMetaSchemas from './PostgresMetaSchemas'
import PostgresMetaTables from './PostgresMetaTables'
import PostgresMetaTriggers from './PostgresMetaTriggers'
import PostgresMetaTypes from './PostgresMetaTypes'
import PostgresMetaVersion from './PostgresMetaVersion'
import PostgresMetaViews from './PostgresMetaViews'
import { init } from './db'
import { PostgresMetaResult } from './types'
import * as Parser from './Parser.js'
import PostgresMetaColumns from './PostgresMetaColumns.js'
import PostgresMetaConfig from './PostgresMetaConfig.js'
import PostgresMetaExtensions from './PostgresMetaExtensions.js'
import PostgresMetaForeignTables from './PostgresMetaForeignTables.js'
import PostgresMetaFunctions from './PostgresMetaFunctions.js'
import PostgresMetaPolicies from './PostgresMetaPolicies.js'
import PostgresMetaPublications from './PostgresMetaPublications.js'
import PostgresMetaRoles from './PostgresMetaRoles.js'
import PostgresMetaSchemas from './PostgresMetaSchemas.js'
import PostgresMetaTables from './PostgresMetaTables.js'
import PostgresMetaTriggers from './PostgresMetaTriggers.js'
import PostgresMetaTypes from './PostgresMetaTypes.js'
import PostgresMetaVersion from './PostgresMetaVersion.js'
import PostgresMetaViews from './PostgresMetaViews.js'
import { init } from './db.js'
import { PostgresMetaResult } from './types.js'

export default class PostgresMeta {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
10 changes: 5 additions & 5 deletions src/lib/PostgresMetaColumns.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ident, literal } from 'pg-format'
import PostgresMetaTables from './PostgresMetaTables'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { columnsSql } from './sql'
import { PostgresMetaResult, PostgresColumn } from './types'
import { filterByList } from './helpers'
import PostgresMetaTables from './PostgresMetaTables.js'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { columnsSql } from './sql/index.js'
import { PostgresMetaResult, PostgresColumn } from './types.js'
import { filterByList } from './helpers.js'

export default class PostgresMetaColumns {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
4 changes: 2 additions & 2 deletions src/lib/PostgresMetaConfig.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { configSql } from './sql'
import { PostgresMetaResult, PostgresConfig } from './types'
import { configSql } from './sql/index.js'
import { PostgresMetaResult, PostgresConfig } from './types.js'

export default class PostgresMetaConfig {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
4 changes: 2 additions & 2 deletions src/lib/PostgresMetaExtensions.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
< 10000 /td> import { ident, literal } from 'pg-format'
import { extensionsSql } from './sql'
import { PostgresMetaResult, PostgresExtension } from './types'
import { extensionsSql } from './sql/index.js'
import { PostgresMetaResult, PostgresExtension } from './types.js'

export default class PostgresMetaExtensions {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
6 changes: 3 additions & 3 deletions src/lib/PostgresMetaForeignTables.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { coalesceRowsToArray } from './helpers'
import { columnsSql, foreignTablesSql } from './sql'
import { PostgresMetaResult, PostgresForeignTable } from './types'
import { coalesceRowsToArray } from './helpers.js'
import { columnsSql, foreignTablesSql } from './sql/index.js'
import { PostgresMetaResult, PostgresForeignTable } from './types.js'

export default class PostgresMetaForeignTables {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
8 changes: 4 additions & 4 deletions src/lib/PostgresMetaFunctions.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ident, literal } from 'pg-format'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { filterByList } from './helpers'
import { functionsSql } from './sql'
import { PostgresMetaResult, PostgresFunction, PostgresFunctionCreate } from './types'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { filterByList } from './helpers.js'
import { functionsSql } from './sql/index.js'
import { PostgresMetaResult, PostgresFunction, PostgresFunctionCreate } from './types.js'

export default class PostgresMetaFunctions {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
8 changes: 4 additions & 4 deletions src/lib/PostgresMetaPolicies.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ident, literal } from 'pg-format'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { filterByList } from './helpers'
import { policiesSql } from './sql'
import { PostgresMetaResult, PostgresPolicy } from './types'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { filterByList } from './helpers.js'
import { policiesSql } from './sql/index.js'
import { PostgresMetaResult, PostgresPolicy } from './types.js'

export default class PostgresMetaPolicies {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
4 changes: 2 additions & 2 deletions src/lib/PostgresMetaPublications.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ident, literal } from 'pg-format'
import { publicationsSql } from './sql'
import { PostgresMetaResult, PostgresPublication, PostgresTable } from './types'
import { publicationsSql } from './sql/index.js'
import { PostgresMetaResult, PostgresPublication, PostgresTable } from './types.js'

export default class PostgresMetaPublications {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
6 changes: 3 additions & 3 deletions src/lib/PostgresMetaRoles.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ident, literal } from 'pg-format'
import { DEFAULT_ROLES } from './constants'
import { rolesSql } from './sql'
import { PostgresMetaResult, PostgresRole, PostgresRoleCreate, PostgresRoleUpdate } from './types'
import { DEFAULT_ROLES } from './constants.js'
import { rolesSql } from './sql/index.js'
import { PostgresMetaResult, PostgresRole, PostgresRoleCreate, PostgresRoleUpdate } from './types.js'
export function changeRoleConfig2Object(config: string[]) {
if (!config) {
return null
Expand Down
6 changes: 3 additions & 3 deletions src/lib/PostgresMetaSchemas.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { ident, literal } from 'pg-format'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { schemasSql } from './sql'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { schemasSql } from './sql/index.js'
import {
PostgresMetaResult,
PostgresSchema,
PostgresSchemaCreate,
PostgresSchemaUpdate,
} from './types'
} from './types.js'

export default class PostgresMetaSchemas {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
8 changes: 4 additions & 4 deletions src/lib/PostgresMetaTables.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ident, literal } from 'pg-format'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { coalesceRowsToArray, filterByList } from './helpers'
import { columnsSql, primaryKeysSql, relationshipsSql, tablesSql } from './sql'
import { PostgresMetaResult, PostgresTable } from './types'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { coalesceRowsToArray, filterByList } from './helpers.js'
import { columnsSql, primaryKeysSql, relationshipsSql, tablesSql } from './sql/index.js'
import { PostgresMetaResult, PostgresTable } from './types.js'

export default class PostgresMetaTables {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
8 changes: 4 additions & 4 deletions src/lib/PostgresMetaTriggers.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ident, literal } from 'pg-format'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { filterByList } from './helpers'
import { triggersSql } from './sql'
import { PostgresMetaResult, PostgresTrigger } from './types'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { filterByList } from './helpers.js'
import { triggersSql } from './sql/index.js'
import { PostgresMetaResult, PostgresTrigger } from './types.js'

export default class PostgresMetaTriggers {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
9 changes: 4 additions & 5 deletions src/lib/PostgresMetaTypes.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { literal } from 'pg-format'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { filterByList } from './helpers'
import { typesSql } from './sql'
import { PostgresMetaResult, PostgresType } from './types'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { filterByList } from './helpers.js'
import { typesSql } from './sql/index.js'
import { PostgresMetaResult, PostgresType } from './types.js'

export default class PostgresMetaTypes {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
4 changes: 2 additions & 2 deletions src/lib/PostgresMetaVersion.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { versionSql } from './sql'
import { PostgresMetaResult, PostgresVersion } from './types'
import { versionSql } from './sql/index.js'
import { PostgresMetaResult, PostgresVersion } from './types.js'

export default class PostgresMetaVersion {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
8 changes: 4 additions & 4 deletions src/lib/PostgresMetaViews.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DEFAULT_SYSTEM_SCHEMAS } from './constants'
import { coalesceRowsToArray, filterByList } from './helpers'
import { columnsSql, viewsSql } from './sql'
import { PostgresMetaResult, PostgresView } from './types'
import { DEFAULT_SYSTEM_SCHEMAS } from './constants.js'
import { coalesceRowsToArray, filterByList } from './helpers.js'
import { columnsSql, viewsSql } from './sql/index.js'
import { PostgresMetaResult, PostgresView } from './types.js'

export default class PostgresMetaViews {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand Down
26 changes: 13 additions & 13 deletions src/lib/db.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import { types, Pool, PoolConfig } from 'pg'
import pg, { PoolConfig } from 'pg'
import { parse as parseArray } from 'postgres-array'
import { PostgresMetaResult } from './types'
import { PostgresMetaResult } from './types.js'

types.setTypeParser(types.builtins.INT8, (x) => {
pg.types.setTypeParser(pg.types.builtins.INT8, (x) => {
const asNumber = Number(x)
if (Number.isSafeInteger(asNumber)) {
return asNumber
} else {
return x
}
})
types.setTypeParser(types.builtins.DATE, (x) => x)
types.setTypeParser(types.builtins.TIMESTAMP, (x) => x)
types.setTypeParser(types.builtins.TIMESTAMPTZ, (x) => x)
types.setTypeParser(1115, parseArray) // _timestamp
types.setTypeParser(1182, parseArray) // _date
types.setTypeParser(1185, parseArray) // _timestamptz
types.setTypeParser(600, (x) => x) // point
types.setTypeParser(1017, (x) => x) // _point
pg.types.setTypeParser(pg.types.builtins.DATE, (x) => x)
pg.types.setTypeParser(pg.types.builtins.TIMESTAMP, (x) => x)
pg.types.setTypeParser(pg.types.builtins.TIMESTAMPTZ, (x) => x)
pg.types.setTypeParser(1115, parseArray) // _timestamp
pg.types.setTypeParser(1182, parseArray) // _date
pg.types.setTypeParser(1185, parseArray) // _timestamptz
pg.types.setTypeParser(600, (x) => x) // point
pg.types.setTypeParser(1017, (x) => x) // _point

export const init: (config: PoolConfig) => {
query: (sql: string) => Promise<PostgresMetaResult<any>>
Expand All @@ -29,12 +29,12 @@ export const init: (config: PoolConfig) => {
// need to call `pool.end()`, but since the server needs this, we make a
// compromise: if we run `query` after `pool.end()` is called (i.e. pool is
// `null`), we temporarily create a pool and close it right after.
let pool: Pool | null = new Pool(config)
let pool: pg.Pool | null = new pg.Pool(config)
return {
async query(sql) {
try {
if (!pool) {
const pool = new Pool(config)
const pool = new pg.Pool(config)
let res = await pool.query(sql)
if (Array.isArray(res)) {
res = res.reverse().find((x) => x.rows.length !== 0) ?? { rows: [] }
Expand Down
4 changes: 2 additions & 2 deletions src/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import PostgresMeta from './PostgresMeta'
import PostgresMeta from './PostgresMeta.js'
export { PostgresMeta }
export {
PostgresMetaOk,
Expand All @@ -22,4 +22,4 @@ export {
PostgresType,
PostgresVersion,
PostgresView,
} from './types'
} from './types.js'
38 changes: 20 additions & 18 deletions src/lib/sql/index.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
import { readFileSync } from 'fs'
import { resolve } from 'path'
import { readFile } from 'fs/promises'
import { dirname, join } from 'path'
import { fileURLToPath } from 'url'

export const columnsSql = readFileSync(resolve(__dirname, 'columns.sql'), 'utf-8')
export const configSql = readFileSync(resolve(__dirname, 'config.sql'), 'utf-8')
export const extensionsSql = readFileSync(resolve(__dirname, 'extensions.sql'), 'utf-8')
export const foreignTablesSql = readFileSync(resolve(__dirname, 'foreign_tables.sql'), 'utf-8')
export const functionsSql = readFileSync(resolve(__dirname, 'functions.sql'), 'utf-8')
export const policiesSql = readFileSync(resolve(__dirname, 'policies.sql'), 'utf-8')
export const primaryKeysSql = readFileSync(resolve(__dirname, 'primary_keys.sql'), 'utf-8')
export const publicationsSql = readFileSync(resolve(__dirname, 'publications.sql'), 'utf-8')
export const relationshipsSql = readFileSync(resolve(__dirname, 'relationships.sql'), 'utf-8')
export const rolesSql = readFileSync(resolve(__dirname, 'roles.sql'), 'utf-8')
export const schemasSql = readFileSync(resolve(__dirname, 'schemas.sql'), 'utf-8')
export const tablesSql = readFileSync(resolve(__dirname, 'tables.sql'), 'utf-8')
export const triggersSql = readFileSync(resolve(__dirname, 'triggers.sql'), 'utf-8')
export const typesSql = readFileSync(resolve(__dirname, 'types.sql'), 'utf-8')
export const versionSql = readFileSync(resolve(__dirname, 'version.sql'), 'utf-8')
export const viewsSql = readFileSync(resolve(__dirname, 'views.sql'), 'utf-8')
const __dirname = dirname(fileURLToPath(import.meta.url))
export const columnsSql = await readFile(join(__dirname, 'columns.sql'), 'utf-8')
export const configSql = await readFile(join(__dirname, 'config.sql'), 'utf-8')
export const extensionsSql = await readFile(join(__dirname, 'extensions.sql'), 'utf-8')
export const foreignTablesSql = await readFile(join(__dirname, 'foreign_tables.sql'), 'utf-8')
export const functionsSql = await readFile(join(__dirname, 'functions.sql'), 'utf-8')
export const policiesSql = await readFile(join(__dirname, 'policies.sql'), 'utf-8')
export const primaryKeysSql = await readFile(join(__dirname, 'primary_keys.sql'), 'utf-8')
export const publicationsSql = await readFile(join(__dirname, 'publications.sql'), 'utf-8')
export const relationshipsSql = await readFile(join(__dirname, 'relationships.sql'), 'utf-8')
export const rolesSql = await readFile(join(__dirname, 'roles.sql'), 'utf-8')
export const schemasSql = await readFile(join(__dirname, 'schemas.sql'), 'utf-8')
export const tablesSql = await readFile(join(__dirname, 'tables.sql'), 'utf-8')
export const triggersSql = await readFile(join(__dirname, 'triggers.sql'), 'utf-8')
export const typesSql = await readFile(join(__dirname, 'types.sql'), 'utf-8')
export const versionSql = await readFile(join(__dirname, 'version.sql'), 'utf-8')
export const viewsSql = await readFile(join(__dirname, 'views.sql'), 'utf-8')
0