@dxos/plugin-youtube 0.8.3

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 (199) hide show
  1. package/LICENSE +21 -0
  2. package/dist/lib/browser/ChannelArticle-CDQR4BBY.mjs +90 -0
  3. package/dist/lib/browser/ChannelArticle-CDQR4BBY.mjs.map +7 -0
  4. package/dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs +28 -0
  5. package/dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs.map +7 -0
  6. package/dist/lib/browser/VideoArticle-FC4A6E7B.mjs +76 -0
  7. package/dist/lib/browser/VideoArticle-FC4A6E7B.mjs.map +7 -0
  8. package/dist/lib/browser/VideoCard-CCPXDCB7.mjs +64 -0
  9. package/dist/lib/browser/VideoCard-CCPXDCB7.mjs.map +7 -0
  10. package/dist/lib/browser/app-graph-builder-MJY6A6SN.mjs +195 -0
  11. package/dist/lib/browser/app-graph-builder-MJY6A6SN.mjs.map +7 -0
  12. package/dist/lib/browser/blueprint-definition-FRYUYJ22.mjs +22 -0
  13. package/dist/lib/browser/blueprint-definition-FRYUYJ22.mjs.map +7 -0
  14. package/dist/lib/browser/blueprints/index.mjs +13 -0
  15. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-C26XKDK2.mjs +355 -0
  17. package/dist/lib/browser/chunk-C26XKDK2.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-DFRSBBSO.mjs +21 -0
  19. package/dist/lib/browser/chunk-DFRSBBSO.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-GFRR4TTX.mjs +72 -0
  21. package/dist/lib/browser/chunk-GFRR4TTX.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-MUE22YUM.mjs +57 -0
  25. package/dist/lib/browser/chunk-MUE22YUM.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-P67QEKBQ.mjs +72 -0
  27. package/dist/lib/browser/chunk-P67QEKBQ.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-YMDT37TA.mjs +62 -0
  29. package/dist/lib/browser/chunk-YMDT37TA.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-Z3DGTMKC.mjs +8 -0
  31. package/dist/lib/browser/chunk-Z3DGTMKC.mjs.map +7 -0
  32. package/dist/lib/browser/clear-synced-videos-EVMJIZPD.mjs +66 -0
  33. package/dist/lib/browser/clear-synced-videos-EVMJIZPD.mjs.map +7 -0
  34. package/dist/lib/browser/index.mjs +153 -0
  35. package/dist/lib/browser/index.mjs.map +7 -0
  36. package/dist/lib/browser/meta.json +1 -0
  37. package/dist/lib/browser/react-surface-EDA5VYDC.mjs +77 -0
  38. package/dist/lib/browser/react-surface-EDA5VYDC.mjs.map +7 -0
  39. package/dist/lib/browser/sync-423Q4BDD.mjs +360 -0
  40. package/dist/lib/browser/sync-423Q4BDD.mjs.map +7 -0
  41. package/dist/lib/browser/types/index.mjs +14 -0
  42. package/dist/lib/browser/types/index.mjs.map +7 -0
  43. package/dist/lib/node-esm/ChannelArticle-GQ64BO7V.mjs +91 -0
  44. package/dist/lib/node-esm/ChannelArticle-GQ64BO7V.mjs.map +7 -0
  45. package/dist/lib/node-esm/ChannelSettings-DM2HWNKO.mjs +29 -0
  46. package/dist/lib/node-esm/ChannelSettings-DM2HWNKO.mjs.map +7 -0
  47. package/dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs +77 -0
  48. package/dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs.map +7 -0
  49. package/dist/lib/node-esm/VideoCard-FOWQZK75.mjs +65 -0
  50. package/dist/lib/node-esm/VideoCard-FOWQZK75.mjs.map +7 -0
  51. package/dist/lib/node-esm/app-graph-builder-IU5TBAXN.mjs +196 -0
  52. package/dist/lib/node-esm/app-graph-builder-IU5TBAXN.mjs.map +7 -0
  53. package/dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs +23 -0
  54. package/dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs.map +7 -0
  55. package/dist/lib/node-esm/blueprints/index.mjs +14 -0
  56. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-5KNC2JMP.mjs +58 -0
  58. package/dist/lib/node-esm/chunk-5KNC2JMP.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-6BUJ2DQX.mjs +73 -0
  60. package/dist/lib/node-esm/chunk-6BUJ2DQX.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-CX6MV3QM.mjs +23 -0
  62. package/dist/lib/node-esm/chunk-CX6MV3QM.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-CZSLL3XQ.mjs +63 -0
  64. package/dist/lib/node-esm/chunk-CZSLL3XQ.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  66. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-JM5SBBP5.mjs +356 -0
  68. package/dist/lib/node-esm/chunk-JM5SBBP5.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-JSGRZMG3.mjs +73 -0
  70. package/dist/lib/node-esm/chunk-JSGRZMG3.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-M4S6BE47.mjs +10 -0
  72. package/dist/lib/node-esm/chunk-M4S6BE47.mjs.map +7 -0
  73. package/dist/lib/node-esm/clear-synced-videos-5UCH6XHL.mjs +67 -0
  74. package/dist/lib/node-esm/clear-synced-videos-5UCH6XHL.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +154 -0
  76. package/dist/lib/node-esm/index.mjs.map +7 -0
  77. package/dist/lib/node-esm/meta.json +1 -0
  78. package/dist/lib/node-esm/react-surface-5DJAQPHJ.mjs +78 -0
  79. package/dist/lib/node-esm/react-surface-5DJAQPHJ.mjs.map +7 -0
  80. package/dist/lib/node-esm/sync-CEF5DX2J.mjs +361 -0
  81. package/dist/lib/node-esm/sync-CEF5DX2J.mjs.map +7 -0
  82. package/dist/lib/node-esm/types/index.mjs +15 -0
  83. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  84. package/dist/types/src/YouTubePlugin.d.ts +3 -0
  85. package/dist/types/src/YouTubePlugin.d.ts.map +1 -0
  86. package/dist/types/src/blueprints/index.d.ts +3 -0
  87. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  88. package/dist/types/src/blueprints/youtube.d.ts +4 -0
  89. package/dist/types/src/blueprints/youtube.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  91. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  93. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
  95. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  97. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/index.d.ts +4 -0
  99. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  101. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  103. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  104. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts +8 -0
  105. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts.map +1 -0
  106. package/dist/types/src/containers/ChannelArticle/index.d.ts +3 -0
  107. package/dist/types/src/containers/ChannelArticle/index.d.ts.map +1 -0
  108. package/dist/types/src/containers/ChannelSettings/ChannelSettings.d.ts +7 -0
  109. package/dist/types/src/containers/ChannelSettings/ChannelSettings.d.ts.map +1 -0
  110. package/dist/types/src/containers/ChannelSettings/index.d.ts +3 -0
  111. package/dist/types/src/containers/ChannelSettings/index.d.ts.map +1 -0
  112. package/dist/types/src/containers/VideoArticle/VideoArticle.d.ts +11 -0
  113. package/dist/types/src/containers/VideoArticle/VideoArticle.d.ts.map +1 -0
  114. package/dist/types/src/containers/VideoArticle/index.d.ts +3 -0
  115. package/dist/types/src/containers/VideoArticle/index.d.ts.map +1 -0
  116. package/dist/types/src/containers/VideoCard/VideoCard.d.ts +9 -0
  117. package/dist/types/src/containers/VideoCard/VideoCard.d.ts.map +1 -0
  118. package/dist/types/src/containers/VideoCard/index.d.ts +3 -0
  119. package/dist/types/src/containers/VideoCard/index.d.ts.map +1 -0
  120. package/dist/types/src/containers/index.d.ts +11 -0
  121. package/dist/types/src/containers/index.d.ts.map +1 -0
  122. package/dist/types/src/index.d.ts +4 -0
  123. package/dist/types/src/index.d.ts.map +1 -0
  124. package/dist/types/src/meta.d.ts +3 -0
  125. package/dist/types/src/meta.d.ts.map +1 -0
  126. package/dist/types/src/operations/apis/index.d.ts +2 -0
  127. package/dist/types/src/operations/apis/index.d.ts.map +1 -0
  128. package/dist/types/src/operations/apis/youtube/api.d.ts +251 -0
  129. package/dist/types/src/operations/apis/youtube/api.d.ts.map +1 -0
  130. package/dist/types/src/operations/apis/youtube/index.d.ts +3 -0
  131. package/dist/types/src/operations/apis/youtube/index.d.ts.map +1 -0
  132. package/dist/types/src/operations/apis/youtube/types.d.ts +493 -0
  133. package/dist/types/src/operations/apis/youtube/types.d.ts.map +1 -0
  134. package/dist/types/src/operations/clear-synced-videos.d.ts +5 -0
  135. package/dist/types/src/operations/clear-synced-videos.d.ts.map +1 -0
  136. package/dist/types/src/operations/definitions.d.ts +45 -0
  137. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  138. package/dist/types/src/operations/index.d.ts +5 -0
  139. package/dist/types/src/operations/index.d.ts.map +1 -0
  140. package/dist/types/src/operations/services/google-credentials.d.ts +35 -0
  141. package/dist/types/src/operations/services/google-credentials.d.ts.map +1 -0
  142. package/dist/types/src/operations/services/index.d.ts +2 -0
  143. package/dist/types/src/operations/services/index.d.ts.map +1 -0
  144. package/dist/types/src/operations/sync.d.ts +5 -0
  145. package/dist/types/src/operations/sync.d.ts.map +1 -0
  146. package/dist/types/src/operations/sync.test.d.ts +2 -0
  147. package/dist/types/src/operations/sync.test.d.ts.map +1 -0
  148. package/dist/types/src/operations/transcript.d.ts +12 -0
  149. package/dist/types/src/operations/transcript.d.ts.map +1 -0
  150. package/dist/types/src/translations.d.ts +49 -0
  151. package/dist/types/src/translations.d.ts.map +1 -0
  152. package/dist/types/src/types/Channel.d.ts +54 -0
  153. package/dist/types/src/types/Channel.d.ts.map +1 -0
  154. package/dist/types/src/types/Video.d.ts +41 -0
  155. package/dist/types/src/types/Video.d.ts.map +1 -0
  156. package/dist/types/src/types/index.d.ts +4 -0
  157. package/dist/types/src/types/index.d.ts.map +1 -0
  158. package/dist/types/src/types/types.d.ts +5 -0
  159. package/dist/types/src/types/types.d.ts.map +1 -0
  160. package/dist/types/tsconfig.tsbuildinfo +1 -0
  161. package/package.json +113 -0
  162. package/src/YouTubePlugin.tsx +66 -0
  163. package/src/blueprints/index.ts +7 -0
  164. package/src/blueprints/youtube.ts +52 -0
  165. package/src/capabilities/app-graph-builder/app-graph-builder.ts +148 -0
  166. package/src/capabilities/app-graph-builder/index.ts +7 -0
  167. package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
  168. package/src/capabilities/blueprint-definition/index.ts +7 -0
  169. package/src/capabilities/index.ts +7 -0
  170. package/src/capabilities/react-surface/index.ts +7 -0
  171. package/src/capabilities/react-surface/react-surface.tsx +54 -0
  172. package/src/containers/ChannelArticle/ChannelArticle.tsx +115 -0
  173. package/src/containers/ChannelArticle/index.ts +7 -0
  174. package/src/containers/ChannelSettings/ChannelSettings.tsx +34 -0
  175. package/src/containers/ChannelSettings/index.ts +7 -0
  176. package/src/containers/VideoArticle/VideoArticle.tsx +109 -0
  177. package/src/containers/VideoArticle/index.ts +7 -0
  178. package/src/containers/VideoCard/VideoCard.tsx +86 -0
  179. package/src/containers/VideoCard/index.ts +7 -0
  180. package/src/containers/index.ts +24 -0
  181. package/src/index.ts +8 -0
  182. package/src/meta.ts +19 -0
  183. package/src/operations/apis/index.ts +5 -0
  184. package/src/operations/apis/youtube/api.ts +149 -0
  185. package/src/operations/apis/youtube/index.ts +6 -0
  186. package/src/operations/apis/youtube/types.ts +254 -0
  187. package/src/operations/clear-synced-videos.ts +50 -0
  188. package/src/operations/definitions.ts +62 -0
  189. package/src/operations/index.ts +13 -0
  190. package/src/operations/services/google-credentials.ts +81 -0
  191. package/src/operations/services/index.ts +5 -0
  192. package/src/operations/sync.test.ts +114 -0
  193. package/src/operations/sync.ts +309 -0
  194. package/src/operations/transcript.ts +47 -0
  195. package/src/translations.ts +59 -0
  196. package/src/types/Channel.ts +80 -0
  197. package/src/types/Video.ts +67 -0
  198. package/src/types/index.ts +8 -0
  199. package/src/types/types.ts +10 -0
