Socket
Socket
Sign inDemoInstall

@salutejs/scenario

Package Overview
Dependencies
Maintainers
2
Versions
244
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@salutejs/scenario - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

dist/lib/i18n.d.ts

2

dist/index.d.ts

@@ -9,3 +9,5 @@ export * from './lib/createSystemScenario';

export * from './lib/createIntents';
export { createInvoice, findInvoiceById, findInvoiceByServiceIdOrderId, completeInvoice, reverseInvoice, refundInvoice, } from './lib/smartpay';
export * from './lib/types';
export * from '@salutejs/types';
//# sourceMappingURL=index.d.ts.map

@@ -13,2 +13,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.refundInvoice = exports.reverseInvoice = exports.completeInvoice = exports.findInvoiceByServiceIdOrderId = exports.findInvoiceById = exports.createInvoice = void 0;
__exportStar(require("./lib/createSystemScenario"), exports);

@@ -22,2 +23,10 @@ __exportStar(require("./lib/createUserScenario"), exports);

__exportStar(require("./lib/createIntents"), exports);
var smartpay_1 = require("./lib/smartpay");
Object.defineProperty(exports, "createInvoice", { enumerable: true, get: function () { return smartpay_1.createInvoice; } });
Object.defineProperty(exports, "findInvoiceById", { enumerable: true, get: function () { return smartpay_1.findInvoiceById; } });
Object.defineProperty(exports, "findInvoiceByServiceIdOrderId", { enumerable: true, get: function () { return smartpay_1.findInvoiceByServiceIdOrderId; } });
Object.defineProperty(exports, "completeInvoice", { enumerable: true, get: function () { return smartpay_1.completeInvoice; } });
Object.defineProperty(exports, "reverseInvoice", { enumerable: true, get: function () { return smartpay_1.reverseInvoice; } });
Object.defineProperty(exports, "refundInvoice", { enumerable: true, get: function () { return smartpay_1.refundInvoice; } });
__exportStar(require("./lib/types"), exports);
__exportStar(require("@salutejs/types"), exports);
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSaluteRequest = void 0;
var i18n_1 = require("./i18n");
var createSaluteRequest = function (request) {

@@ -8,2 +9,5 @@ var inference;

return {
get character() {
return request.payload.character.id;
},
get appInfo() {

@@ -44,4 +48,7 @@ return request.payload.app_info;

},
i18n: function (keyset) {
return i18n_1.i18n(request.payload.character.id)(keyset);
},
};
};
exports.createSaluteRequest = createSaluteRequest;

11

package.json
{
"name": "@salutejs/scenario",
"version": "0.2.0",
"version": "0.3.0",
"description": "Tiny helpers to make scenario for Salute family",

@@ -27,11 +27,14 @@ "author": "SberDevices Frontend Team <sberdevices.frontend@gmail.com>",

"build": "rm -rf dist && tsc",
"lint": "eslint --ext .js,.ts ./src"
"lint": "eslint --ext .js,.ts ./src",
"test": "../../node_modules/.bin/jest --config ../../jest.config.ts"
},
"devDependencies": {
"@types/node-fetch": "2.5.10",
"typescript": "4.1.3"
},
"dependencies": {
"@salutejs/types": "0.2.0"
"@salutejs/types": "0.3.0",
"node-fetch": "2.6.1"
},
"gitHead": "457946fb2d87ac9d86f2597eb64f7f0229975dc3"
"gitHead": "2553b4888e6c6c9aa67b74de7e2e6b6a6859c433"
}

@@ -103,2 +103,157 @@ # @salutejs/scenario

## SmartPay
Чтобы оплата работала, необходимо добавить переменную PAYMENT_TOKEN в environment.
### Инициация диалога оплаты
Для отображения диалога оплаты на экране смартаппа, необходимо:
1. Создать счет (вызвать `createInvoice`).
2. Отправить команду на открытие окна оплаты (вызвать хелпер `res.askPayment`).
```ts
import { createInvoice } from '@salutejs/payments';
import { SaluteHandler } from '@salutejs/types';
const handler: SaluteHandler = async ({ req, res }) => {
const { delivery_info, order } = req.variables;
const { invoice_id } = await createInvoice({ invoice: { delivery_info, order } });
res.askPayment(invoice_id);
};
```
### Завершение оплаты
Чтобы узнать о завершении диалога оплаты пользователем,
необходимо подписаться на системный сценарий `PAY_DIALOG_FINISHED`.
```ts
import { createSystemScenario, findInvoice, PayDialogFinishedServerAction, PayDialogStatuses, PaymentInvoiceStatuses } from '@salutejs/scenario';
createSystemScenario({
PAY_DIALOG_FINISHED: async ({ req, res }) => {
const { parameters } = req.serverAction as PayDialogFinishedServerAction;
if (parameters.payment_response.response_code === PayDialogStatuses.success) {
// диалог завершился успешно, необходимо проверить статус платежа
const { invoice_status } = await findInvoice({ invoiceId: parameters.payment_response.invoice_id });
if (invoice_status === PaymentInvoiceStatuses.confirmed) {
// оплачено и можно формировать заказ
}
}
}
});
```
## i18n
Интерфейс для адаптации текста с динамическими параметрами и плюрализацией в рамках персонажей семейства виртуальных ассистентов Салют.
### Создание словарей
Файлы с адаптацией лежат рядом с кодом, к которому они логически относятся.
```
src/handlers/mainPage
├── mainPage.i18n
│ ├── sber.ts — словарь для персонажа Сбер
│ ├── joy.ts — словарь для персонажа Джой
│ ├── athena.ts — словарь для персонажа Афина
│ └── index.ts — карта персонажей
```
Файл словаря — модуль, в котором лежит кейсет для одного языка с парами `{ ключ, перевод }`:
``` ts
// mainPage/mainPage.i18n/sber.ts
export const sber = {
Пока: 'Bye',
Привет: 'Example',
};
```
Все словари должны быть объявлены в карте персонажей. Картой оперирует модуль i18n.
```ts
// mainPage/mainPage.i18n/index.ts
export * from './sber';
export * from './joy';
export * from './athena';
```
### Использование
``` ts
// mainPage/mainPage.ts
import * as keyset from './mainPage.i18n';
// ...
handle: ({ req, res }) => {
const greeting = req.i18n(keyset);
res.setPronounceText(greeting('Привет'));
},
// ...
```
### Параметризация
Параметры объявляются в синтаксисе схожем с параметрами для [template strings](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/template_strings).
``` ts
// mainPage/mainPage.i18n/sber.ts
export const sber = {
'Добрый день, {name}!': 'Добрый день, {name}!',
}
```
``` ts
// mainPage/mainPage.i18n/joy.ts
export const joy = {
'Добрый день, {name}!': 'Привет, {name}!',
}
```
``` ts
// mainPage/mainPage.ts
import * as keyset from './mainPage.i18n';
// ...
handle: ({ req, res }) => {
const greeting = req.i18n(keyset);
res.setPronounceText(greeting('Добрый день, {name}!', {
name: 'Костя',
}));
},
// ...
```
### Плюрализация
Для выражения плюрализация существует специальный параметр `count`. Который соотносится с вариантами написания ключа через вложенные параметры: `many`, `some`, `one`, `none`.
``` ts
// mainPage/mainPage.i18n/sber.ts
export const sber = {
'{count} операций': {
many: '{count} операция',
none: 'нет операций',
one: '{count} операция',
some: '{count} операции',
}
}
```
```ts
// mainPage/mainPage.ts
import * as keyset from './mainPage.i18n';
// ...
handle: ({ req, res }) => {
const transactions = req.i18n(keyset);
res.setPronounceText(transactions('{count} операций', {
count: 2,
}));
},
// ...
```
#### SberDevices with :heart:

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc