k99 0.6.0-alpha.1 → 0.6.0-alpha.3
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/browser.cjs +457 -0
- package/{browser/index.d.ts → browser.d.ts} +1 -1
- package/{browser/index.js → browser.js} +1 -1
- package/{browser/index.min.js → browser.min.js} +1 -1
- package/{browser/index.min.mjs → browser.min.mjs} +1 -1
- package/{browser/index.mjs → browser.mjs} +1 -1
- package/cli/{index.mjs → index.cjs} +39 -15
- package/cli/index.d.ts +1 -1
- package/cli.cjs +14 -0
- package/index.cjs +1550 -0
- package/index.d.ts +104 -126
- package/index.js +357 -449
- package/index.min.js +2 -2
- package/index.min.mjs +2 -2
- package/index.mjs +357 -448
- package/node/{index.mjs → index.cjs} +187 -182
- package/node/index.d.ts +114 -37
- package/package.json +24 -1
- package/services.cjs +106 -0
- package/{services/index.d.ts → services.d.ts} +1 -1
- package/{services/index.js → services.js} +1 -1
- package/{services/index.min.js → services.min.js} +1 -1
- package/{services/index.min.mjs → services.min.mjs} +1 -1
- package/{services/index.mjs → services.mjs} +1 -1
- package/starter.cjs +15 -0
- package/browser/package.json +0 -7
- package/cli/package.json +0 -4
- package/cli.mjs +0 -12
- package/node/package.json +0 -4
- package/services/package.json +0 -7
- package/starter.mjs +0 -13
package/browser.cjs
ADDED
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* k99 v0.6.0-alpha.3
|
|
3
|
+
* (c) 2019-2023 猛火Fierflame
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
function createSettingsApi$1(cache, root) {
|
|
9
|
+
return {
|
|
10
|
+
async read(path) {
|
|
11
|
+
path = `${root}${path}`;
|
|
12
|
+
const response = await cache.match(path);
|
|
13
|
+
if (!response) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return response.json();
|
|
17
|
+
},
|
|
18
|
+
async write(path, cfg) {
|
|
19
|
+
path = `${root}${path}`;
|
|
20
|
+
if (cfg === undefined) {
|
|
21
|
+
return cache.delete(path);
|
|
22
|
+
}
|
|
23
|
+
await cache.put(path, new Response(JSON.stringify(cfg)));
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function createAssetsApi$1(cache, root) {
|
|
29
|
+
return {
|
|
30
|
+
async read(path) {
|
|
31
|
+
path = `${root}${path}`;
|
|
32
|
+
const response = await cache.match(path);
|
|
33
|
+
if (!response) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
37
|
+
},
|
|
38
|
+
async write(path, data) {
|
|
39
|
+
path = `${root}${path}`;
|
|
40
|
+
await cache.put(path, new Response(data));
|
|
41
|
+
return true;
|
|
42
|
+
},
|
|
43
|
+
async delete(path) {
|
|
44
|
+
path = `${root}${path}`;
|
|
45
|
+
return cache.delete(path);
|
|
46
|
+
},
|
|
47
|
+
stat() {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createLogApi$1(cache, root) {
|
|
53
|
+
return {
|
|
54
|
+
async read(path) {
|
|
55
|
+
path = `${root}${path}`;
|
|
56
|
+
const response = await cache.match(path);
|
|
57
|
+
return response ? response.text() : '';
|
|
58
|
+
},
|
|
59
|
+
async write(path, log) {
|
|
60
|
+
path = `${root}${path}`;
|
|
61
|
+
const response = await cache.match(path);
|
|
62
|
+
const text = `${(await response?.text()) || ''}${log}\n`;
|
|
63
|
+
await cache.put(path, new Response(text));
|
|
64
|
+
return true;
|
|
65
|
+
},
|
|
66
|
+
async clear(path) {
|
|
67
|
+
path = `${root}${path}`;
|
|
68
|
+
await cache.delete(path);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function createCacheApis(name = 'k99', {
|
|
73
|
+
assets = '/k99/assets',
|
|
74
|
+
log = '/k99/log',
|
|
75
|
+
settings = '/k99/settings'
|
|
76
|
+
} = {}) {
|
|
77
|
+
const cache = await caches.open(name);
|
|
78
|
+
if (assets[assets.length - 1] !== '/') {
|
|
79
|
+
assets = `${assets}/`;
|
|
80
|
+
}
|
|
81
|
+
if (assets[0] !== '/') {
|
|
82
|
+
assets = `/${assets}`;
|
|
83
|
+
}
|
|
84
|
+
if (log[log.length - 1] !== '/') {
|
|
85
|
+
log = `${log}/`;
|
|
86
|
+
}
|
|
87
|
+
if (log[0] !== '/') {
|
|
88
|
+
log = `/${log}`;
|
|
89
|
+
}
|
|
90
|
+
if (settings[log.length - 1] !== '/') {
|
|
91
|
+
settings = `${settings}/`;
|
|
92
|
+
}
|
|
93
|
+
if (settings[0] !== '/') {
|
|
94
|
+
settings = `/${settings}`;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
logApi: createLogApi$1(cache, log),
|
|
98
|
+
assetsApi: createAssetsApi$1(cache, assets),
|
|
99
|
+
settingsApi: createSettingsApi$1(cache, settings)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function createAssetsApi(db, store) {
|
|
104
|
+
return {
|
|
105
|
+
async read(path) {
|
|
106
|
+
return new Promise(r => {
|
|
107
|
+
const request = db.transaction(store).objectStore(store).get(path);
|
|
108
|
+
request.addEventListener('error', () => r(null));
|
|
109
|
+
request.addEventListener('success', () => r(request.result || null));
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
async write(path, data) {
|
|
113
|
+
return new Promise(r => {
|
|
114
|
+
const request = db.transaction(store, 'readwrite').objectStore(store).add(data, path);
|
|
115
|
+
request.addEventListener('error', () => r(false));
|
|
116
|
+
request.addEventListener('success', () => r(true));
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
async delete(path) {
|
|
120
|
+
return new Promise(r => {
|
|
121
|
+
const request = db.transaction(store, 'readwrite').objectStore(store).delete(path);
|
|
122
|
+
request.addEventListener('error', () => r(false));
|
|
123
|
+
request.addEventListener('success', () => r(true));
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
stat() {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function createSettingsApi(db, store) {
|
|
132
|
+
return {
|
|
133
|
+
async read(path) {
|
|
134
|
+
return new Promise(r => {
|
|
135
|
+
const request = db.transaction(store).objectStore(store).get(path);
|
|
136
|
+
request.addEventListener('error', () => r(null));
|
|
137
|
+
request.addEventListener('success', () => r(request.result || null));
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
async write(path, cfg) {
|
|
141
|
+
if (cfg === null || cfg === undefined) {
|
|
142
|
+
return new Promise(r => {
|
|
143
|
+
const request = db.transaction(store, 'readwrite').objectStore(store).delete(path);
|
|
144
|
+
request.addEventListener('error', () => r(false));
|
|
145
|
+
request.addEventListener('success', () => r(true));
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return new Promise(r => {
|
|
149
|
+
const request = db.transaction(store, 'readwrite').objectStore(store).add(cfg, path);
|
|
150
|
+
request.addEventListener('error', () => r(false));
|
|
151
|
+
request.addEventListener('success', () => r(true));
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function createLogApi(db, store) {
|
|
157
|
+
return {
|
|
158
|
+
async read(path) {
|
|
159
|
+
return new Promise(r => {
|
|
160
|
+
const request = db.transaction(store).objectStore(store).get(path);
|
|
161
|
+
request.addEventListener('error', () => r(''));
|
|
162
|
+
request.addEventListener('success', () => r(request.result || null));
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
async write(path, log) {
|
|
166
|
+
return new Promise(r => {
|
|
167
|
+
const transaction = db.transaction(store, 'readwrite');
|
|
168
|
+
const request = transaction.objectStore(store).get(path);
|
|
169
|
+
request.addEventListener('error', () => r(false));
|
|
170
|
+
request.addEventListener('success', () => {
|
|
171
|
+
const request2 = transaction.objectStore(store).add(`${request.result || ''}${log}\n`, path);
|
|
172
|
+
request2.addEventListener('error', () => r(false));
|
|
173
|
+
request2.addEventListener('success', () => r(true));
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
},
|
|
177
|
+
async clear(path) {
|
|
178
|
+
return new Promise(r => {
|
|
179
|
+
const request = db.transaction(store, 'readwrite').objectStore(store).delete(path);
|
|
180
|
+
request.addEventListener('error', () => r());
|
|
181
|
+
request.addEventListener('success', () => r());
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function createIndexedApis(database = 'k99', {
|
|
187
|
+
assets = 'assets',
|
|
188
|
+
log = 'log',
|
|
189
|
+
settings = 'settings'
|
|
190
|
+
} = {}, version = 1) {
|
|
191
|
+
return new Promise((resolve, reject) => {
|
|
192
|
+
const req = indexedDB.open(database, version);
|
|
193
|
+
req.addEventListener('upgradeneeded', e => {
|
|
194
|
+
const db = e.target.result;
|
|
195
|
+
db.createObjectStore(assets);
|
|
196
|
+
db.createObjectStore(log);
|
|
197
|
+
db.createObjectStore(settings);
|
|
198
|
+
});
|
|
199
|
+
req.addEventListener('error', () => reject(req.error));
|
|
200
|
+
req.addEventListener('success', () => resolve(req.result));
|
|
201
|
+
}).then(db => ({
|
|
202
|
+
logApi: createLogApi(db, log),
|
|
203
|
+
assetsApi: createAssetsApi(db, assets),
|
|
204
|
+
settingsApi: createSettingsApi(db, settings)
|
|
205
|
+
}));
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function createStreamRead(readableStream) {
|
|
209
|
+
let reader;
|
|
210
|
+
let current = 0;
|
|
211
|
+
let cb = null;
|
|
212
|
+
let end = false;
|
|
213
|
+
const dataList = [];
|
|
214
|
+
let dataSize = 0;
|
|
215
|
+
const list = [];
|
|
216
|
+
function get() {
|
|
217
|
+
if (!current || dataSize <= current) {
|
|
218
|
+
const chunk = new Uint8Array(dataSize);
|
|
219
|
+
let index = 0;
|
|
220
|
+
for (const item of dataList) {
|
|
221
|
+
for (let i = 0; i < item.byteLength; i++, index++) {
|
|
222
|
+
chunk[index] = item[i];
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
dataSize = 0;
|
|
226
|
+
dataList.length = 0;
|
|
227
|
+
return chunk;
|
|
228
|
+
}
|
|
229
|
+
let item = dataList.shift();
|
|
230
|
+
if (!item) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
const chunk = new Uint8Array(current);
|
|
234
|
+
let index = 0;
|
|
235
|
+
let i = 0;
|
|
236
|
+
let len = item.length;
|
|
237
|
+
while (index < current) {
|
|
238
|
+
if (i >= length) {
|
|
239
|
+
item = dataList.shift();
|
|
240
|
+
if (!item) {
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
i = 0;
|
|
244
|
+
len = item.length;
|
|
245
|
+
}
|
|
246
|
+
chunk[index] = item[i];
|
|
247
|
+
i++;
|
|
248
|
+
index++;
|
|
249
|
+
}
|
|
250
|
+
if (item && i < len) {
|
|
251
|
+
dataList.unshift(new Uint8Array(item.buffer.slice(i)));
|
|
252
|
+
}
|
|
253
|
+
dataSize -= current;
|
|
254
|
+
return chunk;
|
|
255
|
+
}
|
|
256
|
+
function add(data) {
|
|
257
|
+
dataSize += data.length || 0;
|
|
258
|
+
dataList.push(data);
|
|
259
|
+
return dataSize;
|
|
260
|
+
}
|
|
261
|
+
function runCb() {
|
|
262
|
+
if (!cb) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const v = dataSize ? get() : null;
|
|
266
|
+
cb(v);
|
|
267
|
+
[current, cb] = list.shift() || [0, null];
|
|
268
|
+
}
|
|
269
|
+
async function run() {
|
|
270
|
+
for (;;) {
|
|
271
|
+
if (!cb) {
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
if (end) {
|
|
275
|
+
runCb();
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
if (dataSize && (!current || dataSize >= current)) {
|
|
279
|
+
runCb();
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
const {
|
|
283
|
+
value,
|
|
284
|
+
done
|
|
285
|
+
} = await reader.read();
|
|
286
|
+
if (done) {
|
|
287
|
+
end = true;
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
add(value);
|
|
291
|
+
if (dataSize && (!current || dataSize >= current)) {
|
|
292
|
+
runCb();
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
function read(size = 0) {
|
|
298
|
+
return new Promise(resolve => {
|
|
299
|
+
if (!reader) {
|
|
300
|
+
reader = readableStream.getReader();
|
|
301
|
+
}
|
|
302
|
+
size = Math.max(size, 0);
|
|
303
|
+
if (cb) {
|
|
304
|
+
list.push([size, resolve]);
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
current = size;
|
|
308
|
+
cb = resolve;
|
|
309
|
+
run();
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
return read;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function createBufferRead(request) {
|
|
316
|
+
let arrayBuffer;
|
|
317
|
+
function read(size = 0) {
|
|
318
|
+
if (!arrayBuffer) {
|
|
319
|
+
arrayBuffer = request.arrayBuffer().then(t => [new Uint8Array(0), new Uint8Array(t), 0]);
|
|
320
|
+
}
|
|
321
|
+
arrayBuffer = arrayBuffer.then(v => {
|
|
322
|
+
if (!v) {
|
|
323
|
+
return null;
|
|
324
|
+
}
|
|
325
|
+
let [, buff, index] = v;
|
|
326
|
+
if (index >= buff.byteLength) {
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
if (!size || size + index >= buff.byteLength) {
|
|
330
|
+
return [buff.slice(index), buff, buff.byteLength];
|
|
331
|
+
}
|
|
332
|
+
let end = index + size;
|
|
333
|
+
return [buff.slice(index, end), buff, end];
|
|
334
|
+
});
|
|
335
|
+
return arrayBuffer.then(v => {
|
|
336
|
+
if (!v) {
|
|
337
|
+
return null;
|
|
338
|
+
}
|
|
339
|
+
const [value] = v;
|
|
340
|
+
return value;
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
return read;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
function getNameValue(s) {
|
|
347
|
+
const index = s.indexOf('=');
|
|
348
|
+
if (index < 0) {
|
|
349
|
+
return [decodeURIComponent(s), ''];
|
|
350
|
+
}
|
|
351
|
+
return [decodeURIComponent(s.substring(0, index)), decodeURIComponent(s.substring(index + 1))];
|
|
352
|
+
}
|
|
353
|
+
function parseQuery(s) {
|
|
354
|
+
const query = {};
|
|
355
|
+
for (const k of s.split('&').filter(Boolean)) {
|
|
356
|
+
const [index, value] = getNameValue(k);
|
|
357
|
+
if (index in query) {
|
|
358
|
+
query[index] = [query[index], value].flat();
|
|
359
|
+
} else {
|
|
360
|
+
query[index] = value;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return query;
|
|
364
|
+
}
|
|
365
|
+
function getHeaders(h) {
|
|
366
|
+
const headers = {};
|
|
367
|
+
for (const [k, v] of h.entries()) {
|
|
368
|
+
headers[k.toLowerCase()] = v;
|
|
369
|
+
}
|
|
370
|
+
return headers;
|
|
371
|
+
}
|
|
372
|
+
function createRequest(request, searchParser = parseQuery) {
|
|
373
|
+
const url = new URL(request.url);
|
|
374
|
+
const {
|
|
375
|
+
body,
|
|
376
|
+
signal
|
|
377
|
+
} = request;
|
|
378
|
+
const aborted = new Promise((_, reject) => {
|
|
379
|
+
if (signal.aborted) {
|
|
380
|
+
return reject(signal.reason);
|
|
381
|
+
}
|
|
382
|
+
signal.addEventListener('abort', () => reject(signal.reason), {
|
|
383
|
+
once: true
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
return {
|
|
387
|
+
method: (request.method || 'GET').toUpperCase(),
|
|
388
|
+
url: `${url.pathname}${url.search}` || '/',
|
|
389
|
+
headers: getHeaders(request.headers),
|
|
390
|
+
pathname: url.pathname || '/',
|
|
391
|
+
search: url.search || '',
|
|
392
|
+
query: searchParser(url.search.substring(1)),
|
|
393
|
+
aborted,
|
|
394
|
+
read: body ? createStreamRead(body) : createBufferRead(request)
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
function createHeaders(target) {
|
|
399
|
+
const headers = new Headers();
|
|
400
|
+
for (const [k, v] of Object.entries(target.headers)) {
|
|
401
|
+
for (const it of [v].flat()) {
|
|
402
|
+
headers.append(k.toLowerCase(), String(it));
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return headers;
|
|
406
|
+
}
|
|
407
|
+
function createResponse(target) {
|
|
408
|
+
return new Response(new ReadableStream({
|
|
409
|
+
async pull(controller) {
|
|
410
|
+
const {
|
|
411
|
+
value,
|
|
412
|
+
done
|
|
413
|
+
} = await target.next();
|
|
414
|
+
if (done) {
|
|
415
|
+
controller.close();
|
|
416
|
+
} else {
|
|
417
|
+
controller.enqueue(value);
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
async cancel(reason) {
|
|
421
|
+
return target.throw(reason).then(() => {}, () => {});
|
|
422
|
+
}
|
|
423
|
+
}), {
|
|
424
|
+
status: target.status,
|
|
425
|
+
headers: createHeaders(target)
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
function createFetch(run, notFound, searchParser) {
|
|
430
|
+
return async function fetch(input, init) {
|
|
431
|
+
const request = new Request(input, init);
|
|
432
|
+
const {
|
|
433
|
+
signal
|
|
434
|
+
} = request;
|
|
435
|
+
if (signal.aborted) {
|
|
436
|
+
return Promise.reject(new DOMException('The user aborted a request.'));
|
|
437
|
+
}
|
|
438
|
+
const r = await run(createRequest(request, searchParser));
|
|
439
|
+
if (r) {
|
|
440
|
+
return createResponse(r);
|
|
441
|
+
}
|
|
442
|
+
if (typeof notFound === 'function') {
|
|
443
|
+
return notFound(request);
|
|
444
|
+
}
|
|
445
|
+
return new Response(null, {
|
|
446
|
+
status: 404
|
|
447
|
+
});
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
exports.createBufferRead = createBufferRead;
|
|
452
|
+
exports.createCacheApis = createCacheApis;
|
|
453
|
+
exports.createFetch = createFetch;
|
|
454
|
+
exports.createIndexedApis = createIndexedApis;
|
|
455
|
+
exports.createRequest = createRequest;
|
|
456
|
+
exports.createResponse = createResponse;
|
|
457
|
+
exports.createStreamRead = createStreamRead;
|
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* k99 v0.6.0-alpha.
|
|
2
|
+
* k99 v0.6.0-alpha.3
|
|
3
3
|
* (c) 2019-2023 猛火Fierflame
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
var http = require('node:http');
|
|
9
|
+
var node = require('k99/node');
|
|
10
|
+
var fsPromise = require('node:fs/promises');
|
|
11
|
+
|
|
12
|
+
function _interopNamespaceDefault(e) {
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var http__namespace = /*#__PURE__*/_interopNamespaceDefault(http);
|
|
30
|
+
var fsPromise__namespace = /*#__PURE__*/_interopNamespaceDefault(fsPromise);
|
|
9
31
|
|
|
10
32
|
async function exec$1({
|
|
11
33
|
path,
|
|
@@ -16,9 +38,9 @@ async function exec$1({
|
|
|
16
38
|
if (path) {
|
|
17
39
|
process.chdir(path);
|
|
18
40
|
}
|
|
19
|
-
const
|
|
20
|
-
console.log('K99', '@'
|
|
21
|
-
const server =
|
|
41
|
+
const r = await node.start();
|
|
42
|
+
console.log('K99', '@');
|
|
43
|
+
const server = http__namespace.createServer(node.createHttpCallback(r));
|
|
22
44
|
// (global as any).router = router;
|
|
23
45
|
if (listen && typeof listen === 'string') {
|
|
24
46
|
server.listen(listen);
|
|
@@ -51,21 +73,21 @@ async function exec({
|
|
|
51
73
|
path
|
|
52
74
|
}, ...args) {
|
|
53
75
|
if (path) {
|
|
54
|
-
await
|
|
76
|
+
await fsPromise__namespace.mkdir(path, {
|
|
55
77
|
recursive: true
|
|
56
78
|
}).catch(() => {});
|
|
57
79
|
process.chdir(path);
|
|
58
80
|
}
|
|
59
81
|
console.log('K99', '@', process.cwd());
|
|
60
82
|
for (const n of configFileNames) {
|
|
61
|
-
if (await
|
|
83
|
+
if (await fsPromise__namespace.stat(n).then(() => true, () => false)) {
|
|
62
84
|
console.log(`The config (${n}) is Existing.`);
|
|
63
85
|
return;
|
|
64
86
|
}
|
|
65
87
|
}
|
|
66
|
-
await
|
|
67
|
-
await
|
|
68
|
-
const cfg = JSON.stringify(await
|
|
88
|
+
await fsPromise__namespace.writeFile('.k99.config.json', JSON.stringify({}, null, '\t'));
|
|
89
|
+
await fsPromise__namespace.writeFile('k99.config.js', entryFile);
|
|
90
|
+
const cfg = JSON.stringify(await fsPromise__namespace.readFile('package.json', 'utf-8').catch(() => {})) || {
|
|
69
91
|
private: true
|
|
70
92
|
};
|
|
71
93
|
if (!cfg.main) {
|
|
@@ -84,9 +106,9 @@ async function exec({
|
|
|
84
106
|
cfg.dependencies = {};
|
|
85
107
|
}
|
|
86
108
|
if (!cfg.dependencies.k99) {
|
|
87
|
-
cfg.dependencies.k99 = '^0.6.0-alpha.
|
|
109
|
+
cfg.dependencies.k99 = '^0.6.0-alpha.3';
|
|
88
110
|
}
|
|
89
|
-
await
|
|
111
|
+
await fsPromise__namespace.writeFile('package.json', JSON.stringify(cfg, null, 2));
|
|
90
112
|
}
|
|
91
113
|
const opts = ['path'];
|
|
92
114
|
const argv = '';
|
|
@@ -173,4 +195,6 @@ const opt = {
|
|
|
173
195
|
port
|
|
174
196
|
};
|
|
175
197
|
|
|
176
|
-
|
|
198
|
+
exports.command = index;
|
|
199
|
+
exports.options = opt;
|
|
200
|
+
exports.start = start;
|
package/cli/index.d.ts
CHANGED
package/cli.cjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*!
|
|
3
|
+
* k99 v0.6.0-alpha.3
|
|
4
|
+
* (c) 2019-2023 猛火Fierflame
|
|
5
|
+
* @license MIT
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var entryCli = require('entry-cli');
|
|
10
|
+
var cli = require('k99/cli');
|
|
11
|
+
|
|
12
|
+
entryCli.cli(cli.command, cli.options, {
|
|
13
|
+
execCmd: 'k99'
|
|
14
|
+
})(process.argv.slice(2));
|