All files / src index.ts

100% Statements 21/21
100% Branches 0/0
100% Functions 15/15
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115                                                                                                              45x         12x         25x         16x         19x         27x                                                                    
/**
 * @module
 *
 * Public API of the kernel.
 *
 * @remarks
 * The entire published surface. `package.json#exports` points here and TypeDoc
 * documents from here, so a symbol is API when it appears below and internal
 * when it does not. Keep it a barrel — behaviour belongs in `core/`.
 *
 * ## Layers
 *
 * | Directory     | Holds                                                | May import from   |
 * | ------------- | ---------------------------------------------------- | ----------------- |
 * | `index.ts`    | re-exports only                                      | every layer       |
 * | `core/`       | behaviour: `Service`, `Logger`, the config engine    | every layer below |
 * | `types/`      | shapes callers receive or supply, incl. capabilities | nothing in `src/` |
 * | `constants/`  | values that never depend on runtime state            | nothing in `src/` |
 * | `exceptions/` | the faults raised                                    | nothing in `src/` |
 * | `security/`   | primitives that exist to be safe                     | nothing in `src/` |
 * | `utils/`      | helpers any library could use                        | nothing in `src/` |
 *
 * Dependency arrows point *into* the leaf layers and never back out. A lint rule
 * enforces it, because a convention only survives as long as everyone remembers
 * it, and the import that breaks it looks like every other import at the point
 * it is written.
 *
 * ## What belongs in this package
 *
 * The layer everything else depends on, which holds only while it names no
 * vendor, no runtime, and no HTTP framework. Anything here that seems to need a
 * vendor SDK, a runtime's types, or an HTTP framework belongs in an adapter
 * package instead — a second lint rule enforces that too.
 *
 * ## Quick start
 *
 * ```ts
 * import { configure, Logger, systemDefaults } from '@bayudwiyansatria/core'
 * import { platformDefaults } from '<the-adapter-package>'
 *
 * // Once, at startup, before anything resolves a setting.
 * configure({ ...systemDefaults, ...platformDefaults }, overrides)
 *
 * const log = Logger.fromEnv(env, { service: 'ArticleService' })
 * log.info('ready')
 * ```
 *
 * @author Bayu Dwiyan Satria
 * @version 1.0.0
 * @since 1.0.0
 */
 
/**
 * Core
 */
export { configure, Logger, resolve, Service } from '@/core'
 
/**
 * Core — implementations that satisfy a capability without providing it
 */
export { NoopCacheStore, NoopMessageQueue, NoopRateLimiter, NoopTelemetrySink } from '@/core'
 
/**
 * Constants
 */
export { systemDefaults } from '@/constants'
 
/**
 * Exceptions
 */
export { ConfigurationError, MissingCapabilityError } from '@/exceptions'
 
/**
 * Security
 */
export { timingSafeEqual } from '@/security'
 
/**
 * Utilities
 */
export { Signature, Text, Time } from '@/utils'
 
/**
 * Types
 */
export type {
  APIResponse,
  Capability,
  CacheStore,
  CoordinationStore,
  DataStore,
  InferenceEngine,
  LogContext,
  LoggingSettings,
  LogLevel,
  MessageQueue,
  ObjectStore,
  Overrides,
  RateLimiter,
  RequestFacts,
  RequestMetadata,
  RequestMetric,
  SecuritySettings,
  SqlConnectionProvider,
  SqlCredentials,
  SqlStatement,
  SqlTarget,
  SqlWriteResult,
  StoredObject,
  SystemConfiguration,
  TelemetrySink,
  VectorIndex,
  VectorMatch
} from '@/types'