forked from sheetjs/sheetjs
version bump 0.10.2: infrastructure
- typescript definitions - fixed vulnerable regexes (h/t @davisjam)
This commit is contained in:
parent
71f827c4fa
commit
f6de1799c4
18
.eslintrc
18
.eslintrc
@ -2,19 +2,23 @@
|
||||
"env": { "shared-node-browser":true },
|
||||
"globals": {},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 3,
|
||||
"ecmaVersion": 3
|
||||
},
|
||||
"plugins": [ "html", "json" ],
|
||||
"extends": "eslint:recommended",
|
||||
"rules": {
|
||||
"comma-style": [ 2, "last" ],
|
||||
"comma-dangle": [ 2, "never" ],
|
||||
"curly": 0,
|
||||
"no-bitwise": 0,
|
||||
"no-console": 0,
|
||||
"no-control-regex": 0,
|
||||
"no-empty": 0,
|
||||
"no-trailing-spaces": 2,
|
||||
"no-use-before-define": [ 1, {
|
||||
"functions":false, "classes":true, "variables":false
|
||||
}],
|
||||
"no-bitwise": 0,
|
||||
"curly": 0,
|
||||
"comma-style": [ 2, "last" ],
|
||||
"no-trailing-spaces": 2,
|
||||
"semi": [ 2, "always" ],
|
||||
"comma-dangle": [ 2, "never" ]
|
||||
"no-useless-escape": 0,
|
||||
"semi": [ 2, "always" ]
|
||||
}
|
||||
}
|
||||
|
@ -27,3 +27,8 @@ misc/flowdeps.js
|
||||
[options]
|
||||
module.file_ext=.js
|
||||
module.file_ext=.njs
|
||||
module.ignore_non_literal_requires=true
|
||||
suppress_comment= \\(.\\|\n\\)*\\$FlowIgnore
|
||||
|
||||
[lints]
|
||||
deprecated-declare-exports=off
|
||||
|
11
.npmignore
11
.npmignore
@ -13,20 +13,27 @@ tmp
|
||||
*.[pP][rR][nN]
|
||||
*.[sS][lL][kK]
|
||||
*.socialcalc
|
||||
*.[xX][lL][sSwWcC]
|
||||
*.[xX][lL][sS][xXmMbB]
|
||||
*.[xX][lL][sSwWcCaAtTmM]
|
||||
*.[xX][lL][sSaAtT][xXmMbB]
|
||||
*.[oO][dD][sS]
|
||||
*.[fF][oO][dD][sS]
|
||||
*.[xX][mM][lL]
|
||||
*.[uU][oO][sS]
|
||||
*.[wW][kKqQbB][S1234567890]
|
||||
*.[qQ][pP][wW]
|
||||
*.[bB][iI][fF][fF][23458]
|
||||
*.[rR][tT][fF]
|
||||
*.[eE][tT][hH]
|
||||
*.123
|
||||
*.htm
|
||||
*.html
|
||||
*.sheetjs
|
||||
*.exe
|
||||
*.img
|
||||
.gitignore
|
||||
.gitattributes
|
||||
.fossaignore
|
||||
.spelling
|
||||
.eslintrc
|
||||
.jshintrc
|
||||
Makefile
|
||||
|
9
.spelling
Normal file
9
.spelling
Normal file
@ -0,0 +1,9 @@
|
||||
# ssf.js (C) 2013-present SheetJS -- http://sheetjs.com
|
||||
SheetJS
|
||||
ssf
|
||||
|
||||
ECMA-376
|
||||
xls
|
||||
xlsb
|
||||
|
||||
npm
|
19
Makefile
19
Makefile
@ -60,6 +60,9 @@ ctestserv: ## Start a test server on port 8000
|
||||
|
||||
## Code Checking
|
||||
|
||||
.PHONY: fullint
|
||||
fullint: lint old-lint tslint flow mdlint ## Run all checks
|
||||
|
||||
.PHONY: lint
|
||||
lint: $(TARGET) $(AUXTARGETS) ## Run eslint checks
|
||||
@eslint --ext .js,.njs,.json,.html,.htm $(TARGET) $(AUXTARGETS) $(CMDS) $(HTMLLINT) package.json bower.json
|
||||
@ -68,13 +71,18 @@ lint: $(TARGET) $(AUXTARGETS) ## Run eslint checks
|
||||
.PHONY: old-lint
|
||||
old-lint: $(TARGET) $(AUXTARGETS) ## Run jshint and jscs checks
|
||||
@jshint --show-non-errors $(TARGET) $(AUXTARGETS)
|
||||
@jshint --show-non-errors test/
|
||||
@jshint --show-non-errors $(CMDS)
|
||||
@jshint --show-non-errors package.json
|
||||
@jshint --show-non-errors package.json test/
|
||||
@jshint --show-non-errors --extract=always $(HTMLLINT)
|
||||
@jscs $(TARGET) $(AUXTARGETS)
|
||||
@jscs $(TARGET) $(AUXTARGETS) test/*.js
|
||||
if [ -e $(CLOSURE) ]; then java -jar $(CLOSURE) $(REQS) $(FLOWTARGET) --jscomp_warning=reportUnknownTypes >/dev/null; fi
|
||||
|
||||
.PHONY: tslint
|
||||
tslint: $(TARGET) ## Run typescript checks
|
||||
#@npm install dtslint typescript
|
||||
#@npm run-script dtslint
|
||||
dtslint types
|
||||
|
||||
.PHONY: flow
|
||||
flow: lint ## Run flow checker
|
||||
@flow check --all --show-all-errors
|
||||
@ -97,6 +105,11 @@ full_coveralls:
|
||||
coveralls: ## Coverage Test + Send to coveralls.io
|
||||
MINTEST=1 make full_coveralls
|
||||
|
||||
MDLINT=README.md
|
||||
.PHONY: mdlint
|
||||
mdlint: $(MDLINT) ## Check markdown documents
|
||||
alex $^
|
||||
mdspell -a -n -x -r --en-us $^
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
|
14
README.md
14
README.md
@ -1,6 +1,6 @@
|
||||
# [SheetJS SSF](http://sheetjs.com)
|
||||
|
||||
ssf (SpreadSheet Format) is a pure-JS library to format data using ECMA-376
|
||||
ssf (SpreadSheet Format) is a pure JS library to format data using ECMA-376
|
||||
spreadsheet format codes (used in popular spreadsheet software packages).
|
||||
|
||||
|
||||
@ -23,9 +23,8 @@ The browser exposes a variable `SSF`
|
||||
When installed globally, npm installs a script `ssf` that renders the format
|
||||
string with the given arguments. Running the script with `-h` displays help.
|
||||
|
||||
The script will manipulate `module.exports` if available (e.g. in a CommonJS
|
||||
`require` context). This is not always desirable. To prevent the behavior,
|
||||
define `DO_NOT_EXPORT_SSF`.
|
||||
The script will manipulate `module.exports` if available . This is not always
|
||||
desirable. To prevent the behavior, define `DO_NOT_EXPORT_SSF`.
|
||||
|
||||
## Usage
|
||||
|
||||
@ -41,7 +40,7 @@ The options argument may contain the following keys:
|
||||
|
||||
| Option Name | Default | Description |
|
||||
| :---------- | :-----: | :--------------------------------------------------- |
|
||||
| date1904 | false | Use 1904 date system if true, 1900 system if false |
|
||||
| `date1904` | false | Use 1904 date system if true, 1900 system if false |
|
||||
|
||||
### Manipulating the Internal Format Table
|
||||
|
||||
@ -89,8 +88,9 @@ granted by the Apache 2.0 license are reserved by the Original Author.
|
||||
|
||||
## References
|
||||
|
||||
- [ECMA-376] Office Open XML File Formats
|
||||
- [MS-XLSB] Excel (.xlsb) Binary File Format
|
||||
- `ECMA-376`: Office Open XML File Formats
|
||||
- `MS-XLS`: Excel Binary File Format (.xls) Structure Specification
|
||||
- `MS-XLSB`: Excel (.xlsb) Binary File Format
|
||||
|
||||
## Badges
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
||||
/* eslint-env node */
|
||||
/* eslint no-console:0 */
|
||||
/*jshint node:true */
|
||||
var X = require('../');
|
||||
var argv = process.argv.slice(2);
|
||||
if(argv.length < 2 || argv[0] == "-h" || argv[0] == "--help") {
|
||||
|
@ -1 +1 @@
|
||||
SSF.version = '0.10.1';
|
||||
SSF.version = '0.10.2';
|
||||
|
@ -1,5 +1,5 @@
|
||||
var cfregex = /\[[=<>]/;
|
||||
var cfregex2 = /\[([=<>]*)(-?\d+\.?\d*)\]/;
|
||||
var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;
|
||||
function chkcond(v, rr) {
|
||||
if(rr == null) return false;
|
||||
var thresh = parseFloat(rr[2]);
|
||||
|
@ -27,6 +27,7 @@ a { text-decoration: none }
|
||||
<script>
|
||||
/*jshint browser:true */
|
||||
/*eslint-env browser */
|
||||
/*eslint no-use-before-define:0 */
|
||||
/*global SSF */
|
||||
var F = document.getElementById('fmt');
|
||||
var V = document.getElementById('val');
|
||||
@ -55,8 +56,6 @@ if(F.addEventListener) {
|
||||
}
|
||||
|
||||
update();
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-36810333-1']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
19
package.json
19
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ssf",
|
||||
"version": "0.10.1",
|
||||
"version": "0.10.2",
|
||||
"author": "sheetjs",
|
||||
"description": "Format data using ECMA-376 spreadsheet Format Codes",
|
||||
"keywords": [ "format", "sprintf", "spreadsheet" ],
|
||||
@ -8,24 +8,31 @@
|
||||
"ssf": "./bin/ssf.njs"
|
||||
},
|
||||
"main": "./ssf",
|
||||
"types": "types",
|
||||
"dependencies": {
|
||||
"frac":"~1.1.0"
|
||||
"frac":"~1.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha":"~2.5.3",
|
||||
"mocha": "~2.5.3",
|
||||
"blanket": "~1.2.3",
|
||||
"@sheetjs/uglify-js":"~2.7.3"
|
||||
"@sheetjs/uglify-js":"~2.7.3",
|
||||
"@types/node":"^8.0.7",
|
||||
"dtslint": "^0.1.2",
|
||||
"typescript": "2.2.0"
|
||||
},
|
||||
"repository": { "type":"git", "url":"git://github.com/SheetJS/ssf.git" },
|
||||
"scripts": {
|
||||
"test": "make test"
|
||||
"test": "make test",
|
||||
"build": "make",
|
||||
"lint": "make fullint",
|
||||
"dtslint": "dtslint types"
|
||||
},
|
||||
"config": {
|
||||
"blanket": {
|
||||
"pattern": "ssf.js"
|
||||
}
|
||||
},
|
||||
"homepage": "https://oss.sheetjs.com/ssf",
|
||||
"homepage": "http://sheetjs.com/opensource",
|
||||
"bugs": { "url": "https://github.com/SheetJS/ssf/issues" },
|
||||
"license": "Apache-2.0",
|
||||
"engines": { "node": ">=0.8" }
|
||||
|
@ -4,7 +4,7 @@
|
||||
/*:: declare var DO_NOT_EXPORT_SSF: any; */
|
||||
var SSF/*:SSFModule*/ = ({}/*:any*/);
|
||||
var make_ssf = function make_ssf(SSF/*:SSFModule*/){
|
||||
SSF.version = '0.10.1';
|
||||
SSF.version = '0.10.2';
|
||||
function _strrev(x/*:string*/)/*:string*/ { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }
|
||||
function fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = ""; while(o.length < l) o+=c; return o; }
|
||||
function pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;}
|
||||
@ -793,7 +793,7 @@ function eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {
|
||||
}
|
||||
SSF._eval = eval_fmt;
|
||||
var cfregex = /\[[=<>]/;
|
||||
var cfregex2 = /\[([=<>]*)(-?\d+\.?\d*)\]/;
|
||||
var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;
|
||||
function chkcond(v, rr) {
|
||||
if(rr == null) return false;
|
||||
var thresh = parseFloat(rr[2]);
|
||||
|
4
ssf.js
4
ssf.js
@ -3,7 +3,7 @@
|
||||
/*jshint -W041 */
|
||||
var SSF = ({});
|
||||
var make_ssf = function make_ssf(SSF){
|
||||
SSF.version = '0.10.1';
|
||||
SSF.version = '0.10.2';
|
||||
function _strrev(x) { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }
|
||||
function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; }
|
||||
function pad0(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;}
|
||||
@ -783,7 +783,7 @@ out[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);
|
||||
}
|
||||
SSF._eval = eval_fmt;
|
||||
var cfregex = /\[[=<>]/;
|
||||
var cfregex2 = /\[([=<>]*)(-?\d+\.?\d*)\]/;
|
||||
var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;
|
||||
function chkcond(v, rr) {
|
||||
if(rr == null) return false;
|
||||
var thresh = parseFloat(rr[2]);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* vim: set ts=2: */
|
||||
/*jshint loopfunc:true, mocha:true, node:true */
|
||||
var SSF = require('../');
|
||||
var fs = require('fs'), assert = require('assert');
|
||||
var assert = require('assert');
|
||||
describe('dateNF override', function() {
|
||||
it('should override format code 14', function() {
|
||||
assert.equal(SSF.format(14, 43880), "2/19/20");
|
||||
|
5
types/.npmignore
Normal file
5
types/.npmignore
Normal file
@ -0,0 +1,5 @@
|
||||
Makefile
|
||||
*ssf*.ts
|
||||
doc.ts
|
||||
write.ts
|
||||
tslint.json
|
13
types/bin_ssf.ts
Executable file
13
types/bin_ssf.ts
Executable file
@ -0,0 +1,13 @@
|
||||
/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
||||
/* eslint-env node */
|
||||
/* eslint no-console:0 */
|
||||
/*jshint node:true */
|
||||
/// <reference types="../node_modules/@types/node/" />
|
||||
import X = require('ssf');
|
||||
const argv = process.argv.slice(2);
|
||||
if(argv.length < 2 || argv[0] === "-h" || argv[0] === "--help") {
|
||||
console.error("usage: ssf <format> <value>");
|
||||
console.error("output: format_as_string|format_as_number|");
|
||||
process.exit(0);
|
||||
}
|
||||
console.log(X.format(argv[0],argv[1]) + "|" + X.format(argv[0],+(argv[1])) + "|");
|
56
types/index.d.ts
vendored
Normal file
56
types/index.d.ts
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
||||
// TypeScript Version: 2.2
|
||||
|
||||
/** Version string */
|
||||
export const version: string;
|
||||
|
||||
/** Render value using format string or code */
|
||||
export function format(fmt: string|number, val: any, opts?: any): string;
|
||||
|
||||
/** Load format string */
|
||||
export function load(fmt: string, idx?: number): number;
|
||||
|
||||
/** Test if the format is a Date format */
|
||||
export function is_date(fmt: string): boolean;
|
||||
|
||||
|
||||
/** Format Table */
|
||||
export interface SSF$Table {
|
||||
[key: number]: string;
|
||||
[key: string]: string;
|
||||
}
|
||||
|
||||
/** Get format table */
|
||||
export function get_table(): SSF$Table;
|
||||
|
||||
/** Set format table */
|
||||
export function load_table(tbl: SSF$Table): void;
|
||||
|
||||
|
||||
/** Parsed date */
|
||||
export interface SSF$Date {
|
||||
/** number of whole days since relevant epoch, 0 <= D */
|
||||
D: number;
|
||||
/** integral year portion, epoch_year <= y */
|
||||
y: number;
|
||||
/** integral month portion, 1 <= m <= 12 */
|
||||
m: number;
|
||||
/** integral day portion, subject to gregorian YMD constraints */
|
||||
d: number;
|
||||
/** integral day of week (0=Sunday .. 6=Saturday) 0 <= q <= 6 */
|
||||
q: number;
|
||||
|
||||
/** number of seconds since midnight, 0 <= T < 86400 */
|
||||
T: number;
|
||||
/** integral number of hours since midnight, 0 <= H < 24 */
|
||||
H: number;
|
||||
/** integral number of minutes since the last hour, 0 <= M < 60 */
|
||||
M: number;
|
||||
/** integral number of seconds since the last minute, 0 <= S < 60 */
|
||||
S: number;
|
||||
/** sub-second part of time, 0 <= u < 1 */
|
||||
u: number;
|
||||
}
|
||||
|
||||
/** Parse numeric date code */
|
||||
export function parse_date_code(v: number, opts?: any): SSF$Date;
|
16
types/ssf-test.ts
Normal file
16
types/ssf-test.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import { format, load, get_table, load_table, parse_date_code, is_date, SSF$Table, SSF$Date } from 'ssf';
|
||||
|
||||
const t1: string = format("General", 123.456);
|
||||
const t2: string = format(0, 234.567);
|
||||
const t3: string = format("@", "1234.567");
|
||||
|
||||
load('"This is "0.00', 70);
|
||||
load('"This is "0');
|
||||
|
||||
const tbl: SSF$Table = get_table();
|
||||
load_table(tbl);
|
||||
|
||||
const date: SSF$Date = parse_date_code(43150);
|
||||
const sum: number = date.D + date.T + date.y + date.m + date.d + date.H + date.M + date.S + date.q + date.u;
|
||||
|
||||
const isdate: boolean = is_date("YYYY-MM-DD");
|
14
types/tsconfig.json
Normal file
14
types/tsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [ "es5" ],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": ".",
|
||||
"paths": { "ssf": ["."] },
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
}
|
||||
}
|
11
types/tslint.json
Normal file
11
types/tslint.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "dtslint/dtslint.json",
|
||||
"rules": {
|
||||
"whitespace": false,
|
||||
"no-sparse-arrays": false,
|
||||
"only-arrow-functions": false,
|
||||
"no-consecutive-blank-lines": false,
|
||||
"prefer-conditional-expression": false,
|
||||
"one-variable-per-declaration": false
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user