@settlemint/sdk-hasura 2.4.0-prcf35f1e3 → 2.4.0-prd61aaa2c
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/dist/hasura.cjs +1 -0
- package/dist/hasura.cjs.map +1 -1
- package/dist/hasura.d.cts +1 -1
- package/dist/hasura.d.ts +1 -1
- package/dist/hasura.js +1 -0
- package/dist/hasura.js.map +1 -1
- package/dist/postgres.cjs +1 -0
- package/dist/postgres.cjs.map +1 -1
- package/dist/postgres.d.cts +1 -0
- package/dist/postgres.d.ts +1 -0
- package/dist/postgres.js +1 -0
- package/dist/postgres.js.map +1 -1
- package/package.json +5 -3
package/dist/hasura.cjs
CHANGED
package/dist/hasura.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasura.cjs","names":["UrlOrPathSchema","options: ClientOptions","clientOptions?: RequestConfig","logger?: Logger","GraphQLClient"],"sources":["../src/hasura.ts"],"sourcesContent":["import { appendHeaders } from \"@settlemint/sdk-utils/http\";\nimport { type Logger, requestLogger } from \"@settlemint/sdk-utils/logging\";\nimport { ensureServer } from \"@settlemint/sdk-utils/runtime\";\nimport { ApplicationAccessTokenSchema, UrlOrPathSchema, validate } from \"@settlemint/sdk-utils/validation\";\nimport { type AbstractSetupSchema, initGraphQLTada } from \"gql.tada\";\nimport { GraphQLClient } from \"graphql-request\";\nimport { z } from \"zod/v4\";\n\n/**\n * Type definition for GraphQL client configuration options\n */\nexport type RequestConfig = ConstructorParameters<typeof GraphQLClient>[1];\n\n/**\n * Schema for validating client options for the Hasura client.\n */\nexport const ClientOptionsSchema = z.object({\n instance: UrlOrPathSchema,\n accessToken: ApplicationAccessTokenSchema.optional(),\n adminSecret: z.string(),\n cache: z.enum([\"default\", \"force-cache\", \"no-cache\", \"no-store\", \"only-if-cached\", \"reload\"]).optional(),\n});\n\n/**\n * Type definition for client options derived from the ClientOptionsSchema.\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/**\n * Creates a Hasura GraphQL client with proper type safety using gql.tada\n *\n * @param options - Configuration options for the client\n * @param clientOptions - Optional GraphQL client configuration options\n * @param logger - Optional logger to use for logging the requests\n * @returns An object containing:\n * - client: The configured GraphQL client instance\n * - graphql: The initialized gql.tada function for type-safe queries\n * @throws Will throw an error if the options fail validation against ClientOptionsSchema\n * @example\n * import { createHasuraClient } from '@settlemint/sdk-hasura';\n * import type { introspection } from \"@schemas/hasura-env\";\n * import { createLogger, requestLogger } from \"@settlemint/sdk-utils/logging\";\n *\n * const logger = createLogger();\n *\n * const { client, graphql } = createHasuraClient<{\n * introspection: introspection;\n * disableMasking: true;\n * scalars: {\n * timestamp: string;\n * timestampz: string;\n * uuid: string;\n * date: string;\n * time: string;\n * jsonb: string;\n * numeric: string;\n * interval: string;\n * geometry: string;\n * geography: string;\n * };\n * }>({\n * instance: process.env.SETTLEMINT_HASURA_ENDPOINT,\n * accessToken: process.env.SETTLEMINT_ACCESS_TOKEN,\n * adminSecret: process.env.SETTLEMINT_HASURA_ADMIN_SECRET,\n * }, {\n * fetch: requestLogger(logger, \"hasura\", fetch) as typeof fetch,\n * });\n *\n * // Making GraphQL queries\n * const query = graphql(`\n * query GetUsers {\n * users {\n * id\n * name\n * email\n * }\n * }\n * `);\n *\n * const result = await client.request(query);\n */\nexport function createHasuraClient<const Setup extends AbstractSetupSchema>(\n options: ClientOptions,\n clientOptions?: RequestConfig,\n logger?: Logger,\n): {\n client: GraphQLClient;\n graphql: initGraphQLTada<Setup>;\n} {\n ensureServer();\n const validatedOptions = validate(ClientOptionsSchema, options);\n const graphql = initGraphQLTada<Setup>();\n const fullUrl = new URL(validatedOptions.instance).toString();\n\n return {\n client: new GraphQLClient(fullUrl, {\n ...clientOptions,\n headers: appendHeaders(clientOptions?.headers, {\n \"x-auth-token\": validatedOptions.accessToken,\n \"x-hasura-admin-secret\": validatedOptions.adminSecret,\n }),\n fetch: (logger ? requestLogger(logger, \"hasura\", fetch) : fetch) as typeof fetch,\n }),\n graphql,\n };\n}\n\nexport { readFragment } from \"gql.tada\";\nexport type { FragmentOf, ResultOf, VariablesOf } from \"gql.tada\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"hasura.cjs","names":["UrlOrPathSchema","options: ClientOptions","clientOptions?: RequestConfig","logger?: Logger","GraphQLClient"],"sources":["../src/hasura.ts"],"sourcesContent":["import { appendHeaders } from \"@settlemint/sdk-utils/http\";\nimport { type Logger, requestLogger } from \"@settlemint/sdk-utils/logging\";\nimport { ensureServer } from \"@settlemint/sdk-utils/runtime\";\nimport { ApplicationAccessTokenSchema, UrlOrPathSchema, validate } from \"@settlemint/sdk-utils/validation\";\nimport { type AbstractSetupSchema, initGraphQLTada } from \"gql.tada\";\nimport { GraphQLClient } from \"graphql-request\";\nimport { z } from \"zod/v4\";\n\n/**\n * Type definition for GraphQL client configuration options\n */\nexport type RequestConfig = ConstructorParameters<typeof GraphQLClient>[1];\n\n/**\n * Schema for validating client options for the Hasura client.\n */\nexport const ClientOptionsSchema = z.object({\n instance: UrlOrPathSchema,\n accessToken: ApplicationAccessTokenSchema.optional(),\n adminSecret: z.string(),\n cache: z.enum([\"default\", \"force-cache\", \"no-cache\", \"no-store\", \"only-if-cached\", \"reload\"]).optional(),\n});\n\n/**\n * Type definition for client options derived from the ClientOptionsSchema.\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/**\n * Creates a Hasura GraphQL client with proper type safety using gql.tada\n *\n * @param options - Configuration options for the client\n * @param clientOptions - Optional GraphQL client configuration options\n * @param logger - Optional logger to use for logging the requests\n * @returns An object containing:\n * - client: The configured GraphQL client instance\n * - graphql: The initialized gql.tada function for type-safe queries\n * @throws Will throw an error if the options fail validation against ClientOptionsSchema\n * @example\n * import { createHasuraClient } from '@settlemint/sdk-hasura';\n * import type { introspection } from \"@schemas/hasura-env\";\n * import { createLogger, requestLogger } from \"@settlemint/sdk-utils/logging\";\n *\n * const logger = createLogger();\n *\n * const { client, graphql } = createHasuraClient<{\n * introspection: introspection;\n * disableMasking: true;\n * scalars: {\n * timestamp: string;\n * timestampz: string;\n * uuid: string;\n * date: string;\n * time: string;\n * jsonb: string;\n * numeric: string;\n * interval: string;\n * geometry: string;\n * geography: string;\n * };\n * }>({\n * instance: process.env.SETTLEMINT_HASURA_ENDPOINT,\n * accessToken: process.env.SETTLEMINT_ACCESS_TOKEN,\n * adminSecret: process.env.SETTLEMINT_HASURA_ADMIN_SECRET,\n * }, {\n * fetch: requestLogger(logger, \"hasura\", fetch) as typeof fetch,\n * });\n *\n * // Making GraphQL queries\n * const query = graphql(`\n * query GetUsers {\n * users {\n * id\n * name\n * email\n * }\n * }\n * `);\n *\n * const result = await client.request(query);\n */\nexport function createHasuraClient<const Setup extends AbstractSetupSchema>(\n options: ClientOptions,\n clientOptions?: RequestConfig,\n logger?: Logger,\n): {\n client: GraphQLClient;\n graphql: initGraphQLTada<Setup>;\n} {\n ensureServer();\n const validatedOptions = validate(ClientOptionsSchema, options);\n const graphql = initGraphQLTada<Setup>();\n const fullUrl = new URL(validatedOptions.instance).toString();\n\n return {\n client: new GraphQLClient(fullUrl, {\n ...clientOptions,\n headers: appendHeaders(clientOptions?.headers, {\n \"x-auth-token\": validatedOptions.accessToken,\n \"x-hasura-admin-secret\": validatedOptions.adminSecret,\n }),\n fetch: (logger ? requestLogger(logger, \"hasura\", fetch) : fetch) as typeof fetch,\n }),\n graphql,\n };\n}\n\nexport { readFragment } from \"gql.tada\";\nexport type { FragmentOf, ResultOf, VariablesOf } from \"gql.tada\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,sBAAsB,SAAE,OAAO;CAC1C,UAAUA;CACV,aAAa,+DAA6B,UAAU;CACpD,aAAa,SAAE,QAAQ;CACvB,OAAO,SAAE,KAAK;EAAC;EAAW;EAAe;EAAY;EAAY;EAAkB;CAAS,EAAC,CAAC,UAAU;AACzG,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DF,SAAgB,mBACdC,SACAC,eACAC,QAIA;AACA,mDAAc;CACd,MAAM,mBAAmB,gDAAS,qBAAqB,QAAQ;CAC/D,MAAM,UAAU,+BAAwB;CACxC,MAAM,UAAU,IAAI,IAAI,iBAAiB,UAAU,UAAU;AAE7D,QAAO;EACL,QAAQ,IAAIC,8BAAc,SAAS;GACjC,GAAG;GACH,SAAS,+CAAc,eAAe,SAAS;IAC7C,gBAAgB,iBAAiB;IACjC,yBAAyB,iBAAiB;GAC3C,EAAC;GACF,OAAQ,SAAS,kDAAc,QAAQ,UAAU,MAAM,GAAG;EAC3D;EACD;CACD;AACF"}
|
package/dist/hasura.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
/* SettleMint Hasura SDK - GraphQL API */
|
|
1
2
|
import { Logger } from "@settlemint/sdk-utils/logging";
|
|
2
3
|
import { AbstractSetupSchema, FragmentOf, ResultOf, VariablesOf, initGraphQLTada, readFragment } from "gql.tada";
|
|
3
4
|
import { GraphQLClient } from "graphql-request";
|
|
4
5
|
import { z } from "zod/v4";
|
|
5
6
|
|
|
6
7
|
//#region src/hasura.d.ts
|
|
7
|
-
|
|
8
8
|
/**
|
|
9
9
|
* Type definition for GraphQL client configuration options
|
|
10
10
|
*/
|
package/dist/hasura.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
/* SettleMint Hasura SDK - GraphQL API */
|
|
1
2
|
import { Logger } from "@settlemint/sdk-utils/logging";
|
|
2
3
|
import { AbstractSetupSchema, FragmentOf, ResultOf, VariablesOf, initGraphQLTada, readFragment } from "gql.tada";
|
|
3
4
|
import { GraphQLClient } from "graphql-request";
|
|
4
5
|
import { z } from "zod/v4";
|
|
5
6
|
|
|
6
7
|
//#region src/hasura.d.ts
|
|
7
|
-
|
|
8
8
|
/**
|
|
9
9
|
* Type definition for GraphQL client configuration options
|
|
10
10
|
*/
|
package/dist/hasura.js
CHANGED
package/dist/hasura.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasura.js","names":["options: ClientOptions","clientOptions?: RequestConfig","logger?: Logger"],"sources":["../src/hasura.ts"],"sourcesContent":["import { appendHeaders } from \"@settlemint/sdk-utils/http\";\nimport { type Logger, requestLogger } from \"@settlemint/sdk-utils/logging\";\nimport { ensureServer } from \"@settlemint/sdk-utils/runtime\";\nimport { ApplicationAccessTokenSchema, UrlOrPathSchema, validate } from \"@settlemint/sdk-utils/validation\";\nimport { type AbstractSetupSchema, initGraphQLTada } from \"gql.tada\";\nimport { GraphQLClient } from \"graphql-request\";\nimport { z } from \"zod/v4\";\n\n/**\n * Type definition for GraphQL client configuration options\n */\nexport type RequestConfig = ConstructorParameters<typeof GraphQLClient>[1];\n\n/**\n * Schema for validating client options for the Hasura client.\n */\nexport const ClientOptionsSchema = z.object({\n instance: UrlOrPathSchema,\n accessToken: ApplicationAccessTokenSchema.optional(),\n adminSecret: z.string(),\n cache: z.enum([\"default\", \"force-cache\", \"no-cache\", \"no-store\", \"only-if-cached\", \"reload\"]).optional(),\n});\n\n/**\n * Type definition for client options derived from the ClientOptionsSchema.\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/**\n * Creates a Hasura GraphQL client with proper type safety using gql.tada\n *\n * @param options - Configuration options for the client\n * @param clientOptions - Optional GraphQL client configuration options\n * @param logger - Optional logger to use for logging the requests\n * @returns An object containing:\n * - client: The configured GraphQL client instance\n * - graphql: The initialized gql.tada function for type-safe queries\n * @throws Will throw an error if the options fail validation against ClientOptionsSchema\n * @example\n * import { createHasuraClient } from '@settlemint/sdk-hasura';\n * import type { introspection } from \"@schemas/hasura-env\";\n * import { createLogger, requestLogger } from \"@settlemint/sdk-utils/logging\";\n *\n * const logger = createLogger();\n *\n * const { client, graphql } = createHasuraClient<{\n * introspection: introspection;\n * disableMasking: true;\n * scalars: {\n * timestamp: string;\n * timestampz: string;\n * uuid: string;\n * date: string;\n * time: string;\n * jsonb: string;\n * numeric: string;\n * interval: string;\n * geometry: string;\n * geography: string;\n * };\n * }>({\n * instance: process.env.SETTLEMINT_HASURA_ENDPOINT,\n * accessToken: process.env.SETTLEMINT_ACCESS_TOKEN,\n * adminSecret: process.env.SETTLEMINT_HASURA_ADMIN_SECRET,\n * }, {\n * fetch: requestLogger(logger, \"hasura\", fetch) as typeof fetch,\n * });\n *\n * // Making GraphQL queries\n * const query = graphql(`\n * query GetUsers {\n * users {\n * id\n * name\n * email\n * }\n * }\n * `);\n *\n * const result = await client.request(query);\n */\nexport function createHasuraClient<const Setup extends AbstractSetupSchema>(\n options: ClientOptions,\n clientOptions?: RequestConfig,\n logger?: Logger,\n): {\n client: GraphQLClient;\n graphql: initGraphQLTada<Setup>;\n} {\n ensureServer();\n const validatedOptions = validate(ClientOptionsSchema, options);\n const graphql = initGraphQLTada<Setup>();\n const fullUrl = new URL(validatedOptions.instance).toString();\n\n return {\n client: new GraphQLClient(fullUrl, {\n ...clientOptions,\n headers: appendHeaders(clientOptions?.headers, {\n \"x-auth-token\": validatedOptions.accessToken,\n \"x-hasura-admin-secret\": validatedOptions.adminSecret,\n }),\n fetch: (logger ? requestLogger(logger, \"hasura\", fetch) : fetch) as typeof fetch,\n }),\n graphql,\n };\n}\n\nexport { readFragment } from \"gql.tada\";\nexport type { FragmentOf, ResultOf, VariablesOf } from \"gql.tada\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"hasura.js","names":["options: ClientOptions","clientOptions?: RequestConfig","logger?: Logger"],"sources":["../src/hasura.ts"],"sourcesContent":["import { appendHeaders } from \"@settlemint/sdk-utils/http\";\nimport { type Logger, requestLogger } from \"@settlemint/sdk-utils/logging\";\nimport { ensureServer } from \"@settlemint/sdk-utils/runtime\";\nimport { ApplicationAccessTokenSchema, UrlOrPathSchema, validate } from \"@settlemint/sdk-utils/validation\";\nimport { type AbstractSetupSchema, initGraphQLTada } from \"gql.tada\";\nimport { GraphQLClient } from \"graphql-request\";\nimport { z } from \"zod/v4\";\n\n/**\n * Type definition for GraphQL client configuration options\n */\nexport type RequestConfig = ConstructorParameters<typeof GraphQLClient>[1];\n\n/**\n * Schema for validating client options for the Hasura client.\n */\nexport const ClientOptionsSchema = z.object({\n instance: UrlOrPathSchema,\n accessToken: ApplicationAccessTokenSchema.optional(),\n adminSecret: z.string(),\n cache: z.enum([\"default\", \"force-cache\", \"no-cache\", \"no-store\", \"only-if-cached\", \"reload\"]).optional(),\n});\n\n/**\n * Type definition for client options derived from the ClientOptionsSchema.\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/**\n * Creates a Hasura GraphQL client with proper type safety using gql.tada\n *\n * @param options - Configuration options for the client\n * @param clientOptions - Optional GraphQL client configuration options\n * @param logger - Optional logger to use for logging the requests\n * @returns An object containing:\n * - client: The configured GraphQL client instance\n * - graphql: The initialized gql.tada function for type-safe queries\n * @throws Will throw an error if the options fail validation against ClientOptionsSchema\n * @example\n * import { createHasuraClient } from '@settlemint/sdk-hasura';\n * import type { introspection } from \"@schemas/hasura-env\";\n * import { createLogger, requestLogger } from \"@settlemint/sdk-utils/logging\";\n *\n * const logger = createLogger();\n *\n * const { client, graphql } = createHasuraClient<{\n * introspection: introspection;\n * disableMasking: true;\n * scalars: {\n * timestamp: string;\n * timestampz: string;\n * uuid: string;\n * date: string;\n * time: string;\n * jsonb: string;\n * numeric: string;\n * interval: string;\n * geometry: string;\n * geography: string;\n * };\n * }>({\n * instance: process.env.SETTLEMINT_HASURA_ENDPOINT,\n * accessToken: process.env.SETTLEMINT_ACCESS_TOKEN,\n * adminSecret: process.env.SETTLEMINT_HASURA_ADMIN_SECRET,\n * }, {\n * fetch: requestLogger(logger, \"hasura\", fetch) as typeof fetch,\n * });\n *\n * // Making GraphQL queries\n * const query = graphql(`\n * query GetUsers {\n * users {\n * id\n * name\n * email\n * }\n * }\n * `);\n *\n * const result = await client.request(query);\n */\nexport function createHasuraClient<const Setup extends AbstractSetupSchema>(\n options: ClientOptions,\n clientOptions?: RequestConfig,\n logger?: Logger,\n): {\n client: GraphQLClient;\n graphql: initGraphQLTada<Setup>;\n} {\n ensureServer();\n const validatedOptions = validate(ClientOptionsSchema, options);\n const graphql = initGraphQLTada<Setup>();\n const fullUrl = new URL(validatedOptions.instance).toString();\n\n return {\n client: new GraphQLClient(fullUrl, {\n ...clientOptions,\n headers: appendHeaders(clientOptions?.headers, {\n \"x-auth-token\": validatedOptions.accessToken,\n \"x-hasura-admin-secret\": validatedOptions.adminSecret,\n }),\n fetch: (logger ? requestLogger(logger, \"hasura\", fetch) : fetch) as typeof fetch,\n }),\n graphql,\n };\n}\n\nexport { readFragment } from \"gql.tada\";\nexport type { FragmentOf, ResultOf, VariablesOf } from \"gql.tada\";\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,sBAAsB,EAAE,OAAO;CAC1C,UAAU;CACV,aAAa,6BAA6B,UAAU;CACpD,aAAa,EAAE,QAAQ;CACvB,OAAO,EAAE,KAAK;EAAC;EAAW;EAAe;EAAY;EAAY;EAAkB;CAAS,EAAC,CAAC,UAAU;AACzG,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DF,SAAgB,mBACdA,SACAC,eACAC,QAIA;AACA,eAAc;CACd,MAAM,mBAAmB,SAAS,qBAAqB,QAAQ;CAC/D,MAAM,UAAU,iBAAwB;CACxC,MAAM,UAAU,IAAI,IAAI,iBAAiB,UAAU,UAAU;AAE7D,QAAO;EACL,QAAQ,IAAI,cAAc,SAAS;GACjC,GAAG;GACH,SAAS,cAAc,eAAe,SAAS;IAC7C,gBAAgB,iBAAiB;IACjC,yBAAyB,iBAAiB;GAC3C,EAAC;GACF,OAAQ,SAAS,cAAc,QAAQ,UAAU,MAAM,GAAG;EAC3D;EACD;CACD;AACF"}
|
package/dist/postgres.cjs
CHANGED
package/dist/postgres.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.cjs","names":["ms: number","pool: pg.Pool","err: Error","client: pg.PoolClient","databaseUrl: string","runsOnServer"],"sources":["../src/postgres.ts"],"sourcesContent":["import { runsOnServer } from \"@settlemint/sdk-utils/runtime\";\nimport pg from \"pg\";\n\n/**\n * Type definition extending the pg.Pool interface to include custom permanent-failure event\n */\ndeclare module \"pg\" {\n interface Pool {\n on(event: \"permanent-failure\", listener: (err: Error) => void): this;\n emit(event: \"permanent-failure\", err: Error): boolean;\n }\n}\n\n/**\n * Utility function to pause execution for a specified duration\n *\n * @param ms - The number of milliseconds to sleep\n * @returns A promise that resolves after the specified duration\n */\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n/**\n * Configures error handling and recovery mechanisms for a PostgreSQL connection pool\n *\n * @param pool - The PostgreSQL connection pool to configure\n */\nfunction setupErrorHandling(pool: pg.Pool) {\n let retryCount = 0;\n let isRetrying = false;\n const clientErrorHandlers = new WeakSet<pg.PoolClient>();\n\n const handlePoolError = async (err: Error) => {\n console.error(\"[Drizzle] Pool error occurred:\", err);\n\n // Prevent concurrent retry attempts\n if (isRetrying) {\n console.log(\"[Drizzle] Recovery already in progress, skipping\");\n return;\n }\n\n if (retryCount < 3) {\n isRetrying = true;\n retryCount++;\n console.log(`[Drizzle] Attempting to recover - retry ${retryCount}/3`);\n\n try {\n const client = await pool.connect();\n try {\n // Test the connection with timeout\n await Promise.race([\n client.query(\"SELECT 1\"),\n new Promise((_, reject) => setTimeout(() => reject(new Error(\"Query timeout\")), 5000)),\n ]);\n console.log(\"[Drizzle] Successfully recovered connection\");\n retryCount = 0;\n } finally {\n client.release();\n }\n } catch (retryError) {\n console.error(`[Drizzle] Recovery attempt ${retryCount} failed:`, retryError);\n await sleep(5000 * 2 ** (retryCount - 1));\n } finally {\n isRetrying = false;\n }\n } else {\n console.error(\"[Drizzle] Max retries exceeded - pool is in an error state\");\n pool.emit(\"permanent-failure\", err);\n }\n };\n\n const handleConnect = (client: pg.PoolClient) => {\n // Only add error handler if not already added (prevent memory leaks)\n if (!clientErrorHandlers.has(client)) {\n clientErrorHandlers.add(client);\n client.on(\"error\", (err: Error) => {\n console.error(\"[Drizzle] Database client error:\", err);\n });\n }\n retryCount = 0;\n isRetrying = false;\n };\n\n pool.on(\"error\", handlePoolError);\n pool.on(\"connect\", handleConnect);\n}\n\n/**\n * Creates a PostgreSQL connection pool with error handling and retry mechanisms\n *\n * @param databaseUrl - The PostgreSQL connection URL\n * @returns A configured PostgreSQL connection pool\n * @throws Will throw an error if called from browser runtime\n * @example\n * import { createPostgresPool } from '@settlemint/sdk-hasura';\n *\n * const pool = createPostgresPool(process.env.SETTLEMINT_HASURA_DATABASE_URL);\n *\n * // The pool will automatically handle connection errors and retries\n * const client = await pool.connect();\n * try {\n * const result = await client.query('SELECT NOW()');\n * console.log(result.rows[0]);\n * } finally {\n * client.release();\n * }\n */\nexport function createPostgresPool(databaseUrl: string) {\n if (!databaseUrl?.trim()) {\n throw new Error(\"Database URL is required\");\n }\n\n if (!runsOnServer) {\n throw new Error(\"Drizzle client can only be created on the server side\");\n }\n\n const pool = new pg.Pool({\n connectionString: databaseUrl,\n max: 20,\n idleTimeoutMillis: 30000,\n connectionTimeoutMillis: 5000,\n });\n\n setupErrorHandling(pool);\n\n return pool;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres.cjs","names":["ms: number","pool: pg.Pool","err: Error","client: pg.PoolClient","databaseUrl: string","runsOnServer"],"sources":["../src/postgres.ts"],"sourcesContent":["import { runsOnServer } from \"@settlemint/sdk-utils/runtime\";\nimport pg from \"pg\";\n\n/**\n * Type definition extending the pg.Pool interface to include custom permanent-failure event\n */\ndeclare module \"pg\" {\n interface Pool {\n on(event: \"permanent-failure\", listener: (err: Error) => void): this;\n emit(event: \"permanent-failure\", err: Error): boolean;\n }\n}\n\n/**\n * Utility function to pause execution for a specified duration\n *\n * @param ms - The number of milliseconds to sleep\n * @returns A promise that resolves after the specified duration\n */\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n/**\n * Configures error handling and recovery mechanisms for a PostgreSQL connection pool\n *\n * @param pool - The PostgreSQL connection pool to configure\n */\nfunction setupErrorHandling(pool: pg.Pool) {\n let retryCount = 0;\n let isRetrying = false;\n const clientErrorHandlers = new WeakSet<pg.PoolClient>();\n\n const handlePoolError = async (err: Error) => {\n console.error(\"[Drizzle] Pool error occurred:\", err);\n\n // Prevent concurrent retry attempts\n if (isRetrying) {\n console.log(\"[Drizzle] Recovery already in progress, skipping\");\n return;\n }\n\n if (retryCount < 3) {\n isRetrying = true;\n retryCount++;\n console.log(`[Drizzle] Attempting to recover - retry ${retryCount}/3`);\n\n try {\n const client = await pool.connect();\n try {\n // Test the connection with timeout\n await Promise.race([\n client.query(\"SELECT 1\"),\n new Promise((_, reject) => setTimeout(() => reject(new Error(\"Query timeout\")), 5000)),\n ]);\n console.log(\"[Drizzle] Successfully recovered connection\");\n retryCount = 0;\n } finally {\n client.release();\n }\n } catch (retryError) {\n console.error(`[Drizzle] Recovery attempt ${retryCount} failed:`, retryError);\n await sleep(5000 * 2 ** (retryCount - 1));\n } finally {\n isRetrying = false;\n }\n } else {\n console.error(\"[Drizzle] Max retries exceeded - pool is in an error state\");\n pool.emit(\"permanent-failure\", err);\n }\n };\n\n const handleConnect = (client: pg.PoolClient) => {\n // Only add error handler if not already added (prevent memory leaks)\n if (!clientErrorHandlers.has(client)) {\n clientErrorHandlers.add(client);\n client.on(\"error\", (err: Error) => {\n console.error(\"[Drizzle] Database client error:\", err);\n });\n }\n retryCount = 0;\n isRetrying = false;\n };\n\n pool.on(\"error\", handlePoolError);\n pool.on(\"connect\", handleConnect);\n}\n\n/**\n * Creates a PostgreSQL connection pool with error handling and retry mechanisms\n *\n * @param databaseUrl - The PostgreSQL connection URL\n * @returns A configured PostgreSQL connection pool\n * @throws Will throw an error if called from browser runtime\n * @example\n * import { createPostgresPool } from '@settlemint/sdk-hasura';\n *\n * const pool = createPostgresPool(process.env.SETTLEMINT_HASURA_DATABASE_URL);\n *\n * // The pool will automatically handle connection errors and retries\n * const client = await pool.connect();\n * try {\n * const result = await client.query('SELECT NOW()');\n * console.log(result.rows[0]);\n * } finally {\n * client.release();\n * }\n */\nexport function createPostgresPool(databaseUrl: string) {\n if (!databaseUrl?.trim()) {\n throw new Error(\"Database URL is required\");\n }\n\n if (!runsOnServer) {\n throw new Error(\"Drizzle client can only be created on the server side\");\n }\n\n const pool = new pg.Pool({\n connectionString: databaseUrl,\n max: 20,\n idleTimeoutMillis: 30000,\n connectionTimeoutMillis: 5000,\n });\n\n setupErrorHandling(pool);\n\n return pool;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,QAAQ,CAACA,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;;;;;;AAO9E,SAAS,mBAAmBC,MAAe;CACzC,IAAI,aAAa;CACjB,IAAI,aAAa;CACjB,MAAM,sBAAsB,IAAI;CAEhC,MAAM,kBAAkB,OAAOC,QAAe;AAC5C,UAAQ,MAAM,kCAAkC,IAAI;AAGpD,MAAI,YAAY;AACd,WAAQ,IAAI,mDAAmD;AAC/D;EACD;AAED,MAAI,aAAa,GAAG;AAClB,gBAAa;AACb;AACA,WAAQ,KAAK,0CAA0C,WAAW,IAAI;AAEtE,OAAI;IACF,MAAM,SAAS,MAAM,KAAK,SAAS;AACnC,QAAI;AAEF,WAAM,QAAQ,KAAK,CACjB,OAAO,MAAM,WAAW,EACxB,IAAI,QAAQ,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,iBAAiB,EAAE,IAAK,CACtF,EAAC;AACF,aAAQ,IAAI,8CAA8C;AAC1D,kBAAa;IACd,UAAS;AACR,YAAO,SAAS;IACjB;GACF,SAAQ,YAAY;AACnB,YAAQ,OAAO,6BAA6B,WAAW,WAAW,WAAW;AAC7E,UAAM,MAAM,MAAO,MAAM,aAAa,GAAG;GAC1C,UAAS;AACR,iBAAa;GACd;EACF,OAAM;AACL,WAAQ,MAAM,6DAA6D;AAC3E,QAAK,KAAK,qBAAqB,IAAI;EACpC;CACF;CAED,MAAM,gBAAgB,CAACC,WAA0B;AAE/C,OAAK,oBAAoB,IAAI,OAAO,EAAE;AACpC,uBAAoB,IAAI,OAAO;AAC/B,UAAO,GAAG,SAAS,CAACD,QAAe;AACjC,YAAQ,MAAM,oCAAoC,IAAI;GACvD,EAAC;EACH;AACD,eAAa;AACb,eAAa;CACd;AAED,MAAK,GAAG,SAAS,gBAAgB;AACjC,MAAK,GAAG,WAAW,cAAc;AAClC;;;;;;;;;;;;;;;;;;;;;AAsBD,SAAgB,mBAAmBE,aAAqB;AACtD,MAAK,aAAa,MAAM,EAAE;AACxB,QAAM,IAAI,MAAM;CACjB;AAED,MAAKC,6CAAc;AACjB,QAAM,IAAI,MAAM;CACjB;CAED,MAAM,OAAO,IAAI,WAAG,KAAK;EACvB,kBAAkB;EAClB,KAAK;EACL,mBAAmB;EACnB,yBAAyB;CAC1B;AAED,oBAAmB,KAAK;AAExB,QAAO;AACR"}
|
package/dist/postgres.d.cts
CHANGED
package/dist/postgres.d.ts
CHANGED
package/dist/postgres.js
CHANGED
package/dist/postgres.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","names":["ms: number","pool: pg.Pool","err: Error","client: pg.PoolClient","databaseUrl: string"],"sources":["../src/postgres.ts"],"sourcesContent":["import { runsOnServer } from \"@settlemint/sdk-utils/runtime\";\nimport pg from \"pg\";\n\n/**\n * Type definition extending the pg.Pool interface to include custom permanent-failure event\n */\ndeclare module \"pg\" {\n interface Pool {\n on(event: \"permanent-failure\", listener: (err: Error) => void): this;\n emit(event: \"permanent-failure\", err: Error): boolean;\n }\n}\n\n/**\n * Utility function to pause execution for a specified duration\n *\n * @param ms - The number of milliseconds to sleep\n * @returns A promise that resolves after the specified duration\n */\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n/**\n * Configures error handling and recovery mechanisms for a PostgreSQL connection pool\n *\n * @param pool - The PostgreSQL connection pool to configure\n */\nfunction setupErrorHandling(pool: pg.Pool) {\n let retryCount = 0;\n let isRetrying = false;\n const clientErrorHandlers = new WeakSet<pg.PoolClient>();\n\n const handlePoolError = async (err: Error) => {\n console.error(\"[Drizzle] Pool error occurred:\", err);\n\n // Prevent concurrent retry attempts\n if (isRetrying) {\n console.log(\"[Drizzle] Recovery already in progress, skipping\");\n return;\n }\n\n if (retryCount < 3) {\n isRetrying = true;\n retryCount++;\n console.log(`[Drizzle] Attempting to recover - retry ${retryCount}/3`);\n\n try {\n const client = await pool.connect();\n try {\n // Test the connection with timeout\n await Promise.race([\n client.query(\"SELECT 1\"),\n new Promise((_, reject) => setTimeout(() => reject(new Error(\"Query timeout\")), 5000)),\n ]);\n console.log(\"[Drizzle] Successfully recovered connection\");\n retryCount = 0;\n } finally {\n client.release();\n }\n } catch (retryError) {\n console.error(`[Drizzle] Recovery attempt ${retryCount} failed:`, retryError);\n await sleep(5000 * 2 ** (retryCount - 1));\n } finally {\n isRetrying = false;\n }\n } else {\n console.error(\"[Drizzle] Max retries exceeded - pool is in an error state\");\n pool.emit(\"permanent-failure\", err);\n }\n };\n\n const handleConnect = (client: pg.PoolClient) => {\n // Only add error handler if not already added (prevent memory leaks)\n if (!clientErrorHandlers.has(client)) {\n clientErrorHandlers.add(client);\n client.on(\"error\", (err: Error) => {\n console.error(\"[Drizzle] Database client error:\", err);\n });\n }\n retryCount = 0;\n isRetrying = false;\n };\n\n pool.on(\"error\", handlePoolError);\n pool.on(\"connect\", handleConnect);\n}\n\n/**\n * Creates a PostgreSQL connection pool with error handling and retry mechanisms\n *\n * @param databaseUrl - The PostgreSQL connection URL\n * @returns A configured PostgreSQL connection pool\n * @throws Will throw an error if called from browser runtime\n * @example\n * import { createPostgresPool } from '@settlemint/sdk-hasura';\n *\n * const pool = createPostgresPool(process.env.SETTLEMINT_HASURA_DATABASE_URL);\n *\n * // The pool will automatically handle connection errors and retries\n * const client = await pool.connect();\n * try {\n * const result = await client.query('SELECT NOW()');\n * console.log(result.rows[0]);\n * } finally {\n * client.release();\n * }\n */\nexport function createPostgresPool(databaseUrl: string) {\n if (!databaseUrl?.trim()) {\n throw new Error(\"Database URL is required\");\n }\n\n if (!runsOnServer) {\n throw new Error(\"Drizzle client can only be created on the server side\");\n }\n\n const pool = new pg.Pool({\n connectionString: databaseUrl,\n max: 20,\n idleTimeoutMillis: 30000,\n connectionTimeoutMillis: 5000,\n });\n\n setupErrorHandling(pool);\n\n return pool;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres.js","names":["ms: number","pool: pg.Pool","err: Error","client: pg.PoolClient","databaseUrl: string"],"sources":["../src/postgres.ts"],"sourcesContent":["import { runsOnServer } from \"@settlemint/sdk-utils/runtime\";\nimport pg from \"pg\";\n\n/**\n * Type definition extending the pg.Pool interface to include custom permanent-failure event\n */\ndeclare module \"pg\" {\n interface Pool {\n on(event: \"permanent-failure\", listener: (err: Error) => void): this;\n emit(event: \"permanent-failure\", err: Error): boolean;\n }\n}\n\n/**\n * Utility function to pause execution for a specified duration\n *\n * @param ms - The number of milliseconds to sleep\n * @returns A promise that resolves after the specified duration\n */\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n/**\n * Configures error handling and recovery mechanisms for a PostgreSQL connection pool\n *\n * @param pool - The PostgreSQL connection pool to configure\n */\nfunction setupErrorHandling(pool: pg.Pool) {\n let retryCount = 0;\n let isRetrying = false;\n const clientErrorHandlers = new WeakSet<pg.PoolClient>();\n\n const handlePoolError = async (err: Error) => {\n console.error(\"[Drizzle] Pool error occurred:\", err);\n\n // Prevent concurrent retry attempts\n if (isRetrying) {\n console.log(\"[Drizzle] Recovery already in progress, skipping\");\n return;\n }\n\n if (retryCount < 3) {\n isRetrying = true;\n retryCount++;\n console.log(`[Drizzle] Attempting to recover - retry ${retryCount}/3`);\n\n try {\n const client = await pool.connect();\n try {\n // Test the connection with timeout\n await Promise.race([\n client.query(\"SELECT 1\"),\n new Promise((_, reject) => setTimeout(() => reject(new Error(\"Query timeout\")), 5000)),\n ]);\n console.log(\"[Drizzle] Successfully recovered connection\");\n retryCount = 0;\n } finally {\n client.release();\n }\n } catch (retryError) {\n console.error(`[Drizzle] Recovery attempt ${retryCount} failed:`, retryError);\n await sleep(5000 * 2 ** (retryCount - 1));\n } finally {\n isRetrying = false;\n }\n } else {\n console.error(\"[Drizzle] Max retries exceeded - pool is in an error state\");\n pool.emit(\"permanent-failure\", err);\n }\n };\n\n const handleConnect = (client: pg.PoolClient) => {\n // Only add error handler if not already added (prevent memory leaks)\n if (!clientErrorHandlers.has(client)) {\n clientErrorHandlers.add(client);\n client.on(\"error\", (err: Error) => {\n console.error(\"[Drizzle] Database client error:\", err);\n });\n }\n retryCount = 0;\n isRetrying = false;\n };\n\n pool.on(\"error\", handlePoolError);\n pool.on(\"connect\", handleConnect);\n}\n\n/**\n * Creates a PostgreSQL connection pool with error handling and retry mechanisms\n *\n * @param databaseUrl - The PostgreSQL connection URL\n * @returns A configured PostgreSQL connection pool\n * @throws Will throw an error if called from browser runtime\n * @example\n * import { createPostgresPool } from '@settlemint/sdk-hasura';\n *\n * const pool = createPostgresPool(process.env.SETTLEMINT_HASURA_DATABASE_URL);\n *\n * // The pool will automatically handle connection errors and retries\n * const client = await pool.connect();\n * try {\n * const result = await client.query('SELECT NOW()');\n * console.log(result.rows[0]);\n * } finally {\n * client.release();\n * }\n */\nexport function createPostgresPool(databaseUrl: string) {\n if (!databaseUrl?.trim()) {\n throw new Error(\"Database URL is required\");\n }\n\n if (!runsOnServer) {\n throw new Error(\"Drizzle client can only be created on the server side\");\n }\n\n const pool = new pg.Pool({\n connectionString: databaseUrl,\n max: 20,\n idleTimeoutMillis: 30000,\n connectionTimeoutMillis: 5000,\n });\n\n setupErrorHandling(pool);\n\n return pool;\n}\n"],"mappings":";;;;;;;;;;;AAmBA,MAAM,QAAQ,CAACA,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;;;;;;AAO9E,SAAS,mBAAmBC,MAAe;CACzC,IAAI,aAAa;CACjB,IAAI,aAAa;CACjB,MAAM,sBAAsB,IAAI;CAEhC,MAAM,kBAAkB,OAAOC,QAAe;AAC5C,UAAQ,MAAM,kCAAkC,IAAI;AAGpD,MAAI,YAAY;AACd,WAAQ,IAAI,mDAAmD;AAC/D;EACD;AAED,MAAI,aAAa,GAAG;AAClB,gBAAa;AACb;AACA,WAAQ,KAAK,0CAA0C,WAAW,IAAI;AAEtE,OAAI;IACF,MAAM,SAAS,MAAM,KAAK,SAAS;AACnC,QAAI;AAEF,WAAM,QAAQ,KAAK,CACjB,OAAO,MAAM,WAAW,EACxB,IAAI,QAAQ,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,iBAAiB,EAAE,IAAK,CACtF,EAAC;AACF,aAAQ,IAAI,8CAA8C;AAC1D,kBAAa;IACd,UAAS;AACR,YAAO,SAAS;IACjB;GACF,SAAQ,YAAY;AACnB,YAAQ,OAAO,6BAA6B,WAAW,WAAW,WAAW;AAC7E,UAAM,MAAM,MAAO,MAAM,aAAa,GAAG;GAC1C,UAAS;AACR,iBAAa;GACd;EACF,OAAM;AACL,WAAQ,MAAM,6DAA6D;AAC3E,QAAK,KAAK,qBAAqB,IAAI;EACpC;CACF;CAED,MAAM,gBAAgB,CAACC,WAA0B;AAE/C,OAAK,oBAAoB,IAAI,OAAO,EAAE;AACpC,uBAAoB,IAAI,OAAO;AAC/B,UAAO,GAAG,SAAS,CAACD,QAAe;AACjC,YAAQ,MAAM,oCAAoC,IAAI;GACvD,EAAC;EACH;AACD,eAAa;AACb,eAAa;CACd;AAED,MAAK,GAAG,SAAS,gBAAgB;AACjC,MAAK,GAAG,WAAW,cAAc;AAClC;;;;;;;;;;;;;;;;;;;;;AAsBD,SAAgB,mBAAmBE,aAAqB;AACtD,MAAK,aAAa,MAAM,EAAE;AACxB,QAAM,IAAI,MAAM;CACjB;AAED,MAAK,cAAc;AACjB,QAAM,IAAI,MAAM;CACjB;CAED,MAAM,OAAO,IAAI,GAAG,KAAK;EACvB,kBAAkB;EAClB,KAAK;EACL,mBAAmB;EACnB,yBAAyB;CAC1B;AAED,oBAAmB,KAAK;AAExB,QAAO;AACR"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@settlemint/sdk-hasura",
|
|
3
3
|
"description": "Hasura and PostgreSQL integration module for SettleMint SDK, enabling database operations and GraphQL queries",
|
|
4
|
-
"version": "2.4.0-
|
|
4
|
+
"version": "2.4.0-prd61aaa2c",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
7
7
|
"license": "FSL-1.1-MIT",
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
"url": "https://github.com/settlemint/sdk/issues",
|
|
21
21
|
"email": "support@settlemint.com"
|
|
22
22
|
},
|
|
23
|
-
"files": [
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
24
26
|
"main": "./dist/hasura.cjs",
|
|
25
27
|
"module": "./dist/hasura.js",
|
|
26
28
|
"types": "./dist/hasura.d.ts",
|
|
@@ -64,7 +66,7 @@
|
|
|
64
66
|
},
|
|
65
67
|
"dependencies": {
|
|
66
68
|
"gql.tada": "^1",
|
|
67
|
-
"@settlemint/sdk-utils": "2.4.0-
|
|
69
|
+
"@settlemint/sdk-utils": "2.4.0-prd61aaa2c",
|
|
68
70
|
"graphql-request": "^7",
|
|
69
71
|
"zod": "^3.25.0",
|
|
70
72
|
"drizzle-orm": "^0.44.0",
|