2.0.12 • Published 10 months ago

@globexit/websoft-types v2.0.12

Weekly downloads
-
License
ISC
Repository
github
Last release
10 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

1 year ago

2.0.2

1 year ago

2.0.5

11 months ago

2.0.4

11 months ago

2.0.11

10 months ago

2.0.7

10 months ago

2.0.12

10 months ago

2.0.6

10 months ago

2.0.9

10 months ago

2.0.10

10 months ago

2.0.8

10 months ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago