googlevideo 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +93 -45
  2. package/dist/protos/generated/misc/common.d.ts +180 -6
  3. package/dist/protos/generated/misc/common.js +282 -19
  4. package/dist/protos/generated/misc/common.js.map +1 -0
  5. package/dist/protos/generated/video_streaming/buffered_range.d.ts +10 -10
  6. package/dist/protos/generated/video_streaming/buffered_range.js +20 -19
  7. package/dist/protos/generated/video_streaming/buffered_range.js.map +1 -0
  8. package/dist/protos/generated/video_streaming/client_abr_state.d.ts +22 -11
  9. package/dist/protos/generated/video_streaming/client_abr_state.js +133 -50
  10. package/dist/protos/generated/video_streaming/client_abr_state.js.map +1 -0
  11. package/dist/protos/generated/video_streaming/crypto_params.d.ts +2 -7
  12. package/dist/protos/generated/video_streaming/crypto_params.js +1 -7
  13. package/dist/protos/generated/video_streaming/crypto_params.js.map +1 -0
  14. package/dist/protos/generated/video_streaming/format_initialization_metadata.d.ts +6 -6
  15. package/dist/protos/generated/video_streaming/format_initialization_metadata.js +32 -21
  16. package/dist/protos/generated/video_streaming/format_initialization_metadata.js.map +1 -0
  17. package/dist/protos/generated/video_streaming/format_selection_config.d.ts +12 -0
  18. package/dist/protos/generated/video_streaming/format_selection_config.js +68 -0
  19. package/dist/protos/generated/video_streaming/format_selection_config.js.map +1 -0
  20. package/dist/protos/generated/video_streaming/{encrypted_player_request.d.ts → innertube_request.d.ts} +11 -6
  21. package/dist/protos/generated/video_streaming/{encrypted_player_request.js → innertube_request.js} +64 -20
  22. package/dist/protos/generated/video_streaming/innertube_request.js.map +1 -0
  23. package/dist/protos/generated/video_streaming/live_metadata.d.ts +8 -5
  24. package/dist/protos/generated/video_streaming/live_metadata.js +57 -26
  25. package/dist/protos/generated/video_streaming/live_metadata.js.map +1 -0
  26. package/dist/protos/generated/video_streaming/media_capabilities.js +1 -0
  27. package/dist/protos/generated/video_streaming/media_capabilities.js.map +1 -0
  28. package/dist/protos/generated/video_streaming/media_header.d.ts +5 -10
  29. package/dist/protos/generated/video_streaming/media_header.js +27 -23
  30. package/dist/protos/generated/video_streaming/media_header.js.map +1 -0
  31. package/dist/protos/generated/video_streaming/next_request_policy.d.ts +3 -0
  32. package/dist/protos/generated/video_streaming/next_request_policy.js +31 -0
  33. package/dist/protos/generated/video_streaming/next_request_policy.js.map +1 -0
  34. package/dist/protos/generated/video_streaming/onesie_header.d.ts +7 -7
  35. package/dist/protos/generated/video_streaming/onesie_header.js +15 -14
  36. package/dist/protos/generated/video_streaming/onesie_header.js.map +1 -0
  37. package/dist/protos/generated/video_streaming/onesie_header_type.d.ts +9 -23
  38. package/dist/protos/generated/video_streaming/onesie_header_type.js +16 -30
  39. package/dist/protos/generated/video_streaming/onesie_header_type.js.map +1 -0
  40. package/dist/protos/generated/video_streaming/{onesie_player_request.d.ts → onesie_innertube_request.d.ts} +2 -2
  41. package/dist/protos/generated/video_streaming/{onesie_player_request.js → onesie_innertube_request.js} +5 -4
  42. package/dist/protos/generated/video_streaming/onesie_innertube_request.js.map +1 -0
  43. package/dist/protos/generated/video_streaming/onesie_innertube_response.d.ts +15 -0
  44. package/dist/protos/generated/video_streaming/{onesie_player_response.js → onesie_innertube_response.js} +5 -22
  45. package/dist/protos/generated/video_streaming/onesie_innertube_response.js.map +1 -0
  46. package/dist/protos/generated/video_streaming/onesie_proxy_status.d.ts +18 -0
  47. package/dist/protos/generated/video_streaming/onesie_proxy_status.js +25 -0
  48. package/dist/protos/generated/video_streaming/onesie_proxy_status.js.map +1 -0
  49. package/dist/protos/generated/video_streaming/onesie_request.d.ts +6 -3
  50. package/dist/protos/generated/video_streaming/onesie_request.js +17 -5
  51. package/dist/protos/generated/video_streaming/onesie_request.js.map +1 -0
  52. package/dist/protos/generated/video_streaming/playback_cookie.d.ts +2 -2
  53. package/dist/protos/generated/video_streaming/playback_cookie.js +5 -4
  54. package/dist/protos/generated/video_streaming/playback_cookie.js.map +1 -0
  55. package/dist/protos/generated/video_streaming/playback_start_policy.js +1 -0
  56. package/dist/protos/generated/video_streaming/playback_start_policy.js.map +1 -0
  57. package/dist/protos/generated/video_streaming/reload_player_response.d.ts +14 -0
  58. package/dist/protos/generated/video_streaming/reload_player_response.js +73 -0
  59. package/dist/protos/generated/video_streaming/reload_player_response.js.map +1 -0
  60. package/dist/protos/generated/video_streaming/request_cancellation_policy.js +1 -0
  61. package/dist/protos/generated/video_streaming/request_cancellation_policy.js.map +1 -0
  62. package/dist/protos/generated/video_streaming/request_identifier.d.ts +10 -0
  63. package/dist/protos/generated/video_streaming/request_identifier.js +41 -0
  64. package/dist/protos/generated/video_streaming/request_identifier.js.map +1 -0
  65. package/dist/protos/generated/video_streaming/sabr_context_sending_policy.d.ts +12 -0
  66. package/dist/protos/generated/video_streaming/sabr_context_sending_policy.js +86 -0
  67. package/dist/protos/generated/video_streaming/sabr_context_sending_policy.js.map +1 -0
  68. package/dist/protos/generated/video_streaming/sabr_context_update.d.ts +48 -0
  69. package/dist/protos/generated/video_streaming/sabr_context_update.js +242 -0
  70. package/dist/protos/generated/video_streaming/sabr_context_update.js.map +1 -0
  71. package/dist/protos/generated/video_streaming/sabr_error.js +1 -0
  72. package/dist/protos/generated/video_streaming/sabr_error.js.map +1 -0
  73. package/dist/protos/generated/video_streaming/sabr_redirect.js +1 -0
  74. package/dist/protos/generated/video_streaming/sabr_redirect.js.map +1 -0
  75. package/dist/protos/generated/video_streaming/snackbar_message.d.ts +10 -0
  76. package/dist/protos/generated/video_streaming/snackbar_message.js +41 -0
  77. package/dist/protos/generated/video_streaming/snackbar_message.js.map +1 -0
  78. package/dist/protos/generated/video_streaming/stream_protection_status.d.ts +1 -1
  79. package/dist/protos/generated/video_streaming/stream_protection_status.js +5 -4
  80. package/dist/protos/generated/video_streaming/stream_protection_status.js.map +1 -0
  81. package/dist/protos/generated/video_streaming/streamer_context.d.ts +11 -11
  82. package/dist/protos/generated/video_streaming/streamer_context.js +32 -32
  83. package/dist/protos/generated/video_streaming/streamer_context.js.map +1 -0
  84. package/dist/protos/generated/video_streaming/time_range.d.ts +2 -2
  85. package/dist/protos/generated/video_streaming/time_range.js +8 -7
  86. package/dist/protos/generated/video_streaming/time_range.js.map +1 -0
  87. package/dist/protos/generated/video_streaming/ump_part_id.d.ts +58 -0
  88. package/dist/protos/generated/video_streaming/ump_part_id.js +89 -0
  89. package/dist/protos/generated/video_streaming/ump_part_id.js.map +1 -0
  90. package/dist/protos/generated/video_streaming/video_playback_abr_request.d.ts +20 -21
  91. package/dist/protos/generated/video_streaming/video_playback_abr_request.js +48 -86
  92. package/dist/protos/generated/video_streaming/video_playback_abr_request.js.map +1 -0
  93. package/dist/src/core/{ChunkedDataBuffer.d.ts → CompositeBuffer.d.ts} +8 -8
  94. package/dist/src/core/{ChunkedDataBuffer.js → CompositeBuffer.js} +32 -27
  95. package/dist/src/core/CompositeBuffer.js.map +1 -0
  96. package/dist/src/core/SabrStream.d.ts +356 -0
  97. package/dist/src/core/SabrStream.js +958 -0
  98. package/dist/src/core/SabrStream.js.map +1 -0
  99. package/dist/src/core/SabrStreamingAdapter.d.ts +158 -0
  100. package/dist/src/core/SabrStreamingAdapter.js +496 -0
  101. package/dist/src/core/SabrStreamingAdapter.js.map +1 -0
  102. package/dist/src/core/SabrUmpProcessor.d.ts +53 -0
  103. package/dist/src/core/SabrUmpProcessor.js +234 -0
  104. package/dist/src/core/SabrUmpProcessor.js.map +1 -0
  105. package/dist/src/core/{UMP.d.ts → UmpReader.d.ts} +6 -10
  106. package/dist/src/core/{UMP.js → UmpReader.js} +33 -36
  107. package/dist/src/core/UmpReader.js.map +1 -0
  108. package/dist/src/core/UmpWriter.d.ts +16 -0
  109. package/dist/src/core/UmpWriter.js +56 -0
  110. package/dist/src/core/UmpWriter.js.map +1 -0
  111. package/dist/src/exports/protos.d.ts +1 -0
  112. package/dist/src/exports/protos.js +2 -0
  113. package/dist/src/exports/protos.js.map +1 -0
  114. package/dist/src/exports/sabr-stream.d.ts +2 -0
  115. package/dist/src/exports/sabr-stream.js +2 -0
  116. package/dist/src/exports/sabr-stream.js.map +1 -0
  117. package/dist/src/exports/sabr-streaming-adapter.d.ts +3 -0
  118. package/dist/src/exports/sabr-streaming-adapter.js +3 -0
  119. package/dist/src/exports/sabr-streaming-adapter.js.map +1 -0
  120. package/dist/src/exports/ump.d.ts +3 -0
  121. package/dist/src/exports/ump.js +4 -0
  122. package/dist/src/exports/ump.js.map +1 -0
  123. package/dist/src/exports/utils.d.ts +1 -0
  124. package/dist/src/exports/utils.js +2 -0
  125. package/dist/src/exports/utils.js.map +1 -0
  126. package/dist/src/types/sabrStreamTypes.d.ts +102 -0
  127. package/dist/src/types/sabrStreamTypes.js +2 -0
  128. package/dist/src/types/sabrStreamTypes.js.map +1 -0
  129. package/dist/src/types/sabrStreamingAdapterTypes.d.ts +93 -0
  130. package/dist/src/types/sabrStreamingAdapterTypes.js +2 -0
  131. package/dist/src/types/sabrStreamingAdapterTypes.js.map +1 -0
  132. package/dist/src/types/shared.d.ts +64 -0
  133. package/dist/src/types/shared.js +2 -0
  134. package/dist/src/types/shared.js.map +1 -0
  135. package/dist/src/utils/CacheManager.d.ts +32 -0
  136. package/dist/src/utils/CacheManager.js +131 -0
  137. package/dist/src/utils/CacheManager.js.map +1 -0
  138. package/dist/src/utils/EventEmitterLike.d.ts +5 -0
  139. package/dist/src/utils/EventEmitterLike.js +51 -10
  140. package/dist/src/utils/EventEmitterLike.js.map +1 -0
  141. package/dist/src/utils/Logger.d.ts +30 -0
  142. package/dist/src/utils/Logger.js +80 -0
  143. package/dist/src/utils/Logger.js.map +1 -0
  144. package/dist/src/utils/Protos.d.ts +20 -13
  145. package/dist/src/utils/Protos.js +21 -13
  146. package/dist/src/utils/Protos.js.map +1 -0
  147. package/dist/src/utils/RequestMetadataManager.d.ts +15 -0
  148. package/dist/src/utils/RequestMetadataManager.js +48 -0
  149. package/dist/src/utils/RequestMetadataManager.js.map +1 -0
  150. package/dist/src/utils/formatKeyUtils.d.ts +45 -0
  151. package/dist/src/utils/formatKeyUtils.js +77 -0
  152. package/dist/src/utils/formatKeyUtils.js.map +1 -0
  153. package/dist/src/utils/index.d.ts +5 -3
  154. package/dist/src/utils/index.js +6 -2
  155. package/dist/src/utils/index.js.map +1 -0
  156. package/dist/src/utils/sabrStreamUtils.d.ts +28 -0
  157. package/dist/src/utils/sabrStreamUtils.js +76 -0
  158. package/dist/src/utils/sabrStreamUtils.js.map +1 -0
  159. package/dist/src/utils/shared.d.ts +43 -0
  160. package/dist/src/utils/shared.js +108 -0
  161. package/dist/src/utils/shared.js.map +1 -0
  162. package/package.json +40 -12
  163. package/dist/protos/generated/video_streaming/onesie_player_response.d.ts +0 -31
  164. package/dist/protos/generated/video_streaming/proxy_status.d.ts +0 -14
  165. package/dist/protos/generated/video_streaming/proxy_status.js +0 -21
  166. package/dist/src/core/ServerAbrStream.d.ts +0 -39
  167. package/dist/src/core/ServerAbrStream.js +0 -259
  168. package/dist/src/core/index.d.ts +0 -3
  169. package/dist/src/core/index.js +0 -3
  170. package/dist/src/index.d.ts +0 -4
  171. package/dist/src/index.js +0 -4
  172. package/dist/src/utils/helpers.d.ts +0 -63
  173. package/dist/src/utils/helpers.js +0 -101
  174. package/dist/src/utils/types.d.ts +0 -65
  175. package/dist/src/utils/types.js +0 -1
@@ -1,101 +0,0 @@
1
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
- if (kind === "m") throw new TypeError("Private method is not writable");
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
- };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _CustomEvent_detail;
13
- export var QUALITY;
14
- (function (QUALITY) {
15
- QUALITY[QUALITY["AUTO"] = 0] = "AUTO";
16
- QUALITY[QUALITY["TINY"] = 144] = "TINY";
17
- QUALITY[QUALITY["SMALL"] = 240] = "SMALL";
18
- QUALITY[QUALITY["MEDIUM"] = 360] = "MEDIUM";
19
- // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
20
- QUALITY[QUALITY["LIGHT"] = 144] = "LIGHT";
21
- QUALITY[QUALITY["LARGE"] = 480] = "LARGE";
22
- QUALITY[QUALITY["HD720"] = 720] = "HD720";
23
- QUALITY[QUALITY["HD1080"] = 1080] = "HD1080";
24
- QUALITY[QUALITY["HD1440"] = 1440] = "HD1440";
25
- QUALITY[QUALITY["HD2160"] = 2160] = "HD2160";
26
- QUALITY[QUALITY["HD2880"] = 2880] = "HD2880";
27
- QUALITY[QUALITY["HIGHRES"] = 4320] = "HIGHRES";
28
- })(QUALITY || (QUALITY = {}));
29
- export var PART;
30
- (function (PART) {
31
- PART[PART["ONESIE_HEADER"] = 10] = "ONESIE_HEADER";
32
- PART[PART["ONESIE_DATA"] = 11] = "ONESIE_DATA";
33
- PART[PART["MEDIA_HEADER"] = 20] = "MEDIA_HEADER";
34
- PART[PART["MEDIA"] = 21] = "MEDIA";
35
- PART[PART["MEDIA_END"] = 22] = "MEDIA_END";
36
- PART[PART["LIVE_METADATA"] = 31] = "LIVE_METADATA";
37
- PART[PART["HOSTNAME_CHANGE_HINT"] = 32] = "HOSTNAME_CHANGE_HINT";
38
- PART[PART["LIVE_METADATA_PROMISE"] = 33] = "LIVE_METADATA_PROMISE";
39
- PART[PART["LIVE_METADATA_PROMISE_CANCELLATION"] = 34] = "LIVE_METADATA_PROMISE_CANCELLATION";
40
- PART[PART["NEXT_REQUEST_POLICY"] = 35] = "NEXT_REQUEST_POLICY";
41
- PART[PART["USTREAMER_VIDEO_AND_FORMAT_DATA"] = 36] = "USTREAMER_VIDEO_AND_FORMAT_DATA";
42
- PART[PART["FORMAT_SELECTION_CONFIG"] = 37] = "FORMAT_SELECTION_CONFIG";
43
- PART[PART["USTREAMER_SELECTED_MEDIA_STREAM"] = 38] = "USTREAMER_SELECTED_MEDIA_STREAM";
44
- PART[PART["FORMAT_INITIALIZATION_METADATA"] = 42] = "FORMAT_INITIALIZATION_METADATA";
45
- PART[PART["SABR_REDIRECT"] = 43] = "SABR_REDIRECT";
46
- PART[PART["SABR_ERROR"] = 44] = "SABR_ERROR";
47
- PART[PART["SABR_SEEK"] = 45] = "SABR_SEEK";
48
- PART[PART["RELOAD_PLAYER_RESPONSE"] = 46] = "RELOAD_PLAYER_RESPONSE";
49
- PART[PART["PLAYBACK_START_POLICY"] = 47] = "PLAYBACK_START_POLICY";
50
- PART[PART["ALLOWED_CACHED_FORMATS"] = 48] = "ALLOWED_CACHED_FORMATS";
51
- PART[PART["START_BW_SAMPLING_HINT"] = 49] = "START_BW_SAMPLING_HINT";
52
- PART[PART["PAUSE_BW_SAMPLING_HINT"] = 50] = "PAUSE_BW_SAMPLING_HINT";
53
- PART[PART["SELECTABLE_FORMATS"] = 51] = "SELECTABLE_FORMATS";
54
- PART[PART["REQUEST_IDENTIFIER"] = 52] = "REQUEST_IDENTIFIER";
55
- PART[PART["REQUEST_CANCELLATION_POLICY"] = 53] = "REQUEST_CANCELLATION_POLICY";
56
- PART[PART["ONESIE_PREFETCH_REJECTION"] = 54] = "ONESIE_PREFETCH_REJECTION";
57
- PART[PART["TIMELINE_CONTEXT"] = 55] = "TIMELINE_CONTEXT";
58
- PART[PART["REQUEST_PIPELINING"] = 56] = "REQUEST_PIPELINING";
59
- PART[PART["SABR_CONTEXT_UPDATE"] = 57] = "SABR_CONTEXT_UPDATE";
60
- PART[PART["STREAM_PROTECTION_STATUS"] = 58] = "STREAM_PROTECTION_STATUS";
61
- PART[PART["SABR_CONTEXT_SENDING_POLICY"] = 59] = "SABR_CONTEXT_SENDING_POLICY";
62
- PART[PART["LAWNMOWER_POLICY"] = 60] = "LAWNMOWER_POLICY";
63
- PART[PART["SABR_ACK"] = 61] = "SABR_ACK";
64
- PART[PART["END_OF_TRACK"] = 62] = "END_OF_TRACK";
65
- PART[PART["CACHE_LOAD_POLICY"] = 63] = "CACHE_LOAD_POLICY";
66
- PART[PART["LAWNMOWER_MESSAGING_POLICY"] = 64] = "LAWNMOWER_MESSAGING_POLICY";
67
- PART[PART["PREWARM_CONNECTION"] = 65] = "PREWARM_CONNECTION";
68
- })(PART || (PART = {}));
69
- export function u8ToBase64(u8) {
70
- return btoa(String.fromCharCode.apply(null, Array.from(u8)));
71
- }
72
- export function base64ToU8(base64) {
73
- const standard_base64 = base64.replace(/-/g, '+').replace(/_/g, '/');
74
- const padded_base64 = standard_base64.padEnd(standard_base64.length + (4 - standard_base64.length % 4) % 4, '=');
75
- return new Uint8Array(atob(padded_base64).split('').map((char) => char.charCodeAt(0)));
76
- }
77
- export function getFormatKey(formatId) {
78
- return `${formatId.itag};${formatId.lastModified};`;
79
- }
80
- export function concatenateChunks(chunks) {
81
- const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
82
- const result = new Uint8Array(totalLength);
83
- let offset = 0;
84
- for (const chunk of chunks) {
85
- result.set(chunk, offset);
86
- offset += chunk.length;
87
- }
88
- return result;
89
- }
90
- // See https://github.com/nodejs/node/issues/40678#issuecomment-1126944677
91
- export class CustomEvent extends Event {
92
- constructor(type, options) {
93
- super(type, options);
94
- _CustomEvent_detail.set(this, void 0);
95
- __classPrivateFieldSet(this, _CustomEvent_detail, options?.detail ?? null, "f");
96
- }
97
- get detail() {
98
- return __classPrivateFieldGet(this, _CustomEvent_detail, "f");
99
- }
100
- }
101
- _CustomEvent_detail = new WeakMap();
@@ -1,65 +0,0 @@
1
- import type { FormatId } from '../../protos/generated/misc/common.js';
2
- import type { SabrError } from '../../protos/generated/video_streaming/sabr_error.js';
3
- import type { SabrRedirect } from '../../protos/generated/video_streaming/sabr_redirect.js';
4
- import type { StreamProtectionStatus } from '../../protos/generated/video_streaming/stream_protection_status.js';
5
- import type { TimeRange } from '../../protos/generated/video_streaming/time_range.js';
6
- import type { BufferedRange } from '../../protos/generated/video_streaming/buffered_range.js';
7
- import type { ClientAbrState } from '../../protos/generated/video_streaming/client_abr_state.js';
8
- import type { ChunkedDataBuffer } from '../core/index.js';
9
- export type Part = {
10
- type: number;
11
- size: number;
12
- data: ChunkedDataBuffer;
13
- };
14
- export type ServerAbrStreamOptions = {
15
- fetch: FetchFunction;
16
- serverAbrStreamingUrl: string;
17
- videoPlaybackUstreamerConfig: string;
18
- poToken?: string;
19
- durationMs: number;
20
- };
21
- export type ServerAbrResponse = {
22
- initializedFormats: InitializedFormat[];
23
- streamProtectionStatus?: StreamProtectionStatus;
24
- sabrRedirect?: SabrRedirect;
25
- sabrError?: SabrError;
26
- };
27
- export type Sequence = {
28
- itag?: number;
29
- formatId?: FormatId;
30
- isInitSegment?: boolean;
31
- durationMs?: number;
32
- startMs?: number;
33
- startDataRange?: number;
34
- sequenceNumber?: number;
35
- contentLength?: number;
36
- timeRange?: TimeRange;
37
- };
38
- export type InitializedFormat = {
39
- formatId: FormatId;
40
- formatKey: string;
41
- durationMs?: number;
42
- mimeType?: string;
43
- sequenceCount?: number;
44
- sequenceList: Sequence[];
45
- mediaChunks: Uint8Array[];
46
- _state: BufferedRange;
47
- };
48
- export type InitOptions = {
49
- audioFormats: Format[];
50
- videoFormats: Format[];
51
- clientAbrState?: ClientAbrState;
52
- };
53
- export type MediaArgs = {
54
- clientAbrState: ClientAbrState;
55
- audioFormatIds: FormatId[];
56
- videoFormatIds: FormatId[];
57
- };
58
- export type Format = {
59
- itag: number;
60
- width?: number;
61
- height?: number;
62
- lastModified: string;
63
- xtags?: string;
64
- };
65
- export type FetchFunction = typeof fetch;
@@ -1 +0,0 @@
1
- export {};