@makano/rew 1.2.4 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/civet/main.js +17239 -0
- package/lib/rew/cli/cli.js +57 -5
- package/lib/rew/cli/log.js +5 -1
- package/lib/rew/cli/run.js +2 -2
- package/lib/rew/cli/utils.js +147 -60
- package/lib/rew/const/default.js +5 -1
- package/lib/rew/const/ext.js +5 -0
- package/lib/rew/const/opt.js +7 -2
- package/lib/rew/const/usage.js +15 -0
- package/lib/rew/functions/exec.js +2 -2
- package/lib/rew/functions/export.js +1 -1
- package/lib/rew/functions/fs.js +6 -1
- package/lib/rew/functions/id.js +2 -2
- package/lib/rew/functions/import.js +34 -13
- package/lib/rew/functions/require.js +17 -1
- package/lib/rew/functions/stdout.js +4 -0
- package/lib/rew/main.js +1 -13
- package/lib/rew/modules/compiler.js +122 -26
- package/lib/rew/modules/context.js +13 -1
- package/lib/rew/modules/runtime.js +37 -20
- package/lib/rew/pkgs/conf.js +1 -1
- package/lib/rew/pkgs/rune.js +8 -1
- package/lib/rew/pkgs/serve.js +373 -0
- package/lib/rew/pkgs/stream.js +10 -0
- package/lib/rew/pkgs/web.js +504 -0
- package/package.json +10 -5
- package/runtime.d.ts +943 -0
- package/lib/coffeescript/browser.js +0 -156
- package/lib/coffeescript/cake.js +0 -134
- package/lib/coffeescript/coffeescript.js +0 -465
- package/lib/coffeescript/command.js +0 -832
- package/lib/coffeescript/grammar.js +0 -1930
- package/lib/coffeescript/helpers.js +0 -513
- package/lib/coffeescript/index.js +0 -230
- package/lib/coffeescript/lexer.js +0 -2316
- package/lib/coffeescript/nodes.js +0 -9784
- package/lib/coffeescript/optparse.js +0 -258
- package/lib/coffeescript/parser.js +0 -20384
- package/lib/coffeescript/register.js +0 -120
- package/lib/coffeescript/repl.js +0 -328
- package/lib/coffeescript/rewriter.js +0 -1448
- package/lib/coffeescript/scope.js +0 -191
- package/lib/coffeescript/sourcemap.js +0 -244
@@ -1,191 +0,0 @@
|
|
1
|
-
// Generated by CoffeeScript 2.7.0
|
2
|
-
(function () {
|
3
|
-
// The **Scope** class regulates lexical scoping within CoffeeScript. As you
|
4
|
-
// generate code, you create a tree of scopes in the same shape as the nested
|
5
|
-
// function bodies. Each scope knows about the variables declared within it,
|
6
|
-
// and has a reference to its parent enclosing scope. In this way, we know which
|
7
|
-
// variables are new and need to be declared with `var`, and which are shared
|
8
|
-
// with external scopes.
|
9
|
-
var Scope,
|
10
|
-
indexOf = [].indexOf;
|
11
|
-
|
12
|
-
exports.Scope = Scope = class Scope {
|
13
|
-
// Initialize a scope with its parent, for lookups up the chain,
|
14
|
-
// as well as a reference to the **Block** node it belongs to, which is
|
15
|
-
// where it should declare its variables, a reference to the function that
|
16
|
-
// it belongs to, and a list of variables referenced in the source code
|
17
|
-
// and therefore should be avoided when generating variables. Also track comments
|
18
|
-
// that should be output as part of variable declarations.
|
19
|
-
constructor(parent, expressions, method, referencedVars) {
|
20
|
-
var ref, ref1;
|
21
|
-
this.parent = parent;
|
22
|
-
this.expressions = expressions;
|
23
|
-
this.method = method;
|
24
|
-
this.referencedVars = referencedVars;
|
25
|
-
this.variables = [
|
26
|
-
{
|
27
|
-
name: 'arguments',
|
28
|
-
type: 'arguments',
|
29
|
-
},
|
30
|
-
];
|
31
|
-
this.comments = {};
|
32
|
-
this.positions = {};
|
33
|
-
if (!this.parent) {
|
34
|
-
this.utilities = {};
|
35
|
-
}
|
36
|
-
// The `@root` is the top-level **Scope** object for a given file.
|
37
|
-
this.root = (ref = (ref1 = this.parent) != null ? ref1.root : void 0) != null ? ref : this;
|
38
|
-
}
|
39
|
-
|
40
|
-
// Adds a new variable or overrides an existing one.
|
41
|
-
add(name, type, immediate) {
|
42
|
-
if (this.shared && !immediate) {
|
43
|
-
return this.parent.add(name, type, immediate);
|
44
|
-
}
|
45
|
-
if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
|
46
|
-
return (this.variables[this.positions[name]].type = type);
|
47
|
-
} else {
|
48
|
-
return (this.positions[name] = this.variables.push({ name, type }) - 1);
|
49
|
-
}
|
50
|
-
}
|
51
|
-
|
52
|
-
// When `super` is called, we need to find the name of the current method we're
|
53
|
-
// in, so that we know how to invoke the same method of the parent class. This
|
54
|
-
// can get complicated if super is being called from an inner function.
|
55
|
-
// `namedMethod` will walk up the scope tree until it either finds the first
|
56
|
-
// function object that has a name filled in, or bottoms out.
|
57
|
-
namedMethod() {
|
58
|
-
var ref;
|
59
|
-
if (((ref = this.method) != null ? ref.name : void 0) || !this.parent) {
|
60
|
-
return this.method;
|
61
|
-
}
|
62
|
-
return this.parent.namedMethod();
|
63
|
-
}
|
64
|
-
|
65
|
-
// Look up a variable name in lexical scope, and declare it if it does not
|
66
|
-
// already exist.
|
67
|
-
find(name, type = 'var') {
|
68
|
-
if (this.check(name)) {
|
69
|
-
return true;
|
70
|
-
}
|
71
|
-
this.add(name, type);
|
72
|
-
return false;
|
73
|
-
}
|
74
|
-
|
75
|
-
// Reserve a variable name as originating from a function parameter for this
|
76
|
-
// scope. No `var` required for internal references.
|
77
|
-
parameter(name) {
|
78
|
-
if (this.shared && this.parent.check(name, true)) {
|
79
|
-
return;
|
80
|
-
}
|
81
|
-
return this.add(name, 'param');
|
82
|
-
}
|
83
|
-
|
84
|
-
// Just check to see if a variable has already been declared, without reserving,
|
85
|
-
// walks up to the root scope.
|
86
|
-
check(name) {
|
87
|
-
var ref;
|
88
|
-
return !!(this.type(name) || ((ref = this.parent) != null ? ref.check(name) : void 0));
|
89
|
-
}
|
90
|
-
|
91
|
-
// Generate a temporary variable name at the given index.
|
92
|
-
temporary(name, index, single = false) {
|
93
|
-
var diff, endCode, letter, newCode, num, startCode;
|
94
|
-
if (single) {
|
95
|
-
startCode = name.charCodeAt(0);
|
96
|
-
endCode = 'z'.charCodeAt(0);
|
97
|
-
diff = endCode - startCode;
|
98
|
-
newCode = startCode + (index % (diff + 1));
|
99
|
-
letter = String.fromCharCode(newCode);
|
100
|
-
num = Math.floor(index / (diff + 1));
|
101
|
-
return `${letter}${num || ''}`;
|
102
|
-
} else {
|
103
|
-
return `${name}${index || ''}`;
|
104
|
-
}
|
105
|
-
}
|
106
|
-
|
107
|
-
// Gets the type of a variable.
|
108
|
-
type(name) {
|
109
|
-
var i, len, ref, v;
|
110
|
-
ref = this.variables;
|
111
|
-
for (i = 0, len = ref.length; i < len; i++) {
|
112
|
-
v = ref[i];
|
113
|
-
if (v.name === name) {
|
114
|
-
return v.type;
|
115
|
-
}
|
116
|
-
}
|
117
|
-
return null;
|
118
|
-
}
|
119
|
-
|
120
|
-
// If we need to store an intermediate result, find an available name for a
|
121
|
-
// compiler-generated variable. `_var`, `_var2`, and so on...
|
122
|
-
freeVariable(name, options = {}) {
|
123
|
-
var index, ref, temp;
|
124
|
-
index = 0;
|
125
|
-
while (true) {
|
126
|
-
temp = this.temporary(name, index, options.single);
|
127
|
-
if (!(this.check(temp) || indexOf.call(this.root.referencedVars, temp) >= 0)) {
|
128
|
-
break;
|
129
|
-
}
|
130
|
-
index++;
|
131
|
-
}
|
132
|
-
if ((ref = options.reserve) != null ? ref : true) {
|
133
|
-
this.add(temp, 'var', true);
|
134
|
-
}
|
135
|
-
return temp;
|
136
|
-
}
|
137
|
-
|
138
|
-
// Ensure that an assignment is made at the top of this scope
|
139
|
-
// (or at the top-level scope, if requested).
|
140
|
-
assign(name, value) {
|
141
|
-
this.add(
|
142
|
-
name,
|
143
|
-
{
|
144
|
-
value,
|
145
|
-
assigned: true,
|
146
|
-
},
|
147
|
-
true,
|
148
|
-
);
|
149
|
-
return (this.hasAssignments = true);
|
150
|
-
}
|
151
|
-
|
152
|
-
// Does this scope have any declared variables?
|
153
|
-
hasDeclarations() {
|
154
|
-
return !!this.declaredVariables().length;
|
155
|
-
}
|
156
|
-
|
157
|
-
// Return the list of variables first declared in this scope.
|
158
|
-
declaredVariables() {
|
159
|
-
var v;
|
160
|
-
return function () {
|
161
|
-
var i, len, ref, results;
|
162
|
-
ref = this.variables;
|
163
|
-
results = [];
|
164
|
-
for (i = 0, len = ref.length; i < len; i++) {
|
165
|
-
v = ref[i];
|
166
|
-
if (v.type === 'var') {
|
167
|
-
results.push(v.name);
|
168
|
-
}
|
169
|
-
}
|
170
|
-
return results;
|
171
|
-
}
|
172
|
-
.call(this)
|
173
|
-
.sort();
|
174
|
-
}
|
175
|
-
|
176
|
-
// Return the list of assignments that are supposed to be made at the top
|
177
|
-
// of this scope.
|
178
|
-
assignedVariables() {
|
179
|
-
var i, len, ref, results, v;
|
180
|
-
ref = this.variables;
|
181
|
-
results = [];
|
182
|
-
for (i = 0, len = ref.length; i < len; i++) {
|
183
|
-
v = ref[i];
|
184
|
-
if (v.type.assigned) {
|
185
|
-
results.push(`${v.name} = ${v.type.value}`);
|
186
|
-
}
|
187
|
-
}
|
188
|
-
return results;
|
189
|
-
}
|
190
|
-
};
|
191
|
-
}).call(this);
|
@@ -1,244 +0,0 @@
|
|
1
|
-
// Generated by CoffeeScript 2.7.0
|
2
|
-
(function () {
|
3
|
-
// Source maps allow JavaScript runtimes to match running JavaScript back to
|
4
|
-
// the original source code that corresponds to it. This can be minified
|
5
|
-
// JavaScript, but in our case, we're concerned with mapping pretty-printed
|
6
|
-
// JavaScript back to CoffeeScript.
|
7
|
-
|
8
|
-
// In order to produce maps, we must keep track of positions (line number, column number)
|
9
|
-
// that originated every node in the syntax tree, and be able to generate a
|
10
|
-
// [map file](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit)
|
11
|
-
// — which is a compact, VLQ-encoded representation of the JSON serialization
|
12
|
-
// of this information — to write out alongside the generated JavaScript.
|
13
|
-
|
14
|
-
// LineMap
|
15
|
-
// -------
|
16
|
-
|
17
|
-
// A **LineMap** object keeps track of information about original line and column
|
18
|
-
// positions for a single line of output JavaScript code.
|
19
|
-
// **SourceMaps** are implemented in terms of **LineMaps**.
|
20
|
-
var LineMap, SourceMap;
|
21
|
-
|
22
|
-
LineMap = class LineMap {
|
23
|
-
constructor(line1) {
|
24
|
-
this.line = line1;
|
25
|
-
this.columns = [];
|
26
|
-
}
|
27
|
-
|
28
|
-
add(column, [sourceLine, sourceColumn], options = {}) {
|
29
|
-
if (this.columns[column] && options.noReplace) {
|
30
|
-
return;
|
31
|
-
}
|
32
|
-
return (this.columns[column] = {
|
33
|
-
line: this.line,
|
34
|
-
column,
|
35
|
-
sourceLine,
|
36
|
-
sourceColumn,
|
37
|
-
});
|
38
|
-
}
|
39
|
-
|
40
|
-
sourceLocation(column) {
|
41
|
-
var mapping;
|
42
|
-
while (!((mapping = this.columns[column]) || column <= 0)) {
|
43
|
-
column--;
|
44
|
-
}
|
45
|
-
return mapping && [mapping.sourceLine, mapping.sourceColumn];
|
46
|
-
}
|
47
|
-
};
|
48
|
-
|
49
|
-
SourceMap = function () {
|
50
|
-
var BASE64_CHARS, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK;
|
51
|
-
|
52
|
-
// SourceMap
|
53
|
-
// ---------
|
54
|
-
|
55
|
-
// Maps locations in a single generated JavaScript file back to locations in
|
56
|
-
// the original CoffeeScript source file.
|
57
|
-
|
58
|
-
// This is intentionally agnostic towards how a source map might be represented on
|
59
|
-
// disk. Once the compiler is ready to produce a "v3"-style source map, we can walk
|
60
|
-
// through the arrays of line and column buffer to produce it.
|
61
|
-
class SourceMap {
|
62
|
-
constructor() {
|
63
|
-
this.lines = [];
|
64
|
-
}
|
65
|
-
|
66
|
-
// Adds a mapping to this SourceMap. `sourceLocation` and `generatedLocation`
|
67
|
-
// are both `[line, column]` arrays. If `options.noReplace` is true, then if there
|
68
|
-
// is already a mapping for the specified `line` and `column`, this will have no
|
69
|
-
// effect.
|
70
|
-
add(sourceLocation, generatedLocation, options = {}) {
|
71
|
-
var base, column, line, lineMap;
|
72
|
-
[line, column] = generatedLocation;
|
73
|
-
lineMap = (base = this.lines)[line] || (base[line] = new LineMap(line));
|
74
|
-
return lineMap.add(column, sourceLocation, options);
|
75
|
-
}
|
76
|
-
|
77
|
-
// Look up the original position of a given `line` and `column` in the generated
|
78
|
-
// code.
|
79
|
-
sourceLocation([line, column]) {
|
80
|
-
var lineMap;
|
81
|
-
while (!((lineMap = this.lines[line]) || line <= 0)) {
|
82
|
-
line--;
|
83
|
-
}
|
84
|
-
return lineMap && lineMap.sourceLocation(column);
|
85
|
-
}
|
86
|
-
|
87
|
-
static registerCompiled(filename, source, sourcemap) {
|
88
|
-
if (sourcemap != null) {
|
89
|
-
return (SourceMap.sourceMaps[filename] = sourcemap);
|
90
|
-
}
|
91
|
-
}
|
92
|
-
|
93
|
-
static getSourceMap(filename) {
|
94
|
-
return SourceMap.sourceMaps[filename];
|
95
|
-
}
|
96
|
-
|
97
|
-
// V3 SourceMap Generation
|
98
|
-
// -----------------------
|
99
|
-
|
100
|
-
// Builds up a V3 source map, returning the generated JSON as a string.
|
101
|
-
// `options.sourceRoot` may be used to specify the sourceRoot written to the source
|
102
|
-
// map. Also, `options.sourceFiles` and `options.generatedFile` may be passed to
|
103
|
-
// set "sources" and "file", respectively.
|
104
|
-
generate(options = {}, code = null) {
|
105
|
-
var buffer,
|
106
|
-
i,
|
107
|
-
j,
|
108
|
-
lastColumn,
|
109
|
-
lastSourceColumn,
|
110
|
-
lastSourceLine,
|
111
|
-
len,
|
112
|
-
len1,
|
113
|
-
lineMap,
|
114
|
-
lineNumber,
|
115
|
-
mapping,
|
116
|
-
needComma,
|
117
|
-
ref,
|
118
|
-
ref1,
|
119
|
-
sources,
|
120
|
-
v3,
|
121
|
-
writingline;
|
122
|
-
writingline = 0;
|
123
|
-
lastColumn = 0;
|
124
|
-
lastSourceLine = 0;
|
125
|
-
lastSourceColumn = 0;
|
126
|
-
needComma = false;
|
127
|
-
buffer = '';
|
128
|
-
ref = this.lines;
|
129
|
-
for (lineNumber = i = 0, len = ref.length; i < len; lineNumber = ++i) {
|
130
|
-
lineMap = ref[lineNumber];
|
131
|
-
if (lineMap) {
|
132
|
-
ref1 = lineMap.columns;
|
133
|
-
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
134
|
-
mapping = ref1[j];
|
135
|
-
if (!mapping) {
|
136
|
-
continue;
|
137
|
-
}
|
138
|
-
while (writingline < mapping.line) {
|
139
|
-
lastColumn = 0;
|
140
|
-
needComma = false;
|
141
|
-
buffer += ';';
|
142
|
-
writingline++;
|
143
|
-
}
|
144
|
-
// Write a comma if we've already written a segment on this line.
|
145
|
-
if (needComma) {
|
146
|
-
buffer += ',';
|
147
|
-
needComma = false;
|
148
|
-
}
|
149
|
-
// Write the next segment. Segments can be 1, 4, or 5 values. If just one, then it
|
150
|
-
// is a generated column which doesn't match anything in the source code.
|
151
|
-
|
152
|
-
// The starting column in the generated source, relative to any previous recorded
|
153
|
-
// column for the current line:
|
154
|
-
buffer += this.encodeVlq(mapping.column - lastColumn);
|
155
|
-
lastColumn = mapping.column;
|
156
|
-
// The index into the list of sources:
|
157
|
-
buffer += this.encodeVlq(0);
|
158
|
-
// The starting line in the original source, relative to the previous source line.
|
159
|
-
buffer += this.encodeVlq(mapping.sourceLine - lastSourceLine);
|
160
|
-
lastSourceLine = mapping.sourceLine;
|
161
|
-
// The starting column in the original source, relative to the previous column.
|
162
|
-
buffer += this.encodeVlq(mapping.sourceColumn - lastSourceColumn);
|
163
|
-
lastSourceColumn = mapping.sourceColumn;
|
164
|
-
needComma = true;
|
165
|
-
}
|
166
|
-
}
|
167
|
-
}
|
168
|
-
// Produce the canonical JSON object format for a "v3" source map.
|
169
|
-
sources = options.sourceFiles ? options.sourceFiles : options.filename ? [options.filename] : ['<anonymous>'];
|
170
|
-
v3 = {
|
171
|
-
version: 3,
|
172
|
-
file: options.generatedFile || '',
|
173
|
-
sourceRoot: options.sourceRoot || '',
|
174
|
-
sources: sources,
|
175
|
-
names: [],
|
176
|
-
mappings: buffer,
|
177
|
-
};
|
178
|
-
if (options.sourceMap || options.inlineMap) {
|
179
|
-
v3.sourcesContent = [code];
|
180
|
-
}
|
181
|
-
return v3;
|
182
|
-
}
|
183
|
-
|
184
|
-
encodeVlq(value) {
|
185
|
-
var answer, nextChunk, signBit, valueToEncode;
|
186
|
-
answer = '';
|
187
|
-
// Least significant bit represents the sign.
|
188
|
-
signBit = value < 0 ? 1 : 0;
|
189
|
-
// The next bits are the actual value.
|
190
|
-
valueToEncode = (Math.abs(value) << 1) + signBit;
|
191
|
-
// Make sure we encode at least one character, even if valueToEncode is 0.
|
192
|
-
while (valueToEncode || !answer) {
|
193
|
-
nextChunk = valueToEncode & VLQ_VALUE_MASK;
|
194
|
-
valueToEncode = valueToEncode >> VLQ_SHIFT;
|
195
|
-
if (valueToEncode) {
|
196
|
-
nextChunk |= VLQ_CONTINUATION_BIT;
|
197
|
-
}
|
198
|
-
answer += this.encodeBase64(nextChunk);
|
199
|
-
}
|
200
|
-
return answer;
|
201
|
-
}
|
202
|
-
|
203
|
-
encodeBase64(value) {
|
204
|
-
return (
|
205
|
-
BASE64_CHARS[value] ||
|
206
|
-
(function () {
|
207
|
-
throw new Error(`Cannot Base64 encode value: ${value}`);
|
208
|
-
})()
|
209
|
-
);
|
210
|
-
}
|
211
|
-
}
|
212
|
-
|
213
|
-
// Caching
|
214
|
-
// -------
|
215
|
-
|
216
|
-
// A static source maps cache `filename`: `map`. These are used for transforming
|
217
|
-
// stack traces and are currently set in `CoffeeScript.compile` for all files
|
218
|
-
// compiled with the source maps option.
|
219
|
-
SourceMap.sourceMaps = Object.create(null);
|
220
|
-
|
221
|
-
// Base64 VLQ Encoding
|
222
|
-
// -------------------
|
223
|
-
|
224
|
-
// Note that SourceMap VLQ encoding is "backwards". MIDI-style VLQ encoding puts
|
225
|
-
// the most-significant-bit (MSB) from the original value into the MSB of the VLQ
|
226
|
-
// encoded value (see [Wikipedia](https://en.wikipedia.org/wiki/File:Uintvar_coding.svg)).
|
227
|
-
// SourceMap VLQ does things the other way around, with the least significat four
|
228
|
-
// bits of the original value encoded into the first byte of the VLQ encoded value.
|
229
|
-
VLQ_SHIFT = 5;
|
230
|
-
|
231
|
-
VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT; // 0010 0000
|
232
|
-
|
233
|
-
VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1; // 0001 1111
|
234
|
-
|
235
|
-
// Regular Base64 Encoding
|
236
|
-
// -----------------------
|
237
|
-
BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
238
|
-
|
239
|
-
return SourceMap;
|
240
|
-
}.call(this);
|
241
|
-
|
242
|
-
// Our API for source maps is just the `SourceMap` class.
|
243
|
-
module.exports = SourceMap;
|
244
|
-
}).call(this);
|