From 4f4a448b219f3efea5de03eac03c189ec7c68a36 Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Tue, 1 Oct 2024 18:22:08 +0200 Subject: [PATCH 1/7] feat: new js client --- .github/workflows/build.yml | 10 ++ bun.lockb | Bin 567828 -> 569860 bytes packages/config/src/schemas.ts | 1 - packages/js/.gitignore | 1 + packages/js/LICENSE | 110 +++++++++++++ packages/js/README.md | 29 ++++ packages/js/knip.json | 6 + packages/js/package.json | 51 +++++++ packages/js/src/helpers/cache.ts | 69 +++++++++ .../js/src/schemas/platform-return-values.ts | 144 ++++++++++++++++++ .../js/src/schemas/settlemint-client-env.ts | 8 + packages/js/src/schemas/shared.ts | 27 ++++ packages/js/src/schemas/validator.ts | 20 +++ packages/js/src/settlemint.ts | 100 ++++++++++++ packages/js/tsconfig.json | 23 +++ packages/js/tsup.config.ts | 21 +++ 16 files changed, 619 insertions(+), 1 deletion(-) create mode 100644 packages/js/.gitignore create mode 100644 packages/js/LICENSE create mode 100644 packages/js/README.md create mode 100644 packages/js/knip.json create mode 100644 packages/js/package.json create mode 100644 packages/js/src/helpers/cache.ts create mode 100644 packages/js/src/schemas/platform-return-values.ts create mode 100644 packages/js/src/schemas/settlemint-client-env.ts create mode 100644 packages/js/src/schemas/shared.ts create mode 100644 packages/js/src/schemas/validator.ts create mode 100644 packages/js/src/settlemint.ts create mode 100644 packages/js/tsconfig.json create mode 100644 packages/js/tsup.config.ts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a5e0cbeac..824bd88e0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -128,6 +128,16 @@ jobs: env: OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} + - name: Publish SDK JS package + uses: JS-DevTools/npm-publish@v3 + with: + token: ${{ secrets.NPM_TOKEN }} + package: ./packages/js/package.json + access: public + provenance: false + strategy: all + tag: ${{ env.TAG }} + - name: Publish SDK Next package uses: JS-DevTools/npm-publish@v3 with: diff --git a/bun.lockb b/bun.lockb index 0100755333a614824ccd809fe541d2756c621e65..262ac27b1876b8a13d4c22036779a457b1d733af 100755 GIT binary patch delta 92942 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
+}aepDCN98>Q`)cX}9!9bwuxUfF_=?iWW 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 + SettleMint logo +

SettleMint SDK

+

+ ✨ https://settlemint.com ✨ +
+ Integrate SettleMint into your application with ease. +

+

+
+

+CI status +License +npm +stars +

+ +
+ Documentation +   â€¢   + Discord +   â€¢   + NPM +   â€¢   + Issues +
+
+ +## Getting started diff --git a/packages/js/knip.json b/packages/js/knip.json new file mode 100644 index 000000000..dc6220535 --- /dev/null +++ b/packages/js/knip.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://unpkg.com/knip@5/schema.json", + "ignoreDependencies": [], + "ignore": ["dist/**"], + "entry": ["src/settlemint.ts"] +} diff --git a/packages/js/package.json b/packages/js/package.json new file mode 100644 index 000000000..e63a031f4 --- /dev/null +++ b/packages/js/package.json @@ -0,0 +1,51 @@ +{ + "name": "@settlemint/sdk-js", + "description": "SettleMint SDK, integrate SettleMint into your application with ease.", + "version": "0.0.1", + "type": "module", + "private": false, + "license": "FSL-1.1-MIT", + "author": { + "name": "SettleMint", + "email": "support@settlemint.com", + "url": "https://settlemint.com" + }, + "homepage": "https://github.com/settlemint/sdk/blob/main/packages/js/README.md", + "repository": { + "type": "git", + "url": "git+https://github.com/settlemint/sdk.git", + "directory": "packages/js" + }, + "bugs": { + "url": "https://github.com/settlemint/sdk/issues", + "email": "support@settlemint.com" + }, + "files": ["dist"], + "exports": { + "./*": { + "import": { + "types": "./dist/*.d.ts", + "default": "./dist/*.mjs" + }, + "require": { + "types": "./dist/*.d.cts", + "default": "./dist/*.cjs" + } + } + }, + "scripts": { + "build": "tsup-node", + "dev": "tsup-node --watch", + "publint": "publint run --strict", + "attw": "attw --pack .", + "test": "bun test", + "test:coverage": "bun test --coverage", + "typecheck": "tsc --noEmit" + }, + "devDependencies": {}, + "dependencies": { "zod": "^3.23.8" }, + "peerDependencies": {}, + "engines": { + "node": ">=20" + } +} diff --git a/packages/js/src/helpers/cache.ts b/packages/js/src/helpers/cache.ts new file mode 100644 index 000000000..c5b44767b --- /dev/null +++ b/packages/js/src/helpers/cache.ts @@ -0,0 +1,69 @@ +interface CacheEntry { + data: T; + expiry: number; +} + +interface CacheOptions { + maxSize: number; + ttl: number; // Time-to-live in milliseconds +} + +// biome-ignore lint/suspicious/noExplicitAny: the setters and getters handle the type safety +const cacheStore: Map> = new Map(); + +const DEFAULT_OPTIONS: CacheOptions = { + maxSize: 500, // Maximum number of items in the cache + ttl: 1000 * 60 * 60 * 24, // 24 hours in milliseconds +}; + +/** + * Retrieves cached data if available and not expired. + * Updates the entry's position to mark it as recently used. + * @param key - The cache key. + * @param options - Optional cache configuration. + * @returns The cached data or null if not found/expired. + */ +export function getCache(key: string): T | null { + const entry = cacheStore.get(key) as CacheEntry | undefined; + + if (!entry) { + return null; + } + + const now = Date.now(); + if (now > entry.expiry) { + cacheStore.delete(key); + return null; + } + + // Refresh the entry's position to mark it as recently used + cacheStore.delete(key); + cacheStore.set(key, entry); + + return entry.data; +} + +/** + * Stores data in the cache. + * Evicts the least recently used item if the cache exceeds maxSize. + * @param key - The cache key. + * @param data - The data to cache. + * @param options - Optional cache configuration. + */ +export function setCache(key: string, data: T, options: Partial = {}): void { + const currentOptions = { ...DEFAULT_OPTIONS, ...options }; + const now = Date.now(); + const expiry = now + currentOptions.ttl; + + if (cacheStore.has(key)) { + cacheStore.delete(key); + } else if (cacheStore.size >= currentOptions.maxSize) { + // Evict the least recently used (first) entry + const firstKey = cacheStore.keys().next().value; + if (firstKey) { + cacheStore.delete(firstKey); + } + } + + cacheStore.set(key, { data, expiry }); +} diff --git a/packages/js/src/schemas/platform-return-values.ts b/packages/js/src/schemas/platform-return-values.ts new file mode 100644 index 000000000..aaeff473d --- /dev/null +++ b/packages/js/src/schemas/platform-return-values.ts @@ -0,0 +1,144 @@ +import { EthereumAddressSchema, EthereumPublicKeySchema } from "@/schemas/shared"; +import { z } from "zod"; +import { UniqueNameSchema, UrlSchema } from "./shared"; + +const BasePlatformReturnValueSchema = z.object({ + uniqueName: UniqueNameSchema, + displayName: z.string(), + serviceSubType: z.string(), +}); + +export const BlockchainNetworkReturnValueSchema = BasePlatformReturnValueSchema.extend({ + chainId: z.string(), +}); +export type BlockchainNetworkReturnValue = z.infer; + +export const BlockchainNodeReturnValueSchema = BasePlatformReturnValueSchema.extend({ + network: UniqueNameSchema, + endpoints: z.object({ + base: UrlSchema, + jsonRpc: UrlSchema, + jsonWs: UrlSchema, + graphQl: UrlSchema, + }), +}); +export type BlockchainNodeReturnValue = z.infer; + +const BaseMiddlewareSchema = BasePlatformReturnValueSchema.extend({ + endpoints: z.object({ + base: UrlSchema, + }), +}); + +const PortalMiddlewareSchema = BaseMiddlewareSchema.extend({ + serviceSubType: z.literal("SMART_CONTRACT_PORTAL"), + endpoints: z.object({ + base: UrlSchema, + jsonRpc: UrlSchema, + jsonWs: UrlSchema, + graphQl: UrlSchema, + }), +}); + +const TheGraphMiddlewareSchema = BaseMiddlewareSchema.extend({ + serviceSubType: z.literal("HA_GRAPH"), + endpoints: z.object({ + base: UrlSchema, + subgraph: UrlSchema, + defaultSubgraph: UrlSchema, + }), +}); + +export const MiddlewareReturnValueSchema = z.union([ + PortalMiddlewareSchema, + TheGraphMiddlewareSchema, + BaseMiddlewareSchema, +]); + +export type MiddlewareReturnValue = z.infer; + +const BaseIntegrationToolSchema = BasePlatformReturnValueSchema.extend({ + endpoints: z.object({ + base: UrlSchema, + }), +}); + +const HasuraIntegrationToolSchema = BaseIntegrationToolSchema.extend({ + serviceSubType: z.literal("HASURA"), + endpoints: z.object({ + base: UrlSchema, + graphQl: UrlSchema, + }), + secrets: z.object({ + adminSecret: z.string(), + }), +}); + +export const IntegrationToolReturnValueSchema = z.union([HasuraIntegrationToolSchema, BaseIntegrationToolSchema]); +export type IntegrationToolReturnValue = z.infer; + +const BaseStorageSchema = BasePlatformReturnValueSchema.extend({ + endpoints: z.object({ + base: UrlSchema, + }), +}); + +const IpfsStorageSchema = BaseStorageSchema.extend({ + serviceSubType: z.literal("IPFS"), + endpoints: z.object({ + base: UrlSchema, + api: UrlSchema, + gateway: UrlSchema, + clusterApi: UrlSchema, + pinning: UrlSchema, + }), + secrets: z.object({ + password: z.string(), + }), +}); + +const MinioStorageSchema = BaseStorageSchema.extend({ + serviceSubType: z.literal("MINIO"), + endpoints: z.object({ + base: UrlSchema, + s3Api: UrlSchema, + }), + secrets: z.object({ + accessKey: z.string(), + secretKey: z.string(), + }), +}); + +export const StorageReturnValueSchema = z.union([IpfsStorageSchema, MinioStorageSchema, BaseStorageSchema]); +export type StorageReturnValue = z.infer; + +const BasePrivateKeySchema = BasePlatformReturnValueSchema.extend({}); + +const HdPrivateKeySchema = BasePrivateKeySchema.extend({ + serviceSubType: z.literal("HD_ECDSA_P256"), +}); + +const EcdsaPrivateKeySchema = BasePrivateKeySchema.extend({ + serviceSubType: z.literal("MINIO"), + address: EthereumAddressSchema, + publicKey: EthereumPublicKeySchema, +}); + +export const PrivateKeyReturnValueSchema = z.union([HdPrivateKeySchema, EcdsaPrivateKeySchema, BasePrivateKeySchema]); +export type PrivateKeyReturnValue = z.infer; + +export const InsightsReturnValueSchema = BasePlatformReturnValueSchema.extend({ + protocol: z.string(), + endpoints: z.object({ + base: UrlSchema, + }), +}); +export type InsightsReturnValue = z.infer; + +export const CustomDeploymentReturnValueSchema = BasePlatformReturnValueSchema.extend({ + protocol: z.string(), + endpoints: z.object({ + base: UrlSchema, + }), +}); +export type CustomDeploymentReturnValue = z.infer; diff --git a/packages/js/src/schemas/settlemint-client-env.ts b/packages/js/src/schemas/settlemint-client-env.ts new file mode 100644 index 000000000..501132501 --- /dev/null +++ b/packages/js/src/schemas/settlemint-client-env.ts @@ -0,0 +1,8 @@ +import { z } from "zod"; +import { AccessTokenSchema, UniqueNameSchema, UrlSchema } from "./shared"; + +export const SettleMintClientEnvSchema = z.object({ + SETTLEMINT_ACCESS_TOKEN: AccessTokenSchema, + SETTLEMINT_INSTANCE: UrlSchema, + SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK: UniqueNameSchema.optional(), +}); diff --git a/packages/js/src/schemas/shared.ts b/packages/js/src/schemas/shared.ts new file mode 100644 index 000000000..02a5e7026 --- /dev/null +++ b/packages/js/src/schemas/shared.ts @@ -0,0 +1,27 @@ +import { z } from "zod"; + +export const AccessTokenSchema = z.string().regex(/^btp_pat_.*|btp_aat_.*$/); + +export const UniqueNameSchema = z.string().regex(/^[a-z-]+-[a-z0-9]{5}$/); +export type UniqueName = z.infer; + +export const SearchKeySchema = z.string().regex(/^[a-z0-9]{5}$/); + +export const UrlSchema = z.string().url(); + +export const ServiceTypeSchema = z.enum([ + "blockchain-network", + "blockchain-node", + "smart-contract-set", + "middleware", + "integration-tool", + "storage", + "private-key", + "insights", + "custom-deployment", +]); +export type ServiceType = z.infer; + +export const EthereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/); + +export const EthereumPublicKeySchema = z.string().regex(/^0x[a-fA-F0-9]{64}$/); diff --git a/packages/js/src/schemas/validator.ts b/packages/js/src/schemas/validator.ts new file mode 100644 index 000000000..d98d18f0e --- /dev/null +++ b/packages/js/src/schemas/validator.ts @@ -0,0 +1,20 @@ +import { ZodError, type ZodSchema } from "zod"; + +/** + * Validates the given value against the provided Zod schema. + * @param schema The Zod schema to validate against. + * @param value The value to validate. + * @returns The validated and parsed data if successful. + * @throws {Error} If validation fails, with a formatted error message. + */ +export function validate(schema: T, value: unknown): T["_output"] { + try { + return schema.parse(value); + } catch (error) { + if (error instanceof ZodError) { + const formattedErrors = error.errors.map((err) => `- ${err.path.join(".")}: ${err.message}`).join("\n"); + throw new Error(`Validation error(s):\n${formattedErrors}`); + } + throw error; // Re-throw if it's not a ZodError + } +} diff --git a/packages/js/src/settlemint.ts b/packages/js/src/settlemint.ts new file mode 100644 index 000000000..e52d34010 --- /dev/null +++ b/packages/js/src/settlemint.ts @@ -0,0 +1,100 @@ +import { getCache, setCache } from "@/helpers/cache"; +import { + type BlockchainNetworkReturnValue, + BlockchainNetworkReturnValueSchema, + type BlockchainNodeReturnValue, + BlockchainNodeReturnValueSchema, + type CustomDeploymentReturnValue, + CustomDeploymentReturnValueSchema, + type InsightsReturnValue, + InsightsReturnValueSchema, + type IntegrationToolReturnValue, + IntegrationToolReturnValueSchema, + type MiddlewareReturnValue, + MiddlewareReturnValueSchema, + type PrivateKeyReturnValue, + PrivateKeyReturnValueSchema, + type StorageReturnValue, + StorageReturnValueSchema, +} from "@/schemas/platform-return-values"; +import { SettleMintClientEnvSchema } from "@/schemas/settlemint-client-env"; +import { SearchKeySchema, type ServiceType, ServiceTypeSchema, type UniqueName } from "@/schemas/shared"; +import { validate } from "@/schemas/validator"; +import { type ZodSchema, z } from "zod"; + +export function createSettleMintClient() { + const validatedEnv = validate(SettleMintClientEnvSchema, process.env); + + /** + * Generic function to fetch data from the SettleMint API + * @param type - The service type + * @param searchKey - Optional unique name for specific resource + * @returns Promise with the fetched data + */ + const fetchData = async (type: ServiceType, searchKey?: UniqueName): Promise => { + const validatedServiceType = validate(ServiceTypeSchema, type); + const cacheKey = searchKey ? `${validatedServiceType}-${searchKey}` : validatedServiceType; + + const cachedData = getCache(cacheKey); + if (cachedData) { + return cachedData; + } + + const url = new URL(`${validatedEnv.SETTLEMINT_INSTANCE}/cm/sdk/${validatedServiceType}`); + if (searchKey) { + url.pathname += `/${validate(SearchKeySchema, searchKey)}`; + } + + const response = await fetch(url.toString(), { + headers: { "x-auth-token": validatedEnv.SETTLEMINT_ACCESS_TOKEN }, + }); + + if (!response.ok) { + throw new Error(`API request failed: ${response.status} ${response.statusText}`); + } + + const data: T = await response.json(); + setCache(cacheKey, data); + return data; + }; + + /** + * Generic resource handler + * @param type - The service type + * @param schema - Zod schema for validation + * @returns Object with list and get methods for the resource + */ + const createResourceHandler = (type: ServiceType, schema: ZodSchema) => ({ + list: async (): Promise => validate(z.array(schema), await fetchData(type)), + get: async (uniqueName?: string): Promise => { + const searchKey = + uniqueName ?? (type === "blockchain-network" ? validatedEnv.SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK : undefined); + return validate(schema, await fetchData(type, searchKey)); + }, + }); + + const resources = { + blockchainNetwork: createResourceHandler( + "blockchain-network", + BlockchainNetworkReturnValueSchema, + ), + blockchainNode: createResourceHandler( + "blockchain-node", + BlockchainNodeReturnValueSchema, + ), + middleware: createResourceHandler("middleware", MiddlewareReturnValueSchema), + integrationTool: createResourceHandler( + "integration-tool", + IntegrationToolReturnValueSchema, + ), + storage: createResourceHandler("storage", StorageReturnValueSchema), + privateKey: createResourceHandler("private-key", PrivateKeyReturnValueSchema), + insights: createResourceHandler("insights", InsightsReturnValueSchema), + customDeployment: createResourceHandler( + "custom-deployment", + CustomDeploymentReturnValueSchema, + ), + }; + + return resources; +} diff --git a/packages/js/tsconfig.json b/packages/js/tsconfig.json new file mode 100644 index 000000000..74512b9fb --- /dev/null +++ b/packages/js/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "declaration": true, + "esModuleInterop": true, + "isolatedModules": true, + "lib": ["es2022", "DOM", "DOM.Iterable"], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2022", + "outDir": "dist", + "jsx": "react-jsx", + "noEmit": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/js/tsup.config.ts b/packages/js/tsup.config.ts new file mode 100644 index 000000000..cdbcd1c3b --- /dev/null +++ b/packages/js/tsup.config.ts @@ -0,0 +1,21 @@ +import { type Options, defineConfig } from "tsup"; + +const sharedConfig: Options = { + sourcemap: true, + dts: true, + splitting: false, + treeshake: false, + format: ["cjs", "esm"], + outExtension: ({ format }) => ({ + js: format === "esm" ? ".mjs" : ".cjs", + }), +}; + +export default defineConfig(({ watch }) => { + return [ + { + entry: ["src/settlemint.ts"], + ...sharedConfig, + }, + ]; +}); From d32d309a704df05b1bc12421ebef812caee19138 Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Tue, 1 Oct 2024 18:27:15 +0200 Subject: [PATCH 2/7] feat: add retry --- packages/js/src/settlemint.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/js/src/settlemint.ts b/packages/js/src/settlemint.ts index e52d34010..df0cee375 100644 --- a/packages/js/src/settlemint.ts +++ b/packages/js/src/settlemint.ts @@ -45,11 +45,25 @@ export function createSettleMintClient() { url.pathname += `/${validate(SearchKeySchema, searchKey)}`; } - const response = await fetch(url.toString(), { + let response = await fetch(url.toString(), { headers: { "x-auth-token": validatedEnv.SETTLEMINT_ACCESS_TOKEN }, }); if (!response.ok) { + const retryCount = 3; + const retryDelay = 1000; + + for (let i = 0; i < retryCount; i++) { + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + response = await fetch(url, { + headers: { "x-auth-token": validatedEnv.SETTLEMINT_ACCESS_TOKEN }, + }); + if (response.ok) break; + } + + if (!response.ok) { + throw new Error(`API request failed after ${retryCount} retries: ${response.status} ${response.statusText}`); + } throw new Error(`API request failed: ${response.status} ${response.statusText}`); } From 8cea1a56edda416d5f087c68cdbd80d77719a35a Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Tue, 1 Oct 2024 18:28:15 +0200 Subject: [PATCH 3/7] fix: immediate return --- packages/js/src/settlemint.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/js/src/settlemint.ts b/packages/js/src/settlemint.ts index df0cee375..65bda095d 100644 --- a/packages/js/src/settlemint.ts +++ b/packages/js/src/settlemint.ts @@ -87,7 +87,7 @@ export function createSettleMintClient() { }, }); - const resources = { + return { blockchainNetwork: createResourceHandler( "blockchain-network", BlockchainNetworkReturnValueSchema, @@ -109,6 +109,4 @@ export function createSettleMintClient() { CustomDeploymentReturnValueSchema, ), }; - - return resources; } From d69b27517cbbbdec9674f1e0b9a4ef6e5ad231d4 Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Tue, 1 Oct 2024 18:56:47 +0200 Subject: [PATCH 4/7] feat: add update mechanism --- packages/js/src/helpers/cache.ts | 4 + .../js/src/schemas/settlemint-client-env.ts | 7 + packages/js/src/settlemint.ts | 166 +++++++++++++----- 3 files changed, 136 insertions(+), 41 deletions(-) diff --git a/packages/js/src/helpers/cache.ts b/packages/js/src/helpers/cache.ts index c5b44767b..0778014c5 100644 --- a/packages/js/src/helpers/cache.ts +++ b/packages/js/src/helpers/cache.ts @@ -67,3 +67,7 @@ export function setCache(key: string, data: T, options: Partial cacheStore.set(key, { data, expiry }); } + +export function invalidateCache(key: string): void { + cacheStore.delete(key); +} diff --git a/packages/js/src/schemas/settlemint-client-env.ts b/packages/js/src/schemas/settlemint-client-env.ts index 501132501..060b51ebd 100644 --- a/packages/js/src/schemas/settlemint-client-env.ts +++ b/packages/js/src/schemas/settlemint-client-env.ts @@ -5,4 +5,11 @@ export const SettleMintClientEnvSchema = z.object({ SETTLEMINT_ACCESS_TOKEN: AccessTokenSchema, SETTLEMINT_INSTANCE: UrlSchema, SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_BLOCKCHAIN_NODE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_STORAGE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_PRIVATE_KEY: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_INTEGRATION_TOOL: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_MIDDLEWARE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_CUSTOM_DEPLOYMENT: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_INSIGHTS: UniqueNameSchema.optional(), }); diff --git a/packages/js/src/settlemint.ts b/packages/js/src/settlemint.ts index 65bda095d..f4b15ccbd 100644 --- a/packages/js/src/settlemint.ts +++ b/packages/js/src/settlemint.ts @@ -1,4 +1,4 @@ -import { getCache, setCache } from "@/helpers/cache"; +import { getCache, invalidateCache, setCache } from "@/helpers/cache"; import { type BlockchainNetworkReturnValue, BlockchainNetworkReturnValueSchema, @@ -22,18 +22,53 @@ import { SearchKeySchema, type ServiceType, ServiceTypeSchema, type UniqueName } import { validate } from "@/schemas/validator"; import { type ZodSchema, z } from "zod"; +/** + * Creates a SettleMint client with methods to interact with various resources. + * @returns An object containing methods to interact with SettleMint resources. + * @throws {Error} If the environment variables are invalid. + * @example + * const client = createSettleMintClient(); + * const blockchainNetworks = await client.blockchainNetwork.list(); + */ export function createSettleMintClient() { const validatedEnv = validate(SettleMintClientEnvSchema, process.env); /** - * Generic function to fetch data from the SettleMint API - * @param type - The service type - * @param searchKey - Optional unique name for specific resource - * @returns Promise with the fetched data + * Performs a fetch request with retry mechanism. + * @param url - The URL to fetch. + * @param options - Fetch options. + * @returns A promise that resolves to the fetch response. + * @throws {Error} If the API request fails after retries. + */ + const fetchWithRetry = async (url: string, options: RequestInit): Promise => { + const retryCount = 3; + const retryDelay = 1000; + + let response = await fetch(url, options); + + for (let i = 0; i < retryCount && !response.ok; i++) { + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + response = await fetch(url, options); + } + + if (!response.ok) { + throw new Error(`API request failed after ${retryCount} retries: ${response.status} ${response.statusText}`); + } + + return response; + }; + + /** + * Fetches data from the SettleMint API. + * @param type - The service type to fetch data for. + * @param searchKey - Optional unique name for a specific resource. + * @returns A promise that resolves to the fetched data. + * @throws {Error} If the API request fails after retries. */ const fetchData = async (type: ServiceType, searchKey?: UniqueName): Promise => { const validatedServiceType = validate(ServiceTypeSchema, type); - const cacheKey = searchKey ? `${validatedServiceType}-${searchKey}` : validatedServiceType; + const validatedSearchKey = validate(SearchKeySchema, searchKey); + const cacheKey = searchKey ? `${validatedServiceType}-${validatedSearchKey}` : validatedServiceType; const cachedData = getCache(cacheKey); if (cachedData) { @@ -42,71 +77,120 @@ export function createSettleMintClient() { const url = new URL(`${validatedEnv.SETTLEMINT_INSTANCE}/cm/sdk/${validatedServiceType}`); if (searchKey) { - url.pathname += `/${validate(SearchKeySchema, searchKey)}`; + url.pathname += `/${validatedSearchKey}`; } - let response = await fetch(url.toString(), { + const response = await fetchWithRetry(url.toString(), { headers: { "x-auth-token": validatedEnv.SETTLEMINT_ACCESS_TOKEN }, }); - if (!response.ok) { - const retryCount = 3; - const retryDelay = 1000; - - for (let i = 0; i < retryCount; i++) { - await new Promise((resolve) => setTimeout(resolve, retryDelay)); - response = await fetch(url, { - headers: { "x-auth-token": validatedEnv.SETTLEMINT_ACCESS_TOKEN }, - }); - if (response.ok) break; - } - - if (!response.ok) { - throw new Error(`API request failed after ${retryCount} retries: ${response.status} ${response.statusText}`); - } - throw new Error(`API request failed: ${response.status} ${response.statusText}`); - } - const data: T = await response.json(); setCache(cacheKey, data); return data; }; /** - * Generic resource handler - * @param type - The service type - * @param schema - Zod schema for validation - * @returns Object with list and get methods for the resource + * Updates data in the SettleMint API. + * @param type - The service type to update data for. + * @param data - The data to update. + * @param updateSchema - The Zod schema to validate the update data. + * @param searchKey - Optional unique name for a specific resource. + * @returns A promise that resolves to the updated data. + * @throws {Error} If the API request fails after retries. */ - const createResourceHandler = (type: ServiceType, schema: ZodSchema) => ({ + const updateData = async ( + type: ServiceType, + data: U, + updateSchema: ZodSchema, + searchKey?: UniqueName, + ): Promise => { + const validatedServiceType = validate(ServiceTypeSchema, type); + const validatedSearchKey = validate(SearchKeySchema, searchKey); + const validatedData = validate(updateSchema, data); + const url = new URL(`${validatedEnv.SETTLEMINT_INSTANCE}/cm/sdk/${validatedServiceType}/${validatedSearchKey}`); + + const response = await fetchWithRetry(url.toString(), { + method: "PUT", + headers: { "x-auth-token": validatedEnv.SETTLEMINT_ACCESS_TOKEN }, + body: JSON.stringify(validatedData), + }); + + const updatedData: T = await response.json(); + + setCache(`${validatedServiceType}-${validatedSearchKey}`, updatedData); + invalidateCache(validatedServiceType); + + return updatedData; + }; + + /** + * Creates a resource handler with methods to interact with a specific SettleMint resource. + * @param type - The service type of the resource. + * @param schema - The Zod schema for validating the resource data. + * @param defaultSearchKey - Optional default search key for the resource. + * @param updateSchema - Optional Zod schema for validating update data. + * @returns An object with methods to list, get, and optionally update the resource. + */ + const createResourceHandler = ( + type: ServiceType, + schema: ZodSchema, + defaultSearchKey?: string, + updateSchema?: ZodSchema, + ) => ({ list: async (): Promise => validate(z.array(schema), await fetchData(type)), get: async (uniqueName?: string): Promise => { - const searchKey = - uniqueName ?? (type === "blockchain-network" ? validatedEnv.SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK : undefined); + const searchKey = uniqueName ?? defaultSearchKey; return validate(schema, await fetchData(type, searchKey)); }, + ...(updateSchema && { + update: async (uniqueName: string, data: U) => { + const searchKey = uniqueName ?? defaultSearchKey; + return validate(schema, await updateData(type, data, updateSchema, searchKey)); + }, + }), }); return { - blockchainNetwork: createResourceHandler( + blockchainNetwork: createResourceHandler( "blockchain-network", BlockchainNetworkReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK, ), - blockchainNode: createResourceHandler( + blockchainNode: createResourceHandler( "blockchain-node", BlockchainNodeReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_BLOCKCHAIN_NODE, + ), + middleware: createResourceHandler( + "middleware", + MiddlewareReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_MIDDLEWARE, ), - middleware: createResourceHandler("middleware", MiddlewareReturnValueSchema), - integrationTool: createResourceHandler( + integrationTool: createResourceHandler( "integration-tool", IntegrationToolReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_INTEGRATION_TOOL, + ), + storage: createResourceHandler( + "storage", + StorageReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_STORAGE, + ), + privateKey: createResourceHandler( + "private-key", + PrivateKeyReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_PRIVATE_KEY, + ), + insights: createResourceHandler( + "insights", + InsightsReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_INSIGHTS, ), - storage: createResourceHandler("storage", StorageReturnValueSchema), - privateKey: createResourceHandler("private-key", PrivateKeyReturnValueSchema), - insights: createResourceHandler("insights", InsightsReturnValueSchema), - customDeployment: createResourceHandler( + customDeployment: createResourceHandler( "custom-deployment", CustomDeploymentReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_CUSTOM_DEPLOYMENT, + // TODO: Pass in the update schema to update the custom deployment ), }; } From 3e8fe5cff12b0a3b5dc563e101fc767729fc6851 Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Tue, 1 Oct 2024 19:07:36 +0200 Subject: [PATCH 5/7] fix: import --- bun.lockb | Bin 569860 -> 568244 bytes .../js/src/schemas/platform-return-values.ts | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/bun.lockb b/bun.lockb index 262ac27b1876b8a13d4c22036779a457b1d733af..cc350e779ad33b4908048cb0c557ff69e09af669 100755 GIT binary patch delta 26116 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 delta 26902 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 WnXS2v;{V^s Date: Wed, 2 Oct 2024 07:30:03 +0200 Subject: [PATCH 6/7] fix --- .../{platform-return-values.ts => schemas.ts} | 83 ++++++++++++++++--- .../js/src/schemas/settlemint-client-env.ts | 15 ---- packages/js/src/schemas/shared.ts | 27 ------ packages/js/src/settlemint.ts | 28 ++++++- 4 files changed, 97 insertions(+), 56 deletions(-) rename packages/js/src/schemas/{platform-return-values.ts => schemas.ts} (53%) delete mode 100644 packages/js/src/schemas/settlemint-client-env.ts delete mode 100644 packages/js/src/schemas/shared.ts diff --git a/packages/js/src/schemas/platform-return-values.ts b/packages/js/src/schemas/schemas.ts similarity index 53% rename from packages/js/src/schemas/platform-return-values.ts rename to packages/js/src/schemas/schemas.ts index 924f76c4f..fc0da8079 100644 --- a/packages/js/src/schemas/platform-return-values.ts +++ b/packages/js/src/schemas/schemas.ts @@ -1,18 +1,74 @@ -import { EthereumAddressSchema, EthereumPublicKeySchema, UniqueNameSchema, UrlSchema } from "@/schemas/shared"; import { z } from "zod"; +export const AccessTokenSchema = z.string().regex(/^btp_pat_.*|btp_aat_.*$/); + +export const UniqueNameSchema = z.string().regex(/^[a-z-]+-[a-z0-9]{5}$/); +export type UniqueName = z.infer; + +export const SearchKeySchema = z.string().regex(/^[a-z0-9]{5}$/); + +export const UrlSchema = z.string().url(); + +export const ServiceTypeSchema = z.enum([ + "workspace", + "application", + "blockchain-network", + "blockchain-node", + "smart-contract-set", + "middleware", + "integration-tool", + "storage", + "private-key", + "insights", + "custom-deployment", +]); +export type ServiceType = z.infer; + +export const EthereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/); + +export const EthereumPublicKeySchema = z.string().regex(/^0x[a-fA-F0-9]{64}$/); + +export const SettleMintClientEnvSchema = z.object({ + SETTLEMINT_ACCESS_TOKEN: AccessTokenSchema, + SETTLEMINT_INSTANCE: UrlSchema, + SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_BLOCKCHAIN_NODE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_STORAGE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_PRIVATE_KEY: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_INTEGRATION_TOOL: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_MIDDLEWARE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_CUSTOM_DEPLOYMENT: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_INSIGHTS: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_WORKSPACE: UniqueNameSchema.optional(), + SETTLEMINT_DEFAULT_APPLICATION: UniqueNameSchema.optional(), +}); + const BasePlatformReturnValueSchema = z.object({ uniqueName: UniqueNameSchema, displayName: z.string(), - serviceSubType: z.string(), }); -export const BlockchainNetworkReturnValueSchema = BasePlatformReturnValueSchema.extend({ +export const WorkspaceReturnValueSchema = BasePlatformReturnValueSchema.extend({}); +export type WorkspaceReturnValue = z.infer; + +export const ApplicationReturnValueSchema = BasePlatformReturnValueSchema.extend({ + workspace: UniqueNameSchema, +}); +export type ApplicationReturnValue = z.infer; + +const WsApplPlatformReturnValueSchema = BasePlatformReturnValueSchema.extend({ + workspace: UniqueNameSchema, + application: UniqueNameSchema, +}); + +export const BlockchainNetworkReturnValueSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), chainId: z.string(), }); export type BlockchainNetworkReturnValue = z.infer; -export const BlockchainNodeReturnValueSchema = BasePlatformReturnValueSchema.extend({ +export const BlockchainNodeReturnValueSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), network: UniqueNameSchema, endpoints: z.object({ base: UrlSchema, @@ -23,7 +79,8 @@ export const BlockchainNodeReturnValueSchema = BasePlatformReturnValueSchema.ext }); export type BlockchainNodeReturnValue = z.infer; -const BaseMiddlewareSchema = BasePlatformReturnValueSchema.extend({ +const BaseMiddlewareSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), endpoints: z.object({ base: UrlSchema, }), @@ -56,7 +113,8 @@ export const MiddlewareReturnValueSchema = z.union([ export type MiddlewareReturnValue = z.infer; -const BaseIntegrationToolSchema = BasePlatformReturnValueSchema.extend({ +const BaseIntegrationToolSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), endpoints: z.object({ base: UrlSchema, }), @@ -76,7 +134,8 @@ const HasuraIntegrationToolSchema = BaseIntegrationToolSchema.extend({ export const IntegrationToolReturnValueSchema = z.union([HasuraIntegrationToolSchema, BaseIntegrationToolSchema]); export type IntegrationToolReturnValue = z.infer; -const BaseStorageSchema = BasePlatformReturnValueSchema.extend({ +const BaseStorageSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), endpoints: z.object({ base: UrlSchema, }), @@ -111,7 +170,9 @@ const MinioStorageSchema = BaseStorageSchema.extend({ export const StorageReturnValueSchema = z.union([IpfsStorageSchema, MinioStorageSchema, BaseStorageSchema]); export type StorageReturnValue = z.infer; -const BasePrivateKeySchema = BasePlatformReturnValueSchema.extend({}); +const BasePrivateKeySchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), +}); const HdPrivateKeySchema = BasePrivateKeySchema.extend({ serviceSubType: z.literal("HD_ECDSA_P256"), @@ -126,7 +187,8 @@ const EcdsaPrivateKeySchema = BasePrivateKeySchema.extend({ export const PrivateKeyReturnValueSchema = z.union([HdPrivateKeySchema, EcdsaPrivateKeySchema, BasePrivateKeySchema]); export type PrivateKeyReturnValue = z.infer; -export const InsightsReturnValueSchema = BasePlatformReturnValueSchema.extend({ +export const InsightsReturnValueSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), protocol: z.string(), endpoints: z.object({ base: UrlSchema, @@ -134,7 +196,8 @@ export const InsightsReturnValueSchema = BasePlatformReturnValueSchema.extend({ }); export type InsightsReturnValue = z.infer; -export const CustomDeploymentReturnValueSchema = BasePlatformReturnValueSchema.extend({ +export const CustomDeploymentReturnValueSchema = WsApplPlatformReturnValueSchema.extend({ + serviceSubType: z.string(), protocol: z.string(), endpoints: z.object({ base: UrlSchema, diff --git a/packages/js/src/schemas/settlemint-client-env.ts b/packages/js/src/schemas/settlemint-client-env.ts deleted file mode 100644 index 060b51ebd..000000000 --- a/packages/js/src/schemas/settlemint-client-env.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { z } from "zod"; -import { AccessTokenSchema, UniqueNameSchema, UrlSchema } from "./shared"; - -export const SettleMintClientEnvSchema = z.object({ - SETTLEMINT_ACCESS_TOKEN: AccessTokenSchema, - SETTLEMINT_INSTANCE: UrlSchema, - SETTLEMINT_DEFAULT_BLOCKCHAIN_NETWORK: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_BLOCKCHAIN_NODE: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_STORAGE: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_PRIVATE_KEY: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_INTEGRATION_TOOL: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_MIDDLEWARE: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_CUSTOM_DEPLOYMENT: UniqueNameSchema.optional(), - SETTLEMINT_DEFAULT_INSIGHTS: UniqueNameSchema.optional(), -}); diff --git a/packages/js/src/schemas/shared.ts b/packages/js/src/schemas/shared.ts deleted file mode 100644 index 02a5e7026..000000000 --- a/packages/js/src/schemas/shared.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { z } from "zod"; - -export const AccessTokenSchema = z.string().regex(/^btp_pat_.*|btp_aat_.*$/); - -export const UniqueNameSchema = z.string().regex(/^[a-z-]+-[a-z0-9]{5}$/); -export type UniqueName = z.infer; - -export const SearchKeySchema = z.string().regex(/^[a-z0-9]{5}$/); - -export const UrlSchema = z.string().url(); - -export const ServiceTypeSchema = z.enum([ - "blockchain-network", - "blockchain-node", - "smart-contract-set", - "middleware", - "integration-tool", - "storage", - "private-key", - "insights", - "custom-deployment", -]); -export type ServiceType = z.infer; - -export const EthereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/); - -export const EthereumPublicKeySchema = z.string().regex(/^0x[a-fA-F0-9]{64}$/); diff --git a/packages/js/src/settlemint.ts b/packages/js/src/settlemint.ts index f4b15ccbd..384cb3945 100644 --- a/packages/js/src/settlemint.ts +++ b/packages/js/src/settlemint.ts @@ -1,5 +1,7 @@ import { getCache, invalidateCache, setCache } from "@/helpers/cache"; import { + type ApplicationReturnValue, + ApplicationReturnValueSchema, type BlockchainNetworkReturnValue, BlockchainNetworkReturnValueSchema, type BlockchainNodeReturnValue, @@ -14,11 +16,16 @@ import { MiddlewareReturnValueSchema, type PrivateKeyReturnValue, PrivateKeyReturnValueSchema, + SearchKeySchema, + type ServiceType, + ServiceTypeSchema, + SettleMintClientEnvSchema, type StorageReturnValue, StorageReturnValueSchema, -} from "@/schemas/platform-return-values"; -import { SettleMintClientEnvSchema } from "@/schemas/settlemint-client-env"; -import { SearchKeySchema, type ServiceType, ServiceTypeSchema, type UniqueName } from "@/schemas/shared"; + type UniqueName, + type WorkspaceReturnValue, + WorkspaceReturnValueSchema, +} from "@/schemas/schemas"; import { validate } from "@/schemas/validator"; import { type ZodSchema, z } from "zod"; @@ -138,7 +145,7 @@ export function createSettleMintClient() { updateSchema?: ZodSchema, ) => ({ list: async (): Promise => validate(z.array(schema), await fetchData(type)), - get: async (uniqueName?: string): Promise => { + get: async (uniqueName?: UniqueName): Promise => { const searchKey = uniqueName ?? defaultSearchKey; return validate(schema, await fetchData(type, searchKey)); }, @@ -151,6 +158,16 @@ export function createSettleMintClient() { }); return { + workspace: createResourceHandler( + "workspace", + WorkspaceReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_WORKSPACE, + ), + application: createResourceHandler( + "application", + ApplicationReturnValueSchema, + validatedEnv.SETTLEMINT_DEFAULT_APPLICATION, + ), blockchainNetwork: createResourceHandler( "blockchain-network", BlockchainNetworkReturnValueSchema, @@ -194,3 +211,6 @@ export function createSettleMintClient() { ), }; } + +export * as schemas from "./schemas/schemas"; +export * as schemaValidator from "./schemas/validator"; From 2fa178f8ad4e0a984ec7f2469e0bf9a641359e7a Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Wed, 2 Oct 2024 07:31:39 +0200 Subject: [PATCH 7/7] fix loxk --- bun.lockb | Bin 568244 -> 567884 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index cc350e779ad33b4908048cb0c557ff69e09af669..8c35efd08bc6949f77b871f4b85b3e77475fdce3 100755 GIT binary patch delta 110501 zcmeFacU%?6_ddRR;lf=NdyTzgLB)1a5bRxJ?+qymf>e9CXw=x-svCQcia{mVqp`(k zEV0GjTcQ|@y&J#JvojY-zW(0t&+qm9{ONreo_WrknK^Uj%-Pw!3)y_W#IfH>%&b)I zcJT_qISP#5wq(hO*WWw}7`x>4v@cv&yuUT2*>5Ksb+*^vwa%vS({onmqL#2$vxa(> zo~$ZLPDM!=2Fw8r17-(y17-uZ1ZGV>=;Gp-RZ3CvK{5iE7Z@V(ONq54mXw$km1+4fm<_yhu2pW4Y)z#8pyMPpKG8fg@Hc+3j$XH^8=>=>CJdx z0boxcz1&FFR~Gd-6K10$y7N+F(V(k7-@T}#SrcJwH6Xh=idrsPWMJ%okYGg_(o9UY zKyzV6|G+q}(1^f(k&x5e*O1d(zZSx*kjSX;u!yj}e?iXr>p+IXKJ-hzw58~$58A^G zwG)N~#`cSYX+N|Q@$(&!1}p>8yCHEwff0ehAwdyggTkOU%-d%mKxwVV*z%RAFSUaD z2SyBl)QKI?JzJ-?(GzWDYJJ;I%x*r=1LCO?9slBS;A~dCgIJt?x~3I%6oZtWiwy}3 zipL;oC!y67$hmLoC;~JO^thzM2gSt)4h&Y(+KQ!!42y;*6{TorF}f@CxK)fUqTPb7 z0*iN3ltPf_1kwePI}$EJz!(_QT`Yz>I0uT4gQwB)-{^pb42=)Lu!=IZhX~~8u+U)~ zcoOP4;Od?*0$8k0Z-8*-u;D#1_wsOJHnzA

0foG*afUNNyjQNb8&En<>}Edg?7&Tt+Z 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%0D7%qoqhZ+DPGX`!cP>rNWU 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 @!&&^Q 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