@@ -0,0 +1,72 @@
1
+ import {
2
+ Channel_exports
3
+ } from "./chunk-GFRR4TTX.mjs";
4
+ import {
5
+ Video_exports
6
+ } from "./chunk-YMDT37TA.mjs";
7
+
8
+ // src/operations/definitions.ts
9
+ import { Operation } from "@dxos/operation";
10
+ import * as Schema from "effect/Schema";
11
+ import { Database, Feed, Ref } from "@dxos/echo";
12
+ import { CredentialsService } from "@dxos/functions";
13
+ var Sync = Operation.make({
14
+ meta: {
15
+ key: "dxos.org/function/youtube/sync",
16
+ name: "Sync YouTube Channel",
17
+ description: "Sync videos from a YouTube channel to the feed."
18
+ },
19
+ input: Schema.Struct({
20
+ channel: Ref.Ref(Channel_exports.YouTubeChannel).annotations({
21
+ description: "Reference to the YouTube channel to sync videos from."
22
+ }),
23
+ restrictedMode: Schema.Boolean.pipe(Schema.annotations({
24
+ description: "Use restricted mode to limit to max 20 videos. Reduces API calls. Useful for testing or quick syncs."
25
+ }), Schema.optional),
26
+ includeTranscripts: Schema.Boolean.pipe(Schema.annotations({
27
+ description: "Whether to fetch transcripts: Data API when your account can manage the video, otherwise watch-page captions (browser uses a public CORS proxy for YouTube fetches)."
28
+ }), Schema.optional)
29
+ }),
30
+ output: Schema.Struct({
31
+ newVideos: Schema.Number,
32
+ channelTitle: Schema.String.pipe(Schema.optional)
33
+ }),
34
+ types: [
35
+ Channel_exports.YouTubeChannel,
36
+ Video_exports.YouTubeVideo
37
+ ],
38
+ services: [
39
+ Database.Service,
40
+ Feed.Service,
41
+ CredentialsService
42
+ ]
43
+ });
44
+ var ClearSyncedVideos = Operation.make({
45
+ meta: {
46
+ key: "dxos.org/function/youtube/clear-synced-videos",
47
+ name: "Clear Synced YouTube Videos",
48
+ description: "Remove all synced videos from the channel by replacing its feed with a new empty feed."
49
+ },
50
+ input: Schema.Struct({
51
+ channel: Ref.Ref(Channel_exports.YouTubeChannel).annotations({
52
+ description: "Reference to the YouTube channel whose synced videos should be cleared."
53
+ })
54
+ }),
55
+ output: Schema.Struct({
56
+ removedVideos: Schema.Number
57
+ }),
58
+ types: [
59
+ Channel_exports.YouTubeChannel,
60
+ Video_exports.YouTubeVideo
61
+ ],
62
+ services: [
63
+ Database.Service,
64
+ Feed.Service
65
+ ]
66
+ });
67
+
68
+ export {
69
+ Sync,
70
+ ClearSyncedVideos
71
+ };
72
+ //# sourceMappingURL=chunk-P67QEKBQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/definitions.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Operation } from '@dxos/operation';\nimport * as Schema from 'effect/Schema';\n\nimport { Database, Feed, Ref } from '@dxos/echo';\nimport { CredentialsService } from '@dxos/functions';\n\nimport { Channel, Video } from '../types';\n\nexport const Sync = Operation.make({\n meta: {\n key: 'dxos.org/function/youtube/sync',\n name: 'Sync YouTube Channel',\n description: 'Sync videos from a YouTube channel to the feed.',\n },\n input: Schema.Struct({\n channel: Ref.Ref(Channel.YouTubeChannel).annotations({\n description: 'Reference to the YouTube channel to sync videos from.',\n }),\n restrictedMode: Schema.Boolean.pipe(\n Schema.annotations({\n description:\n 'Use restricted mode to limit to max 20 videos. Reduces API calls. Useful for testing or quick syncs.',\n }),\n Schema.optional,\n ),\n includeTranscripts: Schema.Boolean.pipe(\n Schema.annotations({\n description:\n 'Whether to fetch transcripts: Data API when your account can manage the video, otherwise watch-page captions (browser uses a public CORS proxy for YouTube fetches).',\n }),\n Schema.optional,\n ),\n }),\n output: Schema.Struct({\n newVideos: Schema.Number,\n channelTitle: Schema.String.pipe(Schema.optional),\n }),\n types: [Channel.YouTubeChannel, Video.YouTubeVideo],\n services: [Database.Service, Feed.Service, CredentialsService],\n});\n\nexport const ClearSyncedVideos = Operation.make({\n meta: {\n key: 'dxos.org/function/youtube/clear-synced-videos',\n name: 'Clear Synced YouTube Videos',\n description: 'Remove all synced videos from the channel by replacing its feed with a new empty feed.',\n },\n input: Schema.Struct({\n channel: Ref.Ref(Channel.YouTubeChannel).annotations({\n description: 'Reference to the YouTube channel whose synced videos should be cleared.',\n }),\n }),\n output: Schema.Struct({\n removedVideos: Schema.Number,\n }),\n types: [Channel.YouTubeChannel, Video.YouTubeVideo],\n services: [Database.Service, Feed.Service],\n});\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,iBAAiB;AAC1B,YAAYC,YAAY;AAExB,SAASC,UAAUC,MAAMC,WAAW;AACpC,SAASC,0BAA0B;AAI5B,IAAMC,OAAOC,UAAUC,KAAK;EACjCC,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,aAAa;EACf;EACAC,OAAcC,cAAO;IACnBC,SAASC,IAAIA,IAAIC,gBAAQC,cAAc,EAAEC,YAAY;MACnDP,aAAa;IACf,CAAA;IACAQ,gBAAuBC,eAAQC,KACtBH,mBAAY;MACjBP,aACE;IACJ,CAAA,GACOW,eAAQ;IAEjBC,oBAA2BH,eAAQC,KAC1BH,mBAAY;MACjBP,aACE;IACJ,CAAA,GACOW,eAAQ;EAEnB,CAAA;EACAE,QAAeX,cAAO;IACpBY,WAAkBC;IAClBC,cAAqBC,cAAOP,KAAYC,eAAQ;EAClD,CAAA;EACAO,OAAO;IAACb,gBAAQC;IAAgBa,cAAMC;;EACtCC,UAAU;IAACC,SAASC;IAASC,KAAKD;IAASE;;AAC7C,CAAA;AAEO,IAAMC,oBAAoB/B,UAAUC,KAAK;EAC9CC,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,aAAa;EACf;EACAC,OAAcC,cAAO;IACnBC,SAASC,IAAIA,IAAIC,gBAAQC,cAAc,EAAEC,YAAY;MACnDP,aAAa;IACf,CAAA;EACF,CAAA;EACAa,QAAeX,cAAO;IACpByB,eAAsBZ;EACxB,CAAA;EACAG,OAAO;IAACb,gBAAQC;IAAgBa,cAAMC;;EACtCC,UAAU;IAACC,SAASC;IAASC,KAAKD;;AACpC,CAAA;",
6
+ "names": ["Operation", "Schema", "Database", "Feed", "Ref", "CredentialsService", "Sync", "Operation", "make", "meta", "key", "name", "description", "input", "Struct", "channel", "Ref", "Channel", "YouTubeChannel", "annotations", "restrictedMode", "Boolean", "pipe", "optional", "includeTranscripts", "output", "newVideos", "Number", "channelTitle", "String", "types", "Video", "YouTubeVideo", "services", "Database", "Service", "Feed", "CredentialsService", "ClearSyncedVideos", "removedVideos"]
7
+ }
@@ -0,0 +1,62 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-J5LGTIGS.mjs";
4
+
5
+ // src/types/Video.ts
6
+ var Video_exports = {};
7
+ __export(Video_exports, {
8
+ TranscriptSegment: () => TranscriptSegment,
9
+ YouTubeVideo: () => YouTubeVideo,
10
+ instanceOf: () => instanceOf
11
+ });
12
+ import * as Schema from "effect/Schema";
13
+ import { Annotation, Obj, Type } from "@dxos/echo";
14
+ var TranscriptSegment = Schema.Struct({
15
+ /** Transcript text. */
16
+ text: Schema.String,
17
+ /** Start time in seconds. */
18
+ offset: Schema.Number,
19
+ /** Duration in seconds. */
20
+ duration: Schema.Number
21
+ });
22
+ var YouTubeVideo = Schema.Struct({
23
+ /** Video title. */
24
+ title: Schema.String,
25
+ /** YouTube video ID. */
26
+ videoId: Schema.String,
27
+ /** Video description. */
28
+ description: Schema.String.pipe(Schema.optional),
29
+ /** Video URL. */
30
+ url: Schema.String,
31
+ /** Thumbnail URL. */
32
+ thumbnailUrl: Schema.String.pipe(Schema.optional),
33
+ /** Channel name. */
34
+ channelTitle: Schema.String.pipe(Schema.optional),
35
+ /** Published date as ISO string. */
36
+ publishedAt: Schema.String,
37
+ /** Video duration in ISO 8601 format (e.g., PT1H30M15S). */
38
+ duration: Schema.String.pipe(Schema.optional),
39
+ /** View count. */
40
+ viewCount: Schema.Number.pipe(Schema.optional),
41
+ /** Like count. */
42
+ likeCount: Schema.Number.pipe(Schema.optional),
43
+ /** Full transcript text. */
44
+ transcript: Schema.String.pipe(Schema.optional),
45
+ /** Transcript segments with timestamps. */
46
+ transcriptSegments: Schema.Array(TranscriptSegment).pipe(Schema.optional),
47
+ /** True when transcript text was successfully loaded; false when disabled or none available. */
48
+ transcriptFetched: Schema.Boolean.pipe(Schema.optional)
49
+ }).pipe(Type.object({
50
+ typename: "org.dxos.type.youtube-video",
51
+ version: "0.1.0"
52
+ }), Annotation.IconAnnotation.set({
53
+ icon: "ph--play--regular",
54
+ hue: "red"
55
+ }));
56
+ var instanceOf = (value) => Obj.instanceOf(YouTubeVideo, value);
57
+
58
+ export {
59
+ YouTubeVideo,
60
+ Video_exports
61
+ };
62
+ //# sourceMappingURL=chunk-YMDT37TA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/Video.ts"],
4
+ "sourcesContent": ["//\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/**\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.youtube-video',\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": ";;;;;AAAA;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,KAAKC,YAAY;AAK/B,IAAMC,oBAA2BC,cAAO;;EAE7CC,MAAaC;;EAEbC,QAAeC;;EAEfC,UAAiBD;AACnB,CAAA;AAOO,IAAME,eAAsBN,cAAO;;EAExCO,OAAcL;;EAEdM,SAAgBN;;EAEhBO,aAAoBP,cAAOQ,KAAYC,eAAQ;;EAE/CC,KAAYV;;EAEZW,cAAqBX,cAAOQ,KAAYC,eAAQ;;EAEhDG,cAAqBZ,cAAOQ,KAAYC,eAAQ;;EAEhDI,aAAoBb;;EAEpBG,UAAiBH,cAAOQ,KAAYC,eAAQ;;EAE5CK,WAAkBZ,cAAOM,KAAYC,eAAQ;;EAE7CM,WAAkBb,cAAOM,KAAYC,eAAQ;;EAE7CO,YAAmBhB,cAAOQ,KAAYC,eAAQ;;EAE9CQ,oBAA2BC,aAAMrB,iBAAAA,EAAmBW,KAAYC,eAAQ;;EAExEU,mBAA0BC,eAAQZ,KAAYC,eAAQ;AACxD,CAAA,EAAGD,KACDa,KAAKC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,WAAWC,eAAeC,IAAI;EAC5BC,MAAM;EACNC,KAAK;AACP,CAAA,CAAA;AAMK,IAAMC,aAAa,CAACC,UAA0CC,IAAIF,WAAW1B,cAAc2B,KAAAA;",
6
+ "names": ["Schema", "Annotation", "Obj", "Type", "TranscriptSegment", "Struct", "text", "String", "offset", "Number", "duration", "YouTubeVideo", "title", "videoId", "description", "pipe", "optional", "url", "thumbnailUrl", "channelTitle", "publishedAt", "viewCount", "likeCount", "transcript", "transcriptSegments", "Array", "transcriptFetched", "Boolean", "Type", "object", "typename", "version", "Annotation", "IconAnnotation", "set", "icon", "hue", "instanceOf", "value", "Obj"]
7
+ }
@@ -0,0 +1,8 @@
1
+ // src/operations/index.ts
2
+ import { OperationHandlerSet } from "@dxos/operation";
3
+ var YouTubeHandlers = OperationHandlerSet.lazy(() => import("./clear-synced-videos-EVMJIZPD.mjs"), () => import("./sync-423Q4BDD.mjs"));
4
+
5
+ export {
6
+ YouTubeHandlers
7
+ };
8
+ //# sourceMappingURL=chunk-Z3DGTMKC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/index.ts"],
4
+ "sourcesContent": ["//\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"],
5
+ "mappings": ";AAIA,SAASA,2BAA2B;AAK7B,IAAMC,kBAAkBC,oBAAoBC,KACjD,MAAM,OAAO,oCAAA,GACb,MAAM,OAAO,qBAAA,CAAA;",
6
+ "names": ["OperationHandlerSet", "YouTubeHandlers", "OperationHandlerSet", "lazy"]
7
+ }
@@ -0,0 +1,66 @@
1
+ import {
2
+ ClearSyncedVideos
3
+ } from "./chunk-P67QEKBQ.mjs";
4
+ import "./chunk-GFRR4TTX.mjs";
5
+ import {
6
+ Video_exports
7
+ } from "./chunk-YMDT37TA.mjs";
8
+ import "./chunk-J5LGTIGS.mjs";
9
+
10
+ // src/operations/clear-synced-videos.ts
11
+ import * as Effect from "effect/Effect";
12
+ import { Database, Feed, Filter, Obj, Ref } from "@dxos/echo";
13
+ import { log } from "@dxos/log";
14
+ import { Operation } from "@dxos/operation";
15
+ var __dxlog_file = "/Users/mykola/dev/dxos/packages/plugins/plugin-youtube/src/operations/clear-synced-videos.ts";
16
+ var handler = ClearSyncedVideos.pipe(Operation.withHandler(({ channel: channelRef }) => Effect.gen(function* () {
17
+ log("clearing youtube channel synced videos", {
18
+ channel: channelRef.dxn.toString()
19
+ }, {
20
+ F: __dxlog_file,
21
+ L: 18,
22
+ S: this,
23
+ C: (f, a) => f(...a)
24
+ });
25
+ const channel = yield* Database.load(channelRef);
26
+ const oldFeed = yield* Database.load(channel.feed);
27
+ const videos = yield* Feed.runQuery(oldFeed, Filter.type(Video_exports.YouTubeVideo));
28
+ log("removing synced videos", {
29
+ count: videos.length
30
+ }, {
31
+ F: __dxlog_file,
32
+ L: 23,
33
+ S: this,
34
+ C: (f, a) => f(...a)
35
+ });
36
+ const newFeed = Feed.make();
37
+ yield* Database.add(newFeed);
38
+ Obj.setParent(newFeed, channel);
39
+ Obj.change(channel, (mutable) => {
40
+ mutable.feed = Ref.make(newFeed);
41
+ delete mutable.lastSyncedAt;
42
+ });
43
+ if (videos.length > 0) {
44
+ yield* Feed.remove(oldFeed, videos);
45
+ }
46
+ for (const video of videos) {
47
+ yield* Database.remove(video);
48
+ }
49
+ yield* Database.remove(oldFeed);
50
+ log("replaced youtube channel feed", {
51
+ removedVideos: videos.length
52
+ }, {
53
+ F: __dxlog_file,
54
+ L: 44,
55
+ S: this,
56
+ C: (f, a) => f(...a)
57
+ });
58
+ return {
59
+ removedVideos: videos.length
60
+ };
61
+ })));
62
+ var clear_synced_videos_default = handler;
63
+ export {
64
+ clear_synced_videos_default as default
65
+ };
66
+ //# sourceMappingURL=clear-synced-videos-EVMJIZPD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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;",
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
+ }
@@ -0,0 +1,153 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-DFRSBBSO.mjs";
4
+ import {
5
+ youtube_default
6
+ } from "./chunk-MUE22YUM.mjs";
7
+ import {
8
+ YouTubeHandlers
9
+ } from "./chunk-Z3DGTMKC.mjs";
10
+ import {
11
+ youtube_exports
12
+ } from "./chunk-C26XKDK2.mjs";
13
+ import {
14
+ ClearSyncedVideos,
15
+ Sync
16
+ } from "./chunk-P67QEKBQ.mjs";
17
+ import {
18
+ Channel_exports
19
+ } from "./chunk-GFRR4TTX.mjs";
20
+ import {
21
+ Video_exports
22
+ } from "./chunk-YMDT37TA.mjs";
23
+ import "./chunk-J5LGTIGS.mjs";
24
+
25
+ // src/YouTubePlugin.tsx
26
+ import * as Effect from "effect/Effect";
27
+ import * as Option from "effect/Option";
28
+ import { ActivationEvent, Plugin } from "@dxos/app-framework";
29
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
30
+ import { Annotation } from "@dxos/echo";
31
+ import { Operation } from "@dxos/operation";
32
+ import { AttentionEvents } from "@dxos/plugin-attention";
33
+ import { SpaceOperation } from "@dxos/plugin-space/operations";
34
+
35
+ // src/capabilities/app-graph-builder/index.ts
36
+ import { Capability } from "@dxos/app-framework";
37
+ var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("./app-graph-builder-MJY6A6SN.mjs"));
38
+
39
+ // src/capabilities/blueprint-definition/index.ts
40
+ import { Capability as Capability2 } from "@dxos/app-framework";
41
+ var BlueprintDefinition = Capability2.lazy("BlueprintDefinition", () => import("./blueprint-definition-FRYUYJ22.mjs"));
42
+
43
+ // src/capabilities/react-surface/index.ts
44
+ import { Capability as Capability3 } from "@dxos/app-framework";
45
+ var ReactSurface = Capability3.lazy("ReactSurface", () => import("./react-surface-EDA5VYDC.mjs"));
46
+
47
+ // src/translations.ts
48
+ var translations = [
49
+ {
50
+ "en-US": {
51
+ [Channel_exports.YouTubeChannel.typename]: {
52
+ "typename label": "YouTube Channel",
53
+ "typename label_zero": "YouTube Channels",
54
+ "typename label_one": "YouTube Channel",
55
+ "typename label_other": "YouTube Channels",
56
+ "object name placeholder": "New YouTube channel",
57
+ "add object label": "Add YouTube channel",
58
+ "rename object label": "Rename YouTube channel",
59
+ "delete object label": "Delete YouTube channel",
60
+ "object deleted label": "YouTube channel deleted"
61
+ },
62
+ [Video_exports.YouTubeVideo.typename]: {
63
+ "typename label": "Video",
64
+ "typename label_zero": "Videos",
65
+ "typename label_one": "Video",
66
+ "typename label_other": "Videos",
67
+ "object name placeholder": "New video",
68
+ "add object label": "Add video",
69
+ "rename object label": "Rename video",
70
+ "delete object label": "Delete video",
71
+ "object deleted label": "Video deleted"
72
+ },
73
+ [meta.id]: {
74
+ "plugin name": "YouTube",
75
+ "channel label": "YouTube Channel",
76
+ "video label": "Video",
77
+ "sync channel label": "Sync channel",
78
+ "sync channel error title": "Failed to sync channel",
79
+ "clear synced videos label": "Clear synced videos",
80
+ "clear synced videos error title": "Failed to clear synced videos",
81
+ "close label": "Close",
82
+ "new channel label": "New YouTube Channel",
83
+ "empty channel message": "No videos synced yet",
84
+ "no video message": "Select a video to view it",
85
+ "channel account label": "Account",
86
+ "channel account placeholder": "Select account...",
87
+ "channel sync label": "Channel Sync",
88
+ "enable background sync label": "Enable background sync",
89
+ "enabling background sync label": "Enabling...",
90
+ "disable background sync label": "Disable background sync",
91
+ "view trigger label": "View trigger"
92
+ }
93
+ }
94
+ }
95
+ ];
96
+
97
+ // src/YouTubePlugin.tsx
98
+ var YouTubePlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
99
+ activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupAppGraph, AttentionEvents.AttentionReady),
100
+ activate: AppGraphBuilder
101
+ }), AppPlugin.addBlueprintDefinitionModule({
102
+ activate: BlueprintDefinition
103
+ }), AppPlugin.addMetadataModule({
104
+ metadata: [
105
+ {
106
+ id: Channel_exports.YouTubeChannel.typename,
107
+ metadata: {
108
+ label: (object) => object.name ?? object.channelUrl ?? object.channelId ?? "YouTube",
109
+ icon: Annotation.IconAnnotation.get(Channel_exports.YouTubeChannel).pipe(Option.getOrThrow).icon,
110
+ iconHue: Annotation.IconAnnotation.get(Channel_exports.YouTubeChannel).pipe(Option.getOrThrow).hue ?? "white",
111
+ blueprints: [
112
+ youtube_default.key
113
+ ],
114
+ inputSchema: Channel_exports.CreateYouTubeChannelSchema,
115
+ createObject: (props, options) => Effect.gen(function* () {
116
+ const object = Channel_exports.make(props);
117
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
118
+ object,
119
+ target: options.target,
120
+ hidden: true,
121
+ targetNodeId: options.targetNodeId
122
+ });
123
+ })
124
+ }
125
+ },
126
+ {
127
+ id: Video_exports.YouTubeVideo.typename,
128
+ metadata: {
129
+ label: (object) => object.title,
130
+ icon: Annotation.IconAnnotation.get(Video_exports.YouTubeVideo).pipe(Option.getOrThrow).icon,
131
+ iconHue: Annotation.IconAnnotation.get(Video_exports.YouTubeVideo).pipe(Option.getOrThrow).hue ?? "white"
132
+ }
133
+ }
134
+ ]
135
+ }), AppPlugin.addSchemaModule({
136
+ schema: [
137
+ Channel_exports.YouTubeChannel,
138
+ Video_exports.YouTubeVideo
139
+ ]
140
+ }), AppPlugin.addSurfaceModule({
141
+ activate: ReactSurface
142
+ }), AppPlugin.addTranslationsModule({
143
+ translations
144
+ }), Plugin.make);
145
+ export {
146
+ ClearSyncedVideos,
147
+ Sync,
148
+ youtube_exports as YouTube,
149
+ YouTubeHandlers,
150
+ YouTubePlugin,
151
+ meta
152
+ };
153
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
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": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,iBAAiBC,cAAc;AACxC,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,uBAAuB;AAEhC,SAASC,sBAAsB;;;ACT/B,SAASC,kBAAkB;AAEpB,IAAMC,kBAAkBC,WAAWC,KAAK,mBAAmB,MAAM,OAAO,kCAAA,CAAA;;;ACF/E,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,sBAAsBC,YAAWC,KAAK,uBAAuB,MAAM,OAAO,qCAAA,CAAA;;;ACFvF,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,eAAeC,YAAWC,KAAK,gBAAgB,MAAM,OAAO,8BAAA,CAAA;;;ACGlE,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,gBAAQC,eAAeC,QAAQ,GAAG;QACjC,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;MAC1B;MACA,CAACC,cAAMC,aAAaF,QAAQ,GAAG;QAC7B,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;MAC1B;MACA,CAACG,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,sBAAsB;QACtB,4BAA4B;QAC5B,6BAA6B;QAC7B,mCAAmC;QACnC,eAAe;QACf,qBAAqB;QACrB,yBAAyB;QACzB,oBAAoB;QAEpB,yBAAyB;QACzB,+BAA+B;QAC/B,sBAAsB;QAEtB,gCAAgC;QAChC,kCAAkC;QAClC,iCAAiC;QACjC,sBAAsB;MACxB;IACF;EACF;;;;AJpCK,IAAMC,gBAAgBC,OAAOC,OAAOC,IAAAA,EAAMC,KAC/CC,UAAUC,kBAAkB;EAC1BC,aAAaC,gBAAgBC,MAAMC,oBAAoBC,eAAeC,gBAAgBC,cAAc;EACpGC,UAAUC;AACZ,CAAA,GACAV,UAAUW,6BAA6B;EAAEF,UAAUG;AAAoB,CAAA,GACvEZ,UAAUa,kBAAkB;EAC1BC,UAAU;IACR;MACEC,IAAIC,gBAAQC,eAAeC;MAC3BJ,UAAU;QACRK,OAAO,CAACC,WAAmCA,OAAOC,QAAQD,OAAOE,cAAcF,OAAOG,aAAa;QACnGC,MAAMC,WAAWC,eAAeC,IAAIX,gBAAQC,cAAc,EAAElB,KAAY6B,iBAAU,EAAEJ;QACpFK,SAASJ,WAAWC,eAAeC,IAAIX,gBAAQC,cAAc,EAAElB,KAAY6B,iBAAU,EAAEE,OAAO;QAC9FC,YAAY;UAACC,gBAAiBC;;QAC9BC,aAAalB,gBAAQmB;QACrBC,cAAe,CAACC,OAAOC,YACdC,WAAI,aAAA;AACT,gBAAMnB,SAASJ,gBAAQwB,KAAKH,KAAAA;AAC5B,iBAAO,OAAOI,UAAUC,OAAOC,eAAeC,WAAW;YACvDxB;YACAyB,QAAQP,QAAQO;YAChBC,QAAQ;YACRC,cAAcT,QAAQS;UACxB,CAAA;QACF,CAAA;MACJ;IACF;IACA;MACEhC,IAAIiC,cAAMC,aAAa/B;MACvBJ,UAAU;QACRK,OAAO,CAACC,WAA+BA,OAAO8B;QAC9C1B,MAAMC,WAAWC,eAAeC,IAAIqB,cAAMC,YAAY,EAAElD,KAAY6B,iBAAU,EAAEJ;QAChFK,SAASJ,WAAWC,eAAeC,IAAIqB,cAAMC,YAAY,EAAElD,KAAY6B,iBAAU,EAAEE,OAAO;MAC5F;IACF;;AAEJ,CAAA,GACA9B,UAAUmD,gBAAgB;EACxBC,QAAQ;IAACpC,gBAAQC;IAAgB+B,cAAMC;;AACzC,CAAA,GACAjD,UAAUqD,iBAAiB;EAAE5C,UAAU6C;AAAa,CAAA,GACpDtD,UAAUuD,sBAAsB;EAAEC;AAAa,CAAA,GAC/C5D,OAAO4C,IAAI;",
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"]
7
+ }
@@ -0,0 +1 @@
1
+ {"inputs":{"src/meta.ts":{"bytes":1822,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/operations/services/google-credentials.ts":{"bytes":8745,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/operations/apis/youtube/types.ts":{"bytes":23707,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true}],"format":"esm"},"src/operations/apis/youtube/api.ts":{"bytes":17186,"imports":[{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClientRequest","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/operations/services/google-credentials.ts","kind":"import-statement","original":"../../services/google-credentials"},{"path":"src/operations/apis/youtube/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/operations/apis/youtube/index.ts":{"bytes":562,"imports":[{"path":"src/operations/apis/youtube/api.ts","kind":"import-statement","original":"./api"},{"path":"src/operations/apis/youtube/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/operations/apis/index.ts":{"bytes":540,"imports":[{"path":"src/operations/apis/youtube/index.ts","kind":"import-statement","original":"./youtube"}],"format":"esm"},"src/types/types.ts":{"bytes":814,"imports":[],"format":"esm"},"src/types/Channel.ts":{"bytes":8955,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"format":"esm"},"src/types/Video.ts":{"bytes":7281,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":749,"imports":[{"path":"src/types/types.ts","kind":"import-statement","original":"./types"},{"path":"src/types/Channel.ts","kind":"import-statement","original":"./Channel"},{"path":"src/types/Video.ts","kind":"import-statement","original":"./Video"}],"format":"esm"},"src/operations/definitions.ts":{"bytes":7475,"imports":[{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/operations/clear-synced-videos.ts":{"bytes":6185,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/operations/transcript.ts":{"bytes":5127,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"youtube-caption-extractor","kind":"dynamic-import","external":true}],"format":"esm"},"src/operations/sync.ts":{"bytes":38146,"imports":[{"path":"@effect/platform/FetchHttpClient","kind":"import-statement","external":true},{"path":"effect/Chunk","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"effect/Stream","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/operations/apis/index.ts","kind":"import-statement","original":"./apis"},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"},{"path":"src/operations/services/google-credentials.ts","kind":"import-statement","original":"./services/google-credentials"},{"path":"src/operations/transcript.ts","kind":"import-statement","original":"./transcript"}],"format":"esm"},"src/operations/index.ts":{"bytes":1261,"imports":[{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"src/operations/apis/index.ts","kind":"import-statement","original":"./apis"},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"},{"path":"src/operations/clear-synced-videos.ts","kind":"dynamic-import","original":"./clear-synced-videos"},{"path":"src/operations/sync.ts","kind":"dynamic-import","original":"./sync"}],"format":"esm"},"src/blueprints/youtube.ts":{"bytes":5249,"imports":[{"path":"@dxos/blueprints","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/operations/index.ts","kind":"import-statement","original":"../operations"}],"format":"esm"},"src/blueprints/index.ts":{"bytes":648,"imports":[{"path":"src/blueprints/youtube.ts","kind":"import-statement","original":"./youtube"}],"format":"esm"},"src/capabilities/app-graph-builder/app-graph-builder.ts":{"bytes":23196,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-atom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-automation","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"src/operations/index.ts","kind":"import-statement","original":"../../operations"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"src/capabilities/app-graph-builder/index.ts":{"bytes":953,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/app-graph-builder/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"}],"format":"esm"},"src/capabilities/blueprint-definition/blueprint-definition.ts":{"bytes":1998,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"src/blueprints/index.ts","kind":"import-statement","original":"../../blueprints"}],"format":"esm"},"src/capabilities/blueprint-definition/index.ts":{"bytes":987,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/blueprint-definition/blueprint-definition.ts","kind":"dynamic-import","original":"./blueprint-definition"}],"format":"esm"},"src/containers/ChannelArticle/ChannelArticle.tsx":{"bytes":14202,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/types/Video.ts","kind":"import-statement","original":"../../types/Video"}],"format":"esm"},"src/containers/ChannelArticle/index.ts":{"bytes":686,"imports":[{"path":"src/containers/ChannelArticle/ChannelArticle.tsx","kind":"import-statement","original":"./ChannelArticle"}],"format":"esm"},"src/containers/ChannelSettings/ChannelSettings.tsx":{"bytes":4207,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/containers/ChannelSettings/index.ts":{"bytes":698,"imports":[{"path":"src/containers/ChannelSettings/ChannelSettings.tsx","kind":"import-statement","original":"./ChannelSettings"}],"format":"esm"},"src/containers/VideoArticle/VideoArticle.tsx":{"bytes":12805,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/containers/VideoArticle/index.ts":{"bytes":666,"imports":[{"path":"src/containers/VideoArticle/VideoArticle.tsx","kind":"import-statement","original":"./VideoArticle"}],"format":"esm"},"src/containers/VideoCard/VideoCard.tsx":{"bytes":10588,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/containers/VideoCard/index.ts":{"bytes":634,"imports":[{"path":"src/containers/VideoCard/VideoCard.tsx","kind":"import-statement","original":"./VideoCard"}],"format":"esm"},"src/containers/index.ts":{"bytes":2391,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/containers/ChannelArticle/index.ts","kind":"dynamic-import","original":"./ChannelArticle"},{"path":"src/containers/ChannelSettings/index.ts","kind":"dynamic-import","original":"./ChannelSettings"},{"path":"src/containers/VideoArticle/index.ts","kind":"dynamic-import","original":"./VideoArticle"},{"path":"src/containers/VideoCard/index.ts","kind":"dynamic-import","original":"./VideoCard"}],"format":"esm"},"src/capabilities/react-surface/react-surface.tsx":{"bytes":7794,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"src/containers/index.ts","kind":"import-statement","original":"../../containers"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"src/capabilities/react-surface/index.ts":{"bytes":919,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":725,"imports":[{"path":"src/capabilities/app-graph-builder/index.ts","kind":"import-statement","original":"./app-graph-builder"},{"path":"src/capabilities/blueprint-definition/index.ts","kind":"import-statement","original":"./blueprint-definition"},{"path":"src/capabilities/react-surface/index.ts","kind":"import-statement","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":6863,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/YouTubePlugin.tsx":{"bytes":10192,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/operations","kind":"import-statement","external":true},{"path":"src/blueprints/index.ts","kind":"import-statement","original":"./blueprints"},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":657,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/operations/index.ts","kind":"import-statement","original":"./operations"},{"path":"src/YouTubePlugin.tsx","kind":"import-statement","original":"./YouTubePlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2397},"dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/ChannelSettings/index.ts","inputs":{"src/containers/ChannelSettings/ChannelSettings.tsx":{"bytesInOutput":1382},"src/containers/ChannelSettings/index.ts":{"bytesInOutput":47}},"bytes":1662},"dist/lib/browser/VideoArticle-FC4A6E7B.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6962},"dist/lib/browser/VideoArticle-FC4A6E7B.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/VideoArticle/index.ts","inputs":{"src/containers/VideoArticle/VideoArticle.tsx":{"bytesInOutput":4050},"src/containers/VideoArticle/index.ts":{"bytesInOutput":41}},"bytes":4309},"dist/lib/browser/VideoCard-CCPXDCB7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5661},"dist/lib/browser/VideoCard-CCPXDCB7.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/VideoCard/index.ts","inputs":{"src/containers/VideoCard/VideoCard.tsx":{"bytesInOutput":3323},"src/containers/VideoCard/index.ts":{"bytesInOutput":35}},"bytes":3561},"dist/lib/browser/react-surface-EDA5VYDC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5118},"dist/lib/browser/react-surface-EDA5VYDC.mjs":{"imports":[{"path":"dist/lib/browser/chunk-DFRSBBSO.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"dist/lib/browser/ChannelArticle-CDQR4BBY.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/ChannelSettings-ZYUNW3VS.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/VideoArticle-FC4A6E7B.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/VideoCard-CCPXDCB7.mjs","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"src/capabilities/react-surface/react-surface.tsx","inputs":{"src/capabilities/react-surface/react-surface.tsx":{"bytesInOutput":1709},"src/containers/index.ts":{"bytesInOutput":314}},"bytes":2448},"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9377},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-DFRSBBSO.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-MUE22YUM.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-Z3DGTMKC.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-C26XKDK2.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/operations","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/app-graph-builder-MJY6A6SN.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/blueprint-definition-FRYUYJ22.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-EDA5VYDC.mjs","kind":"dynamic-import"}],"exports":["ClearSyncedVideos","Sync","YouTube","YouTubeHandlers","YouTubePlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/YouTubePlugin.tsx":{"bytesInOutput":2226},"src/capabilities/app-graph-builder/index.ts":{"bytesInOutput":158},"src/capabilities/index.ts":{"bytesInOutput":0},"src/capabilities/blueprint-definition/index.ts":{"bytesInOutput":185},"src/capabilities/react-surface/index.ts":{"bytesInOutput":164},"src/translations.ts":{"bytesInOutput":2000}},"bytes":5535},"dist/lib/browser/blueprints/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/blueprints/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MUE22YUM.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-Z3DGTMKC.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-C26XKDK2.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["YouTubeBlueprint"],"entryPoint":"src/blueprints/index.ts","inputs":{},"bytes":336},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["Channel","Video","YouTubeOperation"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":290},"dist/lib/browser/clear-synced-videos-EVMJIZPD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3107},"dist/lib/browser/clear-synced-videos-EVMJIZPD.mjs":{"imports":[{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/operations/clear-synced-videos.ts","inputs":{"src/operations/clear-synced-videos.ts":{"bytesInOutput":1565}},"bytes":1896},"dist/lib/browser/sync-423Q4BDD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21313},"dist/lib/browser/sync-423Q4BDD.mjs":{"imports":[{"path":"dist/lib/browser/chunk-C26XKDK2.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect/platform/FetchHttpClient","kind":"import-statement","external":true},{"path":"effect/Chunk","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"effect/Stream","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"youtube-caption-extractor","kind":"dynamic-import","external":true}],"exports":["default"],"entryPoint":"src/operations/sync.ts","inputs":{"src/operations/sync.ts":{"bytesInOutput":9926},"src/operations/transcript.ts":{"bytesInOutput":1130}},"bytes":11468},"dist/lib/browser/app-graph-builder-MJY6A6SN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10620},"dist/lib/browser/app-graph-builder-MJY6A6SN.mjs":{"imports":[{"path":"dist/lib/browser/chunk-DFRSBBSO.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-Z3DGTMKC.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-C26XKDK2.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-atom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention","kind":"import-statement","external":true},{"path":"@dxos/plugin-automation","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/app-graph-builder/app-graph-builder.ts","inputs":{"src/capabilities/app-graph-builder/app-graph-builder.ts":{"bytesInOutput":6262}},"bytes":6726},"dist/lib/browser/chunk-DFRSBBSO.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":872},"dist/lib/browser/chunk-DFRSBBSO.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":420}},"bytes":499},"dist/lib/browser/blueprint-definition-FRYUYJ22.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1045},"dist/lib/browser/blueprint-definition-FRYUYJ22.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MUE22YUM.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-Z3DGTMKC.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-C26XKDK2.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/blueprint-definition/blueprint-definition.ts","inputs":{"src/capabilities/blueprint-definition/blueprint-definition.ts":{"bytesInOutput":355}},"bytes":778},"dist/lib/browser/chunk-MUE22YUM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2485},"dist/lib/browser/chunk-MUE22YUM.mjs":{"imports":[{"path":"dist/lib/browser/chunk-P67QEKBQ.mjs","kind":"import-statement"},{"path":"@dxos/blueprints","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["youtube_default"],"inputs":{"src/blueprints/youtube.ts":{"bytesInOutput":1568},"src/blueprints/index.ts":{"bytesInOutput":0}},"bytes":1741},"dist/lib/browser/chunk-Z3DGTMKC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":591},"dist/lib/browser/chunk-Z3DGTMKC.mjs":{"imports":[{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"dist/lib/browser/clear-synced-videos-EVMJIZPD.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/sync-423Q4BDD.mjs","kind":"dynamic-import"}],"exports":["YouTubeHandlers"],"inputs":{"src/operations/index.ts":{"bytesInOutput":192}},"bytes":294},"dist/lib/browser/chunk-C26XKDK2.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":24537},"dist/lib/browser/chunk-C26XKDK2.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClientRequest","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true}],"exports":["GoogleCredentials","youtube_exports"],"inputs":{"src/operations/services/google-credentials.ts":{"bytesInOutput":2085},"src/operations/apis/youtube/index.ts":{"bytesInOutput":911},"src/operations/apis/youtube/api.ts":{"bytesInOutput":3652},"src/operations/apis/youtube/types.ts":{"bytesInOutput":5083},"src/operations/apis/index.ts":{"bytesInOutput":0}},"bytes":12088},"dist/lib/browser/chunk-P67QEKBQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3627},"dist/lib/browser/chunk-P67QEKBQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-GFRR4TTX.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true}],"exports":["ClearSyncedVideos","Sync"],"inputs":{"src/operations/definitions.ts":{"bytesInOutput":1995}},"bytes":2228},"dist/lib/browser/chunk-GFRR4TTX.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4897},"dist/lib/browser/chunk-GFRR4TTX.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"exports":["Channel_exports","YouTubeOperation"],"inputs":{"src/types/types.ts":{"bytesInOutput":27},"src/types/index.ts":{"bytesInOutput":0},"src/types/Channel.ts":{"bytesInOutput":2204}},"bytes":2425},"dist/lib/browser/ChannelArticle-CDQR4BBY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7695},"dist/lib/browser/ChannelArticle-CDQR4BBY.mjs":{"imports":[{"path":"dist/lib/browser/chunk-YMDT37TA.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/ChannelArticle/index.ts","inputs":{"src/containers/ChannelArticle/ChannelArticle.tsx":{"bytesInOutput":4038},"src/containers/ChannelArticle/index.ts":{"bytesInOutput":45}},"bytes":4366},"dist/lib/browser/chunk-YMDT37TA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3451},"dist/lib/browser/chunk-YMDT37TA.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"exports":["Video_exports","YouTubeVideo"],"inputs":{"src/types/Video.ts":{"bytesInOutput":1792}},"bytes":1955},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}