@dxos/plugin-youtube 0.8.3 → 0.8.4-main.74a063c4e0

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 (156) hide show
  1. package/dist/lib/browser/blueprints/index.mjs +49 -8
  2. package/dist/lib/browser/blueprints/index.mjs.map +4 -4
  3. package/dist/lib/browser/{chunk-C26XKDK2.mjs → chunk-FEQD5TPI.mjs} +4 -4
  4. package/dist/lib/browser/{chunk-C26XKDK2.mjs.map → chunk-FEQD5TPI.mjs.map} +2 -2
  5. package/dist/lib/browser/{chunk-P67QEKBQ.mjs → chunk-GIRFSTHR.mjs} +6 -8
  6. package/dist/lib/browser/chunk-GIRFSTHR.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-GTIWG45H.mjs +157 -0
  8. package/dist/lib/browser/chunk-GTIWG45H.mjs.map +7 -0
  9. package/dist/lib/browser/{clear-synced-videos-EVMJIZPD.mjs → clear-synced-videos-NZIWAVGL.mjs} +7 -8
  10. package/dist/lib/browser/clear-synced-videos-NZIWAVGL.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +86 -81
  12. package/dist/lib/browser/index.mjs.map +4 -4
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{sync-423Q4BDD.mjs → sync-T34US6NO.mjs} +18 -19
  15. package/dist/lib/browser/sync-T34US6NO.mjs.map +7 -0
  16. package/dist/lib/browser/types/index.mjs +2 -4
  17. package/dist/lib/node-esm/blueprints/index.mjs +49 -8
  18. package/dist/lib/node-esm/blueprints/index.mjs.map +4 -4
  19. package/dist/lib/node-esm/{chunk-JSGRZMG3.mjs → chunk-A3SKNJFU.mjs} +6 -8
  20. package/dist/lib/node-esm/chunk-A3SKNJFU.mjs.map +7 -0
  21. package/dist/lib/node-esm/{chunk-JM5SBBP5.mjs → chunk-Q3TVMR5B.mjs} +4 -4
  22. package/dist/lib/node-esm/{chunk-JM5SBBP5.mjs.map → chunk-Q3TVMR5B.mjs.map} +2 -2
  23. package/dist/lib/node-esm/chunk-YOE54ALJ.mjs +158 -0
  24. package/dist/lib/node-esm/chunk-YOE54ALJ.mjs.map +7 -0
  25. package/dist/lib/node-esm/{clear-synced-videos-5UCH6XHL.mjs → clear-synced-videos-ZX7KBPGS.mjs} +7 -8
  26. package/dist/lib/{browser/clear-synced-videos-EVMJIZPD.mjs.map → node-esm/clear-synced-videos-ZX7KBPGS.mjs.map} +2 -2
  27. package/dist/lib/node-esm/index.mjs +86 -81
  28. package/dist/lib/node-esm/index.mjs.map +4 -4
  29. package/dist/lib/node-esm/meta.json +1 -1
  30. package/dist/lib/node-esm/{sync-CEF5DX2J.mjs → sync-RQYQ5LII.mjs} +18 -19
  31. package/dist/lib/node-esm/sync-RQYQ5LII.mjs.map +7 -0
  32. package/dist/lib/node-esm/types/index.mjs +2 -4
  33. package/dist/types/src/YouTubePlugin.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  35. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/index.d.ts +5 -3
  37. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  38. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  39. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  40. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  41. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts +1 -1
  42. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts.map +1 -1
  43. package/dist/types/src/containers/ChannelArticle/index.d.ts +1 -2
  44. package/dist/types/src/containers/ChannelArticle/index.d.ts.map +1 -1
  45. package/dist/types/src/containers/ChannelSettings/index.d.ts +1 -2
  46. package/dist/types/src/containers/ChannelSettings/index.d.ts.map +1 -1
  47. package/dist/types/src/containers/VideoArticle/VideoArticle.d.ts +2 -7
  48. package/dist/types/src/containers/VideoArticle/VideoArticle.d.ts.map +1 -1
  49. package/dist/types/src/containers/VideoArticle/index.d.ts +1 -2
  50. package/dist/types/src/containers/VideoArticle/index.d.ts.map +1 -1
  51. package/dist/types/src/containers/VideoCard/VideoCard.d.ts +2 -2
  52. package/dist/types/src/containers/VideoCard/VideoCard.d.ts.map +1 -1
  53. package/dist/types/src/containers/VideoCard/index.d.ts +1 -2
  54. package/dist/types/src/containers/VideoCard/index.d.ts.map +1 -1
  55. package/dist/types/src/operations/apis/youtube/api.d.ts.map +1 -1
  56. package/dist/types/src/operations/clear-synced-videos.d.ts.map +1 -1
  57. package/dist/types/src/operations/definitions.d.ts +9 -5
  58. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  59. package/dist/types/src/operations/sync.d.ts.map +1 -1
  60. package/dist/types/src/translations.d.ts +38 -38
  61. package/dist/types/src/translations.d.ts.map +1 -1
  62. package/dist/types/src/types/Channel.d.ts +28 -3
  63. package/dist/types/src/types/Channel.d.ts.map +1 -1
  64. package/dist/types/src/types/Video.d.ts +22 -0
  65. package/dist/types/src/types/Video.d.ts.map +1 -1
  66. package/dist/types/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +48 -40
  68. package/src/YouTubePlugin.tsx +12 -6
  69. package/src/blueprints/youtube.ts +1 -1
  70. package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +29 -33
  71. package/src/capabilities/{blueprint-definition/blueprint-definition.ts → blueprint-definition.ts} +1 -1
  72. package/src/capabilities/index.ts +7 -4
  73. package/src/capabilities/migrations.ts +35 -0
  74. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +16 -18
  75. package/src/containers/ChannelArticle/ChannelArticle.tsx +1 -1
  76. package/src/containers/ChannelArticle/index.ts +1 -3
  77. package/src/containers/ChannelSettings/index.ts +1 -3
  78. package/src/containers/VideoArticle/VideoArticle.tsx +2 -7
  79. package/src/containers/VideoArticle/index.ts +1 -3
  80. package/src/containers/VideoCard/VideoCard.tsx +2 -2
  81. package/src/containers/VideoCard/index.ts +1 -3
  82. package/src/operations/apis/youtube/api.ts +0 -1
  83. package/src/operations/clear-synced-videos.ts +0 -1
  84. package/src/operations/definitions.ts +3 -3
  85. package/src/operations/sync.ts +0 -1
  86. package/src/translations.ts +38 -38
  87. package/src/types/Channel.ts +18 -1
  88. package/src/types/Video.ts +25 -1
  89. package/dist/lib/browser/ChannelArticle-CDQR4BBY.mjs +0 -90
  90. package/dist/lib/browser/ChannelArticle-CDQR4BBY.mjs.map +0 -7
  91. package/dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs +0 -28
  92. package/dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs.map +0 -7
  93. package/dist/lib/browser/VideoArticle-FC4A6E7B.mjs +0 -76
  94. package/dist/lib/browser/VideoArticle-FC4A6E7B.mjs.map +0 -7
  95. package/dist/lib/browser/VideoCard-CCPXDCB7.mjs +0 -64
  96. package/dist/lib/browser/VideoCard-CCPXDCB7.mjs.map +0 -7
  97. package/dist/lib/browser/app-graph-builder-MJY6A6SN.mjs +0 -195
  98. package/dist/lib/browser/app-graph-builder-MJY6A6SN.mjs.map +0 -7
  99. package/dist/lib/browser/blueprint-definition-FRYUYJ22.mjs +0 -22
  100. package/dist/lib/browser/blueprint-definition-FRYUYJ22.mjs.map +0 -7
  101. package/dist/lib/browser/chunk-DFRSBBSO.mjs +0 -21
  102. package/dist/lib/browser/chunk-DFRSBBSO.mjs.map +0 -7
  103. package/dist/lib/browser/chunk-GFRR4TTX.mjs +0 -72
  104. package/dist/lib/browser/chunk-GFRR4TTX.mjs.map +0 -7
  105. package/dist/lib/browser/chunk-MUE22YUM.mjs +0 -57
  106. package/dist/lib/browser/chunk-MUE22YUM.mjs.map +0 -7
  107. package/dist/lib/browser/chunk-P67QEKBQ.mjs.map +0 -7
  108. package/dist/lib/browser/chunk-YMDT37TA.mjs +0 -62
  109. package/dist/lib/browser/chunk-YMDT37TA.mjs.map +0 -7
  110. package/dist/lib/browser/chunk-Z3DGTMKC.mjs +0 -8
  111. package/dist/lib/browser/chunk-Z3DGTMKC.mjs.map +0 -7
  112. package/dist/lib/browser/react-surface-EDA5VYDC.mjs +0 -77
  113. package/dist/lib/browser/react-surface-EDA5VYDC.mjs.map +0 -7
  114. package/dist/lib/browser/sync-423Q4BDD.mjs.map +0 -7
  115. package/dist/lib/node-esm/ChannelArticle-GQ64BO7V.mjs +0 -91
  116. package/dist/lib/node-esm/ChannelArticle-GQ64BO7V.mjs.map +0 -7
  117. package/dist/lib/node-esm/ChannelSettings-DM2HWNKO.mjs +0 -29
  118. package/dist/lib/node-esm/ChannelSettings-DM2HWNKO.mjs.map +0 -7
  119. package/dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs +0 -77
  120. package/dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs.map +0 -7
  121. package/dist/lib/node-esm/VideoCard-FOWQZK75.mjs +0 -65
  122. package/dist/lib/node-esm/VideoCard-FOWQZK75.mjs.map +0 -7
  123. package/dist/lib/node-esm/app-graph-builder-IU5TBAXN.mjs +0 -196
  124. package/dist/lib/node-esm/app-graph-builder-IU5TBAXN.mjs.map +0 -7
  125. package/dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs +0 -23
  126. package/dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs.map +0 -7
  127. package/dist/lib/node-esm/chunk-5KNC2JMP.mjs +0 -58
  128. package/dist/lib/node-esm/chunk-5KNC2JMP.mjs.map +0 -7
  129. package/dist/lib/node-esm/chunk-6BUJ2DQX.mjs +0 -73
  130. package/dist/lib/node-esm/chunk-6BUJ2DQX.mjs.map +0 -7
  131. package/dist/lib/node-esm/chunk-CX6MV3QM.mjs +0 -23
  132. package/dist/lib/node-esm/chunk-CX6MV3QM.mjs.map +0 -7
  133. package/dist/lib/node-esm/chunk-CZSLL3XQ.mjs +0 -63
  134. package/dist/lib/node-esm/chunk-CZSLL3XQ.mjs.map +0 -7
  135. package/dist/lib/node-esm/chunk-JSGRZMG3.mjs.map +0 -7
  136. package/dist/lib/node-esm/chunk-M4S6BE47.mjs +0 -10
  137. package/dist/lib/node-esm/chunk-M4S6BE47.mjs.map +0 -7
  138. package/dist/lib/node-esm/clear-synced-videos-5UCH6XHL.mjs.map +0 -7
  139. package/dist/lib/node-esm/react-surface-5DJAQPHJ.mjs +0 -78
  140. package/dist/lib/node-esm/react-surface-5DJAQPHJ.mjs.map +0 -7
  141. package/dist/lib/node-esm/sync-CEF5DX2J.mjs.map +0 -7
  142. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  143. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  144. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  145. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  146. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  147. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  148. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  149. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  150. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  151. package/src/capabilities/app-graph-builder/index.ts +0 -7
  152. package/src/capabilities/blueprint-definition/index.ts +0 -7
  153. package/src/capabilities/react-surface/index.ts +0 -7
  154. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  155. /package/dist/types/src/capabilities/{blueprint-definition/blueprint-definition.d.ts → blueprint-definition.d.ts} +0 -0
  156. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
@@ -0,0 +1,158 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ __export
4
+ } from "./chunk-HSLMI22Q.mjs";
5
+
6
+ // src/types/types.ts
7
+ var YouTubeOperation = {};
8
+
9
+ // src/types/Channel.ts
10
+ var Channel_exports = {};
11
+ __export(Channel_exports, {
12
+ CreateYouTubeChannelSchema: () => CreateYouTubeChannelSchema,
13
+ LegacyYouTubeChannel: () => LegacyYouTubeChannel,
14
+ YouTubeChannel: () => YouTubeChannel,
15
+ instanceOf: () => instanceOf,
16
+ make: () => make
17
+ });
18
+ import * as Schema from "effect/Schema";
19
+ import { Annotation, Feed, Obj, Ref, Type } from "@dxos/echo";
20
+ import { FormInputAnnotation } from "@dxos/echo/internal";
21
+ import { FeedAnnotation } from "@dxos/schema";
22
+ import { AccessToken } from "@dxos/types";
23
+ var LegacyYouTubeChannel = Schema.Struct({
24
+ name: Schema.String.pipe(Schema.optional),
25
+ channelId: Schema.String.pipe(Schema.optional),
26
+ channelUrl: Schema.String.pipe(Schema.optional),
27
+ feed: Ref.Ref(Feed.Feed),
28
+ lastSyncedAt: Schema.String.pipe(Schema.optional),
29
+ accessToken: Schema.optional(Ref.Ref(AccessToken.AccessToken))
30
+ }).pipe(Type.object({
31
+ typename: "org.dxos.type.youtube-channel",
32
+ version: "0.1.0"
33
+ }));
34
+ var YouTubeChannel = Schema.Struct({
35
+ /** Display name for the channel. */
36
+ name: Schema.String.pipe(Schema.optional),
37
+ /** YouTube channel ID (e.g., UC...). */
38
+ channelId: Schema.String.pipe(Schema.optional),
39
+ /** YouTube channel URL or handle. */
40
+ channelUrl: Schema.String.pipe(Schema.optional),
41
+ /** Feed containing YouTubeVideo objects. */
42
+ feed: Ref.Ref(Feed.Feed).pipe(FormInputAnnotation.set(false)),
43
+ /** Last sync timestamp. */
44
+ lastSyncedAt: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),
45
+ /** Google API credentials for fetching channel data. */
46
+ accessToken: Schema.optional(Ref.Ref(AccessToken.AccessToken).annotations({
47
+ title: "Account",
48
+ description: "Google account credentials for syncing this YouTube channel."
49
+ }))
50
+ }).pipe(Type.object({
51
+ typename: "org.dxos.type.youtubeChannel",
52
+ version: "0.1.0"
53
+ }), Annotation.IconAnnotation.set({
54
+ icon: "ph--youtube-logo--regular",
55
+ hue: "red"
56
+ }), FeedAnnotation.set(true));
57
+ var instanceOf = (value) => Obj.instanceOf(YouTubeChannel, value);
58
+ var CreateYouTubeChannelSchema = Schema.Struct({
59
+ name: Schema.optional(Schema.String.annotations({
60
+ title: "Name"
61
+ })),
62
+ channelUrl: Schema.optional(Schema.String.annotations({
63
+ title: "Channel URL",
64
+ description: "YouTube channel URL, handle (e.g., @channelname), or channel ID."
65
+ })),
66
+ accessToken: Schema.optional(Ref.Ref(AccessToken.AccessToken).annotations({
67
+ title: "Account",
68
+ description: "Google account credentials for syncing this YouTube channel."
69
+ }))
70
+ });
71
+ var make = (props = {}) => {
72
+ const feed = Feed.make();
73
+ const channel = Obj.make(YouTubeChannel, {
74
+ feed: Ref.make(feed),
75
+ ...props
76
+ });
77
+ Obj.setParent(feed, channel);
78
+ return channel;
79
+ };
80
+
81
+ // src/types/Video.ts
82
+ var Video_exports = {};
83
+ __export(Video_exports, {
84
+ LegacyYouTubeVideo: () => LegacyYouTubeVideo,
85
+ TranscriptSegment: () => TranscriptSegment,
86
+ YouTubeVideo: () => YouTubeVideo,
87
+ instanceOf: () => instanceOf2
88
+ });
89
+ import * as Schema2 from "effect/Schema";
90
+ import { Annotation as Annotation2, Obj as Obj2, Type as Type2 } from "@dxos/echo";
91
+ var TranscriptSegment = Schema2.Struct({
92
+ /** Transcript text. */
93
+ text: Schema2.String,
94
+ /** Start time in seconds. */
95
+ offset: Schema2.Number,
96
+ /** Duration in seconds. */
97
+ duration: Schema2.Number
98
+ });
99
+ var LegacyYouTubeVideo = Schema2.Struct({
100
+ title: Schema2.String,
101
+ videoId: Schema2.String,
102
+ description: Schema2.String.pipe(Schema2.optional),
103
+ url: Schema2.String,
104
+ thumbnailUrl: Schema2.String.pipe(Schema2.optional),
105
+ channelTitle: Schema2.String.pipe(Schema2.optional),
106
+ publishedAt: Schema2.String,
107
+ duration: Schema2.String.pipe(Schema2.optional),
108
+ viewCount: Schema2.Number.pipe(Schema2.optional),
109
+ likeCount: Schema2.Number.pipe(Schema2.optional),
110
+ transcript: Schema2.String.pipe(Schema2.optional),
111
+ transcriptSegments: Schema2.Array(TranscriptSegment).pipe(Schema2.optional),
112
+ transcriptFetched: Schema2.Boolean.pipe(Schema2.optional)
113
+ }).pipe(Type2.object({
114
+ typename: "org.dxos.type.youtube-video",
115
+ version: "0.1.0"
116
+ }));
117
+ var YouTubeVideo = Schema2.Struct({
118
+ /** Video title. */
119
+ title: Schema2.String,
120
+ /** YouTube video ID. */
121
+ videoId: Schema2.String,
122
+ /** Video description. */
123
+ description: Schema2.String.pipe(Schema2.optional),
124
+ /** Video URL. */
125
+ url: Schema2.String,
126
+ /** Thumbnail URL. */
127
+ thumbnailUrl: Schema2.String.pipe(Schema2.optional),
128
+ /** Channel name. */
129
+ channelTitle: Schema2.String.pipe(Schema2.optional),
130
+ /** Published date as ISO string. */
131
+ publishedAt: Schema2.String,
132
+ /** Video duration in ISO 8601 format (e.g., PT1H30M15S). */
133
+ duration: Schema2.String.pipe(Schema2.optional),
134
+ /** View count. */
135
+ viewCount: Schema2.Number.pipe(Schema2.optional),
136
+ /** Like count. */
137
+ likeCount: Schema2.Number.pipe(Schema2.optional),
138
+ /** Full transcript text. */
139
+ transcript: Schema2.String.pipe(Schema2.optional),
140
+ /** Transcript segments with timestamps. */
141
+ transcriptSegments: Schema2.Array(TranscriptSegment).pipe(Schema2.optional),
142
+ /** True when transcript text was successfully loaded; false when disabled or none available. */
143
+ transcriptFetched: Schema2.Boolean.pipe(Schema2.optional)
144
+ }).pipe(Type2.object({
145
+ typename: "org.dxos.type.youtubeVideo",
146
+ version: "0.1.0"
147
+ }), Annotation2.IconAnnotation.set({
148
+ icon: "ph--play--regular",
149
+ hue: "red"
150
+ }));
151
+ var instanceOf2 = (value) => Obj2.instanceOf(YouTubeVideo, value);
152
+
153
+ export {
154
+ YouTubeOperation,
155
+ Channel_exports,
156
+ Video_exports
157
+ };
158
+ //# sourceMappingURL=chunk-YOE54ALJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/types.ts", "../../../src/types/Channel.ts", "../../../src/types/Video.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\n/**\n * YouTube plugin operations (placeholder for future expansion).\n */\nexport const YouTubeOperation = {\n // Operations will be defined here when needed.\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, Feed, Obj, Ref, Type } from '@dxos/echo';\nimport { FormInputAnnotation } from '@dxos/echo/internal';\nimport { FeedAnnotation } from '@dxos/schema';\nimport { AccessToken } from '@dxos/types';\n\n// @import-as-namespace\n\n/** @deprecated Use YouTubeChannel instead. */\nexport const LegacyYouTubeChannel = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n channelId: Schema.String.pipe(Schema.optional),\n channelUrl: Schema.String.pipe(Schema.optional),\n feed: Ref.Ref(Feed.Feed),\n lastSyncedAt: Schema.String.pipe(Schema.optional),\n accessToken: Schema.optional(Ref.Ref(AccessToken.AccessToken)),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.youtube-channel',\n version: '0.1.0',\n }),\n);\n\nexport interface LegacyYouTubeChannel extends Schema.Schema.Type<typeof LegacyYouTubeChannel> {}\n\n/**\n * YouTubeChannel schema representing a YouTube channel to sync videos from.\n */\nexport const YouTubeChannel = Schema.Struct({\n /** Display name for the channel. */\n name: Schema.String.pipe(Schema.optional),\n /** YouTube channel ID (e.g., UC...). */\n channelId: Schema.String.pipe(Schema.optional),\n /** YouTube channel URL or handle. */\n channelUrl: Schema.String.pipe(Schema.optional),\n /** Feed containing YouTubeVideo objects. */\n feed: Ref.Ref(Feed.Feed).pipe(FormInputAnnotation.set(false)),\n /** Last sync timestamp. */\n lastSyncedAt: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),\n /** Google API credentials for fetching channel data. */\n accessToken: Schema.optional(\n Ref.Ref(AccessToken.AccessToken).annotations({\n title: 'Account',\n description: 'Google account credentials for syncing this YouTube channel.',\n }),\n ),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.youtubeChannel',\n version: '0.1.0',\n }),\n Annotation.IconAnnotation.set({\n icon: 'ph--youtube-logo--regular',\n hue: 'red',\n }),\n FeedAnnotation.set(true),\n);\n\nexport interface YouTubeChannel extends Schema.Schema.Type<typeof YouTubeChannel> {}\n\n/** Checks if a value is a YouTubeChannel object. */\nexport const instanceOf = (value: unknown): value is YouTubeChannel => Obj.instanceOf(YouTubeChannel, value);\n\nexport const CreateYouTubeChannelSchema = Schema.Struct({\n name: Schema.optional(Schema.String.annotations({ title: 'Name' })),\n channelUrl: Schema.optional(\n Schema.String.annotations({\n title: 'Channel URL',\n description: 'YouTube channel URL, handle (e.g., @channelname), or channel ID.',\n }),\n ),\n accessToken: Schema.optional(\n Ref.Ref(AccessToken.AccessToken).annotations({\n title: 'Account',\n description: 'Google account credentials for syncing this YouTube channel.',\n }),\n ),\n});\nexport interface CreateYouTubeChannelSchema extends Schema.Schema.Type<typeof CreateYouTubeChannelSchema> {}\n\ntype YouTubeChannelProps = Omit<Obj.MakeProps<typeof YouTubeChannel>, 'feed' | 'lastSyncedAt'>;\n\n/** Creates a YouTubeChannel object with a backing feed. */\nexport const make = (props: YouTubeChannelProps = {}) => {\n const feed = Feed.make();\n const channel = Obj.make(YouTubeChannel, {\n feed: Ref.make(feed),\n ...props,\n });\n Obj.setParent(feed, channel);\n return channel;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, Obj, Type } from '@dxos/echo';\n\n/**\n * Transcript segment from a YouTube video.\n */\nexport const TranscriptSegment = Schema.Struct({\n /** Transcript text. */\n text: Schema.String,\n /** Start time in seconds. */\n offset: Schema.Number,\n /** Duration in seconds. */\n duration: Schema.Number,\n});\n\nexport type TranscriptSegment = Schema.Schema.Type<typeof TranscriptSegment>;\n\n/** @deprecated Use YouTubeVideo instead. */\nexport const LegacyYouTubeVideo = Schema.Struct({\n title: Schema.String,\n videoId: Schema.String,\n description: Schema.String.pipe(Schema.optional),\n url: Schema.String,\n thumbnailUrl: Schema.String.pipe(Schema.optional),\n channelTitle: Schema.String.pipe(Schema.optional),\n publishedAt: Schema.String,\n duration: Schema.String.pipe(Schema.optional),\n viewCount: Schema.Number.pipe(Schema.optional),\n likeCount: Schema.Number.pipe(Schema.optional),\n transcript: Schema.String.pipe(Schema.optional),\n transcriptSegments: Schema.Array(TranscriptSegment).pipe(Schema.optional),\n transcriptFetched: Schema.Boolean.pipe(Schema.optional),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.youtube-video',\n version: '0.1.0',\n }),\n);\n\nexport interface LegacyYouTubeVideo extends Schema.Schema.Type<typeof LegacyYouTubeVideo> {}\n\n/**\n * YouTubeVideo schema representing a video from a YouTube channel.\n */\nexport const YouTubeVideo = Schema.Struct({\n /** Video title. */\n title: Schema.String,\n /** YouTube video ID. */\n videoId: Schema.String,\n /** Video description. */\n description: Schema.String.pipe(Schema.optional),\n /** Video URL. */\n url: Schema.String,\n /** Thumbnail URL. */\n thumbnailUrl: Schema.String.pipe(Schema.optional),\n /** Channel name. */\n channelTitle: Schema.String.pipe(Schema.optional),\n /** Published date as ISO string. */\n publishedAt: Schema.String,\n /** Video duration in ISO 8601 format (e.g., PT1H30M15S). */\n duration: Schema.String.pipe(Schema.optional),\n /** View count. */\n viewCount: Schema.Number.pipe(Schema.optional),\n /** Like count. */\n likeCount: Schema.Number.pipe(Schema.optional),\n /** Full transcript text. */\n transcript: Schema.String.pipe(Schema.optional),\n /** Transcript segments with timestamps. */\n transcriptSegments: Schema.Array(TranscriptSegment).pipe(Schema.optional),\n /** True when transcript text was successfully loaded; false when disabled or none available. */\n transcriptFetched: Schema.Boolean.pipe(Schema.optional),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.youtubeVideo',\n version: '0.1.0',\n }),\n Annotation.IconAnnotation.set({\n icon: 'ph--play--regular',\n hue: 'red',\n }),\n);\n\nexport interface YouTubeVideo extends Schema.Schema.Type<typeof YouTubeVideo> {}\n\n/** Checks if a value is a YouTubeVideo object. */\nexport const instanceOf = (value: unknown): value is YouTubeVideo => Obj.instanceOf(YouTubeVideo, value);\n"],
5
+ "mappings": "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",
6
+ "names": ["YouTubeOperation", "Schema", "Annotation", "Feed", "Obj", "Ref", "Type", "FormInputAnnotation", "FeedAnnotation", "AccessToken", "LegacyYouTubeChannel", "Struct", "name", "String", "pipe", "optional", "channelId", "channelUrl", "feed", "Ref", "Feed", "lastSyncedAt", "accessToken", "AccessToken", "Type", "object", "typename", "version", "YouTubeChannel", "FormInputAnnotation", "set", "annotations", "title", "description", "Annotation", "IconAnnotation", "icon", "hue", "FeedAnnotation", "instanceOf", "value", "Obj", "CreateYouTubeChannelSchema", "make", "props", "channel", "setParent", "instanceOf", "Schema", "Annotation", "Obj", "Type", "TranscriptSegment", "Struct", "text", "String", "offset", "Number", "duration", "LegacyYouTubeVideo", "title", "videoId", "description", "pipe", "optional", "url", "thumbnailUrl", "channelTitle", "publishedAt", "viewCount", "likeCount", "transcript", "transcriptSegments", "Array", "transcriptFetched", "Boolean", "Type", "object", "typename", "version", "YouTubeVideo", "Annotation", "IconAnnotation", "set", "icon", "hue", "instanceOf", "value", "Obj"]
7
+ }
@@ -1,11 +1,10 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ClearSyncedVideos
4
- } from "./chunk-JSGRZMG3.mjs";
5
- import "./chunk-6BUJ2DQX.mjs";
4
+ } from "./chunk-A3SKNJFU.mjs";
6
5
  import {
7
6
  Video_exports
8
- } from "./chunk-CZSLL3XQ.mjs";
7
+ } from "./chunk-YOE54ALJ.mjs";
9
8
  import "./chunk-HSLMI22Q.mjs";
