forked from sheetjs/sheetjs
		
	Base64 TypeScript
This commit is contained in:
		
							parent
							
								
									55924668a7
								
							
						
					
					
						commit
						3cbe83c855
					
				
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							| @ -19,6 +19,7 @@ ESMJSDEPS=$(shell cat misc/mjs.lst) | ||||
| 
 | ||||
| ULIB=$(shell echo $(LIB) | tr a-z A-Z) | ||||
| DEPS=$(sort $(wildcard bits/*.js)) | ||||
| TSBITS=$(patsubst modules/%,bits/%,$(wildcard modules/[0-9][0-9]_*.js)) | ||||
| TARGET=$(LIB).js | ||||
| FLOWTARGET=$(LIB).flow.js | ||||
| FLOWAUX=$(patsubst %.js,%.flow.js,$(AUXTARGETS)) | ||||
| @ -53,7 +54,7 @@ bits/01_version.js: package.json | ||||
| bits/18_cfb.js: node_modules/cfb/xlscfb.flow.js | ||||
| 	cp $^ $@ | ||||
| 
 | ||||
| bits/83_numbers.js: modules/83_numbers.js | ||||
| $(TSBITS): bits/%: modules/% | ||||
| 	cp $^ $@ | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,44 +1,47 @@ | ||||
| var Base64 = (function make_b64(){ | ||||
| 	var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | ||||
| 	return { | ||||
| 		encode: function(input/*:string*/)/*:string*/ { | ||||
| 			var o = ""; | ||||
| 			var c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0; | ||||
| 			for(var i = 0; i < input.length; ) { | ||||
| 				c1 = input.charCodeAt(i++); | ||||
| 				e1 = (c1 >> 2); | ||||
| 
 | ||||
| 				c2 = input.charCodeAt(i++); | ||||
| 				e2 = ((c1 & 3) << 4) | (c2 >> 4); | ||||
| 
 | ||||
| 				c3 = input.charCodeAt(i++); | ||||
| 				e3 = ((c2 & 15) << 2) | (c3 >> 6); | ||||
| 				e4 = (c3 & 63); | ||||
| 				if (isNaN(c2)) { e3 = e4 = 64; } | ||||
| 				else if (isNaN(c3)) { e4 = 64; } | ||||
| 				o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); | ||||
| 			} | ||||
| 			return o; | ||||
| 		}, | ||||
| 		decode: function b64_decode(input/*:string*/)/*:string*/ { | ||||
| 			var o = ""; | ||||
| 			var c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0; | ||||
| 			input = input.replace(/[^\w\+\/\=]/g, ""); | ||||
| 			for(var i = 0; i < input.length;) { | ||||
| 				e1 = map.indexOf(input.charAt(i++)); | ||||
| 				e2 = map.indexOf(input.charAt(i++)); | ||||
| 				c1 = (e1 << 2) | (e2 >> 4); | ||||
| 				o += String.fromCharCode(c1); | ||||
| 
 | ||||
| 				e3 = map.indexOf(input.charAt(i++)); | ||||
| 				c2 = ((e2 & 15) << 4) | (e3 >> 2); | ||||
| 				if (e3 !== 64) { o += String.fromCharCode(c2); } | ||||
| 
 | ||||
| 				e4 = map.indexOf(input.charAt(i++)); | ||||
| 				c3 = ((e3 & 3) << 6) | e4; | ||||
| 				if (e4 !== 64) { o += String.fromCharCode(c3); } | ||||
| 			} | ||||
| 			return o; | ||||
| 		} | ||||
| 	}; | ||||
| })(); | ||||
| var Base64 = function() { | ||||
|   var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | ||||
|   return { | ||||
|     encode: function(input) { | ||||
|       var o = ""; | ||||
|       var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; | ||||
|       for (var i = 0; i < input.length; ) { | ||||
|         c1 = input.charCodeAt(i++); | ||||
|         e1 = c1 >> 2; | ||||
|         c2 = input.charCodeAt(i++); | ||||
|         e2 = (c1 & 3) << 4 | c2 >> 4; | ||||
|         c3 = input.charCodeAt(i++); | ||||
|         e3 = (c2 & 15) << 2 | c3 >> 6; | ||||
|         e4 = c3 & 63; | ||||
|         if (isNaN(c2)) { | ||||
|           e3 = e4 = 64; | ||||
|         } else if (isNaN(c3)) { | ||||
|           e4 = 64; | ||||
|         } | ||||
|         o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); | ||||
|       } | ||||
|       return o; | ||||
|     }, | ||||
|     decode: function(input) { | ||||
|       var o = ""; | ||||
|       var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; | ||||
|       input = input.replace(/[^\w\+\/\=]/g, ""); | ||||
|       for (var i = 0; i < input.length; ) { | ||||
|         e1 = map.indexOf(input.charAt(i++)); | ||||
|         e2 = map.indexOf(input.charAt(i++)); | ||||
|         c1 = e1 << 2 | e2 >> 4; | ||||
|         o += String.fromCharCode(c1); | ||||
|         e3 = map.indexOf(input.charAt(i++)); | ||||
|         c2 = (e2 & 15) << 4 | e3 >> 2; | ||||
|         if (e3 !== 64) { | ||||
|           o += String.fromCharCode(c2); | ||||
|         } | ||||
|         e4 = map.indexOf(input.charAt(i++)); | ||||
|         c3 = (e3 & 3) << 6 | e4; | ||||
|         if (e4 !== 64) { | ||||
|           o += String.fromCharCode(c3); | ||||
|         } | ||||
|       } | ||||
|       return o; | ||||
|     } | ||||
|   }; | ||||
| }(); | ||||
|  | ||||
							
								
								
									
										47
									
								
								modules/04_base64.js
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										47
									
								
								modules/04_base64.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| var Base64 = function() { | ||||
|   var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | ||||
|   return { | ||||
|     encode: function(input) { | ||||
|       var o = ""; | ||||
|       var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; | ||||
|       for (var i = 0; i < input.length; ) { | ||||
|         c1 = input.charCodeAt(i++); | ||||
|         e1 = c1 >> 2; | ||||
|         c2 = input.charCodeAt(i++); | ||||
|         e2 = (c1 & 3) << 4 | c2 >> 4; | ||||
|         c3 = input.charCodeAt(i++); | ||||
|         e3 = (c2 & 15) << 2 | c3 >> 6; | ||||
|         e4 = c3 & 63; | ||||
|         if (isNaN(c2)) { | ||||
|           e3 = e4 = 64; | ||||
|         } else if (isNaN(c3)) { | ||||
|           e4 = 64; | ||||
|         } | ||||
|         o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); | ||||
|       } | ||||
|       return o; | ||||
|     }, | ||||
|     decode: function(input) { | ||||
|       var o = ""; | ||||
|       var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; | ||||
|       input = input.replace(/[^\w\+\/\=]/g, ""); | ||||
|       for (var i = 0; i < input.length; ) { | ||||
|         e1 = map.indexOf(input.charAt(i++)); | ||||
|         e2 = map.indexOf(input.charAt(i++)); | ||||
|         c1 = e1 << 2 | e2 >> 4; | ||||
|         o += String.fromCharCode(c1); | ||||
|         e3 = map.indexOf(input.charAt(i++)); | ||||
|         c2 = (e2 & 15) << 4 | e3 >> 2; | ||||
|         if (e3 !== 64) { | ||||
|           o += String.fromCharCode(c2); | ||||
|         } | ||||
|         e4 = map.indexOf(input.charAt(i++)); | ||||
|         c3 = (e3 & 3) << 6 | e4; | ||||
|         if (e4 !== 64) { | ||||
|           o += String.fromCharCode(c3); | ||||
|         } | ||||
|       } | ||||
|       return o; | ||||
|     } | ||||
|   }; | ||||
| }(); | ||||
							
								
								
									
										44
									
								
								modules/04_base64.ts
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										44
									
								
								modules/04_base64.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| var Base64 = (() => { | ||||
| 	var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | ||||
| 	return { | ||||
| 		encode: function(input: string): string { | ||||
| 			var o = ""; | ||||
| 			var c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0; | ||||
| 			for(var i = 0; i < input.length; ) { | ||||
| 				c1 = input.charCodeAt(i++); | ||||
| 				e1 = (c1 >> 2); | ||||
| 
 | ||||
| 				c2 = input.charCodeAt(i++); | ||||
| 				e2 = ((c1 & 3) << 4) | (c2 >> 4); | ||||
| 
 | ||||
| 				c3 = input.charCodeAt(i++); | ||||
| 				e3 = ((c2 & 15) << 2) | (c3 >> 6); | ||||
| 				e4 = (c3 & 63); | ||||
| 				if (isNaN(c2)) { e3 = e4 = 64; } | ||||
| 				else if (isNaN(c3)) { e4 = 64; } | ||||
| 				o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); | ||||
| 			} | ||||
| 			return o; | ||||
| 		}, | ||||
| 		decode: function(input: string): string { | ||||
| 			var o = ""; | ||||
| 			var c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0; | ||||
| 			input = input.replace(/[^\w\+\/\=]/g, ""); | ||||
| 			for(var i = 0; i < input.length;) { | ||||
| 				e1 = map.indexOf(input.charAt(i++)); | ||||
| 				e2 = map.indexOf(input.charAt(i++)); | ||||
| 				c1 = (e1 << 2) | (e2 >> 4); | ||||
| 				o += String.fromCharCode(c1); | ||||
| 
 | ||||
| 				e3 = map.indexOf(input.charAt(i++)); | ||||
| 				c2 = ((e2 & 15) << 4) | (e3 >> 2); | ||||
| 				if (e3 !== 64) { o += String.fromCharCode(c2); } | ||||
| 
 | ||||
| 				e4 = map.indexOf(input.charAt(i++)); | ||||
| 				c3 = ((e3 & 3) << 6) | e4; | ||||
| 				if (e4 !== 64) { o += String.fromCharCode(c3); } | ||||
| 			} | ||||
| 			return o; | ||||
| 		} | ||||
| 	}; | ||||
| })(); | ||||
| @ -5,6 +5,9 @@ ENTRIES=$(subst .ts,.js,$(TSFILES)) | ||||
| .PHONY: all | ||||
| all: $(ENTRIES) | ||||
| 
 | ||||
| 04_base64.js: 04_base64.ts $(LIBFILES) | ||||
| 	npx esbuild $< --outfile=$@ --platform=browser --target=es5 | ||||
| 
 | ||||
| 83_numbers.js: 83_numbers.ts $(LIBFILES) | ||||
| 	npx esbuild $< --bundle --outfile=$@ --platform=browser --format=iife --global-name=NUMBERS --target=es5 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user