@weavix/cli 0.1.0-dev

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.
Files changed (47) hide show
  1. package/README.md +94 -0
  2. package/build/index.js +2568 -0
  3. package/build/templates/.arcignore +35 -0
  4. package/build/templates/_shared/.arcignore +20 -0
  5. package/build/templates/_shared/.prettierrc.js +6 -0
  6. package/build/templates/_shared/.stylelintrc +3 -0
  7. package/build/templates/_shared/eslint.config.js +12 -0
  8. package/build/templates/_shared/manifest.schema.json +438 -0
  9. package/build/templates/_shared/marketplace/README.md +12 -0
  10. package/build/templates/_shared/npmrc.template +2 -0
  11. package/build/templates/_shared/package.json +69 -0
  12. package/build/templates/_shared/public/README.md +12 -0
  13. package/build/templates/_shared/public/fonts/ys-text-display-wide-110.woff +0 -0
  14. package/build/templates/_shared/public/fonts/ys-text-display-wide-110.woff2 +0 -0
  15. package/build/templates/_shared/src/main.tsx +21 -0
  16. package/build/templates/_shared/src/reset.css +55 -0
  17. package/build/templates/_shared/src/styles-360.scss +81 -0
  18. package/build/templates/_shared/src/styles-gravity.scss +249 -0
  19. package/build/templates/_shared/src/vite-env.d.ts +2 -0
  20. package/build/templates/_shared/tsconfig.json +16 -0
  21. package/build/templates/_shared/vite.config.ts +66 -0
  22. package/build/templates/attachment.viewer.action/index.html +14 -0
  23. package/build/templates/attachment.viewer.action/src/App.tsx +59 -0
  24. package/build/templates/default/index.html +14 -0
  25. package/build/templates/default/src/App.tsx +10 -0
  26. package/build/templates/goal.action/index.html +14 -0
  27. package/build/templates/goal.action/src/App.tsx +39 -0
  28. package/build/templates/issue.action/index.html +14 -0
  29. package/build/templates/issue.action/src/App.tsx +36 -0
  30. package/build/templates/issue.block/index.html +14 -0
  31. package/build/templates/issue.block/src/App.tsx +34 -0
  32. package/build/templates/issue.comment.action/index.html +14 -0
  33. package/build/templates/issue.comment.action/src/App.tsx +33 -0
  34. package/build/templates/issue.floatingbottom.action/index.html +14 -0
  35. package/build/templates/issue.floatingbottom.action/src/App.tsx +28 -0
  36. package/build/templates/issue.tab/index.html +14 -0
  37. package/build/templates/issue.tab/src/App.tsx +36 -0
  38. package/build/templates/navigation/index.html +14 -0
  39. package/build/templates/navigation/src/App.tsx +15 -0
  40. package/build/templates/portfolio.action/index.html +14 -0
  41. package/build/templates/portfolio.action/src/App.tsx +44 -0
  42. package/build/templates/project.action/index.html +14 -0
  43. package/build/templates/project.action/src/App.tsx +44 -0
  44. package/build/templates/trigger.action/index.html +14 -0
  45. package/build/templates/trigger.action/src/App.scss +46 -0
  46. package/build/templates/trigger.action/src/App.tsx +153 -0
  47. package/package.json +35 -0
