@settlemint/sdk-utils
Version:
Shared utilities and helper functions for SettleMint SDK modules
259 lines (257 loc) • 12.1 kB
text/typescript
import { ZodString, ZodType, z } from "zod";
//#region src/validation/validate.d.ts
/**
* Validates a value against a given Zod schema.
*
* @param schema - The Zod schema to validate against.
* @param value - The value to validate.
* @returns The validated and parsed value.
* @throws Will throw an error if validation fails, with formatted error messages.
*
* @example
* import { validate } from "@settlemint/sdk-utils/validation";
*
* const validatedId = validate(IdSchema, "550e8400-e29b-41d4-a716-446655440000");
*/
declare function validate<T extends ZodType>(schema: T, value: unknown): T["_output"];
//#endregion
//#region src/validation/access-token.schema.d.ts
/**
* Schema for validating application access tokens.
* Application access tokens start with 'sm_aat_' prefix.
*/
declare const ApplicationAccessTokenSchema: ZodString;
type ApplicationAccessToken = z.infer<typeof ApplicationAccessTokenSchema>;
/**
* Schema for validating personal access tokens.
* Personal access tokens start with 'sm_pat_' prefix.
*/
declare const PersonalAccessTokenSchema: ZodString;
type PersonalAccessToken = z.infer<typeof PersonalAccessTokenSchema>;
/**
* Schema for validating both application and personal access tokens.
* Accepts tokens starting with either 'sm_pat_' or 'sm_aat_' prefix.
*/
declare const AccessTokenSchema: ZodString;
type AccessToken = z.infer<typeof AccessTokenSchema>;
//#endregion
//#region src/validation/dot-env.schema.d.ts
/**
* Use this value to indicate that the resources are not part of the SettleMint platform.
*/
declare const STANDALONE_INSTANCE = "standalone";
/**
* Use this value to indicate that the resources are not part of the SettleMint platform.
*/
declare const LOCAL_INSTANCE = "local";
/**
* Schema for validating environment variables used by the SettleMint SDK.
* Defines validation rules and types for configuration values like URLs,
* access tokens, workspace names, and service endpoints.
*/
declare const DotEnvSchema: z.ZodObject<{
SETTLEMINT_INSTANCE: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"standalone">, z.ZodLiteral<"local">]>>;
SETTLEMINT_ACCESS_TOKEN: z.ZodOptional<z.ZodString>;
SETTLEMINT_PERSONAL_ACCESS_TOKEN: z.ZodOptional<z.ZodString>;
SETTLEMINT_WORKSPACE: z.ZodOptional<z.ZodString>;
SETTLEMINT_APPLICATION: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKCHAIN_NETWORK: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKCHAIN_NETWORK_CHAIN_ID: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKCHAIN_NODE: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKCHAIN_NODE_JSON_RPC_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER_JSON_RPC_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_HASURA: z.ZodOptional<z.ZodString>;
SETTLEMINT_HASURA_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_HASURA_ADMIN_SECRET: z.ZodOptional<z.ZodString>;
SETTLEMINT_HASURA_DATABASE_URL: z.ZodOptional<z.ZodString>;
SETTLEMINT_THEGRAPH: z.ZodOptional<z.ZodString>;
SETTLEMINT_THEGRAPH_SUBGRAPHS_ENDPOINTS: z.ZodPipe<z.ZodTransform<never[] | null, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
SETTLEMINT_THEGRAPH_DEFAULT_SUBGRAPH: z.ZodOptional<z.ZodString>;
SETTLEMINT_PORTAL: z.ZodOptional<z.ZodString>;
SETTLEMINT_PORTAL_GRAPHQL_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_PORTAL_REST_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_PORTAL_WS_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_HD_PRIVATE_KEY: z.ZodOptional<z.ZodString>;
SETTLEMINT_HD_PRIVATE_KEY_FORWARDER_ADDRESS: z.ZodOptional<z.ZodString>;
SETTLEMINT_ACCESSIBLE_PRIVATE_KEY: z.ZodOptional<z.ZodString>;
SETTLEMINT_MINIO: z.ZodOptional<z.ZodString>;
SETTLEMINT_MINIO_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_MINIO_ACCESS_KEY: z.ZodOptional<z.ZodString>;
SETTLEMINT_MINIO_SECRET_KEY: z.ZodOptional<z.ZodString>;
SETTLEMINT_IPFS: z.ZodOptional<z.ZodString>;
SETTLEMINT_IPFS_API_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_IPFS_PINNING_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_IPFS_GATEWAY_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_CUSTOM_DEPLOYMENT: z.ZodOptional<z.ZodString>;
SETTLEMINT_CUSTOM_DEPLOYMENT_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKSCOUT: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKSCOUT_GRAPHQL_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_BLOCKSCOUT_UI_ENDPOINT: z.ZodOptional<z.ZodString>;
SETTLEMINT_NEW_PROJECT_NAME: z.ZodOptional<z.ZodString>;
SETTLEMINT_LOG_LEVEL: z.ZodDefault<z.ZodEnum<{
error: "error";
debug: "debug";
info: "info";
warn: "warn";
none: "none";
}>>;
}, z.core.$strip>;
/**
* Type definition for the environment variables schema.
*/
type DotEnv = z.infer<typeof DotEnvSchema>;
/**
* Partial version of the environment variables schema where all fields are optional.
* Useful for validating incomplete configurations during development or build time.
*/
declare const DotEnvSchemaPartial: z.ZodObject<{
SETTLEMINT_INSTANCE: z.ZodOptional<z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"standalone">, z.ZodLiteral<"local">]>>>;
SETTLEMINT_ACCESS_TOKEN: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_PERSONAL_ACCESS_TOKEN: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_WORKSPACE: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_APPLICATION: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKCHAIN_NETWORK: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKCHAIN_NETWORK_CHAIN_ID: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKCHAIN_NODE: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKCHAIN_NODE_JSON_RPC_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER_JSON_RPC_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_HASURA: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_HASURA_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_HASURA_ADMIN_SECRET: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_HASURA_DATABASE_URL: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_THEGRAPH: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_THEGRAPH_SUBGRAPHS_ENDPOINTS: z.ZodOptional<z.ZodPipe<z.ZodTransform<never[] | null, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
SETTLEMINT_THEGRAPH_DEFAULT_SUBGRAPH: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_PORTAL: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_PORTAL_GRAPHQL_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_PORTAL_REST_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_PORTAL_WS_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_HD_PRIVATE_KEY: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_HD_PRIVATE_KEY_FORWARDER_ADDRESS: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_ACCESSIBLE_PRIVATE_KEY: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_MINIO: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_MINIO_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_MINIO_ACCESS_KEY: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_MINIO_SECRET_KEY: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_IPFS: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_IPFS_API_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_IPFS_PINNING_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_IPFS_GATEWAY_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_CUSTOM_DEPLOYMENT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_CUSTOM_DEPLOYMENT_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKSCOUT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKSCOUT_GRAPHQL_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_BLOCKSCOUT_UI_ENDPOINT: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_NEW_PROJECT_NAME: z.ZodOptional<z.ZodOptional<z.ZodString>>;
SETTLEMINT_LOG_LEVEL: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
error: "error";
debug: "debug";
info: "info";
warn: "warn";
none: "none";
}>>>;
}, z.core.$strip>;
/**
* Type definition for the partial environment variables schema.
*/
type DotEnvPartial = z.infer<typeof DotEnvSchemaPartial>;
//#endregion
//#region src/validation/id.schema.d.ts
/**
* Schema for validating database IDs. Accepts both PostgreSQL UUIDs and MongoDB ObjectIDs.
* PostgreSQL UUIDs are 32 hexadecimal characters with hyphens (e.g. 123e4567-e89b-12d3-a456-426614174000).
* MongoDB ObjectIDs are 24 hexadecimal characters (e.g. 507f1f77bcf86cd799439011).
*
* @example
* import { IdSchema } from "@settlemint/sdk-utils/validation";
*
* // Validate PostgreSQL UUID
* const isValidUuid = IdSchema.safeParse("123e4567-e89b-12d3-a456-426614174000").success;
*
* // Validate MongoDB ObjectID
* const isValidObjectId = IdSchema.safeParse("507f1f77bcf86cd799439011").success;
*/
declare const IdSchema: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
/**
* Type definition for database IDs, inferred from IdSchema.
* Can be either a PostgreSQL UUID string or MongoDB ObjectID string.
*/
type Id = z.infer<typeof IdSchema>;
//#endregion
//#region src/validation/unique-name.schema.d.ts
/**
* Schema for validating unique names used across the SettleMint platform.
* Only accepts lowercase alphanumeric characters and hyphens.
* Used for workspace names, application names, service names etc.
*
* @example
* import { UniqueNameSchema } from "@settlemint/sdk-utils/validation";
*
* // Validate a workspace name
* const isValidName = UniqueNameSchema.safeParse("my-workspace-123").success;
* // true
*
* // Invalid names will fail validation
* const isInvalidName = UniqueNameSchema.safeParse("My Workspace!").success;
* // false
*/
declare const UniqueNameSchema: z.ZodString;
/**
* Type definition for unique names, inferred from UniqueNameSchema.
*/
type UniqueName = z.infer<typeof UniqueNameSchema>;
//#endregion
//#region src/validation/url.schema.d.ts
/**
* Schema for validating URLs.
*
* @example
* import { UrlSchema } from "@settlemint/sdk-utils/validation";
*
* // Validate a URL
* const isValidUrl = UrlSchema.safeParse("https://console.settlemint.com").success;
* // true
*
* // Invalid URLs will fail validation
* const isInvalidUrl = UrlSchema.safeParse("not-a-url").success;
* // false
*/
declare const UrlSchema: z.ZodString;
type Url = z.infer<typeof UrlSchema>;
/**
* Schema for validating URL paths.
*
* @example
* import { UrlPathSchema } from "@settlemint/sdk-utils/validation";
*
* // Validate a URL path
* const isValidPath = UrlPathSchema.safeParse("/api/v1/users").success;
* // true
*
* // Invalid paths will fail validation
* const isInvalidPath = UrlPathSchema.safeParse("not-a-path").success;
* // false
*/
declare const UrlPathSchema: z.ZodString;
type UrlPath = z.infer<typeof UrlPathSchema>;
/**
* Schema that accepts either a full URL or a URL path.
*
* @example
* import { UrlOrPathSchema } from "@settlemint/sdk-utils/validation";
*
* // Validate a URL
* const isValidUrl = UrlOrPathSchema.safeParse("https://console.settlemint.com").success;
* // true
*
* // Validate a path
* const isValidPath = UrlOrPathSchema.safeParse("/api/v1/users").success;
* // true
*/
declare const UrlOrPathSchema: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
type UrlOrPath = z.infer<typeof UrlOrPathSchema>;
//#endregion
export { type AccessToken, AccessTokenSchema, type ApplicationAccessToken, ApplicationAccessTokenSchema, type DotEnv, type DotEnvPartial, DotEnvSchema, DotEnvSchemaPartial, type Id, IdSchema, LOCAL_INSTANCE, type PersonalAccessToken, PersonalAccessTokenSchema, STANDALONE_INSTANCE, UniqueNameSchema, type Url, type UrlOrPath, UrlOrPathSchema, type UrlPath, UrlPathSchema, UrlSchema, validate };
//# sourceMappingURL=validation.d.cts.map