{"version":3,"sources":["../../src/core/header.ts"],"sourcesContent":["import Schema from \"../schema/schema\";\r\nimport IODefinitions from './definitions';\r\n\r\n/**\r\n * IOHeader contains the header section of an Internet Object document.\r\n *\r\n * The header stores:\r\n * - Schema definitions (prefixed with $)\r\n * - Variables (prefixed with @)\r\n * - Regular key-value metadata\r\n * - The default schema for the document's data sections\r\n *\r\n * Features:\r\n * - Schema resolution and merging from multiple sources\r\n * - Definition inheritance via merge() for document composition\r\n * - JSON serialization of non-schema, non-variable definitions\r\n *\r\n * @example\r\n * ```typescript\r\n * // Header from:\r\n * // ~ @yes: T\r\n * // ~ $person: {name: string, age: int}\r\n * // ~ $schema: {items: [$person]}\r\n *\r\n * const header = new IOHeader();\r\n * header.definitions.set('@yes', true);\r\n * header.definitions.set('$person', personSchema);\r\n * header.schema = itemsSchema;\r\n * ```\r\n */\r\nclass IOHeader {\r\n  private _schema: Schema | null = null;\r\n  private _definitions: IODefinitions;\r\n\r\n  constructor() {\r\n    this._definitions = new IODefinitions();\r\n  }\r\n\r\n  /**\r\n   * Gets the active default schema for the document.\r\n   * If a specific schema is set, it is returned.\r\n   * Otherwise, returns the default schema ($schema) from definitions.\r\n   */\r\n  get schema(): Schema | null {\r\n    return this._schema || this._definitions.defaultSchema;\r\n  }\r\n\r\n  /**\r\n   * Explicitly sets the default schema for the document.\r\n   * This overrides the default schema found in definitions.\r\n   * @param value - The Schema instance to set.\r\n   */\r\n  set schema(value: Schema | null) {\r\n    this._schema = value;\r\n  }\r\n\r\n  /**\r\n   * Gets the Definitions object managed by this header.\r\n   */\r\n  get definitions(): IODefinitions {\r\n    return this._definitions;\r\n  }\r\n\r\n  /**\r\n   * Merges another IOHeader into this one.\r\n   *\r\n   * @param other - The other IOHeader to merge from.\r\n   * @param override - If true, definitions and schema from 'other' overwrite existing ones.\r\n   */\r\n  merge(other: IOHeader, override: boolean = false) {\r\n    if (override && other.schema) {\r\n      this._schema = other.schema;\r\n    }\r\n    if (other.definitions) {\r\n      this._definitions.merge(other.definitions, override);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Return a clean object for nodejs console logging.\r\n   */\r\n  [Symbol.for('nodejs.util.inspect.custom')]() {\r\n    return {\r\n      definitions: this._definitions,\r\n      schema: this._schema\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Converts the header definitions to a plain JavaScript object.\r\n   * Note: Variables (@) and schemas ($) are conceptually metadata/definitions\r\n   * and are typically included in the output object structure.\r\n   *\r\n   * @returns A plain JavaScript object representing the header definitions.\r\n   */\r\n  toObject() {\r\n    return this._definitions.toObject();\r\n  }\r\n\r\n  /**\r\n   * Alias for `toObject()`.\r\n   * Provides compatibility with `JSON.stringify()`.\r\n   */\r\n  toJSON() {\r\n    return this.toObject();\r\n  }\r\n}\r\n\r\nexport default IOHeader;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,yBAA0B;AA6B1B,MAAM,SAAS;AAAA,EACL,UAAyB;AAAA,EACzB;AAAA,EAER,cAAc;AACZ,SAAK,eAAe,IAAI,mBAAAA,QAAc;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,SAAwB;AAC1B,WAAO,KAAK,WAAW,KAAK,aAAa;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAO,OAAsB;AAC/B,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,cAA6B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,OAAiB,WAAoB,OAAO;AAChD,QAAI,YAAY,MAAM,QAAQ;AAC5B,WAAK,UAAU,MAAM;AAAA,IACvB;AACA,QAAI,MAAM,aAAa;AACrB,WAAK,aAAa,MAAM,MAAM,aAAa,QAAQ;AAAA,IACrD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,OAAO,IAAI,4BAA4B,CAAC,IAAI;AAC3C,WAAO;AAAA,MACL,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,WAAW;AACT,WAAO,KAAK,aAAa,SAAS;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS;AACP,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEA,IAAO,iBAAQ;","names":["IODefinitions"]}