2.0.12 • Published 7 months ago

@globexit/websoft-types v2.0.12

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

npm

Что это?

Этот пакет предоставляет TypeScript типы для SSJS платформы WebSoft (WebTutor), а также набор трансформеров для конфигурации транспилированного JavaScript.

Установка

Чтобы установить пакет, выполните следующую команду:

npm i @globexit/websoft-types -D

Подключение типов

Для добавления типов необходимо настроить typeRoots в вашем tsconfig.json:

"typeRoots": [
    "../node_modules/@globexit/websoft-types/lib/web-soft/types",
    "../node_modules/@globexit/websoft-types/lib/web-soft/types/xml"
]

Настройка Gulp

const {transformerConfigurator, importManager} = new SsjsProjectBuilder()
    .setTsConfigPath(TS_CONFIG_PATH)
    .build();

const transformTS = (path: string) => {
  return baseSrc(path)
          .pipe(change(importManager.addFuncImports))
          .pipe(change(importManager.replaceImports))
          .pipe(include({
            extensions: 'ts',
            hardFail: true,
            separateInputs: true,
            includePaths: [
              __dirname + "/node_modules"
            ]
          }))
          .pipe(createProject(consts.TS_CONFIG_PATH, {
            typescript: transformerConfigurator.ts,
            getCustomTransformers: () => ({
              before: transformerConfigurator.getTransformers()
            })
          })());
};

Описание трансформеров

Данный пакет предоставляет следующие трансформеры:

  • Преобразование for...of в for...in:
    TypeScript:
    for (const item of [1, 2, 3]) { }
    SSJS:
    for (item in [1, 2, 3]) { }

  • Удаление объявления переменных из циклов:
    TypeScript:
    let sum = 0;
    for (const item of [1, 2, 3]) {
        sum += item;
    
        const num = 1;
        sum += num;
    }
    SSJS:
    var sum = 0;
    for (item in [1, 2, 3]) {
        sum += item;
    
        num = 1;
        sum += num;
    }

  • Преобразование лямбд:
    TypeScript:
    let sum = (a: number, b: number) => a + b;
    SSJS:
    var sum = function _1(a, b) { return a + b; };

  • Рабочий импорт через комментарий:
    TypeScript:
    import { sum } from './sum'; //.
    
    let a = 2;
    let b = 3;
    
    let num = sum(a, b);
    SSJS:
    function sum(a, b) {
        return a + b;
    }
    
    var a = 2;
    var b = 3;
    var num = sum(a, b);

  • Поддержка методов JS для работы с массивами: В данный момент поддерживаются: map, filter, some, any, reduce, includes, find, pop:
    TypeScript:
    let array = [2, 4, 6, 3, 7, 4, 7];
    
    let res1 = array.map(i => i * 2);
    let res2 = array.filter(i => i > 3);
    let res3 = array.find(i => i === 4);
    SSJS:
    function find(array, predicate, thisArg) {
        if (array == null)
            throw new Error('"this" is null or undefined');
        var len = ArrayCount(array);
        for (k = 0; k < len; k++) {
            value = array[k];
            if (predicate(value, k, array, thisArg))
                return value;
        }
        return undefined;
    }
    
    function filter(array, predicate) {
        var result = [];
        for (i = 0; i < ArrayCount(array); i++) {
            if (predicate(array[i], i, array)) {
                result.push(array[i]);
            }
        }
        return result;
    }
    
    function map(array, callback) {
        var result = [];
        for (i = 0; i < ArrayCount(array); i++) {
            result.push(callback(array[i], i, array));
        }
        return result;
    }
    
    var array = [2, 4, 6, 3, 7, 4, 7];
    var res1 = map(array, function _1(i) { return i * 2; });
    var res2 = filter(array, function _2(i) { return i > 3; });
    var res3 = find(array, function _3(i) { return i === 4; });

Заключение

Пакет @globexit/websoft-types предоставляет необходимые инструменты для работы с SSJS через TS, а также значительно упрощает процесс разработки с использованием трансформеров для обработки кода.

2.0.3

12 months ago

2.0.2

12 months ago

2.0.5

8 months ago

2.0.4

8 months ago

2.0.11

7 months ago

2.0.7

7 months ago

2.0.12

7 months ago

2.0.6

7 months ago

2.0.9

7 months ago

2.0.10

7 months ago

2.0.8

7 months ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago