@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,73 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ Channel_exports
4
+ } from "./chunk-6BUJ2DQX.mjs";
5
+ import {
6
+ Video_exports
7
+ } from "./chunk-CZSLL3XQ.mjs";
8
+
9
+ // src/operations/definitions.ts
10
+ import { Operation } from "@dxos/operation";
11
+ import * as Schema from "effect/Schema";
12
+ import { Database, Feed, Ref } from "@dxos/echo";
13
+ import { CredentialsService } from "@dxos/functions";
14
+ var Sync = Operation.make({
15
+ meta: {
16
+ key: "dxos.org/function/youtube/sync",
17
+ name: "Sync YouTube Channel",
18
+ description: "Sync videos from a YouTube channel to the feed."
19
+ },
20
+ input: Schema.Struct({
21
+ channel: Ref.Ref(Channel_exports.YouTubeChannel).annotations({
22
+ description: "Reference to the YouTube channel to sync videos from."
23
+ }),
24
+ restrictedMode: Schema.Boolean.pipe(Schema.annotations({
25
+ description: "Use restricted mode to limit to max 20 videos. Reduces API calls. Useful for testing or quick syncs."
26
+ }), Schema.optional),
27
+ includeTranscripts: Schema.Boolean.pipe(Schema.annotations({
28
+ 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)."
29
+ }), Schema.optional)
30
+ }),
31
+ output: Schema.Struct({
32
+ newVideos: Schema.Number,
33
+ channelTitle: Schema.String.pipe(Schema.optional)
34
+ }),
35
+ types: [
36
+ Channel_exports.YouTubeChannel,
37
+ Video_exports.YouTubeVideo
38
+ ],
39
+ services: [
40
+ Database.Service,
41
+ Feed.Service,
42
+ CredentialsService
43
+ ]
44
+ });
45
+ var ClearSyncedVideos = Operation.make({
46
+ meta: {
47
+ key: "dxos.org/function/youtube/clear-synced-videos",
48
+ name: "Clear Synced YouTube Videos",
49
+ description: "Remove all synced videos from the channel by replacing its feed with a new empty feed."
50
+ },
51
+ input: Schema.Struct({
52
+ channel: Ref.Ref(Channel_exports.YouTubeChannel).annotations({
53
+ description: "Reference to the YouTube channel whose synced videos should be cleared."
54
+ })
55
+ }),
56
+ output: Schema.Struct({
57
+ removedVideos: Schema.Number
58
+ }),
59
+ types: [
60
+ Channel_exports.YouTubeChannel,
61
+ Video_exports.YouTubeVideo
62
+ ],
63
+ services: [
64
+ Database.Service,
65
+ Feed.Service
66
+ ]
67
+ });
68
+
69
+ export {
70
+ Sync,
71
+ ClearSyncedVideos
72
+ };
73
+ //# sourceMappingURL=chunk-JSGRZMG3.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,10 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/operations/index.ts
4
+ import { OperationHandlerSet } from "@dxos/operation";
5
+ var YouTubeHandlers = OperationHandlerSet.lazy(() => import("./clear-synced-videos-5UCH6XHL.mjs"), () => import("./sync-CEF5DX2J.mjs"));
6
+
7
+ export {
8
+ YouTubeHandlers
9
+ };
10
+ //# sourceMappingURL=chunk-M4S6BE47.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,67 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ClearSyncedVideos
4
+ } from "./chunk-JSGRZMG3.mjs";
5
+ import "./chunk-6BUJ2DQX.mjs";
6
+ import {
7
+ Video_exports
8
+ } from "./chunk-CZSLL3XQ.mjs";
9
+ import "./chunk-HSLMI22Q.mjs";
10
+
11
+ // src/operations/clear-synced-videos.ts
12
+ import * as Effect from "effect/Effect";
13
+ import { Database, Feed, Filter, Obj, Ref } from "@dxos/echo";
14
+ import { log } from "@dxos/log";
15
+ import { Operation } from "@dxos/operation";
16
+ var __dxlog_file = "/Users/mykola/dev/dxos/packages/plugins/plugin-youtube/src/operations/clear-synced-videos.ts";
17
+ var handler = ClearSyncedVideos.pipe(Operation.withHandler(({ channel: channelRef }) => Effect.gen(function* () {
18
+ log("clearing youtube channel synced videos", {
19
+ channel: channelRef.dxn.toString()
20
+ }, {
21
+ F: __dxlog_file,
22
+ L: 18,
23
+ S: this,
24
+ C: (f, a) => f(...a)
25
+ });
26
+ const channel = yield* Database.load(channelRef);
27
+ const oldFeed = yield* Database.load(channel.feed);
28
+ const videos = yield* Feed.runQuery(oldFeed, Filter.type(Video_exports.YouTubeVideo));
29
+ log("removing synced videos", {
30
+ count: videos.length
31
+ }, {
32
+ F: __dxlog_file,
33
+ L: 23,
34
+ S: this,
35
+ C: (f, a) => f(...a)
36
+ });
37
+ const newFeed = Feed.make();
38
+ yield* Database.add(newFeed);
39
+ Obj.setParent(newFeed, channel);
40
+ Obj.change(channel, (mutable) => {
41
+ mutable.feed = Ref.make(newFeed);
42
+ delete mutable.lastSyncedAt;
43
+ });
44
+ if (videos.length > 0) {
45
+ yield* Feed.remove(oldFeed, videos);
46
+ }
47
+ for (const video of videos) {
48
+ yield* Database.remove(video);
49
+ }
50
+ yield* Database.remove(oldFeed);
51
+ log("replaced youtube channel feed", {
52
+ removedVideos: videos.length
53
+ }, {
54
+ F: __dxlog_file,
55
+ L: 44,
56
+ S: this,
57
+ C: (f, a) => f(...a)
58
+ });
59
+ return {
60
+ removedVideos: videos.length
61
+ };
62
+ })));
63
+ var clear_synced_videos_default = handler;
64
+ export {
65
+ clear_synced_videos_default as default
66
+ };
67
+ //# sourceMappingURL=clear-synced-videos-5UCH6XHL.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,154 @@
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
+ import {
12
+ youtube_exports
13
+ } from "./chunk-JM5SBBP5.mjs";
14
+ import {
15
+ ClearSyncedVideos,
16
+ 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";
24
+ import "./chunk-HSLMI22Q.mjs";
25
+
26
+ // src/YouTubePlugin.tsx
27
+ import * as Effect from "effect/Effect";
28
+ import * as Option from "effect/Option";
29
+ import { ActivationEvent, Plugin } from "@dxos/app-framework";
30
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
31
+ import { Annotation } from "@dxos/echo";
32
+ import { Operation } from "@dxos/operation";
33
+ import { AttentionEvents } from "@dxos/plugin-attention";
34
+ 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"));
47
+
48
+ // src/translations.ts
49
+ var translations = [
50
+ {
51
+ "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"
62
+ },
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"
73
+ },
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"
93
+ }
94
+ }
95
+ }
96
+ ];
97
+
98
+ // src/YouTubePlugin.tsx
99
+ var YouTubePlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
100
+ activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupAppGraph, AttentionEvents.AttentionReady),
101
+ activate: AppGraphBuilder
102
+ }), AppPlugin.addBlueprintDefinitionModule({
103
+ activate: BlueprintDefinition
104
+ }), AppPlugin.addMetadataModule({
105
+ metadata: [
106
+ {
107
+ id: Channel_exports.YouTubeChannel.typename,
108
+ metadata: {
109
+ 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
+ blueprints: [
113
+ youtube_default.key
114
+ ],
115
+ inputSchema: Channel_exports.CreateYouTubeChannelSchema,
116
+ createObject: (props, options) => Effect.gen(function* () {
117
+ const object = Channel_exports.make(props);
118
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
119
+ object,
120
+ target: options.target,
121
+ hidden: true,
122
+ targetNodeId: options.targetNodeId
123
+ });
124
+ })
125
+ }
126
+ },
127
+ {
128
+ id: Video_exports.YouTubeVideo.typename,
129
+ metadata: {
130
+ 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
+ }
134
+ }
135
+ ]
136
+ }), AppPlugin.addSchemaModule({
137
+ schema: [
138
+ Channel_exports.YouTubeChannel,
139
+ Video_exports.YouTubeVideo
140
+ ]
141
+ }), AppPlugin.addSurfaceModule({
142
+ activate: ReactSurface
143
+ }), AppPlugin.addTranslationsModule({
144
+ translations
145
+ }), Plugin.make);
146
+ export {
147
+ ClearSyncedVideos,
148
+ Sync,
149
+ youtube_exports as YouTube,
150
+ YouTubeHandlers,
151
+ YouTubePlugin,
152
+ meta
153
+ };
154
+ //# 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/node-esm/ChannelSettings-DM2HWNKO.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2398},"dist/lib/node-esm/ChannelSettings-DM2HWNKO.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":1754},"dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6963},"dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":4401},"dist/lib/node-esm/VideoCard-FOWQZK75.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5662},"dist/lib/node-esm/VideoCard-FOWQZK75.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":3653},"dist/lib/node-esm/react-surface-5DJAQPHJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5119},"dist/lib/node-esm/react-surface-5DJAQPHJ.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CX6MV3QM.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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/node-esm/ChannelArticle-GQ64BO7V.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/ChannelSettings-DM2HWNKO.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/VideoArticle-WLTWZO3K.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/VideoCard-FOWQZK75.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":2540},"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9378},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CX6MV3QM.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-5KNC2JMP.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-M4S6BE47.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JM5SBBP5.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JSGRZMG3.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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/node-esm/app-graph-builder-IU5TBAXN.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/react-surface-5DJAQPHJ.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":5627},"dist/lib/node-esm/blueprints/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/blueprints/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-5KNC2JMP.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-M4S6BE47.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JM5SBBP5.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JSGRZMG3.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"}],"exports":["YouTubeBlueprint"],"entryPoint":"src/blueprints/index.ts","inputs":{},"bytes":428},"dist/lib/node-esm/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/types/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"}],"exports":["Channel","Video","YouTubeOperation"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":382},"dist/lib/node-esm/clear-synced-videos-5UCH6XHL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3108},"dist/lib/node-esm/clear-synced-videos-5UCH6XHL.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-JSGRZMG3.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":1988},"dist/lib/node-esm/sync-CEF5DX2J.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21314},"dist/lib/node-esm/sync-CEF5DX2J.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-JM5SBBP5.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JSGRZMG3.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":11560},"dist/lib/node-esm/app-graph-builder-IU5TBAXN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10621},"dist/lib/node-esm/app-graph-builder-IU5TBAXN.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CX6MV3QM.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-M4S6BE47.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JM5SBBP5.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JSGRZMG3.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":6818},"dist/lib/node-esm/chunk-CX6MV3QM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":874},"dist/lib/node-esm/chunk-CX6MV3QM.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":420}},"bytes":592},"dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1046},"dist/lib/node-esm/blueprint-definition-W264MZ3D.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-5KNC2JMP.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-M4S6BE47.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JM5SBBP5.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-JSGRZMG3.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":870},"dist/lib/node-esm/chunk-5KNC2JMP.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2486},"dist/lib/node-esm/chunk-5KNC2JMP.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-JSGRZMG3.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":1833},"dist/lib/node-esm/chunk-M4S6BE47.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":593},"dist/lib/node-esm/chunk-M4S6BE47.mjs":{"imports":[{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/clear-synced-videos-5UCH6XHL.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/sync-CEF5DX2J.mjs","kind":"dynamic-import"}],"exports":["YouTubeHandlers"],"inputs":{"src/operations/index.ts":{"bytesInOutput":192}},"bytes":387},"dist/lib/node-esm/chunk-JM5SBBP5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":24538},"dist/lib/node-esm/chunk-JM5SBBP5.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":12180},"dist/lib/node-esm/chunk-JSGRZMG3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3628},"dist/lib/node-esm/chunk-JSGRZMG3.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-6BUJ2DQX.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.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":2320},"dist/lib/node-esm/chunk-6BUJ2DQX.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4898},"dist/lib/node-esm/chunk-6BUJ2DQX.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":2517},"dist/lib/node-esm/ChannelArticle-GQ64BO7V.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7696},"dist/lib/node-esm/ChannelArticle-GQ64BO7V.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CZSLL3XQ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":4458},"dist/lib/node-esm/chunk-CZSLL3XQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3452},"dist/lib/node-esm/chunk-CZSLL3XQ.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.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":2047},"dist/lib/node-esm/chunk-HSLMI22Q.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/chunk-HSLMI22Q.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":327}}}
@@ -0,0 +1,78 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-CX6MV3QM.mjs";
5
+ import {
6
+ Channel_exports
7
+ } from "./chunk-6BUJ2DQX.mjs";
8
+ import {
9
+ Video_exports
10
+ } from "./chunk-CZSLL3XQ.mjs";
11
+ import "./chunk-HSLMI22Q.mjs";
12
+
13
+ // src/capabilities/react-surface/react-surface.tsx
14
+ import * as Effect from "effect/Effect";
15
+ import React from "react";
16
+ import { Capabilities, Capability } from "@dxos/app-framework";
17
+ import { Surface } from "@dxos/app-framework/ui";
18
+
19
+ // src/containers/index.ts
20
+ import { lazy } from "react";
21
+ var ChannelArticle = lazy(() => import("./ChannelArticle-GQ64BO7V.mjs"));
22
+ var ChannelSettings = lazy(() => import("./ChannelSettings-DM2HWNKO.mjs"));
23
+ var VideoArticle = lazy(() => import("./VideoArticle-WLTWZO3K.mjs"));
24
+ var VideoCard = lazy(() => import("./VideoCard-FOWQZK75.mjs"));
25
+
26
+ // src/capabilities/react-surface/react-surface.tsx
27
+ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
28
+ Surface.create({
29
+ id: `${meta.id}.channel`,
30
+ role: [
31
+ "article"
32
+ ],
33
+ filter: (data) => Channel_exports.instanceOf(data.subject),
34
+ component: ({ data }) => {
35
+ return /* @__PURE__ */ React.createElement(ChannelArticle, {
36
+ subject: data.subject,
37
+ attendableId: data.attendableId
38
+ });
39
+ }
40
+ }),
41
+ Surface.create({
42
+ id: `${meta.id}.video`,
43
+ role: [
44
+ "article",
45
+ "section"
46
+ ],
47
+ filter: (data) => typeof data.attendableId === "string" && Video_exports.instanceOf(data.subject) && Channel_exports.instanceOf(data.companionTo),
48
+ component: ({ data: { attendableId, companionTo, subject }, role }) => {
49
+ return /* @__PURE__ */ React.createElement(VideoArticle, {
50
+ role,
51
+ subject,
52
+ channel: companionTo,
53
+ attendableId
54
+ });
55
+ }
56
+ }),
57
+ Surface.create({
58
+ id: `${meta.id}.video-card`,
59
+ role: "card--content",
60
+ filter: (data) => Video_exports.instanceOf(data?.subject),
61
+ component: ({ data: { subject }, role }) => /* @__PURE__ */ React.createElement(VideoCard, {
62
+ subject,
63
+ role
64
+ })
65
+ }),
66
+ Surface.create({
67
+ id: `${meta.id}.channel.companion.settings`,
68
+ role: "object-settings",
69
+ filter: (data) => Channel_exports.instanceOf(data.subject),
70
+ component: ({ data }) => /* @__PURE__ */ React.createElement(ChannelSettings, {
71
+ subject: data.subject
72
+ })
73
+ })
74
+ ])));
75
+ export {
76
+ react_surface_default as default
77
+ };
78
+ //# sourceMappingURL=react-surface-5DJAQPHJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\n\nimport { ChannelArticle, ChannelSettings, VideoArticle, VideoCard } from '../../containers';\nimport { meta } from '../../meta';\nimport { Channel, Video } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: `${meta.id}.channel`,\n role: ['article'],\n filter: (data): data is { attendableId?: string; subject: Channel.YouTubeChannel } =>\n Channel.instanceOf(data.subject),\n component: ({ data }) => {\n return <ChannelArticle subject={data.subject} attendableId={data.attendableId} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.video`,\n role: ['article', 'section'],\n filter: (\n data,\n ): data is { attendableId: string; subject: Video.YouTubeVideo; companionTo: Channel.YouTubeChannel } =>\n typeof data.attendableId === 'string' &&\n Video.instanceOf(data.subject) &&\n Channel.instanceOf(data.companionTo),\n component: ({ data: { attendableId, companionTo, subject }, role }) => {\n return <VideoArticle role={role} subject={subject} channel={companionTo} attendableId={attendableId} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.video-card`,\n role: 'card--content',\n filter: (data): data is { subject: Video.YouTubeVideo } => Video.instanceOf(data?.subject),\n component: ({ data: { subject }, role }) => <VideoCard subject={subject} role={role} />,\n }),\n Surface.create({\n id: `${meta.id}.channel.companion.settings`,\n role: 'object-settings',\n filter: (data): data is { subject: Channel.YouTubeChannel } => Channel.instanceOf(data.subject),\n component: ({ data }) => <ChannelSettings subject={data.subject} />,\n }),\n ]),\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ComponentType, lazy, type LazyExoticComponent } from 'react';\n\nimport type { ChannelArticleProps } from './ChannelArticle/ChannelArticle';\nimport type { ChannelSettingsProps } from './ChannelSettings/ChannelSettings';\nimport type { VideoArticleProps } from './VideoArticle/VideoArticle';\nimport type { VideoCardProps } from './VideoCard/VideoCard';\n\nexport type { ChannelArticleProps, ChannelSettingsProps, VideoArticleProps, VideoCardProps };\n\nexport const ChannelArticle: LazyExoticComponent<ComponentType<ChannelArticleProps>> = lazy(\n () => import('./ChannelArticle'),\n);\n\nexport const ChannelSettings: LazyExoticComponent<ComponentType<ChannelSettingsProps>> = lazy(\n () => import('./ChannelSettings'),\n);\n\nexport const VideoArticle: LazyExoticComponent<ComponentType<VideoArticleProps>> = lazy(() => import('./VideoArticle'));\n\nexport const VideoCard: LazyExoticComponent<ComponentType<VideoCardProps>> = lazy(() => import('./VideoCard'));\n"],
5
+ "mappings": ";;;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;;;ACJxB,SAA6BC,YAAsC;AAS5D,IAAMC,iBAA0EC,KACrF,MAAM,OAAO,+BAAA,CAAA;AAGR,IAAMC,kBAA4ED,KACvF,MAAM,OAAO,gCAAA,CAAA;AAGR,IAAME,eAAsEF,KAAK,MAAM,OAAO,6BAAA,CAAA;AAE9F,IAAMG,YAAgEH,KAAK,MAAM,OAAO,0BAAA,CAAA;;;ADT/F,IAAA,wBAAeI,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;MAAC;;IACPC,QAAQ,CAACC,SACPC,gBAAQC,WAAWF,KAAKG,OAAO;IACjCC,WAAW,CAAC,EAAEJ,KAAI,MAAE;AAClB,aAAO,sBAAA,cAACK,gBAAAA;QAAeF,SAASH,KAAKG;QAASG,cAAcN,KAAKM;;IACnE;EACF,CAAA;EACAZ,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CACNC,SAEA,OAAOA,KAAKM,iBAAiB,YAC7BC,cAAML,WAAWF,KAAKG,OAAO,KAC7BF,gBAAQC,WAAWF,KAAKQ,WAAW;IACrCJ,WAAW,CAAC,EAAEJ,MAAM,EAAEM,cAAcE,aAAaL,QAAO,GAAIL,KAAI,MAAE;AAChE,aAAO,sBAAA,cAACW,cAAAA;QAAaX;QAAYK;QAAkBO,SAASF;QAAaF;;IAC3E;EACF,CAAA;EACAZ,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SAAkDO,cAAML,WAAWF,MAAMG,OAAAA;IAClFC,WAAW,CAAC,EAAEJ,MAAM,EAAEG,QAAO,GAAIL,KAAI,MAAO,sBAAA,cAACa,WAAAA;MAAUR;MAAkBL;;EAC3E,CAAA;EACAJ,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SAAsDC,gBAAQC,WAAWF,KAAKG,OAAO;IAC9FC,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACY,iBAAAA;MAAgBT,SAASH,KAAKG;;EAC1D,CAAA;CACD,CAAA,CAAA;",
6
+ "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "lazy", "ChannelArticle", "lazy", "ChannelSettings", "VideoArticle", "VideoCard", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "Channel", "instanceOf", "subject", "component", "ChannelArticle", "attendableId", "Video", "companionTo", "VideoArticle", "channel", "VideoCard", "ChannelSettings"]
7
+ }