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