@cocojs/cli 0.0.1-alpha.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.
@@ -0,0 +1,563 @@
1
+ 'use strict';
2
+
3
+ var process$1 = require('node:process');
4
+ var Webpack = require('webpack');
5
+ var WebpackDevServer = require('webpack-dev-server');
6
+ var HtmlWebpackPlugin = require('html-webpack-plugin');
7
+ var path = require('node:path');
8
+ var fs = require('node:fs');
9
+ var webpackMerge = require('webpack-merge');
10
+
11
+ function asyncGeneratorStep(n, t, e, r, o, a, c) {
12
+ try {
13
+ var i = n[a](c),
14
+ u = i.value;
15
+ } catch (n) {
16
+ return void e(n);
17
+ }
18
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
19
+ }
20
+ function _asyncToGenerator(n) {
21
+ return function () {
22
+ var t = this,
23
+ e = arguments;
24
+ return new Promise(function (r, o) {
25
+ var a = n.apply(t, e);
26
+ function _next(n) {
27
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
28
+ }
29
+ function _throw(n) {
30
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
31
+ }
32
+ _next(void 0);
33
+ });
34
+ };
35
+ }
36
+ function _classCallCheck(a, n) {
37
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
38
+ }
39
+ function _defineProperties(e, r) {
40
+ for (var t = 0; t < r.length; t++) {
41
+ var o = r[t];
42
+ o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
43
+ }
44
+ }
45
+ function _createClass(e, r, t) {
46
+ return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
47
+ writable: false
48
+ }), e;
49
+ }
50
+ function _defineProperty(e, r, t) {
51
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
52
+ value: t,
53
+ enumerable: true,
54
+ configurable: true,
55
+ writable: true
56
+ }) : e[r] = t, e;
57
+ }
58
+ function ownKeys(e, r) {
59
+ var t = Object.keys(e);
60
+ if (Object.getOwnPropertySymbols) {
61
+ var o = Object.getOwnPropertySymbols(e);
62
+ r && (o = o.filter(function (r) {
63
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
64
+ })), t.push.apply(t, o);
65
+ }
66
+ return t;
67
+ }
68
+ function _objectSpread2(e) {
69
+ for (var r = 1; r < arguments.length; r++) {
70
+ var t = null != arguments[r] ? arguments[r] : {};
71
+ r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
72
+ _defineProperty(e, r, t[r]);
73
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
74
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
75
+ });
76
+ }
77
+ return e;
78
+ }
79
+ function _objectWithoutProperties(e, t) {
80
+ if (null == e) return {};
81
+ var o,
82
+ r,
83
+ i = _objectWithoutPropertiesLoose(e, t);
84
+ if (Object.getOwnPropertySymbols) {
85
+ var n = Object.getOwnPropertySymbols(e);
86
+ for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
87
+ }
88
+ return i;
89
+ }
90
+ function _objectWithoutPropertiesLoose(r, e) {
91
+ if (null == r) return {};
92
+ var t = {};
93
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
94
+ if (-1 !== e.indexOf(n)) continue;
95
+ t[n] = r[n];
96
+ }
97
+ return t;
98
+ }
99
+ function _regenerator() {
100
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
101
+ var e,
102
+ t,
103
+ r = "function" == typeof Symbol ? Symbol : {},
104
+ n = r.iterator || "@@iterator",
105
+ o = r.toStringTag || "@@toStringTag";
106
+ function i(r, n, o, i) {
107
+ var c = n && n.prototype instanceof Generator ? n : Generator,
108
+ u = Object.create(c.prototype);
109
+ return _regeneratorDefine(u, "_invoke", function (r, n, o) {
110
+ var i,
111
+ c,
112
+ u,
113
+ f = 0,
114
+ p = o || [],
115
+ y = false,
116
+ G = {
117
+ p: 0,
118
+ n: 0,
119
+ v: e,
120
+ a: d,
121
+ f: d.bind(e, 4),
122
+ d: function (t, r) {
123
+ return i = t, c = 0, u = e, G.n = r, a;
124
+ }
125
+ };
126
+ function d(r, n) {
127
+ for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
128
+ var o,
129
+ i = p[t],
130
+ d = G.p,
131
+ l = i[2];
132
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
133
+ }
134
+ if (o || r > 1) return a;
135
+ throw y = true, n;
136
+ }
137
+ return function (o, p, l) {
138
+ if (f > 1) throw TypeError("Generator is already running");
139
+ for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
140
+ i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
141
+ try {
142
+ if (f = 2, i) {
143
+ if (c || (o = "next"), t = i[o]) {
144
+ if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
145
+ if (!t.done) return t;
146
+ u = t.value, c < 2 && (c = 0);
147
+ } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
148
+ i = e;
149
+ } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
150
+ } catch (t) {
151
+ i = e, c = 1, u = t;
152
+ } finally {
153
+ f = 1;
154
+ }
155
+ }
156
+ return {
157
+ value: t,
158
+ done: y
159
+ };
160
+ };
161
+ }(r, o, i), true), u;
162
+ }
163
+ var a = {};
164
+ function Generator() {}
165
+ function GeneratorFunction() {}
166
+ function GeneratorFunctionPrototype() {}
167
+ t = Object.getPrototypeOf;
168
+ var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
169
+ return this;
170
+ }), t),
171
+ u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
172
+ function f(e) {
173
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
174
+ }
175
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
176
+ return this;
177
+ }), _regeneratorDefine(u, "toString", function () {
178
+ return "[object Generator]";
179
+ }), (_regenerator = function () {
180
+ return {
181
+ w: i,
182
+ m: f
183
+ };
184
+ })();
185
+ }
186
+ function _regeneratorDefine(e, r, n, t) {
187
+ var i = Object.defineProperty;
188
+ try {
189
+ i({}, "", {});
190
+ } catch (e) {
191
+ i = 0;
192
+ }
193
+ _regeneratorDefine = function (e, r, n, t) {
194
+ function o(r, n) {
195
+ _regeneratorDefine(e, r, function (e) {
196
+ return this._invoke(r, n, e);
197
+ });
198
+ }
199
+ r ? i ? i(e, r, {
200
+ value: n,
201
+ enumerable: !t,
202
+ configurable: !t,
203
+ writable: !t
204
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
205
+ }, _regeneratorDefine(e, r, n, t);
206
+ }
207
+ function _toPrimitive(t, r) {
208
+ if ("object" != typeof t || !t) return t;
209
+ var e = t[Symbol.toPrimitive];
210
+ if (void 0 !== e) {
211
+ var i = e.call(t, r);
212
+ if ("object" != typeof i) return i;
213
+ throw new TypeError("@@toPrimitive must return a primitive value.");
214
+ }
215
+ return (String )(t);
216
+ }
217
+ function _toPropertyKey(t) {
218
+ var i = _toPrimitive(t, "string");
219
+ return "symbol" == typeof i ? i : i + "";
220
+ }
221
+
222
+ var cmdDefaultEnvMap = {
223
+ dev: 'dev',
224
+ build: 'prod'
225
+ };
226
+ var defaultConfigName = 'config.js';
227
+ /**
228
+ * 得到构建配置的名称
229
+ */
230
+ var configFileName = function configFileName(cmd) {
231
+ var env = process$1.env.NODE_ENV || cmdDefaultEnvMap[cmd] || '';
232
+ return env ? "config.".concat(env, ".js") : defaultConfigName;
233
+ };
234
+
235
+ function readWebpack(_x) {
236
+ return _readWebpack.apply(this, arguments);
237
+ }
238
+ function _readWebpack() {
239
+ _readWebpack = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(cmd) {
240
+ var _yield$import, _content$webpack;
241
+ var filename, filepath, content, _t, _t2, _t3;
242
+ return _regenerator().w(function (_context) {
243
+ while (1) switch (_context.n) {
244
+ case 0:
245
+ filename = cmd ? configFileName(cmd) : defaultConfigName;
246
+ filepath = path.resolve(process.cwd(), "config/".concat(filename));
247
+ if (fs.existsSync(filepath)) {
248
+ _context.n = 1;
249
+ break;
250
+ }
251
+ console.warn("\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728\uFF1A".concat(filepath));
252
+ return _context.a(2, {});
253
+ case 1:
254
+ _context.n = 2;
255
+ return import(filepath);
256
+ case 2:
257
+ _t2 = _yield$import = _context.v;
258
+ _t = _t2 === null;
259
+ if (_t) {
260
+ _context.n = 3;
261
+ break;
262
+ }
263
+ _t = _yield$import === void 0;
264
+ case 3:
265
+ if (!_t) {
266
+ _context.n = 4;
267
+ break;
268
+ }
269
+ _t3 = void 0;
270
+ _context.n = 5;
271
+ break;
272
+ case 4:
273
+ _t3 = _yield$import["default"];
274
+ case 5:
275
+ content = _t3;
276
+ return _context.a(2, (_content$webpack = content === null || content === void 0 ? void 0 : content.webpack) !== null && _content$webpack !== void 0 ? _content$webpack : {});
277
+ }
278
+ }, _callee);
279
+ }));
280
+ return _readWebpack.apply(this, arguments);
281
+ }
282
+ var buildInConfig = {
283
+ mode: 'production',
284
+ entry: path.join(process.cwd(), './src/.coco/index.tsx'),
285
+ module: {
286
+ rules: [{
287
+ test: /\.tsx?$/,
288
+ use: [{
289
+ loader: require.resolve('babel-loader'),
290
+ options: {
291
+ presets: [require.resolve('@babel/preset-typescript')],
292
+ plugins: [[require.resolve('@babel/plugin-proposal-decorators'), {
293
+ version: '2023-11'
294
+ }], [require.resolve('@babel/plugin-transform-react-jsx'), {
295
+ runtime: 'automatic',
296
+ importSource: '@cocojs/mvc'
297
+ }]]
298
+ }
299
+ }, {
300
+ loader: require.resolve('ts-loader'),
301
+ options: {
302
+ context: process.cwd(),
303
+ transpileOnly: false
304
+ }
305
+ }],
306
+ exclude: /node_modules/
307
+ }]
308
+ },
309
+ resolveLoader: {
310
+ modules: [path.resolve(__dirname, '../../node_modules'), 'node_modules']
311
+ },
312
+ resolve: {
313
+ extensions: ['.tsx', '.ts', '.jsx', '.js'],
314
+ alias: {
315
+ '@': path.resolve(process.cwd(), 'src/')
316
+ }
317
+ },
318
+ output: {
319
+ publicPath: '/',
320
+ filename: 'main.js',
321
+ path: path.join(process.cwd(), 'dist'),
322
+ clean: true
323
+ },
324
+ devServer: {
325
+ "static": {
326
+ directory: path.join(process.cwd(), 'dist')
327
+ },
328
+ compress: true,
329
+ historyApiFallback: true,
330
+ port: 9700,
331
+ devMiddleware: {
332
+ writeToDisk: true
333
+ }
334
+ },
335
+ plugins: [new HtmlWebpackPlugin({
336
+ templateContent: "\n<!DOCTYPE html>\n<html lang=\"en\">\n<body>\n <div id=\"root\"></div>\n</body>\n</html>\n "
337
+ })]
338
+ };
339
+ function getWebpackConfig(_x2) {
340
+ return _getWebpackConfig.apply(this, arguments);
341
+ }
342
+ function _getWebpackConfig() {
343
+ _getWebpackConfig = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(cmd) {
344
+ var baseConfig, envConfig;
345
+ return _regenerator().w(function (_context2) {
346
+ while (1) switch (_context2.n) {
347
+ case 0:
348
+ _context2.n = 1;
349
+ return readWebpack();
350
+ case 1:
351
+ baseConfig = _context2.v;
352
+ _context2.n = 2;
353
+ return readWebpack(cmd);
354
+ case 2:
355
+ envConfig = _context2.v;
356
+ return _context2.a(2, webpackMerge.merge(buildInConfig, baseConfig, envConfig));
357
+ }
358
+ }, _callee2);
359
+ }));
360
+ return _getWebpackConfig.apply(this, arguments);
361
+ }
362
+
363
+ var _excluded = ["devServer"];
364
+ var WebpackBuilder = /*#__PURE__*/function () {
365
+ function WebpackBuilder() {
366
+ _classCallCheck(this, WebpackBuilder);
367
+ _defineProperty(this, "server", void 0);
368
+ }
369
+ return _createClass(WebpackBuilder, [{
370
+ key: "build",
371
+ value: function () {
372
+ var _build = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
373
+ return _regenerator().w(function (_context2) {
374
+ while (1) switch (_context2.n) {
375
+ case 0:
376
+ return _context2.a(2, new Promise(/*#__PURE__*/function () {
377
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(resolve, reject) {
378
+ var config, compiler;
379
+ return _regenerator().w(function (_context) {
380
+ while (1) switch (_context.n) {
381
+ case 0:
382
+ _context.n = 1;
383
+ return getWebpackConfig('build');
384
+ case 1:
385
+ config = _context.v;
386
+ compiler = Webpack(config);
387
+ compiler.run(function (err, stats) {
388
+ console.log(stats.toString({
389
+ chunks: false,
390
+ // 使构建过程更静默无输出
391
+ colors: true // 在控制台展示颜色
392
+ }));
393
+ if (stats.hasErrors()) {
394
+ reject(err);
395
+ } else {
396
+ resolve();
397
+ }
398
+ compiler.close(function (err) {});
399
+ });
400
+ case 2:
401
+ return _context.a(2);
402
+ }
403
+ }, _callee);
404
+ }));
405
+ return function (_x, _x2) {
406
+ return _ref.apply(this, arguments);
407
+ };
408
+ }()));
409
+ }
410
+ }, _callee2);
411
+ }));
412
+ function build() {
413
+ return _build.apply(this, arguments);
414
+ }
415
+ return build;
416
+ }()
417
+ }, {
418
+ key: "startServer",
419
+ value: function () {
420
+ var _startServer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
421
+ var _yield$getWebpackConf, devServer, config, compiler, devServerOptions;
422
+ return _regenerator().w(function (_context3) {
423
+ while (1) switch (_context3.n) {
424
+ case 0:
425
+ _context3.n = 1;
426
+ return getWebpackConfig('dev');
427
+ case 1:
428
+ _yield$getWebpackConf = _context3.v;
429
+ devServer = _yield$getWebpackConf.devServer;
430
+ config = _objectWithoutProperties(_yield$getWebpackConf, _excluded);
431
+ compiler = Webpack(config);
432
+ devServerOptions = _objectSpread2(_objectSpread2({}, devServer), {}, {
433
+ open: true
434
+ });
435
+ this.server = new WebpackDevServer(devServerOptions, compiler);
436
+ _context3.n = 2;
437
+ return this.server.start();
438
+ case 2:
439
+ return _context3.a(2);
440
+ }
441
+ }, _callee3, this);
442
+ }));
443
+ function startServer() {
444
+ return _startServer.apply(this, arguments);
445
+ }
446
+ return startServer;
447
+ }()
448
+ }, {
449
+ key: "stopServer",
450
+ value: function () {
451
+ var _stopServer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
452
+ return _regenerator().w(function (_context4) {
453
+ while (1) switch (_context4.n) {
454
+ case 0:
455
+ if (!this.server) {
456
+ _context4.n = 2;
457
+ break;
458
+ }
459
+ _context4.n = 1;
460
+ return this.server.stop();
461
+ case 1:
462
+ this.server = null;
463
+ case 2:
464
+ return _context4.a(2);
465
+ }
466
+ }, _callee4, this);
467
+ }));
468
+ function stopServer() {
469
+ return _stopServer.apply(this, arguments);
470
+ }
471
+ return stopServer;
472
+ }()
473
+ }]);
474
+ }();
475
+
476
+ function startListening(builder) {
477
+ var terminating = false;
478
+ process$1.on('exit', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
479
+ return _regenerator().w(function (_context) {
480
+ while (1) switch (_context.n) {
481
+ case 0:
482
+ _context.n = 1;
483
+ return builder.stopServer();
484
+ case 1:
485
+ return _context.a(2);
486
+ }
487
+ }, _callee);
488
+ })));
489
+ process$1.on('message', /*#__PURE__*/function () {
490
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(msg) {
491
+ var _t;
492
+ return _regenerator().w(function (_context2) {
493
+ while (1) switch (_context2.n) {
494
+ case 0:
495
+ _t = msg;
496
+ _context2.n = _t === 'build-once' ? 1 : _t === 'start-server' ? 4 : 7;
497
+ break;
498
+ case 1:
499
+ _context2.n = 2;
500
+ return builder.build();
501
+ case 2:
502
+ if (!terminating) {
503
+ _context2.n = 3;
504
+ break;
505
+ }
506
+ return _context2.a(2);
507
+ case 3:
508
+ process$1.send('build-success');
509
+ return _context2.a(3, 8);
510
+ case 4:
511
+ if (!terminating) {
512
+ _context2.n = 5;
513
+ break;
514
+ }
515
+ return _context2.a(2);
516
+ case 5:
517
+ _context2.n = 6;
518
+ return builder.startServer();
519
+ case 6:
520
+ return _context2.a(3, 8);
521
+ case 7:
522
+ process$1.send("webpack process rcv msg:[".concat(msg, "]"));
523
+ return _context2.a(3, 8);
524
+ case 8:
525
+ return _context2.a(2);
526
+ }
527
+ }, _callee2);
528
+ }));
529
+ return function (_x) {
530
+ return _ref2.apply(this, arguments);
531
+ };
532
+ }());
533
+ function handleTerminate() {
534
+ return _handleTerminate.apply(this, arguments);
535
+ }
536
+ function _handleTerminate() {
537
+ _handleTerminate = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
538
+ return _regenerator().w(function (_context3) {
539
+ while (1) switch (_context3.n) {
540
+ case 0:
541
+ terminating = true;
542
+ _context3.n = 1;
543
+ return builder.stopServer();
544
+ case 1:
545
+ process$1.exit(0);
546
+ case 2:
547
+ return _context3.a(2);
548
+ }
549
+ }, _callee3);
550
+ }));
551
+ return _handleTerminate.apply(this, arguments);
552
+ }
553
+ process$1.on('SIGTERM', handleTerminate);
554
+ process$1.on('SIGINT', handleTerminate);
555
+ }
556
+ function startAsProcess() {
557
+ var secondArgv = process$1.argv[2];
558
+ if (secondArgv === 'run-as-process') {
559
+ var builder = new WebpackBuilder();
560
+ startListening(builder);
561
+ }
562
+ }
563
+ startAsProcess();
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@cocojs/cli",
3
+ "description": "命令行工具,支持开发和构建功能",
4
+ "version": "0.0.1-alpha.0",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "coco": "bin/coco.js"
9
+ },
10
+ "files": [
11
+ "bin",
12
+ "runtime-config",
13
+ "dist"
14
+ ],
15
+ "homepage": "https://github.com/cocojs-org/coconut-framework",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/cocojs-org/coconut-framework.git"
19
+ },
20
+ "keywords": [
21
+ "cocojs"
22
+ ],
23
+ "author": "",
24
+ "publishConfig": {
25
+ "registry": "https://registry.npmjs.org/",
26
+ "access": "public"
27
+ },
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "@babel/core": "^7.26.7",
31
+ "@babel/generator": "^7.26.5",
32
+ "@babel/plugin-proposal-decorators": "^7.25.9",
33
+ "@babel/plugin-transform-react-jsx": "^7.25.9",
34
+ "@babel/preset-typescript": "^7.26.0",
35
+ "@rollup/plugin-babel": "^6.0.4",
36
+ "@rollup/plugin-typescript": "^12.1.2",
37
+ "babel-loader": "^10.0.0",
38
+ "chokidar": "^4.0.3",
39
+ "fs-extra": "^11.2.0",
40
+ "html-webpack-plugin": "^5.6.3",
41
+ "rollup": "^4.36.0",
42
+ "ts-loader": "^9.5.2",
43
+ "webpack": "^5.98.0",
44
+ "webpack-cli": "^6.0.1",
45
+ "webpack-dev-server": "^5.2.0",
46
+ "webpack-merge": "^6.0.1",
47
+ "@cocojs/type-extractor": "0.0.16",
48
+ "@cocojs/rollup-plugin-mvc": "0.0.1-alpha.2"
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^22.15.18"
52
+ },
53
+ "scripts": {}
54
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "lib": ["dom", "esnext"],
5
+ "module": "ESNext",
6
+ "moduleResolution": "node",
7
+ "allowSyntheticDefaultImports": true,
8
+ "jsx": "preserve",
9
+ "resolveJsonModule": true,
10
+ "plugins": [
11
+ {
12
+ "transform": "@cocojs/type-extractor",
13
+ "transformProgram": true
14
+ }
15
+ ]
16
+ }
17
+ }