@@ -0,0 +1,35 @@
1
+ # Block files from _shared in all directories except _shared itself
2
+ # Shared config files
3
+ **/.npmrc
4
+ !_shared/.npmrc
5
+
6
+ **/.prettierrc.js
7
+ !_shared/.prettierrc.js
8
+
9
+ **/.stylelintrc
10
+ !_shared/.stylelintrc
11
+
12
+ **/eslint.config.js
13
+ !_shared/eslint.config.js
14
+
15
+ # **/manifest.schema.json
16
+ # !_shared/manifest.schema.json
17
+
18
+ **/package.json
19
+ !_shared/package.json
20
+
21
+ **/tsconfig.json
22
+ !_shared/tsconfig.json
23
+
24
+ **/vite.config.ts
25
+ !_shared/vite.config.ts
26
+
27
+ # Shared source files
28
+ **/public/logo.svg
29
+ !_shared/public/logo.svg
30
+
31
+ **/src/main.tsx
32
+ !_shared/src/main.tsx
33
+
34
+ **/src/vite-env.d.ts
35
+ !_shared/src/vite-env.d.ts
@@ -0,0 +1,20 @@
1
+ # Build output
2
+ dist/
3
+ build/
4
+ *.tsbuildinfo
5
+
6
+ # IDE
7
+ .DS_Store
8
+ .vscode/
9
+ .idea/
10
+
11
+ # Logs
12
+ *.log
13
+ npm-debug.log*
14
+ pnpm-debug.log*
15
+
16
+ # Environment
17
+ .env
18
+ .env.local
19
+
20
+ config.json
@@ -0,0 +1,6 @@
1
+ import prettierConfig from '@gravity-ui/prettier-config';
2
+
3
+ export default {
4
+ ...prettierConfig,
5
+ bracketSpacing: true,
6
+ };
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": ["@gravity-ui/stylelint-config", "@gravity-ui/stylelint-config/prettier"]
3
+ }
@@ -0,0 +1,12 @@
1
+ import baseConfig from '@gravity-ui/eslint-config';
2
+ import importOrderConfig from '@gravity-ui/eslint-config/import-order';
3
+ import prettierConfig from '@gravity-ui/eslint-config/prettier';
4
+
5
+ export default [
6
+ ...baseConfig,
7
+ ...prettierConfig,
8
+ ...importOrderConfig,
9
+ {
10
+ ignores: ['**/*.mjs', '**/*.cjs', '**/*.js', '**/*.d.ts'],
11
+ }
12
+ ];
@@ -0,0 +1,438 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Manifest",
4
+ "description": "Schema for validating plugin manifest",
5
+ "type": "object",
6
+ "required": [
7
+ "slug",
8
+ "version",
9
+ "permissions"
10
+ ],
11
+ "properties": {
12
+ "$schema": {
13
+ "type": "string"
14
+ },
15
+ "id": {
16
+ "type": "string",
17
+ "description": "Unique identifier for the plugin ()",
18
+ "minLength": 3,
19
+ "maxLength": 63,
20
+ "pattern": "^[a-z0-9-]+$"
21
+ },
22
+ "slug": {
23
+ "type": "string",
24
+ "description": "Unique identifier for the plugin (lowercase letters, numbers, hyphen)",
25
+ "minLength": 3,
26
+ "maxLength": 63,
27
+ "pattern": "^[a-z0-9-]+$"
28
+ },
29
+ "version": {
30
+ "type": "string",
31
+ "description": "Version of the plugin (semver format required)",
32
+ "minLength": 1,
33
+ "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$"
34
+ },
35
+ "name": {
36
+ "type": "object",
37
+ "description": "Localized plugin name",
38
+ "required": [
39
+ "ru",
40
+ "en"
41
+ ],
42
+ "properties": {
43
+ "ru": {
44
+ "type": "string",
45
+ "description": "Russian name",
46
+ "minLength": 1,
47
+ "maxLength": 30
48
+ },
49
+ "en": {
50
+ "type": "string",
51
+ "description": "English name",
52
+ "minLength": 1,
53
+ "maxLength": 30
54
+ }
55
+ },
56
+ "additionalProperties": false
57
+ },
58
+ "description": {
59
+ "type": "object",
60
+ "description": "Localized plugin description",
61
+ "required": [
62
+ "ru",
63
+ "en"
64
+ ],
65
+ "properties": {
66
+ "ru": {
67
+ "type": "string",
68
+ "description": "Russian description",
69
+ "minLength": 1,
70
+ "maxLength": 300
71
+ },
72
+ "en": {
73
+ "type": "string",
74
+ "description": "English description",
75
+ "minLength": 1,
76
+ "maxLength": 300
77
+ }
78
+ },
79
+ "additionalProperties": false
80
+ },
81
+ "support": {
82
+ "type": "array",
83
+ "description": "Support contact information",
84
+ "items": {
85
+ "type": "object",
86
+ "required": [
87
+ "type",
88
+ "value"
89
+ ],
90
+ "properties": {
91
+ "type": {
92
+ "type": "string",
93
+ "description": "Type of support contact",
94
+ "enum": [
95
+ "email"
96
+ ]
97
+ },
98
+ "value": {
99
+ "type": "string",
100
+ "description": "Contact value",
101
+ "minLength": 1,
102
+ "maxLength": 100
103
+ }
104
+ },
105
+ "additionalProperties": false
106
+ },
107
+ "minItems": 1
108
+ },
109
+ "homepage": {
110
+ "type": "string",
111
+ "description": "Homepage URL for the plugin (http or https)",
112
+ "pattern": "^https?://",
113
+ "maxLength": 1000
114
+ },
115
+ "license": {
116
+ "type": "string",
117
+ "description": "License identifier (e.g., MIT, Apache-2.0)",
118
+ "minLength": 1,
119
+ "maxLength": 32
120
+ },
121
+ "keywords": {
122
+ "type": "array",
123
+ "description": "Keywords for plugin discovery",
124
+ "items": {
125
+ "type": "string",
126
+ "minLength": 1,
127
+ "maxLength": 30
128
+ },
129
+ "uniqueItems": true
130
+ },
131
+ "whatsnew": {
132
+ "type": "string",
133
+ "description": "What's new in this version",
134
+ "minLength": 1,
135
+ "maxLength": 300
136
+ },
137
+ "externalHost": {
138
+ "type": "string",
139
+ "description": "External host URL for the plugin (https only)",
140
+ "format": "uri",
141
+ "pattern": "^https://",
142
+ "maxLength": 1000
143
+ },
144
+ "permissions": {
145
+ "type": "object",
146
+ "description": "Permissions required by the plugin",
147
+ "required": [
148
+ "data"
149
+ ],
150
+ "properties": {
151
+ "data": {
152
+ "type": "array",
153
+ "description": "Data access permissions",
154
+ "items": {
155
+ "type": "string",
156
+ "enum": [
157
+ "tracker:issues:read",
158
+ "tracker:issues:write",
159
+ "tracker:issuetypes:read",
160
+ "tracker:statuses:read",
161
+ "tracker:queues:read",
162
+ "tracker:fields:read",
163
+ "tracker:entities:read",
164
+ "tracker:attachments:read",
165
+ "tracker:attachments:write",
166
+ "tracker:applications:read",
167
+ "tracker:boards:read",
168
+ "tracker:boards:write",
169
+ "tracker:bulk:read",
170
+ "tracker:bulk:write",
171
+ "tracker:bulkchange:read",
172
+ "tracker:bulkchange:write",
173
+ "tracker:charts:read",
174
+ "tracker:commentTemplates:read",
175
+ "tracker:commentTemplates:write",
176
+ "tracker:components:read",
177
+ "tracker:components:write",
178
+ "tracker:data:read",
179
+ "tracker:departments:read",
180
+ "tracker:entities:write",
181
+ "tracker:externalEventTypes:write",
182
+ "tracker:externalEvents:write",
183
+ "tracker:fields:write",
184
+ "tracker:filterFolders:write",
185
+ "tracker:filters:read",
186
+ "tracker:filters:write",
187
+ "tracker:goals:read",
188
+ "tracker:goals:write",
189
+ "tracker:groups:read",
190
+ "tracker:issueTemplates:read",
191
+ "tracker:issueTemplates:write",
192
+ "tracker:links:read",
193
+ "tracker:linktypes:read",
194
+ "tracker:liveBoards:write",
195
+ "tracker:localFields:read",
196
+ "tracker:maillists:read",
197
+ "tracker:maillists:write",
198
+ "tracker:myself:read",
199
+ "tracker:myself:write",
200
+ "tracker:priorities:read",
201
+ "tracker:queues:write",
202
+ "tracker:reminders:read",
203
+ "tracker:reminders:write",
204
+ "tracker:remotelinks:read",
205
+ "tracker:reports:read",
206
+ "tracker:reports:write",
207
+ "tracker:resolutions:read",
208
+ "tracker:resources:read",
209
+ "tracker:resources:write",
210
+ "tracker:roles:read",
211
+ "tracker:screens:read",
212
+ "tracker:services:read",
213
+ "tracker:sprints:read",
214
+ "tracker:sprints:write",
215
+ "tracker:system:write",
216
+ "tracker:tags:read",
217
+ "tracker:translations:read",
218
+ "tracker:users:read",
219
+ "tracker:users:write",
220
+ "tracker:versions:read",
221
+ "tracker:versions:write",
222
+ "tracker:workflows:read",
223
+ "tracker:workflows:write",
224
+ "tracker:worklog:read",
225
+ "tracker:worklog:write"
226
+ ]
227
+ },
228
+ "uniqueItems": true
229
+ },
230
+ "ui": {
231
+ "type": "array",
232
+ "description": "UI permissions",
233
+ "items": {
234
+ "type": "string"
235
+ },
236
+ "uniqueItems": true
237
+ },
238
+ "device": {
239
+ "type": "array",
240
+ "description": "Device permissions",
241
+ "items": {
242
+ "type": "string",
243
+ "enum": [
244
+ "clipboard-write"
245
+ ]
246
+ },
247
+ "uniqueItems": true
248
+ },
249
+ "external": {
250
+ "type": "array",
251
+ "description": "External permissions",
252
+ "items": {
253
+ "type": "string"
254
+ },
255
+ "uniqueItems": true
256
+ }
257
+ },
258
+ "additionalProperties": false
259
+ },
260
+ "slots": {
261
+ "type": "object",
262
+ "description": "Configuration for service slots",
263
+ "minProperties": 1,
264
+ "properties": {
265
+ "tracker": {
266
+ "type": "object",
267
+ "description": "Tracker service slots",
268
+ "minProperties": 1,
269
+ "properties": {
270
+ "issue.action": {
271
+ "type": "array",
272
+ "description": "Issue Action slot configurations",
273
+ "minItems": 1,
274
+ "items": {
275
+ "$ref": "#/definitions/SlotConfig"
276
+ }
277
+ },
278
+ "issue.block": {
279
+ "type": "array",
280
+ "description": "Issue Block slot configurations",
281
+ "minItems": 1,
282
+ "items": {
283
+ "$ref": "#/definitions/SlotConfig"
284
+ }
285
+ },
286
+ "issue.tab": {
287
+ "type": "array",
288
+ "description": "Issue Tab slot configurations",
289
+ "minItems": 1,
290
+ "items": {
291
+ "$ref": "#/definitions/SlotConfig"
292
+ }
293
+ },
294
+ "issue.comment.action": {
295
+ "type": "array",
296
+ "description": "Issue Comment Action slot configurations",
297
+ "minItems": 1,
298
+ "items": {
299
+ "$ref": "#/definitions/SlotConfig"
300
+ }
301
+ },
302
+ "navigation": {
303
+ "type": "array",
304
+ "description": "Navigation slot configurations",
305
+ "minItems": 1,
306
+ "items": {
307
+ "$ref": "#/definitions/SlotConfig"
308
+ }
309
+ },
310
+ "trigger.create.action": {
311
+ "type": "array",
312
+ "description": "Trigger Create Action slot configurations",
313
+ "minItems": 1,
314
+ "items": {
315
+ "$ref": "#/definitions/SlotConfig"
316
+ }
317
+ },
318
+ "trigger.edit.action": {
319
+ "type": "array",
320
+ "description": "Trigger Edit Action slot configurations",
321
+ "minItems": 1,
322
+ "items": {
323
+ "$ref": "#/definitions/SlotConfig"
324
+ }
325
+ },
326
+ "project.action": {
327
+ "type": "array",
328
+ "description": "Project Action slot configurations",
329
+ "minItems": 1,
330
+ "items": {
331
+ "$ref": "#/definitions/SlotConfig"
332
+ }
333
+ },
334
+ "portfolio.action": {
335
+ "type": "array",
336
+ "description": "Portfolio Action slot configurations",
337
+ "minItems": 1,
338
+ "items": {
339
+ "$ref": "#/definitions/SlotConfig"
340
+ }
341
+ },
342
+ "goal.action": {
343
+ "type": "array",
344
+ "description": "Goal Action slot configurations",
345
+ "minItems": 1,
346
+ "items": {
347
+ "$ref": "#/definitions/SlotConfig"
348
+ }
349
+ },
350
+ "issue.floatingbottom.action": {
351
+ "type": "array",
352
+ "description": "Issue Floatingbottom Action slot configurations",
353
+ "minItems": 1,
354
+ "items": {
355
+ "$ref": "#/definitions/SlotConfig"
356
+ }
357
+ },
358
+ "attachment.viewer.action": {
359
+ "type": "array",
360
+ "description": "Attachment Viewer Action slot configurations",
361
+ "minItems": 1,
362
+ "items": {
363
+ "$ref": "#/definitions/SlotConfig"
364
+ }
365
+ }
366
+ },
367
+ "additionalProperties": false
368
+ }
369
+ },
370
+ "additionalProperties": false
371
+ }
372
+ },
373
+ "additionalProperties": false,
374
+ "definitions": {
375
+ "SlotConfig": {
376
+ "type": "object",
377
+ "description": "Configuration for a specific slot",
378
+ "required": [
379
+ "entrypoint",
380
+ "title"
381
+ ],
382
+ "properties": {
383
+ "entrypoint": {
384
+ "type": "string",
385
+ "description": "Entry point file path for the slot",
386
+ "minLength": 1
387
+ },
388
+ "title": {
389
+ "type": "object",
390
+ "description": "Localized titles for the slot",
391
+ "required": [
392
+ "ru",
393
+ "en"
394
+ ],
395
+ "properties": {
396
+ "ru": {
397
+ "type": "string",
398
+ "description": "Russian title",
399
+ "minLength": 1,
400
+ "maxLength": 32
401
+ },
402
+ "en": {
403
+ "type": "string",
404
+ "description": "English title",
405
+ "minLength": 1,
406
+ "maxLength": 32
407
+ }
408
+ },
409
+ "additionalProperties": false
410
+ },
411
+ "description": {
412
+ "type": "object",
413
+ "description": "Localized descriptions for the slot",
414
+ "required": [
415
+ "ru",
416
+ "en"
417
+ ],
418
+ "properties": {
419
+ "ru": {
420
+ "type": "string",
421
+ "description": "Russian description",
422
+ "minLength": 1,
423
+ "maxLength": 300
424
+ },
425
+ "en": {
426
+ "type": "string",
427
+ "description": "English description",
428
+ "minLength": 1,
429
+ "maxLength": 300
430
+ }
431
+ },
432
+ "additionalProperties": false
433
+ }
434
+ },
435
+ "additionalProperties": false
436
+ }
437
+ }
438
+ }
@@ -0,0 +1,12 @@
1
+ # Данные для маркетплейса
2
+
3
+ В этой папке лежат материалы, необходимые для публикации плагина в маркетплейсе.
4
+
5
+ ## Обязательные файлы
6
+
7
+ - `index.md` — описание плагина для страницы в магазине в формате Markdown. Этот файл нужно добавить вручную перед публикацией.
8
+ - `header-image.jpg` — обложка для страницы плагина. Требуемое соотношение сторон: `784:325` (примерно `2.41:1`). Этот файл нужно добавить вручную перед публикацией.
9
+
10
+ ## Подсказка для ИИ-агентов
11
+
12
+ Если вы готовите плагин к публикации, убедитесь, что в папке есть все обязательные файлы и что изображение соответствует требованиям.
@@ -0,0 +1,2 @@
1
+ registry=https://npm.yandex-team.ru
2
+ @gravity-ui:registry=https://registry.npmjs.com
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "tracker-plugin-default-template",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "keywords": [
6
+ "react",
7
+ "vite",
8
+ "template",
9
+ "typescript",
10
+ "gravity",
11
+ "uikit",
12
+ "sass"
13
+ ],
14
+ "description": "Plugin template",
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
18
+ "scripts": {
19
+ "dev": "node node_modules/vite/bin/vite.js",
20
+ "build": "tsc && node node_modules/vite/bin/vite.js build",
21
+ "lint:js": "eslint --ext .js,.jsx,.ts,.tsx .",
22
+ "lint:styles": "stylelint '{styles,src}/**/*.{css,scss}' --allow-empty-input",
23
+ "typecheck": "tsc",
24
+ "lint": "npm run lint:js && npm run lint:styles && npm run typecheck"
25
+ },
26
+ "dependencies": {
27
+ "@gravity-ui/icons": "2.13.0",
28
+ "@gravity-ui/uikit": "7.21.0",
29
+ "@yandex-data-ui/gravity-themes": "1.7.0",
30
+ "@yandex-data-ui/tracker-plugin-sdk-react": "0.0.25",
31
+ "@yandex-data-ui/tracker-pub-api-types": "0.0.6",
32
+ "bem-cn-lite": "4.1.0",
33
+ "react": "18.3.1",
34
+ "react-dom": "18.3.1"
35
+ },
36
+ "devDependencies": {
37
+ "@gravity-ui/browserslist-config": "4.1.0",
38
+ "@gravity-ui/eslint-config": "4.2.0",
39
+ "@gravity-ui/prettier-config": "1.1.0",
40
+ "@gravity-ui/stylelint-config": "4.0.0",
41
+ "@gravity-ui/tsconfig": "1.0.0",
42
+ "@types/node": "^25.0.10",
43
+ "@types/react": "18.2.37",
44
+ "@types/react-dom": "18.2.15",
45
+ "@vitejs/plugin-react": "5.1.2",
46
+ "axios": "1.12.2",
47
+ "eslint": "9.24.0",
48
+ "husky": "8.0.3",
49
+ "sass": "1.97.3",
50
+ "typescript": "5.8.3",
51
+ "vite": "7.3.1",
52
+ "vite-plugin-svgr": "4.5.0"
53
+ },
54
+ "browserslist": [
55
+ "extends @gravity-ui/browserslist-config"
56
+ ],
57
+ "lint-staged": {
58
+ "*.{css,scss}": [
59
+ "stylelint --fix --quiet"
60
+ ],
61
+ "*.{js,jsx,ts,tsx}": [
62
+ "eslint --fix --quiet",
63
+ "prettier --write"
64
+ ],
65
+ "*.md": [
66
+ "prettier --write"
67
+ ]
68
+ }
69
+ }
@@ -0,0 +1,12 @@
1
+ # Публичные ассеты
2
+
3
+ В этой папке лежат публичные файлы плагина.
4
+
5
+ ## Логотип
6
+
7
+ - `logo.svg` — квадратный логотип плагина.
8
+ - Логотип нужно добавить вручную перед публикацией.
9
+
10
+ ## Подсказка для ИИ-агентов
11
+
12
+ Если вы готовите плагин к публикации, убедитесь, что в папке `public` есть файл `logo.svg` и он квадратный.
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+
3
+ import { TrackerPluginProvider } from '@yandex-data-ui/tracker-plugin-sdk-react';
4
+ import ReactDOM from 'react-dom/client';
5
+
6
+ import App from './App';
7
+
8
+ // gravity theme
9
+ import './styles-gravity.scss';
10
+
11
+ // yandex-360 theme
12
+ // import './styles-360.scss';
13
+
14
+ const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
15
+ root.render(
16
+ <React.StrictMode>
17
+ <TrackerPluginProvider>
18
+ <App />
19
+ </TrackerPluginProvider>
20
+ </React.StrictMode>,
21
+ );