@magmamath/students-features 0.5.0-rc.7 → 0.5.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.
@@ -9,19 +9,6 @@ var _index = require("../../../lib/effector/index.js");
9
9
  var _helpers = require("../helpers.js");
10
10
  class ChatbotAPI {
11
11
  constructor(api) {
12
- // this.spotErrorFx = createControllerEffect(
13
- // (props: SpotErrorPayload): Promise<SpotErrorResponse> => {
14
- // return new Promise<SpotErrorResponse>((res) => {
15
- // if (props.strokes.length <= 3) return res({ strokesIds: [] })
16
- // setTimeout(() => {
17
- // const randomStrokes = getRandomElements(props.strokes, 4)
18
- // res({
19
- // strokesIds: randomStrokes.map((stroke) => stroke.id ?? ''),
20
- // })
21
- // }, 1000)
22
- // })
23
- // },
24
- // )
25
12
  this.spotErrorFx = (0, _index.createControllerEffect)(api.spotError);
26
13
  this.postMessageFx = (0, _index.createControllerEffect)(api.postMessage);
27
14
  this.getAlternativesFx = (0, _effector.createEffect)(api.getAlternatives);
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_index","_helpers","ChatbotAPI","constructor","api","spotErrorFx","createControllerEffect","spotError","postMessageFx","postMessage","getAlternativesFx","createEffect","getAlternatives","translateTextFx","payload","response","postTranslateText","text","replaceKatexSyntax","data","translations","map","translation","translatedText","textToSpeechTextFx","postTextToSpeech","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ChatbotApi.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,QAAA,GAAAF,OAAA;AAEO,MAAMG,UAAU,CAAC;EAQtBC,WAAWA,CAACC,GAAuB,EAAE;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,CAACC,WAAW,GAAG,IAAAC,6BAAsB,EAACF,GAAG,CAACG,SAAS,CAAC;IACxD,IAAI,CAACC,aAAa,GAAG,IAAAF,6BAAsB,EAACF,GAAG,CAACK,WAAW,CAAC;IAC5D,IAAI,CAACC,iBAAiB,GAAG,IAAAC,sBAAY,EAACP,GAAG,CAACQ,eAAe,CAAC;IAC1D,IAAI,CAACC,eAAe,GAAG,IAAAF,sBAAY,EACjC,MAAOG,OAA+B,IAAuC;MAC3E,MAAMC,QAAQ,GAAG,MAAMX,GAAG,CAACY,iBAAiB,CAAC;QAC3C,GAAGF,OAAO;QACVG,IAAI,EAAE,IAAAC,2BAAkB,EAACJ,OAAO,CAACG,IAAI;MACvC,CAAC,CAAC;MAEF,OAAO;QACL,GAAGF,QAAQ;QACXI,IAAI,EAAE;UACJ,GAAGJ,QAAQ,CAACI,IAAI;UAChBC,YAAY,EAAEL,QAAQ,CAACI,IAAI,CAACC,YAAY,CAACC,GAAG,CAAEC,WAAW,KAAM;YAC7D,GAAGA,WAAW;YACdC,cAAc,EAAE,IAAAL,2BAAkB,EAAC,CAACI,WAAW,CAACC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;UAC1E,CAAC,CAAC;QACJ;MACF,CAAC;IACH,CACF,CAAC;IACD,IAAI,CAACC,kBAAkB,GAAG,IAAAb,sBAAY,EAACP,GAAG,CAACqB,gBAAgB,CAAC;EAC9D;AACF;AAACC,OAAA,CAAAxB,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_index","_helpers","ChatbotAPI","constructor","api","spotErrorFx","createControllerEffect","spotError","postMessageFx","postMessage","getAlternativesFx","createEffect","getAlternatives","translateTextFx","payload","response","postTranslateText","text","replaceKatexSyntax","data","translations","map","translation","translatedText","textToSpeechTextFx","postTextToSpeech","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ChatbotApi.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,QAAA,GAAAF,OAAA;AAEO,MAAMG,UAAU,CAAC;EAQtBC,WAAWA,CAACC,GAAuB,EAAE;IACnC,IAAI,CAACC,WAAW,GAAG,IAAAC,6BAAsB,EAACF,GAAG,CAACG,SAAS,CAAC;IACxD,IAAI,CAACC,aAAa,GAAG,IAAAF,6BAAsB,EAACF,GAAG,CAACK,WAAW,CAAC;IAC5D,IAAI,CAACC,iBAAiB,GAAG,IAAAC,sBAAY,EAACP,GAAG,CAACQ,eAAe,CAAC;IAC1D,IAAI,CAACC,eAAe,GAAG,IAAAF,sBAAY,EACjC,MAAOG,OAA+B,IAAuC;MAC3E,MAAMC,QAAQ,GAAG,MAAMX,GAAG,CAACY,iBAAiB,CAAC;QAC3C,GAAGF,OAAO;QACVG,IAAI,EAAE,IAAAC,2BAAkB,EAACJ,OAAO,CAACG,IAAI;MACvC,CAAC,CAAC;MAEF,OAAO;QACL,GAAGF,QAAQ;QACXI,IAAI,EAAE;UACJ,GAAGJ,QAAQ,CAACI,IAAI;UAChBC,YAAY,EAAEL,QAAQ,CAACI,IAAI,CAACC,YAAY,CAACC,GAAG,CAAEC,WAAW,KAAM;YAC7D,GAAGA,WAAW;YACdC,cAAc,EAAE,IAAAL,2BAAkB,EAAC,CAACI,WAAW,CAACC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;UAC1E,CAAC,CAAC;QACJ;MACF,CAAC;IACH,CACF,CAAC;IACD,IAAI,CAACC,kBAAkB,GAAG,IAAAb,sBAAY,EAACP,GAAG,CAACqB,gBAAgB,CAAC;EAC9D;AACF;AAACC,OAAA,CAAAxB,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -5,19 +5,6 @@ import { createControllerEffect } from "../../../lib/effector/index.js";
5
5
  import { replaceKatexSyntax } from "../helpers.js";
6
6
  export class ChatbotAPI {
7
7
  constructor(api) {
8
- // this.spotErrorFx = createControllerEffect(
9
- // (props: SpotErrorPayload): Promise<SpotErrorResponse> => {
10
- // return new Promise<SpotErrorResponse>((res) => {
11
- // if (props.strokes.length <= 3) return res({ strokesIds: [] })
12
- // setTimeout(() => {
13
- // const randomStrokes = getRandomElements(props.strokes, 4)
14
- // res({
15
- // strokesIds: randomStrokes.map((stroke) => stroke.id ?? ''),
16
- // })
17
- // }, 1000)
18
- // })
19
- // },
20
- // )
21
8
  this.spotErrorFx = createControllerEffect(api.spotError);
22
9
  this.postMessageFx = createControllerEffect(api.postMessage);
23
10
  this.getAlternativesFx = createEffect(api.getAlternatives);
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createControllerEffect","replaceKatexSyntax","ChatbotAPI","constructor","api","spotErrorFx","spotError","postMessageFx","postMessage","getAlternativesFx","getAlternatives","translateTextFx","payload","response","postTranslateText","text","data","translations","map","translation","translatedText","textToSpeechTextFx","postTextToSpeech"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ChatbotApi.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,UAAU;AACvC,SAASC,sBAAsB,QAAQ,gCAAuB;AAG9D,SAASC,kBAAkB,QAAQ,eAAY;AAE/C,OAAO,MAAMC,UAAU,CAAC;EAQtBC,WAAWA,CAACC,GAAuB,EAAE;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,CAACC,WAAW,GAAGL,sBAAsB,CAACI,GAAG,CAACE,SAAS,CAAC;IACxD,IAAI,CAACC,aAAa,GAAGP,sBAAsB,CAACI,GAAG,CAACI,WAAW,CAAC;IAC5D,IAAI,CAACC,iBAAiB,GAAGV,YAAY,CAACK,GAAG,CAACM,eAAe,CAAC;IAC1D,IAAI,CAACC,eAAe,GAAGZ,YAAY,CACjC,MAAOa,OAA+B,IAAuC;MAC3E,MAAMC,QAAQ,GAAG,MAAMT,GAAG,CAACU,iBAAiB,CAAC;QAC3C,GAAGF,OAAO;QACVG,IAAI,EAAEd,kBAAkB,CAACW,OAAO,CAACG,IAAI;MACvC,CAAC,CAAC;MAEF,OAAO;QACL,GAAGF,QAAQ;QACXG,IAAI,EAAE;UACJ,GAAGH,QAAQ,CAACG,IAAI;UAChBC,YAAY,EAAEJ,QAAQ,CAACG,IAAI,CAACC,YAAY,CAACC,GAAG,CAAEC,WAAW,KAAM;YAC7D,GAAGA,WAAW;YACdC,cAAc,EAAEnB,kBAAkB,CAAC,CAACkB,WAAW,CAACC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;UAC1E,CAAC,CAAC;QACJ;MACF,CAAC;IACH,CACF,CAAC;IACD,IAAI,CAACC,kBAAkB,GAAGtB,YAAY,CAACK,GAAG,CAACkB,gBAAgB,CAAC;EAC9D;AACF","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createControllerEffect","replaceKatexSyntax","ChatbotAPI","constructor","api","spotErrorFx","spotError","postMessageFx","postMessage","getAlternativesFx","getAlternatives","translateTextFx","payload","response","postTranslateText","text","data","translations","map","translation","translatedText","textToSpeechTextFx","postTextToSpeech"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ChatbotApi.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,UAAU;AACvC,SAASC,sBAAsB,QAAQ,gCAAuB;AAG9D,SAASC,kBAAkB,QAAQ,eAAY;AAE/C,OAAO,MAAMC,UAAU,CAAC;EAQtBC,WAAWA,CAACC,GAAuB,EAAE;IACnC,IAAI,CAACC,WAAW,GAAGL,sBAAsB,CAACI,GAAG,CAACE,SAAS,CAAC;IACxD,IAAI,CAACC,aAAa,GAAGP,sBAAsB,CAACI,GAAG,CAACI,WAAW,CAAC;IAC5D,IAAI,CAACC,iBAAiB,GAAGV,YAAY,CAACK,GAAG,CAACM,eAAe,CAAC;IAC1D,IAAI,CAACC,eAAe,GAAGZ,YAAY,CACjC,MAAOa,OAA+B,IAAuC;MAC3E,MAAMC,QAAQ,GAAG,MAAMT,GAAG,CAACU,iBAAiB,CAAC;QAC3C,GAAGF,OAAO;QACVG,IAAI,EAAEd,kBAAkB,CAACW,OAAO,CAACG,IAAI;MACvC,CAAC,CAAC;MAEF,OAAO;QACL,GAAGF,QAAQ;QACXG,IAAI,EAAE;UACJ,GAAGH,QAAQ,CAACG,IAAI;UAChBC,YAAY,EAAEJ,QAAQ,CAACG,IAAI,CAACC,YAAY,CAACC,GAAG,CAAEC,WAAW,KAAM;YAC7D,GAAGA,WAAW;YACdC,cAAc,EAAEnB,kBAAkB,CAAC,CAACkB,WAAW,CAACC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;UAC1E,CAAC,CAAC;QACJ;MACF,CAAC;IACH,CACF,CAAC;IACD,IAAI,CAACC,kBAAkB,GAAGtB,YAAY,CAACK,GAAG,CAACkB,gBAAgB,CAAC;EAC9D;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatbotApi.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/ChatbotApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAGpF,qBAAa,UAAU;IACrB,SAAgB,aAAa,6KAAA;IAC7B,SAAgB,iBAAiB,8IAAA;IACjC,SAAgB,eAAe,oFAAA;IAC/B,SAAgB,kBAAkB,kJAAA;IAElC,SAAgB,WAAW,iLAAA;gBAEf,GAAG,EAAE,kBAAkB;CAsCpC"}
1
+ {"version":3,"file":"ChatbotApi.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/ChatbotApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAGpF,qBAAa,UAAU;IACrB,SAAgB,aAAa,6KAAA;IAC7B,SAAgB,iBAAiB,8IAAA;IACjC,SAAgB,eAAe,oFAAA;IAC/B,SAAgB,kBAAkB,kJAAA;IAElC,SAAgB,WAAW,iLAAA;gBAEf,GAAG,EAAE,kBAAkB;CAyBpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatbotApi.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/ChatbotApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAGpF,qBAAa,UAAU;IACrB,SAAgB,aAAa,6KAAA;IAC7B,SAAgB,iBAAiB,8IAAA;IACjC,SAAgB,eAAe,oFAAA;IAC/B,SAAgB,kBAAkB,kJAAA;IAElC,SAAgB,WAAW,iLAAA;gBAEf,GAAG,EAAE,kBAAkB;CAsCpC"}
1
+ {"version":3,"file":"ChatbotApi.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/ChatbotApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAGpF,qBAAa,UAAU;IACrB,SAAgB,aAAa,6KAAA;IAC7B,SAAgB,iBAAiB,8IAAA;IACjC,SAAgB,eAAe,oFAAA;IAC/B,SAAgB,kBAAkB,kJAAA;IAElC,SAAgB,WAAW,iLAAA;gBAEf,GAAG,EAAE,kBAAkB;CAyBpC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "0.5.0-rc.7",
3
+ "version": "0.5.0",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -13,19 +13,6 @@ export class ChatbotAPI {
13
13
  public readonly spotErrorFx
14
14
 
15
15
  constructor(api: ChatbotApiRequests) {
16
- // this.spotErrorFx = createControllerEffect(
17
- // (props: SpotErrorPayload): Promise<SpotErrorResponse> => {
18
- // return new Promise<SpotErrorResponse>((res) => {
19
- // if (props.strokes.length <= 3) return res({ strokesIds: [] })
20
- // setTimeout(() => {
21
- // const randomStrokes = getRandomElements(props.strokes, 4)
22
- // res({
23
- // strokesIds: randomStrokes.map((stroke) => stroke.id ?? ''),
24
- // })
25
- // }, 1000)
26
- // })
27
- // },
28
- // )
29
16
  this.spotErrorFx = createControllerEffect(api.spotError)
30
17
  this.postMessageFx = createControllerEffect(api.postMessage)
31
18
  this.getAlternativesFx = createEffect(api.getAlternatives)
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getRandomElements = getRandomElements;
7
- function getRandomElements(array, limit = array.length) {
8
- if (array.length === 0) {
9
- return [];
10
- }
11
- const randomCount = Math.min(Math.floor(Math.random() * array.length) + 1, limit);
12
- const arrayCopy = [...array];
13
- const result = [];
14
- for (let i = 0; i < randomCount; i++) {
15
- if (arrayCopy.length === 0) {
16
- break;
17
- }
18
- const randomIndex = Math.floor(Math.random() * arrayCopy.length);
19
- result.push(arrayCopy[randomIndex]);
20
- arrayCopy.splice(randomIndex, 1);
21
- }
22
- return result;
23
- }
24
- //# sourceMappingURL=randomElements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getRandomElements","array","limit","length","randomCount","Math","min","floor","random","arrayCopy","result","i","randomIndex","push","splice"],"sourceRoot":"../../../../src","sources":["lib/helpers/randomElements.ts"],"mappings":";;;;;;AAAO,SAASA,iBAAiBA,CAAIC,KAAU,EAAEC,KAAK,GAAGD,KAAK,CAACE,MAAM,EAAO;EAC1E,IAAIF,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,KAAK,CAACF,IAAI,CAACG,MAAM,CAAC,CAAC,GAAGP,KAAK,CAACE,MAAM,CAAC,GAAG,CAAC,EAAED,KAAK,CAAC;EAEjF,MAAMO,SAAS,GAAG,CAAC,GAAGR,KAAK,CAAC;EAC5B,MAAMS,MAAW,GAAG,EAAE;EAEtB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,WAAW,EAAEO,CAAC,EAAE,EAAE;IACpC,IAAIF,SAAS,CAACN,MAAM,KAAK,CAAC,EAAE;MAC1B;IACF;IAEA,MAAMS,WAAW,GAAGP,IAAI,CAACE,KAAK,CAACF,IAAI,CAACG,MAAM,CAAC,CAAC,GAAGC,SAAS,CAACN,MAAM,CAAC;IAChEO,MAAM,CAACG,IAAI,CAACJ,SAAS,CAACG,WAAW,CAAC,CAAC;IACnCH,SAAS,CAACK,MAAM,CAACF,WAAW,EAAE,CAAC,CAAC;EAClC;EAEA,OAAOF,MAAM;AACf","ignoreList":[]}
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- export function getRandomElements(array, limit = array.length) {
4
- if (array.length === 0) {
5
- return [];
6
- }
7
- const randomCount = Math.min(Math.floor(Math.random() * array.length) + 1, limit);
8
- const arrayCopy = [...array];
9
- const result = [];
10
- for (let i = 0; i < randomCount; i++) {
11
- if (arrayCopy.length === 0) {
12
- break;
13
- }
14
- const randomIndex = Math.floor(Math.random() * arrayCopy.length);
15
- result.push(arrayCopy[randomIndex]);
16
- arrayCopy.splice(randomIndex, 1);
17
- }
18
- return result;
19
- }
20
- //# sourceMappingURL=randomElements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getRandomElements","array","limit","length","randomCount","Math","min","floor","random","arrayCopy","result","i","randomIndex","push","splice"],"sourceRoot":"../../../../src","sources":["lib/helpers/randomElements.ts"],"mappings":";;AAAA,OAAO,SAASA,iBAAiBA,CAAIC,KAAU,EAAEC,KAAK,GAAGD,KAAK,CAACE,MAAM,EAAO;EAC1E,IAAIF,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,KAAK,CAACF,IAAI,CAACG,MAAM,CAAC,CAAC,GAAGP,KAAK,CAACE,MAAM,CAAC,GAAG,CAAC,EAAED,KAAK,CAAC;EAEjF,MAAMO,SAAS,GAAG,CAAC,GAAGR,KAAK,CAAC;EAC5B,MAAMS,MAAW,GAAG,EAAE;EAEtB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,WAAW,EAAEO,CAAC,EAAE,EAAE;IACpC,IAAIF,SAAS,CAACN,MAAM,KAAK,CAAC,EAAE;MAC1B;IACF;IAEA,MAAMS,WAAW,GAAGP,IAAI,CAACE,KAAK,CAACF,IAAI,CAACG,MAAM,CAAC,CAAC,GAAGC,SAAS,CAACN,MAAM,CAAC;IAChEO,MAAM,CAACG,IAAI,CAACJ,SAAS,CAACG,WAAW,CAAC,CAAC;IACnCH,SAAS,CAACK,MAAM,CAACF,WAAW,EAAE,CAAC,CAAC;EAClC;EAEA,OAAOF,MAAM;AACf","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- export declare function getRandomElements<T>(array: T[], limit?: number): T[];
2
- //# sourceMappingURL=randomElements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"randomElements.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/randomElements.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,SAAe,GAAG,CAAC,EAAE,CAqB1E"}
@@ -1,2 +0,0 @@
1
- export declare function getRandomElements<T>(array: T[], limit?: number): T[];
2
- //# sourceMappingURL=randomElements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"randomElements.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/randomElements.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,SAAe,GAAG,CAAC,EAAE,CAqB1E"}
@@ -1,22 +0,0 @@
1
- export function getRandomElements<T>(array: T[], limit = array.length): T[] {
2
- if (array.length === 0) {
3
- return []
4
- }
5
-
6
- const randomCount = Math.min(Math.floor(Math.random() * array.length) + 1, limit)
7
-
8
- const arrayCopy = [...array]
9
- const result: T[] = []
10
-
11
- for (let i = 0; i < randomCount; i++) {
12
- if (arrayCopy.length === 0) {
13
- break
14
- }
15
-
16
- const randomIndex = Math.floor(Math.random() * arrayCopy.length)
17
- result.push(arrayCopy[randomIndex])
18
- arrayCopy.splice(randomIndex, 1)
19
- }
20
-
21
- return result
22
- }