@andrey4emk/npm-app-front-b24 0.3.0 → 0.4.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.
package/package.json CHANGED
@@ -1,27 +1,43 @@
1
1
  {
2
2
  "name": "@andrey4emk/npm-app-front-b24",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Vue 3 компоненты для Bitrix24: Subscriptions, ConfigLogs",
5
- "types": "./index.d.ts",
6
5
  "files": [
7
6
  "Subscriptions.vue",
8
7
  "ConfigLogs.vue",
9
- "index.d.ts",
8
+ "types",
10
9
  "README.md",
11
10
  "LICENSE"
12
11
  ],
13
12
  "exports": {
14
- ".": {
15
- "types": "./index.d.ts"
13
+ "./Subscriptions.vue": {
14
+ "types": "./types/Subscriptions.vue.d.ts",
15
+ "default": "./Subscriptions.vue"
16
16
  },
17
- "./Subscriptions.vue": "./Subscriptions.vue",
18
- "./ConfigLogs.vue": "./ConfigLogs.vue"
17
+ "./ConfigLogs.vue": {
18
+ "types": "./types/ConfigLogs.vue.d.ts",
19
+ "default": "./ConfigLogs.vue"
20
+ },
21
+ "./package.json": "./package.json"
19
22
  },
20
23
  "scripts": {
21
- "lint": "echo \"no lint\""
24
+ "lint": "echo \"no lint\"",
25
+ "test": "vitest run",
26
+ "build:types": "rm -rf types && vue-tsc --declaration --emitDeclarationOnly -p tsconfig.json",
27
+ "prepublishOnly": "npm run build:types"
22
28
  },
23
29
  "peerDependencies": {
24
- "vue": "^3.0.0"
30
+ "vue": "^3.5.2"
31
+ },
32
+ "devDependencies": {
33
+ "@vitejs/plugin-vue": "6.0.8",
34
+ "@vue/test-utils": "2.5.0",
35
+ "jsdom": "29.1.1",
36
+ "typescript": "5.9.3",
37
+ "vite": "8.2.2",
38
+ "vitest": "5.0.0",
39
+ "vue": "3.5.42",
40
+ "vue-tsc": "3.3.11"
25
41
  },
26
42
  "keywords": [
27
43
  "vue",
@@ -0,0 +1,33 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ apiBase: {
5
+ type: StringConstructor;
6
+ default: string;
7
+ };
8
+ secretKey: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ configName: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
17
+ apiBase: {
18
+ type: StringConstructor;
19
+ default: string;
20
+ };
21
+ secretKey: {
22
+ type: StringConstructor;
23
+ default: string;
24
+ };
25
+ configName: {
26
+ type: StringConstructor;
27
+ default: string;
28
+ };
29
+ }>> & Readonly<{}>, {
30
+ apiBase: string;
31
+ secretKey: string;
32
+ configName: string;
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,167 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ b24: {
5
+ type: import("vue").PropType<object | null>;
6
+ required: false;
7
+ };
8
+ authConnector: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ portalDomain: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ timeZone: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ }>, {}, {
21
+ tabs: {
22
+ tab1: boolean;
23
+ tab2: boolean;
24
+ };
25
+ events: any[];
26
+ subscribedEvents: any[];
27
+ entities: {
28
+ list: any[];
29
+ total: number;
30
+ };
31
+ autoRefresh: boolean;
32
+ loading: boolean;
33
+ busy: boolean;
34
+ error: string;
35
+ message: string;
36
+ refreshTimerId: any;
37
+ isUnmounted: boolean;
38
+ loadFailed: boolean;
39
+ confirmAction: string;
40
+ confirmTimerId: any;
41
+ }, {
42
+ b24Client(): any;
43
+ portalOrigin(): string;
44
+ confirmAllLabel(): "Точно удалить?" | "Удалить все";
45
+ confirmEmptyLabel(): "Точно удалить?" | "Удалить все пустые";
46
+ dateFormatter(): any;
47
+ }, {
48
+ selectTab(name: any): void;
49
+ formatDate(timestamp: any): string;
50
+ pause(ms: any): Promise<any>;
51
+ clearFeedback(): void;
52
+ showError(text: any): void;
53
+ showMessage(text: any): void;
54
+ /**
55
+ * Клиент Bitrix24 или null. При отсутствии клиента сам показывает ошибку —
56
+ * вызывающему остаётся только выйти
57
+ */
58
+ ensureClient(): any;
59
+ errorText(err: any): string;
60
+ resultErrors(result: any): any;
61
+ resultErrorsByKey(result: any): {};
62
+ requestConfirm(action: any): boolean;
63
+ resetConfirm(): void;
64
+ /**
65
+ * Определяет ENTITY_TYPE_ID смарт-процесса: сначала из FIELDS, затем из имени события.
66
+ * Общий разбор для ссылки и для обновления — иначе событие без ENTITY_TYPE_ID в FIELDS
67
+ * уходит в ветку сделки. Возвращает "" когда тип определить не удалось.
68
+ */
69
+ resolveEntityTypeId(entity: any): string;
70
+ entityLink(entity: any): string;
71
+ eventsList(): Promise<void>;
72
+ subscribeToEvents(event: any): Promise<void>;
73
+ getSubscribedEvents(): Promise<void>;
74
+ unbindSubscribedEvents(event: any): Promise<void>;
75
+ loadOfflineEntitiesList(): Promise<void>;
76
+ /**
77
+ * Снимает одну запись из оффлайн-очереди. Возвращает признак успеха.
78
+ */
79
+ deleteOfflineEntities(entity: any): Promise<boolean>;
80
+ /**
81
+ * Читает страницу очереди. Возвращает { rows, error }: непустой error означает,
82
+ * что проход надо оборвать
83
+ */
84
+ readOfflineQueuePage(b24: any): Promise<{
85
+ rows: any[];
86
+ error: any;
87
+ } | {
88
+ rows: any;
89
+ error: string;
90
+ }>;
91
+ /**
92
+ * Уникальные PROCESS_ID страницы и те из них, что ещё не сняты.
93
+ * Чистая функция от аргументов, поэтому её удобно звать и из отчёта
94
+ */
95
+ collectProcessIds(rows: any, clearedProcessIds: any): {
96
+ processIds: any[];
97
+ freshProcessIds: any[];
98
+ };
99
+ /**
100
+ * Команды batch для одной пачки PROCESS_ID
101
+ */
102
+ buildClearCommands(chunk: any): {};
103
+ /**
104
+ * Отправляет один batch и пополняет множество снятых пачек.
105
+ * Возвращает текст неудачи или "" — пачка снята целиком
106
+ */
107
+ sendClearChunk(b24: any, chunk: any, clearedProcessIds: any): Promise<string>;
108
+ /**
109
+ * Итоговый отчёт прохода. Возвращает { kind: "error" | "message", text }
110
+ */
111
+ buildClearReport({ failures, reachedLimit, stoppedOnRepeat, stoppedOnEmpty, clearedCount }: {
112
+ failures: any;
113
+ reachedLimit: any;
114
+ stoppedOnRepeat: any;
115
+ stoppedOnEmpty: any;
116
+ clearedCount: any;
117
+ }): {
118
+ kind: string;
119
+ text: string;
120
+ };
121
+ deleteOfflineEntitiesAll(): Promise<void>;
122
+ deleteOfflineEntitiesAllEmpty(): Promise<void>;
123
+ isSubscribed(event: any): boolean;
124
+ startAutoRefresh(): void;
125
+ stopAutoRefresh(): void;
126
+ autoRefreshEntities(): void;
127
+ handleVisibilityChange(): Promise<void>;
128
+ /**
129
+ * Перезаписывает смарт-процесс его же заголовком.
130
+ * true — обновлено, false — отказ (текст ошибки уже показан)
131
+ */
132
+ updateSmartProcessEntity(b24: any, entityTypeId: any, entityId: any): Promise<boolean>;
133
+ /**
134
+ * Перезаписывает сделку её же заголовком.
135
+ * true — обновлено, false — отказ (текст ошибки уже показан)
136
+ */
137
+ updateDealEntity(b24: any, entityId: any): Promise<boolean>;
138
+ /**
139
+ * Снимает обновлённую сущность из очереди и печатает итог операции целиком
140
+ */
141
+ finishEntityUpdate(eventEntity: any, entityId: any, failed: any): Promise<void>;
142
+ /**
143
+ * Перезаписывает сущность теми же данными и снимает её из оффлайн-очереди.
144
+ */
145
+ entityUpdate(eventEntity: any): Promise<void>;
146
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
147
+ b24: {
148
+ type: import("vue").PropType<object | null>;
149
+ required: false;
150
+ };
151
+ authConnector: {
152
+ type: StringConstructor;
153
+ default: string;
154
+ };
155
+ portalDomain: {
156
+ type: StringConstructor;
157
+ default: string;
158
+ };
159
+ timeZone: {
160
+ type: StringConstructor;
161
+ default: string;
162
+ };
163
+ }>> & Readonly<{}>, {
164
+ authConnector: string;
165
+ portalDomain: string;
166
+ timeZone: string;
167
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
package/index.d.ts DELETED
@@ -1,39 +0,0 @@
1
- // Типы для потребителей: объявляют props компонентов, которые пакет отдаёт
2
- // исходными .vue файлами. Подключение на стороне потребителя — либо
3
- // /// <reference types="@andrey4emk/npm-app-front-b24" /> в его env.d.ts,
4
- // либо "@andrey4emk/npm-app-front-b24" в compilerOptions.types
5
- //
6
- // ВНИМАНИЕ: карта exports не пускает vue-tsc к виртуальному объявлению,
7
- // поэтому типы берутся только отсюда. При любом изменении props в компонентах
8
- // этот файл надо править синхронно. Иначе потребитель получит типы,
9
- // расходящиеся с реальностью, и компилятор об этом не предупредит
10
-
11
- declare module "@andrey4emk/npm-app-front-b24/ConfigLogs.vue" {
12
- import type { DefineComponent } from "vue";
13
-
14
- const ConfigLogs: DefineComponent<{
15
- /** Базовый URL сервера, без хвостового слэша */
16
- apiBase?: string;
17
- /** Ключ авторизации, уходит в заголовке secret */
18
- secretKey?: string;
19
- /** Имя конфига без расширения .json */
20
- configName?: string;
21
- }>;
22
-
23
- export default ConfigLogs;
24
- }
25
-
26
- declare module "@andrey4emk/npm-app-front-b24/Subscriptions.vue" {
27
- import type { DefineComponent } from "vue";
28
-
29
- const Subscriptions: DefineComponent<{
30
- /** Клиент Bitrix24 REST API, fallback — inject и window.$b24 */
31
- b24?: object | null;
32
- /** Идентификатор коннектора авторизации */
33
- authConnector?: string;
34
- /** Домен портала для ссылок на сущности */
35
- portalDomain?: string;
36
- }>;
37
-
38
- export default Subscriptions;
39
- }