@pulsesync/addon-sdk 0.1.0 → 0.1.2

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 (72) hide show
  1. package/README.md +81 -74
  2. package/dist/addon/defineAddon.d.ts.map +1 -0
  3. package/dist/addon/defineAddon.js.map +1 -0
  4. package/dist/addon/globals.d.ts.map +1 -0
  5. package/dist/addon/globals.js.map +1 -0
  6. package/dist/addon/index.d.ts +4 -0
  7. package/dist/addon/index.d.ts.map +1 -0
  8. package/dist/addon/index.js +3 -0
  9. package/dist/addon/index.js.map +1 -0
  10. package/dist/addon/types.d.ts.map +1 -0
  11. package/dist/addon/types.js.map +1 -0
  12. package/dist/addon/version.d.ts.map +1 -0
  13. package/dist/addon/version.js.map +1 -0
  14. package/dist/index.d.ts +4 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/settings/defineSettings.d.ts +3 -0
  19. package/dist/settings/defineSettings.d.ts.map +1 -0
  20. package/dist/settings/defineSettings.js +23 -0
  21. package/dist/settings/defineSettings.js.map +1 -0
  22. package/dist/settings/index.d.ts +3 -0
  23. package/dist/settings/index.d.ts.map +1 -0
  24. package/dist/settings/index.js +2 -0
  25. package/dist/settings/index.js.map +1 -0
  26. package/dist/settings/schema.d.ts +6 -0
  27. package/dist/settings/schema.d.ts.map +1 -0
  28. package/dist/{settings.js → settings/schema.js} +16 -34
  29. package/dist/settings/schema.js.map +1 -0
  30. package/dist/{settings.d.ts → settings/types.d.ts} +2 -3
  31. package/dist/settings/types.d.ts.map +1 -0
  32. package/dist/settings/types.js +2 -0
  33. package/dist/settings/types.js.map +1 -0
  34. package/dist/vite/index.d.ts +4 -0
  35. package/dist/vite/index.d.ts.map +1 -0
  36. package/dist/vite/index.js +3 -0
  37. package/dist/vite/index.js.map +1 -0
  38. package/dist/vite/manifest.d.ts +20 -0
  39. package/dist/vite/manifest.d.ts.map +1 -0
  40. package/dist/vite/manifest.js +28 -0
  41. package/dist/vite/manifest.js.map +1 -0
  42. package/dist/vite/plugin.d.ts +4 -0
  43. package/dist/vite/plugin.d.ts.map +1 -0
  44. package/dist/vite/plugin.js +77 -0
  45. package/dist/vite/plugin.js.map +1 -0
  46. package/dist/vite/types.d.ts +28 -0
  47. package/dist/vite/types.d.ts.map +1 -0
  48. package/dist/vite/types.js +2 -0
  49. package/dist/vite/types.js.map +1 -0
  50. package/dist/vite.d.ts +1 -30
  51. package/dist/vite.d.ts.map +1 -1
  52. package/dist/vite.js +1 -97
  53. package/dist/vite.js.map +1 -1
  54. package/package.json +4 -2
  55. package/dist/defineAddon.d.ts.map +0 -1
  56. package/dist/defineAddon.js.map +0 -1
  57. package/dist/globals.d.ts.map +0 -1
  58. package/dist/globals.js.map +0 -1
  59. package/dist/settings.d.ts.map +0 -1
  60. package/dist/settings.js.map +0 -1
  61. package/dist/types.d.ts.map +0 -1
  62. package/dist/types.js.map +0 -1
  63. package/dist/version.d.ts.map +0 -1
  64. package/dist/version.js.map +0 -1
  65. /package/dist/{defineAddon.d.ts → addon/defineAddon.d.ts} +0 -0
  66. /package/dist/{defineAddon.js → addon/defineAddon.js} +0 -0
  67. /package/dist/{globals.d.ts → addon/globals.d.ts} +0 -0
  68. /package/dist/{globals.js → addon/globals.js} +0 -0
  69. /package/dist/{types.d.ts → addon/types.d.ts} +0 -0
  70. /package/dist/{types.js → addon/types.js} +0 -0
  71. /package/dist/{version.d.ts → addon/version.d.ts} +0 -0
  72. /package/dist/{version.js → addon/version.js} +0 -0
package/README.md CHANGED
@@ -1,119 +1,126 @@
1
- # PulseSync Addon SDK
1
+ # @pulsesync/addon-sdk
2
2
 
