{"version":3,"sources":["../../src/services/Service.ts"],"sourcesContent":["import { Err } from '@lskjs/err';\nimport { log } from '@lskjs/log/log';\nimport axios from 'axios';\nimport { map } from 'fishbird';\n\ntype SecretFile = {\n  name: string;\n  filename: string;\n  credType?: string;\n  content?: string;\n  handler: (any) => Record<string, any>;\n};\ntype Secrets = {\n  secrets?: Record<string, string>;\n  variables?: Record<string, string>;\n  files?: Array<SecretFile>;\n  hooks?: Array<any>;\n};\n\nexport class Service {\n  projectId?: string;\n  projectName?: string;\n  projectPath?: string;\n  projectCredsUrl?: string;\n\n  token: string;\n  server: string;\n  force: boolean;\n\n  client: axios.AxiosInstance;\n\n  constructor(options) {\n    Object.assign(this, options);\n    this.checkConfig();\n    const clientOptions = {\n      baseURL: this.getBaseUrl(),\n      headers: this.getHeaders(),\n    };\n    this.client = axios.create(clientOptions);\n    // TODO: сделать такой интерцептор\n    // .catch((err) => {\n    //   throw new Err(err.message, { data: err?.response?.data });\n    //   // console.log(err.response.data);\n    // });\n  }\n\n  checkConfig() {\n    throw new Err('NOT_IMPLEMENTED');\n  }\n  getBaseUrl() {\n    return null;\n  }\n  getHeaders() {\n    return {};\n  }\n  getServiceLink() {\n    return null;\n  }\n  getProjectName() {\n    return this.projectName;\n  }\n  getProjectId() {\n    return this.projectId;\n  }\n  getProjectPath() {\n    return this.projectPath;\n  }\n  getProjectUrl() {\n    return null;\n  }\n  getProjectCredsUrl() {\n    return this.projectCredsUrl;\n  }\n  getProjectCICDSettingURL() {\n    return null;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  async uploadSecret(key: string, content: string) {\n    throw new Err('NOT_IMPLEMENTED');\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  async uploadVariable(key: string, content: string) {\n    throw new Err('NOT_IMPLEMENTED');\n  }\n\n  async removeOldHooks() {}\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  async uploadHook(dataHook: any) {}\n\n  async uploadHooks(env: Secrets): Promise<void> {\n    if (!env) throw new Err('!env');\n    const { hooks = [] } = env;\n    try {\n      await this.removeOldHooks();\n    } catch (e) {\n      log.error(`[ERR] Old hooks removing failed:`, e.message);\n    }\n\n    await map(hooks, async (dataHook, index) => {\n      try {\n        await this.uploadHook(dataHook);\n        log.info(`[OK] Hook ${index} uploaded`);\n      } catch (e) {\n        log.error(`[ERR] Hook ${index} not uploaded:`, e.message);\n      }\n    });\n  }\n\n  async uploadAll(env: Secrets) {\n    if (!env) throw new Err('!env');\n    const { secrets = {}, variables = {}, files = [] } = env;\n    await this.uploadHooks(env);\n    await map(Object.entries(secrets), async ([key, value]) => {\n      try {\n        await this.uploadSecret(key, value);\n        log.info(`[OK] Secret ${key} uploaded`);\n      } catch (e) {\n        log.error(`[ERR] Secret ${key} not uploaded, because`, e.message);\n        log.error(e);\n      }\n    });\n    await map(Object.entries(variables), async ([key, value]) => {\n      try {\n        await this.uploadVariable(key, value);\n        log.info(`[OK] Variable ${key} uploaded`);\n      } catch (e) {\n        log.error(`[ERR] Variable ${key} not uploaded, because`, e.message);\n        // log.error(e);\n      }\n    });\n    await map(files, async ({ name, credType, content }: any) => {\n      const key = name;\n      const value = content;\n      try {\n        if (credType === 'variable') {\n          await this.uploadVariable(key, value);\n        } else if (credType === 'secret') {\n          await this.uploadSecret(key, value);\n        } else if (credType === 'skip') {\n          log.debug(`[SKIP] File ${key} uploaded as ${credType}`);\n          return;\n        } else {\n          throw new Err('unknown credType', { credType });\n        }\n        log.info(`[OK] File ${key} uploaded as ${credType}`);\n      } catch (e) {\n        log.error(`[ERR] File ${key} not uploaded as ${credType}, because`, e.message);\n        // log.error(e);\n      }\n    });\n  }\n}\n"],"mappings":"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","names":["Err","log","axios","map","Service","projectId","projectName","projectPath","projectCredsUrl","token","server","force","client","constructor","options","Object","assign","checkConfig","clientOptions","baseURL","getBaseUrl","headers","getHeaders","axios","create","Err","getServiceLink","getProjectName","getProjectId","getProjectPath","getProjectUrl","getProjectCredsUrl","getProjectCICDSettingURL","uploadSecret","key","content","uploadVariable","removeOldHooks","uploadHook","dataHook","uploadHooks","env","hooks","e","log","error","message","map","index","info","uploadAll","secrets","variables","files","entries","value","name","credType","debug"]}