{"version":3,"file":"index.node.cjs","sources":["../src/template.ts"],"sourcesContent":["import { Template } from \"@kosko/template\";\nimport { join } from \"node:path\";\nimport { BUILD_TARGET } from \"@kosko/build-scripts\";\n\n/**\n * @public\n */\nexport interface Options {\n  name: string;\n  image: string;\n  type: string;\n  servicePort: number;\n  containerPort: number;\n  replicas: number;\n  esm: boolean;\n}\n\nconst esmHeader = `import { Deployment } from \"kubernetes-models/apps/v1/Deployment\";\nimport { Service } from \"kubernetes-models/v1/Service\";`;\n\nconst cjsHeader = `\"use strict\";\n\nconst { Deployment } = require(\"kubernetes-models/apps/v1/Deployment\");\nconst { Service } = require(\"kubernetes-models/v1/Service\");`;\n\n/**\n * @public\n */\nexport const template: Template<Options> = {\n  description: \"Create a new component including a deployment and a service\",\n  options: {\n    name: {\n      type: \"string\",\n      description: \"Name of deployment and service\",\n      required: true\n    },\n    image: {\n      type: \"string\",\n      description: \"Container image\",\n      required: true\n    },\n    type: {\n      type: \"string\",\n      description: \"Service type\",\n      default: \"ClusterIP\"\n    },\n    servicePort: {\n      type: \"number\",\n      description: \"Service port\",\n      default: 80\n    },\n    containerPort: {\n      type: \"number\",\n      description: \"Container port\",\n      default: 80\n    },\n    replicas: {\n      type: \"number\",\n      description: \"Number of replicas\",\n      default: 1\n    },\n    esm: {\n      type: \"boolean\",\n      description: \"Generate ECMAScript module (ESM) files\",\n      default: BUILD_TARGET !== \"node\"\n    }\n  },\n  async generate({\n    name,\n    image,\n    type,\n    servicePort,\n    containerPort,\n    replicas,\n    esm\n  }) {\n    return {\n      files: [\n        {\n          path: join(\"components\", name + \".js\"),\n          content: `${esm ? esmHeader : cjsHeader}\n\nconst metadata = { name: \"${name}\" };\nconst labels = { app: \"${name}\" };\n\nconst deployment = new Deployment({\n  metadata,\n  spec: {\n    replicas: ${replicas},\n    selector: {\n      matchLabels: labels\n    },\n    template: {\n      metadata: {\n        labels\n      },\n      spec: {\n        containers: [\n          {\n            image: \"${image}\",\n            name: \"${name}\",\n            ports: [{\n              containerPort: ${containerPort}\n            }]\n          }\n        ]\n      }\n    }\n  }\n});\n\nconst service = new Service({\n  metadata,\n  spec: {\n    selector: labels,\n    type: \"${type}\",\n    ports: [\n      {\n        port: ${servicePort},\n        targetPort: ${containerPort}\n      }\n    ]\n  }\n});\n\n${esm ? \"export default\" : \"module.exports =\"} [deployment, service];\n`\n        }\n      ]\n    };\n  }\n};\n"],"names":["esmHeader","cjsHeader","template","description","options","name","type","required","image","default","servicePort","containerPort","replicas","esm","BUILD_TARGET","generate","files","path","join","content"],"mappings":";;;;;;AAiBA,IAAMA,YAAY,CAAC;uDACoC,CAAC,EAElDC,YAAY,CAAC;;;4DAGyC,CAAC,CAAA;MAKhDC,QAA8B,GAAA;IACzCC,WAAa,EAAA,6DAAA;IACbC,OAAS,EAAA;QACPC,IAAM,EAAA;YACJC,IAAM,EAAA,QAAA;YACNH,WAAa,EAAA,gCAAA;AACbI,YAAAA,QAAAA,EAAU,CAAA,CAAA;AACZ,SAAA;QACAC,KAAO,EAAA;YACLF,IAAM,EAAA,QAAA;YACNH,WAAa,EAAA,iBAAA;AACbI,YAAAA,QAAAA,EAAU,CAAA,CAAA;AACZ,SAAA;QACAD,IAAM,EAAA;YACJA,IAAM,EAAA,QAAA;YACNH,WAAa,EAAA,cAAA;YACbM,OAAS,EAAA,WAAA;AACX,SAAA;QACAC,WAAa,EAAA;YACXJ,IAAM,EAAA,QAAA;YACNH,WAAa,EAAA,cAAA;YACbM,OAAS,EAAA,EAAA;AACX,SAAA;QACAE,aAAe,EAAA;YACbL,IAAM,EAAA,QAAA;YACNH,WAAa,EAAA,gBAAA;YACbM,OAAS,EAAA,EAAA;AACX,SAAA;QACAG,QAAU,EAAA;YACRN,IAAM,EAAA,QAAA;YACNH,WAAa,EAAA,oBAAA;YACbM,OAAS,EAAA,CAAA;AACX,SAAA;QACAI,GAAK,EAAA;YACHP,IAAM,EAAA,SAAA;YACNH,WAAa,EAAA,wCAAA;AACbM,YAAAA,OAAAA,EAASK,MAAAA,KAAAA,YAAAA;AACX,SAAA;AACF,KAAA;AACMC,IAAAA,QAAAA,EAAN,OAAe,EACbV,IAAI,EACJG,KAAK,EACLF,IAAI,EACJI,WAAW,EACXC,aAAa,EACbC,QAAQ,EACRC,GAAG,EACJ,IACQ;YACLG,KAAO,EAAA;AACL,gBAAA;oBACEC,IAAMC,EAAAA,cAAAA,CAAK,cAAcb,IAAO,GAAA,KAAA,CAAA;AAChCc,oBAAAA,OAAAA,EAAS,CAAC,EAAEN,GAAMb,GAAAA,SAAAA,GAAYC,SAAU,CAAA;;AAExB,0BAAA,EAAEI,IAAK,CAAA;AACV,uBAAA,EAAEA,IAAK,CAAA;;;;;AAKhB,cAAA,EAAEO,QAAS,CAAA;;;;;;;;;;;AAWL,oBAAA,EAAEJ,KAAM,CAAA;AACT,mBAAA,EAAEH,IAAK,CAAA;;AAEG,6BAAA,EAAEM,aAAc,CAAA;;;;;;;;;;;;;AAalC,WAAA,EAAEL,IAAK,CAAA;;;AAGJ,cAAA,EAAEI,WAAY,CAAA;AACR,oBAAA,EAAEC,aAAc,CAAA;;;;;;AAMpC,EAAEE,GAAAA,GAAM,mBAAmB,kBAAmB,CAAA;AAC9C,CAAC;AACO,iBAAA;AACD,aAAA;SACH,CAAA;AAEJ;;;;"}