@oxog/types 1.0.0 → 1.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/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var l=class{constructor(e){this.value=e;}ok=true;error=void 0;map(e){return E(e(this.value))}mapErr(e){return this}match(e){return e.ok(this.value)}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}},p=class{constructor(e){this.error=e;}ok=false;value=void 0;map(e){return this}mapErr(e){return T(e(this.error))}match(e){return e.err(this.error)}unwrap(){throw new Error(`Cannot unwrap Err: ${String(this.error)}`)}unwrapOr(e){return e}unwrapOrElse(e){return e(this.error)}};function E(r){return new l(r)}function T(r){return new p(r)}var c=(n=>(n.UNKNOWN="UNKNOWN",n.VALIDATION_ERROR="VALIDATION_ERROR",n.PLUGIN_ERROR="PLUGIN_ERROR",n.NOT_FOUND="NOT_FOUND",n.TIMEOUT="TIMEOUT",n.DEPENDENCY_ERROR="DEPENDENCY_ERROR",n))(c||{}),t=class extends Error{constructor(o,u,a){super(o);this.code=u;this.context=a;this.name="OxogError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},s=class extends t{constructor(o,u){super(o,"VALIDATION_ERROR",u);this.context=u;this.name="ValidationError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},i=class extends t{constructor(o,u,a){super(o,"PLUGIN_ERROR",a?{pluginName:u,...a}:void 0);this.pluginName=u;this.name="PluginError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name};function d(r){return r!==null&&typeof r=="object"&&typeof r.name=="string"&&typeof r.version=="string"&&typeof r.install=="function"}function m(r){return r!==null&&typeof r=="object"&&typeof r.use=="function"&&typeof r.unregister=="function"&&typeof r.getPlugin=="function"&&typeof r.listPlugins=="function"&&typeof r.hasPlugin=="function"&&typeof r.emit=="function"&&typeof r.on=="function"&&typeof r.getContext=="function"}function R(r){return r instanceof t}function x(r){return r instanceof s}function k(r){return r instanceof i}function f(r){return r!==null&&typeof r=="object"&&typeof r.ok=="boolean"&&("value"in r||"error"in r)}function U(r){return f(r)&&r.ok===true}function w(r){return f(r)&&r.ok===false}var N=Symbol.for("@oxog/plugin"),P=Symbol.for("@oxog/kernel"),b="1.0.0";exports.Err=T;exports.ErrorCodes=c;exports.OXOG_KERNEL=P;exports.OXOG_PLUGIN=N;exports.OXOG_VERSION=b;exports.Ok=E;exports.OxogError=t;exports.PluginError=i;exports.ValidationError=s;exports.isErr=w;exports.isKernel=m;exports.isOk=U;exports.isOxogError=R;exports.isPlugin=d;exports.isPluginError=k;exports.isResult=f;exports.isValidationError=x;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var l=class{constructor(e){this.value=e;}ok=true;error=void 0;map(e){return E(e(this.value))}mapErr(e){return this}match(e){return e.ok(this.value)}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}},p=class{constructor(e){this.error=e;}ok=false;value=void 0;map(e){return this}mapErr(e){return T(e(this.error))}match(e){return e.err(this.error)}unwrap(){throw new Error(`Cannot unwrap Err: ${String(this.error)}`)}unwrapOr(e){return e}unwrapOrElse(e){return e(this.error)}};function E(r){return new l(r)}function T(r){return new p(r)}var c=(n=>(n.UNKNOWN="UNKNOWN",n.VALIDATION_ERROR="VALIDATION_ERROR",n.PLUGIN_ERROR="PLUGIN_ERROR",n.NOT_FOUND="NOT_FOUND",n.TIMEOUT="TIMEOUT",n.DEPENDENCY_ERROR="DEPENDENCY_ERROR",n))(c||{}),t=class extends Error{constructor(o,u,a){super(o);this.code=u;this.context=a;this.name="OxogError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},s=class extends t{constructor(o,u){super(o,"VALIDATION_ERROR",u);this.context=u;this.name="ValidationError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},i=class extends t{constructor(o,u,a){super(o,"PLUGIN_ERROR",a?{pluginName:u,...a}:void 0);this.pluginName=u;this.name="PluginError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name};function d(r){return r!==null&&typeof r=="object"&&typeof r.name=="string"&&typeof r.version=="string"&&typeof r.install=="function"}function m(r){return r!==null&&typeof r=="object"&&typeof r.use=="function"&&typeof r.unregister=="function"&&typeof r.getPlugin=="function"&&typeof r.listPlugins=="function"&&typeof r.hasPlugin=="function"&&typeof r.emit=="function"&&typeof r.on=="function"&&typeof r.getContext=="function"}function R(r){return r instanceof t}function x(r){return r instanceof s}function k(r){return r instanceof i}function f(r){return r!==null&&typeof r=="object"&&typeof r.ok=="boolean"&&("value"in r||"error"in r)}function U(r){return f(r)&&r.ok===true}function w(r){return f(r)&&r.ok===false}var N=Symbol.for("@oxog/plugin"),P=Symbol.for("@oxog/kernel"),b="1.0.1";exports.Err=T;exports.ErrorCodes=c;exports.OXOG_KERNEL=P;exports.OXOG_PLUGIN=N;exports.OXOG_VERSION=b;exports.Ok=E;exports.OxogError=t;exports.PluginError=i;exports.ValidationError=s;exports.isErr=w;exports.isKernel=m;exports.isOk=U;exports.isOxogError=R;exports.isPlugin=d;exports.isPluginError=k;exports.isResult=f;exports.isValidationError=x;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/result.ts","../src/errors.ts","../src/guards.ts","../src/constants.ts"],"names":["OkImpl","value","fn","Ok","_fn","handlers","_defaultValue","ErrImpl","error","Err","defaultValue","ErrorCodes","OxogError","message","code","context","ValidationError","PluginError","pluginName","isPlugin","isKernel","isOxogError","isValidationError","isPluginError","isResult","isOk","isErr","OXOG_PLUGIN","OXOG_KERNEL","OXOG_VERSION"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @oxog/types - Result type for functional error handling\n * @version 1.0.0\n * @author Ersin Koç\n */\n\n/**\n * Represents a successful result.\n *\n * Contains a value and provides methods for transforming the value\n * or handling errors. Only available on successful results.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // 42\n * }\n * ```\n */\nexport interface Ok<T> {\n readonly ok: true;\n readonly value: T;\n readonly error?: never;\n\n /** Transform the value if successful */\n map<U>(fn: (value: T) => U): Result<U, never>;\n\n /** Transform the error (no-op for Ok) */\n mapErr<F>(fn: (error: never) => F): Ok<T>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U;\n\n /** Unwrap the value (asserts success) */\n unwrap(): T;\n\n /** Unwrap with default value */\n unwrapOr(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse(fn: () => T): T;\n}\n\n/**\n * Represents a failed result.\n *\n * Contains an error and provides methods for transforming the error\n * or handling success cases. Only available on failed results.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * if (isErr(err)) {\n * console.log(err.error); // 'Something went wrong'\n * }\n * ```\n */\nexport interface Err<E> {\n readonly ok: false;\n readonly value?: never;\n readonly error: E;\n\n /** Transform the value (no-op for Err) */\n map<U>(fn: (value: never) => U): Err<E>;\n\n /** Transform the error if failed */\n mapErr<F>(fn: (error: E) => F): Result<never, F>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U;\n\n /** Unwrap the value (asserts success, throws for Err) */\n unwrap(): never;\n\n /** Unwrap with default value */\n unwrapOr<T>(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse<T>(fn: () => T): T;\n}\n\n/**\n * Result type - either Ok<T> or Err<E>.\n *\n * A type that represents either success (Ok) or failure (Err).\n * This is inspired by Rust's Result type and provides functional\n * error handling without exceptions.\n *\n * @example\n * ```typescript\n * function divide(a: number, b: number): Result<number, string> {\n * if (b === 0) {\n * return Err('Division by zero');\n * }\n * return Ok(a / b);\n * }\n *\n * const result = divide(10, 2);\n *\n * // Pattern matching\n * const message = result.match({\n * ok: (value) => `Result: ${value}`,\n * err: (error) => `Error: ${error}`\n * });\n *\n * // Chaining\n * const doubled = result\n * .map(x => x * 2)\n * .mapErr(e => `Calculation failed: ${e}`);\n * ```\n */\nexport type Result<T, E> = Ok<T> | Err<E>;\n\n/**\n * Internal implementation of Ok result.\n */\nclass OkImpl<T> implements Ok<T> {\n readonly ok = true as const;\n readonly error = undefined as never;\n\n constructor(public readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Result<U, never> {\n return Ok(fn(this.value));\n }\n\n mapErr<F>(_fn: (error: never) => F): Ok<T> {\n return this;\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U {\n return handlers.ok(this.value);\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: () => T): T {\n return this.value;\n }\n}\n\n/**\n * Internal implementation of Err result.\n */\nclass ErrImpl<E> implements Err<E> {\n readonly ok = false as const;\n readonly value = undefined as never;\n\n constructor(public readonly error: E) {}\n\n map<U>(_fn: (value: never) => U): Err<E> {\n return this;\n }\n\n mapErr<F>(fn: (error: E) => F): Result<never, F> {\n return Err(fn(this.error));\n }\n\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U {\n return handlers.err(this.error);\n }\n\n unwrap(): never {\n throw new Error(`Cannot unwrap Err: ${String(this.error)}`);\n }\n\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse<T>(fn: (error: E) => T): T {\n return fn(this.error);\n }\n}\n\n/**\n * Creates a successful Result containing a value.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * const okStr = Ok('hello');\n * const okObj = Ok({ id: 1 });\n * ```\n *\n * @param value - The value to wrap\n * @returns An Ok result containing the value\n */\nexport function Ok<T>(value: T): Ok<T> {\n return new OkImpl(value);\n}\n\n/**\n * Creates a failed Result containing an error.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * const errNum = Err(404);\n * const errObj = Err({ code: 'NOT_FOUND' });\n * ```\n *\n * @param error - The error to wrap\n * @returns An Err result containing the error\n */\nexport function Err<E>(error: E): Err<E> {\n return new ErrImpl(error);\n}\n","/**\n * @oxog/types - Standardized error classes\n * @version 1.0.0\n * @author Ersin Koç\n */\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * These codes provide programmatic ways to identify and handle errors.\n */\nexport enum ErrorCodes {\n /** Unknown error */\n UNKNOWN = 'UNKNOWN',\n\n /** Validation error */\n VALIDATION_ERROR = 'VALIDATION_ERROR',\n\n /** Plugin-related error */\n PLUGIN_ERROR = 'PLUGIN_ERROR',\n\n /** Resource not found */\n NOT_FOUND = 'NOT_FOUND',\n\n /** Operation timed out */\n TIMEOUT = 'TIMEOUT',\n\n /** Dependency error */\n DEPENDENCY_ERROR = 'DEPENDENCY_ERROR',\n}\n\n/**\n * Base error class for all @oxog errors.\n *\n * Provides structured error information with code, message, and context.\n * All other @oxog errors inherit from this class.\n *\n * @example\n * ```typescript\n * throw new OxogError(\n * 'Database connection failed',\n * ErrorCodes.DEPENDENCY_ERROR,\n * { host: 'localhost', port: 5432 }\n * );\n * ```\n */\nexport class OxogError extends Error {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new OxogError.\n *\n * @param message - Human-readable error message\n * @param code - Error code for programmatic handling\n * @param context - Additional context about the error\n */\n constructor(\n message: string,\n public readonly code: string,\n public readonly context?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'OxogError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when validation fails.\n *\n * Used for input validation, schema validation, and type checking errors.\n *\n * @example\n * ```typescript\n * throw new ValidationError(\n * 'Invalid email format',\n * { field: 'email', value: 'not-an-email' }\n * );\n * ```\n */\nexport class ValidationError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new ValidationError.\n *\n * @param message - Human-readable error message\n * @param context - Additional context about the validation failure\n */\n constructor(\n message: string,\n public override readonly context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.VALIDATION_ERROR, context);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when a plugin operation fails.\n *\n * Used for plugin initialization, dependency resolution, and runtime errors\n * specific to plugins.\n *\n * @example\n * ```typescript\n * throw new PluginError(\n * 'Failed to initialize cache plugin',\n * 'cache-plugin',\n * { reason: 'Redis connection failed' }\n * );\n * ```\n */\nexport class PluginError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new PluginError.\n *\n * @param message - Human-readable error message\n * @param pluginName - Name of the plugin that caused the error\n * @param context - Additional context about the plugin error\n */\n constructor(\n message: string,\n public readonly pluginName: string,\n context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.PLUGIN_ERROR, context ? { pluginName, ...context } : undefined);\n this.name = 'PluginError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n","/**\n * @oxog/types - Type guard functions\n * @version 1.0.0\n * @author Ersin Koç\n */\n\nimport type { Plugin, Kernel } from './plugin.js';\nimport type { Result, Ok, Err } from './result.js';\nimport { OxogError, ValidationError, PluginError } from './errors.js';\n\n/**\n * Type guard for Plugin.\n *\n * Checks if a value is a valid Plugin instance.\n *\n * @example\n * ```typescript\n * const plugin = { name: 'test', version: '1.0.0', install: () => {} };\n * if (isPlugin(plugin)) {\n * console.log(plugin.name); // TypeScript knows it's a Plugin\n * }\n * ```\n */\nexport function isPlugin<T>(value: unknown): value is Plugin<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Plugin<T>).name === 'string' &&\n typeof (value as Plugin<T>).version === 'string' &&\n typeof (value as Plugin<T>).install === 'function'\n );\n}\n\n/**\n * Type guard for Kernel.\n *\n * Checks if a value is a valid Kernel instance.\n *\n * @example\n * ```typescript\n * const kernel = {\n * use: (plugin) => kernel,\n * unregister: () => true,\n * getPlugin: () => undefined,\n * listPlugins: () => [],\n * hasPlugin: () => false,\n * emit: () => {},\n * on: () => () => {},\n * getContext: () => null\n * };\n * if (isKernel(kernel)) {\n * console.log(kernel.listPlugins()); // TypeScript knows it's a Kernel\n * }\n * ```\n */\nexport function isKernel<T>(value: unknown): value is Kernel<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Kernel<T>).use === 'function' &&\n typeof (value as Kernel<T>).unregister === 'function' &&\n typeof (value as Kernel<T>).getPlugin === 'function' &&\n typeof (value as Kernel<T>).listPlugins === 'function' &&\n typeof (value as Kernel<T>).hasPlugin === 'function' &&\n typeof (value as Kernel<T>).emit === 'function' &&\n typeof (value as Kernel<T>).on === 'function' &&\n typeof (value as Kernel<T>).getContext === 'function'\n );\n}\n\n/**\n * Type guard for OxogError.\n *\n * Checks if a value is an OxogError instance.\n *\n * @example\n * ```typescript\n * const error = new OxogError('Test', 'TEST');\n * if (isOxogError(error)) {\n * console.log(error.code); // TypeScript knows it's an OxogError\n * }\n * ```\n */\nexport function isOxogError(value: unknown): value is OxogError {\n return value instanceof OxogError;\n}\n\n/**\n * Type guard for ValidationError.\n *\n * Checks if a value is a ValidationError instance.\n *\n * @example\n * ```typescript\n * const error = new ValidationError('Invalid', { field: 'test' });\n * if (isValidationError(error)) {\n * console.log(error.context); // TypeScript knows it's a ValidationError\n * }\n * ```\n */\nexport function isValidationError(value: unknown): value is ValidationError {\n return value instanceof ValidationError;\n}\n\n/**\n * Type guard for PluginError.\n *\n * Checks if a value is a PluginError instance.\n *\n * @example\n * ```typescript\n * const error = new PluginError('Plugin failed', 'my-plugin');\n * if (isPluginError(error)) {\n * console.log(error.pluginName); // TypeScript knows it's a PluginError\n * }\n * ```\n */\nexport function isPluginError(value: unknown): value is PluginError {\n return value instanceof PluginError;\n}\n\n/**\n * Type guard for Result.\n *\n * Checks if a value is a Result instance (either Ok or Err).\n *\n * @example\n * ```typescript\n * const result = Ok(42);\n * if (isResult(result)) {\n * // result is Ok<number, unknown>\n * }\n *\n * const err = Err('error');\n * if (isResult(err)) {\n * // err is Err<unknown, string>\n * }\n * ```\n */\nexport function isResult<T, E>(value: unknown): value is Result<T, E> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Result<T, E>).ok === 'boolean' &&\n (('value' in (value as object)) || ('error' in (value as object)))\n );\n}\n\n/**\n * Type guard for Ok result.\n *\n * Checks if a Result is an Ok (success) instance.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // TypeScript knows it's Ok\n * }\n * ```\n */\nexport function isOk<T>(value: Result<T, unknown>): value is Ok<T> {\n return isResult(value) && value.ok === true;\n}\n\n/**\n * Type guard for Err result.\n *\n * Checks if a Result is an Err (failure) instance.\n *\n * @example\n * ```typescript\n * const err = Err('error');\n * if (isErr(err)) {\n * console.log(err.error); // TypeScript knows it's Err\n * }\n * ```\n */\nexport function isErr<E>(value: Result<unknown, E>): value is Err<E> {\n return isResult(value) && value.ok === false;\n}\n","/**\n * @oxog/types - Well-known symbols and constants\n * @version 1.0.0\n * @author Ersin Koç\n */\n\nimport { ErrorCodes } from './errors.js';\n\n/**\n * Well-known symbol for @oxog plugins.\n *\n * Use this symbol to mark objects as @oxog plugins.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myPlugin = {\n * [OXOG_PLUGIN]: true,\n * name: 'my-plugin',\n * version: '1.0.0',\n * install: () => {}\n * };\n * ```\n */\nexport const OXOG_PLUGIN = Symbol.for('@oxog/plugin');\n\n/**\n * Well-known symbol for @oxog kernels.\n *\n * Use this symbol to mark objects as @oxog kernels.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myKernel = {\n * [OXOG_KERNEL]: true,\n * use: (plugin) => kernel,\n * // ... other methods\n * };\n * ```\n */\nexport const OXOG_KERNEL = Symbol.for('@oxog/kernel');\n\n/**\n * @oxog/types package version.\n *\n * Current version of the @oxog/types package.\n *\n * @example\n * ```typescript\n * console.log(`Using @oxog/types v${OXOG_VERSION}`);\n * ```\n */\nexport const OXOG_VERSION = '1.0.0';\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * Re-exported from errors module for convenience.\n *\n * @example\n * ```typescript\n * throw new OxogError('Not found', ErrorCodes.NOT_FOUND);\n * ```\n */\nexport { ErrorCodes };\n"]}
1
+ {"version":3,"sources":["../src/result.ts","../src/errors.ts","../src/guards.ts","../src/constants.ts"],"names":["OkImpl","value","fn","Ok","_fn","handlers","_defaultValue","ErrImpl","error","Err","defaultValue","ErrorCodes","OxogError","message","code","context","ValidationError","PluginError","pluginName","isPlugin","isKernel","isOxogError","isValidationError","isPluginError","isResult","isOk","isErr","OXOG_PLUGIN","OXOG_KERNEL","OXOG_VERSION"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @oxog/types - Result type for functional error handling\n * @version 1.0.1\n * @author Ersin Koç\n */\n\n/**\n * Represents a successful result.\n *\n * Contains a value and provides methods for transforming the value\n * or handling errors. Only available on successful results.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // 42\n * }\n * ```\n */\nexport interface Ok<T> {\n readonly ok: true;\n readonly value: T;\n readonly error?: never;\n\n /** Transform the value if successful */\n map<U>(fn: (value: T) => U): Result<U, never>;\n\n /** Transform the error (no-op for Ok) */\n mapErr<F>(fn: (error: never) => F): Ok<T>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U;\n\n /** Unwrap the value (asserts success) */\n unwrap(): T;\n\n /** Unwrap with default value */\n unwrapOr(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse(fn: () => T): T;\n}\n\n/**\n * Represents a failed result.\n *\n * Contains an error and provides methods for transforming the error\n * or handling success cases. Only available on failed results.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * if (isErr(err)) {\n * console.log(err.error); // 'Something went wrong'\n * }\n * ```\n */\nexport interface Err<E> {\n readonly ok: false;\n readonly value?: never;\n readonly error: E;\n\n /** Transform the value (no-op for Err) */\n map<U>(fn: (value: never) => U): Err<E>;\n\n /** Transform the error if failed */\n mapErr<F>(fn: (error: E) => F): Result<never, F>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U;\n\n /** Unwrap the value (asserts success, throws for Err) */\n unwrap(): never;\n\n /** Unwrap with default value */\n unwrapOr<T>(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse<T>(fn: () => T): T;\n}\n\n/**\n * Result type - either Ok<T> or Err<E>.\n *\n * A type that represents either success (Ok) or failure (Err).\n * This is inspired by Rust's Result type and provides functional\n * error handling without exceptions.\n *\n * @example\n * ```typescript\n * function divide(a: number, b: number): Result<number, string> {\n * if (b === 0) {\n * return Err('Division by zero');\n * }\n * return Ok(a / b);\n * }\n *\n * const result = divide(10, 2);\n *\n * // Pattern matching\n * const message = result.match({\n * ok: (value) => `Result: ${value}`,\n * err: (error) => `Error: ${error}`\n * });\n *\n * // Chaining\n * const doubled = result\n * .map(x => x * 2)\n * .mapErr(e => `Calculation failed: ${e}`);\n * ```\n */\nexport type Result<T, E> = Ok<T> | Err<E>;\n\n/**\n * Internal implementation of Ok result.\n */\nclass OkImpl<T> implements Ok<T> {\n readonly ok = true as const;\n readonly error = undefined as never;\n\n constructor(public readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Result<U, never> {\n return Ok(fn(this.value));\n }\n\n mapErr<F>(_fn: (error: never) => F): Ok<T> {\n return this;\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U {\n return handlers.ok(this.value);\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: () => T): T {\n return this.value;\n }\n}\n\n/**\n * Internal implementation of Err result.\n */\nclass ErrImpl<E> implements Err<E> {\n readonly ok = false as const;\n readonly value = undefined as never;\n\n constructor(public readonly error: E) {}\n\n map<U>(_fn: (value: never) => U): Err<E> {\n return this;\n }\n\n mapErr<F>(fn: (error: E) => F): Result<never, F> {\n return Err(fn(this.error));\n }\n\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U {\n return handlers.err(this.error);\n }\n\n unwrap(): never {\n throw new Error(`Cannot unwrap Err: ${String(this.error)}`);\n }\n\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse<T>(fn: (error: E) => T): T {\n return fn(this.error);\n }\n}\n\n/**\n * Creates a successful Result containing a value.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * const okStr = Ok('hello');\n * const okObj = Ok({ id: 1 });\n * ```\n *\n * @param value - The value to wrap\n * @returns An Ok result containing the value\n */\nexport function Ok<T>(value: T): Ok<T> {\n return new OkImpl(value);\n}\n\n/**\n * Creates a failed Result containing an error.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * const errNum = Err(404);\n * const errObj = Err({ code: 'NOT_FOUND' });\n * ```\n *\n * @param error - The error to wrap\n * @returns An Err result containing the error\n */\nexport function Err<E>(error: E): Err<E> {\n return new ErrImpl(error);\n}\n","/**\n * @oxog/types - Standardized error classes\n * @version 1.0.1\n * @author Ersin Koç\n */\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * These codes provide programmatic ways to identify and handle errors.\n */\nexport enum ErrorCodes {\n /** Unknown error */\n UNKNOWN = 'UNKNOWN',\n\n /** Validation error */\n VALIDATION_ERROR = 'VALIDATION_ERROR',\n\n /** Plugin-related error */\n PLUGIN_ERROR = 'PLUGIN_ERROR',\n\n /** Resource not found */\n NOT_FOUND = 'NOT_FOUND',\n\n /** Operation timed out */\n TIMEOUT = 'TIMEOUT',\n\n /** Dependency error */\n DEPENDENCY_ERROR = 'DEPENDENCY_ERROR',\n}\n\n/**\n * Base error class for all @oxog errors.\n *\n * Provides structured error information with code, message, and context.\n * All other @oxog errors inherit from this class.\n *\n * @example\n * ```typescript\n * throw new OxogError(\n * 'Database connection failed',\n * ErrorCodes.DEPENDENCY_ERROR,\n * { host: 'localhost', port: 5432 }\n * );\n * ```\n */\nexport class OxogError extends Error {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new OxogError.\n *\n * @param message - Human-readable error message\n * @param code - Error code for programmatic handling\n * @param context - Additional context about the error\n */\n constructor(\n message: string,\n public readonly code: string,\n public readonly context?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'OxogError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when validation fails.\n *\n * Used for input validation, schema validation, and type checking errors.\n *\n * @example\n * ```typescript\n * throw new ValidationError(\n * 'Invalid email format',\n * { field: 'email', value: 'not-an-email' }\n * );\n * ```\n */\nexport class ValidationError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new ValidationError.\n *\n * @param message - Human-readable error message\n * @param context - Additional context about the validation failure\n */\n constructor(\n message: string,\n public override readonly context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.VALIDATION_ERROR, context);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when a plugin operation fails.\n *\n * Used for plugin initialization, dependency resolution, and runtime errors\n * specific to plugins.\n *\n * @example\n * ```typescript\n * throw new PluginError(\n * 'Failed to initialize cache plugin',\n * 'cache-plugin',\n * { reason: 'Redis connection failed' }\n * );\n * ```\n */\nexport class PluginError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new PluginError.\n *\n * @param message - Human-readable error message\n * @param pluginName - Name of the plugin that caused the error\n * @param context - Additional context about the plugin error\n */\n constructor(\n message: string,\n public readonly pluginName: string,\n context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.PLUGIN_ERROR, context ? { pluginName, ...context } : undefined);\n this.name = 'PluginError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n","/**\n * @oxog/types - Type guard functions\n * @version 1.0.1\n * @author Ersin Koç\n */\n\nimport type { Plugin, Kernel } from './plugin.js';\nimport type { Result, Ok, Err } from './result.js';\nimport { OxogError, ValidationError, PluginError } from './errors.js';\n\n/**\n * Type guard for Plugin.\n *\n * Checks if a value is a valid Plugin instance.\n *\n * @example\n * ```typescript\n * const plugin = { name: 'test', version: '1.0.0', install: () => {} };\n * if (isPlugin(plugin)) {\n * console.log(plugin.name); // TypeScript knows it's a Plugin\n * }\n * ```\n */\nexport function isPlugin<T>(value: unknown): value is Plugin<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Plugin<T>).name === 'string' &&\n typeof (value as Plugin<T>).version === 'string' &&\n typeof (value as Plugin<T>).install === 'function'\n );\n}\n\n/**\n * Type guard for Kernel.\n *\n * Checks if a value is a valid Kernel instance.\n *\n * @example\n * ```typescript\n * const kernel = {\n * use: (plugin) => kernel,\n * unregister: () => true,\n * getPlugin: () => undefined,\n * listPlugins: () => [],\n * hasPlugin: () => false,\n * emit: () => {},\n * on: () => () => {},\n * getContext: () => null\n * };\n * if (isKernel(kernel)) {\n * console.log(kernel.listPlugins()); // TypeScript knows it's a Kernel\n * }\n * ```\n */\nexport function isKernel<T>(value: unknown): value is Kernel<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Kernel<T>).use === 'function' &&\n typeof (value as Kernel<T>).unregister === 'function' &&\n typeof (value as Kernel<T>).getPlugin === 'function' &&\n typeof (value as Kernel<T>).listPlugins === 'function' &&\n typeof (value as Kernel<T>).hasPlugin === 'function' &&\n typeof (value as Kernel<T>).emit === 'function' &&\n typeof (value as Kernel<T>).on === 'function' &&\n typeof (value as Kernel<T>).getContext === 'function'\n );\n}\n\n/**\n * Type guard for OxogError.\n *\n * Checks if a value is an OxogError instance.\n *\n * @example\n * ```typescript\n * const error = new OxogError('Test', 'TEST');\n * if (isOxogError(error)) {\n * console.log(error.code); // TypeScript knows it's an OxogError\n * }\n * ```\n */\nexport function isOxogError(value: unknown): value is OxogError {\n return value instanceof OxogError;\n}\n\n/**\n * Type guard for ValidationError.\n *\n * Checks if a value is a ValidationError instance.\n *\n * @example\n * ```typescript\n * const error = new ValidationError('Invalid', { field: 'test' });\n * if (isValidationError(error)) {\n * console.log(error.context); // TypeScript knows it's a ValidationError\n * }\n * ```\n */\nexport function isValidationError(value: unknown): value is ValidationError {\n return value instanceof ValidationError;\n}\n\n/**\n * Type guard for PluginError.\n *\n * Checks if a value is a PluginError instance.\n *\n * @example\n * ```typescript\n * const error = new PluginError('Plugin failed', 'my-plugin');\n * if (isPluginError(error)) {\n * console.log(error.pluginName); // TypeScript knows it's a PluginError\n * }\n * ```\n */\nexport function isPluginError(value: unknown): value is PluginError {\n return value instanceof PluginError;\n}\n\n/**\n * Type guard for Result.\n *\n * Checks if a value is a Result instance (either Ok or Err).\n *\n * @example\n * ```typescript\n * const result = Ok(42);\n * if (isResult(result)) {\n * // result is Ok<number, unknown>\n * }\n *\n * const err = Err('error');\n * if (isResult(err)) {\n * // err is Err<unknown, string>\n * }\n * ```\n */\nexport function isResult<T, E>(value: unknown): value is Result<T, E> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Result<T, E>).ok === 'boolean' &&\n (('value' in (value as object)) || ('error' in (value as object)))\n );\n}\n\n/**\n * Type guard for Ok result.\n *\n * Checks if a Result is an Ok (success) instance.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // TypeScript knows it's Ok\n * }\n * ```\n */\nexport function isOk<T>(value: Result<T, unknown>): value is Ok<T> {\n return isResult(value) && value.ok === true;\n}\n\n/**\n * Type guard for Err result.\n *\n * Checks if a Result is an Err (failure) instance.\n *\n * @example\n * ```typescript\n * const err = Err('error');\n * if (isErr(err)) {\n * console.log(err.error); // TypeScript knows it's Err\n * }\n * ```\n */\nexport function isErr<E>(value: Result<unknown, E>): value is Err<E> {\n return isResult(value) && value.ok === false;\n}\n","/**\n * @oxog/types - Well-known symbols and constants\n * @version 1.0.1\n * @author Ersin Koç\n */\n\nimport { ErrorCodes } from './errors.js';\n\n/**\n * Well-known symbol for @oxog plugins.\n *\n * Use this symbol to mark objects as @oxog plugins.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myPlugin = {\n * [OXOG_PLUGIN]: true,\n * name: 'my-plugin',\n * version: '1.0.0',\n * install: () => {}\n * };\n * ```\n */\nexport const OXOG_PLUGIN = Symbol.for('@oxog/plugin');\n\n/**\n * Well-known symbol for @oxog kernels.\n *\n * Use this symbol to mark objects as @oxog kernels.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myKernel = {\n * [OXOG_KERNEL]: true,\n * use: (plugin) => kernel,\n * // ... other methods\n * };\n * ```\n */\nexport const OXOG_KERNEL = Symbol.for('@oxog/kernel');\n\n/**\n * @oxog/types package version.\n *\n * Current version of the @oxog/types package.\n *\n * @example\n * ```typescript\n * console.log(`Using @oxog/types v${OXOG_VERSION}`);\n * ```\n */\nexport const OXOG_VERSION = '1.0.1';\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * Re-exported from errors module for convenience.\n *\n * @example\n * ```typescript\n * throw new OxogError('Not found', ErrorCodes.NOT_FOUND);\n * ```\n */\nexport { ErrorCodes };\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @oxog/types - Common TypeScript utility types
3
- * @version 1.0.0
3
+ * @version 1.0.1
4
4
  * @author Ersin Koç
