v0.2: new http2 syntax, drop write(..), add serverName(..)
This commit is contained in:
		
							parent
							
								
									881649cf49
								
							
						
					
					
						commit
						7ea3f8e0c1
					
				
					 2 changed files with 14 additions and 16 deletions
				
			
		|  | @ -1,5 +1,5 @@ | ||||||
| { | { | ||||||
|   "name": "@char/ngx", |   "name": "@char/ngx", | ||||||
|   "version": "0.1.1", |   "version": "0.2.0", | ||||||
|   "exports": "./ngx.ts" |   "exports": "./ngx.ts" | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								ngx.ts
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								ngx.ts
									
									
									
									
									
								
							|  | @ -1,4 +1,4 @@ | ||||||
| const NGX_VERSION = "0.1.1"; | const NGX_VERSION = "0.2.0"; | ||||||
| 
 | 
 | ||||||
| type ConfigNode = ConfigStatement | ConfigBlock | ConfigBreak | ConfigFile; | type ConfigNode = ConfigStatement | ConfigBlock | ConfigBreak | ConfigFile; | ||||||
| 
 | 
 | ||||||
|  | @ -6,11 +6,6 @@ class ConfigBuildable { | ||||||
|   build(): string { |   build(): string { | ||||||
|     throw new Error("build(..) not implemented!"); |     throw new Error("build(..) not implemented!"); | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   write(path: string) { |  | ||||||
|     const contents = this.build(); |  | ||||||
|     Deno.writeTextFileSync(path, contents); |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class ConfigBlock extends ConfigBuildable { | class ConfigBlock extends ConfigBuildable { | ||||||
|  | @ -24,7 +19,7 @@ class ConfigBlock extends ConfigBuildable { | ||||||
|     this.children = children; |     this.children = children; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   build(): string { |   override build(): string { | ||||||
|     let output = this.value; |     let output = this.value; | ||||||
|     output += " {\n  "; |     output += " {\n  "; | ||||||
|     output += this.children |     output += this.children | ||||||
|  | @ -43,13 +38,13 @@ class ConfigStatement extends ConfigBuildable { | ||||||
|     this.value = value; |     this.value = value; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   build(): string { |   override build(): string { | ||||||
|     return this.value + ";"; |     return this.value + ";"; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class ConfigBreak extends ConfigBuildable { | class ConfigBreak extends ConfigBuildable { | ||||||
|   build(): string { |   override build(): string { | ||||||
|     return ""; |     return ""; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | @ -62,7 +57,7 @@ class ConfigFile extends ConfigBuildable { | ||||||
|     this.nodes = nodes; |     this.nodes = nodes; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   build(): string { |   override build(): string { | ||||||
|     return this.nodes.map((n) => n.build()).join("\n"); |     return this.nodes.map((n) => n.build()).join("\n"); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | @ -82,7 +77,7 @@ function conform(looseNode: LooseConfigNode): ConfigNode[] { | ||||||
|       return looseNode |       return looseNode | ||||||
|         .map((n) => conform(n)) |         .map((n) => conform(n)) | ||||||
|         .reduceRight((b, a) => |         .reduceRight((b, a) => | ||||||
|           a.length === 1 ? [...a, ...b] : [...a, new ConfigBreak(), ...b] |           a.length === 1 ? [...a, ...b] : [...a, new ConfigBreak(), ...b], | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | @ -108,13 +103,16 @@ export function ngx(value?: string, children?: LooseConfigNode[]): ConfigNode { | ||||||
| 
 | 
 | ||||||
| export const listen = (...extras: string[]) => | export const listen = (...extras: string[]) => | ||||||
|   conform([ |   conform([ | ||||||
|     `listen 443 ${["ssl", "http2", ...extras].join(" ")}`, |     `listen 443 ${["ssl", ...extras].join(" ")}`, | ||||||
|     `listen [::]:443 ${["ssl", "http2", ...extras].join(" ")}`, |     `listen [::]:443 ${["ssl", ...extras].join(" ")}`, | ||||||
|  |     `http2 on`, | ||||||
|   ]); |   ]); | ||||||
| 
 | 
 | ||||||
|  | export const serverName = (name: string) => conform([`server_name ${name}`]); | ||||||
|  | 
 | ||||||
| export const letsEncrypt = ( | export const letsEncrypt = ( | ||||||
|   domain: string, |   domain: string, | ||||||
|   liveDir = "/etc/letsencrypt/live" |   liveDir = "/etc/letsencrypt/live", | ||||||
| ) => | ) => | ||||||
|   conform([ |   conform([ | ||||||
|     `ssl_certificate ${liveDir}/${domain}/fullchain.pem`, |     `ssl_certificate ${liveDir}/${domain}/fullchain.pem`, | ||||||
|  | @ -124,5 +122,5 @@ export const letsEncrypt = ( | ||||||
| // the default export is both the ngx function and a namespace:
 | // the default export is both the ngx function and a namespace:
 | ||||||
| export default Object.assign( | export default Object.assign( | ||||||
|   (value?: string, children?: LooseConfigNode[]) => ngx(value, children), |   (value?: string, children?: LooseConfigNode[]) => ngx(value, children), | ||||||
|   { NGX_VERSION, listen, letsEncrypt } |   { NGX_VERSION, listen, letsEncrypt, serverName }, | ||||||
| ); | ); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue