@pulsesync/addon-sdk 0.2.0 → 0.3.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/README.md CHANGED
@@ -82,6 +82,16 @@ export default defineAddon({
82
82
 
83
83
  `defineAddon()` привязывает настройки к идентификатору аддона. В React используйте `settings.use()` или `settings.use(['enabled'])`, а в обработчиках и lifecycle-функциях — readonly-снимок `settings.store.enabled`.
84
84
 
85
+ ## WebHost capabilities
86
+
87
+ Изолированный runtime не раскрывает внутренние объекты страницы. Для безопасной миграции аддонов используйте типизированные методы `api.pulsesyncApi`:
88
+
89
+ - `getPageEntity()` возвращает сериализованный снимок текущего альбома, плейлиста или исполнителя;
90
+ - `setTrackReplacement()` и `setTrackReplacements()` регистрируют источники подменённых треков;
91
+ - `removeTrackReplacement()` и `clearTrackReplacements()` удаляют только подмены текущего аддона.
92
+
93
+ Все capability-методы асинхронные, а WebHost автоматически очищает зарегистрированные подмены при остановке аддона.
94
+
85
95
  Передайте тот же `settings` сборщику. Схема попадёт в `metadata.json`, а пользовательские значения PulseSync сохранит отдельно. `handleEvents.json` WebHost-аддону не нужен.
86
96
 
87
97
  Поддерживаемые типы: `boolean`, `number`, `select`, `text`, `color`, `file`.
@@ -1,4 +1,4 @@
1
1
  export { default, defineAddon } from './defineAddon.js';
2
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';
3
+ export type { PulseSyncAddonApi, PulseSyncAddonCleanup, PulseSyncAddonComponent, PulseSyncAddonComponentProps, PulseSyncAddonDefinition, PulseSyncAddonFactory, PulseSyncAddonLogger, PulseSyncAddonMount, PulseSyncAddonMountTarget, PulseSyncAddonOptions, PulseSyncPageEntity, PulseSyncWebHostCapabilities, PulseSyncWebHostApi, } from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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,EACnB,4BAA4B,EAC5B,mBAAmB,GACtB,MAAM,YAAY,CAAA"}
@@ -7,9 +7,23 @@ export type PulseSyncAddonLogger = {
7
7
  warn: (...args: unknown[]) => void;
8
8
  error: (...args: unknown[]) => void;
9
9
  };
10
+ export type PulseSyncPageEntity = {
11
+ readonly revision: number;
12
+ readonly type: 'album' | 'playlist' | 'artist';
13
+ readonly entity: unknown;
14
+ };
15
+ export type PulseSyncWebHostCapabilities = {
16
+ getPageEntity: (options?: {
17
+ readonly includeArtistBrief?: boolean;
18
+ }) => Promise<PulseSyncPageEntity | null>;
19
+ setTrackReplacement: (trackId: string, url: string) => Promise<boolean>;
20
+ setTrackReplacements: (replacements: Readonly<Record<string, string>>) => Promise<number>;
21
+ removeTrackReplacement: (trackId: string) => Promise<boolean>;
22
+ clearTrackReplacements: () => Promise<boolean>;
23
+ };
10
24
  export type PulseSyncAddonApi = {
11
25
  readonly addonId: string;
12
- readonly pulsesyncApi: PulseSyncApi | undefined;
26
+ readonly pulsesyncApi: (PulseSyncApi & PulseSyncWebHostCapabilities) | undefined;
13
27
  readonly logger: PulseSyncAddonLogger;
14
28
  };
15
29
  export type PulseSyncAddonComponentProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/addon/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/addon/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pulsesync/addon-sdk",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Official SDK for PulseSync WebHost addons",
5
5
  "author": "PulseSync <contact@pulsesync.dev>",
6
6
  "homepage": "https://pulsesync.dev",