@mablock/status 0.0.1
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/LICENSE +176 -0
- package/README.md +333 -0
- package/README.zh-CN.md +333 -0
- package/dist/index.cjs +733 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +211 -0
- package/dist/index.d.ts +211 -0
- package/dist/index.js +675 -0
- package/dist/index.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/status-code.ts","../src/errors.ts","../src/status.ts","../src/failure-brand.ts","../src/status-or.ts","../src/sentinel.ts","../src/do.ts","../src/predicates.ts","../src/interop.ts"],"names":["statusOr"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Canonical status error codes matching Abseil / gRPC standard error codes.\n */\nexport const StatusCode = {\n OK: \"OK\",\n CANCELLED: \"CANCELLED\",\n UNKNOWN: \"UNKNOWN\",\n INVALID_ARGUMENT: \"INVALID_ARGUMENT\",\n DEADLINE_EXCEEDED: \"DEADLINE_EXCEEDED\",\n NOT_FOUND: \"NOT_FOUND\",\n ALREADY_EXISTS: \"ALREADY_EXISTS\",\n PERMISSION_DENIED: \"PERMISSION_DENIED\",\n RESOURCE_EXHAUSTED: \"RESOURCE_EXHAUSTED\",\n FAILED_PRECONDITION: \"FAILED_PRECONDITION\",\n ABORTED: \"ABORTED\",\n OUT_OF_RANGE: \"OUT_OF_RANGE\",\n UNIMPLEMENTED: \"UNIMPLEMENTED\",\n INTERNAL: \"INTERNAL\",\n UNAVAILABLE: \"UNAVAILABLE\",\n DATA_LOSS: \"DATA_LOSS\",\n UNAUTHENTICATED: \"UNAUTHENTICATED\",\n} as const;\n\nexport type StatusCode = (typeof StatusCode)[keyof typeof StatusCode];\n","import type { Status } from \"./status.js\";\nimport type { StatusCode } from \"./status-code.js\";\n\n/** A native Error carrying a Status. */\nexport class StatusError extends Error {\n public readonly status: Status;\n\n constructor(status: Status) {\n super(status.toString());\n this.name = \"StatusError\";\n this.status = status;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n public get code(): StatusCode {\n return this.status.code();\n }\n}\n","import { StatusCode } from \"./status-code.js\";\nimport { StatusError } from \"./errors.js\";\n\nexport type PayloadValue = Uint8Array | string;\nexport type PayloadMap =\n | Readonly<Record<string, PayloadValue>>\n | ReadonlyMap<string, PayloadValue>;\n\nexport interface StatusJSON {\n ok: boolean;\n code: StatusCode;\n message: string;\n payloads?: Record<string, string> | undefined;\n}\n\nexport type StatusOk = Status & { ok(): true };\nexport type StatusFailed = Status & { ok(): false };\n\nfunction copyPayload(value: PayloadValue): PayloadValue {\n return typeof value === \"string\" ? value : value.slice();\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n const chars =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n let result = \"\";\n for (let i = 0; i < bytes.length; i += 3) {\n const b0 = bytes[i]!;\n const b1 = i + 1 < bytes.length ? bytes[i + 1]! : 0;\n const b2 = i + 2 < bytes.length ? bytes[i + 2]! : 0;\n result += chars[(b0 >> 2) & 0x3f];\n result += chars[((b0 & 0x03) << 4) | ((b1 >> 4) & 0x0f)];\n result +=\n i + 1 < bytes.length\n ? chars[((b1 & 0x0f) << 2) | ((b2 >> 6) & 0x03)]\n : \"=\";\n result += i + 2 < bytes.length ? chars[b2 & 0x3f] : \"=\";\n }\n return result;\n}\n\n/**\n * Represents either success or a canonical error. It never carries a\n * business value.\n */\nexport class Status {\n private _code: StatusCode;\n private _message: string;\n private _payloads: Map<string, PayloadValue> | undefined;\n\n public constructor(\n code: StatusCode = StatusCode.OK,\n message: string = \"\",\n ) {\n this._code = code;\n this._message = code === StatusCode.OK ? \"\" : message;\n }\n\n public ok(): this is StatusOk {\n return this._code === StatusCode.OK;\n }\n\n public code(): StatusCode {\n return this._code;\n }\n\n public message(): string {\n return this._message;\n }\n\n public status(): Status {\n return this;\n }\n\n public setMessage(message: string): void {\n if (!this.ok()) this._message = message;\n }\n\n public toString(): string {\n if (this.ok()) return \"OK\";\n return this._message.length === 0\n ? this._code\n : `${this._code}: ${this._message}`;\n }\n\n /** Keeps the first non-OK status, matching absl::Status::Update. */\n public update(other: Status): this {\n if (!this.ok()) return this;\n this._code = other._code;\n this._message = other._message;\n this._payloads = other.copyPayloads();\n return this;\n }\n\n public setPayload(typeUrl: string, payload: PayloadValue): void {\n if (this.ok()) return;\n this._payloads ??= new Map();\n this._payloads.set(typeUrl, copyPayload(payload));\n }\n\n public getPayload(typeUrl: string): PayloadValue | undefined {\n const payload = this._payloads?.get(typeUrl);\n return payload === undefined ? undefined : copyPayload(payload);\n }\n\n public hasPayload(typeUrl: string): boolean {\n return this._payloads?.has(typeUrl) ?? false;\n }\n\n public erasePayload(typeUrl: string): boolean {\n if (!this._payloads) return false;\n const deleted = this._payloads.delete(typeUrl);\n if (this._payloads.size === 0) this._payloads = undefined;\n return deleted;\n }\n\n public clearPayloads(): void {\n this._payloads = undefined;\n }\n\n public payloadCount(): number {\n return this._payloads?.size ?? 0;\n }\n\n public forEachPayload(\n callback: (typeUrl: string, payload: PayloadValue) => void,\n ): void {\n if (!this._payloads) return;\n for (const [key, value] of this._payloads)\n callback(key, copyPayload(value));\n }\n\n public clone(): Status {\n const cloned = new Status(this._code, this._message);\n cloned._payloads = this.copyPayloads();\n return cloned;\n }\n\n public equals(other: unknown): boolean {\n if (\n !(other instanceof Status) ||\n this._code !== other._code ||\n this._message !== other._message\n )\n return false;\n if (this.payloadCount() !== other.payloadCount()) return false;\n if (!this._payloads) return true;\n for (const [key, value] of this._payloads) {\n const otherValue = other._payloads?.get(key);\n if (\n otherValue === undefined ||\n !payloadEquals(value, otherValue)\n )\n return false;\n }\n return true;\n }\n\n public toJSON(): StatusJSON {\n const json: StatusJSON = {\n ok: this.ok(),\n code: this._code,\n message: this._message,\n };\n if (this._payloads?.size) {\n const payloads: Record<string, string> = {};\n for (const [key, value] of this._payloads)\n payloads[key] =\n typeof value === \"string\" ? value : bytesToBase64(value);\n json.payloads = payloads;\n }\n return json;\n }\n\n public toError(): StatusError {\n return new StatusError(this.clone());\n }\n\n /** Supports `yield* status` in statusDo pipelines. */\n public *[Symbol.iterator](): Generator<\n StatusFailed,\n void,\n unknown\n > {\n if (this.ok()) return;\n yield this as StatusFailed;\n }\n\n public static ok(): StatusOk {\n return new Status() as StatusOk;\n }\n\n public static fromCode(\n code: StatusCode,\n message: string = \"\",\n payloads?: PayloadMap,\n ): Status {\n const status = new Status(code, message);\n if (payloads) applyPayloads(status, payloads);\n return status;\n }\n\n private copyPayloads(): Map<string, PayloadValue> | undefined {\n if (!this._payloads?.size) return undefined;\n return new Map(\n Array.from(this._payloads, ([key, value]) => [\n key,\n copyPayload(value),\n ]),\n );\n }\n}\n\nfunction payloadEquals(\n left: PayloadValue,\n right: PayloadValue,\n): boolean {\n if (typeof left === \"string\" || typeof right === \"string\")\n return (\n typeof left === \"string\" &&\n typeof right === \"string\" &&\n left === right\n );\n if (left.length !== right.length) return false;\n for (let i = 0; i < left.length; i++) {\n if (left[i] !== right[i]) return false;\n }\n return true;\n}\n\nfunction applyPayloads(status: Status, payloads: PayloadMap): void {\n if (isReadonlyMap(payloads)) {\n for (const [key, value] of payloads)\n status.setPayload(key, value);\n return;\n }\n for (const [key, value] of Object.entries(payloads))\n status.setPayload(key, value);\n}\n\nfunction isReadonlyMap(\n value: PayloadMap,\n): value is ReadonlyMap<string, PayloadValue> {\n const candidate = value as ReadonlyMap<string, PayloadValue>;\n return (\n typeof candidate.entries === \"function\" &&\n typeof candidate[Symbol.iterator] === \"function\"\n );\n}\n\nexport function OkStatus(): StatusOk {\n return Status.ok();\n}\n\nfunction createErrorHelper(code: Exclude<StatusCode, \"OK\">) {\n return (\n message: string = \"\",\n payloads?: PayloadMap,\n ): StatusFailed => {\n const status = new Status(code, message);\n if (payloads) applyPayloads(status, payloads);\n return status as StatusFailed;\n };\n}\n\nexport const CancelledError = createErrorHelper(StatusCode.CANCELLED);\nexport const UnknownError = createErrorHelper(StatusCode.UNKNOWN);\nexport const InvalidArgumentError = createErrorHelper(\n StatusCode.INVALID_ARGUMENT,\n);\nexport const DeadlineExceededError = createErrorHelper(\n StatusCode.DEADLINE_EXCEEDED,\n);\nexport const NotFoundError = createErrorHelper(StatusCode.NOT_FOUND);\nexport const AlreadyExistsError = createErrorHelper(\n StatusCode.ALREADY_EXISTS,\n);\nexport const PermissionDeniedError = createErrorHelper(\n StatusCode.PERMISSION_DENIED,\n);\nexport const ResourceExhaustedError = createErrorHelper(\n StatusCode.RESOURCE_EXHAUSTED,\n);\nexport const FailedPreconditionError = createErrorHelper(\n StatusCode.FAILED_PRECONDITION,\n);\nexport const AbortedError = createErrorHelper(StatusCode.ABORTED);\nexport const OutOfRangeError = createErrorHelper(\n StatusCode.OUT_OF_RANGE,\n);\nexport const UnimplementedError = createErrorHelper(\n StatusCode.UNIMPLEMENTED,\n);\nexport const InternalError = createErrorHelper(StatusCode.INTERNAL);\nexport const UnavailableError = createErrorHelper(\n StatusCode.UNAVAILABLE,\n);\nexport const DataLossError = createErrorHelper(StatusCode.DATA_LOSS);\nexport const UnauthenticatedError = createErrorHelper(\n StatusCode.UNAUTHENTICATED,\n);\n","import { Status, type StatusFailed } from \"./status.js\";\n\n/** Shared brand for failure sentinels. */\nexport const FAILURE_SYMBOL = Symbol.for(\"absl.status.failure\");\n\nexport interface FailureBrand {\n readonly [FAILURE_SYMBOL]: StatusFailed;\n}\n\n/** Returns the failure status carried by a branded value. */\nexport function getBrandedFailureStatus(\n value: unknown,\n): StatusFailed | undefined {\n if (\n (typeof value !== \"object\" && typeof value !== \"function\") ||\n value === null\n )\n return undefined;\n try {\n if (!(FAILURE_SYMBOL in value)) return undefined;\n const status = (value as FailureBrand)[FAILURE_SYMBOL];\n return status instanceof Status && !status.ok()\n ? (status as StatusFailed)\n : undefined;\n } catch {\n return undefined;\n }\n}\n","import {\n Status,\n type StatusFailed,\n type StatusJSON,\n} from \"./status.js\";\nimport { getBrandedFailureStatus } from \"./failure-brand.js\";\n\nexport interface StatusOrJSON<T> extends StatusJSON {\n value?: T | undefined;\n}\n\nexport type StatusOrOk<T> = StatusOr<T> & { ok(): true; value(): T };\n\n/** A tagged union containing exactly one value T or one non-OK Status. */\nexport class StatusOr<T> {\n private readonly _status: Status;\n private readonly _value: T | undefined;\n\n private constructor(status: Status, value?: T) {\n this._status = status;\n this._value = value;\n }\n\n public static ok<T>(value: T): StatusOr<T> {\n const failureStatus = getBrandedFailureStatus(value);\n if (failureStatus) return StatusOr.fromStatus<T>(failureStatus);\n return new StatusOr<T>(Status.ok(), value);\n }\n\n public static fromStatus<T = never>(status: Status): StatusOr<T> {\n if (status.ok())\n throw new RangeError(\n \"StatusOr cannot be constructed from an OK Status without a value\",\n );\n return new StatusOr<T>(status.clone());\n }\n\n public static all<T extends readonly unknown[] | []>(\n values: T,\n ): StatusOr<{\n [K in keyof T]: T[K] extends StatusOr<infer V> ? V : T[K];\n }> {\n const results: unknown[] = [];\n for (const item of values) {\n const failureStatus = getBrandedFailureStatus(item);\n if (failureStatus) return StatusOr.fromStatus(failureStatus);\n if (item instanceof StatusOr) {\n if (!item.ok()) return StatusOr.fromStatus(item.status());\n results.push(item._value);\n } else {\n results.push(item);\n }\n }\n return StatusOr.ok(\n results as {\n [K in keyof T]: T[K] extends StatusOr<infer V> ? V : T[K];\n },\n );\n }\n\n public ok(): this is StatusOrOk<T> {\n return this._status.ok();\n }\n\n public code(): ReturnType<Status[\"code\"]> {\n return this._status.code();\n }\n\n public message(): string {\n return this._status.message();\n }\n\n public status(): Status {\n return this._status.clone();\n }\n\n public value(): T {\n if (!this.ok()) throw this._status.toError();\n return this._value as T;\n }\n\n public valueOr(defaultValue: T): T {\n return this.ok() ? (this._value as T) : defaultValue;\n }\n\n public valueOrCompute(\n computeFallback: (status: StatusFailed) => T,\n ): T {\n return this.ok()\n ? (this._value as T)\n : computeFallback(this._status.clone() as StatusFailed);\n }\n\n public transform<U>(fn: (value: T) => U): StatusOr<U> {\n return this.ok()\n ? StatusOr.ok(fn(this._value as T))\n : StatusOr.fromStatus(this._status);\n }\n\n public andThen<U>(fn: (value: T) => StatusOr<U>): StatusOr<U> {\n return this.ok()\n ? fn(this._value as T)\n : StatusOr.fromStatus(this._status);\n }\n\n public match<R>(handlers: {\n ok: (value: T) => R;\n err: (status: StatusFailed) => R;\n }): R {\n return this.ok()\n ? handlers.ok(this._value as T)\n : handlers.err(this._status.clone() as StatusFailed);\n }\n\n public *[Symbol.iterator](): Generator<StatusFailed, T, unknown> {\n if (this.ok()) return this._value as T;\n yield this._status.clone() as StatusFailed;\n return undefined as never;\n }\n\n public toString(): string {\n if (!this.ok()) return this._status.toString();\n if (this._value === undefined) return \"OK\";\n try {\n return `OK: ${JSON.stringify(this._value)}`;\n } catch {\n return \"OK: [unserializable value]\";\n }\n }\n\n public toJSON(): StatusOrJSON<T> {\n if (!this.ok()) return this._status.toJSON();\n return {\n ok: true,\n code: this._status.code(),\n message: \"\",\n value: this._value,\n };\n }\n\n public clone(): StatusOr<T> {\n return this.ok()\n ? StatusOr.ok(this._value as T)\n : StatusOr.fromStatus(this._status);\n }\n\n public equals(other: unknown): boolean {\n if (!(other instanceof StatusOr) || this.ok() !== other.ok())\n return false;\n if (!this.ok()) return this._status.equals(other._status);\n return Object.is(this._value, other._value);\n }\n}\n\nexport function statusOr<T>(value: T): StatusOr<T> {\n return StatusOr.ok(value);\n}\n\nexport function statusOrError<T = never>(\n status: StatusFailed,\n): StatusOr<T> {\n return StatusOr.fromStatus<T>(status);\n}\n","import { Status, type StatusFailed } from \"./status.js\";\nimport { StatusCode } from \"./status-code.js\";\nimport { StatusOr } from \"./status-or.js\";\nimport { StatusError } from \"./errors.js\";\nimport {\n FAILURE_SYMBOL,\n getBrandedFailureStatus,\n} from \"./failure-brand.js\";\n\nexport { FAILURE_SYMBOL } from \"./failure-brand.js\";\n\nexport interface FailureSentinel {\n readonly [FAILURE_SYMBOL]: StatusFailed;\n ok(): false;\n status(): StatusFailed;\n code(): StatusCode;\n message(): string;\n toString(): string;\n [Symbol.iterator](): Generator<StatusFailed, never, unknown>;\n}\n\n/** Returns whether a value is a valid failure sentinel. */\nexport function isFailureSentinel(\n value: unknown,\n): value is FailureSentinel {\n if (!getBrandedFailureStatus(value)) return false;\n try {\n const candidate = value as FailureSentinel;\n return (\n typeof candidate.ok === \"function\" &&\n typeof candidate.status === \"function\" &&\n typeof candidate.code === \"function\" &&\n typeof candidate.message === \"function\" &&\n typeof candidate.toString === \"function\"\n );\n } catch {\n return false;\n }\n}\n\n/** Returns the failure status carried by a supported result object. */\nexport function getFailureStatus(\n value: unknown,\n): StatusFailed | undefined {\n const brandedStatus = getBrandedFailureStatus(value);\n if (brandedStatus) return brandedStatus;\n if (value instanceof Status) {\n if (!value.ok()) return value as StatusFailed;\n return undefined;\n }\n if (value instanceof StatusOr) {\n if (!value.ok()) return value.status() as StatusFailed;\n return undefined;\n }\n return undefined;\n}\n\n/** Creates a failure sentinel carrying a non-OK status. */\nexport function failure<T = never>(status: Status): T {\n if (status.ok())\n throw new RangeError(\n \"Failure sentinel cannot be created from an OK Status\",\n );\n\n const base: FailureSentinel = {\n [FAILURE_SYMBOL]: status as StatusFailed,\n ok() {\n return false;\n },\n status() {\n return status as StatusFailed;\n },\n code() {\n return status.code();\n },\n message() {\n return status.message();\n },\n toString() {\n return status.toString();\n },\n *[Symbol.iterator](): Generator<StatusFailed, never, unknown> {\n return throwFailureMisuse(\n status,\n \"iterate the failed result without ensureOk()\",\n );\n },\n };\n\n return new Proxy(base, {\n get(target, prop, receiver) {\n if (prop in target || prop === FAILURE_SYMBOL)\n return Reflect.get(target, prop, receiver);\n if (prop === \"then\") return undefined;\n if (prop === Symbol.toPrimitive)\n return () =>\n throwFailureMisuse(\n status,\n \"coerce the failed result to a primitive\",\n );\n if (typeof prop === \"symbol\") return undefined;\n return throwFailureMisuse(\n status,\n `read business property ${JSON.stringify(prop)}`,\n );\n },\n set(_target, prop) {\n return throwFailureMisuse(\n status,\n `write business property ${JSON.stringify(String(prop))}`,\n );\n },\n deleteProperty(_target, prop) {\n return throwFailureMisuse(\n status,\n `delete business property ${JSON.stringify(String(prop))}`,\n );\n },\n defineProperty(_target, prop) {\n return throwFailureMisuse(\n status,\n `define business property ${JSON.stringify(String(prop))}`,\n );\n },\n has(target, prop) {\n if (prop in target) return true;\n if (prop === \"then\" || typeof prop === \"symbol\") return false;\n return throwFailureMisuse(\n status,\n `check business property ${JSON.stringify(prop)}`,\n );\n },\n ownKeys() {\n return throwFailureMisuse(\n status,\n \"enumerate or spread the failed result\",\n );\n },\n }) as unknown as T;\n}\n\nfunction throwFailureMisuse(status: Status, action: string): never {\n const error = new StatusError(status.clone());\n error.message =\n `Failure result used as a successful value: attempted to ${action}. ` +\n \"Check it with hasError() or ensureOk() first. \" +\n `Original status: ${status.toString()}`;\n throw error;\n}\n\nexport const failureSentinel = failure;\nexport const createFailure = failure;\n\n/** Proxies non-conflicting properties from a successful StatusOr value. */\nexport type StatusOrProxy<T> = StatusOr<T> &\n (T extends object ? Omit<T, keyof StatusOr<T>> : unknown);\n\nexport function asProxy<T>(statusOr: StatusOr<T>): StatusOrProxy<T> {\n return new Proxy(statusOr, {\n get(target, prop, receiver) {\n if (prop in target || typeof prop === \"symbol\") {\n const val = Reflect.get(target, prop, receiver);\n if (typeof val === \"function\") return val.bind(target);\n return val;\n }\n if (target.ok()) {\n const inner = target.value() as any;\n if (\n inner !== null &&\n inner !== undefined &&\n (typeof inner === \"object\" || typeof inner === \"function\")\n ) {\n const val = Reflect.get(inner, prop, inner);\n if (typeof val === \"function\") return val.bind(inner);\n return val;\n }\n }\n return undefined;\n },\n has(target, prop) {\n if (prop in target) return true;\n if (target.ok()) {\n const inner = target.value() as any;\n if (\n inner !== null &&\n inner !== undefined &&\n (typeof inner === \"object\" || typeof inner === \"function\")\n )\n return prop in inner;\n }\n return false;\n },\n }) as StatusOrProxy<T>;\n}\n","import {\n InternalError,\n Status,\n type StatusFailed,\n} from \"./status.js\";\nimport { StatusOr } from \"./status-or.js\";\nimport { FAILURE_SYMBOL, isFailureSentinel } from \"./sentinel.js\";\n\ntype StatusDoResult<T> = T | StatusOr<T> | StatusFailed;\n\n/** Unwraps a successful result or yields its failure to the pipeline. */\nexport function ensureOk(\n status: Status,\n): Generator<StatusFailed, void, unknown>;\nexport function ensureOk<T>(\n statusOr: StatusOr<T>,\n): Generator<StatusFailed, T, unknown>;\nexport function ensureOk<T>(\n target: T,\n): Generator<StatusFailed, T, unknown>;\nexport function* ensureOk<T = void>(\n target: unknown,\n): Generator<StatusFailed, T, unknown> {\n if (target instanceof Status) {\n if (!target.ok()) yield target as StatusFailed;\n return undefined as T;\n }\n if (target instanceof StatusOr) {\n if (!target.ok()) yield target.status() as StatusFailed;\n return target.value() as T;\n }\n if (isFailureSentinel(target)) {\n yield target[FAILURE_SYMBOL];\n return undefined as never;\n }\n return target as T;\n}\n\nexport const EnsureOk = ensureOk;\nexport const checkStatus = ensureOk;\nexport const CheckStatus = ensureOk;\n\n/** Runs a synchronous generator pipeline and stops at the first failure. */\nexport function statusDo<T>(\n generatorFn: () => Generator<\n StatusFailed,\n StatusDoResult<T>,\n unknown\n >,\n): StatusOr<T> {\n const iterator = generatorFn();\n const step = iterator.next();\n if (!step.done) {\n try {\n if (isFailureSentinel(step.value))\n return StatusOr.fromStatus(step.value[FAILURE_SYMBOL]);\n return StatusOr.fromStatus(step.value);\n } finally {\n iterator.return?.(undefined as never);\n }\n }\n return normalizeResult(step.value, \"statusDo\");\n}\n\n/** Runs an asynchronous generator pipeline and stops at the first failure. */\nexport async function statusDoAsync<T>(\n generatorFn: () => AsyncGenerator<\n StatusFailed,\n StatusDoResult<T>,\n unknown\n >,\n): Promise<StatusOr<T>> {\n const iterator = generatorFn();\n const step = await iterator.next();\n if (!step.done) {\n try {\n if (isFailureSentinel(step.value))\n return StatusOr.fromStatus(step.value[FAILURE_SYMBOL]);\n return StatusOr.fromStatus(step.value);\n } finally {\n await iterator.return?.(undefined as never);\n }\n }\n return normalizeResult(step.value, \"statusDoAsync\");\n}\n\nfunction normalizeResult<T>(\n result: StatusDoResult<T>,\n source: string,\n): StatusOr<T> {\n if (result instanceof StatusOr) return result;\n if (isFailureSentinel(result))\n return StatusOr.fromStatus(result[FAILURE_SYMBOL]);\n if (result instanceof Status) {\n if (result.ok())\n return StatusOr.fromStatus(\n InternalError(\n `${source} cannot return an OK Status without a value`,\n ),\n );\n return StatusOr.fromStatus(result as StatusFailed);\n }\n return StatusOr.ok(result);\n}\n","import { StatusCode } from \"./status-code.js\";\nimport {\n Status,\n type StatusOk,\n type StatusFailed,\n} from \"./status.js\";\nimport { StatusOr, type StatusOrOk } from \"./status-or.js\";\nimport { isFailureSentinel } from \"./sentinel.js\";\n\nexport interface ErrorCarrier {\n status(): StatusFailed;\n ok(): false;\n code(): StatusCode;\n message(): string;\n toString(): string;\n}\n\nfunction extractStatusCode(target: unknown): StatusCode | undefined {\n if (target === null || target === undefined) return undefined;\n if (target instanceof Status || target instanceof StatusOr)\n return target.code();\n if (typeof (target as any).code === \"function\") {\n const res = (target as any).code();\n if (isStatusCode(res)) return res as StatusCode;\n }\n if (isStatusCode((target as any).code))\n return (target as any).code as StatusCode;\n return undefined;\n}\n\nconst statusCodes = new Set<string>(Object.values(StatusCode));\n\nfunction isStatusCode(value: unknown): value is StatusCode {\n return typeof value === \"string\" && statusCodes.has(value);\n}\n\n/** Returns whether a Status or StatusOr is OK. */\nexport function isOk(target: Status): target is StatusOk;\nexport function isOk<T>(target: StatusOr<T>): target is StatusOrOk<T>;\nexport function isOk(target: unknown): boolean;\nexport function isOk(target: unknown): boolean {\n const code = extractStatusCode(target);\n if (code === undefined) return false;\n return code === StatusCode.OK;\n}\n\n/** Returns whether a supported result object carries a failure. */\nexport function hasError(target: unknown): target is ErrorCarrier {\n if (target === null || target === undefined) return false;\n if (target instanceof Status) return !target.ok();\n if (target instanceof StatusOr) return !target.ok();\n if (isFailureSentinel(target)) return true;\n return false;\n}\n\nfunction createPredicate(expectedCode: StatusCode) {\n return (target: unknown): boolean => {\n const code = extractStatusCode(target);\n if (code === undefined) return false;\n return code === expectedCode;\n };\n}\n\nexport const isCancelled = createPredicate(StatusCode.CANCELLED);\nexport const isUnknown = createPredicate(StatusCode.UNKNOWN);\nexport const isInvalidArgument = createPredicate(\n StatusCode.INVALID_ARGUMENT,\n);\nexport const isDeadlineExceeded = createPredicate(\n StatusCode.DEADLINE_EXCEEDED,\n);\nexport const isNotFound = createPredicate(StatusCode.NOT_FOUND);\nexport const isAlreadyExists = createPredicate(\n StatusCode.ALREADY_EXISTS,\n);\nexport const isPermissionDenied = createPredicate(\n StatusCode.PERMISSION_DENIED,\n);\nexport const isResourceExhausted = createPredicate(\n StatusCode.RESOURCE_EXHAUSTED,\n);\nexport const isFailedPrecondition = createPredicate(\n StatusCode.FAILED_PRECONDITION,\n);\nexport const isAborted = createPredicate(StatusCode.ABORTED);\nexport const isOutOfRange = createPredicate(StatusCode.OUT_OF_RANGE);\nexport const isUnimplemented = createPredicate(\n StatusCode.UNIMPLEMENTED,\n);\nexport const isInternal = createPredicate(StatusCode.INTERNAL);\nexport const isUnavailable = createPredicate(StatusCode.UNAVAILABLE);\nexport const isDataLoss = createPredicate(StatusCode.DATA_LOSS);\nexport const isUnauthenticated = createPredicate(\n StatusCode.UNAUTHENTICATED,\n);\n","import {\n Status,\n InternalError,\n UnknownError,\n InvalidArgumentError,\n OutOfRangeError,\n type StatusFailed,\n} from \"./status.js\";\nimport { StatusOr } from \"./status-or.js\";\nimport { StatusError } from \"./errors.js\";\nimport { getBrandedFailureStatus } from \"./failure-brand.js\";\n\n/** Converts a thrown JavaScript value into a non-OK Status. */\nexport function fromError(error: unknown): StatusFailed {\n const failureStatus = getBrandedFailureStatus(error);\n if (failureStatus) return failureStatus;\n if (error instanceof Status)\n return error.ok()\n ? InternalError(\"Caught an OK Status as an error\")\n : (error as StatusFailed);\n if (error instanceof StatusError)\n return error.status.ok()\n ? InternalError(\"Caught a StatusError containing an OK Status\")\n : (error.status as StatusFailed);\n if (error instanceof RangeError)\n return OutOfRangeError(error.message);\n if (error instanceof TypeError)\n return InvalidArgumentError(error.message);\n if (error instanceof Error) return UnknownError(error.message);\n if (typeof error === \"string\") return UnknownError(error);\n return UnknownError(String(error));\n}\n\n/** Runs a function and converts thrown values into a StatusOr failure. */\nexport function tryCatch<T>(\n fn: () => T,\n mapper?: (error: unknown) => Status,\n): StatusOr<T> {\n try {\n return StatusOr.ok(fn());\n } catch (err: unknown) {\n const status = mapper ? mapper(err) : fromError(err);\n return StatusOr.fromStatus(\n status.ok()\n ? InternalError(\"tryCatch mapper returned an OK Status\")\n : status,\n );\n }\n}\n\n/** Runs an async function and converts rejections into a StatusOr failure. */\nexport async function tryCatchAsync<T>(\n fn: () => Promise<T>,\n mapper?: (error: unknown) => Status,\n): Promise<StatusOr<T>> {\n try {\n return StatusOr.ok(await fn());\n } catch (err: unknown) {\n const status = mapper ? mapper(err) : fromError(err);\n return StatusOr.fromStatus(\n status.ok()\n ? InternalError(\"tryCatchAsync mapper returned an OK Status\")\n : status,\n );\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mablock/status",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A lightweight TypeScript implementation of Abseil-style Status and StatusOr error handling.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"packageManager": "pnpm@9.15.9",
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/index.d.cts",
|
|
18
|
+
"default": "./dist/index.cjs"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"README.md",
|
|
26
|
+
"README.zh-CN.md",
|
|
27
|
+
"LICENSE"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsup",
|
|
31
|
+
"format": "prettier --write .",
|
|
32
|
+
"format:check": "prettier --check .",
|
|
33
|
+
"lint": "eslint .",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:watch": "vitest",
|
|
36
|
+
"test:coverage": "vitest run --coverage",
|
|
37
|
+
"typecheck": "tsc --noEmit",
|
|
38
|
+
"typecheck:tests": "tsc -p tsconfig.test.json",
|
|
39
|
+
"check": "pnpm run format:check && pnpm run lint && pnpm run typecheck && pnpm run typecheck:tests && pnpm run test",
|
|
40
|
+
"prepublishOnly": "pnpm run check && pnpm run build"
|
|
41
|
+
},
|
|
42
|
+
"keywords": [
|
|
43
|
+
"abseil",
|
|
44
|
+
"absl",
|
|
45
|
+
"status",
|
|
46
|
+
"statusor",
|
|
47
|
+
"status-code",
|
|
48
|
+
"result",
|
|
49
|
+
"error-handling",
|
|
50
|
+
"typescript",
|
|
51
|
+
"grpc",
|
|
52
|
+
"canonical-code"
|
|
53
|
+
],
|
|
54
|
+
"license": "Apache-2.0",
|
|
55
|
+
"author": "mablock",
|
|
56
|
+
"homepage": "https://github.com/MaaBlock/status#readme",
|
|
57
|
+
"repository": {
|
|
58
|
+
"type": "git",
|
|
59
|
+
"url": "git+https://github.com/MaaBlock/status.git"
|
|
60
|
+
},
|
|
61
|
+
"bugs": {
|
|
62
|
+
"url": "https://github.com/MaaBlock/status/issues"
|
|
63
|
+
},
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=18"
|
|
66
|
+
},
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public"
|
|
69
|
+
},
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@eslint/js": "^10.0.1",
|
|
72
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
73
|
+
"eslint": "^10.9.1",
|
|
74
|
+
"prettier": "^3.9.6",
|
|
75
|
+
"tsup": "^8.3.5",
|
|
76
|
+
"typescript": "^5.7.2",
|
|
77
|
+
"typescript-eslint": "^8.68.0",
|
|
78
|
+
"vitest": "^2.1.8"
|
|
79
|
+
}
|
|
80
|
+
}
|