@mochabug/adaptkit 1.0.0-beta.3 → 1.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var k={name:"@mochabug/adaptkit",version:"1.0.0-beta.3"};import m from"chalk";import{program as N}from"commander";import wn from"figlet";import Bn from"fs";import _n from"is-valid-hostname";import Ln from"path";import En from"semver";import In from"update-notifier";import{confirm as Xt,input as Qt,select as en}from"@inquirer/prompts";import Fe from"chalk";import tn from"fs";import{ServiceType as Et}from"@protobuf-ts/runtime-rpc";import{WireType as c}from"@protobuf-ts/runtime";import{UnknownFieldHandler as v}from"@protobuf-ts/runtime";import{reflectionMergePartial as I}from"@protobuf-ts/runtime";import{MessageType as S}from"@protobuf-ts/runtime";var _e=(n=>(n[n.UNSPECIFIED=0]="UNSPECIFIED",n[n.ACTION=1]="ACTION",n[n.BROWSER=2]="BROWSER",n[n.CRON_TRIGGER=3]="CRON_TRIGGER",n[n.EXTERNAL_TRIGGER=4]="EXTERNAL_TRIGGER",n))(_e||{}),ze=(a=>(a[a.UNSPECIFIED=0]="UNSPECIFIED",a[a.SECRET=1]="SECRET",a[a.STRING=2]="STRING",a[a.SWITCH=3]="SWITCH",a))(ze||{}),Ke=(t=>(t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.RS256=1]="RS256",t))(Ke||{}),Ge=(n=>(n[n.UNSPECIFIED=0]="UNSPECIFIED",n[n.AUTHORIZATION_CODE=1]="AUTHORIZATION_CODE",n[n.CLIENT_CREDENTIALS=2]="CLIENT_CREDENTIALS",n[n.JWT_BEARER=3]="JWT_BEARER",n[n.SAML2_BEARER=4]="SAML2_BEARER",n))(Ge||{}),He=(p=>(p[p.UNSPECIFIED=0]="UNSPECIFIED",p[p.BASIC=1]="BASIC",p[p.FORM=2]="FORM",p[p.PRIVATE_KEY_JWT=3]="PRIVATE_KEY_JWT",p[p.MTLS=4]="MTLS",p[p.SAML2_BEARER=5]="SAML2_BEARER",p))(He||{}),he=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.UploadPluginRequest",[{no:1,name:"manifest",kind:"message",oneof:"data",T:()=>E},{no:2,name:"file",kind:"message",oneof:"data",T:()=>ue}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.data={oneofKind:void 0},e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.data={oneofKind:"manifest",manifest:E.internalBinaryRead(e,e.uint32(),i,n.data.manifest)};break;case 2:n.data={oneofKind:"file",file:ue.internalBinaryRead(e,e.uint32(),i,n.data.file)};break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.data.oneofKind==="manifest"&&E.internalBinaryWrite(e.data.manifest,t.tag(1,c.LengthDelimited).fork(),i).join(),e.data.oneofKind==="file"&&ue.internalBinaryWrite(e.data.file,t.tag(2,c.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},It=new he,be=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.UploadPluginResponse",[])}create(e){let t=globalThis.Object.create(this.messagePrototype);return e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){return a??this.create()}internalBinaryWrite(e,t,i){let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},St=new be,ye=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.File",[{no:1,name:"path",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:2,name:"data",kind:"scalar",T:12,options:{"buf.validate.field":{bytes:{minLen:"1",maxLen:"40000000"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.path="",t.data=new Uint8Array(0),e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.path=e.string();break;case 2:n.data=e.bytes();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.path!==""&&t.tag(1,c.LengthDelimited).string(e.path),e.data.length&&t.tag(2,c.LengthDelimited).bytes(e.data);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},ue=new ye,ke=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Manifest",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"version",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"150",pattern:"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"}}}},{no:3,name:"label",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:4,name:"description",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"250"}}}},{no:5,name:"organization",kind:"scalar",T:9,options:{"buf.validate.field":{string:{uuid:!0}}}},{no:6,name:"homepage",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:7,name:"repository",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:8,name:"bugs",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{cel:[{id:"valid_email_or_url",message:"bugs must be a valid email or URL",expression:"size(this) >= 2 && size(this) <= 4096 && (this.isEmail() || this.matches('^https://[a-zA-Z0-9.-]+(?:\\\\.[a-zA-Z]{2,})(?:/.*)?$'))"}],ignore:"IGNORE_EMPTY"}}},{no:9,name:"author",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:10,name:"logo",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(gif|jpg|jpeg|jfif|pjpeg|pjp|png|svg|webp|avif)$"}}}},{no:11,name:"executors",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(mjs|js)$"}}}},{no:12,name:"configurators",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(mjs|js)$"}}}},{no:13,name:"assets",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:14,name:"cdn",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:15,name:"vertices",kind:"message",repeat:1,T:()=>me,options:{"buf.validate.field":{cel:[{id:"vertex_unique_names",message:"a name cannot appear more than once",expression:"this.map(vertex, vertex.name).unique()"}],repeated:{minItems:"1",maxItems:"100"}}}},{no:16,name:"plugin_oauth2",kind:"message",repeat:1,T:()=>F,options:{"buf.validate.field":{cel:[{id:"plugin_oauth2.oauth_unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20",items:{cel:[{id:"plugin_oauth2.oauth2.client_id",message:"The client_id property must be set",expression:"has(this.client_id)"}]}}}}},{no:17,name:"plugin_variables",kind:"message",repeat:1,T:()=>C,options:{"buf.validate.field":{cel:[{id:"vars_unique_names",message:"a name cannot appear more than once",expression:"this.map(variable, variable.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:18,name:"plugin_mtls",kind:"message",repeat:1,T:()=>A,options:{"buf.validate.field":{cel:[{id:"mtls_unique_names",message:"a name cannot appear more than once",expression:"this.map(mtls, mtls.name).unique()"}],repeated:{minItems:"0",maxItems:"20"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.version="",t.label="",t.description="",t.organization="",t.executors="",t.vertices=[],t.pluginOauth2=[],t.pluginVariables=[],t.pluginMtls=[],e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.version=e.string();break;case 3:n.label=e.string();break;case 4:n.description=e.string();break;case 5:n.organization=e.string();break;case 6:n.homepage=e.string();break;case 7:n.repository=e.string();break;case 8:n.bugs=e.string();break;case 9:n.author=e.string();break;case 10:n.logo=e.string();break;case 11:n.executors=e.string();break;case 12:n.configurators=e.string();break;case 13:n.assets=e.string();break;case 14:n.cdn=e.string();break;case 15:n.vertices.push(me.internalBinaryRead(e,e.uint32(),i));break;case 16:n.pluginOauth2.push(F.internalBinaryRead(e,e.uint32(),i));break;case 17:n.pluginVariables.push(C.internalBinaryRead(e,e.uint32(),i));break;case 18:n.pluginMtls.push(A.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,c.LengthDelimited).string(e.name),e.version!==""&&t.tag(2,c.LengthDelimited).string(e.version),e.label!==""&&t.tag(3,c.LengthDelimited).string(e.label),e.description!==""&&t.tag(4,c.LengthDelimited).string(e.description),e.organization!==""&&t.tag(5,c.LengthDelimited).string(e.organization),e.homepage!==void 0&&t.tag(6,c.LengthDelimited).string(e.homepage),e.repository!==void 0&&t.tag(7,c.LengthDelimited).string(e.repository),e.bugs!==void 0&&t.tag(8,c.LengthDelimited).string(e.bugs),e.author!==void 0&&t.tag(9,c.LengthDelimited).string(e.author),e.logo!==void 0&&t.tag(10,c.LengthDelimited).string(e.logo),e.executors!==""&&t.tag(11,c.LengthDelimited).string(e.executors),e.configurators!==void 0&&t.tag(12,c.LengthDelimited).string(e.configurators),e.assets!==void 0&&t.tag(13,c.LengthDelimited).string(e.assets),e.cdn!==void 0&&t.tag(14,c.LengthDelimited).string(e.cdn);for(let n=0;n<e.vertices.length;n++)me.internalBinaryWrite(e.vertices[n],t.tag(15,c.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginOauth2.length;n++)F.internalBinaryWrite(e.pluginOauth2[n],t.tag(16,c.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginVariables.length;n++)C.internalBinaryWrite(e.pluginVariables[n],t.tag(17,c.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginMtls.length;n++)A.internalBinaryWrite(e.pluginMtls[n],t.tag(18,c.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},E=new ke,ve=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Vertex",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"logo",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(gif|jpg|jpeg|jfif|pjpeg|pjp|png|svg|webp|avif)$"}}}},{no:5,name:"type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.Vertex.VertexType",_e,"VERTEX_TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:6,name:"config",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)"}}}},{no:7,name:"metadata",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.json$"}}}},{no:8,name:"configurator",kind:"scalar",T:8},{no:9,name:"variables",kind:"message",repeat:1,T:()=>C,options:{"buf.validate.field":{cel:[{id:"vars_unique_names",message:"a name cannot appear more than once",expression:"this.map(variable, variable.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:10,name:"mtls",kind:"message",repeat:1,T:()=>A,options:{"buf.validate.field":{cel:[{id:"mtls_unique_names",message:"a name cannot appear more than once",expression:"this.map(mtls, mtls.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:11,name:"code_oauth2",kind:"message",repeat:1,T:()=>fe,options:{"buf.validate.field":{cel:[{id:"vertex.code_oauth2.unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20"}}}},{no:12,name:"oauth2",kind:"message",repeat:1,T:()=>F,options:{"buf.validate.field":{cel:[{id:"vertex.oauth2.unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20",items:{cel:[{id:"vertex.oauth2.client_id_and_code",message:"The client_id and the code property may not be set as well as the code grant type",expression:"!has(this.client_id) && !has(this.code) && this.grant_type != 1"}]}}}}}],{"buf.validate.message":{cel:[{id:"vertex.oauth2_and_code_bindings",message:"The names of the oauth2 services and the code bindings must be unique",expression:"(this.oauth2.map(val, val.name) + this.code_oauth2.map(val, val.name)).unique()"}]}})}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.label="",t.type=0,t.metadata="",t.configurator=!1,t.variables=[],t.mtls=[],t.codeOauth2=[],t.oauth2=[],e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.logo=e.string();break;case 5:n.type=e.int32();break;case 6:n.config=e.string();break;case 7:n.metadata=e.string();break;case 8:n.configurator=e.bool();break;case 9:n.variables.push(C.internalBinaryRead(e,e.uint32(),i));break;case 10:n.mtls.push(A.internalBinaryRead(e,e.uint32(),i));break;case 11:n.codeOauth2.push(fe.internalBinaryRead(e,e.uint32(),i));break;case 12:n.oauth2.push(F.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,c.LengthDelimited).string(e.name),e.label!==""&&t.tag(2,c.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,c.LengthDelimited).string(e.description),e.logo!==void 0&&t.tag(4,c.LengthDelimited).string(e.logo),e.type!==0&&t.tag(5,c.Varint).int32(e.type),e.config!==void 0&&t.tag(6,c.LengthDelimited).string(e.config),e.metadata!==""&&t.tag(7,c.LengthDelimited).string(e.metadata),e.configurator!==!1&&t.tag(8,c.Varint).bool(e.configurator);for(let n=0;n<e.variables.length;n++)C.internalBinaryWrite(e.variables[n],t.tag(9,c.LengthDelimited).fork(),i).join();for(let n=0;n<e.mtls.length;n++)A.internalBinaryWrite(e.mtls[n],t.tag(10,c.LengthDelimited).fork(),i).join();for(let n=0;n<e.codeOauth2.length;n++)fe.internalBinaryWrite(e.codeOauth2[n],t.tag(11,c.LengthDelimited).fork(),i).join();for(let n=0;n<e.oauth2.length;n++)F.internalBinaryWrite(e.oauth2[n],t.tag(12,c.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},me=new ve,Te=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.MTLSService",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,c.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,c.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,c.LengthDelimited).string(e.description),e.optional!==void 0&&t.tag(4,c.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},A=new Te,xe=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.VariableService",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.VariableService.Type",ze,"TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:5,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.type=0,e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.type=e.int32();break;case 5:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,c.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,c.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,c.LengthDelimited).string(e.description),e.type!==0&&t.tag(4,c.Varint).int32(e.type),e.optional!==void 0&&t.tag(5,c.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},C=new xe,Re=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2Service",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"grant_type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.Oauth2GrantType",Ge,"OAUTH2_GRANT_TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:5,name:"scopes",kind:"scalar",repeat:2,T:9,options:{"buf.validate.field":{repeated:{minItems:"1",maxItems:"500",unique:!0,items:{string:{minLen:"1",maxLen:"100"}}}}}},{no:6,name:"auth_method",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.plugins.v1.Oauth2AuthType",He,"OAUTH2_AUTH_TYPE_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}},{no:7,name:"alg",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.plugins.v1.PrivateKeyAlg",Ke,"PRIVATE_KEY_ALG_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}},{no:8,name:"client_id",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:9,name:"token_endpoint",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:10,name:"code",kind:"message",T:()=>ge},{no:11,name:"optional",kind:"scalar",opt:!0,T:8}],{"buf.validate.message":{cel:[{id:"oauth2.auth_method",message:"The auth_method property must be set in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE or OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS",expression:"has(this.auth_method) == (this.grant_type == 1 || this.grant_type == 2)"},{id:"oauth2.alg",message:"The alg property must be set in case of grant_type OAUTH2_GRANT_TYPE_JWT_BEARER, OAUTH2_GRANT_TYPE_SAML2_BEARER or auth_method OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT, OAUTH2_AUTH_TYPE_SAML2_BEARER",expression:"has(this.alg) == (this.grant_type == 3 || this.grant_type == 4 || this.auth_method == 3 || this.auth_method == 5)"},{id:"oauth2.code",message:"The code property must be set in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE",expression:"has(this.code) == (this.grant_type == 1)"},{id:"oauth2.optional",message:"The optional property cannot be set to true in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE",expression:"!has(this.optional) || this.grant_type != 1 || (!this.optional && this.grant_type == 1)"}]}})}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.grantType=0,t.scopes=[],t.tokenEndpoint="",e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.grantType=e.int32();break;case 5:n.scopes.push(e.string());break;case 6:n.authMethod=e.int32();break;case 7:n.alg=e.int32();break;case 8:n.clientId=e.string();break;case 9:n.tokenEndpoint=e.string();break;case 10:n.code=ge.internalBinaryRead(e,e.uint32(),i,n.code);break;case 11:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,c.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,c.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,c.LengthDelimited).string(e.description),e.grantType!==0&&t.tag(4,c.Varint).int32(e.grantType);for(let n=0;n<e.scopes.length;n++)t.tag(5,c.LengthDelimited).string(e.scopes[n]);e.authMethod!==void 0&&t.tag(6,c.Varint).int32(e.authMethod),e.alg!==void 0&&t.tag(7,c.Varint).int32(e.alg),e.clientId!==void 0&&t.tag(8,c.LengthDelimited).string(e.clientId),e.tokenEndpoint!==""&&t.tag(9,c.LengthDelimited).string(e.tokenEndpoint),e.code&&ge.internalBinaryWrite(e.code,t.tag(10,c.LengthDelimited).fork(),i).join(),e.optional!==void 0&&t.tag(11,c.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},F=new Re,we=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2CodeBinding",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,c.LengthDelimited).string(e.name),e.optional!==void 0&&t.tag(2,c.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},fe=new we,Be=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2Code",[{no:1,name:"auth_endpoint",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:2,name:"issuer",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"4096"}}}},{no:3,name:"jwks_uri",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:4,name:"additional_params",kind:"map",K:9,V:{kind:"scalar",T:9},options:{"buf.validate.field":{map:{minPairs:"0",maxPairs:"50",keys:{string:{minLen:"1",maxLen:"250"}},values:{string:{minLen:"1",maxLen:"250"}}}}}},{no:5,name:"use_pkce",kind:"scalar",T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.authEndpoint="",t.issuer="",t.jwksUri="",t.additionalParams={},t.usePkce=!1,e!==void 0&&I(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.authEndpoint=e.string();break;case 2:n.issuer=e.string();break;case 3:n.jwksUri=e.string();break;case 4:this.binaryReadMap4(n.additionalParams,e,i);break;case 5:n.usePkce=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,s,d)}}return n}binaryReadMap4(e,t,i){let a=t.uint32(),n=t.pos+a,p,r;for(;t.pos<n;){let[s,l]=t.tag();switch(s){case 1:p=t.string();break;case 2:r=t.string();break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.plugins.v1.Oauth2Code.additional_params")}}e[p??""]=r??""}internalBinaryWrite(e,t,i){e.authEndpoint!==""&&t.tag(1,c.LengthDelimited).string(e.authEndpoint),e.issuer!==""&&t.tag(2,c.LengthDelimited).string(e.issuer),e.jwksUri!==""&&t.tag(3,c.LengthDelimited).string(e.jwksUri);for(let n of globalThis.Object.keys(e.additionalParams))t.tag(4,c.LengthDelimited).fork().tag(1,c.LengthDelimited).string(n).tag(2,c.LengthDelimited).string(e.additionalParams[n]).join();e.usePkce!==!1&&t.tag(5,c.Varint).bool(e.usePkce);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},ge=new Be,X=new Et("mochabugapis.adapt.plugins.v1.PluginService",[{name:"UploadPlugin",clientStreaming:!0,options:{"google.api.http":{post:"/v1/plugins/upload",body:"*"}},I:It,O:St}],{"google.api.default_host":"adapt.mochabugapis.com","google.api.oauth_scopes":"https://www.mochabugapis.com/auth/adapt/plugins,https://www.mochabugapis.com/auth/adapt/plugins.upload"});import pe from"fs";import{mkdirp as Yt}from"mkdirp";import $ from"path";import{WireType as q}from"@protobuf-ts/runtime";import{UnknownFieldHandler as rt}from"@protobuf-ts/runtime";import{reflectionMergePartial as zt}from"@protobuf-ts/runtime";import{MessageType as Kt}from"@protobuf-ts/runtime";import{WireType as ee}from"@protobuf-ts/runtime";import{UnknownFieldHandler as et}from"@protobuf-ts/runtime";import{reflectionMergePartial as Ut}from"@protobuf-ts/runtime";import{MessageType as Mt}from"@protobuf-ts/runtime";import{WireType as We}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Qe}from"@protobuf-ts/runtime";import{reflectionMergePartial as $t}from"@protobuf-ts/runtime";import{MessageType as Vt}from"@protobuf-ts/runtime";import{WireType as K}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Xe}from"@protobuf-ts/runtime";import{reflectionMergePartial as Dt}from"@protobuf-ts/runtime";import{MessageType as Wt}from"@protobuf-ts/runtime";import{WireType as y}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Ze}from"@protobuf-ts/runtime";import{reflectionMergePartial as Pt}from"@protobuf-ts/runtime";import{MessageType as Nt}from"@protobuf-ts/runtime";import{WireType as O}from"@protobuf-ts/runtime";import{UnknownFieldHandler as J}from"@protobuf-ts/runtime";import{reflectionMergePartial as Se}from"@protobuf-ts/runtime";import{isJsonObject as Ot}from"@protobuf-ts/runtime";import{typeofJsonValue as Oe}from"@protobuf-ts/runtime";import{MessageType as Pe}from"@protobuf-ts/runtime";var Ye=(e=>(e[e.NULL_VALUE=0]="NULL_VALUE",e))(Ye||{}),Le=class extends Pe{constructor(){super("google.protobuf.Struct",[{no:1,name:"fields",kind:"map",K:9,V:{kind:"message",T:()=>w}}])}internalJsonWrite(e,t){let i={};for(let[a,n]of Object.entries(e.fields))i[a]=w.toJson(n);return i}internalJsonRead(e,t,i){if(!Ot(e))throw new globalThis.Error("Unable to parse message "+this.typeName+" from JSON "+Oe(e)+".");i||(i=this.create());for(let[a,n]of globalThis.Object.entries(e))i.fields[a]=w.fromJson(n);return i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.fields={},e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:this.binaryReadMap1(n.fields,e,i);break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?J.onRead:l)(this.typeName,n,r,s,d)}}return n}binaryReadMap1(e,t,i){let a=t.uint32(),n=t.pos+a,p,r;for(;t.pos<n;){let[s,l]=t.tag();switch(s){case 1:p=t.string();break;case 2:r=w.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field google.protobuf.Struct.fields")}}e[p??""]=r??w.create()}internalBinaryWrite(e,t,i){for(let n of globalThis.Object.keys(e.fields))t.tag(1,O.LengthDelimited).fork().tag(1,O.LengthDelimited).string(n),t.tag(2,O.LengthDelimited).fork(),w.internalBinaryWrite(e.fields[n],t,i),t.join().join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?J.onWrite:a)(this.typeName,e,t),t}},W=new Le,Ee=class extends Pe{constructor(){super("google.protobuf.Value",[{no:1,name:"null_value",kind:"enum",oneof:"kind",T:()=>["google.protobuf.NullValue",Ye]},{no:2,name:"number_value",kind:"scalar",oneof:"kind",T:1},{no:3,name:"string_value",kind:"scalar",oneof:"kind",T:9},{no:4,name:"bool_value",kind:"scalar",oneof:"kind",T:8},{no:5,name:"struct_value",kind:"message",oneof:"kind",T:()=>W},{no:6,name:"list_value",kind:"message",oneof:"kind",T:()=>Q}])}internalJsonWrite(e,t){if(e.kind.oneofKind===void 0)throw new globalThis.Error;switch(e.kind.oneofKind){case void 0:throw new globalThis.Error;case"boolValue":return e.kind.boolValue;case"nullValue":return null;case"numberValue":let i=e.kind.numberValue;if(typeof i=="number"&&!Number.isFinite(i))throw new globalThis.Error;return i;case"stringValue":return e.kind.stringValue;case"listValue":let a=this.fields.find(p=>p.no===6);if(a?.kind!=="message")throw new globalThis.Error;return a.T().toJson(e.kind.listValue);case"structValue":let n=this.fields.find(p=>p.no===5);if(n?.kind!=="message")throw new globalThis.Error;return n.T().toJson(e.kind.structValue)}}internalJsonRead(e,t,i){switch(i||(i=this.create()),typeof e){case"number":i.kind={oneofKind:"numberValue",numberValue:e};break;case"string":i.kind={oneofKind:"stringValue",stringValue:e};break;case"boolean":i.kind={oneofKind:"boolValue",boolValue:e};break;case"object":e===null?i.kind={oneofKind:"nullValue",nullValue:0}:globalThis.Array.isArray(e)?i.kind={oneofKind:"listValue",listValue:Q.fromJson(e)}:i.kind={oneofKind:"structValue",structValue:W.fromJson(e)};break;default:throw new globalThis.Error("Unable to parse "+this.typeName+" from JSON "+Oe(e))}return i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.kind={oneofKind:void 0},e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.kind={oneofKind:"nullValue",nullValue:e.int32()};break;case 2:n.kind={oneofKind:"numberValue",numberValue:e.double()};break;case 3:n.kind={oneofKind:"stringValue",stringValue:e.string()};break;case 4:n.kind={oneofKind:"boolValue",boolValue:e.bool()};break;case 5:n.kind={oneofKind:"structValue",structValue:W.internalBinaryRead(e,e.uint32(),i,n.kind.structValue)};break;case 6:n.kind={oneofKind:"listValue",listValue:Q.internalBinaryRead(e,e.uint32(),i,n.kind.listValue)};break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?J.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.kind.oneofKind==="nullValue"&&t.tag(1,O.Varint).int32(e.kind.nullValue),e.kind.oneofKind==="numberValue"&&t.tag(2,O.Bit64).double(e.kind.numberValue),e.kind.oneofKind==="stringValue"&&t.tag(3,O.LengthDelimited).string(e.kind.stringValue),e.kind.oneofKind==="boolValue"&&t.tag(4,O.Varint).bool(e.kind.boolValue),e.kind.oneofKind==="structValue"&&W.internalBinaryWrite(e.kind.structValue,t.tag(5,O.LengthDelimited).fork(),i).join(),e.kind.oneofKind==="listValue"&&Q.internalBinaryWrite(e.kind.listValue,t.tag(6,O.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?J.onWrite:a)(this.typeName,e,t),t}},w=new Ee,Ie=class extends Pe{constructor(){super("google.protobuf.ListValue",[{no:1,name:"values",kind:"message",repeat:1,T:()=>w}])}internalJsonWrite(e,t){return e.values.map(i=>w.toJson(i))}internalJsonRead(e,t,i){if(!globalThis.Array.isArray(e))throw new globalThis.Error("Unable to parse "+this.typeName+" from JSON "+Oe(e));i||(i=this.create());let a=e.map(n=>w.fromJson(n));return i.values.push(...a),i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.values=[],e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.values.push(w.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?J.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){for(let n=0;n<e.values.length;n++)w.internalBinaryWrite(e.values[n],t.tag(1,O.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?J.onWrite:a)(this.typeName,e,t),t}},Q=new Ie;var Ne=class extends Nt{constructor(){super("mochabugapis.adapt.graph.JTDSchema",[{no:1,name:"definitions",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:2,name:"metadata",kind:"message",T:()=>W},{no:3,name:"nullable",kind:"scalar",opt:!0,T:8},{no:4,name:"ref",kind:"scalar",opt:!0,T:9},{no:5,name:"type",kind:"scalar",opt:!0,T:9},{no:6,name:"enum",kind:"scalar",repeat:2,T:9},{no:7,name:"elements",kind:"message",T:()=>f},{no:8,name:"properties",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:9,name:"optional_properties",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:10,name:"additional_properties",kind:"scalar",opt:!0,T:8},{no:11,name:"values",kind:"message",T:()=>f},{no:12,name:"discriminator",kind:"scalar",opt:!0,T:9},{no:13,name:"mapping",kind:"map",K:9,V:{kind:"message",T:()=>f}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.definitions={},t.enum=[],t.properties={},t.optionalProperties={},t.mapping={},e!==void 0&&Pt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:this.binaryReadMap1(n.definitions,e,i);break;case 2:n.metadata=W.internalBinaryRead(e,e.uint32(),i,n.metadata);break;case 3:n.nullable=e.bool();break;case 4:n.ref=e.string();break;case 5:n.type=e.string();break;case 6:n.enum.push(e.string());break;case 7:n.elements=f.internalBinaryRead(e,e.uint32(),i,n.elements);break;case 8:this.binaryReadMap8(n.properties,e,i);break;case 9:this.binaryReadMap9(n.optionalProperties,e,i);break;case 10:n.additionalProperties=e.bool();break;case 11:n.values=f.internalBinaryRead(e,e.uint32(),i,n.values);break;case 12:n.discriminator=e.string();break;case 13:this.binaryReadMap13(n.mapping,e,i);break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?Ze.onRead:l)(this.typeName,n,r,s,d)}}return n}binaryReadMap1(e,t,i){let a=t.uint32(),n=t.pos+a,p,r;for(;t.pos<n;){let[s,l]=t.tag();switch(s){case 1:p=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.definitions")}}e[p??""]=r??f.create()}binaryReadMap8(e,t,i){let a=t.uint32(),n=t.pos+a,p,r;for(;t.pos<n;){let[s,l]=t.tag();switch(s){case 1:p=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.properties")}}e[p??""]=r??f.create()}binaryReadMap9(e,t,i){let a=t.uint32(),n=t.pos+a,p,r;for(;t.pos<n;){let[s,l]=t.tag();switch(s){case 1:p=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.optional_properties")}}e[p??""]=r??f.create()}binaryReadMap13(e,t,i){let a=t.uint32(),n=t.pos+a,p,r;for(;t.pos<n;){let[s,l]=t.tag();switch(s){case 1:p=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.mapping")}}e[p??""]=r??f.create()}internalBinaryWrite(e,t,i){for(let n of globalThis.Object.keys(e.definitions))t.tag(1,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.definitions[n],t,i),t.join().join();e.metadata&&W.internalBinaryWrite(e.metadata,t.tag(2,y.LengthDelimited).fork(),i).join(),e.nullable!==void 0&&t.tag(3,y.Varint).bool(e.nullable),e.ref!==void 0&&t.tag(4,y.LengthDelimited).string(e.ref),e.type!==void 0&&t.tag(5,y.LengthDelimited).string(e.type);for(let n=0;n<e.enum.length;n++)t.tag(6,y.LengthDelimited).string(e.enum[n]);e.elements&&f.internalBinaryWrite(e.elements,t.tag(7,y.LengthDelimited).fork(),i).join();for(let n of globalThis.Object.keys(e.properties))t.tag(8,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.properties[n],t,i),t.join().join();for(let n of globalThis.Object.keys(e.optionalProperties))t.tag(9,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.optionalProperties[n],t,i),t.join().join();e.additionalProperties!==void 0&&t.tag(10,y.Varint).bool(e.additionalProperties),e.values&&f.internalBinaryWrite(e.values,t.tag(11,y.LengthDelimited).fork(),i).join(),e.discriminator!==void 0&&t.tag(12,y.LengthDelimited).string(e.discriminator);for(let n of globalThis.Object.keys(e.mapping))t.tag(13,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.mapping[n],t,i),t.join().join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?Ze.onWrite:a)(this.typeName,e,t),t}},f=new Ne;var De=class extends Wt{constructor(){super("mochabugapis.adapt.graph.SignalDescriptor",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:5,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"50"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"schema",kind:"message",T:()=>f,options:{"buf.validate.field":{required:!0}}},{no:4,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&Dt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 5:n.label=e.string();break;case 2:n.description=e.string();break;case 3:n.schema=f.internalBinaryRead(e,e.uint32(),i,n.schema);break;case 4:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?Xe.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,K.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(5,K.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(2,K.LengthDelimited).string(e.description),e.schema&&f.internalBinaryWrite(e.schema,t.tag(3,K.LengthDelimited).fork(),i).join(),e.optional!==void 0&&t.tag(4,K.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?Xe.onWrite:a)(this.typeName,e,t),t}},_=new De;var $e=class extends Vt{constructor(){super("mochabugapis.adapt.graph.Transceiver",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"signals",kind:"message",repeat:1,T:()=>_,options:{"buf.validate.field":{cel:[{id:"signals_unique_names",message:"Each signal must have a unique name.",expression:"this.map(signal, signal.name).unique()"}],repeated:{maxItems:"512"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.signals=[],e!==void 0&&$t(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.signals.push(_.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?Qe.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,We.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,We.LengthDelimited).string(e.description);for(let n=0;n<e.signals.length;n++)_.internalBinaryWrite(e.signals[n],t.tag(3,We.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?Qe.onWrite:a)(this.typeName,e,t),t}},M=new $e;var Ve=class extends Mt{constructor(){super("mochabugapis.adapt.graph.Exchange",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"transmitters",kind:"message",repeat:1,T:()=>M,options:{"buf.validate.field":{cel:[{id:"transmitters_unique_names",message:"Each transmitter must have a unique name.",expression:"this.map(transmitter, transmitter.name).unique()"}],repeated:{maxItems:"10"}}}},{no:4,name:"receivers",kind:"message",repeat:1,T:()=>M,options:{"buf.validate.field":{cel:[{id:"receivers_unique_names",message:"Each receiver must have a unique name.",expression:"this.map(receiver, receiver.name).unique()"}],repeated:{minItems:"1",maxItems:"10"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.transmitters=[],t.receivers=[],e!==void 0&&Ut(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.transmitters.push(M.internalBinaryRead(e,e.uint32(),i));break;case 4:n.receivers.push(M.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?et.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,ee.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,ee.LengthDelimited).string(e.description);for(let n=0;n<e.transmitters.length;n++)M.internalBinaryWrite(e.transmitters[n],t.tag(3,ee.LengthDelimited).fork(),i).join();for(let n=0;n<e.receivers.length;n++)M.internalBinaryWrite(e.receivers[n],t.tag(4,ee.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?et.onWrite:a)(this.typeName,e,t),t}},j=new Ve;import{WireType as te}from"@protobuf-ts/runtime";import{UnknownFieldHandler as tt}from"@protobuf-ts/runtime";import{reflectionMergePartial as jt}from"@protobuf-ts/runtime";import{MessageType as At}from"@protobuf-ts/runtime";var Ue=class extends At{constructor(){super("mochabugapis.adapt.graph.Transmitter",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"signals",kind:"message",repeat:1,T:()=>_,options:{"buf.validate.field":{cel:[{id:"signals_unique_names",message:"Each signal must have a unique name.",expression:"this.map(signal, signal.name).unique()"}],repeated:{maxItems:"512"}}}},{no:4,name:"failure",kind:"scalar",T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.signals=[],t.failure=!1,e!==void 0&&jt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.signals.push(_.internalBinaryRead(e,e.uint32(),i));break;case 4:n.failure=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?tt.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,te.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,te.LengthDelimited).string(e.description);for(let n=0;n<e.signals.length;n++)_.internalBinaryWrite(e.signals[n],t.tag(3,te.LengthDelimited).fork(),i).join();e.failure!==!1&&t.tag(4,te.Varint).bool(e.failure);let a=i.writeUnknownFields;return a!==!1&&(a==!0?tt.onWrite:a)(this.typeName,e,t),t}},ne=new Ue;import{WireType as je}from"@protobuf-ts/runtime";import{UnknownFieldHandler as at}from"@protobuf-ts/runtime";import{reflectionMergePartial as Jt}from"@protobuf-ts/runtime";import{MessageType as qt}from"@protobuf-ts/runtime";import{WireType as ie}from"@protobuf-ts/runtime";import{UnknownFieldHandler as nt}from"@protobuf-ts/runtime";import{reflectionMergePartial as Ct}from"@protobuf-ts/runtime";import{MessageType as Ft}from"@protobuf-ts/runtime";var it=(a=>(a[a.UNSPECIFIED=0]="UNSPECIFIED",a[a.UNBOUND=1]="UNBOUND",a[a.INVALID_SOURCE=2]="INVALID_SOURCE",a[a.SCHEMA_MISMATCH=3]="SCHEMA_MISMATCH",a))(it||{}),Me=class extends Ft{constructor(){super("mochabugapis.adapt.graph.SignalBinding",[{no:1,name:"descriptor",kind:"message",T:()=>_,options:{"buf.validate.field":{required:!0}}},{no:2,name:"reference",kind:"scalar",oneof:"binding",T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"constant",kind:"message",oneof:"binding",T:()=>w},{no:4,name:"error",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.graph.SignalBinding.Error",it,"ERROR_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.binding={oneofKind:void 0},e!==void 0&&Ct(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.descriptor=_.internalBinaryRead(e,e.uint32(),i,n.descriptor);break;case 2:n.binding={oneofKind:"reference",reference:e.string()};break;case 3:n.binding={oneofKind:"constant",constant:w.internalBinaryRead(e,e.uint32(),i,n.binding.constant)};break;case 4:n.error=e.int32();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?nt.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.descriptor&&_.internalBinaryWrite(e.descriptor,t.tag(1,ie.LengthDelimited).fork(),i).join(),e.binding.oneofKind==="reference"&&t.tag(2,ie.LengthDelimited).string(e.binding.reference),e.binding.oneofKind==="constant"&&w.internalBinaryWrite(e.binding.constant,t.tag(3,ie.LengthDelimited).fork(),i).join(),e.error!==void 0&&t.tag(4,ie.Varint).int32(e.error);let a=i.writeUnknownFields;return a!==!1&&(a==!0?nt.onWrite:a)(this.typeName,e,t),t}},ae=new Me;var Ae=class extends qt{constructor(){super("mochabugapis.adapt.graph.Receiver",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"bindings",kind:"message",repeat:1,T:()=>ae,options:{"buf.validate.field":{cel:[{id:"bindings_unique_names",message:"Each binding must have a unique name.",expression:"this.map(binding, binding.descriptor.name).unique()"}],repeated:{maxItems:"512"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.bindings=[],e!==void 0&&Jt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.bindings.push(ae.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?at.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,je.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,je.LengthDelimited).string(e.description);for(let n=0;n<e.bindings.length;n++)ae.internalBinaryWrite(e.bindings[n],t.tag(3,je.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?at.onWrite:a)(this.typeName,e,t),t}},re=new Ae;var Ce=class extends Kt{constructor(){super("mochabugapis.adapt.graph.VertexConfigMetadata",[{no:1,name:"complete",kind:"scalar",T:8},{no:2,name:"receivers",kind:"message",repeat:1,T:()=>re,options:{"buf.validate.field":{cel:[{id:"receivers_unique_names",message:"Each receiver must have a unique name.",expression:"this.map(receiver, receiver.name).unique()"}],repeated:{minItems:"1",maxItems:"50"}}}},{no:3,name:"transmitters",kind:"message",repeat:1,T:()=>ne,options:{"buf.validate.field":{cel:[{id:"transmitters_unique_names",message:"Each transmitter must have a unique name.",expression:"this.map(transmitter, transmitter.name).unique()"}],repeated:{maxItems:"50"}}}},{no:4,name:"procedures",kind:"message",repeat:1,T:()=>j,options:{"buf.validate.field":{cel:[{id:"procedures_unique_names",message:"Each procedure must have a unique name.",expression:"this.map(procedure, procedure.name).unique()"}],repeated:{maxItems:"10"}}}},{no:5,name:"streams",kind:"message",repeat:1,T:()=>j,options:{"buf.validate.field":{cel:[{id:"streams_unique_names",message:"Each stream must have a unique name.",expression:"this.map(stream, stream.name).unique()"}],repeated:{maxItems:"10"}}}},{no:6,name:"cron_schedule",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_DEFAULT",string:{minLen:"1",maxLen:"100"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.complete=!1,t.receivers=[],t.transmitters=[],t.procedures=[],t.streams=[],e!==void 0&&zt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),p=e.pos+t;for(;e.pos<p;){let[r,s]=e.tag();switch(r){case 1:n.complete=e.bool();break;case 2:n.receivers.push(re.internalBinaryRead(e,e.uint32(),i));break;case 3:n.transmitters.push(ne.internalBinaryRead(e,e.uint32(),i));break;case 4:n.procedures.push(j.internalBinaryRead(e,e.uint32(),i));break;case 5:n.streams.push(j.internalBinaryRead(e,e.uint32(),i));break;case 6:n.cronSchedule=e.string();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${s}) for ${this.typeName}`);let d=e.skip(s);l!==!1&&(l===!0?rt.onRead:l)(this.typeName,n,r,s,d)}}return n}internalBinaryWrite(e,t,i){e.complete!==!1&&t.tag(1,q.Varint).bool(e.complete);for(let n=0;n<e.receivers.length;n++)re.internalBinaryWrite(e.receivers[n],t.tag(2,q.LengthDelimited).fork(),i).join();for(let n=0;n<e.transmitters.length;n++)ne.internalBinaryWrite(e.transmitters[n],t.tag(3,q.LengthDelimited).fork(),i).join();for(let n=0;n<e.procedures.length;n++)j.internalBinaryWrite(e.procedures[n],t.tag(4,q.LengthDelimited).fork(),i).join();for(let n=0;n<e.streams.length;n++)j.internalBinaryWrite(e.streams[n],t.tag(5,q.LengthDelimited).fork(),i).join();e.cronSchedule!==void 0&&t.tag(6,q.LengthDelimited).string(e.cronSchedule);let a=i.writeUnknownFields;return a!==!1&&(a==!0?rt.onWrite:a)(this.typeName,e,t),t}},ot=new Ce;import oe from"fs";import{mkdirp as Gt}from"mkdirp";import se from"path";import st from"chalk";import{fileURLToPath as Ht}from"url";function g(o){return oe.readFileSync(se.join(se.dirname(Ht(import.meta.url)),"..","assets",o)).toString()}function b(o,e){let t=se.dirname(o);Gt.sync(t),oe.writeFileSync(o,e)}function G(o){let e=se.resolve(o);if(!oe.existsSync(e))return console.error(st.red(`Invalid command: Manifest file not found at ${e}.`)),null;try{let t=oe.readFileSync(e).toString();return E.fromJsonString(t)}catch(t){return console.error(st.red("An error occurred while reading the manifest")),console.error(t.message),null}}function le(o){return(o.charAt(0).toUpperCase()+o.substring(1)).replace("_"," ")}function Zt(o){switch(o){case"action":return 1;case"cron-trigger":return 3;case"external-trigger":return 4;case"browser":return 2;default:throw new Error("The node type is invalid")}}function ce(o,e,t,i,a,n,p){let r=$.join(o,"src","vertices",e);if(pe.existsSync(r))throw new Error(`The folder for the new vertex: ${r} already exists`);Yt.sync(r);let s=$.join(r,"executor.ts"),l={name:e,label:le(e),description:`The better description of what ${e} is doing, the better it is for both AI and humans`,type:Zt(t),metadata:$.join("src","vertices",e,"metadata.json"),configurator:i,mtls:[],codeOauth2:[],oauth2:[],variables:[]};switch(l.type){case 1:b(s,g("executor_action.ts"));break;case 2:n==="react"?b(s+"x",g("executor_browser_react.tsx").replaceAll("___CLIENT__NAME___",p.execClient).replaceAll("___APP_IMPORT___",p.execApp)):b(s,g("executor_browser_none.ts"));break;case 4:b(s,g("executor_external_trigger.ts"));break;case 3:b(s,g("executor_cron_trigger.ts"));break;default:throw new Error("The vertex type is invalid")}pe.writeFileSync($.join(o,"src","executors.ts"),lt([e,...a.map(T=>T.name)],"ExecutorEnvironment"));let d={complete:!0,receivers:[{name:"input",description:"Default input receiver",bindings:[]}],transmitters:[{name:"output",description:"Default output transmitter",signals:[],failure:!1}],procedures:[],streams:[]};return l.type===3&&(d.cronSchedule="/5 * * * * *"),i&&(n==="react"?b($.join(r,"configurator.tsx"),g("configurator_react.tsx").replaceAll("___CLIENT__NAME___",p.confClient).replaceAll("___APP_IMPORT___",p.confApp)):b($.join(r,"configurator.ts"),g("configurator_none.ts")),d.complete=!1,pe.writeFileSync($.join(o,"src","configurators.ts"),lt([e,...a.filter(T=>T.configurator).map(T=>T.name)],"ConfiguratorEnvironment"))),pe.writeFileSync($.join(r,"metadata.json"),ot.toJsonString(d,{prettySpaces:2})),l}function lt(o,e){let t=o.map(i=>`import ${i} from './vertices/${i}/${e==="ExecutorEnvironment"?"executor":"configurator"}';`).join(`
2
+ var k={name:"@mochabug/adaptkit",version:"1.0.0-beta.5"};import m from"chalk";import{program as P}from"commander";import Bn from"figlet";import _n from"fs";import Ln from"is-valid-hostname";import En from"path";import Sn from"semver";import In from"update-notifier";import{confirm as en,input as tn,select as st}from"@inquirer/prompts";import Ce from"chalk";import nn from"fs";import{ServiceType as St}from"@protobuf-ts/runtime-rpc";import{WireType as u}from"@protobuf-ts/runtime";import{UnknownFieldHandler as v}from"@protobuf-ts/runtime";import{reflectionMergePartial as E}from"@protobuf-ts/runtime";import{MessageType as S}from"@protobuf-ts/runtime";var Be=(n=>(n[n.UNSPECIFIED=0]="UNSPECIFIED",n[n.ACTION=1]="ACTION",n[n.BROWSER=2]="BROWSER",n[n.CRON_TRIGGER=3]="CRON_TRIGGER",n[n.EXTERNAL_TRIGGER=4]="EXTERNAL_TRIGGER",n))(Be||{}),Je=(a=>(a[a.UNSPECIFIED=0]="UNSPECIFIED",a[a.SECRET=1]="SECRET",a[a.STRING=2]="STRING",a[a.SWITCH=3]="SWITCH",a))(Je||{}),qe=(t=>(t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.RS256=1]="RS256",t))(qe||{}),ze=(n=>(n[n.UNSPECIFIED=0]="UNSPECIFIED",n[n.AUTHORIZATION_CODE=1]="AUTHORIZATION_CODE",n[n.CLIENT_CREDENTIALS=2]="CLIENT_CREDENTIALS",n[n.JWT_BEARER=3]="JWT_BEARER",n[n.SAML2_BEARER=4]="SAML2_BEARER",n))(ze||{}),Ke=(s=>(s[s.UNSPECIFIED=0]="UNSPECIFIED",s[s.BASIC=1]="BASIC",s[s.FORM=2]="FORM",s[s.PRIVATE_KEY_JWT=3]="PRIVATE_KEY_JWT",s[s.MTLS=4]="MTLS",s[s.SAML2_BEARER=5]="SAML2_BEARER",s))(Ke||{}),ge=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.UploadPluginRequest",[{no:1,name:"manifest",kind:"message",oneof:"data",T:()=>L},{no:2,name:"file",kind:"message",oneof:"data",T:()=>ue}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.data={oneofKind:void 0},e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.data={oneofKind:"manifest",manifest:L.internalBinaryRead(e,e.uint32(),i,n.data.manifest)};break;case 2:n.data={oneofKind:"file",file:ue.internalBinaryRead(e,e.uint32(),i,n.data.file)};break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.data.oneofKind==="manifest"&&L.internalBinaryWrite(e.data.manifest,t.tag(1,u.LengthDelimited).fork(),i).join(),e.data.oneofKind==="file"&&ue.internalBinaryWrite(e.data.file,t.tag(2,u.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},It=new ge,he=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.UploadPluginResponse",[])}create(e){let t=globalThis.Object.create(this.messagePrototype);return e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){return a??this.create()}internalBinaryWrite(e,t,i){let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},Ot=new he,be=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.File",[{no:1,name:"path",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:2,name:"data",kind:"scalar",T:12,options:{"buf.validate.field":{bytes:{minLen:"1",maxLen:"40000000"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.path="",t.data=new Uint8Array(0),e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.path=e.string();break;case 2:n.data=e.bytes();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.path!==""&&t.tag(1,u.LengthDelimited).string(e.path),e.data.length&&t.tag(2,u.LengthDelimited).bytes(e.data);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},ue=new be,ye=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Manifest",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"version",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"150",pattern:"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"}}}},{no:3,name:"label",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:4,name:"description",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"250"}}}},{no:5,name:"organization",kind:"scalar",T:9,options:{"buf.validate.field":{string:{uuid:!0}}}},{no:6,name:"homepage",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:7,name:"repository",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:8,name:"bugs",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{cel:[{id:"valid_email_or_url",message:"bugs must be a valid email or URL",expression:"size(this) >= 2 && size(this) <= 4096 && (this.isEmail() || this.matches('^https://[a-zA-Z0-9.-]+(?:\\\\.[a-zA-Z]{2,})(?:/.*)?$'))"}],ignore:"IGNORE_EMPTY"}}},{no:9,name:"author",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:10,name:"logo",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(gif|jpg|jpeg|jfif|pjpeg|pjp|png|svg|webp|avif)$"}}}},{no:11,name:"executors",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(mjs|js)$"}}}},{no:12,name:"configurators",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(mjs|js)$"}}}},{no:13,name:"assets",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:14,name:"cdn",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:15,name:"vertices",kind:"message",repeat:1,T:()=>de,options:{"buf.validate.field":{cel:[{id:"vertex_unique_names",message:"a name cannot appear more than once",expression:"this.map(vertex, vertex.name).unique()"}],repeated:{minItems:"1",maxItems:"100"}}}},{no:16,name:"plugin_oauth2",kind:"message",repeat:1,T:()=>j,options:{"buf.validate.field":{cel:[{id:"plugin_oauth2.oauth_unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20",items:{cel:[{id:"plugin_oauth2.oauth2.client_id",message:"The client_id property must be set",expression:"has(this.client_id)"}]}}}}},{no:17,name:"plugin_variables",kind:"message",repeat:1,T:()=>M,options:{"buf.validate.field":{cel:[{id:"vars_unique_names",message:"a name cannot appear more than once",expression:"this.map(variable, variable.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:18,name:"plugin_mtls",kind:"message",repeat:1,T:()=>U,options:{"buf.validate.field":{cel:[{id:"mtls_unique_names",message:"a name cannot appear more than once",expression:"this.map(mtls, mtls.name).unique()"}],repeated:{minItems:"0",maxItems:"20"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.version="",t.label="",t.description="",t.organization="",t.executors="",t.vertices=[],t.pluginOauth2=[],t.pluginVariables=[],t.pluginMtls=[],e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.version=e.string();break;case 3:n.label=e.string();break;case 4:n.description=e.string();break;case 5:n.organization=e.string();break;case 6:n.homepage=e.string();break;case 7:n.repository=e.string();break;case 8:n.bugs=e.string();break;case 9:n.author=e.string();break;case 10:n.logo=e.string();break;case 11:n.executors=e.string();break;case 12:n.configurators=e.string();break;case 13:n.assets=e.string();break;case 14:n.cdn=e.string();break;case 15:n.vertices.push(de.internalBinaryRead(e,e.uint32(),i));break;case 16:n.pluginOauth2.push(j.internalBinaryRead(e,e.uint32(),i));break;case 17:n.pluginVariables.push(M.internalBinaryRead(e,e.uint32(),i));break;case 18:n.pluginMtls.push(U.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.version!==""&&t.tag(2,u.LengthDelimited).string(e.version),e.label!==""&&t.tag(3,u.LengthDelimited).string(e.label),e.description!==""&&t.tag(4,u.LengthDelimited).string(e.description),e.organization!==""&&t.tag(5,u.LengthDelimited).string(e.organization),e.homepage!==void 0&&t.tag(6,u.LengthDelimited).string(e.homepage),e.repository!==void 0&&t.tag(7,u.LengthDelimited).string(e.repository),e.bugs!==void 0&&t.tag(8,u.LengthDelimited).string(e.bugs),e.author!==void 0&&t.tag(9,u.LengthDelimited).string(e.author),e.logo!==void 0&&t.tag(10,u.LengthDelimited).string(e.logo),e.executors!==""&&t.tag(11,u.LengthDelimited).string(e.executors),e.configurators!==void 0&&t.tag(12,u.LengthDelimited).string(e.configurators),e.assets!==void 0&&t.tag(13,u.LengthDelimited).string(e.assets),e.cdn!==void 0&&t.tag(14,u.LengthDelimited).string(e.cdn);for(let n=0;n<e.vertices.length;n++)de.internalBinaryWrite(e.vertices[n],t.tag(15,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginOauth2.length;n++)j.internalBinaryWrite(e.pluginOauth2[n],t.tag(16,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginVariables.length;n++)M.internalBinaryWrite(e.pluginVariables[n],t.tag(17,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginMtls.length;n++)U.internalBinaryWrite(e.pluginMtls[n],t.tag(18,u.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},L=new ye,ke=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Vertex",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"logo",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(gif|jpg|jpeg|jfif|pjpeg|pjp|png|svg|webp|avif)$"}}}},{no:5,name:"type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.Vertex.VertexType",Be,"VERTEX_TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:6,name:"config",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)"}}}},{no:7,name:"metadata",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.json$"}}}},{no:8,name:"configurator",kind:"scalar",T:8},{no:9,name:"variables",kind:"message",repeat:1,T:()=>M,options:{"buf.validate.field":{cel:[{id:"vars_unique_names",message:"a name cannot appear more than once",expression:"this.map(variable, variable.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:10,name:"mtls",kind:"message",repeat:1,T:()=>U,options:{"buf.validate.field":{cel:[{id:"mtls_unique_names",message:"a name cannot appear more than once",expression:"this.map(mtls, mtls.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:11,name:"code_oauth2",kind:"message",repeat:1,T:()=>me,options:{"buf.validate.field":{cel:[{id:"vertex.code_oauth2.unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20"}}}},{no:12,name:"oauth2",kind:"message",repeat:1,T:()=>j,options:{"buf.validate.field":{cel:[{id:"vertex.oauth2.unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20",items:{cel:[{id:"vertex.oauth2.client_id_and_code",message:"The client_id and the code property may not be set as well as the code grant type",expression:"!has(this.client_id) && !has(this.code) && this.grant_type != 1"}]}}}}}],{"buf.validate.message":{cel:[{id:"vertex.oauth2_and_code_bindings",message:"The names of the oauth2 services and the code bindings must be unique",expression:"(this.oauth2.map(val, val.name) + this.code_oauth2.map(val, val.name)).unique()"}]}})}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.label="",t.type=0,t.metadata="",t.configurator=!1,t.variables=[],t.mtls=[],t.codeOauth2=[],t.oauth2=[],e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.logo=e.string();break;case 5:n.type=e.int32();break;case 6:n.config=e.string();break;case 7:n.metadata=e.string();break;case 8:n.configurator=e.bool();break;case 9:n.variables.push(M.internalBinaryRead(e,e.uint32(),i));break;case 10:n.mtls.push(U.internalBinaryRead(e,e.uint32(),i));break;case 11:n.codeOauth2.push(me.internalBinaryRead(e,e.uint32(),i));break;case 12:n.oauth2.push(j.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==""&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.logo!==void 0&&t.tag(4,u.LengthDelimited).string(e.logo),e.type!==0&&t.tag(5,u.Varint).int32(e.type),e.config!==void 0&&t.tag(6,u.LengthDelimited).string(e.config),e.metadata!==""&&t.tag(7,u.LengthDelimited).string(e.metadata),e.configurator!==!1&&t.tag(8,u.Varint).bool(e.configurator);for(let n=0;n<e.variables.length;n++)M.internalBinaryWrite(e.variables[n],t.tag(9,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.mtls.length;n++)U.internalBinaryWrite(e.mtls[n],t.tag(10,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.codeOauth2.length;n++)me.internalBinaryWrite(e.codeOauth2[n],t.tag(11,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.oauth2.length;n++)j.internalBinaryWrite(e.oauth2[n],t.tag(12,u.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},de=new ke,ve=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.MTLSService",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.optional!==void 0&&t.tag(4,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},U=new ve,Te=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.VariableService",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.VariableService.Type",Je,"TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:5,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.type=0,e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.type=e.int32();break;case 5:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.type!==0&&t.tag(4,u.Varint).int32(e.type),e.optional!==void 0&&t.tag(5,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},M=new Te,xe=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2Service",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"grant_type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.Oauth2GrantType",ze,"OAUTH2_GRANT_TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:5,name:"scopes",kind:"scalar",repeat:2,T:9,options:{"buf.validate.field":{repeated:{minItems:"1",maxItems:"500",unique:!0,items:{string:{minLen:"1",maxLen:"100"}}}}}},{no:6,name:"auth_method",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.plugins.v1.Oauth2AuthType",Ke,"OAUTH2_AUTH_TYPE_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}},{no:7,name:"alg",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.plugins.v1.PrivateKeyAlg",qe,"PRIVATE_KEY_ALG_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}},{no:8,name:"client_id",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:9,name:"token_endpoint",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:10,name:"code",kind:"message",T:()=>fe},{no:11,name:"optional",kind:"scalar",opt:!0,T:8}],{"buf.validate.message":{cel:[{id:"oauth2.auth_method",message:"The auth_method property must be set in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE or OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS",expression:"has(this.auth_method) == (this.grant_type == 1 || this.grant_type == 2)"},{id:"oauth2.alg",message:"The alg property must be set in case of grant_type OAUTH2_GRANT_TYPE_JWT_BEARER, OAUTH2_GRANT_TYPE_SAML2_BEARER or auth_method OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT, OAUTH2_AUTH_TYPE_SAML2_BEARER",expression:"has(this.alg) == (this.grant_type == 3 || this.grant_type == 4 || this.auth_method == 3 || this.auth_method == 5)"},{id:"oauth2.code",message:"The code property must be set in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE",expression:"has(this.code) == (this.grant_type == 1)"},{id:"oauth2.optional",message:"The optional property cannot be set to true in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE",expression:"!has(this.optional) || this.grant_type != 1 || (!this.optional && this.grant_type == 1)"}]}})}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.grantType=0,t.scopes=[],t.tokenEndpoint="",e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.grantType=e.int32();break;case 5:n.scopes.push(e.string());break;case 6:n.authMethod=e.int32();break;case 7:n.alg=e.int32();break;case 8:n.clientId=e.string();break;case 9:n.tokenEndpoint=e.string();break;case 10:n.code=fe.internalBinaryRead(e,e.uint32(),i,n.code);break;case 11:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.grantType!==0&&t.tag(4,u.Varint).int32(e.grantType);for(let n=0;n<e.scopes.length;n++)t.tag(5,u.LengthDelimited).string(e.scopes[n]);e.authMethod!==void 0&&t.tag(6,u.Varint).int32(e.authMethod),e.alg!==void 0&&t.tag(7,u.Varint).int32(e.alg),e.clientId!==void 0&&t.tag(8,u.LengthDelimited).string(e.clientId),e.tokenEndpoint!==""&&t.tag(9,u.LengthDelimited).string(e.tokenEndpoint),e.code&&fe.internalBinaryWrite(e.code,t.tag(10,u.LengthDelimited).fork(),i).join(),e.optional!==void 0&&t.tag(11,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},j=new xe,Re=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2CodeBinding",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.optional!==void 0&&t.tag(2,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},me=new Re,we=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2Code",[{no:1,name:"auth_endpoint",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:2,name:"issuer",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"4096"}}}},{no:3,name:"jwks_uri",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:4,name:"additional_params",kind:"map",K:9,V:{kind:"scalar",T:9},options:{"buf.validate.field":{map:{minPairs:"0",maxPairs:"50",keys:{string:{minLen:"1",maxLen:"250"}},values:{string:{minLen:"1",maxLen:"250"}}}}}},{no:5,name:"use_pkce",kind:"scalar",T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.authEndpoint="",t.issuer="",t.jwksUri="",t.additionalParams={},t.usePkce=!1,e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.authEndpoint=e.string();break;case 2:n.issuer=e.string();break;case 3:n.jwksUri=e.string();break;case 4:this.binaryReadMap4(n.additionalParams,e,i);break;case 5:n.usePkce=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}binaryReadMap4(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=t.string();break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.plugins.v1.Oauth2Code.additional_params")}}e[s??""]=r??""}internalBinaryWrite(e,t,i){e.authEndpoint!==""&&t.tag(1,u.LengthDelimited).string(e.authEndpoint),e.issuer!==""&&t.tag(2,u.LengthDelimited).string(e.issuer),e.jwksUri!==""&&t.tag(3,u.LengthDelimited).string(e.jwksUri);for(let n of globalThis.Object.keys(e.additionalParams))t.tag(4,u.LengthDelimited).fork().tag(1,u.LengthDelimited).string(n).tag(2,u.LengthDelimited).string(e.additionalParams[n]).join();e.usePkce!==!1&&t.tag(5,u.Varint).bool(e.usePkce);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},fe=new we,Z=new St("mochabugapis.adapt.plugins.v1.PluginService",[{name:"UploadPlugin",clientStreaming:!0,options:{"google.api.http":{post:"/v1/plugins/upload",body:"*"}},I:It,O:Ot}],{"google.api.default_host":"adapt.mochabugapis.com","google.api.oauth_scopes":"https://www.mochabugapis.com/auth/adapt/plugins,https://www.mochabugapis.com/auth/adapt/plugins.upload"});import z from"fs";import{mkdirp as Zt}from"mkdirp";import T from"path";import{WireType as C}from"@protobuf-ts/runtime";import{UnknownFieldHandler as it}from"@protobuf-ts/runtime";import{reflectionMergePartial as Kt}from"@protobuf-ts/runtime";import{MessageType as Gt}from"@protobuf-ts/runtime";import{WireType as Q}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Xe}from"@protobuf-ts/runtime";import{reflectionMergePartial as Mt}from"@protobuf-ts/runtime";import{MessageType as jt}from"@protobuf-ts/runtime";import{WireType as De}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Ze}from"@protobuf-ts/runtime";import{reflectionMergePartial as $t}from"@protobuf-ts/runtime";import{MessageType as Ut}from"@protobuf-ts/runtime";import{WireType as J}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Ye}from"@protobuf-ts/runtime";import{reflectionMergePartial as Wt}from"@protobuf-ts/runtime";import{MessageType as Vt}from"@protobuf-ts/runtime";import{WireType as y}from"@protobuf-ts/runtime";import{UnknownFieldHandler as He}from"@protobuf-ts/runtime";import{reflectionMergePartial as Nt}from"@protobuf-ts/runtime";import{MessageType as Dt}from"@protobuf-ts/runtime";import{WireType as I}from"@protobuf-ts/runtime";import{UnknownFieldHandler as A}from"@protobuf-ts/runtime";import{reflectionMergePartial as Se}from"@protobuf-ts/runtime";import{isJsonObject as Pt}from"@protobuf-ts/runtime";import{typeofJsonValue as Ie}from"@protobuf-ts/runtime";import{MessageType as Oe}from"@protobuf-ts/runtime";var Ge=(e=>(e[e.NULL_VALUE=0]="NULL_VALUE",e))(Ge||{}),_e=class extends Oe{constructor(){super("google.protobuf.Struct",[{no:1,name:"fields",kind:"map",K:9,V:{kind:"message",T:()=>R}}])}internalJsonWrite(e,t){let i={};for(let[a,n]of Object.entries(e.fields))i[a]=R.toJson(n);return i}internalJsonRead(e,t,i){if(!Pt(e))throw new globalThis.Error("Unable to parse message "+this.typeName+" from JSON "+Ie(e)+".");i||(i=this.create());for(let[a,n]of globalThis.Object.entries(e))i.fields[a]=R.fromJson(n);return i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.fields={},e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:this.binaryReadMap1(n.fields,e,i);break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?A.onRead:l)(this.typeName,n,r,p,c)}}return n}binaryReadMap1(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=R.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field google.protobuf.Struct.fields")}}e[s??""]=r??R.create()}internalBinaryWrite(e,t,i){for(let n of globalThis.Object.keys(e.fields))t.tag(1,I.LengthDelimited).fork().tag(1,I.LengthDelimited).string(n),t.tag(2,I.LengthDelimited).fork(),R.internalBinaryWrite(e.fields[n],t,i),t.join().join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?A.onWrite:a)(this.typeName,e,t),t}},D=new _e,Le=class extends Oe{constructor(){super("google.protobuf.Value",[{no:1,name:"null_value",kind:"enum",oneof:"kind",T:()=>["google.protobuf.NullValue",Ge]},{no:2,name:"number_value",kind:"scalar",oneof:"kind",T:1},{no:3,name:"string_value",kind:"scalar",oneof:"kind",T:9},{no:4,name:"bool_value",kind:"scalar",oneof:"kind",T:8},{no:5,name:"struct_value",kind:"message",oneof:"kind",T:()=>D},{no:6,name:"list_value",kind:"message",oneof:"kind",T:()=>X}])}internalJsonWrite(e,t){if(e.kind.oneofKind===void 0)throw new globalThis.Error;switch(e.kind.oneofKind){case void 0:throw new globalThis.Error;case"boolValue":return e.kind.boolValue;case"nullValue":return null;case"numberValue":let i=e.kind.numberValue;if(typeof i=="number"&&!Number.isFinite(i))throw new globalThis.Error;return i;case"stringValue":return e.kind.stringValue;case"listValue":let a=this.fields.find(s=>s.no===6);if(a?.kind!=="message")throw new globalThis.Error;return a.T().toJson(e.kind.listValue);case"structValue":let n=this.fields.find(s=>s.no===5);if(n?.kind!=="message")throw new globalThis.Error;return n.T().toJson(e.kind.structValue)}}internalJsonRead(e,t,i){switch(i||(i=this.create()),typeof e){case"number":i.kind={oneofKind:"numberValue",numberValue:e};break;case"string":i.kind={oneofKind:"stringValue",stringValue:e};break;case"boolean":i.kind={oneofKind:"boolValue",boolValue:e};break;case"object":e===null?i.kind={oneofKind:"nullValue",nullValue:0}:globalThis.Array.isArray(e)?i.kind={oneofKind:"listValue",listValue:X.fromJson(e)}:i.kind={oneofKind:"structValue",structValue:D.fromJson(e)};break;default:throw new globalThis.Error("Unable to parse "+this.typeName+" from JSON "+Ie(e))}return i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.kind={oneofKind:void 0},e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.kind={oneofKind:"nullValue",nullValue:e.int32()};break;case 2:n.kind={oneofKind:"numberValue",numberValue:e.double()};break;case 3:n.kind={oneofKind:"stringValue",stringValue:e.string()};break;case 4:n.kind={oneofKind:"boolValue",boolValue:e.bool()};break;case 5:n.kind={oneofKind:"structValue",structValue:D.internalBinaryRead(e,e.uint32(),i,n.kind.structValue)};break;case 6:n.kind={oneofKind:"listValue",listValue:X.internalBinaryRead(e,e.uint32(),i,n.kind.listValue)};break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?A.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.kind.oneofKind==="nullValue"&&t.tag(1,I.Varint).int32(e.kind.nullValue),e.kind.oneofKind==="numberValue"&&t.tag(2,I.Bit64).double(e.kind.numberValue),e.kind.oneofKind==="stringValue"&&t.tag(3,I.LengthDelimited).string(e.kind.stringValue),e.kind.oneofKind==="boolValue"&&t.tag(4,I.Varint).bool(e.kind.boolValue),e.kind.oneofKind==="structValue"&&D.internalBinaryWrite(e.kind.structValue,t.tag(5,I.LengthDelimited).fork(),i).join(),e.kind.oneofKind==="listValue"&&X.internalBinaryWrite(e.kind.listValue,t.tag(6,I.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?A.onWrite:a)(this.typeName,e,t),t}},R=new Le,Ee=class extends Oe{constructor(){super("google.protobuf.ListValue",[{no:1,name:"values",kind:"message",repeat:1,T:()=>R}])}internalJsonWrite(e,t){return e.values.map(i=>R.toJson(i))}internalJsonRead(e,t,i){if(!globalThis.Array.isArray(e))throw new globalThis.Error("Unable to parse "+this.typeName+" from JSON "+Ie(e));i||(i=this.create());let a=e.map(n=>R.fromJson(n));return i.values.push(...a),i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.values=[],e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.values.push(R.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?A.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){for(let n=0;n<e.values.length;n++)R.internalBinaryWrite(e.values[n],t.tag(1,I.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?A.onWrite:a)(this.typeName,e,t),t}},X=new Ee;var Pe=class extends Dt{constructor(){super("mochabugapis.adapt.graph.JTDSchema",[{no:1,name:"definitions",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:2,name:"metadata",kind:"message",T:()=>D},{no:3,name:"nullable",kind:"scalar",opt:!0,T:8},{no:4,name:"ref",kind:"scalar",opt:!0,T:9},{no:5,name:"type",kind:"scalar",opt:!0,T:9},{no:6,name:"enum",kind:"scalar",repeat:2,T:9},{no:7,name:"elements",kind:"message",T:()=>f},{no:8,name:"properties",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:9,name:"optional_properties",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:10,name:"additional_properties",kind:"scalar",opt:!0,T:8},{no:11,name:"values",kind:"message",T:()=>f},{no:12,name:"discriminator",kind:"scalar",opt:!0,T:9},{no:13,name:"mapping",kind:"map",K:9,V:{kind:"message",T:()=>f}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.definitions={},t.enum=[],t.properties={},t.optionalProperties={},t.mapping={},e!==void 0&&Nt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:this.binaryReadMap1(n.definitions,e,i);break;case 2:n.metadata=D.internalBinaryRead(e,e.uint32(),i,n.metadata);break;case 3:n.nullable=e.bool();break;case 4:n.ref=e.string();break;case 5:n.type=e.string();break;case 6:n.enum.push(e.string());break;case 7:n.elements=f.internalBinaryRead(e,e.uint32(),i,n.elements);break;case 8:this.binaryReadMap8(n.properties,e,i);break;case 9:this.binaryReadMap9(n.optionalProperties,e,i);break;case 10:n.additionalProperties=e.bool();break;case 11:n.values=f.internalBinaryRead(e,e.uint32(),i,n.values);break;case 12:n.discriminator=e.string();break;case 13:this.binaryReadMap13(n.mapping,e,i);break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?He.onRead:l)(this.typeName,n,r,p,c)}}return n}binaryReadMap1(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.definitions")}}e[s??""]=r??f.create()}binaryReadMap8(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.properties")}}e[s??""]=r??f.create()}binaryReadMap9(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.optional_properties")}}e[s??""]=r??f.create()}binaryReadMap13(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.mapping")}}e[s??""]=r??f.create()}internalBinaryWrite(e,t,i){for(let n of globalThis.Object.keys(e.definitions))t.tag(1,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.definitions[n],t,i),t.join().join();e.metadata&&D.internalBinaryWrite(e.metadata,t.tag(2,y.LengthDelimited).fork(),i).join(),e.nullable!==void 0&&t.tag(3,y.Varint).bool(e.nullable),e.ref!==void 0&&t.tag(4,y.LengthDelimited).string(e.ref),e.type!==void 0&&t.tag(5,y.LengthDelimited).string(e.type);for(let n=0;n<e.enum.length;n++)t.tag(6,y.LengthDelimited).string(e.enum[n]);e.elements&&f.internalBinaryWrite(e.elements,t.tag(7,y.LengthDelimited).fork(),i).join();for(let n of globalThis.Object.keys(e.properties))t.tag(8,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.properties[n],t,i),t.join().join();for(let n of globalThis.Object.keys(e.optionalProperties))t.tag(9,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.optionalProperties[n],t,i),t.join().join();e.additionalProperties!==void 0&&t.tag(10,y.Varint).bool(e.additionalProperties),e.values&&f.internalBinaryWrite(e.values,t.tag(11,y.LengthDelimited).fork(),i).join(),e.discriminator!==void 0&&t.tag(12,y.LengthDelimited).string(e.discriminator);for(let n of globalThis.Object.keys(e.mapping))t.tag(13,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.mapping[n],t,i),t.join().join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?He.onWrite:a)(this.typeName,e,t),t}},f=new Pe;var Ne=class extends Vt{constructor(){super("mochabugapis.adapt.graph.SignalDescriptor",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:5,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"50"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"schema",kind:"message",T:()=>f,options:{"buf.validate.field":{required:!0}}},{no:4,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&Wt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 5:n.label=e.string();break;case 2:n.description=e.string();break;case 3:n.schema=f.internalBinaryRead(e,e.uint32(),i,n.schema);break;case 4:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Ye.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,J.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(5,J.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(2,J.LengthDelimited).string(e.description),e.schema&&f.internalBinaryWrite(e.schema,t.tag(3,J.LengthDelimited).fork(),i).join(),e.optional!==void 0&&t.tag(4,J.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?Ye.onWrite:a)(this.typeName,e,t),t}},w=new Ne;var We=class extends Ut{constructor(){super("mochabugapis.adapt.graph.Transceiver",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"signals",kind:"message",repeat:1,T:()=>w,options:{"buf.validate.field":{cel:[{id:"signals_unique_names",message:"Each signal must have a unique name.",expression:"this.map(signal, signal.name).unique()"}],repeated:{maxItems:"512"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.signals=[],e!==void 0&&$t(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.signals.push(w.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Ze.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,De.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,De.LengthDelimited).string(e.description);for(let n=0;n<e.signals.length;n++)w.internalBinaryWrite(e.signals[n],t.tag(3,De.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?Ze.onWrite:a)(this.typeName,e,t),t}},V=new We;var Ve=class extends jt{constructor(){super("mochabugapis.adapt.graph.Exchange",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"transmitters",kind:"message",repeat:1,T:()=>V,options:{"buf.validate.field":{cel:[{id:"transmitters_unique_names",message:"Each transmitter must have a unique name.",expression:"this.map(transmitter, transmitter.name).unique()"}],repeated:{maxItems:"10"}}}},{no:4,name:"receivers",kind:"message",repeat:1,T:()=>V,options:{"buf.validate.field":{cel:[{id:"receivers_unique_names",message:"Each receiver must have a unique name.",expression:"this.map(receiver, receiver.name).unique()"}],repeated:{minItems:"1",maxItems:"10"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.transmitters=[],t.receivers=[],e!==void 0&&Mt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.transmitters.push(V.internalBinaryRead(e,e.uint32(),i));break;case 4:n.receivers.push(V.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Xe.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,Q.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,Q.LengthDelimited).string(e.description);for(let n=0;n<e.transmitters.length;n++)V.internalBinaryWrite(e.transmitters[n],t.tag(3,Q.LengthDelimited).fork(),i).join();for(let n=0;n<e.receivers.length;n++)V.internalBinaryWrite(e.receivers[n],t.tag(4,Q.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?Xe.onWrite:a)(this.typeName,e,t),t}},$=new Ve;import{WireType as ee}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Qe}from"@protobuf-ts/runtime";import{reflectionMergePartial as At}from"@protobuf-ts/runtime";import{MessageType as Ct}from"@protobuf-ts/runtime";var $e=class extends Ct{constructor(){super("mochabugapis.adapt.graph.Transmitter",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"signals",kind:"message",repeat:1,T:()=>w,options:{"buf.validate.field":{cel:[{id:"signals_unique_names",message:"Each signal must have a unique name.",expression:"this.map(signal, signal.name).unique()"}],repeated:{maxItems:"512"}}}},{no:4,name:"failure",kind:"scalar",T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.signals=[],t.failure=!1,e!==void 0&&At(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.signals.push(w.internalBinaryRead(e,e.uint32(),i));break;case 4:n.failure=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Qe.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,ee.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,ee.LengthDelimited).string(e.description);for(let n=0;n<e.signals.length;n++)w.internalBinaryWrite(e.signals[n],t.tag(3,ee.LengthDelimited).fork(),i).join();e.failure!==!1&&t.tag(4,ee.Varint).bool(e.failure);let a=i.writeUnknownFields;return a!==!1&&(a==!0?Qe.onWrite:a)(this.typeName,e,t),t}},te=new $e;import{WireType as Me}from"@protobuf-ts/runtime";import{UnknownFieldHandler as nt}from"@protobuf-ts/runtime";import{reflectionMergePartial as qt}from"@protobuf-ts/runtime";import{MessageType as zt}from"@protobuf-ts/runtime";import{WireType as ne}from"@protobuf-ts/runtime";import{UnknownFieldHandler as et}from"@protobuf-ts/runtime";import{reflectionMergePartial as Ft}from"@protobuf-ts/runtime";import{MessageType as Jt}from"@protobuf-ts/runtime";var tt=(a=>(a[a.UNSPECIFIED=0]="UNSPECIFIED",a[a.UNBOUND=1]="UNBOUND",a[a.INVALID_SOURCE=2]="INVALID_SOURCE",a[a.SCHEMA_MISMATCH=3]="SCHEMA_MISMATCH",a))(tt||{}),Ue=class extends Jt{constructor(){super("mochabugapis.adapt.graph.SignalBinding",[{no:1,name:"descriptor",kind:"message",T:()=>w,options:{"buf.validate.field":{required:!0}}},{no:2,name:"reference",kind:"scalar",oneof:"binding",T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"constant",kind:"message",oneof:"binding",T:()=>R},{no:4,name:"error",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.graph.SignalBinding.Error",tt,"ERROR_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.binding={oneofKind:void 0},e!==void 0&&Ft(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.descriptor=w.internalBinaryRead(e,e.uint32(),i,n.descriptor);break;case 2:n.binding={oneofKind:"reference",reference:e.string()};break;case 3:n.binding={oneofKind:"constant",constant:R.internalBinaryRead(e,e.uint32(),i,n.binding.constant)};break;case 4:n.error=e.int32();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?et.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.descriptor&&w.internalBinaryWrite(e.descriptor,t.tag(1,ne.LengthDelimited).fork(),i).join(),e.binding.oneofKind==="reference"&&t.tag(2,ne.LengthDelimited).string(e.binding.reference),e.binding.oneofKind==="constant"&&R.internalBinaryWrite(e.binding.constant,t.tag(3,ne.LengthDelimited).fork(),i).join(),e.error!==void 0&&t.tag(4,ne.Varint).int32(e.error);let a=i.writeUnknownFields;return a!==!1&&(a==!0?et.onWrite:a)(this.typeName,e,t),t}},ie=new Ue;var je=class extends zt{constructor(){super("mochabugapis.adapt.graph.Receiver",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"bindings",kind:"message",repeat:1,T:()=>ie,options:{"buf.validate.field":{cel:[{id:"bindings_unique_names",message:"Each binding must have a unique name.",expression:"this.map(binding, binding.descriptor.name).unique()"}],repeated:{maxItems:"512"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.bindings=[],e!==void 0&&qt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.bindings.push(ie.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?nt.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,Me.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,Me.LengthDelimited).string(e.description);for(let n=0;n<e.bindings.length;n++)ie.internalBinaryWrite(e.bindings[n],t.tag(3,Me.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?nt.onWrite:a)(this.typeName,e,t),t}},ae=new je;var Ae=class extends Gt{constructor(){super("mochabugapis.adapt.graph.VertexConfigMetadata",[{no:1,name:"complete",kind:"scalar",T:8},{no:2,name:"receivers",kind:"message",repeat:1,T:()=>ae,options:{"buf.validate.field":{cel:[{id:"receivers_unique_names",message:"Each receiver must have a unique name.",expression:"this.map(receiver, receiver.name).unique()"}],repeated:{minItems:"1",maxItems:"50"}}}},{no:3,name:"transmitters",kind:"message",repeat:1,T:()=>te,options:{"buf.validate.field":{cel:[{id:"transmitters_unique_names",message:"Each transmitter must have a unique name.",expression:"this.map(transmitter, transmitter.name).unique()"}],repeated:{maxItems:"50"}}}},{no:4,name:"procedures",kind:"message",repeat:1,T:()=>$,options:{"buf.validate.field":{cel:[{id:"procedures_unique_names",message:"Each procedure must have a unique name.",expression:"this.map(procedure, procedure.name).unique()"}],repeated:{maxItems:"10"}}}},{no:5,name:"streams",kind:"message",repeat:1,T:()=>$,options:{"buf.validate.field":{cel:[{id:"streams_unique_names",message:"Each stream must have a unique name.",expression:"this.map(stream, stream.name).unique()"}],repeated:{maxItems:"10"}}}},{no:6,name:"cron_schedule",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_DEFAULT",string:{minLen:"1",maxLen:"100"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.complete=!1,t.receivers=[],t.transmitters=[],t.procedures=[],t.streams=[],e!==void 0&&Kt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.complete=e.bool();break;case 2:n.receivers.push(ae.internalBinaryRead(e,e.uint32(),i));break;case 3:n.transmitters.push(te.internalBinaryRead(e,e.uint32(),i));break;case 4:n.procedures.push($.internalBinaryRead(e,e.uint32(),i));break;case 5:n.streams.push($.internalBinaryRead(e,e.uint32(),i));break;case 6:n.cronSchedule=e.string();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?it.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.complete!==!1&&t.tag(1,C.Varint).bool(e.complete);for(let n=0;n<e.receivers.length;n++)ae.internalBinaryWrite(e.receivers[n],t.tag(2,C.LengthDelimited).fork(),i).join();for(let n=0;n<e.transmitters.length;n++)te.internalBinaryWrite(e.transmitters[n],t.tag(3,C.LengthDelimited).fork(),i).join();for(let n=0;n<e.procedures.length;n++)$.internalBinaryWrite(e.procedures[n],t.tag(4,C.LengthDelimited).fork(),i).join();for(let n=0;n<e.streams.length;n++)$.internalBinaryWrite(e.streams[n],t.tag(5,C.LengthDelimited).fork(),i).join();e.cronSchedule!==void 0&&t.tag(6,C.LengthDelimited).string(e.cronSchedule);let a=i.writeUnknownFields;return a!==!1&&(a==!0?it.onWrite:a)(this.typeName,e,t),t}},at=new Ae;import{execSync as Xt}from"child_process";import re from"fs";import{mkdirp as Ht}from"mkdirp";import oe from"path";import rt from"chalk";import{fileURLToPath as Yt}from"url";function g(o){return re.readFileSync(oe.join(oe.dirname(Yt(import.meta.url)),"..","assets",o)).toString()}function h(o,e){let t=oe.dirname(o);Ht.sync(t),re.writeFileSync(o,e)}function q(o){let e=oe.resolve(o);if(!re.existsSync(e))return console.error(rt.red(`Invalid command: Manifest file not found at ${e}.`)),null;try{let t=re.readFileSync(e).toString();return L.fromJsonString(t)}catch(t){return console.error(rt.red("An error occurred while reading the manifest")),console.error(t.message),null}}function se(o){return(o.charAt(0).toUpperCase()+o.substring(1)).replace("_"," ")}function Qt(o){switch(o){case"action":return 1;case"cron-trigger":return 3;case"external-trigger":return 4;case"browser":return 2;default:throw new Error("The node type is invalid")}}function le(o,e,t,i,a,n){let s=T.join(o,"src","vertices",e);if(z.existsSync(s))throw new Error(`The folder for the new vertex: ${s} already exists`);Zt.sync(s);let r=T.join(s,"executor.ts"),p={name:e,label:se(e),description:`The better description of what ${e} is doing, the better it is for both AI and humans`,type:Qt(t),metadata:T.join("src","vertices",e,"metadata.json"),configurator:i,mtls:[],codeOauth2:[],oauth2:[],variables:[]};if(n==="react"){Xt("npm install react react-dom @types/react @types/react-dom",{cwd:o,stdio:"inherit"});let c=T.join(o,"src/vertices",e,"ui");i&&(h(T.join(c,"configurator.App.tsx"),g("configurator.App.tsx")),h(T.join(c,"configurator.main.tsx"),g("configurator.main.tsx")),h(T.join(c,"configurator.ssg.tsx"),g("configurator.ssg.tsx"))),t==="browser"&&(h(T.join(c,"executor.App.tsx"),g("executor.App.tsx")),h(T.join(c,"executor.main.tsx"),g("executor.main.tsx")),h(T.join(c,"executor.ssg.tsx"),g("executor.ssg.tsx"))),z.existsSync(T.join(o,"build-client.js"))||h(T.join(o,"build-client.js"),g("build-client.js"))}switch(p.type){case 1:h(r,g("executor_action.ts"));break;case 2:n==="react"?h(r,g("executor_browser_react.tsx").replaceAll("___VERTEX_NAME___",e)):h(r,g("executor_browser_none.ts"));break;case 4:h(r,g("executor_external_trigger.ts"));break;case 3:h(r,g("executor_cron_trigger.ts"));break;default:throw new Error("The vertex type is invalid")}z.writeFileSync(T.join(o,"src","executors.ts"),ot([e,...a.map(c=>c.name)],"ExecutorEnvironment"));let l={complete:!0,receivers:[{name:"input",description:"Default input receiver",bindings:[]}],transmitters:[{name:"output",description:"Default output transmitter",signals:[],failure:!1}],procedures:[],streams:[]};return p.type===3&&(l.cronSchedule="/5 * * * * *"),i&&(n==="react"?h(T.join(s,"configurator.ts"),g("configurator_react.tsx").replaceAll("___VERTEX_NAME___",e)):h(T.join(s,"configurator.ts"),g("configurator_none.ts")),l.complete=!1,z.writeFileSync(T.join(o,"src","configurators.ts"),ot([e,...a.filter(c=>c.configurator).map(c=>c.name)],"ConfiguratorEnvironment"))),z.writeFileSync(T.join(s,"metadata.json"),at.toJsonString(l,{prettySpaces:2})),p}function ot(o,e){let t=o.map(i=>`import ${i} from './vertices/${i}/${e==="ExecutorEnvironment"?"executor":"configurator"}';`).join(`
3
3
  `);return`/**
4
4
  * ---------------------------------------------------------------------------
5
5
  * THIS FILE IS AUTOGENERATED - DO NOT EDIT MANUALLY
@@ -21,9 +21,9 @@ export default {
21
21
  async fetch(req: Request, env: ${e}, ctx: ExecutionContext): Promise<Response> {
22
22
  return await selectVertex(req, env, ctx, { ${o.join(", ")} });
23
23
  },
24
- };`}async function pt(o){let e=await Qt({message:"Type a new unused vertex name",transformer:n=>n.trim(),validate:n=>(n=n.trim(),o.vertices.filter(p=>p.name===n).length>0?!1:/^[_a-z][_a-z0-9]*$/.test(n))}),t=await en({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),i=await Xt({message:"Need a configurator for the vertex?"});console.log(Fe.magenta("Creating new vertex templates..."));let a=ce(".",e,t,i,o.vertices);o.vertices.push(a),!o.configurators&&a.configurator&&(o.configurators="dist/configurators.js"),console.log(Fe.magenta("Updating manifest...")),tn.writeFileSync("manifest.json",E.toJsonString(o,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(Fe.bgGreen("Success"))}import{confirm as nn,input as ct,select as dt}from"@inquirer/prompts";import ut from"chalk";import{execSync as Je}from"child_process";import an from"fs";import{mkdirp as mt}from"mkdirp";import x from"path";async function ft(o){let e=await ct({message:"Type plugin name",transformer:B=>B.trim().toLowerCase(),validate:B=>/^[_a-z][_a-z0-9]*$/.test(B)}),t=await dt({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),i=await ct({message:"Type a new unused vertex name",transformer:B=>B.trim().toLowerCase(),validate:B=>/^[_a-z][_a-z0-9]*$/.test(B)}),a=await nn({message:"Need a configurator for the vertex?"}),n;(a||t==="browser")&&(n=await dt({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]}));let p=[],r={};n==="react"&&(a&&(r.confClient=`${i}.config`,r.confApp=`${i}.config.App`,p.push(`'src/frontend/${r.confClient}.tsx'`)),t==="browser"&&(r.execClient=`${i}.exec`,r.execApp=`${i}.exec.App`,p.push(`'src/frontend/${r.execClient}.tsx'`))),mt.sync(o);let s=x.isAbsolute(o)?o:x.join(process.cwd(),o),d={name:e,version:"",private:!0,type:"module",scripts:n!==void 0?{"build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && node build.js && node build-client.js","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && node build.js && node build-client.js","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && node build.js && node build-client.js",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",publish:"npm run build && adaptkit publish",add:"adaptkit add"}:{"build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && node build.js","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && node build.js","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && node build.js",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",publish:"npm run build && adaptkit publish",add:"adaptkit add"},devDependencies:{unenv:"npm:unenv-nightly@*"}};if(b(x.join(s,"package.json"),JSON.stringify(d,null,2)),b(x.join(s,"README.md"),g("readme.md")),b(x.join(s,"LICENSE.md"),g("license.md")),Je("npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild",{cwd:s,stdio:"inherit"}),Je("npm install @mochabug/adapt-plugin-toolkit",{cwd:s,stdio:"inherit"}),n==="react"){if(Je("npm install react react-dom @types/react @types/react-dom",{cwd:s,stdio:"inherit"}),a){let B=g("react_app_config.tsx");b(x.join(s,"src/frontend",`${r.confApp}.tsx`),B);let U=g("react_client.tsx").replaceAll("___APP_IMPORT___",`./${r.confApp}`);b(x.join(s,"src/frontend",`${r.confClient}.tsx`),U)}if(t==="browser"){let B=g("react_app_exec.tsx");b(x.join(s,"src/frontend",`${r.execApp}.tsx`),B);let U=g("react_client.tsx").replaceAll("___APP_IMPORT___",`./${r.execApp}`);b(x.join(s,"src/frontend",`${r.execClient}.tsx`),U)}b(x.join(s,"build-client.js"),g("build-client.js").replaceAll("___ENTRYPOINTS___",p.join(","))),b(x.join(s,"global.d.ts"),g("global.d.ts"))}b(x.join(s,"tsconfig.json"),g("tsconf.json")),b(x.join(s,".gitignore"),g("gitignore")),b(x.join(s,"build.js"),g("build.js")),b(x.join(s,"inject.js"),g("inject.js"));let T=ce(s,i,t,a,[],n,r);console.log(ut.magenta("Creating manifest..."));let D={name:e,organization:"00000000-0000-0000-0000-000000000000",version:"0.1.0",label:le(e),description:`A nice description of what ${e} does`,author:"John Doe",bugs:"bugs@foobar.com",homepage:"https://www.foobar.com",repository:"https://github.com",vertices:[T],executors:"dist/executors.js",pluginVariables:[],pluginOauth2:[],pluginMtls:[]};if(n==="react"&&(mt.sync(x.join(o,"cdn")),D.cdn="cdn"),!T.metadata)throw new Error("This cannot happen");T.configurator&&(D.configurators="dist/configurators.js"),an.writeFileSync(x.join(s,"manifest.json"),E.toJsonString(D,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(ut.bgGreen("Success"))}import gt from"chalk";import{randomBytes as rn}from"crypto";import on from"express";import sn from"node-fetch";import ln from"open";import pn from"pkce-challenge";var cn=51421,dn=5,un="https://www.mochabugapis.com/auth/adapt/plugins.upload",mn="https://adapt-dev.mochabugapis.com";function fn({clientId:o,redirectUri:e,scope:t,state:i,authUrl:a,codeChallenge:n,audience:p}){let r=new URL(a);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",o),r.searchParams.set("audience",p),r.searchParams.set("redirect_uri",e),r.searchParams.set("scope",t),r.searchParams.set("state",i),r.searchParams.set("code_challenge",n),r.searchParams.set("code_challenge_method","S256"),r.toString()}function gn({redirectUri:o,codeVerifier:e,clientId:t,code:i}){let a=new URLSearchParams;return a.set("grant_type","authorization_code"),a.set("code_verifier",e),a.set("client_id",t),a.set("code",i),a.set("redirect_uri",o),a.toString()}function ht(o,e=0){return new Promise((t,i)=>{let a=cn+e,n=o.listen(a,()=>{console.log(gt.green.bold(`Server running on http://localhost:${a} to listen to OAuth2 callbacks`)),t({server:n,port:a})});n.on("error",p=>{p.code==="EADDRINUSE"&&e<dn-1?(console.log(gt.yellow.bold(`Port ${a} is in use, trying next available port.`)),n.close(),t(ht(o,e+1))):i(p)})})}var h="[waitForConsent]";async function bt(o,e,t){console.info(`${h} Starting OAuth2 consent workflow for client: ${t}`);let i=`${o}/oauth2/auth`,a=`${o}/oauth2/token`;console.info(`${h} Authorization URL: ${i}`),console.info(`${h} Token URL: ${a}`);let n=on(),p=rn(32).toString("hex");console.info(`${h} Generated state for CSRF protection`);let r={base:"",redirect:""},{code_verifier:s,code_challenge:l}=await pn();console.info(`${h} PKCE Challenge generated`);let d,T,D,B=new Promise((R,L)=>{d=R,T=L});n.get("/",async(R,L)=>{let de=fn({authUrl:i,clientId:t,redirectUri:r.redirect,scope:un,state:p,codeChallenge:l,audience:mn});console.info(`${h} Redirecting to code URL for user consent`),L.redirect(de)}),n.get("/callback",async(R,L)=>{if("error"in R.query){console.error(`${h} OAuth Error: error in callback`);let P=R.url.split("?")[1];L.redirect(`${e}?${P}`),T();return}if(R.query.state!==p){console.error(`${h} OAuth Error: Invalid state. Received state does not match.`);let P=encodeURIComponent("Invalid state parameter.");L.redirect(`${e}?error=invalid_request&error_description=${P}`),T();return}console.info(`${h} OAuth state validated`);let de=gn({clientId:t,redirectUri:r.redirect,codeVerifier:s,code:R.query.code});try{console.info(`${h} Exchanging code for token`);let P=await sn(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:de});if(!P.ok){console.error(`${h} OAuth Error: could not exchange code for token`);let _t=P.url.split("?")[1];L.redirect(`${e}?${_t}`),T();return}let Z=await P.json();console.info(`${h} Token exchange successful`),console.info(`${h} Token exchange successful. Details: `,{expires_in:Z.expires_in,scope:Z.scope,type:Z.token_type,token:"<secret>"}),D=Z.access_token,L.redirect("/success")}catch(P){console.error(`${h} Error exchanging token: ${P}`),L.redirect(`${e}?error=unkown&error_description=${encodeURIComponent("Unknown error during token exchange")}`),T()}}),n.get("/success",(R,L)=>{L.send(g("success_page.html")),D||(console.error("Token is undefined"),T()),d()});let U;try{console.info(`${h} Starting local server to handle callbacks`);let R=await ht(n);U=R.server,r.base=`http://localhost:${R.port}`,r.redirect=`${r.base}/callback`,console.info(`${h} Server started on ${r.base}`)}catch(R){console.error(`${h} Error starting server: ${R}`);return}try{return console.info(`${h} Opening user consent page`),await ln(r.base),console.info(`${h} Waiting for user consent...`),await B,console.info(`${h} OAuth consent workflow completed successfully`),D||console.error("Token is undefined"),D}catch(R){console.error(`${h} Error in OAuth2 flow: ${R}`);return}finally{console.info(`${h} Closing the server...`),U.closeAllConnections(),U.close(),console.info(`${h} Server closed`)}}import{ChannelCredentials as qe}from"@grpc/grpc-js";import{GrpcTransport as kt}from"@protobuf-ts/grpc-transport";import{RpcError as vt}from"@protobuf-ts/runtime-rpc";import bn from"archiver";import u from"chalk";import yn from"fast-glob";import V from"fs";import z from"path";import Y from"sharp";import{PassThrough as kn}from"stream";import{stackIntercept as hn}from"@protobuf-ts/runtime-rpc";var H=class{constructor(e){this._transport=e}typeName=X.typeName;methods=X.methods;options=X.options;uploadPlugin(e){let t=this.methods[0],i=this._transport.mergeOptions(e);return hn("clientStreaming",this._transport,t,i)}};async function vn(o,e,t){switch(z.extname(o)){case".avif":return await Y(o).resize(e,t).avif().toBuffer();case".gif":return await Y(o).resize(e,t).gif().toBuffer();case".jpg":case".jpeg":case".jfif":case".pjpeg":case".pjp":return await Y(o).resize(e,t).jpeg().toBuffer();case".png":return await Y(o).resize(e,t).png().toBuffer();case".svg":return V.readFileSync(o);case".webp":return await Y(o).resize(e,t).webp().toBuffer()}throw new Error("Invalid logotype")}function Tn(o){let e=z.resolve(".");return z.resolve(o).startsWith(e)}function xn(o){try{let e=z.resolve(o);return V.existsSync(e)?V.statSync(e).isDirectory():!1}catch(e){return console.error("Error checking if folder exists:",e),!1}}function yt(o){return new Promise((e,t)=>{xn(o)||t(`The folder ${o} does not exist`);let i=bn("tar",{gzip:!0,zlib:{level:9}});i.on("error",p=>{t(p)});let a=[],n=new kn;n.on("data",p=>a.push(p)),n.on("end",()=>{let p=Buffer.concat(a);console.log(`${o} have been compressed successfully into a buffer.`),e(p)}),i.pipe(n),yn(z.join(o,"**","*")).then(p=>{for(let r of p)if(V.statSync(r).isFile()){let s=z.relative(o,r);i.file(r,{name:s})}i.finalize()}).catch(p=>t(p))})}async function Tt(o,e,t){console.log("Sending the plugin to the server");let i=e.uploadPlugin({meta:t}),a={};async function n(r,s,l){if(!r||a[r])return;if(!Tn(r))throw new Error(`The file path is not safe: ${r}. It must be contained inside the manifest folder. Invalid manifest`);if(!V.existsSync(r))throw new Error(`The path does not exists: ${r}. Invalid manifest`);let d;s?(d=await vn(r,s[0],s[1]),console.log(`Compressed: ${r} to ${s[0]}x${s[1]} size`)):l?d=l:d=V.readFileSync(r),console.log(`Sending: ${r}`);let T={data:{oneofKind:"file",file:{data:d,path:r}}};await Promise.race([i.requests.send(T),i.status]),a[r]=!0}let p={data:{oneofKind:"manifest",manifest:o}};if(await i.requests.send(p),await n("README.md"),await n("LICENSE.md"),await n(o.executors),await n(o.configurators),await n(o.logo,[80,80]),o.assets&&V.existsSync(o.assets)){let r=await yt(o.assets);await n(o.assets,void 0,r)}if(o.cdn&&V.existsSync(o.cdn)){let r=await yt(o.cdn);await n(o.cdn,void 0,r)}for(let r of o.vertices)await n(r.logo,[40,40]),await n(r.metadata),r.config&&await n(r.config);await i.requests.complete(),Rn(await i.status,await i.headers,await i.trailers)}async function xt(o,e){let t=new kt({host:e,channelCredentials:qe.createInsecure(),"grpc.default_compression_algorithm":2,"grpc.default_compression_level":2,"grpc.max_send_message_length":16777216}),i=new H(t);try{await Tt(o,i)}catch(a){a instanceof vt?wt(a):console.error(a),console.log(`For more information, use: ${u.blue("adaptkit help emulate")}`)}}async function Rt(o,e,t,i){let a=new kt({host:e,channelCredentials:i?qe.createSsl(void 0,void 0,void 0,{checkServerIdentity:()=>{}}):qe.createSsl(),"grpc.default_compression_algorithm":2,"grpc.default_compression_level":2,"grpc.max_send_message_length":16777216}),n=new H(a),p={authorization:`Bearer ${t}`};try{await Tt(o,n,p)}catch(r){r instanceof vt?wt(r):console.error(r),console.log(`For more information, use: ${u.blue("adaptkit help publish")}`)}}function Rn(o,e,t){let i=u.green("=================================================="),a=u.bgGreen.black.bold(" RPC Success Details "),n=u.bold.white("Status Code: ")+u.greenBright.bold(o.code),p=o.detail?u.bold.white("Details: ")+u.greenBright(o.detail):u.gray(" No Details Provided"),r=u.bold.white(`Headers:
25
- `)+(e?u.blue(JSON.stringify(e,null,2)):u.gray(" No Metadata")),s=u.bold.white(`Trailers:
26
- `)+(t?u.blue(JSON.stringify(t,null,2)):u.gray(" No Trailers"));console.log(i),console.log(a),console.log(i),console.log(n),console.log(p),console.log(i),console.log(r),console.log(i),console.log(s),console.log(i),console.log(u.bgGreen.black.bold(" SUCCESS ")),console.log(i)}function wt(o){let e=u.red("=================================================="),t=u.bgRed.white.bold(" RPC Error Details "),i=u.bold.white("Name: ")+u.redBright.bold(o.name),a=u.bold.white("Message: ")+u.redBright(o.message),n=u.bold.white("Code: ")+u.redBright.bold(o.code),p=o.methodName?u.bold.white("Method Name: ")+u.yellowBright(o.methodName):u.gray("No Method Name"),r=o.serviceName?u.bold.white("Service Name: ")+u.yellowBright(o.serviceName):u.gray("No Service Name"),s=u.bold.white(`Metadata:
27
- `)+(o.meta?u.blue(JSON.stringify(o.meta,null,2)):u.gray(" No Metadata"));console.error(e),console.error(t),console.error(e),console.error(i),console.error(a),console.error(n),console.error(e),p&&console.error(p),r&&console.error(r),console.error(e),console.error(s),console.error(e),console.error(u.bgRed.white.bold(" ERROR ")),console.error(e)}async function Sn(o){try{return new URL(o),!0}catch{return!1}}function On(o){let e=parseInt(o,10);return e>0&&e<=65535}function Bt(o){let[e,t]=o.split(":");return _n(e)?t!==void 0?On(t)?{isValid:!0,hostname:e,port:parseInt(t,10)}:{isValid:!1,hostname:e,port:parseInt(t,10)}:{isValid:!0,hostname:e}:{isValid:!1,hostname:e}}function Pn(){return m.yellowBright(wn.textSync("Adaptkit"))}async function Nn(o,e){e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help init")}`),process.exit(1)),await ft(o)}async function Dn(o){o.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help add")}`),process.exit(1));let e=G("manifest.json");e||(console.log(`For more information, use: ${m.blue("adaptkit help add")}`),process.exit(1)),await pt(e)}async function Wn(o,e,t,i,a,n){await Sn(e)||(console.error(m.red(`Error: The provided authority url is not a valid URL: ${e}`)),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1));let{isValid:p,hostname:r,port:s}=Bt(o);p||(console.error(m.red(`Error: The provided host or port is not valid: ${r}${s?":"+s:""}`)),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),n.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1));let l=G("manifest.json");l||(console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1)),i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");let d=await bt(e,a,t);d||(console.log("Could not fetch the acccess token. Terminating..."),process.exit(1)),await Rt(l,o,d,i)}async function $n(o,e){let{isValid:t,hostname:i,port:a}=Bt(o);t||(console.error(m.red(`Error: The provided host or port is not valid: ${i}${a?":"+a:""}`)),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1));let n=G("manifest.json");n||(console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),await xt(n,o)}function Vn(o,e){e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let t=G("manifest.json");t||(console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let i=En.parse(t.version);i||(console.error(m.red(`Error: The version in the manifest is not a valid semver version: ${t.version}`)),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1)),o===null&&(console.error(m.red("You must provide either --patch --minor or --major to bump the version.")),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let a=t.version;t.version=i.inc(o).toString(),Bn.writeFileSync(Ln.join(process.cwd(),"manifest.json"),E.toJsonString(t,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(m.green(`Bumped the version from ${a} to ${t.version}`))}async function Un(){In({pkg:k}).notify({isGlobal:!0,defer:!1}),N.name("Adaptkit").version("1.0.0").description("Unleash the power of seamless plugin development with Adaptkit, your premier CLI companion for Mochabug Adapt. Effortlessly create, manage and deploy plugins with finesse. Explore the full potential of Adaptkit at "+m.underline.blue("https://www.mochabug.com")).configureHelp({sortSubcommands:!0,sortOptions:!0,showGlobalOptions:!0,helpWidth:140});let e="./";N.command("init").option("-d, --dir <dir>",`Choose the directory to initiate your plugin's journey. Default: '${e}'`,e).description("Kickstart your plugin adventure. This command scaffolds a ready-to-go project structure.").action(({dir:t},i)=>Nn(t,i)),N.command("add").description("Expand your plugin's capabilities").action((t,i)=>Dn(i)),N.command("publish").option("-h, --host <host>",m.yellow("Warning: Primarily for development purposes"),"adapt-grpc-dev.mochabugapis.com").option("-a, --authority <authority>",m.yellow("Warning: Primarily for development purposes"),"https://auth-dev.mochabugapis.com").option("-c, --client <client>",m.yellow("Warning: Primarily for development purposes"),"2d711bbb-4b57-4ad5-8bf0-f2269de5b71d").option("-e, --error-url <errorUrl>",m.yellow("Warning: Primarily for development purposes"),"https://accounts-dev.mochabug.com/services/error").option("--insecure",m.red("Ignore SSL certificate errors (insecure)")).description("Ready for liftoff? Publish your plugin to your organization with this command.").action(({host:t,authority:i,client:a,insecure:n,errorUrl:p},r)=>Wn(t,i,a,n,p,r)),N.command("emulate").option("-h, --host <host>","Specify the URL to test your plugin in the emulator. Ideal for custom port configurations.","localhost:51001").description("Take your plugin for a test drive. Best used in conjunction with your build pipeline.").action(({host:t},i)=>$n(t,i)),N.command("version").option("--patch","Bump the manifest version to the next patch version").option("--minor","Bump the manifest version to the next minor version").option("--major","Bump the manifest version to the next major version").description("The version command can manipulate the version of the plugin manifest.").action(({major:t,minor:i,patch:a},n)=>Vn(t?"major":i?"minor":a?"patch":null,n)),N.addHelpText("beforeAll",Pn()+`
28
- `),N.showHelpAfterError();try{await N.parseAsync(process.argv)}catch(t){console.error(t),console.error("An error occurred:",t.message)}}Un();
24
+ };`}async function lt(o){let e=await tn({message:"Type a new unused vertex name",transformer:s=>s.trim(),validate:s=>(s=s.trim(),o.vertices.filter(r=>r.name===s).length>0?!1:/^[_a-z][_a-z0-9]*$/.test(s))}),t=await st({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),i=await en({message:"Need a configurator for the vertex?"}),a;(i||t==="browser")&&(a=await st({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),console.log(Ce.magenta("Creating new vertex templates..."));let n=le(".",e,t,i,o.vertices,a);o.vertices.push(n),!o.configurators&&n.configurator&&(o.configurators="dist/configurators.js"),console.log(Ce.magenta("Updating manifest...")),nn.writeFileSync("manifest.json",L.toJsonString(o,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(Ce.bgGreen("Success"))}import{confirm as an,input as pt,select as ct}from"@inquirer/prompts";import ut from"chalk";import{execSync as dt}from"child_process";import rn from"fs";import{mkdirp as mt}from"mkdirp";import B from"path";async function ft(o){let e=await pt({message:"Type plugin name",transformer:c=>c.trim().toLowerCase(),validate:c=>/^[_a-z][_a-z0-9]*$/.test(c)}),t=await ct({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),i=await pt({message:"Type a new unused vertex name",transformer:c=>c.trim().toLowerCase(),validate:c=>/^[_a-z][_a-z0-9]*$/.test(c)}),a=await an({message:"Need a configurator for the vertex?"}),n;(a||t==="browser")&&(n=await ct({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),mt.sync(o);let s=B.isAbsolute(o)?o:B.join(process.cwd(),o);h(B.join(s,".gitignore"),g("gitignore"));let r={name:e,version:"",private:!0,type:"module",scripts:{"build-client":`node -e "if(require('fs').existsSync('build-client.js')) require('child_process').execSync('node build-client.js', { stdio: 'inherit' })"`,"build-common":"rimraf dist && npm run build-client && node build.js","build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && npm run build-common","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && npm run build-common","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && npm run build-common",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",add:"adaptkit add"},devDependencies:{unenv:"npm:unenv-nightly@*"}};h(B.join(s,"package.json"),JSON.stringify(r,null,2)),h(B.join(s,"README.md"),g("readme.md")),h(B.join(s,"LICENSE.md"),g("license.md")),dt("npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild rimraf glob",{cwd:s,stdio:"inherit"}),dt("npm install @mochabug/adapt-plugin-toolkit",{cwd:s,stdio:"inherit"}),h(B.join(s,"global.d.ts"),g("global.d.ts")),h(B.join(s,"tsconfig.json"),g("tsconf.json")),h(B.join(s,"build.js"),g("build.js")),h(B.join(s,"inject.js"),g("inject.js"));let p=le(s,i,t,a,[],n);console.log(ut.magenta("Creating manifest..."));let l={name:e,organization:"00000000-0000-0000-0000-000000000000",version:"0.1.0",label:se(e),description:`A nice description of what ${e} does`,author:"John Doe",bugs:"bugs@foobar.com",homepage:"https://www.foobar.com",repository:"https://github.com",vertices:[p],executors:"dist/executors.js",pluginVariables:[],pluginOauth2:[],pluginMtls:[]};if(n==="react"&&(mt.sync(B.join(o,"cdn")),l.cdn="cdn"),!p.metadata)throw new Error("This cannot happen");p.configurator&&(l.configurators="dist/configurators.js"),rn.writeFileSync(B.join(s,"manifest.json"),L.toJsonString(l,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(ut.bgGreen("Success"))}import gt from"chalk";import{randomBytes as on}from"crypto";import sn from"express";import ln from"node-fetch";import pn from"open";import cn from"pkce-challenge";var un=51421,dn=5,mn="https://www.mochabugapis.com/auth/adapt/plugins.upload",fn="https://adapt-dev.mochabugapis.com";function gn({clientId:o,redirectUri:e,scope:t,state:i,authUrl:a,codeChallenge:n,audience:s}){let r=new URL(a);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",o),r.searchParams.set("audience",s),r.searchParams.set("redirect_uri",e),r.searchParams.set("scope",t),r.searchParams.set("state",i),r.searchParams.set("code_challenge",n),r.searchParams.set("code_challenge_method","S256"),r.toString()}function hn({redirectUri:o,codeVerifier:e,clientId:t,code:i}){let a=new URLSearchParams;return a.set("grant_type","authorization_code"),a.set("code_verifier",e),a.set("client_id",t),a.set("code",i),a.set("redirect_uri",o),a.toString()}function ht(o,e=0){return new Promise((t,i)=>{let a=un+e,n=o.listen(a,()=>{console.log(gt.green.bold(`Server running on http://localhost:${a} to listen to OAuth2 callbacks`)),t({server:n,port:a})});n.on("error",s=>{s.code==="EADDRINUSE"&&e<dn-1?(console.log(gt.yellow.bold(`Port ${a} is in use, trying next available port.`)),n.close(),t(ht(o,e+1))):i(s)})})}var b="[waitForConsent]";async function bt(o,e,t){console.info(`${b} Starting OAuth2 consent workflow for client: ${t}`);let i=`${o}/oauth2/auth`,a=`${o}/oauth2/token`;console.info(`${b} Authorization URL: ${i}`),console.info(`${b} Token URL: ${a}`);let n=sn(),s=on(32).toString("hex");console.info(`${b} Generated state for CSRF protection`);let r={base:"",redirect:""},{code_verifier:p,code_challenge:l}=await cn();console.info(`${b} PKCE Challenge generated`);let c,N,H,_t=new Promise((x,_)=>{c=x,N=_});n.get("/",async(x,_)=>{let ce=gn({authUrl:i,clientId:t,redirectUri:r.redirect,scope:mn,state:s,codeChallenge:l,audience:fn});console.info(`${b} Redirecting to code URL for user consent`),_.redirect(ce)}),n.get("/callback",async(x,_)=>{if("error"in x.query){console.error(`${b} OAuth Error: error in callback`);let O=x.url.split("?")[1];_.redirect(`${e}?${O}`),N();return}if(x.query.state!==s){console.error(`${b} OAuth Error: Invalid state. Received state does not match.`);let O=encodeURIComponent("Invalid state parameter.");_.redirect(`${e}?error=invalid_request&error_description=${O}`),N();return}console.info(`${b} OAuth state validated`);let ce=hn({clientId:t,redirectUri:r.redirect,codeVerifier:p,code:x.query.code});try{console.info(`${b} Exchanging code for token`);let O=await ln(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:ce});if(!O.ok){console.error(`${b} OAuth Error: could not exchange code for token`);let Lt=O.url.split("?")[1];_.redirect(`${e}?${Lt}`),N();return}let Y=await O.json();console.info(`${b} Token exchange successful`),console.info(`${b} Token exchange successful. Details: `,{expires_in:Y.expires_in,scope:Y.scope,type:Y.token_type,token:"<secret>"}),H=Y.access_token,_.redirect("/success")}catch(O){console.error(`${b} Error exchanging token: ${O}`),_.redirect(`${e}?error=unkown&error_description=${encodeURIComponent("Unknown error during token exchange")}`),N()}}),n.get("/success",(x,_)=>{_.send(g("success_page.html")),H||(console.error("Token is undefined"),N()),c()});let pe;try{console.info(`${b} Starting local server to handle callbacks`);let x=await ht(n);pe=x.server,r.base=`http://localhost:${x.port}`,r.redirect=`${r.base}/callback`,console.info(`${b} Server started on ${r.base}`)}catch(x){console.error(`${b} Error starting server: ${x}`);return}try{return console.info(`${b} Opening user consent page`),await pn(r.base),console.info(`${b} Waiting for user consent...`),await _t,console.info(`${b} OAuth consent workflow completed successfully`),H||console.error("Token is undefined"),H}catch(x){console.error(`${b} Error in OAuth2 flow: ${x}`);return}finally{console.info(`${b} Closing the server...`),pe.closeAllConnections(),pe.close(),console.info(`${b} Server closed`)}}import{ChannelCredentials as Fe}from"@grpc/grpc-js";import{GrpcTransport as kt}from"@protobuf-ts/grpc-transport";import{RpcError as vt}from"@protobuf-ts/runtime-rpc";import yn from"archiver";import d from"chalk";import kn from"fast-glob";import W from"fs";import F from"path";import G from"sharp";import{PassThrough as vn}from"stream";import{stackIntercept as bn}from"@protobuf-ts/runtime-rpc";var K=class{constructor(e){this._transport=e}typeName=Z.typeName;methods=Z.methods;options=Z.options;uploadPlugin(e){let t=this.methods[0],i=this._transport.mergeOptions(e);return bn("clientStreaming",this._transport,t,i)}};async function Tn(o,e,t){switch(F.extname(o)){case".avif":return await G(o).resize(e,t).avif().toBuffer();case".gif":return await G(o).resize(e,t).gif().toBuffer();case".jpg":case".jpeg":case".jfif":case".pjpeg":case".pjp":return await G(o).resize(e,t).jpeg().toBuffer();case".png":return await G(o).resize(e,t).png().toBuffer();case".svg":return W.readFileSync(o);case".webp":return await G(o).resize(e,t).webp().toBuffer()}throw new Error("Invalid logotype")}function xn(o){let e=F.resolve(".");return F.resolve(o).startsWith(e)}function Rn(o){try{let e=F.resolve(o);return W.existsSync(e)?W.statSync(e).isDirectory():!1}catch(e){return console.error("Error checking if folder exists:",e),!1}}function yt(o){return new Promise((e,t)=>{Rn(o)||t(`The folder ${o} does not exist`);let i=yn("tar",{gzip:!0,zlib:{level:9}});i.on("error",s=>{t(s)});let a=[],n=new vn;n.on("data",s=>a.push(s)),n.on("end",()=>{let s=Buffer.concat(a);console.log(`${o} have been compressed successfully into a buffer.`),e(s)}),i.pipe(n),kn(F.join(o,"**","*")).then(s=>{for(let r of s)if(W.statSync(r).isFile()){let p=F.relative(o,r);i.file(r,{name:p})}i.finalize()}).catch(s=>t(s))})}async function Tt(o,e,t){console.log("Sending the plugin to the server");let i=e.uploadPlugin({meta:t}),a={};async function n(r,p,l){if(!r||a[r])return;if(!xn(r))throw new Error(`The file path is not safe: ${r}. It must be contained inside the manifest folder. Invalid manifest`);if(!W.existsSync(r))throw new Error(`The path does not exists: ${r}. Invalid manifest`);let c;p?(c=await Tn(r,p[0],p[1]),console.log(`Compressed: ${r} to ${p[0]}x${p[1]} size`)):l?c=l:c=W.readFileSync(r),console.log(`Sending: ${r}`);let N={data:{oneofKind:"file",file:{data:c,path:r}}};await Promise.race([i.requests.send(N),i.status]),a[r]=!0}let s={data:{oneofKind:"manifest",manifest:o}};if(await i.requests.send(s),await n("README.md"),await n("LICENSE.md"),await n(o.executors),await n(o.configurators),await n(o.logo,[80,80]),o.assets&&W.existsSync(o.assets)){let r=await yt(o.assets);await n(o.assets,void 0,r)}if(o.cdn&&W.existsSync(o.cdn)){let r=await yt(o.cdn);await n(o.cdn,void 0,r)}for(let r of o.vertices)await n(r.logo,[40,40]),await n(r.metadata),r.config&&await n(r.config);await i.requests.complete(),wn(await i.status,await i.headers,await i.trailers)}async function xt(o,e){let t=new kt({host:e,channelCredentials:Fe.createInsecure(),"grpc.default_compression_algorithm":2,"grpc.default_compression_level":2,"grpc.max_send_message_length":16777216}),i=new K(t);try{await Tt(o,i)}catch(a){a instanceof vt?wt(a):console.error(a),console.log(`For more information, use: ${d.blue("adaptkit help emulate")}`)}}async function Rt(o,e,t,i){let a=new kt({host:e,channelCredentials:i?Fe.createSsl(void 0,void 0,void 0,{checkServerIdentity:()=>{}}):Fe.createSsl(),"grpc.default_compression_algorithm":2,"grpc.default_compression_level":2,"grpc.max_send_message_length":16777216}),n=new K(a),s={authorization:`Bearer ${t}`};try{await Tt(o,n,s)}catch(r){r instanceof vt?wt(r):console.error(r),console.log(`For more information, use: ${d.blue("adaptkit help publish")}`)}}function wn(o,e,t){let i=d.green("=================================================="),a=d.bgGreen.black.bold(" RPC Success Details "),n=d.bold.white("Status Code: ")+d.greenBright.bold(o.code),s=o.detail?d.bold.white("Details: ")+d.greenBright(o.detail):d.gray(" No Details Provided"),r=d.bold.white(`Headers:
25
+ `)+(e?d.blue(JSON.stringify(e,null,2)):d.gray(" No Metadata")),p=d.bold.white(`Trailers:
26
+ `)+(t?d.blue(JSON.stringify(t,null,2)):d.gray(" No Trailers"));console.log(i),console.log(a),console.log(i),console.log(n),console.log(s),console.log(i),console.log(r),console.log(i),console.log(p),console.log(i),console.log(d.bgGreen.black.bold(" SUCCESS ")),console.log(i)}function wt(o){let e=d.red("=================================================="),t=d.bgRed.white.bold(" RPC Error Details "),i=d.bold.white("Name: ")+d.redBright.bold(o.name),a=d.bold.white("Message: ")+d.redBright(o.message),n=d.bold.white("Code: ")+d.redBright.bold(o.code),s=o.methodName?d.bold.white("Method Name: ")+d.yellowBright(o.methodName):d.gray("No Method Name"),r=o.serviceName?d.bold.white("Service Name: ")+d.yellowBright(o.serviceName):d.gray("No Service Name"),p=d.bold.white(`Metadata:
27
+ `)+(o.meta?d.blue(JSON.stringify(o.meta,null,2)):d.gray(" No Metadata"));console.error(e),console.error(t),console.error(e),console.error(i),console.error(a),console.error(n),console.error(e),s&&console.error(s),r&&console.error(r),console.error(e),console.error(p),console.error(e),console.error(d.bgRed.white.bold(" ERROR ")),console.error(e)}async function On(o){try{return new URL(o),!0}catch{return!1}}function Pn(o){let e=parseInt(o,10);return e>0&&e<=65535}function Bt(o){let[e,t]=o.split(":");return Ln(e)?t!==void 0?Pn(t)?{isValid:!0,hostname:e,port:parseInt(t,10)}:{isValid:!1,hostname:e,port:parseInt(t,10)}:{isValid:!0,hostname:e}:{isValid:!1,hostname:e}}function Nn(){return m.yellowBright(Bn.textSync("Adaptkit"))}async function Dn(o,e){e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help init")}`),process.exit(1)),await ft(o)}async function Wn(o){o.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help add")}`),process.exit(1));let e=q("manifest.json");e||(console.log(`For more information, use: ${m.blue("adaptkit help add")}`),process.exit(1)),await lt(e)}async function Vn(o,e,t,i,a,n){await On(e)||(console.error(m.red(`Error: The provided authority url is not a valid URL: ${e}`)),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1));let{isValid:s,hostname:r,port:p}=Bt(o);s||(console.error(m.red(`Error: The provided host or port is not valid: ${r}${p?":"+p:""}`)),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),n.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1));let l=q("manifest.json");l||(console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1)),i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");let c=await bt(e,a,t);c||(console.log("Could not fetch the acccess token. Terminating..."),process.exit(1)),await Rt(l,o,c,i)}async function $n(o,e){let{isValid:t,hostname:i,port:a}=Bt(o);t||(console.error(m.red(`Error: The provided host or port is not valid: ${i}${a?":"+a:""}`)),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1));let n=q("manifest.json");n||(console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),await xt(n,o)}function Un(o,e){e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let t=q("manifest.json");t||(console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let i=Sn.parse(t.version);i||(console.error(m.red(`Error: The version in the manifest is not a valid semver version: ${t.version}`)),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1)),o===null&&(console.error(m.red("You must provide either --patch --minor or --major to bump the version.")),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let a=t.version;t.version=i.inc(o).toString(),_n.writeFileSync(En.join(process.cwd(),"manifest.json"),L.toJsonString(t,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(m.green(`Bumped the version from ${a} to ${t.version}`))}async function Mn(){In({pkg:k}).notify({isGlobal:!0,defer:!1}),P.name("Adaptkit").version("1.0.0").description("Unleash the power of seamless plugin development with Adaptkit, your premier CLI companion for Mochabug Adapt. Effortlessly create, manage and deploy plugins with finesse. Explore the full potential of Adaptkit at "+m.underline.blue("https://www.mochabug.com")).configureHelp({sortSubcommands:!0,sortOptions:!0,showGlobalOptions:!0,helpWidth:140});let e="./";P.command("init").option("-d, --dir <dir>",`Choose the directory to initiate your plugin's journey. Default: '${e}'`,e).description("Kickstart your plugin adventure. This command scaffolds a ready-to-go project structure.").action(({dir:t},i)=>Dn(t,i)),P.command("add").description("Expand your plugin's capabilities").action((t,i)=>Wn(i)),P.command("publish").option("-h, --host <host>",m.yellow("Warning: Primarily for development purposes"),"adapt-grpc-dev.mochabugapis.com").option("-a, --authority <authority>",m.yellow("Warning: Primarily for development purposes"),"https://auth-dev.mochabugapis.com").option("-c, --client <client>",m.yellow("Warning: Primarily for development purposes"),"2d711bbb-4b57-4ad5-8bf0-f2269de5b71d").option("-e, --error-url <errorUrl>",m.yellow("Warning: Primarily for development purposes"),"https://accounts-dev.mochabug.com/services/error").option("--insecure",m.red("Ignore SSL certificate errors (insecure)")).description("Ready for liftoff? Publish your plugin to your organization with this command.").action(({host:t,authority:i,client:a,insecure:n,errorUrl:s},r)=>Vn(t,i,a,n,s,r)),P.command("emulate").option("-h, --host <host>","Specify the URL to test your plugin in the emulator. Ideal for custom port configurations.","localhost:51001").description("Take your plugin for a test drive. Best used in conjunction with your build pipeline.").action(({host:t},i)=>$n(t,i)),P.command("version").option("--patch","Bump the manifest version to the next patch version").option("--minor","Bump the manifest version to the next minor version").option("--major","Bump the manifest version to the next major version").description("The version command can manipulate the version of the plugin manifest.").action(({major:t,minor:i,patch:a},n)=>Un(t?"major":i?"minor":a?"patch":null,n)),P.addHelpText("beforeAll",Nn()+`
28
+ `),P.showHelpAfterError();try{await P.parseAsync(process.argv)}catch(t){console.error(t),console.error("An error occurred:",t.message)}}Mn();
29
29
  //# sourceMappingURL=index.js.map