Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 4.0.0 #30

Open
wants to merge 56 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
638bf4b
[*] access to window object; WindowType fields
Dec 22, 2023
7453e31
[*] removed default appId argument
Dec 22, 2023
ac3bdf5
[*] version, changelog
Dec 22, 2023
cdd0000
[*] pr fixes
Dec 25, 2023
0919556
[-] initializeVkApp
Dec 25, 2023
185bee2
[*] Расширение возможных кейсов в проверке на отказ пользователя; [+]…
dewolixgit Jan 11, 2024
be3580d
[*] Коммент
dewolixgit Jan 11, 2024
b2cbd14
[*] Вынесение констант с типами ошибок ВК, расширение проверки на оши…
dewolixgit Jan 11, 2024
60a0feb
[-] Экспорт consts из либы
dewolixgit Jan 11, 2024
41dda82
[+] Тесты функций isVkError, checkVkUserDenied
dewolixgit Jan 11, 2024
c6a1aa0
[+] Тесты на функцию callVkApi
dewolixgit Jan 12, 2024
f081832
[*] Доработки утилит
dewolixgit Jan 15, 2024
a1bca3c
[+] Автотесты и утилиты для автотестов
dewolixgit Jan 15, 2024
8327a7f
[+] Тесты
dewolixgit Jan 15, 2024
0f87f47
[+] Тесты
dewolixgit Jan 16, 2024
10bff39
[*] Корректировки: автотесты и комменты; [+] todo-тест в shareVkPost
dewolixgit Jan 16, 2024
d4116bf
[*] Переименование
dewolixgit Jan 16, 2024
5a9ed4f
[*] Правки тестов getVkAccessToken
dewolixgit Jan 16, 2024
3ff9e1a
[*] Коммент
dewolixgit Jan 16, 2024
a084e17
[+] Правка автотестов getVkAccessToken
dewolixgit Jan 16, 2024
ff0d59a
[*] js doc
Jan 19, 2024
be37e98
[*] fix
Jan 19, 2024
916ac92
[*] Правки после ревью
dewolixgit Jan 23, 2024
0f25208
[+] changelog, команда для сбора списка тестов
dewolixgit Jan 26, 2024
f0c4b60
[+] Обновления package.json и readme.md
dewolixgit Jan 29, 2024
84f39bf
Merge pull request #18 from ktsstudio/SPECIAL-11631
dewolixgit Jan 30, 2024
58c5fe3
Merge pull request #19 from ktsstudio/SPECIAL-14044
dewolixgit Jan 30, 2024
bb01ee0
[*] Обновление mediaproject-utils
dewolixgit Jan 30, 2024
8c37855
Merge pull request #21 from ktsstudio/SPECIAL-14239
dewolixgit Jan 30, 2024
4bcb252
[-] Лишний тип
dewolixgit Jan 30, 2024
872be03
[*] Комменты, обновление readme и changelog
dewolixgit Jan 31, 2024
0e0935d
[*] Уточнение типизации, сокращение кода
dewolixgit Jan 31, 2024
5f6de94
Merge branch 'release-3.0.0' into SPECIAL-14045
dewolixgit Jan 31, 2024
26c98e4
[*] Обновление автотестов в callVkApi в соответствии с отказом от пар…
dewolixgit Jan 31, 2024
3a245cb
[+] Автотесты для shareVkPost
dewolixgit Feb 2, 2024
d63e906
[*] Обновление readme
dewolixgit Feb 2, 2024
5b9f0aa
[*] Правка названий автотестов
dewolixgit Feb 2, 2024
3b09800
[-] Удаление лишней проверки на передачу аргумента функции
dewolixgit Feb 5, 2024
c6b2475
[+] Обработка платформы мессенджера, поле is_messenger в window
dewolixgit Feb 5, 2024
3c819f6
[*] Поднятие версии
dewolixgit Feb 5, 2024
40d3fc2
[+] checkVkPlatform: обработка случая открытия приложения из мвк на д…
dewolixgit Feb 5, 2024
d843f7d
Merge branch 'release-3.0.0' into SPECIAL-14045
dewolixgit Feb 5, 2024
173c770
[*] Корректировка автотестов checkVkPlatform с учётом возвращаемого и…
dewolixgit Feb 5, 2024
2463b13
[*] is_mvk -> is_web
dewolixgit Feb 6, 2024
7a1187c
Merge branch 'release-3.1.0' into SPECIAL-14045
dewolixgit Feb 6, 2024
dbb0e55
Merge pull request #20 from ktsstudio/SPECIAL-14045
dewolixgit Feb 6, 2024
593136c
Merge 'release-3.1.0' into SPECIAL-14238
dewolixgit Feb 6, 2024
cbf49ef
[+] Отдельная обработка desktop_web_messenger
dewolixgit Feb 6, 2024
f1f0f98
[*] Обновление changelog
dewolixgit Feb 6, 2024
c1d9f4a
[*] Обновление версии в package.json
dewolixgit Feb 7, 2024
ed75995
Merge pull request #24 from ktsstudio/SPECIAL-14238
qpounodb Jun 13, 2024
45eb837
updates
qpounodb Jun 14, 2024
eaf1e6e
fix: vk api errors types usage
qpounodb Jun 14, 2024
0c4d850
refactor: add utils for handling vk errors
qpounodb Jun 14, 2024
ade9861
fix: vk statuses utils exports
qpounodb Jun 17, 2024
8110f68
doc: review updates
qpounodb Jun 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .eslintignore

This file was deleted.

88 changes: 0 additions & 88 deletions .eslintrc.js

This file was deleted.

6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ yarn-error.log
public/
dist/
.idea/
.vscode/
node_modules/
.DS_Store
index.js
index.d.ts
index.d.ts

# jest
coverage
5 changes: 3 additions & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"jsxBracketSameLine": false,
"bracketSameLine": false,
"bracketSpacing": true,
"singleQuote": true,
"tabWidth": 2
"tabWidth": 2,
"trailingComma": "es5"
}
10 changes: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
# v3.1.0
# v4.0.0

[*] переход от понятия isMvk к isWeb
[*] в перечни ВК-платформ добавлены платформы ВК Мессенджера
[*] исправлена проверка на пустую строку в функции `checkVkAvatarIsDefault`
[*] в десктоп-платформы добавлены платформы десктопного ВК Мессенджера в функции `checkVkPlatform`
[+] добавлены автотесты на функции `callVkApi`, `parseVkScopes`, `checkOneScopesSetIncludesAnother`, `getNewVkAccessToken`, `getVkAccessToken`, `checkVkPlatform`, `callVkApi`, `checkVkAvatarIsDefault`, `setVkViewSettings`, `shareVkStory`, `isVkError`, `checkVkUserDenied`, `shareVkPost`, `shareVkPostWithUpload`, хуки `usePolling`, `useEventSubscribe`
qpounodb marked this conversation as resolved.
Show resolved Hide resolved

## v3.1.0
- [+] добавлена утилита `getVkStatuses` для получения получение списка статусов, доступных приложению
- [+] добавлена утилита `getVkStatus` для получения текущего ID статуса пользователя
- [+] добавлена утилита `setVkStatus` для установки/снятия ID статуса пользователю
Expand Down
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,26 @@
- [checkVkPlatform](./src/checkVkPlatform.ts)
- [isVkError](./src/isVkError.ts)

## Покрытие тестами

Все утилиты покрыты автотестами. Исключениями являются утилиты [initializeVkApp](./src/initializeVkApp.ts)
(вскоре будет удалена в соответствии с обновлениями об [отказе от использования window для записи параметров приложения](https://github.com/ktsstudio/mediaproject-vk/pull/18))
и [shareVkPost](./src/shareVkPost.ts) (будет покрыта автотестами после внедрения [mediaproject-utils версии 5](https://github.com/ktsstudio/mediaproject-utils/pull/18)

Для запуска автотестов воспользуйтесь следующей командой:

`yarn test`

Для запуска тестов и сбора статистики по покрытию автотестами проекта, запустите команду:

`yarn test:cover`

Ниже представлена команда для запуска тестов и сбора списка названий всех выполненных тест-кейсов в файл по пути `./src/__test__/testsList.txt`.
Команда предназначена для удобства обзора всех тест-кейсов. Запускайте её, если меняете названия тест-кейсов,
их структуру или количество:

`yarn test:list`

## Обратная связь

Любой фидбэк вы можете отправить нам на почту [[email protected]](mailto:[email protected]) или в личные сообщения [нашего сообщества ВКонтакте](https://vk.com/kts.specials).
117 changes: 117 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
// @ts-check
import eslint from '@eslint/js';
import importPluginX from 'eslint-plugin-import-x';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
import reactPlugin from 'eslint-plugin-react';
import tsEslint from 'typescript-eslint';

export default tsEslint.config(
qpounodb marked this conversation as resolved.
Show resolved Hide resolved
eslint.configs.recommended,
...tsEslint.configs.recommended,
...tsEslint.configs.strict,
...tsEslint.configs.stylistic,
{
ignores: ['dist/**'],
plugins: {
react: reactPlugin,
'import-x': importPluginX,
},
languageOptions: {
ecmaVersion: 2018,
sourceType: 'module',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
},
settings: {
'import-x/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx'],
},
'import-x/resolver': {
typescript: true,
node: true,
},
},
rules: {
'prefer-destructuring': ['error', { object: true, array: false }],
'prefer-const': 'error',
'prefer-arrow-callback': 'error',
'@typescript-eslint/consistent-type-definitions': 'off', // отключает принудительное использование только `type` или `interface`
'@typescript-eslint/no-invalid-void-type': 'off', // отключает использование `void` только в сигнатуре возврата функции
'@typescript-eslint/no-explicit-any': ['warn', { ignoreRestArgs: true }],
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/camelcase': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/ban-ts-comment': 'warn',
'import-x/default': 'off',
'import-x/no-named-as-default': 'off',
'import-x/order': [
'error',
{
groups: [
'builtin',
'external',
'internal',
'parent',
'sibling',
'index',
],
'newlines-between': 'always',
alphabetize: {
order: 'asc',
orderImportKind: 'asc',
caseInsensitive: true,
},
},
],
'padding-line-between-statements': [
'error',

// After directives (like 'use-strict'), except between directives
{ blankLine: 'always', prev: 'directive', next: '*' },
{ blankLine: 'any', prev: 'directive', next: 'directive' },

// Before and after export
{ blankLine: 'always', prev: '*', next: 'export' },
{ blankLine: 'always', prev: 'export', next: '*' },

// Before and after every sequence of variable declarations
{ blankLine: 'always', prev: '*', next: ['const', 'let', 'var'] },
{ blankLine: 'always', prev: ['const', 'let', 'var'], next: '*' },
{
blankLine: 'any',
prev: ['const', 'let', 'var'],
next: ['const', 'let', 'var'],
},

// Before and after class declaration, if, while, switch, try
{
blankLine: 'always',
prev: '*',
next: ['class', 'if', 'while', 'switch', 'try'],
},
{
blankLine: 'always',
prev: ['class', 'if', 'while', 'switch', 'try'],
next: '*',
},

// Before return statements
{ blankLine: 'always', prev: '*', next: 'return' },
],
'react/jsx-uses-react': 'error',
'react/jsx-uses-vars': 'error',
'react/jsx-no-target-blank': 'off',
'react/prefer-stateless-function': 'error',
'react/display-name': 'off',
},
},
eslintPluginPrettierRecommended
);
11 changes: 11 additions & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { Config } from 'jest';

const config: Config = {
testEnvironment: 'jsdom',
testPathIgnorePatterns: ['/node_modules/', '/__tests__/utils/'],
transform: {
'^.+\\.(t|j)sx?$': '@swc/jest',
},
};

export default config;
48 changes: 33 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@kts-specials/mediaproject-vk",
"version": "3.1.0",
"version": "4.0.0",
"description": "Package with utils for VK Mini Apps",
"author": "KTS Studio <[email protected]> (https://kts.studio)",
"keywords": [
Expand Down Expand Up @@ -37,7 +37,10 @@
"dev": "rollup -c -w",
"lint": "eslint src --fix",
"codestyle": "prettier --write \"src/**/*.{ts,js}?(x)\"",
"tsc-check": "tsc --skipLibCheck --noEmit --project tsconfig.json",
"tsc-check": "tsc --skipLibCheck --noEmit --emitDeclarationOnly false --project tsconfig.json",
"test": "jest",
"test:list": "jest --verbose --no-color 2> ./src/__tests__/testsList.txt",
"test:cover": "jest --coverage --collectCoverageFrom='src/**/*.{ts,tsx}'",
"precommit": "lint-staged"
},
"lint-staged": {
Expand All @@ -49,35 +52,50 @@
"devDependencies": {
"@babel/core": "^7.20.12",
"@babel/preset-env": "^7.20.2",
"@eslint/js": "^9.4.0",
"@ktsstudio/mediaproject-utils": "^6.0.0",
"@rollup/plugin-babel": "^6.0.3",
"@rollup/plugin-commonjs": "^24.0.1",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-terser": "^0.4.0",
"@rollup/plugin-typescript": "^11.0.0",
"@swc/core": "^1.3.102",
"@swc/jest": "^0.2.29",
"@testing-library/jest-dom": "^6.2.0",
"@testing-library/react": "^14.1.2",
"@types/eslint__js": "^8.42.3",
"@types/jest": "^29.5.11",
"@types/jest-when": "^3.5.5",
"@types/node": "^16.4.0",
"@types/react": ">=17",
"@typescript-eslint/eslint-plugin": "^4.13.0",
"@typescript-eslint/parser": "^4.14.1",
"@vkontakte/vk-bridge": "^2.7.2",
"eslint": "^7.31.0",
"eslint-config-prettier": "^7.2.0",
"eslint-import-resolver-typescript": "^2.3.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-react": "^7.22.0",
"@typescript-eslint/eslint-plugin": "^7.13.0",
"@typescript-eslint/parser": "^7.13.0",
"@vkontakte/vk-bridge": "^2.14.2",
"axios": "^1.7.2",
"eslint": "^9.4.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import-x": "^0.5.1",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.34.2",
"husky": "^7.0.1",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-when": "^3.6.0",
"lint-staged": "^11.0.0",
"prettier": "^2.2.1",
"prettier": "^3.3.2",
"react": ">=17",
"rollup": "^3.10.1",
"react-dom": ">=17",
"rollup": "^3.29.4",
"rollup-plugin-peer-deps-external": "^2.2.4",
"typescript": "^4.1.3"
"ts-node": "^10.9.2",
"typescript": "^5.4.5",
"typescript-eslint": "^7.13.0"
},
"peerDependencies": {
"@ktsstudio/mediaproject-utils": "^6.0.0",
"@types/react": ">=17",
"@vkontakte/vk-bridge": "^2.7.2",
"react": ">=17"
}
}
}
1 change: 1 addition & 0 deletions rollup.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const IS_PRODUCTION = process.env.NODE_ENV === 'production';
const getPlugins = (declarationDir, minification = false) =>
[
typescript({
tsconfig: IS_PRODUCTION ? './tsconfig.build.json' : './tsconfig.json',
compilerOptions: {
rootDir: INPUT_DIR,
declaration: true,
Expand Down
Loading