@jayfong/x-server 2.106.6 → 2.108.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.
File without changes
@@ -2,6 +2,10 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.defineHandler = defineHandler;
5
+ exports.defineHandlerANY = defineHandlerANY;
6
+ exports.defineHandlerFILE = defineHandlerFILE;
7
+ exports.defineHandlerGET = defineHandlerGET;
8
+ exports.defineHandlerXML = defineHandlerXML;
5
9
  var _handler = require("./handler");
6
10
  function defineHandler(options) {
7
11
  const handler = new _handler.Handler({
@@ -11,20 +15,22 @@ function defineHandler(options) {
11
15
  return handler;
12
16
  }
13
17
  defineHandler.POST = defineHandler;
14
- defineHandler.GET = options => {
18
+ function defineHandlerGET(options) {
15
19
  const handler = new _handler.Handler({
16
20
  ...options,
17
21
  requestMethod: 'GET'
18
22
  });
19
23
  return handler;
20
- };
21
- defineHandler.FILE = options => {
24
+ }
25
+ defineHandler.GET = defineHandlerGET;
26
+ function defineHandlerFILE(options) {
22
27
  const handler = new _handler.Handler({
23
28
  ...options,
24
29
  requestMethod: 'FILE'
25
30
  });
26
31
  return handler;
27
- };
32
+ }
33
+ defineHandler.FILE = defineHandlerFILE;
28
34
  defineHandler.WS = options => {
29
35
  const handler = new _handler.Handler({
30
36
  ...options,
@@ -32,17 +38,19 @@ defineHandler.WS = options => {
32
38
  });
33
39
  return handler;
34
40
  };
35
- defineHandler.XML = options => {
41
+ function defineHandlerXML(options) {
36
42
  const handler = new _handler.Handler({
37
43
  ...options,
38
44
  requestMethod: 'XML'
39
45
  });
40
46
  return handler;
41
- };
42
- defineHandler.ANY = options => {
47
+ }
48
+ defineHandler.XML = defineHandlerXML;
49
+ function defineHandlerANY(options) {
43
50
  const handler = new _handler.Handler({
44
51
  ...options,
45
52
  requestMethod: 'ANY'
46
53
  });
47
54
  return handler;
48
- };
55
+ }
56
+ defineHandler.ANY = defineHandlerANY;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.RandomService = void 0;
6
+ var _cuid = require("@paralleldrive/cuid2");
7
+ var _randomstring = _interopRequireDefault(require("randomstring"));
8
+ class RandomService {
9
+ constructor() {
10
+ this.serviceName = 'random';
11
+ }
12
+ /**
13
+ * 24位。
14
+ *
15
+ * @see https://github.com/paralleldrive/cuid2
16
+ */
17
+ cuid2() {
18
+ return (0, _cuid.createId)();
19
+ }
20
+
21
+ /**
22
+ * [0-9 a-z A-Z]
23
+ */
24
+ generateAlphanumeric(length) {
25
+ return _randomstring.default.generate({
26
+ charset: 'alphanumeric',
27
+ length: length
28
+ });
29
+ }
30
+
31
+ /**
32
+ * [a-z A-Z]
33
+ */
34
+ generateAlphabetic(length) {
35
+ return _randomstring.default.generate({
36
+ charset: 'alphabetic',
37
+ length: length
38
+ });
39
+ }
40
+
41
+ /**
42
+ * [0-9]
43
+ */
44
+ generateNumeric(length) {
45
+ return _randomstring.default.generate({
46
+ charset: 'numeric',
47
+ length: length
48
+ });
49
+ }
50
+ }
51
+ exports.RandomService = RandomService;
package/lib/_cjs/x.js CHANGED
@@ -3,8 +3,8 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
5
  exports.x = void 0;
6
- var _os = _interopRequireDefault(require("os"));
7
- var _path = _interopRequireDefault(require("path"));
6
+ var _nodeOs = _interopRequireDefault(require("node:os"));
7
+ var _nodePath = _interopRequireDefault(require("node:path"));
8
8
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
9
9
  var _ctx_storage = require("./core/ctx_storage");
10
10
  var _crypto = require("./services/crypto");
@@ -13,11 +13,12 @@ var _dispose = require("./services/dispose");
13
13
  var _emoji = require("./services/emoji");
14
14
  var _html = require("./services/html");
15
15
  var _log = require("./services/log");
16
+ var _random = require("./services/random");
16
17
  const env = JSON.parse(process.env.X_SERVER_ENVS || '{}');
17
18
  const x = exports.x = {
18
19
  appId: env.APP_ID,
19
20
  env: env,
20
- dataDir: _path.default.join(_os.default.homedir(), `.xs/${env.APP_ID}`),
21
+ dataDir: _nodePath.default.join(_nodeOs.default.homedir(), `.xs/${env.APP_ID}`),
21
22
  get ctx() {
22
23
  return _ctx_storage.ctxStorage.getStore();
23
24
  },
@@ -31,4 +32,4 @@ const x = exports.x = {
31
32
  _fsExtra.default.ensureDirSync(x.dataDir);
32
33
  x.register(new _dispose.DisposeService({
33
34
  disposeOnExit: true
34
- }), new _log.LogService(), new _emoji.EmojiService(), new _db_value.DbValueService(), new _crypto.CryptoService(), new _html.HtmlService());
35
+ }), new _log.LogService(), new _emoji.EmojiService(), new _db_value.DbValueService(), new _crypto.CryptoService(), new _html.HtmlService(), new _random.RandomService());
@@ -1,10 +1,12 @@
1
+ import type { FirstParameter } from 'vtils/types';
1
2
  import { Handler } from './handler';
2
3
  import type { XHandler } from './types';
3
- export declare function defineHandler<TReqData extends any = void, TResData extends any = void>(options: XHandler.Options<TReqData, TResData, 'POST'>): Handler<TReqData, TResData, "POST">;
4
+ export declare function defineHandler<TFn extends (...args: any[]) => Promise<any>, TReqData = FirstParameter<TFn>, TResData = Awaited<ReturnType<TFn>>>(options: XHandler.Options<TReqData, TResData, 'POST'>): Handler<TReqData, TResData, 'POST'>;
5
+ export declare function defineHandler<TReqData extends any = void, TResData extends any = void>(options: XHandler.Options<TReqData, TResData, 'POST'>): Handler<TReqData, TResData, 'POST'>;
4
6
  export declare namespace defineHandler {
5
7
  var POST: typeof defineHandler;
6
- var GET: <TReqData extends unknown = void, TResData extends unknown = void>(options: XHandler.Options<TReqData, TResData, "GET">) => Handler<TReqData, TResData, "GET">;
7
- var FILE: <TReqData extends unknown = void, TResData extends unknown = void>(options: XHandler.Options<TReqData, TResData, "FILE">) => Handler<TReqData, TResData, "FILE">;
8
+ var GET: typeof defineHandlerGET;
9
+ var FILE: typeof defineHandlerFILE;
8
10
  var WS: <TReqData extends Record<string, [any, any]>>(options: XHandler.Options<{ [K in keyof TReqData]: {
9
11
  request: TReqData[K][0];
10
12
  response: TReqData[K][1];
@@ -12,6 +14,14 @@ export declare namespace defineHandler {
12
14
  request: TReqData[K][0];
13
15
  response: TReqData[K][1];
14
16
  }; }, void, "WS">;
15
- var XML: <TReqData extends unknown = void, TResData extends unknown = void>(options: XHandler.Options<TReqData, TResData, "XML">) => Handler<TReqData, TResData, "XML">;
16
- var ANY: <TReqData extends unknown = void, TResData extends unknown = void>(options: XHandler.Options<TReqData, TResData, "ANY">) => Handler<TReqData, TResData, "ANY">;
17
+ var XML: typeof defineHandlerXML;
18
+ var ANY: typeof defineHandlerANY;
17
19
  }
20
+ export declare function defineHandlerGET<TFn extends (...args: any[]) => Promise<any>, TReqData = FirstParameter<TFn>, TResData = Awaited<ReturnType<TFn>>>(options: XHandler.Options<TReqData, TResData, 'GET'>): Handler<TReqData, TResData, 'GET'>;
21
+ export declare function defineHandlerGET<TReqData extends any = void, TResData extends any = void>(options: XHandler.Options<TReqData, TResData, 'GET'>): Handler<TReqData, TResData, 'GET'>;
22
+ export declare function defineHandlerFILE<TFn extends (...args: any[]) => Promise<any>, TReqData = FirstParameter<TFn>, TResData = Awaited<ReturnType<TFn>>>(options: XHandler.Options<TReqData, TResData, 'FILE'>): Handler<TReqData, TResData, 'FILE'>;
23
+ export declare function defineHandlerFILE<TReqData extends any = void, TResData extends any = void>(options: XHandler.Options<TReqData, TResData, 'FILE'>): Handler<TReqData, TResData, 'FILE'>;
24
+ export declare function defineHandlerXML<TFn extends (...args: any[]) => Promise<any>, TReqData = FirstParameter<TFn>, TResData = Awaited<ReturnType<TFn>>>(options: XHandler.Options<TReqData, TResData, 'XML'>): Handler<TReqData, TResData, 'XML'>;
25
+ export declare function defineHandlerXML<TReqData extends any = void, TResData extends any = void>(options: XHandler.Options<TReqData, TResData, 'XML'>): Handler<TReqData, TResData, 'XML'>;
26
+ export declare function defineHandlerANY<TFn extends (...args: any[]) => Promise<any>, TReqData = FirstParameter<TFn>, TResData = Awaited<ReturnType<TFn>>>(options: XHandler.Options<TReqData, TResData, 'ANY'>): Handler<TReqData, TResData, 'ANY'>;
27
+ export declare function defineHandlerANY<TReqData extends any = void, TResData extends any = void>(options: XHandler.Options<TReqData, TResData, 'ANY'>): Handler<TReqData, TResData, 'ANY'>;
@@ -7,20 +7,22 @@ export function defineHandler(options) {
7
7
  return handler;
8
8
  }
9
9
  defineHandler.POST = defineHandler;
10
- defineHandler.GET = options => {
10
+ export function defineHandlerGET(options) {
11
11
  const handler = new Handler({
12
12
  ...options,
13
13
  requestMethod: 'GET'
14
14
  });
15
15
  return handler;
16
- };
17
- defineHandler.FILE = options => {
16
+ }
17
+ defineHandler.GET = defineHandlerGET;
18
+ export function defineHandlerFILE(options) {
18
19
  const handler = new Handler({
19
20
  ...options,
20
21
  requestMethod: 'FILE'
21
22
  });
22
23
  return handler;
23
- };
24
+ }
25
+ defineHandler.FILE = defineHandlerFILE;
24
26
  defineHandler.WS = options => {
25
27
  const handler = new Handler({
26
28
  ...options,
@@ -28,17 +30,19 @@ defineHandler.WS = options => {
28
30
  });
29
31
  return handler;
30
32
  };
31
- defineHandler.XML = options => {
33
+ export function defineHandlerXML(options) {
32
34
  const handler = new Handler({
33
35
  ...options,
34
36
  requestMethod: 'XML'
35
37
  });
36
38
  return handler;
37
- };
38
- defineHandler.ANY = options => {
39
+ }
40
+ defineHandler.XML = defineHandlerXML;
41
+ export function defineHandlerANY(options) {
39
42
  const handler = new Handler({
40
43
  ...options,
41
44
  requestMethod: 'ANY'
42
45
  });
43
46
  return handler;
44
- };
47
+ }
48
+ defineHandler.ANY = defineHandlerANY;
@@ -0,0 +1,27 @@
1
+ import type { BaseService } from './base';
2
+ export declare class RandomService implements BaseService {
3
+ serviceName: string;
4
+ /**
5
+ * 24位。
6
+ *
7
+ * @see https://github.com/paralleldrive/cuid2
8
+ */
9
+ cuid2(): string;
10
+ /**
11
+ * [0-9 a-z A-Z]
12
+ */
13
+ generateAlphanumeric(length: number): string;
14
+ /**
15
+ * [a-z A-Z]
16
+ */
17
+ generateAlphabetic(length: number): string;
18
+ /**
19
+ * [0-9]
20
+ */
21
+ generateNumeric(length: number): string;
22
+ }
23
+ declare module '../x' {
24
+ interface X {
25
+ random: RandomService;
26
+ }
27
+ }
@@ -0,0 +1,45 @@
1
+ import { createId as cuid2 } from '@paralleldrive/cuid2';
2
+ import randomstring from 'randomstring';
3
+ export class RandomService {
4
+ constructor() {
5
+ this.serviceName = 'random';
6
+ }
7
+ /**
8
+ * 24位。
9
+ *
10
+ * @see https://github.com/paralleldrive/cuid2
11
+ */
12
+ cuid2() {
13
+ return cuid2();
14
+ }
15
+
16
+ /**
17
+ * [0-9 a-z A-Z]
18
+ */
19
+ generateAlphanumeric(length) {
20
+ return randomstring.generate({
21
+ charset: 'alphanumeric',
22
+ length: length
23
+ });
24
+ }
25
+
26
+ /**
27
+ * [a-z A-Z]
28
+ */
29
+ generateAlphabetic(length) {
30
+ return randomstring.generate({
31
+ charset: 'alphabetic',
32
+ length: length
33
+ });
34
+ }
35
+
36
+ /**
37
+ * [0-9]
38
+ */
39
+ generateNumeric(length) {
40
+ return randomstring.generate({
41
+ charset: 'numeric',
42
+ length: length
43
+ });
44
+ }
45
+ }
package/lib/x.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- import { XHandler } from './core/types';
2
- import { BaseService } from './services/base';
1
+ import type { XHandler } from './core/types';
2
+ import type { BaseService } from './services/base';
3
3
  import './services/crypto';
4
4
  import './services/db_value';
5
5
  import './services/dispose';
6
6
  import './services/emoji';
7
7
  import './services/html';
8
8
  import './services/log';
9
+ import './services/random';
9
10
  export interface X {
10
11
  readonly appId: string;
11
12
  readonly env: NodeJS.ProcessEnv;
package/lib/x.js CHANGED
@@ -1,5 +1,5 @@
1
- import os from 'os';
2
- import path from 'path';
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
3
  import fs from 'fs-extra';
4
4
  import { ctxStorage } from "./core/ctx_storage";
5
5
  import { CryptoService } from "./services/crypto";
@@ -8,6 +8,7 @@ import { DisposeService } from "./services/dispose";
8
8
  import { EmojiService } from "./services/emoji";
9
9
  import { HtmlService } from "./services/html";
10
10
  import { LogService } from "./services/log";
11
+ import { RandomService } from "./services/random";
11
12
  const env = JSON.parse(process.env.X_SERVER_ENVS || '{}');
12
13
  export const x = {
13
14
  appId: env.APP_ID,
@@ -26,4 +27,4 @@ export const x = {
26
27
  fs.ensureDirSync(x.dataDir);
27
28
  x.register(new DisposeService({
28
29
  disposeOnExit: true
29
- }), new LogService(), new EmojiService(), new DbValueService(), new CryptoService(), new HtmlService());
30
+ }), new LogService(), new EmojiService(), new DbValueService(), new CryptoService(), new HtmlService(), new RandomService());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jayfong/x-server",
3
- "version": "2.106.6",
3
+ "version": "2.108.0",
4
4
  "license": "ISC",
5
5
  "sideEffects": false,
6
6
  "main": "lib/_cjs/index.js",
@@ -27,8 +27,9 @@
27
27
  "@fastify/formbody": "^7.4.0",
28
28
  "@fastify/multipart": "^7.7.0",
29
29
  "@fastify/websocket": "^8.1.0",
30
- "@prisma/adapter-mariadb": "^7.1.0",
31
- "@prisma/client": "^7.1.0",
30
+ "@paralleldrive/cuid2": "^3.0.4",
31
+ "@prisma/adapter-mariadb": "^7.2.0",
32
+ "@prisma/client": "^7.2.0",
32
33
  "@types/busboy": "^0.3.2",
33
34
  "@types/http-errors": "^1.8.2",
34
35
  "@types/jsonwebtoken": "^8.5.8",
@@ -66,7 +67,8 @@
66
67
  "pino-pretty": "^10.0.1",
67
68
  "pinyin-pro": "^3.26.0",
68
69
  "pirates": "^4.0.6",
69
- "prisma": "^7.1.0",
70
+ "prisma": "^7.2.0",
71
+ "randomstring": "^1.3.1",
70
72
  "select-run": "^1.1.2",
71
73
  "supports-color": "^8",
72
74
  "svg-captcha": "^1.4.0",
@@ -83,9 +85,9 @@
83
85
  "devDependencies": {
84
86
  "@types/debug": "^4.1.7",
85
87
  "@types/fs-extra": "^9.0.13",
86
- "@types/ioredis": "^5.0.0",
87
88
  "@types/json-schema": "^7.0.11",
88
89
  "@types/lz-string": "^1.3.34",
90
+ "@types/randomstring": "^1.3.0",
89
91
  "axios": "^1.4.0",
90
92
  "ioredis-mock": "^8.7.0",
91
93
  "json-xml-parse": "^1.2.4",