10
9
 
11
10
  // src/operations/clear-synced-videos.ts
@@ -13,13 +12,13 @@ import * as Effect from "effect/Effect";
13
12
  import { Database, Feed, Filter, Obj, Ref } from "@dxos/echo";
14
13
  import { log } from "@dxos/log";
15
14
  import { Operation } from "@dxos/operation";
16
- var __dxlog_file = "/Users/mykola/dev/dxos/packages/plugins/plugin-youtube/src/operations/clear-synced-videos.ts";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-youtube/src/operations/clear-synced-videos.ts";
17
16
  var handler = ClearSyncedVideos.pipe(Operation.withHandler(({ channel: channelRef }) => Effect.gen(function* () {
18
17
  log("clearing youtube channel synced videos", {
19
18
  channel: channelRef.dxn.toString()
20
19
  }, {
21
20
  F: __dxlog_file,
22
- L: 18,
21
+ L: 17,
23
22
  S: this,
24
23
  C: (f, a) => f(...a)
25
24
  });
@@ -30,7 +29,7 @@ var handler = ClearSyncedVideos.pipe(Operation.withHandler(({ channel: channelRe
30
29
  count: videos.length
31
30
  }, {
32
31
  F: __dxlog_file,
33
- L: 23,
32
+ L: 22,
34
33
  S: this,
35
34
  C: (f, a) => f(...a)
36
35
  });
@@ -52,7 +51,7 @@ var handler = ClearSyncedVideos.pipe(Operation.withHandler(({ channel: channelRe
52
51
  removedVideos: videos.length
53
52
  }, {
54
53
  F: __dxlog_file,
55
- L: 44,
54
+ L: 43,
56
55
  S: this,
57
56
  C: (f, a) => f(...a)
58
57
  });
@@ -64,4 +63,4 @@ var clear_synced_videos_default = handler;
64
63
  export {
65
64
  clear_synced_videos_default as default
66
65
  };
67
- //# sourceMappingURL=clear-synced-videos-5UCH6XHL.mjs.map
66
+ //# sourceMappingURL=clear-synced-videos-ZX7KBPGS.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/operations/clear-synced-videos.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Database, Feed, Filter, Obj, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\n\nimport { Channel, Video } from '../types';\n\nimport { ClearSyncedVideos } from './definitions';\n\nconst handler: Operation.WithHandler<typeof ClearSyncedVideos> = ClearSyncedVideos.pipe(\n Operation.withHandler(({ channel: channelRef }) =>\n Effect.gen(function* () {\n log('clearing youtube channel synced videos', { channel: channelRef.dxn.toString() });\n const channel = (yield* Database.load(channelRef)) as Channel.YouTubeChannel;\n const oldFeed = yield* Database.load(channel.feed as Ref.Ref<Feed.Feed>);\n\n const videos = yield* Feed.runQuery(oldFeed, Filter.type(Video.YouTubeVideo));\n log('removing synced videos', { count: videos.length });\n\n const newFeed = Feed.make();\n yield* Database.add(newFeed);\n Obj.setParent(newFeed, channel);\n\n Obj.change(channel, (mutable) => {\n mutable.feed = Ref.make(newFeed);\n delete mutable.lastSyncedAt;\n });\n\n if (videos.length > 0) {\n yield* Feed.remove(oldFeed, videos);\n }\n\n for (const video of videos) {\n yield* Database.remove(video);\n }\n\n yield* Database.remove(oldFeed);\n\n log('replaced youtube channel feed', { removedVideos: videos.length });\n return { removedVideos: videos.length };\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,UAAUC,MAAMC,QAAQC,KAAKC,WAAW;AACjD,SAASC,WAAW;AACpB,SAASC,iBAAiB;;AAM1B,IAAMC,UAA2DC,kBAAkBC,KACjFC,UAAUC,YAAY,CAAC,EAAEC,SAASC,WAAU,MACnCC,WAAI,aAAA;AACTC,MAAI,0CAA0C;IAAEH,SAASC,WAAWG,IAAIC,SAAQ;EAAG,GAAA;;;;;;AACnF,QAAML,UAAW,OAAOM,SAASC,KAAKN,UAAAA;AACtC,QAAMO,UAAU,OAAOF,SAASC,KAAKP,QAAQS,IAAI;AAEjD,QAAMC,SAAS,OAAOC,KAAKC,SAASJ,SAASK,OAAOC,KAAKC,cAAMC,YAAY,CAAA;AAC3Eb,MAAI,0BAA0B;IAAEc,OAAOP,OAAOQ;EAAO,GAAA;;;;;;AAErD,QAAMC,UAAUR,KAAKS,KAAI;AACzB,SAAOd,SAASe,IAAIF,OAAAA;AACpBG,MAAIC,UAAUJ,SAASnB,OAAAA;AAEvBsB,MAAIE,OAAOxB,SAAS,CAACyB,YAAAA;AACnBA,YAAQhB,OAAOiB,IAAIN,KAAKD,OAAAA;AACxB,WAAOM,QAAQE;EACjB,CAAA;AAEA,MAAIjB,OAAOQ,SAAS,GAAG;AACrB,WAAOP,KAAKiB,OAAOpB,SAASE,MAAAA;EAC9B;AAEA,aAAWmB,SAASnB,QAAQ;AAC1B,WAAOJ,SAASsB,OAAOC,KAAAA;EACzB;AAEA,SAAOvB,SAASsB,OAAOpB,OAAAA;AAEvBL,MAAI,iCAAiC;IAAE2B,eAAepB,OAAOQ;EAAO,GAAA;;;;;;AACpE,SAAO;IAAEY,eAAepB,OAAOQ;EAAO;AACxC,CAAA,CAAA,CAAA;AAIJ,IAAA,8BAAevB;",
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Database, Feed, Filter, Obj, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\n\nimport { Channel, Video } from '../types';\nimport { ClearSyncedVideos } from './definitions';\n\nconst handler: Operation.WithHandler<typeof ClearSyncedVideos> = ClearSyncedVideos.pipe(\n Operation.withHandler(({ channel: channelRef }) =>\n Effect.gen(function* () {\n log('clearing youtube channel synced videos', { channel: channelRef.dxn.toString() });\n const channel = (yield* Database.load(channelRef)) as Channel.YouTubeChannel;\n const oldFeed = yield* Database.load(channel.feed as Ref.Ref<Feed.Feed>);\n\n const videos = yield* Feed.runQuery(oldFeed, Filter.type(Video.YouTubeVideo));\n log('removing synced videos', { count: videos.length });\n\n const newFeed = Feed.make();\n yield* Database.add(newFeed);\n Obj.setParent(newFeed, channel);\n\n Obj.change(channel, (mutable) => {\n mutable.feed = Ref.make(newFeed);\n delete mutable.lastSyncedAt;\n });\n\n if (videos.length > 0) {\n yield* Feed.remove(oldFeed, videos);\n }\n\n for (const video of videos) {\n yield* Database.remove(video);\n }\n\n yield* Database.remove(oldFeed);\n\n log('replaced youtube channel feed', { removedVideos: videos.length });\n return { removedVideos: videos.length };\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,UAAUC,MAAMC,QAAQC,KAAKC,WAAW;AACjD,SAASC,WAAW;AACpB,SAASC,iBAAiB;;AAK1B,IAAMC,UAA2DC,kBAAkBC,KACjFC,UAAUC,YAAY,CAAC,EAAEC,SAASC,WAAU,MACnCC,WAAI,aAAA;AACTC,MAAI,0CAA0C;IAAEH,SAASC,WAAWG,IAAIC,SAAQ;EAAG,GAAA;;;;;;AACnF,QAAML,UAAW,OAAOM,SAASC,KAAKN,UAAAA;AACtC,QAAMO,UAAU,OAAOF,SAASC,KAAKP,QAAQS,IAAI;AAEjD,QAAMC,SAAS,OAAOC,KAAKC,SAASJ,SAASK,OAAOC,KAAKC,cAAMC,YAAY,CAAA;AAC3Eb,MAAI,0BAA0B;IAAEc,OAAOP,OAAOQ;EAAO,GAAA;;;;;;AAErD,QAAMC,UAAUR,KAAKS,KAAI;AACzB,SAAOd,SAASe,IAAIF,OAAAA;AACpBG,MAAIC,UAAUJ,SAASnB,OAAAA;AAEvBsB,MAAIE,OAAOxB,SAAS,CAACyB,YAAAA;AACnBA,YAAQhB,OAAOiB,IAAIN,KAAKD,OAAAA;AACxB,WAAOM,QAAQE;EACjB,CAAA;AAEA,MAAIjB,OAAOQ,SAAS,GAAG;AACrB,WAAOP,KAAKiB,OAAOpB,SAASE,MAAAA;EAC9B;AAEA,aAAWmB,SAASnB,QAAQ;AAC1B,WAAOJ,SAASsB,OAAOC,KAAAA;EACzB;AAEA,SAAOvB,SAASsB,OAAOpB,OAAAA;AAEvBL,MAAI,iCAAiC;IAAE2B,eAAepB,OAAOQ;EAAO,GAAA;;;;;;AACpE,SAAO;IAAEY,eAAepB,OAAOQ;EAAO;AACxC,CAAA,CAAA,CAAA;AAIJ,IAAA,8BAAevB;",
6
6
  "names": ["Effect", "Database", "Feed", "Filter", "Obj", "Ref", "log", "Operation", "handler", "ClearSyncedVideos", "pipe", "Operation", "withHandler", "channel", "channelRef", "gen", "log", "dxn", "toString", "Database", "load", "oldFeed", "feed", "videos", "Feed", "runQuery", "Filter", "type", "Video", "YouTubeVideo", "count", "length", "newFeed", "make", "add", "Obj", "setParent", "change", "mutable", "Ref", "lastSyncedAt", "remove", "video", "removedVideos"]
7
7
  }
@@ -1,28 +1,35 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- meta
4
- } from "./chunk-CX6MV3QM.mjs";
5
- import {
6
- youtube_default
7
- } from "./chunk-5KNC2JMP.mjs";
8
- import {
9
- YouTubeHandlers
10
- } from "./chunk-M4S6BE47.mjs";
11
2
  import {
12
3
  youtube_exports
13
- } from "./chunk-JM5SBBP5.mjs";
4
+ } from "./chunk-Q3TVMR5B.mjs";
14
5
  import {
15
6
  ClearSyncedVideos,
16
7
  Sync
17
- } from "./chunk-JSGRZMG3.mjs";
18
- import {
19
- Channel_exports
20
- } from "./chunk-6BUJ2DQX.mjs";
21
- import {
22
- Video_exports
23
- } from "./chunk-CZSLL3XQ.mjs";
8
+ } from "./chunk-A3SKNJFU.mjs";
9
+ import "./chunk-YOE54ALJ.mjs";
24
10
  import "./chunk-HSLMI22Q.mjs";
25
11
 
12
+ // src/meta.ts
13
+ import { trim } from "@dxos/util";
14
+ var meta = {
15
+ id: "org.dxos.plugin.youtube",
16
+ name: "YouTube",
17
+ description: trim`
18
+ YouTube channel subscription and video feed management.
19
+ Sync videos from channels and access transcripts for analysis.
20
+ `,
21
+ icon: "ph--youtube-logo--regular",
22
+ iconHue: "red",
23
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-youtube",
24
+ tags: [
25
+ "labs"
26
+ ]
27
+ };
28
+
29
+ // src/operations/index.ts
30
+ import { OperationHandlerSet } from "@dxos/operation";
31
+ var YouTubeHandlers = OperationHandlerSet.lazy(() => import("./clear-synced-videos-ZX7KBPGS.mjs"), () => import("./sync-RQYQ5LII.mjs"));
32
+
26
33
  // src/YouTubePlugin.tsx
27
34
  import * as Effect from "effect/Effect";
28
35
  import * as Option from "effect/Option";
@@ -30,73 +37,68 @@ import { ActivationEvent, Plugin } from "@dxos/app-framework";
30
37
  import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
31
38
  import { Annotation } from "@dxos/echo";
32
39
  import { Operation } from "@dxos/operation";
33
- import { AttentionEvents } from "@dxos/plugin-attention";
40
+ import { AttentionEvents } from "@dxos/plugin-attention/types";
41
+ import { ClientEvents } from "@dxos/plugin-client/types";
34
42
  import { SpaceOperation } from "@dxos/plugin-space/operations";
35
-
36
- // src/capabilities/app-graph-builder/index.ts
37
- import { Capability } from "@dxos/app-framework";
38
- var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("./app-graph-builder-IU5TBAXN.mjs"));
39
-
40
- // src/capabilities/blueprint-definition/index.ts
41
- import { Capability as Capability2 } from "@dxos/app-framework";
42
- var BlueprintDefinition = Capability2.lazy("BlueprintDefinition", () => import("./blueprint-definition-W264MZ3D.mjs"));
43
-
44
- // src/capabilities/react-surface/index.ts
45
- import { Capability as Capability3 } from "@dxos/app-framework";
46
- var ReactSurface = Capability3.lazy("ReactSurface", () => import("./react-surface-5DJAQPHJ.mjs"));
43
+ import { YouTubeBlueprint } from "#blueprints";
44
+ import { AppGraphBuilder, BlueprintDefinition, Migrations, ReactSurface } from "#capabilities";
45
+ import { meta as meta3 } from "#meta";
46
+ import { Channel as Channel2, Video as Video2 } from "#types";
47
47
 
48
48
  // src/translations.ts
49
+ import { meta as meta2 } from "#meta";
50
+ import { Channel, Video } from "#types";
49
51
  var translations = [
50
52
  {
51
53
  "en-US": {
52
- [Channel_exports.YouTubeChannel.typename]: {
53
- "typename label": "YouTube Channel",
54
- "typename label_zero": "YouTube Channels",
55
- "typename label_one": "YouTube Channel",
56
- "typename label_other": "YouTube Channels",
57
- "object name placeholder": "New YouTube channel",
58
- "add object label": "Add YouTube channel",
59
- "rename object label": "Rename YouTube channel",
60
- "delete object label": "Delete YouTube channel",
61
- "object deleted label": "YouTube channel deleted"
54
+ [Channel.YouTubeChannel.typename]: {
55
+ "typename.label": "YouTube Channel",
56
+ "typename.label_zero": "YouTube Channels",
57
+ "typename.label_one": "YouTube Channel",
58
+ "typename.label_other": "YouTube Channels",
59
+ "object-name.placeholder": "New YouTube channel",
60
+ "add-object.label": "Add YouTube channel",
61
+ "rename-object.label": "Rename YouTube channel",
62
+ "delete-object.label": "Delete YouTube channel",
63
+ "object-deleted.label": "YouTube channel deleted"
62
64
  },
63
- [Video_exports.YouTubeVideo.typename]: {
64
- "typename label": "Video",
65
- "typename label_zero": "Videos",
66
- "typename label_one": "Video",
67
- "typename label_other": "Videos",
68
- "object name placeholder": "New video",
69
- "add object label": "Add video",
70
- "rename object label": "Rename video",
71
- "delete object label": "Delete video",
72
- "object deleted label": "Video deleted"
65
+ [Video.YouTubeVideo.typename]: {
66
+ "typename.label": "Video",
67
+ "typename.label_zero": "Videos",
68
+ "typename.label_one": "Video",
69
+ "typename.label_other": "Videos",
70
+ "object-name.placeholder": "New video",
71
+ "add-object.label": "Add video",
72
+ "rename-object.label": "Rename video",
73
+ "delete-object.label": "Delete video",
74
+ "object-deleted.label": "Video deleted"
73
75
  },
74
- [meta.id]: {
75
- "plugin name": "YouTube",
76
- "channel label": "YouTube Channel",
77
- "video label": "Video",
78
- "sync channel label": "Sync channel",
79
- "sync channel error title": "Failed to sync channel",
80
- "clear synced videos label": "Clear synced videos",
81
- "clear synced videos error title": "Failed to clear synced videos",
82
- "close label": "Close",
83
- "new channel label": "New YouTube Channel",
84
- "empty channel message": "No videos synced yet",
85
- "no video message": "Select a video to view it",
86
- "channel account label": "Account",
87
- "channel account placeholder": "Select account...",
88
- "channel sync label": "Channel Sync",
89
- "enable background sync label": "Enable background sync",
90
- "enabling background sync label": "Enabling...",
91
- "disable background sync label": "Disable background sync",
92
- "view trigger label": "View trigger"
76
+ [meta2.id]: {
77
+ "plugin.name": "YouTube",
78
+ "channel.label": "YouTube Channel",
79
+ "video.label": "Video",
80
+ "sync-channel.label": "Sync channel",
81
+ "sync-channel-error.title": "Failed to sync channel",
82
+ "clear-synced-videos.label": "Clear synced videos",
83
+ "clear-synced-videos-error.title": "Failed to clear synced videos",
84
+ "close.label": "Close",
85
+ "new-channel.label": "New YouTube Channel",
86
+ "empty-channel.message": "No videos synced yet",
87
+ "no-video.message": "Select a video to view it",
88
+ "channel-account.label": "Account",
89
+ "channel-account.placeholder": "Select account...",
90
+ "channel-sync.label": "Channel Sync",
91
+ "enable-background-sync.label": "Enable background sync",
92
+ "enabling-background-sync.label": "Enabling...",
93
+ "disable-background-sync.label": "Disable background sync",
94
+ "view-trigger.label": "View trigger"
93
95
  }
94
96
  }
95
97
  }
96
98
  ];
97
99
 
98
100
  // src/YouTubePlugin.tsx
99
- var YouTubePlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
101
+ var YouTubePlugin = Plugin.define(meta3).pipe(AppPlugin.addAppGraphModule({
100
102
  activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupAppGraph, AttentionEvents.AttentionReady),
101
103
  activate: AppGraphBuilder
102
104
  }), AppPlugin.addBlueprintDefinitionModule({
@@ -104,17 +106,17 @@ var YouTubePlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
104
106
  }), AppPlugin.addMetadataModule({
105
107
  metadata: [
106
108
  {
107
- id: Channel_exports.YouTubeChannel.typename,
109
+ id: Channel2.YouTubeChannel.typename,
108
110
  metadata: {
109
111
  label: (object) => object.name ?? object.channelUrl ?? object.channelId ?? "YouTube",
110
- icon: Annotation.IconAnnotation.get(Channel_exports.YouTubeChannel).pipe(Option.getOrThrow).icon,
111
- iconHue: Annotation.IconAnnotation.get(Channel_exports.YouTubeChannel).pipe(Option.getOrThrow).hue ?? "white",
112
+ icon: Annotation.IconAnnotation.get(Channel2.YouTubeChannel).pipe(Option.getOrThrow).icon,
113
+ iconHue: Annotation.IconAnnotation.get(Channel2.YouTubeChannel).pipe(Option.getOrThrow).hue ?? "white",
112
114
  blueprints: [
113
- youtube_default.key
115
+ YouTubeBlueprint.key
114
116
  ],
115
- inputSchema: Channel_exports.CreateYouTubeChannelSchema,
117
+ inputSchema: Channel2.CreateYouTubeChannelSchema,
116
118
  createObject: (props, options) => Effect.gen(function* () {
117
- const object = Channel_exports.make(props);
119
+ const object = Channel2.make(props);
118
120
  return yield* Operation.invoke(SpaceOperation.AddObject, {
119
121
  object,
120
122
  target: options.target,
@@ -125,23 +127,26 @@ var YouTubePlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
125
127
  }
126
128
  },
127
129
  {
128
- id: Video_exports.YouTubeVideo.typename,
130
+ id: Video2.YouTubeVideo.typename,
129
131
  metadata: {
130
132
  label: (object) => object.title,
131
- icon: Annotation.IconAnnotation.get(Video_exports.YouTubeVideo).pipe(Option.getOrThrow).icon,
132
- iconHue: Annotation.IconAnnotation.get(Video_exports.YouTubeVideo).pipe(Option.getOrThrow).hue ?? "white"
133
+ icon: Annotation.IconAnnotation.get(Video2.YouTubeVideo).pipe(Option.getOrThrow).icon,
134
+ iconHue: Annotation.IconAnnotation.get(Video2.YouTubeVideo).pipe(Option.getOrThrow).hue ?? "white"
133
135
  }
134
136
  }
135
137
  ]
136
138
  }), AppPlugin.addSchemaModule({
137
139
  schema: [
138
- Channel_exports.YouTubeChannel,
139
- Video_exports.YouTubeVideo
140
+ Channel2.YouTubeChannel,
141
+ Video2.YouTubeVideo
140
142
  ]
141
143
  }), AppPlugin.addSurfaceModule({
142
144
  activate: ReactSurface
143
145
  }), AppPlugin.addTranslationsModule({
144
146
  translations
147
+ }), Plugin.addModule({
148
+ activatesOn: ClientEvents.SetupMigration,
149
+ activate: Migrations
145
150
  }), Plugin.make);
146
151
  export {
147
152
  ClearSyncedVideos,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/YouTubePlugin.tsx", "../../../src/capabilities/app-graph-builder/index.ts", "../../../src/capabilities/blueprint-definition/index.ts", "../../../src/capabilities/react-surface/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { ActivationEvent, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Annotation } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionEvents } from '@dxos/plugin-attention';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\n\nimport { YouTubeBlueprint } from './blueprints';\nimport { AppGraphBuilder, BlueprintDefinition, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { Channel, Video } from './types';\n\nexport const YouTubePlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({\n activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupAppGraph, AttentionEvents.AttentionReady),\n activate: AppGraphBuilder,\n }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addMetadataModule({\n metadata: [\n {\n id: Channel.YouTubeChannel.typename,\n metadata: {\n label: (object: Channel.YouTubeChannel) => object.name ?? object.channelUrl ?? object.channelId ?? 'YouTube',\n icon: Annotation.IconAnnotation.get(Channel.YouTubeChannel).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Channel.YouTubeChannel).pipe(Option.getOrThrow).hue ?? 'white',\n blueprints: [YouTubeBlueprint.key],\n inputSchema: Channel.CreateYouTubeChannelSchema,\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = Channel.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n {\n id: Video.YouTubeVideo.typename,\n metadata: {\n label: (object: Video.YouTubeVideo) => object.title,\n icon: Annotation.IconAnnotation.get(Video.YouTubeVideo).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Video.YouTubeVideo).pipe(Option.getOrThrow).hue ?? 'white',\n },\n },\n ],\n }),\n AppPlugin.addSchemaModule({\n schema: [Channel.YouTubeChannel, Video.YouTubeVideo],\n }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.make,\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { Channel, Video } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [Channel.YouTubeChannel.typename]: {\n 'typename label': 'YouTube Channel',\n 'typename label_zero': 'YouTube Channels',\n 'typename label_one': 'YouTube Channel',\n 'typename label_other': 'YouTube Channels',\n 'object name placeholder': 'New YouTube channel',\n 'add object label': 'Add YouTube channel',\n 'rename object label': 'Rename YouTube channel',\n 'delete object label': 'Delete YouTube channel',\n 'object deleted label': 'YouTube channel deleted',\n },\n [Video.YouTubeVideo.typename]: {\n 'typename label': 'Video',\n 'typename label_zero': 'Videos',\n 'typename label_one': 'Video',\n 'typename label_other': 'Videos',\n 'object name placeholder': 'New video',\n 'add object label': 'Add video',\n 'rename object label': 'Rename video',\n 'delete object label': 'Delete video',\n 'object deleted label': 'Video deleted',\n },\n [meta.id]: {\n 'plugin name': 'YouTube',\n 'channel label': 'YouTube Channel',\n 'video label': 'Video',\n 'sync channel label': 'Sync channel',\n 'sync channel error title': 'Failed to sync channel',\n 'clear synced videos label': 'Clear synced videos',\n 'clear synced videos error title': 'Failed to clear synced videos',\n 'close label': 'Close',\n 'new channel label': 'New YouTube Channel',\n 'empty channel message': 'No videos synced yet',\n 'no video message': 'Select a video to view it',\n\n 'channel account label': 'Account',\n 'channel account placeholder': 'Select account...',\n 'channel sync label': 'Channel Sync',\n\n 'enable background sync label': 'Enable background sync',\n 'enabling background sync label': 'Enabling...',\n 'disable background sync label': 'Disable background sync',\n 'view trigger label': 'View trigger',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Option", "ActivationEvent", "Plugin", "AppActivationEvents", "AppPlugin", "Annotation", "Operation", "AttentionEvents", "SpaceOperation", "Capability", "AppGraphBuilder", "Capability", "lazy", "Capability", "BlueprintDefinition", "Capability", "lazy", "Capability", "ReactSurface", "Capability", "lazy", "translations", "Channel", "YouTubeChannel", "typename", "Video", "YouTubeVideo", "meta", "id", "YouTubePlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activatesOn", "ActivationEvent", "allOf", "AppActivationEvents", "SetupAppGraph", "AttentionEvents", "AttentionReady", "activate", "AppGraphBuilder", "addBlueprintDefinitionModule", "BlueprintDefinition", "addMetadataModule", "metadata", "id", "Channel", "YouTubeChannel", "typename", "label", "object", "name", "channelUrl", "channelId", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "blueprints", "YouTubeBlueprint", "key", "inputSchema", "CreateYouTubeChannelSchema", "createObject", "props", "options", "gen", "make", "Operation", "invoke", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "Video", "YouTubeVideo", "title", "addSchemaModule", "schema", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations"]
3
+ "sources": ["../../../src/meta.ts", "../../../src/operations/index.ts", "../../../src/YouTubePlugin.tsx", "../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.youtube',\n name: 'YouTube',\n description: trim`\n YouTube channel subscription and video feed management.\n Sync videos from channels and access transcripts for analysis.\n `,\n icon: 'ph--youtube-logo--regular',\n iconHue: 'red',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-youtube',\n tags: ['labs'],\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/operation';\n\nexport { YouTube } from './apis';\nexport * from './definitions';\n\nexport const YouTubeHandlers = OperationHandlerSet.lazy(\n () => import('./clear-synced-videos'),\n () => import('./sync'),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { ActivationEvent, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Annotation } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionEvents } from '@dxos/plugin-attention/types';\nimport { ClientEvents } from '@dxos/plugin-client/types';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\nimport { type CreateObject } from '@dxos/plugin-space/types';\n\nimport { YouTubeBlueprint } from '#blueprints';\nimport { AppGraphBuilder, BlueprintDefinition, Migrations, ReactSurface } from '#capabilities';\nimport { meta } from '#meta';\nimport { Channel, Video } from '#types';\n\nimport { translations } from './translations';\n\nexport const YouTubePlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({\n activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupAppGraph, AttentionEvents.AttentionReady),\n activate: AppGraphBuilder,\n }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addMetadataModule({\n metadata: [\n {\n id: Channel.YouTubeChannel.typename,\n metadata: {\n label: (object: Channel.YouTubeChannel) => object.name ?? object.channelUrl ?? object.channelId ?? 'YouTube',\n icon: Annotation.IconAnnotation.get(Channel.YouTubeChannel).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Channel.YouTubeChannel).pipe(Option.getOrThrow).hue ?? 'white',\n blueprints: [YouTubeBlueprint.key],\n inputSchema: Channel.CreateYouTubeChannelSchema,\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = Channel.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n {\n id: Video.YouTubeVideo.typename,\n metadata: {\n label: (object: Video.YouTubeVideo) => object.title,\n icon: Annotation.IconAnnotation.get(Video.YouTubeVideo).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Video.YouTubeVideo).pipe(Option.getOrThrow).hue ?? 'white',\n },\n },\n ],\n }),\n AppPlugin.addSchemaModule({\n schema: [Channel.YouTubeChannel, Video.YouTubeVideo],\n }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n activatesOn: ClientEvents.SetupMigration,\n activate: Migrations,\n }),\n Plugin.make,\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { Channel, Video } from '#types';\n\nexport const translations = [\n {\n 'en-US': {\n [Channel.YouTubeChannel.typename]: {\n 'typename.label': 'YouTube Channel',\n 'typename.label_zero': 'YouTube Channels',\n 'typename.label_one': 'YouTube Channel',\n 'typename.label_other': 'YouTube Channels',\n 'object-name.placeholder': 'New YouTube channel',\n 'add-object.label': 'Add YouTube channel',\n 'rename-object.label': 'Rename YouTube channel',\n 'delete-object.label': 'Delete YouTube channel',\n 'object-deleted.label': 'YouTube channel deleted',\n },\n [Video.YouTubeVideo.typename]: {\n 'typename.label': 'Video',\n 'typename.label_zero': 'Videos',\n 'typename.label_one': 'Video',\n 'typename.label_other': 'Videos',\n 'object-name.placeholder': 'New video',\n 'add-object.label': 'Add video',\n 'rename-object.label': 'Rename video',\n 'delete-object.label': 'Delete video',\n 'object-deleted.label': 'Video deleted',\n },\n [meta.id]: {\n 'plugin.name': 'YouTube',\n 'channel.label': 'YouTube Channel',\n 'video.label': 'Video',\n 'sync-channel.label': 'Sync channel',\n 'sync-channel-error.title': 'Failed to sync channel',\n 'clear-synced-videos.label': 'Clear synced videos',\n 'clear-synced-videos-error.title': 'Failed to clear synced videos',\n 'close.label': 'Close',\n 'new-channel.label': 'New YouTube Channel',\n 'empty-channel.message': 'No videos synced yet',\n 'no-video.message': 'Select a video to view it',\n\n 'channel-account.label': 'Account',\n 'channel-account.placeholder': 'Select account...',\n 'channel-sync.label': 'Channel Sync',\n\n 'enable-background-sync.label': 'Enable background sync',\n 'enabling-background-sync.label': 'Enabling...',\n 'disable-background-sync.label': 'Disable background sync',\n 'view-trigger.label': 'View trigger',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
+ "mappings": "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",
6
+ "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "tags", "OperationHandlerSet", "YouTubeHandlers", "OperationHandlerSet", "lazy", "Effect", "Option", "ActivationEvent", "Plugin", "AppActivationEvents", "AppPlugin", "Annotation", "Operation", "AttentionEvents", "ClientEvents", "SpaceOperation", "YouTubeBlueprint", "AppGraphBuilder", "BlueprintDefinition", "Migrations", "ReactSurface", "meta", "Channel", "Video", "meta", "Channel", "Video", "translations", "Channel", "YouTubeChannel", "typename", "Video", "YouTubeVideo", "meta", "id", "YouTubePlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activatesOn", "ActivationEvent", "allOf", "AppActivationEvents", "SetupAppGraph", "AttentionEvents", "AttentionReady", "activate", "AppGraphBuilder", "addBlueprintDefinitionModule", "BlueprintDefinition", "addMetadataModule", "metadata", "id", "Channel", "YouTubeChannel", "typename", "label", "object", "name", "channelUrl", "channelId", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "blueprints", "YouTubeBlueprint", "key", "inputSchema", "CreateYouTubeChannelSchema", "createObject", "props", "options", "gen", "make", "Operation", "invoke", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "Video", "YouTubeVideo", "title", "addSchemaModule", "schema", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "addModule", "ClientEvents", "SetupMigration", "Migrations"]
7
7
  }