@sylphx/flow 0.1.1 → 0.1.3
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/{chunk-bmfd3jzw.js → chunk-1xab6sdr.js} +2 -2
- package/dist/{chunk-bmfd3jzw.js.map → chunk-1xab6sdr.js.map} +2 -2
- package/dist/chunk-4knr4n3j.js +25 -0
- package/dist/chunk-4knr4n3j.js.map +75 -0
- package/dist/chunk-6ggenak0.js +3 -0
- package/dist/{chunk-7d3pwe6x.js.map → chunk-6ggenak0.js.map} +2 -2
- package/dist/chunk-cbbj1pmn.js +10 -0
- package/dist/{chunk-fphp2agv.js.map → chunk-cbbj1pmn.js.map} +2 -2
- package/dist/chunk-cnvv0c4d.js +4 -0
- package/dist/{chunk-d6cgnb03.js.map → chunk-cnvv0c4d.js.map} +2 -2
- package/dist/{chunk-vttjr3cg.js → chunk-ee4f98fc.js} +3 -3
- package/dist/{chunk-vttjr3cg.js.map → chunk-ee4f98fc.js.map} +1 -1
- package/dist/{chunk-cshxyqvc.js → chunk-fn18x0qs.js} +2 -2
- package/dist/{chunk-cshxyqvc.js.map → chunk-fn18x0qs.js.map} +2 -2
- package/dist/{chunk-mbhd0326.js → chunk-h7z58r4g.js} +2 -2
- package/dist/{chunk-mbhd0326.js.map → chunk-h7z58r4g.js.map} +1 -1
- package/dist/{chunk-84x5fbqe.js → chunk-jb5m0k5j.js} +2 -2
- package/dist/{chunk-84x5fbqe.js.map → chunk-jb5m0k5j.js.map} +1 -1
- package/dist/chunk-k9r8f523.js +43 -0
- package/dist/chunk-k9r8f523.js.map +31 -0
- package/dist/chunk-nkra2wr9.js +3 -0
- package/dist/{chunk-zwsaqnr2.js.map → chunk-nkra2wr9.js.map} +2 -2
- package/dist/chunk-q44jnn91.js +4 -0
- package/dist/{chunk-zx3gqx7b.js.map → chunk-q44jnn91.js.map} +2 -2
- package/dist/chunk-thaa90qh.js +161 -0
- package/dist/chunk-thaa90qh.js.map +85 -0
- package/dist/chunk-w1j1nhaa.js +3 -0
- package/dist/{chunk-nmg7vhjj.js.map → chunk-w1j1nhaa.js.map} +2 -2
- package/dist/{chunk-pxh2vz4k.js → chunk-z7grzkjq.js} +2 -2
- package/dist/{chunk-pxh2vz4k.js.map → chunk-z7grzkjq.js.map} +1 -1
- package/dist/index.js +440 -404
- package/dist/index.js.map +135 -119
- package/package.json +11 -6
- package/dist/chunk-7d3pwe6x.js +0 -3
- package/dist/chunk-90tmk3w7.js +0 -183
- package/dist/chunk-90tmk3w7.js.map +0 -151
- package/dist/chunk-d6cgnb03.js +0 -4
- package/dist/chunk-fphp2agv.js +0 -10
- package/dist/chunk-nmg7vhjj.js +0 -3
- package/dist/chunk-zwsaqnr2.js +0 -3
- package/dist/chunk-zx3gqx7b.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
var z=(j,b)=>({kind:"ConfigError",message:j,configKey:b?.configKey,configPath:b?.configPath,context:b?.context,cause:b?.cause}),B=(j,b,x,v)=>({kind:"FileSystemError",message:j,path:b,operation:x,context:v?.context,cause:v?.cause});
|
|
2
|
-
export{z as
|
|
2
|
+
export{z as ea,B as fa};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=13639C2F43DE09F064756E2164756E21
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Standard error types for the application\n * Typed errors enable better error handling and recovery\n *\n * DESIGN RATIONALE:\n * - Discriminated union for all error types\n * - Each error type has specific context\n * - Enables type-safe error handling\n * - Clear error categories for recovery strategies\n */\n\n/**\n * Base error type with common fields\n */\nexport interface BaseError {\n readonly kind: string;\n readonly message: string;\n readonly context?: Record<string, unknown>;\n readonly cause?: Error;\n}\n\n/**\n * Configuration error - invalid configuration or missing required config\n */\nexport interface ConfigError extends BaseError {\n readonly kind: 'ConfigError';\n readonly configKey?: string;\n readonly configPath?: string;\n}\n\n/**\n * File system error - file not found, permission denied, etc.\n */\nexport interface FileSystemError extends BaseError {\n readonly kind: 'FileSystemError';\n readonly path: string;\n readonly operation: 'read' | 'write' | 'delete' | 'create' | 'stat';\n}\n\n/**\n * Database error - query failure, connection error, etc.\n */\nexport interface DatabaseError extends BaseError {\n readonly kind: 'DatabaseError';\n readonly operation: string;\n readonly table?: string;\n}\n\n/**\n * Validation error - input validation failure\n */\nexport interface ValidationError extends BaseError {\n readonly kind: 'ValidationError';\n readonly field?: string;\n readonly errors: string[];\n}\n\n/**\n * Network error - HTTP error, timeout, connection refused, etc.\n */\nexport interface NetworkError extends BaseError {\n readonly kind: 'NetworkError';\n readonly url?: string;\n readonly statusCode?: number;\n}\n\n/**\n * CLI error - command line interface specific errors\n */\nexport interface CLIError extends BaseError {\n readonly kind: 'CLIError';\n readonly command?: string;\n readonly exitCode?: number;\n}\n\n/**\n * Not found error - resource not found\n */\nexport interface NotFoundError extends BaseError {\n readonly kind: 'NotFoundError';\n readonly resourceType: string;\n readonly resourceId: string;\n}\n\n/**\n * Permission error - insufficient permissions\n */\nexport interface PermissionError extends BaseError {\n readonly kind: 'PermissionError';\n readonly resource: string;\n readonly requiredPermission: string;\n}\n\n/**\n * Unknown error - catch-all for unexpected errors\n */\nexport interface UnknownError extends BaseError {\n readonly kind: 'UnknownError';\n}\n\n/**\n * Union of all error types\n */\nexport type AppError =\n | ConfigError\n | FileSystemError\n | DatabaseError\n | ValidationError\n | NetworkError\n | CLIError\n | NotFoundError\n | PermissionError\n | UnknownError;\n\n/**\n * Error constructors\n */\n\nexport const configError = (\n message: string,\n options?: {\n configKey?: string;\n configPath?: string;\n context?: Record<string, unknown>;\n cause?: Error;\n }\n): ConfigError => ({\n kind: 'ConfigError',\n message,\n configKey: options?.configKey,\n configPath: options?.configPath,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const fileSystemError = (\n message: string,\n path: string,\n operation: 'read' | 'write' | 'delete' | 'create' | 'stat',\n options?: { context?: Record<string, unknown>; cause?: Error }\n): FileSystemError => ({\n kind: 'FileSystemError',\n message,\n path,\n operation,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const databaseError = (\n message: string,\n operation: string,\n options?: { table?: string; context?: Record<string, unknown>; cause?: Error }\n): DatabaseError => ({\n kind: 'DatabaseError',\n message,\n operation,\n table: options?.table,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const validationError = (\n message: string,\n errors: string[],\n options?: { field?: string; context?: Record<string, unknown> }\n): ValidationError => ({\n kind: 'ValidationError',\n message,\n field: options?.field,\n errors,\n context: options?.context,\n});\n\nexport const networkError = (\n message: string,\n options?: { url?: string; statusCode?: number; context?: Record<string, unknown>; cause?: Error }\n): NetworkError => ({\n kind: 'NetworkError',\n message,\n url: options?.url,\n statusCode: options?.statusCode,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const cliError = (\n message: string,\n options?: {\n command?: string;\n exitCode?: number;\n context?: Record<string, unknown>;\n cause?: Error;\n }\n): CLIError => ({\n kind: 'CLIError',\n message,\n command: options?.command,\n exitCode: options?.exitCode,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const notFoundError = (\n message: string,\n resourceType: string,\n resourceId: string,\n options?: { context?: Record<string, unknown>; cause?: Error }\n): NotFoundError => ({\n kind: 'NotFoundError',\n message,\n resourceType,\n resourceId,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const permissionError = (\n message: string,\n resource: string,\n requiredPermission: string,\n options?: { context?: Record<string, unknown>; cause?: Error }\n): PermissionError => ({\n kind: 'PermissionError',\n message,\n resource,\n requiredPermission,\n context: options?.context,\n cause: options?.cause,\n});\n\nexport const unknownError = (\n message: string,\n options?: { context?: Record<string, unknown>; cause?: Error }\n): UnknownError => ({\n kind: 'UnknownError',\n message,\n context: options?.context,\n cause: options?.cause,\n});\n\n/**\n * Convert unknown error to AppError\n */\nexport const toAppError = (error: unknown): AppError => {\n if (isAppError(error)) {\n return error;\n }\n\n if (error instanceof Error) {\n return unknownError(error.message, { cause: error });\n }\n\n return unknownError(String(error));\n};\n\n/**\n * Type guard for AppError\n */\nexport const isAppError = (error: unknown): error is AppError => {\n return typeof error === 'object' && error !== null && 'kind' in error && 'message' in error;\n};\n\n/**\n * Format error for display\n */\nexport const formatError = (error: AppError): string => {\n let formatted = `[${error.kind}] ${error.message}`;\n\n if (error.kind === 'ConfigError' && error.configKey) {\n formatted += `\\n Config key: ${error.configKey}`;\n }\n\n if (error.kind === 'FileSystemError') {\n formatted += `\\n Path: ${error.path}`;\n formatted += `\\n Operation: ${error.operation}`;\n }\n\n if (error.kind === 'DatabaseError') {\n formatted += `\\n Operation: ${error.operation}`;\n if (error.table) {\n formatted += `\\n Table: ${error.table}`;\n }\n }\n\n if (error.kind === 'ValidationError') {\n formatted += `\\n Errors:`;\n for (const err of error.errors) {\n formatted += `\\n - ${err}`;\n }\n }\n\n if (error.kind === 'NetworkError') {\n if (error.url) {\n formatted += `\\n URL: ${error.url}`;\n }\n if (error.statusCode) {\n formatted += `\\n Status: ${error.statusCode}`;\n }\n }\n\n if (error.context) {\n formatted += `\\n Context: ${JSON.stringify(error.context, null, 2)}`;\n }\n\n if (error.cause) {\n formatted += `\\n Caused by: ${error.cause.message}`;\n }\n\n return formatted;\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "AAsHO,IAAM,EAAc,CACzB,EACA,KAMiB,CACjB,KAAM,cACN,UACA,UAAW,GAAS,UACpB,WAAY,GAAS,WACrB,QAAS,GAAS,QAClB,MAAO,GAAS,KAClB,GAEa,EAAkB,CAC7B,EACA,EACA,EACA,KACqB,CACrB,KAAM,kBACN,UACA,OACA,YACA,QAAS,GAAS,QAClB,MAAO,GAAS,KAClB",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "13639C2F43DE09F064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
var k=(h)=>({_tag:"Success",value:h}),q=(h)=>({_tag:"Failure",error:h});var w=(h,j=(b)=>b)=>{try{return k(h())}catch(b){return q(j(b))}},x=async(h,j=(b)=>b)=>{try{let b=await h();return k(b)}catch(b){return q(j(b))}};
|
|
2
|
-
export{k as
|
|
2
|
+
export{k as ga,q as ha,w as ia,x as ja};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=5ED709584444DDD064756E2164756E21
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Result type for functional error handling\n * Represents success or failure without exceptions\n *\n * DESIGN RATIONALE:\n * - Explicit error handling at type level\n * - Composable through map/flatMap\n * - Forces caller to handle errors\n * - No hidden control flow (no thrown exceptions)\n */\n\nexport type Result<T, E = Error> = Success<T> | Failure<E>;\n\nexport interface Success<T> {\n readonly _tag: 'Success';\n readonly value: T;\n}\n\nexport interface Failure<E> {\n readonly _tag: 'Failure';\n readonly error: E;\n}\n\n/**\n * Constructors\n */\n\nexport const success = <T>(value: T): Success<T> => ({\n _tag: 'Success',\n value,\n});\n\nexport const failure = <E>(error: E): Failure<E> => ({\n _tag: 'Failure',\n error,\n});\n\n/**\n * Type guards\n */\n\nexport const isSuccess = <T, E>(result: Result<T, E>): result is Success<T> =>\n result._tag === 'Success';\n\nexport const isFailure = <T, E>(result: Result<T, E>): result is Failure<E> =>\n result._tag === 'Failure';\n\n/**\n * Transformations\n */\n\n/**\n * Transform the success value\n * Failure propagates unchanged\n */\nexport const map =\n <T, U, E>(fn: (value: T) => U) =>\n (result: Result<T, E>): Result<U, E> => {\n if (isSuccess(result)) {\n return success(fn(result.value));\n }\n return result;\n };\n\n/**\n * Transform the success value with a function that returns a Result\n * Enables chaining operations that can fail\n * Failure propagates unchanged\n */\nexport const flatMap =\n <T, U, E>(fn: (value: T) => Result<U, E>) =>\n (result: Result<T, E>): Result<U, E> => {\n if (isSuccess(result)) {\n return fn(result.value);\n }\n return result;\n };\n\n/**\n * Transform the error\n * Success propagates unchanged\n */\nexport const mapError =\n <T, E, F>(fn: (error: E) => F) =>\n (result: Result<T, E>): Result<T, F> => {\n if (isFailure(result)) {\n return failure(fn(result.error));\n }\n return result;\n };\n\n/**\n * Extract value or provide default\n */\nexport const getOrElse =\n <T>(defaultValue: T) =>\n <E>(result: Result<T, E>): T => {\n if (isSuccess(result)) {\n return result.value;\n }\n return defaultValue;\n };\n\n/**\n * Extract value or compute default\n */\nexport const getOrElseLazy =\n <T>(fn: () => T) =>\n <E>(result: Result<T, E>): T => {\n if (isSuccess(result)) {\n return result.value;\n }\n return fn();\n };\n\n/**\n * Pattern matching\n */\nexport const match =\n <T, E, U>(onSuccess: (value: T) => U, onFailure: (error: E) => U) =>\n (result: Result<T, E>): U => {\n if (isSuccess(result)) {\n return onSuccess(result.value);\n }\n return onFailure(result.error);\n };\n\n/**\n * Convert thrown exception to Result\n */\nexport const tryCatch = <T, E = Error>(\n fn: () => T,\n onError: (error: unknown) => E = (error: unknown) => error as E\n): Result<T, E> => {\n try {\n return success(fn());\n } catch (error) {\n return failure(onError(error));\n }\n};\n\n/**\n * Convert Promise to Result\n */\nexport const tryCatchAsync = async <T, E = Error>(\n fn: () => Promise<T>,\n onError: (error: unknown) => E = (error: unknown) => error as E\n): Promise<Result<T, E>> => {\n try {\n const value = await fn();\n return success(value);\n } catch (error) {\n return failure(onError(error));\n }\n};\n\n/**\n * Combine multiple Results into a single Result containing an array\n * Fails if any Result is a Failure (short-circuits on first failure)\n */\nexport const all = <T, E>(results: Result<T, E>[]): Result<T[], E> => {\n const values: T[] = [];\n\n for (const result of results) {\n if (isFailure(result)) {\n return result;\n }\n values.push(result.value);\n }\n\n return success(values);\n};\n\n/**\n * Run side effect for success case\n */\nexport const tap =\n <T, E>(fn: (value: T) => void) =>\n (result: Result<T, E>): Result<T, E> => {\n if (isSuccess(result)) {\n fn(result.value);\n }\n return result;\n };\n\n/**\n * Run side effect for failure case\n */\nexport const tapError =\n <T, E>(fn: (error: E) => void) =>\n (result: Result<T, E>): Result<T, E> => {\n if (isFailure(result)) {\n fn(result.error);\n }\n return result;\n };\n\n/**\n * Functional pipe for composing Result transformations\n */\nexport const pipe =\n <T, E>(result: Result<T, E>) =>\n <U>(fn: (result: Result<T, E>) => U): U =>\n fn(result);\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "AA2BO,IAAM,EAAU,CAAI,KAA0B,CACnD,KAAM,UACN,OACF,GAEa,EAAU,CAAI,KAA0B,CACnD,KAAM,UACN,OACF,GA+FO,IAAM,EAAW,CACtB,EACA,EAAiC,CAAC,IAAmB,IACpC,CACjB,GAAI,CACF,OAAO,EAAQ,EAAG,CAAC,EACnB,MAAO,EAAO,CACd,OAAO,EAAQ,EAAQ,CAAK,CAAC,IAOpB,EAAgB,MAC3B,EACA,EAAiC,CAAC,IAAmB,IAC3B,CAC1B,GAAI,CACF,IAAM,EAAQ,MAAM,EAAG,EACvB,OAAO,EAAQ,CAAK,EACpB,MAAO,EAAO,CACd,OAAO,EAAQ,EAAQ,CAAK,CAAC",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "5ED709584444DDD064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|