build.ls
4.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
require! {'./config': {banner}, fs: {readFile, writeFile, unlink}, path, webpack}
list = <[
es5
es6.symbol
es6.object.assign
es6.object.is
es6.object.set-prototype-of
es6.object.to-string
es6.object.freeze
es6.object.seal
es6.object.prevent-extensions
es6.object.is-frozen
es6.object.is-sealed
es6.object.is-extensible
es6.object.get-own-property-descriptor
es6.object.get-prototype-of
es6.object.keys
es6.object.get-own-property-names
es6.function.name
es6.function.has-instance
es6.number.constructor
es6.number.epsilon
es6.number.is-finite
es6.number.is-integer
es6.number.is-nan
es6.number.is-safe-integer
es6.number.max-safe-integer
es6.number.min-safe-integer
es6.number.parse-float
es6.number.parse-int
es6.math.acosh
es6.math.asinh
es6.math.atanh
es6.math.cbrt
es6.math.clz32
es6.math.cosh
es6.math.expm1
es6.math.fround
es6.math.hypot
es6.math.imul
es6.math.log10
es6.math.log1p
es6.math.log2
es6.math.sign
es6.math.sinh
es6.math.tanh
es6.math.trunc
es6.string.from-code-point
es6.string.raw
es6.string.trim
es6.string.code-point-at
es6.string.ends-with
es6.string.includes
es6.string.repeat
es6.string.starts-with
es6.string.iterator
es6.array.from
es6.array.of
es6.array.iterator
es6.array.species
es6.array.copy-within
es6.array.fill
es6.array.find
es6.array.find-index
es6.regexp.constructor
es6.regexp.flags
es6.regexp.match
es6.regexp.replace
es6.regexp.search
es6.regexp.split
es6.promise
es6.map
es6.set
es6.weak-map
es6.weak-set
es6.reflect.apply
es6.reflect.construct
es6.reflect.define-property
es6.reflect.delete-property
es6.reflect.enumerate
es6.reflect.get
es6.reflect.get-own-property-descriptor
es6.reflect.get-prototype-of
es6.reflect.has
es6.reflect.is-extensible
es6.reflect.own-keys
es6.reflect.prevent-extensions
es6.reflect.set
es6.reflect.set-prototype-of
es6.date.to-string
es6.typed.array-buffer
es6.typed.data-view
es6.typed.int8-array
es6.typed.uint8-array
es6.typed.uint8-clamped-array
es6.typed.int16-array
es6.typed.uint16-array
es6.typed.int32-array
es6.typed.uint32-array
es6.typed.float32-array
es6.typed.float64-array
es7.array.includes
es7.string.at
es7.string.pad-left
es7.string.pad-right
es7.string.trim-left
es7.string.trim-right
es7.regexp.escape
es7.object.get-own-property-descriptors
es7.object.values
es7.object.entries
es7.map.to-json
es7.set.to-json
web.immediate
web.dom.iterable
web.timers
core.dict
core.get-iterator-method
core.get-iterator
core.is-iterable
core.delay
core.function.part
core.object.is-object
core.object.classof
core.object.define
core.object.make
core.number.iterator
core.string.escape-html
core.string.unescape-html
core.log
js.array.statics
]>
experimental = <[
es6.date.to-string
es6.typed.array-buffer
es6.typed.data-view
es6.typed.int8-array
es6.typed.uint8-array
es6.typed.uint8-clamped-array
es6.typed.int16-array
es6.typed.uint16-array
es6.typed.int32-array
es6.typed.uint32-array
es6.typed.float32-array
es6.typed.float64-array
]>
libraryBlacklist = <[
es6.object.to-string
es6.function.name
es6.regexp.constructor
es6.regexp.flags
es6.regexp.match
es6.regexp.replace
es6.regexp.search
es6.regexp.split
es6.number.constructor
]>
es5SpecialCase = <[
es6.object.freeze
es6.object.seal
es6.object.prevent-extensions
es6.object.is-frozen
es6.object.is-sealed
es6.object.is-extensible
es6.string.trim
]>
module.exports = ({modules = [], blacklist = [], library = no}, next)!->
let @ = modules.reduce ((memo, it)-> memo[it] = on; memo), {}
check = (err)->
if err
next err, ''
on
if @exp => for experimental => @[..] = on
if @es5 => for es5SpecialCase => @[..] = on
for ns of @
if @[ns]
for name in list
if name.indexOf("#ns.") is 0 and name not in experimental
@[name] = on
if library => blacklist ++= libraryBlacklist
for ns in blacklist
for name in list
if name is ns or name.indexOf("#ns.") is 0
@[name] = no
TARGET = "./__tmp#{ Math.random! }__.js"
err, info <~! webpack do
entry: list.filter(~> @[it]).map ~>
path.join(__dirname, '../', "#{ if library => '/library' else '' }/modules/#it")
output:
path: ''
filename: TARGET
if check err => return
err, script <~! readFile TARGET
if check err => return
err <~! unlink TARGET
if check err => return
next null """
#banner
!function(__e, __g, undefined){
'use strict';
#script
// CommonJS export
if(typeof module != 'undefined' && module.exports)module.exports = __e;
// RequireJS export
else if(typeof define == 'function' && define.amd)define(function(){return __e});
// Export to global object
else __g.core = __e;
}(1, 1);
"""