Mihai Bazon
a4f6d46118
add option to mangle names even if eval/with is in use
...
(for more fair comparison to Closure compiler)
2012-11-06 18:19:51 +02:00
Mihai Bazon
8413787efc
use a Dictionary object instead of plain object for hashes
...
to mitigate the `__proto__` issue
related to #30
2012-11-02 10:58:45 +02:00
Mihai Bazon
cb3cafa14d
cripple scope to make IE happy :-(
...
close #24
2012-10-25 18:52:35 +03:00
Mihai Bazon
8f66458598
the sort option is broken anyway, removed it
...
we need to mangle names from outermost to innermost scope; mangling names
from inner scopes before we got to the outer scope won't work correctly,
therefore sorting doesn't make sense.
2012-10-17 15:24:47 +03:00
Mihai Bazon
370d3e0917
fix regression from fb5c01c073
...
is_digit takes a char code now, not a string
2012-10-13 12:24:27 +03:00
Mihai Bazon
172aa7a93c
cleanup
...
- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
2012-10-11 11:07:42 +03:00
Mihai Bazon
5053a29bc0
fix propagation of symbol references
2012-10-11 10:28:48 +03:00
Mihai Bazon
dacce1b1fa
seems cleaner if AST_Label doesn't inherit from AST_SymbolDeclaration
2012-10-10 11:37:51 +03:00
Mihai Bazon
3799ac8973
add --lint and display {file} in scope_warnings
2012-10-10 11:26:59 +03:00
Mihai Bazon
1b0aab2ce9
added $propdoc to AST nodes and some cleanups
...
hopefully we can make the AST documentation self-generating
2012-10-09 18:20:39 +03:00
Mihai Bazon
d4970b35ac
should not expose base54.sort() in the API docs, I think
2012-10-08 13:37:27 +03:00
Mihai Bazon
7ae09120ed
prevent mangling only when eval is *called*, not when it's just referenced
2012-10-05 16:17:31 +03:00
Mihai Bazon
682a58a1f5
removed some unused variables
2012-10-04 08:49:18 +03:00
Mihai Bazon
11863d6f9a
more cleanup (dropped AST_SwitchBlock)
2012-10-03 15:52:31 +03:00
Mihai Bazon
36be211e99
option to exclude certain names from mangling
2012-10-02 14:02:33 +03:00
Mihai Bazon
dde5b22b5e
support defines
2012-10-02 13:20:07 +03:00
Mihai Bazon
e1098b04a7
"use strict";
2012-10-02 12:45:58 +03:00
Mihai Bazon
347160c631
add AST_SymbolConst for names defined with const
2012-10-02 12:22:39 +03:00
Mihai Bazon
9e5dd81f1e
a shy attempt to obey width in the beautifier; added bracketize option to always print brackets around if/do/while/for statements; export more options via the CLI
2012-10-02 11:22:38 +03:00
Mihai Bazon
896444482a
minor
2012-09-28 11:12:47 +03:00
Mihai Bazon
05e15b1c0c
fix mangling
...
(bug in our code prevented the mangler from using a name that was in use
prior to mangling but not after it)
2012-09-27 00:01:16 +03:00
Mihai Bazon
a83b28503f
properly drop mutually-referring declarations that are not otherwise
...
referenced and have no side effects
2012-09-23 12:47:34 +03:00
Mihai Bazon
5491e1d7b1
better support for multiple input files:
...
- use a single AST_Toplevel node for all files
- keep original source filename in the tokens
2012-09-21 14:19:05 +03:00
Mihai Bazon
e8da72d304
drop unused variables
2012-09-19 12:27:38 +03:00
Mihai Bazon
a4d2340c73
fixed label scope/mangling
2012-09-18 19:26:46 +03:00
Mihai Bazon
669874d46b
minor
2012-09-18 14:17:23 +03:00
Mihai Bazon
3da0ac4897
support for directives
2012-09-18 13:21:09 +03:00
Mihai Bazon
4e0262bdfb
figure out label targets
2012-09-15 16:05:17 +03:00
Mihai Bazon
8e82d8d94c
fixed some mess with symbols/scope
...
- all symbols now have a `thedef` property which is a SymbolDef object,
instead of the `uniq` that we had before (pointing to the first occurrence
of the name as declaration).
- for undeclared symbols we still create a SymbolDef object in the toplevel
scope but mark it "undeclared"
- we can now call figure_out_scope after squeezing, which is useful in order
not to mangle names that were dropped by the squeezer
2012-09-11 15:42:28 +03:00
Mihai Bazon
da407d46c6
checkpoint
...
- discard statements with no side effects (unsafe? could be)
- safer hoist_vars (needs some revamping of scope/mangling)
2012-09-11 13:15:55 +03:00
Mihai Bazon
6b9aeb5325
adaptive base54 digits depending on char frequency (WIP)
2012-09-10 22:29:18 +03:00
Mihai Bazon
c7b484b64f
fix for variable names like toString
2012-09-05 14:31:05 +03:00
Mihai Bazon
8633b0073f
cleaned up usage of AST_BlockStatement
...
The following nodes were instances of AST_BlockStatement: AST_Scope,
AST_SwitchBlock, AST_SwitchBranch. Also, AST_Try, AST_Catch, AST_Finally
were having a body instanceof AST_BlockStatement.
Overloading the meaning of AST_BlockStatement this way turned out to be a
mess; we now have an AST_Block class that is the base class for things
having a block of statements (might or might not be bracketed). The
`this.body` of AST_Scope, AST_Try, AST_Catch, AST_Finally is now an array of
statements (as they inherit from AST_Block).
Avoiding calling superclass's _walk function in walkers (turns out we walked
a node multiple times).
2012-09-05 11:39:43 +03:00
Mihai Bazon
1b5183dd5e
checkpoint
2012-09-04 15:36:14 +03:00
Mihai Bazon
48440dc250
don't mangle names of setters/getters
2012-08-29 19:26:48 +03:00
Mihai Bazon
58a3b5e93f
update (c) years
2012-08-27 11:01:41 +03:00
Mihai Bazon
95b18e54a4
added license
2012-08-22 21:28:59 +03:00
Mihai Bazon
fb8c9e3a48
declare some properties in the node constructor so that they're copied in clone
2012-08-22 00:01:55 +03:00
Mihai Bazon
1b839eb35b
hint that brackets may be required in AST_BlockStatement
2012-08-21 19:16:05 +03:00
Mihai Bazon
ffe58a9961
cleaned up some mess and started the actual compressor
2012-08-21 16:14:43 +03:00
Mihai Bazon
7ae1c600a2
some reorganization
...
(moved pretty much everything that relates to scope in scope.js, added a
module for NodeJS that can be used with require() and exports everything.)
2012-08-21 13:53:16 +03:00
Mihai Bazon
92bd53b513
handle labels properly
...
(they can't be handled the same way as variables in a scope)
2012-08-21 12:45:06 +03:00
Mihai Bazon
159333f4c5
warn about unreferenced symbols
2012-08-21 12:07:34 +03:00
Mihai Bazon
99456c6156
more fixes:
...
- added walker for AST_ObjectProperty
- handle redefinitions properly (only mangle one symbol, make them all point
to a single definition)
DynarchLIB seems to run fine after mangling + compressed output.
2012-08-21 11:38:49 +03:00
Mihai Bazon
458e251d7e
added mangler and other stuff
2012-08-20 17:32:35 +03:00
Mihai Bazon
1fe0ff9fff
doc (WIP)
2012-08-20 00:35:54 +03:00
Mihai Bazon
6c35135ace
simple visitor API and code to figure out scope and references
2012-08-19 15:57:50 +03:00