5
5
  */
6
6
  /** Brand symbol for branded types */
@@ -297,7 +297,7 @@ type Unsubscribe = () => void;
297
297
 
298
298
  /**
299
299
  * @oxog/types - Plugin and Kernel interfaces
300
- * @version 1.0.0
300
+ * @version 1.0.1
301
301
  * @author Ersin Koç
302
302
  */
303
303
 
@@ -468,7 +468,7 @@ interface PluginLogger {
468
468
  type Result<T, E> = Ok<T> | Err<E>;
469
469
  /**
470
470
  * @oxog/types - Result type for functional error handling
471
- * @version 1.0.0
471
+ * @version 1.0.1
472
472
  * @author Ersin Koç
473
473
  */
474
474
  /**
@@ -570,7 +570,7 @@ declare function Err<E>(error: E): Err<E>;
570
570
 
571
571
  /**
572
572
  * @oxog/types - Standardized error classes
573
- * @version 1.0.0
573
+ * @version 1.0.1
574
574
  * @author Ersin Koç
575
575
  */
576
576
  /**
@@ -677,7 +677,7 @@ declare class PluginError extends OxogError {
677
677
 
678
678
  /**
679
679
  * @oxog/types - Type guard functions
680
- * @version 1.0.0
680
+ * @version 1.0.1
681
681
  * @author Ersin Koç
682
682
  */
683
683
 
@@ -810,7 +810,7 @@ declare function isErr<E>(value: Result<unknown, E>): value is Err<E>;
810
810
 
811
811
  /**
812
812
  * @oxog/types - Event system types
813
- * @version 1.0.0
813
+ * @version 1.0.1
814
814
  * @author Ersin Koç
815
815
  */
816
816
 
@@ -893,7 +893,7 @@ interface TypedEventEmitter<TEvents extends EventMap> {
893
893
 
894
894
  /**
895
895
  * @oxog/types - Well-known symbols and constants
896
- * @version 1.0.0
896
+ * @version 1.0.1
897
897
  * @author Ersin Koç
898
898
  */
899
899
 
@@ -940,6 +940,6 @@ declare const OXOG_KERNEL: unique symbol;
940
940
  * console.log(`Using @oxog/types v${OXOG_VERSION}`);
941
941
  * ```
942
942
  */
943
- declare const OXOG_VERSION = "1.0.0";
943
+ declare const OXOG_VERSION = "1.0.1";
944
944
 
945
945
  export { type AnyFunction, type AsyncFunction, type Brand, type Branded, type DeepPartial, type DeepReadonly, type DeepRequired, Err, ErrorCodes, type EventHandler, type EventMap, type JsonArray, type JsonObject, type JsonPrimitive, type JsonValue, type Kernel, type MaybePromise, type NonEmptyArray, type Nullable, OXOG_KERNEL, OXOG_PLUGIN, OXOG_VERSION, Ok, type Optional, OxogError, type Plugin, PluginError, type PluginLogger, type PluginOptions, type Prettify, type Result, type StrictOmit, type StrictPick, type SyncFunction, type TypedEventEmitter, type Unsubscribe, ValidationError, isErr, isKernel, isOk, isOxogError, isPlugin, isPluginError, isResult, isValidationError };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @oxog/types - Common TypeScript utility types
3
- * @version 1.0.0
3
+ * @version 1.0.1
4
4
  * @author Ersin Koç
5
5
  */
6
6
  /** Brand symbol for branded types */
@@ -297,7 +297,7 @@ type Unsubscribe = () => void;
297
297
 
298
298
  /**
299
299
  * @oxog/types - Plugin and Kernel interfaces
300
- * @version 1.0.0
300
+ * @version 1.0.1
301
301
  * @author Ersin Koç
302
302
  */
303
303
 
@@ -468,7 +468,7 @@ interface PluginLogger {
468
468
  type Result<T, E> = Ok<T> | Err<E>;
469
469
  /**
470
470
  * @oxog/types - Result type for functional error handling
471
- * @version 1.0.0
471
+ * @version 1.0.1
472
472
  * @author Ersin Koç
473
473
  */
474
474
  /**
@@ -570,7 +570,7 @@ declare function Err<E>(error: E): Err<E>;
570
570
 
571
571
  /**
572
572
  * @oxog/types - Standardized error classes
573
- * @version 1.0.0
573
+ * @version 1.0.1
574
574
  * @author Ersin Koç
575
575
  */
576
576
  /**
@@ -677,7 +677,7 @@ declare class PluginError extends OxogError {
677
677
 
678
678
  /**
679
679
  * @oxog/types - Type guard functions
680
- * @version 1.0.0
680
+ * @version 1.0.1
681
681
  * @author Ersin Koç
682
682
  */
683
683
 
@@ -810,7 +810,7 @@ declare function isErr<E>(value: Result<unknown, E>): value is Err<E>;
810
810
 
811
811
  /**
812
812
  * @oxog/types - Event system types
813
- * @version 1.0.0
813
+ * @version 1.0.1
814
814
  * @author Ersin Koç
815
815
  */
816
816
 
@@ -893,7 +893,7 @@ interface TypedEventEmitter<TEvents extends EventMap> {
893
893
 
894
894
  /**
895
895
  * @oxog/types - Well-known symbols and constants
896
- * @version 1.0.0
896
+ * @version 1.0.1
897
897
  * @author Ersin Koç
898
898
  */
899
899
 
@@ -940,6 +940,6 @@ declare const OXOG_KERNEL: unique symbol;
940
940
  * console.log(`Using @oxog/types v${OXOG_VERSION}`);
941
941
  * ```
942
942
  */
943
- declare const OXOG_VERSION = "1.0.0";
943
+ declare const OXOG_VERSION = "1.0.1";
944
944
 
945
945
  export { type AnyFunction, type AsyncFunction, type Brand, type Branded, type DeepPartial, type DeepReadonly, type DeepRequired, Err, ErrorCodes, type EventHandler, type EventMap, type JsonArray, type JsonObject, type JsonPrimitive, type JsonValue, type Kernel, type MaybePromise, type NonEmptyArray, type Nullable, OXOG_KERNEL, OXOG_PLUGIN, OXOG_VERSION, Ok, type Optional, OxogError, type Plugin, PluginError, type PluginLogger, type PluginOptions, type Prettify, type Result, type StrictOmit, type StrictPick, type SyncFunction, type TypedEventEmitter, type Unsubscribe, ValidationError, isErr, isKernel, isOk, isOxogError, isPlugin, isPluginError, isResult, isValidationError };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var l=class{constructor(e){this.value=e;}ok=true;error=void 0;map(e){return E(e(this.value))}mapErr(e){return this}match(e){return e.ok(this.value)}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}},p=class{constructor(e){this.error=e;}ok=false;value=void 0;map(e){return this}mapErr(e){return T(e(this.error))}match(e){return e.err(this.error)}unwrap(){throw new Error(`Cannot unwrap Err: ${String(this.error)}`)}unwrapOr(e){return e}unwrapOrElse(e){return e(this.error)}};function E(r){return new l(r)}function T(r){return new p(r)}var c=(n=>(n.UNKNOWN="UNKNOWN",n.VALIDATION_ERROR="VALIDATION_ERROR",n.PLUGIN_ERROR="PLUGIN_ERROR",n.NOT_FOUND="NOT_FOUND",n.TIMEOUT="TIMEOUT",n.DEPENDENCY_ERROR="DEPENDENCY_ERROR",n))(c||{}),t=class extends Error{constructor(o,u,a){super(o);this.code=u;this.context=a;this.name="OxogError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},s=class extends t{constructor(o,u){super(o,"VALIDATION_ERROR",u);this.context=u;this.name="ValidationError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},i=class extends t{constructor(o,u,a){super(o,"PLUGIN_ERROR",a?{pluginName:u,...a}:void 0);this.pluginName=u;this.name="PluginError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name};function d(r){return r!==null&&typeof r=="object"&&typeof r.name=="string"&&typeof r.version=="string"&&typeof r.install=="function"}function m(r){return r!==null&&typeof r=="object"&&typeof r.use=="function"&&typeof r.unregister=="function"&&typeof r.getPlugin=="function"&&typeof r.listPlugins=="function"&&typeof r.hasPlugin=="function"&&typeof r.emit=="function"&&typeof r.on=="function"&&typeof r.getContext=="function"}function R(r){return r instanceof t}function x(r){return r instanceof s}function k(r){return r instanceof i}function f(r){return r!==null&&typeof r=="object"&&typeof r.ok=="boolean"&&("value"in r||"error"in r)}function U(r){return f(r)&&r.ok===true}function w(r){return f(r)&&r.ok===false}var N=Symbol.for("@oxog/plugin"),P=Symbol.for("@oxog/kernel"),b="1.0.0";export{T as Err,c as ErrorCodes,P as OXOG_KERNEL,N as OXOG_PLUGIN,b as OXOG_VERSION,E as Ok,t as OxogError,i as PluginError,s as ValidationError,w as isErr,m as isKernel,U as isOk,R as isOxogError,d as isPlugin,k as isPluginError,f as isResult,x as isValidationError};//# sourceMappingURL=index.js.map
1
+ var l=class{constructor(e){this.value=e;}ok=true;error=void 0;map(e){return E(e(this.value))}mapErr(e){return this}match(e){return e.ok(this.value)}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}},p=class{constructor(e){this.error=e;}ok=false;value=void 0;map(e){return this}mapErr(e){return T(e(this.error))}match(e){return e.err(this.error)}unwrap(){throw new Error(`Cannot unwrap Err: ${String(this.error)}`)}unwrapOr(e){return e}unwrapOrElse(e){return e(this.error)}};function E(r){return new l(r)}function T(r){return new p(r)}var c=(n=>(n.UNKNOWN="UNKNOWN",n.VALIDATION_ERROR="VALIDATION_ERROR",n.PLUGIN_ERROR="PLUGIN_ERROR",n.NOT_FOUND="NOT_FOUND",n.TIMEOUT="TIMEOUT",n.DEPENDENCY_ERROR="DEPENDENCY_ERROR",n))(c||{}),t=class extends Error{constructor(o,u,a){super(o);this.code=u;this.context=a;this.name="OxogError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},s=class extends t{constructor(o,u){super(o,"VALIDATION_ERROR",u);this.context=u;this.name="ValidationError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name},i=class extends t{constructor(o,u,a){super(o,"PLUGIN_ERROR",a?{pluginName:u,...a}:void 0);this.pluginName=u;this.name="PluginError",Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace(this,new.target);}name};function d(r){return r!==null&&typeof r=="object"&&typeof r.name=="string"&&typeof r.version=="string"&&typeof r.install=="function"}function m(r){return r!==null&&typeof r=="object"&&typeof r.use=="function"&&typeof r.unregister=="function"&&typeof r.getPlugin=="function"&&typeof r.listPlugins=="function"&&typeof r.hasPlugin=="function"&&typeof r.emit=="function"&&typeof r.on=="function"&&typeof r.getContext=="function"}function R(r){return r instanceof t}function x(r){return r instanceof s}function k(r){return r instanceof i}function f(r){return r!==null&&typeof r=="object"&&typeof r.ok=="boolean"&&("value"in r||"error"in r)}function U(r){return f(r)&&r.ok===true}function w(r){return f(r)&&r.ok===false}var N=Symbol.for("@oxog/plugin"),P=Symbol.for("@oxog/kernel"),b="1.0.1";export{T as Err,c as ErrorCodes,P as OXOG_KERNEL,N as OXOG_PLUGIN,b as OXOG_VERSION,E as Ok,t as OxogError,i as PluginError,s as ValidationError,w as isErr,m as isKernel,U as isOk,R as isOxogError,d as isPlugin,k as isPluginError,f as isResult,x as isValidationError};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/result.ts","../src/errors.ts","../src/guards.ts","../src/constants.ts"],"names":["OkImpl","value","fn","Ok","_fn","handlers","_defaultValue","ErrImpl","error","Err","defaultValue","ErrorCodes","OxogError","message","code","context","ValidationError","PluginError","pluginName","isPlugin","isKernel","isOxogError","isValidationError","isPluginError","isResult","isOk","isErr","OXOG_PLUGIN","OXOG_KERNEL","OXOG_VERSION"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @oxog/types - Result type for functional error handling\n * @version 1.0.0\n * @author Ersin Koç\n */\n\n/**\n * Represents a successful result.\n *\n * Contains a value and provides methods for transforming the value\n * or handling errors. Only available on successful results.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // 42\n * }\n * ```\n */\nexport interface Ok<T> {\n readonly ok: true;\n readonly value: T;\n readonly error?: never;\n\n /** Transform the value if successful */\n map<U>(fn: (value: T) => U): Result<U, never>;\n\n /** Transform the error (no-op for Ok) */\n mapErr<F>(fn: (error: never) => F): Ok<T>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U;\n\n /** Unwrap the value (asserts success) */\n unwrap(): T;\n\n /** Unwrap with default value */\n unwrapOr(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse(fn: () => T): T;\n}\n\n/**\n * Represents a failed result.\n *\n * Contains an error and provides methods for transforming the error\n * or handling success cases. Only available on failed results.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * if (isErr(err)) {\n * console.log(err.error); // 'Something went wrong'\n * }\n * ```\n */\nexport interface Err<E> {\n readonly ok: false;\n readonly value?: never;\n readonly error: E;\n\n /** Transform the value (no-op for Err) */\n map<U>(fn: (value: never) => U): Err<E>;\n\n /** Transform the error if failed */\n mapErr<F>(fn: (error: E) => F): Result<never, F>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U;\n\n /** Unwrap the value (asserts success, throws for Err) */\n unwrap(): never;\n\n /** Unwrap with default value */\n unwrapOr<T>(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse<T>(fn: () => T): T;\n}\n\n/**\n * Result type - either Ok<T> or Err<E>.\n *\n * A type that represents either success (Ok) or failure (Err).\n * This is inspired by Rust's Result type and provides functional\n * error handling without exceptions.\n *\n * @example\n * ```typescript\n * function divide(a: number, b: number): Result<number, string> {\n * if (b === 0) {\n * return Err('Division by zero');\n * }\n * return Ok(a / b);\n * }\n *\n * const result = divide(10, 2);\n *\n * // Pattern matching\n * const message = result.match({\n * ok: (value) => `Result: ${value}`,\n * err: (error) => `Error: ${error}`\n * });\n *\n * // Chaining\n * const doubled = result\n * .map(x => x * 2)\n * .mapErr(e => `Calculation failed: ${e}`);\n * ```\n */\nexport type Result<T, E> = Ok<T> | Err<E>;\n\n/**\n * Internal implementation of Ok result.\n */\nclass OkImpl<T> implements Ok<T> {\n readonly ok = true as const;\n readonly error = undefined as never;\n\n constructor(public readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Result<U, never> {\n return Ok(fn(this.value));\n }\n\n mapErr<F>(_fn: (error: never) => F): Ok<T> {\n return this;\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U {\n return handlers.ok(this.value);\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: () => T): T {\n return this.value;\n }\n}\n\n/**\n * Internal implementation of Err result.\n */\nclass ErrImpl<E> implements Err<E> {\n readonly ok = false as const;\n readonly value = undefined as never;\n\n constructor(public readonly error: E) {}\n\n map<U>(_fn: (value: never) => U): Err<E> {\n return this;\n }\n\n mapErr<F>(fn: (error: E) => F): Result<never, F> {\n return Err(fn(this.error));\n }\n\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U {\n return handlers.err(this.error);\n }\n\n unwrap(): never {\n throw new Error(`Cannot unwrap Err: ${String(this.error)}`);\n }\n\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse<T>(fn: (error: E) => T): T {\n return fn(this.error);\n }\n}\n\n/**\n * Creates a successful Result containing a value.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * const okStr = Ok('hello');\n * const okObj = Ok({ id: 1 });\n * ```\n *\n * @param value - The value to wrap\n * @returns An Ok result containing the value\n */\nexport function Ok<T>(value: T): Ok<T> {\n return new OkImpl(value);\n}\n\n/**\n * Creates a failed Result containing an error.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * const errNum = Err(404);\n * const errObj = Err({ code: 'NOT_FOUND' });\n * ```\n *\n * @param error - The error to wrap\n * @returns An Err result containing the error\n */\nexport function Err<E>(error: E): Err<E> {\n return new ErrImpl(error);\n}\n","/**\n * @oxog/types - Standardized error classes\n * @version 1.0.0\n * @author Ersin Koç\n */\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * These codes provide programmatic ways to identify and handle errors.\n */\nexport enum ErrorCodes {\n /** Unknown error */\n UNKNOWN = 'UNKNOWN',\n\n /** Validation error */\n VALIDATION_ERROR = 'VALIDATION_ERROR',\n\n /** Plugin-related error */\n PLUGIN_ERROR = 'PLUGIN_ERROR',\n\n /** Resource not found */\n NOT_FOUND = 'NOT_FOUND',\n\n /** Operation timed out */\n TIMEOUT = 'TIMEOUT',\n\n /** Dependency error */\n DEPENDENCY_ERROR = 'DEPENDENCY_ERROR',\n}\n\n/**\n * Base error class for all @oxog errors.\n *\n * Provides structured error information with code, message, and context.\n * All other @oxog errors inherit from this class.\n *\n * @example\n * ```typescript\n * throw new OxogError(\n * 'Database connection failed',\n * ErrorCodes.DEPENDENCY_ERROR,\n * { host: 'localhost', port: 5432 }\n * );\n * ```\n */\nexport class OxogError extends Error {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new OxogError.\n *\n * @param message - Human-readable error message\n * @param code - Error code for programmatic handling\n * @param context - Additional context about the error\n */\n constructor(\n message: string,\n public readonly code: string,\n public readonly context?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'OxogError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when validation fails.\n *\n * Used for input validation, schema validation, and type checking errors.\n *\n * @example\n * ```typescript\n * throw new ValidationError(\n * 'Invalid email format',\n * { field: 'email', value: 'not-an-email' }\n * );\n * ```\n */\nexport class ValidationError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new ValidationError.\n *\n * @param message - Human-readable error message\n * @param context - Additional context about the validation failure\n */\n constructor(\n message: string,\n public override readonly context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.VALIDATION_ERROR, context);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when a plugin operation fails.\n *\n * Used for plugin initialization, dependency resolution, and runtime errors\n * specific to plugins.\n *\n * @example\n * ```typescript\n * throw new PluginError(\n * 'Failed to initialize cache plugin',\n * 'cache-plugin',\n * { reason: 'Redis connection failed' }\n * );\n * ```\n */\nexport class PluginError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new PluginError.\n *\n * @param message - Human-readable error message\n * @param pluginName - Name of the plugin that caused the error\n * @param context - Additional context about the plugin error\n */\n constructor(\n message: string,\n public readonly pluginName: string,\n context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.PLUGIN_ERROR, context ? { pluginName, ...context } : undefined);\n this.name = 'PluginError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n","/**\n * @oxog/types - Type guard functions\n * @version 1.0.0\n * @author Ersin Koç\n */\n\nimport type { Plugin, Kernel } from './plugin.js';\nimport type { Result, Ok, Err } from './result.js';\nimport { OxogError, ValidationError, PluginError } from './errors.js';\n\n/**\n * Type guard for Plugin.\n *\n * Checks if a value is a valid Plugin instance.\n *\n * @example\n * ```typescript\n * const plugin = { name: 'test', version: '1.0.0', install: () => {} };\n * if (isPlugin(plugin)) {\n * console.log(plugin.name); // TypeScript knows it's a Plugin\n * }\n * ```\n */\nexport function isPlugin<T>(value: unknown): value is Plugin<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Plugin<T>).name === 'string' &&\n typeof (value as Plugin<T>).version === 'string' &&\n typeof (value as Plugin<T>).install === 'function'\n );\n}\n\n/**\n * Type guard for Kernel.\n *\n * Checks if a value is a valid Kernel instance.\n *\n * @example\n * ```typescript\n * const kernel = {\n * use: (plugin) => kernel,\n * unregister: () => true,\n * getPlugin: () => undefined,\n * listPlugins: () => [],\n * hasPlugin: () => false,\n * emit: () => {},\n * on: () => () => {},\n * getContext: () => null\n * };\n * if (isKernel(kernel)) {\n * console.log(kernel.listPlugins()); // TypeScript knows it's a Kernel\n * }\n * ```\n */\nexport function isKernel<T>(value: unknown): value is Kernel<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Kernel<T>).use === 'function' &&\n typeof (value as Kernel<T>).unregister === 'function' &&\n typeof (value as Kernel<T>).getPlugin === 'function' &&\n typeof (value as Kernel<T>).listPlugins === 'function' &&\n typeof (value as Kernel<T>).hasPlugin === 'function' &&\n typeof (value as Kernel<T>).emit === 'function' &&\n typeof (value as Kernel<T>).on === 'function' &&\n typeof (value as Kernel<T>).getContext === 'function'\n );\n}\n\n/**\n * Type guard for OxogError.\n *\n * Checks if a value is an OxogError instance.\n *\n * @example\n * ```typescript\n * const error = new OxogError('Test', 'TEST');\n * if (isOxogError(error)) {\n * console.log(error.code); // TypeScript knows it's an OxogError\n * }\n * ```\n */\nexport function isOxogError(value: unknown): value is OxogError {\n return value instanceof OxogError;\n}\n\n/**\n * Type guard for ValidationError.\n *\n * Checks if a value is a ValidationError instance.\n *\n * @example\n * ```typescript\n * const error = new ValidationError('Invalid', { field: 'test' });\n * if (isValidationError(error)) {\n * console.log(error.context); // TypeScript knows it's a ValidationError\n * }\n * ```\n */\nexport function isValidationError(value: unknown): value is ValidationError {\n return value instanceof ValidationError;\n}\n\n/**\n * Type guard for PluginError.\n *\n * Checks if a value is a PluginError instance.\n *\n * @example\n * ```typescript\n * const error = new PluginError('Plugin failed', 'my-plugin');\n * if (isPluginError(error)) {\n * console.log(error.pluginName); // TypeScript knows it's a PluginError\n * }\n * ```\n */\nexport function isPluginError(value: unknown): value is PluginError {\n return value instanceof PluginError;\n}\n\n/**\n * Type guard for Result.\n *\n * Checks if a value is a Result instance (either Ok or Err).\n *\n * @example\n * ```typescript\n * const result = Ok(42);\n * if (isResult(result)) {\n * // result is Ok<number, unknown>\n * }\n *\n * const err = Err('error');\n * if (isResult(err)) {\n * // err is Err<unknown, string>\n * }\n * ```\n */\nexport function isResult<T, E>(value: unknown): value is Result<T, E> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Result<T, E>).ok === 'boolean' &&\n (('value' in (value as object)) || ('error' in (value as object)))\n );\n}\n\n/**\n * Type guard for Ok result.\n *\n * Checks if a Result is an Ok (success) instance.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // TypeScript knows it's Ok\n * }\n * ```\n */\nexport function isOk<T>(value: Result<T, unknown>): value is Ok<T> {\n return isResult(value) && value.ok === true;\n}\n\n/**\n * Type guard for Err result.\n *\n * Checks if a Result is an Err (failure) instance.\n *\n * @example\n * ```typescript\n * const err = Err('error');\n * if (isErr(err)) {\n * console.log(err.error); // TypeScript knows it's Err\n * }\n * ```\n */\nexport function isErr<E>(value: Result<unknown, E>): value is Err<E> {\n return isResult(value) && value.ok === false;\n}\n","/**\n * @oxog/types - Well-known symbols and constants\n * @version 1.0.0\n * @author Ersin Koç\n */\n\nimport { ErrorCodes } from './errors.js';\n\n/**\n * Well-known symbol for @oxog plugins.\n *\n * Use this symbol to mark objects as @oxog plugins.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myPlugin = {\n * [OXOG_PLUGIN]: true,\n * name: 'my-plugin',\n * version: '1.0.0',\n * install: () => {}\n * };\n * ```\n */\nexport const OXOG_PLUGIN = Symbol.for('@oxog/plugin');\n\n/**\n * Well-known symbol for @oxog kernels.\n *\n * Use this symbol to mark objects as @oxog kernels.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myKernel = {\n * [OXOG_KERNEL]: true,\n * use: (plugin) => kernel,\n * // ... other methods\n * };\n * ```\n */\nexport const OXOG_KERNEL = Symbol.for('@oxog/kernel');\n\n/**\n * @oxog/types package version.\n *\n * Current version of the @oxog/types package.\n *\n * @example\n * ```typescript\n * console.log(`Using @oxog/types v${OXOG_VERSION}`);\n * ```\n */\nexport const OXOG_VERSION = '1.0.0';\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * Re-exported from errors module for convenience.\n *\n * @example\n * ```typescript\n * throw new OxogError('Not found', ErrorCodes.NOT_FOUND);\n * ```\n */\nexport { ErrorCodes };\n"]}
1
+ {"version":3,"sources":["../src/result.ts","../src/errors.ts","../src/guards.ts","../src/constants.ts"],"names":["OkImpl","value","fn","Ok","_fn","handlers","_defaultValue","ErrImpl","error","Err","defaultValue","ErrorCodes","OxogError","message","code","context","ValidationError","PluginError","pluginName","isPlugin","isKernel","isOxogError","isValidationError","isPluginError","isResult","isOk","isErr","OXOG_PLUGIN","OXOG_KERNEL","OXOG_VERSION"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @oxog/types - Result type for functional error handling\n * @version 1.0.1\n * @author Ersin Koç\n */\n\n/**\n * Represents a successful result.\n *\n * Contains a value and provides methods for transforming the value\n * or handling errors. Only available on successful results.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // 42\n * }\n * ```\n */\nexport interface Ok<T> {\n readonly ok: true;\n readonly value: T;\n readonly error?: never;\n\n /** Transform the value if successful */\n map<U>(fn: (value: T) => U): Result<U, never>;\n\n /** Transform the error (no-op for Ok) */\n mapErr<F>(fn: (error: never) => F): Ok<T>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U;\n\n /** Unwrap the value (asserts success) */\n unwrap(): T;\n\n /** Unwrap with default value */\n unwrapOr(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse(fn: () => T): T;\n}\n\n/**\n * Represents a failed result.\n *\n * Contains an error and provides methods for transforming the error\n * or handling success cases. Only available on failed results.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * if (isErr(err)) {\n * console.log(err.error); // 'Something went wrong'\n * }\n * ```\n */\nexport interface Err<E> {\n readonly ok: false;\n readonly value?: never;\n readonly error: E;\n\n /** Transform the value (no-op for Err) */\n map<U>(fn: (value: never) => U): Err<E>;\n\n /** Transform the error if failed */\n mapErr<F>(fn: (error: E) => F): Result<never, F>;\n\n /** Pattern matching for both cases */\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U;\n\n /** Unwrap the value (asserts success, throws for Err) */\n unwrap(): never;\n\n /** Unwrap with default value */\n unwrapOr<T>(defaultValue: T): T;\n\n /** Unwrap using a fallback function */\n unwrapOrElse<T>(fn: () => T): T;\n}\n\n/**\n * Result type - either Ok<T> or Err<E>.\n *\n * A type that represents either success (Ok) or failure (Err).\n * This is inspired by Rust's Result type and provides functional\n * error handling without exceptions.\n *\n * @example\n * ```typescript\n * function divide(a: number, b: number): Result<number, string> {\n * if (b === 0) {\n * return Err('Division by zero');\n * }\n * return Ok(a / b);\n * }\n *\n * const result = divide(10, 2);\n *\n * // Pattern matching\n * const message = result.match({\n * ok: (value) => `Result: ${value}`,\n * err: (error) => `Error: ${error}`\n * });\n *\n * // Chaining\n * const doubled = result\n * .map(x => x * 2)\n * .mapErr(e => `Calculation failed: ${e}`);\n * ```\n */\nexport type Result<T, E> = Ok<T> | Err<E>;\n\n/**\n * Internal implementation of Ok result.\n */\nclass OkImpl<T> implements Ok<T> {\n readonly ok = true as const;\n readonly error = undefined as never;\n\n constructor(public readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Result<U, never> {\n return Ok(fn(this.value));\n }\n\n mapErr<F>(_fn: (error: never) => F): Ok<T> {\n return this;\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: never) => U }): U {\n return handlers.ok(this.value);\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: () => T): T {\n return this.value;\n }\n}\n\n/**\n * Internal implementation of Err result.\n */\nclass ErrImpl<E> implements Err<E> {\n readonly ok = false as const;\n readonly value = undefined as never;\n\n constructor(public readonly error: E) {}\n\n map<U>(_fn: (value: never) => U): Err<E> {\n return this;\n }\n\n mapErr<F>(fn: (error: E) => F): Result<never, F> {\n return Err(fn(this.error));\n }\n\n match<U>(handlers: { ok: (value: never) => U; err: (error: E) => U }): U {\n return handlers.err(this.error);\n }\n\n unwrap(): never {\n throw new Error(`Cannot unwrap Err: ${String(this.error)}`);\n }\n\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse<T>(fn: (error: E) => T): T {\n return fn(this.error);\n }\n}\n\n/**\n * Creates a successful Result containing a value.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * const okStr = Ok('hello');\n * const okObj = Ok({ id: 1 });\n * ```\n *\n * @param value - The value to wrap\n * @returns An Ok result containing the value\n */\nexport function Ok<T>(value: T): Ok<T> {\n return new OkImpl(value);\n}\n\n/**\n * Creates a failed Result containing an error.\n *\n * @example\n * ```typescript\n * const err = Err('Something went wrong');\n * const errNum = Err(404);\n * const errObj = Err({ code: 'NOT_FOUND' });\n * ```\n *\n * @param error - The error to wrap\n * @returns An Err result containing the error\n */\nexport function Err<E>(error: E): Err<E> {\n return new ErrImpl(error);\n}\n","/**\n * @oxog/types - Standardized error classes\n * @version 1.0.1\n * @author Ersin Koç\n */\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * These codes provide programmatic ways to identify and handle errors.\n */\nexport enum ErrorCodes {\n /** Unknown error */\n UNKNOWN = 'UNKNOWN',\n\n /** Validation error */\n VALIDATION_ERROR = 'VALIDATION_ERROR',\n\n /** Plugin-related error */\n PLUGIN_ERROR = 'PLUGIN_ERROR',\n\n /** Resource not found */\n NOT_FOUND = 'NOT_FOUND',\n\n /** Operation timed out */\n TIMEOUT = 'TIMEOUT',\n\n /** Dependency error */\n DEPENDENCY_ERROR = 'DEPENDENCY_ERROR',\n}\n\n/**\n * Base error class for all @oxog errors.\n *\n * Provides structured error information with code, message, and context.\n * All other @oxog errors inherit from this class.\n *\n * @example\n * ```typescript\n * throw new OxogError(\n * 'Database connection failed',\n * ErrorCodes.DEPENDENCY_ERROR,\n * { host: 'localhost', port: 5432 }\n * );\n * ```\n */\nexport class OxogError extends Error {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new OxogError.\n *\n * @param message - Human-readable error message\n * @param code - Error code for programmatic handling\n * @param context - Additional context about the error\n */\n constructor(\n message: string,\n public readonly code: string,\n public readonly context?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'OxogError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when validation fails.\n *\n * Used for input validation, schema validation, and type checking errors.\n *\n * @example\n * ```typescript\n * throw new ValidationError(\n * 'Invalid email format',\n * { field: 'email', value: 'not-an-email' }\n * );\n * ```\n */\nexport class ValidationError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new ValidationError.\n *\n * @param message - Human-readable error message\n * @param context - Additional context about the validation failure\n */\n constructor(\n message: string,\n public override readonly context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.VALIDATION_ERROR, context);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n\n/**\n * Error thrown when a plugin operation fails.\n *\n * Used for plugin initialization, dependency resolution, and runtime errors\n * specific to plugins.\n *\n * @example\n * ```typescript\n * throw new PluginError(\n * 'Failed to initialize cache plugin',\n * 'cache-plugin',\n * { reason: 'Redis connection failed' }\n * );\n * ```\n */\nexport class PluginError extends OxogError {\n /** Error name */\n public override readonly name: string;\n\n /**\n * Creates a new PluginError.\n *\n * @param message - Human-readable error message\n * @param pluginName - Name of the plugin that caused the error\n * @param context - Additional context about the plugin error\n */\n constructor(\n message: string,\n public readonly pluginName: string,\n context?: Record<string, unknown>\n ) {\n super(message, ErrorCodes.PLUGIN_ERROR, context ? { pluginName, ...context } : undefined);\n this.name = 'PluginError';\n Object.setPrototypeOf(this, new.target.prototype);\n Error.captureStackTrace(this, new.target);\n }\n}\n","/**\n * @oxog/types - Type guard functions\n * @version 1.0.1\n * @author Ersin Koç\n */\n\nimport type { Plugin, Kernel } from './plugin.js';\nimport type { Result, Ok, Err } from './result.js';\nimport { OxogError, ValidationError, PluginError } from './errors.js';\n\n/**\n * Type guard for Plugin.\n *\n * Checks if a value is a valid Plugin instance.\n *\n * @example\n * ```typescript\n * const plugin = { name: 'test', version: '1.0.0', install: () => {} };\n * if (isPlugin(plugin)) {\n * console.log(plugin.name); // TypeScript knows it's a Plugin\n * }\n * ```\n */\nexport function isPlugin<T>(value: unknown): value is Plugin<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Plugin<T>).name === 'string' &&\n typeof (value as Plugin<T>).version === 'string' &&\n typeof (value as Plugin<T>).install === 'function'\n );\n}\n\n/**\n * Type guard for Kernel.\n *\n * Checks if a value is a valid Kernel instance.\n *\n * @example\n * ```typescript\n * const kernel = {\n * use: (plugin) => kernel,\n * unregister: () => true,\n * getPlugin: () => undefined,\n * listPlugins: () => [],\n * hasPlugin: () => false,\n * emit: () => {},\n * on: () => () => {},\n * getContext: () => null\n * };\n * if (isKernel(kernel)) {\n * console.log(kernel.listPlugins()); // TypeScript knows it's a Kernel\n * }\n * ```\n */\nexport function isKernel<T>(value: unknown): value is Kernel<T> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Kernel<T>).use === 'function' &&\n typeof (value as Kernel<T>).unregister === 'function' &&\n typeof (value as Kernel<T>).getPlugin === 'function' &&\n typeof (value as Kernel<T>).listPlugins === 'function' &&\n typeof (value as Kernel<T>).hasPlugin === 'function' &&\n typeof (value as Kernel<T>).emit === 'function' &&\n typeof (value as Kernel<T>).on === 'function' &&\n typeof (value as Kernel<T>).getContext === 'function'\n );\n}\n\n/**\n * Type guard for OxogError.\n *\n * Checks if a value is an OxogError instance.\n *\n * @example\n * ```typescript\n * const error = new OxogError('Test', 'TEST');\n * if (isOxogError(error)) {\n * console.log(error.code); // TypeScript knows it's an OxogError\n * }\n * ```\n */\nexport function isOxogError(value: unknown): value is OxogError {\n return value instanceof OxogError;\n}\n\n/**\n * Type guard for ValidationError.\n *\n * Checks if a value is a ValidationError instance.\n *\n * @example\n * ```typescript\n * const error = new ValidationError('Invalid', { field: 'test' });\n * if (isValidationError(error)) {\n * console.log(error.context); // TypeScript knows it's a ValidationError\n * }\n * ```\n */\nexport function isValidationError(value: unknown): value is ValidationError {\n return value instanceof ValidationError;\n}\n\n/**\n * Type guard for PluginError.\n *\n * Checks if a value is a PluginError instance.\n *\n * @example\n * ```typescript\n * const error = new PluginError('Plugin failed', 'my-plugin');\n * if (isPluginError(error)) {\n * console.log(error.pluginName); // TypeScript knows it's a PluginError\n * }\n * ```\n */\nexport function isPluginError(value: unknown): value is PluginError {\n return value instanceof PluginError;\n}\n\n/**\n * Type guard for Result.\n *\n * Checks if a value is a Result instance (either Ok or Err).\n *\n * @example\n * ```typescript\n * const result = Ok(42);\n * if (isResult(result)) {\n * // result is Ok<number, unknown>\n * }\n *\n * const err = Err('error');\n * if (isResult(err)) {\n * // err is Err<unknown, string>\n * }\n * ```\n */\nexport function isResult<T, E>(value: unknown): value is Result<T, E> {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Result<T, E>).ok === 'boolean' &&\n (('value' in (value as object)) || ('error' in (value as object)))\n );\n}\n\n/**\n * Type guard for Ok result.\n *\n * Checks if a Result is an Ok (success) instance.\n *\n * @example\n * ```typescript\n * const ok = Ok(42);\n * if (isOk(ok)) {\n * console.log(ok.value); // TypeScript knows it's Ok\n * }\n * ```\n */\nexport function isOk<T>(value: Result<T, unknown>): value is Ok<T> {\n return isResult(value) && value.ok === true;\n}\n\n/**\n * Type guard for Err result.\n *\n * Checks if a Result is an Err (failure) instance.\n *\n * @example\n * ```typescript\n * const err = Err('error');\n * if (isErr(err)) {\n * console.log(err.error); // TypeScript knows it's Err\n * }\n * ```\n */\nexport function isErr<E>(value: Result<unknown, E>): value is Err<E> {\n return isResult(value) && value.ok === false;\n}\n","/**\n * @oxog/types - Well-known symbols and constants\n * @version 1.0.1\n * @author Ersin Koç\n */\n\nimport { ErrorCodes } from './errors.js';\n\n/**\n * Well-known symbol for @oxog plugins.\n *\n * Use this symbol to mark objects as @oxog plugins.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myPlugin = {\n * [OXOG_PLUGIN]: true,\n * name: 'my-plugin',\n * version: '1.0.0',\n * install: () => {}\n * };\n * ```\n */\nexport const OXOG_PLUGIN = Symbol.for('@oxog/plugin');\n\n/**\n * Well-known symbol for @oxog kernels.\n *\n * Use this symbol to mark objects as @oxog kernels.\n * This enables runtime detection and validation.\n *\n * @example\n * ```typescript\n * const myKernel = {\n * [OXOG_KERNEL]: true,\n * use: (plugin) => kernel,\n * // ... other methods\n * };\n * ```\n */\nexport const OXOG_KERNEL = Symbol.for('@oxog/kernel');\n\n/**\n * @oxog/types package version.\n *\n * Current version of the @oxog/types package.\n *\n * @example\n * ```typescript\n * console.log(`Using @oxog/types v${OXOG_VERSION}`);\n * ```\n */\nexport const OXOG_VERSION = '1.0.1';\n\n/**\n * Standard error codes for @oxog ecosystem.\n *\n * Re-exported from errors module for convenience.\n *\n * @example\n * ```typescript\n * throw new OxogError('Not found', ErrorCodes.NOT_FOUND);\n * ```\n */\nexport { ErrorCodes };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxog/types",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Shared TypeScript types, interfaces, and utilities for the @oxog ecosystem",
5
5
  "author": "Ersin Koç",
6
6
  "license": "MIT",
@@ -44,13 +44,13 @@
44
44
  "prepare": "npm run build"
45
45
  },
46
46
  "devDependencies": {
47
- "typescript": "^5.0.0",
48
- "vitest": "^2.0.0",
49
- "@vitest/coverage-v8": "^2.0.0",
50
- "tsup": "^8.0.0",
51
47
  "@types/node": "^20.0.0",
48
+ "@vitest/coverage-v8": "^2.0.0",
49
+ "eslint": "^9.0.0",
52
50
  "prettier": "^3.0.0",
53
- "eslint": "^9.0.0"
51
+ "tsup": "^8.0.0",
52
+ "typescript": "^5.0.0",
53
+ "vitest": "^2.0.0"
54
54
  },
55
55
  "publishConfig": {
56
56
  "access": "public"
@@ -62,5 +62,4 @@
62
62
  "bugs": {
63
63
  "url": "https://github.com/ersinkoc/types/issues"
64
64
  },
65
- "homepage": "https://types.oxog.dev"
66
- }
65
+ "homepage": "https://types.oxog.dev"}