3
- Публичный TypeScript/React SDK для аддонов, которые запускаются через PulseSync WebHost.
3
+ [![npm](https://img.shields.io/npm/v/@pulsesync/addon-sdk)](https://www.npmjs.com/package/@pulsesync/addon-sdk)
4
+ [![license](https://img.shields.io/npm/l/@pulsesync/addon-sdk)](https://www.gnu.org/licenses/gpl-3.0.html)
4
5
 
5
- WebHost владеет единственным React root и предоставляет аддонам React `19.2.4`. Аддон экспортирует компоненты и не вызывает `createRoot()` самостоятельно.
6
+ Официальный SDK для React-аддонов PulseSync WebHost.
7
+
8
+ - [Шаблон аддона](https://github.com/PulseSync-LLC/PulseSync-ExampleAddon)
9
+ - [PulseSync](https://pulsesync.dev)
10
+
11
+ > SDK находится в preview. До версии `1.0.0` API может меняться между minor-релизами.
6
12
 
7
13
  ## Установка
8
14
 
9
15
  ```bash
10
16
  npm install @pulsesync/addon-sdk react@19.2.4
11
- npm install -D vite @vitejs/plugin-react typescript @types/react
17
+ npm install --save-dev vite @vitejs/plugin-react typescript @types/react
12
18
  ```
13
19
 
14
- ## Обычный компонент
20
+ React предоставляет WebHost. Не добавляйте `react-dom` в аддон и не вызывайте `createRoot()`.
21
+
22
+ ## Аддон
15
23
 
16
24
  ```tsx
17
- import { defineAddon } from '@pulsesync/addon-sdk'
25
+ import { defineAddon, type PulseSyncAddonComponentProps } from '@pulsesync/addon-sdk'
18
26
 
19
- function App() {
20
- return <div>PulseSync addon</div>
27
+ function PlayerButton({ api }: PulseSyncAddonComponentProps) {
28
+ return <button onClick={() => api.pulsesyncApi?.togglePlayPause()}>Play / Pause</button>
21
29
  }
22
30
 
23
31
  export default defineAddon({
24
- id: 'example-addon',
25
- name: 'Example Addon',
26
- component: App,
27
- })
28
- ```
29
-
30
- ## Стандартные точки интерфейса
31
-
32
- Имена slots задаёт WebHost. Аддон только отдаёт React-компонент для нужной точки.
33
-
34
- ```tsx
35
- export default defineAddon({
36
- id: 'player-actions',
32
+ id: 'player-button',
37
33
  slots: {
38
34
  playerBarButton: PlayerButton,
39
- contextMenuActions: ContextMenuActions,
40
35
  },
41
36
  })
42
37
  ```
43
38
 
44
- ## Произвольная точка
39
+ `id` должен быть постоянным: по нему WebHost хранит состояние и настройки аддона.
45
40
 
46
- Если стандартного slot нет, автор может указать DOM-цель самостоятельно.
41
+ ## Настройки
47
42
 
48
- ```tsx
49
- export default defineAddon({
50
- id: 'custom-target',
51
- mounts: [
52
- {
53
- target: '[data-test-id="PLAYERBAR_DESKTOP"]',
54
- component: PlayerButton,
43
+ ```ts
44
+ // src/settings.ts
45
+ import { defineSettings } from '@pulsesync/addon-sdk'
46
+
47
+ export const settings = defineSettings(
48
+ {
49
+ enabled: {
50
+ type: 'boolean',
51
+ name: 'Включить аддон',
52
+ default: true,
53
+ },
54
+ accentColor: {
55
+ type: 'color',
56
+ name: 'Цвет кнопки',
57
+ default: '#ffdb4d',
55
58
  },
56
- ],
57
- })
58
- ```
59
-
60
- `target` также принимает `Element`, функцию `() => Element | null`, `{ selector }` или `{ slot }`.
61
-
62
- ## Lifecycle
63
-
64
- ```tsx
65
- export default defineAddon({
66
- id: 'lifecycle-example',
67
- start(api) {
68
- api.logger.info('Started')
69
- return () => api.logger.info('Start cleanup')
70
- },
71
- stop(api) {
72
- api.logger.info('Stopped')
73
59
  },
74
- })
60
+ { title: 'Основные' },
61
+ )
75
62
  ```
76
63
 
77
- ## Настройки
78
-
79
- Схема живёт рядом с кодом аддона и остаётся типизированной:
80
-
81
64
  ```tsx
82
- import { defineSettings, type PulseSyncAddonComponentProps } from '@pulsesync/addon-sdk'
65
+ import { settings } from './settings'
83
66
 
84
- export const settings = defineSettings({
85
- enabled: {
86
- type: 'boolean',
87
- name: 'Включить аддон',
88
- default: true,
89
- },
90
- })
67
+ function PlayerButton({ api }: PulseSyncAddonComponentProps) {
68
+ const { accentColor, enabled } = settings.use(api)
91
69
 
92
- function App({ api }: PulseSyncAddonComponentProps) {
93
- const { enabled } = settings.use(api)
94
- return enabled ? <div>PulseSync addon</div> : null
70
+ if (!enabled) return null
71
+ return <button style={{ color: accentColor }}>Play / Pause</button>
95
72
  }
96
73
  ```
97
74
 
98
- Передай `settings` в `pulseSyncAddon({ manifest, settings })`. Сборщик запишет схему в `metadata.json`; отдельный `handleEvents.json` для WebHost-аддона не нужен.
75
+ Передайте `settings` сборщику. Схема попадёт в `metadata.json`, а пользовательские значения PulseSync сохранит отдельно. `handleEvents.json` WebHost-аддону не нужен.
99
76
 
100
- ## Vite
77
+ Поддерживаемые типы: `boolean`, `number`, `select`, `text`, `color`, `file`.
78
+
79
+ ## Сборка
101
80
 
102
81
  ```ts
82
+ // vite.config.ts
103
83
  import react from '@vitejs/plugin-react'
104
84
  import { defineConfig } from 'vite'
105
85
  import { defineAddonManifest, pulseSyncAddon } from '@pulsesync/addon-sdk/vite'
106
86
 
107
- const manifest = defineAddonManifest({
108
- id: 'example-addon',
109
- directoryName: 'example-addon',
110
- name: 'Example Addon',
111
- version: '0.1.0',
112
- })
87
+ import addonConfig from './addon.config.mjs'
88
+ import { settings } from './src/settings.ts'
113
89
 
114
90
  export default defineConfig({
115
- plugins: [react(), pulseSyncAddon({ manifest })],
91
+ plugins: [
92
+ react(),
93
+ pulseSyncAddon({
94
+ manifest: defineAddonManifest(addonConfig),
95
+ settings,
96
+ }),
97
+ ],
116
98
  })
117
99
  ```
118
100
 
119
- Плагин собирает `script.js`, `script.css` и `metadata.json`, помечает аддон как `web-addon`, исключает React из бандла и запрещает импорт `react-dom`.
101
+ Сборка создаёт папку `dist/<directoryName>`:
102
+
103
+ ```text
104
+ metadata.json
105
+ script.css
106
+ script.js
107
+ ```
108
+
109
+ React и JSX runtime остаются внешними зависимостями и берутся из WebHost.
110
+
111
+ ## Экспорты
112
+
113
+ | Импорт | Назначение |
114
+ | --- | --- |
115
+ | `@pulsesync/addon-sdk` | `defineAddon`, `defineSettings`, runtime-типы |
116
+ | `@pulsesync/addon-sdk/vite` | `pulseSyncAddon`, `defineAddonManifest` |
117
+
118
+ ## Требования
119
+
120
+ - Node.js 20 или новее;
121
+ - React `19.2.4`;
122
+ - PulseSync WebHost API v1.
123
+
124
+ ## Лицензия
125
+
126
+ GPL-3.0-or-later
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineAddon.d.ts","sourceRoot":"","sources":["../../src/addon/defineAddon.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGR,wBAAwB,EAExB,qBAAqB,EAExB,MAAM,YAAY,CAAA;AAkCnB,wBAAgB,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,wBAAwB,CAcpF;eAEc,WAAW"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineAddon.js","sourceRoot":"","sources":["../../src/addon/defineAddon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAU7D,SAAS,WAAW,CAAC,EAAU;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;IACxE,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA8B;IACpD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAErD,OAAO,CAAC,GAAsB,EAAyB,EAAE;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM,GAAG,IAAI,CAAA;QAEjB,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnB,MAAM,GAAG,KAAK,CAAA;YAEd,IAAI,CAAC;gBACD,IAAI,OAAO,OAAO,KAAK,UAAU;oBAAE,OAAO,EAAE,CAAA;YAChD,CAAC;oBAAS,CAAC;gBACP,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;QACL,CAAC,CAAA;IACL,CAAC,CAAA;AACL,CAAC;AAED,SAAS,OAAO,CAAC,OAA8B;IAC3C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAA8B;IACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,UAAU,GAA6B,MAAM,CAAC,MAAM,CAAC;QACvD,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,UAAU,EAAE,8BAA8B;QAC1C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC,CAAA;IAEF,OAAO,CAAC,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;IACnD,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/addon/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE5E,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,sBAAsB,CAAC,EAAE,mBAAmB,CAAA;QAC5C,yBAAyB,CAAC,EAAE,qBAAqB,EAAE,CAAA;KACtD;CACJ;AAED,OAAO,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/addon/globals.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { default, defineAddon } from './defineAddon.js';
2
+ export { PULSESYNC_WEB_HOST_API_VERSION } from './version.js';
3
+ export type { PulseSyncAddonApi, PulseSyncAddonCleanup, PulseSyncAddonComponent, PulseSyncAddonComponentProps, PulseSyncAddonDefinition, PulseSyncAddonFactory, PulseSyncAddonLogger, PulseSyncAddonMount, PulseSyncAddonMountTarget, PulseSyncAddonOptions, PulseSyncWebHostApi, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,YAAY,EACR,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { default, defineAddon } from './defineAddon.js';
2
+ export { PULSESYNC_WEB_HOST_API_VERSION } from './version.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/addon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/addon/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/addon/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/addon/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/addon/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAU,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import './globals.js';
2
- export { default, defineAddon } from './defineAddon.js';
3
- export { defineSettings } from './settings.js';
4
- export { PULSESYNC_WEB_HOST_API_VERSION } from './version.js';
1
+ import './addon/globals.js';
5
2
  export type { AddonSettings, AddonSettingsStore, AddonSettingValue, PulseSyncApi } from '@pulsesync/yamusic-types';
6
- export type { PulseSyncAddonApi, PulseSyncAddonCleanup, PulseSyncAddonComponent, PulseSyncAddonComponentProps, PulseSyncAddonDefinition, PulseSyncAddonFactory, PulseSyncAddonLogger, PulseSyncAddonMount, PulseSyncAddonMountTarget, PulseSyncAddonOptions, PulseSyncWebHostApi, } from './types.js';
7
- export type { DefineSettingsOptions, InferPulseSyncSettings, PulseSyncSetting, PulseSyncSettingsConfig, PulseSyncSettingsDefinition, PulseSyncSettingsSchema, } from './settings.js';
3
+ export { default } from './addon/index.js';
4
+ export * from './addon/index.js';
5
+ export * from './settings/index.js';
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAClH,YAAY,EACR,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,YAAY,CAAA;AACnB,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,GAC1B,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAA;AAE3B,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAClH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import './globals.js';
2
- export { default, defineAddon } from './defineAddon.js';
3
- export { defineSettings } from './settings.js';
4
- export { PULSESYNC_WEB_HOST_API_VERSION } from './version.js';
1
+ import './addon/globals.js';
2
+ export { default } from './addon/index.js';
3
+ export * from './addon/index.js';
4
+ export * from './settings/index.js';
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAA;AAG3B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { DefineSettingsOptions, PulseSyncSettingsDefinition, PulseSyncSettingsSchema } from './types.js';
2
+ export declare function defineSettings<const TSchema extends PulseSyncSettingsSchema>(schema: TSchema, options?: DefineSettingsOptions): PulseSyncSettingsDefinition<TSchema>;
3
+ //# sourceMappingURL=defineSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineSettings.d.ts","sourceRoot":"","sources":["../../src/settings/defineSettings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EAC1B,MAAM,YAAY,CAAA;AAEnB,wBAAgB,cAAc,CAAC,KAAK,CAAC,OAAO,SAAS,uBAAuB,EACxE,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,qBAA0B,GACpC,2BAA2B,CAAC,OAAO,CAAC,CAsBtC"}
@@ -0,0 +1,23 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { createSettingsConfig, createSettingsDefaults, resolveSettingsValues } from './schema.js';
3
+ export function defineSettings(schema, options = {}) {
4
+ const defaults = Object.freeze(createSettingsDefaults(schema));
5
+ const frozenSchema = Object.freeze({ ...schema });
6
+ return Object.freeze({
7
+ schema: frozenSchema,
8
+ defaults,
9
+ use(api) {
10
+ const [values, setValues] = useState(defaults);
11
+ useEffect(() => {
12
+ const store = api.pulsesyncApi?.getSettings(api.addonId);
13
+ if (!store)
14
+ return;
15
+ setValues(resolveSettingsValues(frozenSchema, store.getCurrent()));
16
+ return store.onChange(current => setValues(resolveSettingsValues(frozenSchema, current)));
17
+ }, [api]);
18
+ return values;
19
+ },
20
+ toConfig: () => createSettingsConfig(frozenSchema, options.title ?? 'Settings'),
21
+ });
22
+ }
23
+ //# sourceMappingURL=defineSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineSettings.js","sourceRoot":"","sources":["../../src/settings/defineSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAOjG,MAAM,UAAU,cAAc,CAC1B,MAAe,EACf,OAAO,GAA0B,EAAE;IAEnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAY,CAAA;IAE5D,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,YAAY;QACpB,QAAQ;QACR,GAAG,CAAC,GAAsB;YACtB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAE9C,SAAS,CAAC,GAAG,EAAE;gBACX,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACxD,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAElB,SAAS,CAAC,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;gBAClE,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;YAC7F,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAET,OAAO,MAAM,CAAA;QACjB,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;KAClF,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { defineSettings } from './defineSettings.js';
2
+ export type { DefineSettingsOptions, InferPulseSyncSettings, PulseSyncSetting, PulseSyncSettingsConfig, PulseSyncSettingsDefinition, PulseSyncSettingsSchema, } from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,GAC1B,MAAM,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { defineSettings } from './defineSettings.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { AddonSettings } from '@pulsesync/yamusic-types';
2
+ import type { InferPulseSyncSettings, PulseSyncSettingsConfig, PulseSyncSettingsSchema } from './types.js';
3
+ export declare function createSettingsDefaults<TSchema extends PulseSyncSettingsSchema>(schema: TSchema): InferPulseSyncSettings<TSchema>;
4
+ export declare function resolveSettingsValues<TSchema extends PulseSyncSettingsSchema>(schema: TSchema, current: AddonSettings): InferPulseSyncSettings<TSchema>;
5
+ export declare function createSettingsConfig(schema: PulseSyncSettingsSchema, title: string): PulseSyncSettingsConfig;
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,KAAK,EACR,sBAAsB,EAEtB,uBAAuB,EACvB,uBAAuB,EAC1B,MAAM,YAAY,CAAA;AAuCnB,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,uBAAuB,EAC1E,MAAM,EAAE,OAAO,GAChB,sBAAsB,CAAC,OAAO,CAAC,CAEjC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,uBAAuB,EACzE,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,aAAa,GACvB,sBAAsB,CAAC,OAAO,CAAC,CAIjC;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,MAAM,GACd,uBAAuB,CASzB"}
@@ -1,4 +1,3 @@
1
- import { useEffect, useState } from 'react';
2
1
  function readSettingValue(entry, fallback) {
3
2
  if (entry && typeof entry === 'object' && !Array.isArray(entry)) {
4
3
  const setting = entry;
@@ -9,12 +8,6 @@ function readSettingValue(entry, fallback) {
9
8
  }
10
9
  return typeof entry === 'undefined' ? fallback : entry;
11
10
  }
12
- function createDefaults(schema) {
13
- return Object.fromEntries(Object.entries(schema).map(([id, setting]) => [id, setting.default]));
14
- }
15
- function resolveValues(schema, current) {
16
- return Object.fromEntries(Object.entries(schema).map(([id, setting]) => [id, readSettingValue(current[id], setting.default)]));
17
- }
18
11
  function settingToConfig(id, setting) {
19
12
  const common = {
20
13
  id,
@@ -38,31 +31,20 @@ function settingToConfig(id, setting) {
38
31
  return { ...common, type: setting.type };
39
32
  }
40
33
  }
41
- export function defineSettings(schema, options = {}) {
42
- const defaults = Object.freeze(createDefaults(schema));
43
- const frozenSchema = Object.freeze({ ...schema });
44
- return Object.freeze({
45
- schema: frozenSchema,
46
- defaults,
47
- use(api) {
48
- const [values, setValues] = useState(defaults);
49
- useEffect(() => {
50
- const store = api.pulsesyncApi?.getSettings(api.addonId);
51
- if (!store)
52
- return;
53
- setValues(resolveValues(frozenSchema, store.getCurrent()));
54
- return store.onChange(current => setValues(resolveValues(frozenSchema, current)));
55
- }, [api]);
56
- return values;
57
- },
58
- toConfig: () => ({
59
- sections: [
60
- {
61
- title: options.title ?? 'Settings',
62
- items: Object.entries(frozenSchema).map(([id, setting]) => settingToConfig(id, setting)),
63
- },
64
- ],
65
- }),
66
- });
34
+ export function createSettingsDefaults(schema) {
35
+ return Object.fromEntries(Object.entries(schema).map(([id, setting]) => [id, setting.default]));
36
+ }
37
+ export function resolveSettingsValues(schema, current) {
38
+ return Object.fromEntries(Object.entries(schema).map(([id, setting]) => [id, readSettingValue(current[id], setting.default)]));
39
+ }
40
+ export function createSettingsConfig(schema, title) {
41
+ return {
42
+ sections: [
43
+ {
44
+ title,
45
+ items: Object.entries(schema).map(([id, setting]) => settingToConfig(id, setting)),
46
+ },
47
+ ],
48
+ };
67
49
  }
68
- //# sourceMappingURL=settings.js.map
50
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PulseSyncAddonApi } from './types.js';
1
+ import type { PulseSyncAddonApi } from '../addon/types.js';
2
2
  type SettingBase<TType extends string, TValue> = {
3
3
  readonly type: TType;
4
4
  readonly name: string;
@@ -34,6 +34,5 @@ export type PulseSyncSettingsDefinition<TSchema extends PulseSyncSettingsSchema
34
34
  export type DefineSettingsOptions = {
35
35
  readonly title?: string;
36
36
  };
37
- export declare function defineSettings<const TSchema extends PulseSyncSettingsSchema>(schema: TSchema, options?: DefineSettingsOptions): PulseSyncSettingsDefinition<TSchema>;
38
37
  export {};
39
- //# sourceMappingURL=settings.d.ts.map
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/settings/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,KAAK,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,IAAI;IAC7C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GACtB,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,GAC/B,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAC5B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACzB,CAAC,GACF,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAClC,EAAE,CAAA;CACN,CAAC,CAAA;AAER,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,uBAAuB,IAAI;IAC1E,QAAQ,EAAE,IAAI,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;CAC7D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KACrD,EAAE,CAAA;CACN,CAAA;AAED,MAAM,MAAM,2BAA2B,CAAC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACzG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAClD,GAAG,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAChE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/settings/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { defineAddonManifest } from './manifest.js';
2
+ export { pulseSyncAddon } from './plugin.js';
3
+ export type { PulseSyncAddonManifest, PulseSyncAddonViteOptions } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { defineAddonManifest } from './manifest.js';
2
+ export { pulseSyncAddon } from './plugin.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { PulseSyncAddonManifest } from './types.js';
2
+ export declare function defineAddonManifest<const T extends PulseSyncAddonManifest>(manifest: T): T;
3
+ export declare function createAddonMetadata(manifest: PulseSyncAddonManifest): {
4
+ id: string;
5
+ name: string;
6
+ description: string;
7
+ version: string;
8
+ author: string | string[];
9
+ type: string;
10
+ image: string;
11
+ banner: string;
12
+ libraryLogo: string;
13
+ css: string;
14
+ script: string;
15
+ tags: readonly string[];
16
+ dependencies: readonly string[];
17
+ allowedUrls: readonly string[];
18
+ supportedVersions: readonly string[];
19
+ };
20
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/vite/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAOxD,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,CAAC,SAAS,sBAAsB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAE1F;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB;IAE5D,EAAE;IACF,IAAI;IACJ,WAAW;IACX,OAAO;IACP,MAAM;IACN,IAAI;IACJ,KAAK;IACL,MAAM;IACN,WAAW;IACX,GAAG;IACH,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,WAAW;IACX,iBAAiB;EAExB"}
@@ -0,0 +1,28 @@
1
+ function cleanManifestValue(value) {
2
+ if (Array.isArray(value))
3
+ return value.map(item => String(item).trim()).filter(Boolean);
4
+ return typeof value === 'string' ? value.trim() : '';
5
+ }
6
+ export function defineAddonManifest(manifest) {
7
+ return manifest;
8
+ }
9
+ export function createAddonMetadata(manifest) {
10
+ return {
11
+ id: manifest.id,
12
+ name: manifest.name,
13
+ description: manifest.description ?? '',
14
+ version: manifest.version,
15
+ author: cleanManifestValue(manifest.author),
16
+ type: 'web-addon',
17
+ image: manifest.image ?? '',
18
+ banner: manifest.banner ?? '',
19
+ libraryLogo: manifest.libraryLogo ?? '',
20
+ css: 'script.css',
21
+ script: 'script.js',
22
+ tags: manifest.tags ?? [],
23
+ dependencies: manifest.dependencies ?? [],
24
+ allowedUrls: manifest.allowedUrls ?? [],
25
+ supportedVersions: manifest.supportedVersions ?? [],
26
+ };
27
+ }
28
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/vite/manifest.ts"],"names":[],"mappings":"AAEA,SAAS,kBAAkB,CAAC,KAA6C;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAyC,QAAW;IACnF,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgC;IAChE,OAAO;QACH,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3C,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;QACzB,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACzC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;KACtD,CAAA;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { PulseSyncAddonViteOptions } from './types.js';
3
+ export declare function pulseSyncAddon(options: PulseSyncAddonViteOptions): Plugin;
4
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAA8B,MAAM,MAAM,CAAA;AAG9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAU3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAsEzE"}
@@ -0,0 +1,77 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { createAddonMetadata } from './manifest.js';
4
+ const REACT_EXTERNALS = ['react', 'react/jsx-runtime', 'react/jsx-dev-runtime'];
5
+ function resolveOutputDirectory(root, options) {
6
+ return options.outDir
7
+ ? path.resolve(root, options.outDir)
8
+ : path.resolve(root, 'dist', options.manifest.directoryName);
9
+ }
10
+ export function pulseSyncAddon(options) {
11
+ let resolvedConfig;
12
+ let outputDirectory = '';
13
+ return {
14
+ name: 'pulsesync-addon',
15
+ enforce: 'pre',
16
+ config(currentConfig) {
17
+ const root = path.resolve(currentConfig.root ?? process.cwd());
18
+ outputDirectory = resolveOutputDirectory(root, options);
19
+ return {
20
+ build: {
21
+ target: options.target ?? 'chrome140',
22
+ outDir: outputDirectory,
23
+ emptyOutDir: true,
24
+ minify: options.minify ?? 'oxc',
25
+ sourcemap: options.sourcemap ?? false,
26
+ cssCodeSplit: false,
27
+ lib: {
28
+ entry: path.resolve(root, options.entry ?? 'src/main.tsx'),
29
+ formats: ['iife'],
30
+ name: options.globalName ?? 'PulseSyncAddon',
31
+ fileName: () => 'script.js',
32
+ cssFileName: 'script',
33
+ },
34
+ rollupOptions: {
35
+ external: REACT_EXTERNALS,
36
+ output: {
37
+ globals: {
38
+ react: 'window.__PULSESYNC_WEB_HOST__.React',
39
+ 'react/jsx-runtime': 'window.__PULSESYNC_WEB_HOST__.jsxRuntime',
40
+ 'react/jsx-dev-runtime': 'window.__PULSESYNC_WEB_HOST__.jsxDevRuntime',
41
+ },
42
+ assetFileNames: assetInfo => assetInfo.names.some(name => name.endsWith('.css')) ? '[name][extname]' : 'Assets/[name][extname]',
43
+ },
44
+ },
45
+ },
46
+ };
47
+ },
48
+ configResolved(config) {
49
+ resolvedConfig = config;
50
+ outputDirectory ||= resolveOutputDirectory(config.root, options);
51
+ },
52
+ resolveId(source) {
53
+ if (source === 'react-dom' || source.startsWith('react-dom/')) {
54
+ throw new Error('PulseSync WebHost owns the React root. Export components from defineAddon instead of importing react-dom.');
55
+ }
56
+ },
57
+ async closeBundle() {
58
+ await fs.mkdir(outputDirectory, { recursive: true });
59
+ if (options.staticDir !== false) {
60
+ const staticDirectory = path.resolve(resolvedConfig.root, options.staticDir ?? 'addon');
61
+ try {
62
+ await fs.cp(staticDirectory, outputDirectory, { recursive: true, force: true });
63
+ }
64
+ catch (error) {
65
+ if (error.code !== 'ENOENT')
66
+ throw error;
67
+ }
68
+ }
69
+ const metadata = {
70
+ ...createAddonMetadata(options.manifest),
71
+ ...(options.settings ? { settings: options.settings.toConfig() } : {}),
72
+ };
73
+ await fs.writeFile(path.join(outputDirectory, 'metadata.json'), `${JSON.stringify(metadata, null, 4)}\n`, 'utf8');
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { PulseSyncSettingsDefinition } from '../settings/types.js';
2
+ export type PulseSyncAddonManifest = {
3
+ readonly id: string;
4
+ readonly directoryName: string;
5
+ readonly name: string;
6
+ readonly description?: string;
7
+ readonly version: string;
8
+ readonly author?: string | readonly string[];
9
+ readonly image?: string;
10
+ readonly banner?: string;
11
+ readonly libraryLogo?: string;
12
+ readonly tags?: readonly string[];
13
+ readonly dependencies?: readonly string[];
14
+ readonly allowedUrls?: readonly string[];
15
+ readonly supportedVersions?: readonly string[];
16
+ };
17
+ export type PulseSyncAddonViteOptions = {
18
+ readonly manifest: PulseSyncAddonManifest;
19
+ readonly settings?: PulseSyncSettingsDefinition;
20
+ readonly entry?: string;
21
+ readonly staticDir?: string | false;
22
+ readonly outDir?: string;
23
+ readonly globalName?: string;
24
+ readonly minify?: boolean | 'esbuild' | 'oxc' | 'terser';
25
+ readonly sourcemap?: boolean;
26
+ readonly target?: string;
27
+ };
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vite/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAEvE,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAA;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vite/types.ts"],"names":[],"mappings":""}
package/dist/vite.d.ts CHANGED
@@ -1,31 +1,2 @@
1
- import type { Plugin } from 'vite';
2
- import type { PulseSyncSettingsDefinition } from './settings.js';
3
- export type PulseSyncAddonManifest = {
4
- readonly id: string;
5
- readonly directoryName: string;
6
- readonly name: string;
7
- readonly description?: string;
8
- readonly version: string;
9
- readonly author?: string | readonly string[];
10
- readonly image?: string;
11
- readonly banner?: string;
12
- readonly libraryLogo?: string;
13
- readonly tags?: readonly string[];
14
- readonly dependencies?: readonly string[];
15
- readonly allowedUrls?: readonly string[];
16
- readonly supportedVersions?: readonly string[];
17
- };
18
- export type PulseSyncAddonViteOptions = {
19
- readonly manifest: PulseSyncAddonManifest;
20
- readonly settings?: PulseSyncSettingsDefinition;
21
- readonly entry?: string;
22
- readonly staticDir?: string | false;
23
- readonly outDir?: string;
24
- readonly globalName?: string;
25
- readonly minify?: boolean | 'esbuild' | 'oxc' | 'terser';
26
- readonly sourcemap?: boolean;
27
- readonly target?: string;
28
- };
29
- export declare function defineAddonManifest<const T extends PulseSyncAddonManifest>(manifest: T): T;
30
- export declare function pulseSyncAddon(options: PulseSyncAddonViteOptions): Plugin;
1
+ export * from './vite/index.js';
31
2
  //# sourceMappingURL=vite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAA8B,MAAM,MAAM,CAAA;AAE9D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAEhE,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAA;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,CAAC,SAAS,sBAAsB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAE1F;AA2BD,wBAAgB,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CA8EzE"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
package/dist/vite.js CHANGED
@@ -1,98 +1,2 @@
1
- import { promises as fs } from 'node:fs';
2
- import path from 'node:path';
3
- export function defineAddonManifest(manifest) {
4
- return manifest;
5
- }
6
- function cleanManifestValue(value) {
7
- if (Array.isArray(value))
8
- return value.map(item => String(item).trim()).filter(Boolean);
9
- return typeof value === 'string' ? value.trim() : '';
10
- }
11
- function createMetadata(manifest) {
12
- return {
13
- id: manifest.id,
14
- name: manifest.name,
15
- description: manifest.description ?? '',
16
- version: manifest.version,
17
- author: cleanManifestValue(manifest.author),
18
- type: 'web-addon',
19
- image: manifest.image ?? '',
20
- banner: manifest.banner ?? '',
21
- libraryLogo: manifest.libraryLogo ?? '',
22
- css: 'script.css',
23
- script: 'script.js',
24
- tags: manifest.tags ?? [],
25
- dependencies: manifest.dependencies ?? [],
26
- allowedUrls: manifest.allowedUrls ?? [],
27
- supportedVersions: manifest.supportedVersions ?? [],
28
- };
29
- }
30
- export function pulseSyncAddon(options) {
31
- let resolvedConfig;
32
- let outputDirectory = '';
33
- return {
34
- name: 'pulsesync-addon',
35
- enforce: 'pre',
36
- config(currentConfig) {
37
- const root = path.resolve(currentConfig.root ?? process.cwd());
38
- outputDirectory = options.outDir
39
- ? path.resolve(root, options.outDir)
40
- : path.resolve(root, 'dist', options.manifest.directoryName);
41
- return {
42
- build: {
43
- target: options.target ?? 'chrome140',
44
- outDir: outputDirectory,
45
- emptyOutDir: true,
46
- minify: options.minify ?? 'oxc',
47
- sourcemap: options.sourcemap ?? false,
48
- cssCodeSplit: false,
49
- lib: {
50
- entry: path.resolve(root, options.entry ?? 'src/main.tsx'),
51
- formats: ['iife'],
52
- name: options.globalName ?? 'PulseSyncAddon',
53
- fileName: () => 'script.js',
54
- cssFileName: 'script',
55
- },
56
- rollupOptions: {
57
- external: ['react', 'react/jsx-runtime', 'react/jsx-dev-runtime'],
58
- output: {
59
- globals: {
60
- react: 'window.__PULSESYNC_WEB_HOST__.React',
61
- 'react/jsx-runtime': 'window.__PULSESYNC_WEB_HOST__.jsxRuntime',
62
- 'react/jsx-dev-runtime': 'window.__PULSESYNC_WEB_HOST__.jsxDevRuntime',
63
- },
64
- assetFileNames: assetInfo => assetInfo.names.some(name => name.endsWith('.css')) ? '[name][extname]' : 'Assets/[name][extname]',
65
- },
66
- },
67
- },
68
- };
69
- },
70
- configResolved(config) {
71
- resolvedConfig = config;
72
- outputDirectory ||= path.resolve(config.root, 'dist', options.manifest.directoryName);
73
- },
74
- resolveId(source) {
75
- if (source === 'react-dom' || source.startsWith('react-dom/')) {
76
- throw new Error('PulseSync WebHost owns the React root. Export components from defineAddon instead of importing react-dom.');
77
- }
78
- },
79
- async closeBundle() {
80
- await fs.mkdir(outputDirectory, { recursive: true });
81
- if (options.staticDir !== false) {
82
- const staticDirectory = path.resolve(resolvedConfig.root, options.staticDir ?? 'addon');
83
- try {
84
- await fs.cp(staticDirectory, outputDirectory, { recursive: true, force: true });
85
- }
86
- catch (error) {
87
- if (error.code !== 'ENOENT')
88
- throw error;
89
- }
90
- }
91
- await fs.writeFile(path.join(outputDirectory, 'metadata.json'), `${JSON.stringify({
92
- ...createMetadata(options.manifest),
93
- ...(options.settings ? { settings: options.settings.toConfig() } : {}),
94
- }, null, 4)}\n`, 'utf8');
95
- },
96
- };
97
- }
1
+ export * from './vite/index.js';
98
2
  //# sourceMappingURL=vite.js.map
package/dist/vite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "name": "@pulsesync/addon-sdk",
3
- "version": "0.1.0",
4
- "description": "Public SDK for building PulseSync WebHost addons",
3
+ "version": "0.1.2",
4
+ "description": "Official SDK for PulseSync WebHost addons",
5
+ "author": "PulseSync <contact@pulsesync.dev>",
6
+ "homepage": "https://pulsesync.dev",
5
7
  "license": "GPL-3.0-or-later",
6
8
  "type": "module",
7
9
  "sideEffects": false,
@@ -1 +0,0 @@
1
- {"version":3,"file":"defineAddon.d.ts","sourceRoot":"","sources":["../src/defineAddon.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGR,wBAAwB,EAExB,qBAAqB,EAExB,MAAM,YAAY,CAAA;AAkCnB,wBAAgB,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,wBAAwB,CAcpF;eAEc,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defineAddon.js","sourceRoot":"","sources":["../src/defineAddon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAU7D,SAAS,WAAW,CAAC,EAAU;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;IACxE,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA8B;IACpD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAErD,OAAO,CAAC,GAAsB,EAAyB,EAAE;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM,GAAG,IAAI,CAAA;QAEjB,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnB,MAAM,GAAG,KAAK,CAAA;YAEd,IAAI,CAAC;gBACD,IAAI,OAAO,OAAO,KAAK,UAAU;oBAAE,OAAO,EAAE,CAAA;YAChD,CAAC;oBAAS,CAAC;gBACP,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;QACL,CAAC,CAAA;IACL,CAAC,CAAA;AACL,CAAC;AAED,SAAS,OAAO,CAAC,OAA8B;IAC3C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAA8B;IACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,UAAU,GAA6B,MAAM,CAAC,MAAM,CAAC;QACvD,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,UAAU,EAAE,8BAA8B;QAC1C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC,CAAA;IAEF,OAAO,CAAC,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;IACnD,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,eAAe,WAAW,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE5E,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,sBAAsB,CAAC,EAAE,mBAAmB,CAAA;QAC5C,yBAAyB,CAAC,EAAE,qBAAqB,EAAE,CAAA;KACtD;CACJ;AAED,OAAO,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,KAAK,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,IAAI;IAC7C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GACtB,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,GAC/B,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAC5B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACzB,CAAC,GACF,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAClC,EAAE,CAAA;CACN,CAAC,CAAA;AAER,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,uBAAuB,IAAI;IAC1E,QAAQ,EAAE,IAAI,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;CAC7D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KACrD,EAAE,CAAA;CACN,CAAA;AAED,MAAM,MAAM,2BAA2B,CAAC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACzG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAClD,GAAG,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAChE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAoDD,wBAAgB,cAAc,CAAC,KAAK,CAAC,OAAO,SAAS,uBAAuB,EACxE,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,qBAA0B,GACpC,2BAA2B,CAAC,OAAO,CAAC,CA6BtC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAU,CAAA"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes