{"version":3,"sources":["/home/runner/work/loglayer/loglayer/packages/transports/google-cloud-logging/dist/index.cjs","../src/GoogleCloudLoggingTransport.ts"],"names":[],"mappings":"AAAA;ACGA,gDAA2D;AAmBpD,IAAM,4BAAA,EAAN,MAAA,QAA0C,yBAA6B;AAAA,EACpE;AAAA,EACA;AAAA,EAER,WAAA,CAAY,MAAA,EAA2C;AACrD,IAAA,KAAA,CAAM,MAAM,CAAA;AACZ,IAAA,IAAA,CAAK,cAAA,EAAgB,MAAA,CAAO,cAAA,GAAiB,CAAC,CAAA;AAC9C,IAAA,IAAA,CAAK,wBAAA,mBAA0B,MAAA,CAAO,uBAAA,UAA2B,CAAC,GAAA;AAAA,EACpE;AAAA,EAEQ,WAAA,CAAY,KAAA,EAA6B;AAC/C,IAAA,OAAA,CAAQ,KAAA,EAAO;AAAA,MACb,KAAK,mBAAA,CAAS,KAAA;AACZ,QAAA,OAAO,UAAA;AAAA,MACT,KAAK,mBAAA,CAAS,KAAA;AACZ,QAAA,OAAO,OAAA;AAAA,MACT,KAAK,mBAAA,CAAS,IAAA;AACZ,QAAA,OAAO,SAAA;AAAA,MACT,KAAK,mBAAA,CAAS,IAAA;AACZ,QAAA,OAAO,MAAA;AAAA,MACT,KAAK,mBAAA,CAAS,KAAA;AACZ,QAAA,OAAO,OAAA;AAAA,MACT,KAAK,mBAAA,CAAS,KAAA;AACZ,QAAA,OAAO,OAAA;AAAA,MACT,OAAA;AACE,QAAA,OAAO,SAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,qBAAA,CAAsB,IAAA,EAA+B;AAC3D,IAAA,MAAM,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AAC7B,IAAA,MAAM,SAAA,EAAoC,CAAC,CAAA;AAE3C,IAAA,IAAA,CAAA,MAAW,IAAA,GAAO,IAAA,EAAM;AACtB,MAAA,GAAA,CAAI,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAAS,GAAG,CAAA,EAAG;AAC9C,QAAA,QAAA,CAAS,GAAG,EAAA,EAAI,IAAA,CAAK,GAAG,CAAA;AACxB,QAAA,OAAO,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAEA,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,YAAA,CAAa,EAAE,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA,EAAmC;AAClF,IAAA,MAAM,SAAA,EAAW,KAAA,GAAQ,QAAA,EAAU,KAAA,EAAO,CAAC,CAAA;AAC3C,IAAA,MAAM,SAAA,EAAW,IAAA,CAAK,qBAAA,CAAsB,QAAQ,CAAA;AAEpD,IAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,KAAA;AAAA,MACxB;AAAA,QACE,GAAG,IAAA,CAAK,aAAA;AAAA,QACR,GAAG,QAAA;AAAA,QACH,QAAA,EAAU,IAAA,CAAK,WAAA,CAAY,QAAQ,CAAA;AAAA,QACnC,SAAA,kBAAW,IAAI,IAAA,CAAK;AAAA,MACtB,CAAA;AAAA,MACA;AAAA,QACE,GAAG,QAAA;AAAA,QACH,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,GAAG;AAAA,MAC5B;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAEvB,IAAA,GAAA,CAAI,KAAA,GAAQ,OAAA,EAAS;AACnB,MAAA,OAAO,CAAC,IAAA,EAAM,QAAQ,CAAA;AAAA,IACxB;AAEA,IAAA,OAAO,CAAC,QAAQ,CAAA;AAAA,EAClB;AACF,CAAA;AD7BA;AACE;AACF,kEAAC","file":"/home/runner/work/loglayer/loglayer/packages/transports/google-cloud-logging/dist/index.cjs","sourcesContent":[null,"import type { Log, LogSync } from \"@google-cloud/logging\";\nimport type { LogEntry } from \"@google-cloud/logging/build/src/entry.js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport, LogLevel, type LogLevelType } from \"@loglayer/transport\";\n\nexport interface GoogleCloudLoggingTransportConfig extends LogLayerTransportConfig<Log | LogSync> {\n  /**\n   * The root level data to include for all log entries.\n   * \"severity\", \"timestamp\" and \"jsonPayload\" are already populated by the transport.\n   * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry\n   */\n  rootLevelData?: Omit<\n    LogEntry,\n    \"severity\" | \"timestamp\" | \"receiveTimestamp\" | \"jsonPayload\" | \"textPayload\" | \"protoPayload\"\n  >;\n\n  /**\n   * List of LogLayer metadata fields to merge into `rootLevelData` when creating the log entry.\n   */\n  rootLevelMetadataFields?: Array<string>;\n}\n\nexport class GoogleCloudLoggingTransport extends BaseTransport<Log | LogSync> {\n  private rootLevelData: GoogleCloudLoggingTransportConfig[\"rootLevelData\"];\n  private rootLevelMetadataFields: Array<string>;\n\n  constructor(config: GoogleCloudLoggingTransportConfig) {\n    super(config);\n    this.rootLevelData = config.rootLevelData || {};\n    this.rootLevelMetadataFields = config.rootLevelMetadataFields ?? [];\n  }\n\n  private mapLogLevel(level: LogLevelType): string {\n    switch (level) {\n      case LogLevel.fatal:\n        return \"CRITICAL\";\n      case LogLevel.error:\n        return \"ERROR\";\n      case LogLevel.warn:\n        return \"WARNING\";\n      case LogLevel.info:\n        return \"INFO\";\n      case LogLevel.debug:\n        return \"DEBUG\";\n      case LogLevel.trace:\n        return \"DEBUG\";\n      default:\n        return \"DEFAULT\";\n    }\n  }\n\n  private extractLogEntryFields(data: Record<string, unknown>) {\n    const keys = Object.keys(data);\n    const metadata: Record<string, unknown> = {};\n\n    for (const key of keys) {\n      if (this.rootLevelMetadataFields.includes(key)) {\n        metadata[key] = data[key];\n        delete data[key];\n      }\n    }\n\n    return metadata;\n  }\n\n  shipToLogger({ data, hasData, logLevel, messages }: LogLayerTransportParams): any[] {\n    const safeData = data && hasData ? data : {};\n    const metadata = this.extractLogEntryFields(safeData);\n\n    const entry = this.logger.entry(\n      {\n        ...this.rootLevelData,\n        ...metadata,\n        severity: this.mapLogLevel(logLevel),\n        timestamp: new Date(),\n      },\n      {\n        ...safeData,\n        message: messages.join(\" \"),\n      },\n    );\n\n    this.logger.write(entry);\n\n    if (data && hasData) {\n      return [data, messages];\n    }\n\n    return [messages];\n  }\n}\n"]}