ether-code 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +130 -0
- package/cli/compiler.js +298 -0
- package/cli/ether.js +532 -0
- package/cli/watcher.js +106 -0
- package/generators/css-generator.js +583 -0
- package/generators/graphql-generator.js +868 -0
- package/generators/html-generator.js +745 -0
- package/generators/js-generator.js +909 -0
- package/generators/node-generator.js +467 -0
- package/generators/php-generator.js +706 -0
- package/generators/python-generator.js +913 -0
- package/generators/react-generator.js +599 -0
- package/generators/ruby-generator.js +904 -0
- package/generators/sql-generator.js +988 -0
- package/generators/ts-generator.js +569 -0
- package/i18n/i18n-css.json +743 -0
- package/i18n/i18n-graphql.json +1531 -0
- package/i18n/i18n-html.json +572 -0
- package/i18n/i18n-js.json +2790 -0
- package/i18n/i18n-node.json +2442 -0
- package/i18n/i18n-php.json +4306 -0
- package/i18n/i18n-python.json +3080 -0
- package/i18n/i18n-react.json +1784 -0
- package/i18n/i18n-ruby.json +1858 -0
- package/i18n/i18n-sql.json +3466 -0
- package/i18n/i18n-ts.json +442 -0
- package/lexer/ether-lexer.js +728 -0
- package/lexer/tokens.js +292 -0
- package/package.json +45 -0
- package/parsers/ast-css.js +545 -0
- package/parsers/ast-graphql.js +424 -0
- package/parsers/ast-html.js +886 -0
- package/parsers/ast-js.js +750 -0
- package/parsers/ast-node.js +2440 -0
- package/parsers/ast-php.js +957 -0
- package/parsers/ast-react.js +580 -0
- package/parsers/ast-ruby.js +895 -0
- package/parsers/ast-ts.js +1352 -0
- package/parsers/css-parser.js +1981 -0
- package/parsers/graphql-parser.js +2011 -0
- package/parsers/html-parser.js +1181 -0
- package/parsers/js-parser.js +2564 -0
- package/parsers/node-parser.js +2644 -0
- package/parsers/php-parser.js +3037 -0
- package/parsers/react-parser.js +1035 -0
- package/parsers/ruby-parser.js +2680 -0
- package/parsers/ts-parser.js +3881 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const { JSGenerator } = require('./js-generator')
|
|
3
|
+
|
|
4
|
+
class NodeGenerator extends JSGenerator {
|
|
5
|
+
constructor(i18nPath = null) {
|
|
6
|
+
super(i18nPath)
|
|
7
|
+
this.extendMaps()
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
extendMaps() {
|
|
11
|
+
const nodeTranslations = {
|
|
12
|
+
'requiert': 'require',
|
|
13
|
+
'module': 'module',
|
|
14
|
+
'exports': 'exports',
|
|
15
|
+
'exporter': 'module.exports',
|
|
16
|
+
'processus': 'process',
|
|
17
|
+
'global': 'global',
|
|
18
|
+
'nom fichier': '__filename',
|
|
19
|
+
'nom dossier': '__dirname',
|
|
20
|
+
'tampon': 'Buffer',
|
|
21
|
+
'chemin': 'path',
|
|
22
|
+
'système fichiers': 'fs',
|
|
23
|
+
'http': 'http',
|
|
24
|
+
'https': 'https',
|
|
25
|
+
'url': 'url',
|
|
26
|
+
'chaîne requête': 'querystring',
|
|
27
|
+
'événements': 'events',
|
|
28
|
+
'flux': 'stream',
|
|
29
|
+
'utilitaires': 'util',
|
|
30
|
+
'os': 'os',
|
|
31
|
+
'crypto': 'crypto',
|
|
32
|
+
'enfant processus': 'child_process',
|
|
33
|
+
'cluster': 'cluster',
|
|
34
|
+
'net': 'net',
|
|
35
|
+
'dns': 'dns',
|
|
36
|
+
'zlib': 'zlib',
|
|
37
|
+
'créer serveur': 'createServer',
|
|
38
|
+
'écouter': 'listen',
|
|
39
|
+
'requête': 'request',
|
|
40
|
+
'réponse': 'response',
|
|
41
|
+
'entêtes': 'headers',
|
|
42
|
+
'méthode': 'method',
|
|
43
|
+
'url requête': 'url',
|
|
44
|
+
'écrire tête': 'writeHead',
|
|
45
|
+
'terminer': 'end',
|
|
46
|
+
'sur': 'on',
|
|
47
|
+
'émettre': 'emit',
|
|
48
|
+
'une fois': 'once',
|
|
49
|
+
'retirer écouteur': 'removeListener',
|
|
50
|
+
'lire fichier': 'readFile',
|
|
51
|
+
'lire fichier sync': 'readFileSync',
|
|
52
|
+
'écrire fichier': 'writeFile',
|
|
53
|
+
'écrire fichier sync': 'writeFileSync',
|
|
54
|
+
'ajouter fichier': 'appendFile',
|
|
55
|
+
'supprimer fichier': 'unlink',
|
|
56
|
+
'renommer': 'rename',
|
|
57
|
+
'existe': 'existsSync',
|
|
58
|
+
'statistiques': 'stat',
|
|
59
|
+
'créer dossier': 'mkdir',
|
|
60
|
+
'lire dossier': 'readdir',
|
|
61
|
+
'supprimer dossier': 'rmdir',
|
|
62
|
+
'joindre': 'join',
|
|
63
|
+
'joindre chemin': 'join',
|
|
64
|
+
'de': 'from',
|
|
65
|
+
'temporiser': 'setTimeout',
|
|
66
|
+
'intervalle': 'setInterval',
|
|
67
|
+
'promettifier': 'promisify',
|
|
68
|
+
'résoudre': 'resolve',
|
|
69
|
+
'base': 'basename',
|
|
70
|
+
'dossier': 'dirname',
|
|
71
|
+
'extension': 'extname',
|
|
72
|
+
'analyser': 'parse',
|
|
73
|
+
'formater': 'format',
|
|
74
|
+
'normaliser': 'normalize',
|
|
75
|
+
'arguments': 'argv',
|
|
76
|
+
'environnement': 'env',
|
|
77
|
+
'sortie': 'exit',
|
|
78
|
+
'répertoire travail': 'cwd',
|
|
79
|
+
'changer dossier': 'chdir',
|
|
80
|
+
'mémoire': 'memoryUsage',
|
|
81
|
+
'temps fonctionnement': 'uptime',
|
|
82
|
+
'prochain tick': 'nextTick',
|
|
83
|
+
'plateforme': 'platform',
|
|
84
|
+
'architecture': 'arch',
|
|
85
|
+
'cpus': 'cpus',
|
|
86
|
+
'mémoire totale': 'totalmem',
|
|
87
|
+
'mémoire libre': 'freemem',
|
|
88
|
+
'dossier maison': 'homedir',
|
|
89
|
+
'dossier temp': 'tmpdir',
|
|
90
|
+
'nom hote': 'hostname',
|
|
91
|
+
'exécuter': 'exec',
|
|
92
|
+
'spawn': 'spawn',
|
|
93
|
+
'fork': 'fork',
|
|
94
|
+
'pid': 'pid',
|
|
95
|
+
'tuer': 'kill',
|
|
96
|
+
'connecter': 'connect',
|
|
97
|
+
'socket': 'Socket',
|
|
98
|
+
'serveur': 'Server',
|
|
99
|
+
'chercher': 'lookup',
|
|
100
|
+
'résoudre dns': 'resolve',
|
|
101
|
+
'compresser': 'gzip',
|
|
102
|
+
'decompresser': 'gunzip',
|
|
103
|
+
'degonfler': 'deflate',
|
|
104
|
+
'gonfler': 'inflate',
|
|
105
|
+
'hash': 'createHash',
|
|
106
|
+
'hmac': 'createHmac',
|
|
107
|
+
'chiffrer': 'createCipher',
|
|
108
|
+
'déchiffrer': 'createDecipher',
|
|
109
|
+
'aléatoire octets': 'randomBytes',
|
|
110
|
+
'promisifier': 'promisify',
|
|
111
|
+
'inspecter': 'inspect',
|
|
112
|
+
'hériter': 'inherits',
|
|
113
|
+
'formater chaîne': 'format',
|
|
114
|
+
'deboguer': 'debuglog',
|
|
115
|
+
'express': 'express',
|
|
116
|
+
'application': 'app',
|
|
117
|
+
'routeur': 'Router',
|
|
118
|
+
'utiliser': 'use',
|
|
119
|
+
'obtenir route': 'get',
|
|
120
|
+
'poster route': 'post',
|
|
121
|
+
'mettre route': 'put',
|
|
122
|
+
'supprimer route': 'delete',
|
|
123
|
+
'patch route': 'patch',
|
|
124
|
+
'middleware': 'middleware',
|
|
125
|
+
'corps': 'body',
|
|
126
|
+
'params': 'params',
|
|
127
|
+
'requête query': 'query',
|
|
128
|
+
'cookies': 'cookies',
|
|
129
|
+
'session': 'session',
|
|
130
|
+
'json': 'json',
|
|
131
|
+
'statique': 'static',
|
|
132
|
+
'envoyer': 'send',
|
|
133
|
+
'rendu': 'render',
|
|
134
|
+
'rediriger': 'redirect',
|
|
135
|
+
'statut': 'status',
|
|
136
|
+
'telecharger': 'download',
|
|
137
|
+
'fichier envoyer': 'sendFile',
|
|
138
|
+
'mongoose': 'mongoose',
|
|
139
|
+
'connecter db': 'connect',
|
|
140
|
+
'schema': 'Schema',
|
|
141
|
+
'modele': 'model',
|
|
142
|
+
'trouver': 'find',
|
|
143
|
+
'trouver un': 'findOne',
|
|
144
|
+
'trouver par id': 'findById',
|
|
145
|
+
'créer': 'create',
|
|
146
|
+
'mettre a jour un': 'updateOne',
|
|
147
|
+
'supprimer un': 'deleteOne',
|
|
148
|
+
'sauvegarder': 'save',
|
|
149
|
+
'peupler': 'populate',
|
|
150
|
+
'trier': 'sort',
|
|
151
|
+
'limiter': 'limit',
|
|
152
|
+
'sauter': 'skip',
|
|
153
|
+
'compter documents': 'countDocuments'
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
for (const [fr, node] of Object.entries(nodeTranslations)) {
|
|
157
|
+
this.keywordMap[fr] = node
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
generate(ast) {
|
|
162
|
+
this.output = ''
|
|
163
|
+
this.indent = 0
|
|
164
|
+
|
|
165
|
+
if (Array.isArray(ast)) {
|
|
166
|
+
for (const node of ast) {
|
|
167
|
+
const result = this.generateNode(node)
|
|
168
|
+
if (result !== undefined && result !== '' && this.output === '') {
|
|
169
|
+
return result
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
} else if (ast && ast.type) {
|
|
173
|
+
const result = this.generateNode(ast)
|
|
174
|
+
if (result !== undefined && result !== '' && this.output === '') {
|
|
175
|
+
return result
|
|
176
|
+
}
|
|
177
|
+
} else if (ast && ast.body) {
|
|
178
|
+
for (const node of ast.body) {
|
|
179
|
+
const result = this.generateNode(node)
|
|
180
|
+
if (result !== undefined && result !== '' && this.output === '') {
|
|
181
|
+
return result
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return this.output.trim()
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
generateNode(node) {
|
|
190
|
+
if (!node) return ''
|
|
191
|
+
|
|
192
|
+
switch (node.type) {
|
|
193
|
+
case 'RequireStatement':
|
|
194
|
+
return this.generateRequire(node)
|
|
195
|
+
case 'ModuleExports':
|
|
196
|
+
case 'ModuleExportsStatement':
|
|
197
|
+
return this.generateModuleExports(node)
|
|
198
|
+
case 'ExportsStatement':
|
|
199
|
+
return this.generateExportsStatement(node)
|
|
200
|
+
case 'ServerCreation':
|
|
201
|
+
return this.generateServerCreation(node)
|
|
202
|
+
case 'RouteHandler':
|
|
203
|
+
return this.generateRouteHandler(node)
|
|
204
|
+
case 'MiddlewareUse':
|
|
205
|
+
return this.generateMiddlewareUse(node)
|
|
206
|
+
case 'FileOperation':
|
|
207
|
+
return this.generateFileOperation(node)
|
|
208
|
+
case 'EventListener':
|
|
209
|
+
return this.generateEventListener(node)
|
|
210
|
+
case 'StreamOperation':
|
|
211
|
+
return this.generateStreamOperation(node)
|
|
212
|
+
default:
|
|
213
|
+
return super.generateNode(node)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
generateRequire(node) {
|
|
218
|
+
const module = node.source || node.module
|
|
219
|
+
const modulePath = typeof module === 'string' ? module : this.generateNode(module)
|
|
220
|
+
|
|
221
|
+
const id = node.id || node.variable || node.name
|
|
222
|
+
|
|
223
|
+
if (id?.type === 'ObjectPattern') {
|
|
224
|
+
const props = (id.properties || []).map(p => {
|
|
225
|
+
const key = p.key?.name || p.key
|
|
226
|
+
return this.translate(key)
|
|
227
|
+
}).join(', ')
|
|
228
|
+
this.writeLine(`const { ${props} } = require('${modulePath}');`)
|
|
229
|
+
} else if (node.destructure && node.destructure.length > 0) {
|
|
230
|
+
const props = node.destructure.map(p => this.translate(p)).join(', ')
|
|
231
|
+
this.writeLine(`const { ${props} } = require('${modulePath}');`)
|
|
232
|
+
} else if (id) {
|
|
233
|
+
const varName = typeof id === 'string' ? id : (id.name || this.generateNode(id))
|
|
234
|
+
this.writeLine(`const ${this.translate(varName)} = require('${modulePath}');`)
|
|
235
|
+
} else {
|
|
236
|
+
this.writeLine(`require('${modulePath}');`)
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
generateModuleExports(node) {
|
|
241
|
+
const exports = node.exports || node.default
|
|
242
|
+
|
|
243
|
+
if (exports?.type === 'ObjectExpression') {
|
|
244
|
+
const props = (exports.properties || []).map(p => {
|
|
245
|
+
const key = p.key?.name || p.key
|
|
246
|
+
if (p.shorthand) {
|
|
247
|
+
return this.translate(key)
|
|
248
|
+
}
|
|
249
|
+
const value = this.generateNode(p.value)
|
|
250
|
+
return `${this.translate(key)}: ${value}`
|
|
251
|
+
})
|
|
252
|
+
this.writeLine(`module.exports = { ${props.join(', ')} };`)
|
|
253
|
+
} else if (exports) {
|
|
254
|
+
const value = this.generateNode(exports)
|
|
255
|
+
this.writeLine(`module.exports = ${value};`)
|
|
256
|
+
} else if (node.named && Object.keys(node.named).length > 0) {
|
|
257
|
+
const exportsList = Object.entries(node.named).map(([key, value]) => {
|
|
258
|
+
const translatedKey = this.translate(key)
|
|
259
|
+
const translatedValue = this.generateNode(value)
|
|
260
|
+
return translatedKey === translatedValue ? translatedKey : `${translatedKey}: ${translatedValue}`
|
|
261
|
+
})
|
|
262
|
+
this.writeLine(`module.exports = { ${exportsList.join(', ')} };`)
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
generateExportsStatement(node) {
|
|
267
|
+
const name = this.translate(node.name)
|
|
268
|
+
const value = this.generateNode(node.value)
|
|
269
|
+
this.writeLine(`exports.${name} = ${value};`)
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
generateServerCreation(node) {
|
|
273
|
+
const framework = node.framework || 'http'
|
|
274
|
+
|
|
275
|
+
if (framework === 'express') {
|
|
276
|
+
this.writeLine("const express = require('express');")
|
|
277
|
+
this.writeLine('const app = express();')
|
|
278
|
+
this.writeLine('')
|
|
279
|
+
|
|
280
|
+
if (node.middleware) {
|
|
281
|
+
for (const mw of node.middleware) {
|
|
282
|
+
this.generateMiddlewareUse(mw)
|
|
283
|
+
}
|
|
284
|
+
this.writeLine('')
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
if (node.routes) {
|
|
288
|
+
for (const route of node.routes) {
|
|
289
|
+
this.generateRouteHandler(route)
|
|
290
|
+
}
|
|
291
|
+
this.writeLine('')
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const port = node.port || 3000
|
|
295
|
+
this.writeLine(`app.listen(${port}, () => {`)
|
|
296
|
+
this.indent++
|
|
297
|
+
this.writeLine(`console.log('Serveur démarré sur le port ${port}');`)
|
|
298
|
+
this.indent--
|
|
299
|
+
this.writeLine('});')
|
|
300
|
+
} else {
|
|
301
|
+
this.writeLine("const http = require('http');")
|
|
302
|
+
this.writeLine('')
|
|
303
|
+
this.writeLine('const server = http.createServer((req, res) => {')
|
|
304
|
+
this.indent++
|
|
305
|
+
|
|
306
|
+
if (node.handler) {
|
|
307
|
+
this.generateNode(node.handler)
|
|
308
|
+
} else {
|
|
309
|
+
this.writeLine("res.writeHead(200, { 'Content-Type': 'text/plain' });")
|
|
310
|
+
this.writeLine("res.end('Hello World');")
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
this.indent--
|
|
314
|
+
this.writeLine('});')
|
|
315
|
+
this.writeLine('')
|
|
316
|
+
|
|
317
|
+
const port = node.port || 3000
|
|
318
|
+
this.writeLine(`server.listen(${port}, () => {`)
|
|
319
|
+
this.indent++
|
|
320
|
+
this.writeLine(`console.log('Serveur démarré sur le port ${port}');`)
|
|
321
|
+
this.indent--
|
|
322
|
+
this.writeLine('});')
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
generateRouteHandler(node) {
|
|
327
|
+
const method = this.translate(node.method || 'get').toLowerCase()
|
|
328
|
+
const path = node.path || '/'
|
|
329
|
+
const async = node.async ? 'async ' : ''
|
|
330
|
+
|
|
331
|
+
this.writeLine(`app.${method}('${path}', ${async}(req, res) => {`)
|
|
332
|
+
this.indent++
|
|
333
|
+
|
|
334
|
+
if (node.body) {
|
|
335
|
+
if (Array.isArray(node.body)) {
|
|
336
|
+
for (const stmt of node.body) {
|
|
337
|
+
this.generateNode(stmt)
|
|
338
|
+
}
|
|
339
|
+
} else {
|
|
340
|
+
this.generateNode(node.body)
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
this.indent--
|
|
345
|
+
this.writeLine('});')
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
generateMiddlewareUse(node) {
|
|
349
|
+
if (typeof node === 'string') {
|
|
350
|
+
this.writeLine(`app.use(${this.translate(node)});`)
|
|
351
|
+
return
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
const middleware = node.middleware || node.name
|
|
355
|
+
|
|
356
|
+
if (node.path) {
|
|
357
|
+
this.writeLine(`app.use('${node.path}', ${this.translate(middleware)});`)
|
|
358
|
+
} else if (node.call) {
|
|
359
|
+
const args = (node.arguments || []).map(a => this.generateNode(a)).join(', ')
|
|
360
|
+
this.writeLine(`app.use(${this.translate(middleware)}(${args}));`)
|
|
361
|
+
} else {
|
|
362
|
+
this.writeLine(`app.use(${this.translate(middleware)});`)
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
generateFileOperation(node) {
|
|
367
|
+
const operation = this.translate(node.operation)
|
|
368
|
+
const path = this.generateNode(node.path)
|
|
369
|
+
|
|
370
|
+
switch (node.operation) {
|
|
371
|
+
case 'lire':
|
|
372
|
+
case 'read':
|
|
373
|
+
if (node.sync) {
|
|
374
|
+
this.writeLine(`const ${node.variable || 'data'} = fs.readFileSync(${path}, 'utf-8');`)
|
|
375
|
+
} else {
|
|
376
|
+
this.writeLine(`fs.readFile(${path}, 'utf-8', (err, data) => {`)
|
|
377
|
+
this.indent++
|
|
378
|
+
if (node.callback) {
|
|
379
|
+
this.generateNode(node.callback)
|
|
380
|
+
}
|
|
381
|
+
this.indent--
|
|
382
|
+
this.writeLine('});')
|
|
383
|
+
}
|
|
384
|
+
break
|
|
385
|
+
|
|
386
|
+
case 'écrire':
|
|
387
|
+
case 'write':
|
|
388
|
+
const content = this.generateNode(node.content)
|
|
389
|
+
if (node.sync) {
|
|
390
|
+
this.writeLine(`fs.writeFileSync(${path}, ${content});`)
|
|
391
|
+
} else {
|
|
392
|
+
this.writeLine(`fs.writeFile(${path}, ${content}, (err) => {`)
|
|
393
|
+
this.indent++
|
|
394
|
+
if (node.callback) {
|
|
395
|
+
this.generateNode(node.callback)
|
|
396
|
+
}
|
|
397
|
+
this.indent--
|
|
398
|
+
this.writeLine('});')
|
|
399
|
+
}
|
|
400
|
+
break
|
|
401
|
+
|
|
402
|
+
case 'supprimer':
|
|
403
|
+
case 'delete':
|
|
404
|
+
this.writeLine(`fs.unlink(${path}, (err) => {`)
|
|
405
|
+
this.indent++
|
|
406
|
+
if (node.callback) {
|
|
407
|
+
this.generateNode(node.callback)
|
|
408
|
+
}
|
|
409
|
+
this.indent--
|
|
410
|
+
this.writeLine('});')
|
|
411
|
+
break
|
|
412
|
+
|
|
413
|
+
case 'existe':
|
|
414
|
+
case 'exists':
|
|
415
|
+
this.writeLine(`const ${node.variable || 'exists'} = fs.existsSync(${path});`)
|
|
416
|
+
break
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
generateEventListener(node) {
|
|
421
|
+
const emitter = this.generateNode(node.emitter || { name: 'emitter' })
|
|
422
|
+
const event = typeof node.event === 'string' ? `'${node.event}'` : this.generateNode(node.event)
|
|
423
|
+
const method = node.once ? 'once' : 'on'
|
|
424
|
+
|
|
425
|
+
this.writeLine(`${emitter}.${method}(${event}, (${node.params || ''}) => {`)
|
|
426
|
+
this.indent++
|
|
427
|
+
|
|
428
|
+
if (node.body) {
|
|
429
|
+
if (Array.isArray(node.body)) {
|
|
430
|
+
for (const stmt of node.body) {
|
|
431
|
+
this.generateNode(stmt)
|
|
432
|
+
}
|
|
433
|
+
} else {
|
|
434
|
+
this.generateNode(node.body)
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
this.indent--
|
|
439
|
+
this.writeLine('});')
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
generateStreamOperation(node) {
|
|
443
|
+
const source = this.generateNode(node.source)
|
|
444
|
+
const destination = node.destination ? this.generateNode(node.destination) : null
|
|
445
|
+
|
|
446
|
+
switch (node.operation) {
|
|
447
|
+
case 'pipe':
|
|
448
|
+
case 'canaliser':
|
|
449
|
+
this.writeLine(`${source}.pipe(${destination});`)
|
|
450
|
+
break
|
|
451
|
+
|
|
452
|
+
case 'lire flux':
|
|
453
|
+
case 'createReadStream':
|
|
454
|
+
this.writeLine(`const ${node.variable || 'readStream'} = fs.createReadStream(${source});`)
|
|
455
|
+
break
|
|
456
|
+
|
|
457
|
+
case 'écrire flux':
|
|
458
|
+
case 'createWriteStream':
|
|
459
|
+
this.writeLine(`const ${node.variable || 'writeStream'} = fs.createWriteStream(${source});`)
|
|
460
|
+
break
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
module.exports = {
|
|
466
|
+
NodeGenerator
|
|
467
|
+
}
|