multi_embed_player 3.0.1 → 3.1.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 (128) hide show
  1. package/.github/workflows/build-and-deploy.yml +44 -0
  2. package/.gitmodules +3 -0
  3. package/CLAUDE.md +92 -0
  4. package/README.md +0 -24
  5. package/add_types.sh +61 -0
  6. package/browserExtention/chrome/background.js +55 -0
  7. package/browserExtention/chrome/extention.json +1 -0
  8. package/browserExtention/chrome/liteplayer.js +26439 -0
  9. package/browserExtention/chrome/manifest.json +31 -0
  10. package/browserExtention/chrome/player-selector.js +1854 -0
  11. package/browserExtention/firefox/background.js +27 -0
  12. package/browserExtention/firefox/extention.json +1 -0
  13. package/browserExtention/firefox/liteplayer.js +26439 -0
  14. package/browserExtention/firefox/manifest.json +19 -0
  15. package/browserExtention/firefox/player-selector.js +1854 -0
  16. package/documents/.hugo_build.lock +0 -0
  17. package/documents/archetypes/default.md +5 -0
  18. package/documents/assets/jsconfig.json +11 -0
  19. package/documents/content/docs/install.md +103 -0
  20. package/documents/content/docs/quickstart.md +51 -0
  21. package/documents/content/docs/reference/HTML.md +31 -0
  22. package/documents/content/docs/reference/_index.md +10 -0
  23. package/documents/content/docs/reference/error_code.md +23 -0
  24. package/documents/content/docs/reference/iframe_api.md +737 -0
  25. package/documents/content/docs/reference/iframe_class.md +230 -0
  26. package/documents/content/docs/reference/multi_embed_player_class.md +113 -0
  27. package/documents/content/docs/reference/reserved_words.md +71 -0
  28. package/documents/content/docs/usage/GDPR_mode.md +77 -0
  29. package/documents/content/docs/usage/_index.md +10 -0
  30. package/documents/content/docs/usage/custom_playlist.md +239 -0
  31. package/documents/content/docs/usage/embed_api.md +163 -0
  32. package/documents/content/docs/usage/embed_various_service.md +81 -0
  33. package/documents/content/docs/usage/thumbnail_click.md +57 -0
  34. package/documents/go.mod +8 -0
  35. package/documents/go.sum +14 -0
  36. package/documents/hugo.toml +18 -0
  37. package/documents/layouts/partials/docs/sidebar.html +117 -0
  38. package/documents/layouts/partials/landing/features.html +47 -0
  39. package/documents/layouts/robots.txt +4 -0
  40. package/documents/static/_headers +7 -0
  41. package/documents/static/localStorageCheck.html +27 -0
  42. package/documents/static/no_extention.json +1 -0
  43. package/example.html +27 -0
  44. package/extention.json +1 -0
  45. package/icon/video_not_found.odg +0 -0
  46. package/icon/video_not_found.svgz +0 -0
  47. package/iframe_api/bilibili.ts +1095 -0
  48. package/iframe_api/niconico.ts +429 -0
  49. package/iframe_api/soundcloud.ts +450 -0
  50. package/iframe_api/youtube.ts +311 -0
  51. package/multi_embed_player.ts +989 -0
  52. package/package.json +10 -41
  53. package/player_api_gate/bilibili-api-gate/cgi/cpp/bilibili-api-gate-cgi.cpp +281 -0
  54. package/player_api_gate/bilibili-api-gate/cgi/go/src.go +46 -0
  55. package/player_api_gate/bilibili-api-gate/cloudflare_workers/package-lock.json +1356 -0
  56. package/player_api_gate/bilibili-api-gate/cloudflare_workers/package.json +12 -0
  57. package/player_api_gate/bilibili-api-gate/cloudflare_workers/src/index.js +50 -0
  58. package/player_api_gate/bilibili-api-gate/cloudflare_workers/wrangler.toml +3 -0
  59. package/player_api_gate/iframe-api-ts/.editorconfig +12 -0
  60. package/player_api_gate/iframe-api-ts/.prettierrc +6 -0
  61. package/player_api_gate/iframe-api-ts/package-lock.json +3054 -0
  62. package/player_api_gate/iframe-api-ts/package.json +18 -0
  63. package/player_api_gate/iframe-api-ts/src/bilibili.ts +49 -0
  64. package/player_api_gate/iframe-api-ts/src/index.ts +35 -0
  65. package/player_api_gate/iframe-api-ts/src/niconico.ts +95 -0
  66. package/player_api_gate/iframe-api-ts/src/soundcloud.ts +38 -0
  67. package/player_api_gate/iframe-api-ts/src/types.ts +115 -0
  68. package/player_api_gate/iframe-api-ts/src/url-proxy.ts +29 -0
  69. package/player_api_gate/iframe-api-ts/src/utils.ts +82 -0
  70. package/player_api_gate/iframe-api-ts/src/youtube.ts +41 -0
  71. package/player_api_gate/iframe-api-ts/test/bilibili.spec.ts +47 -0
  72. package/player_api_gate/iframe-api-ts/test/env.d.ts +3 -0
  73. package/player_api_gate/iframe-api-ts/test/index.spec.ts +59 -0
  74. package/player_api_gate/iframe-api-ts/test/niconico.spec.ts +55 -0
  75. package/player_api_gate/iframe-api-ts/test/soundcloud.spec.ts +55 -0
  76. package/player_api_gate/iframe-api-ts/test/tsconfig.json +8 -0
  77. package/player_api_gate/iframe-api-ts/test/url-proxy.spec.ts +46 -0
  78. package/player_api_gate/iframe-api-ts/test/youtube.spec.ts +45 -0
  79. package/player_api_gate/iframe-api-ts/tsconfig.json +45 -0
  80. package/player_api_gate/iframe-api-ts/vitest.config.mts +11 -0
  81. package/player_api_gate/iframe-api-ts/worker-configuration.d.ts +5768 -0
  82. package/player_api_gate/iframe-api-ts/wrangler.jsonc +47 -0
  83. package/player_api_gate/iframe_api/.editorconfig +13 -0
  84. package/player_api_gate/iframe_api/.prettierrc +6 -0
  85. package/player_api_gate/iframe_api/package-lock.json +1307 -0
  86. package/player_api_gate/iframe_api/package.json +12 -0
  87. package/player_api_gate/iframe_api/src/bilibili_api.js +60 -0
  88. package/player_api_gate/iframe_api/src/index.js +47 -0
  89. package/player_api_gate/iframe_api/src/niconico_api.js +112 -0
  90. package/player_api_gate/iframe_api/src/soundcloud_api.js +57 -0
  91. package/player_api_gate/iframe_api/src/url_proxy.js +28 -0
  92. package/player_api_gate/iframe_api/src/youtube_api.js +44 -0
  93. package/player_api_gate/iframe_api/wrangler.toml +51 -0
  94. package/player_api_gate/niconico-imager/cgi/go/src.go +74 -0
  95. package/player_api_gate/niconico-imager/cloudflare_workers/package-lock.json +2175 -0
  96. package/player_api_gate/niconico-imager/cloudflare_workers/package.json +12 -0
  97. package/player_api_gate/niconico-imager/cloudflare_workers/src/index.js +78 -0
  98. package/player_api_gate/niconico-imager/cloudflare_workers/wrangler.toml +3 -0
  99. package/test_script.html +172 -0
  100. package/tsconfig.json +36 -0
  101. package/dist/iframe_api/bilibili.d.ts +0 -91
  102. package/dist/iframe_api/bilibili.d.ts.map +0 -1
  103. package/dist/iframe_api/bilibili.js +0 -451
  104. package/dist/iframe_api/bilibili.js.map +0 -1
  105. package/dist/iframe_api/index.d.ts +0 -6
  106. package/dist/iframe_api/index.d.ts.map +0 -1
  107. package/dist/iframe_api/index.js +0 -8
  108. package/dist/iframe_api/index.js.map +0 -1
  109. package/dist/iframe_api/niconico.d.ts +0 -42
  110. package/dist/iframe_api/niconico.d.ts.map +0 -1
  111. package/dist/iframe_api/niconico.js +0 -181
  112. package/dist/iframe_api/niconico.js.map +0 -1
  113. package/dist/iframe_api/soundcloud.d.ts +0 -80
  114. package/dist/iframe_api/soundcloud.d.ts.map +0 -1
  115. package/dist/iframe_api/soundcloud.js +0 -188
  116. package/dist/iframe_api/soundcloud.js.map +0 -1
  117. package/dist/iframe_api/youtube.d.ts +0 -133
  118. package/dist/iframe_api/youtube.d.ts.map +0 -1
  119. package/dist/iframe_api/youtube.js +0 -278
  120. package/dist/iframe_api/youtube.js.map +0 -1
  121. package/dist/multi_embed_player.d.ts +0 -48
  122. package/dist/multi_embed_player.d.ts.map +0 -1
  123. package/dist/multi_embed_player.js +0 -318
  124. package/dist/multi_embed_player.js.map +0 -1
  125. package/dist/types.d.ts +0 -126
  126. package/dist/types.d.ts.map +0 -1
  127. package/dist/types.js +0 -22
  128. package/dist/types.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import { expect, test } from 'vitest';
2
+ import { handleSoundCloudRequest } from '../src/soundcloud';
3
+
4
+ test('soundcloud API handles missing videoid', async () => {
5
+ const request = new Request('http://example.com/?route=soundcloud');
6
+ const env = {};
7
+
8
+ const response = await handleSoundCloudRequest(request, env);
9
+ const data = await response.json();
10
+
11
+ expect(data.status).toBe('failed');
12
+ expect(data.message).toContain('plese set indentify music id');
13
+ expect(data.product_type).toBe('soundcloud api');
14
+ });
15
+
16
+ test('soundcloud API handles numeric videoid', async () => {
17
+ const request = new Request('http://example.com/?route=soundcloud&videoid=557856309');
18
+ const env = {};
19
+
20
+ const response = await handleSoundCloudRequest(request, env);
21
+
22
+ expect(response.status).toBe(200);
23
+ expect(response.headers.get('content-type')).toBe('application/json');
24
+ expect(response.headers.get('Access-Control-Allow-Origin')).toBe('*');
25
+ });
26
+
27
+ test('soundcloud API handles url-style videoid', async () => {
28
+ const request = new Request('http://example.com/?route=soundcloud&videoid=user/track-name');
29
+ const env = {};
30
+
31
+ const response = await handleSoundCloudRequest(request, env);
32
+
33
+ expect(response.status).toBe(200);
34
+ });
35
+
36
+ test('soundcloud API handles image_base64 parameter', async () => {
37
+ const request = new Request('http://example.com/?route=soundcloud&videoid=557856309&image_base64=1');
38
+ const env = {};
39
+
40
+ const response = await handleSoundCloudRequest(request, env);
41
+
42
+ expect(response.status).toBe(200);
43
+ });
44
+
45
+ test('soundcloud API handles invalid videoid', async () => {
46
+ const request = new Request('http://example.com/?route=soundcloud&videoid=invalid_id');
47
+ const env = {};
48
+
49
+ const response = await handleSoundCloudRequest(request, env);
50
+ const data = await response.json();
51
+
52
+ expect(response.status).toBe(200);
53
+ // The response may contain various fields depending on the SoundCloud API response
54
+ expect(data).toBeDefined();
55
+ });
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "types": ["@cloudflare/vitest-pool-workers"]
5
+ },
6
+ "include": ["./**/*.ts", "../worker-configuration.d.ts"],
7
+ "exclude": []
8
+ }
@@ -0,0 +1,46 @@
1
+ import { expect, test } from 'vitest';
2
+ import { handleUrlProxyRequest } from '../src/url-proxy';
3
+
4
+ test('url proxy handles missing url parameter', async () => {
5
+ const request = new Request('http://example.com/?route=url_proxy');
6
+ const env = {};
7
+
8
+ const response = await handleUrlProxyRequest(request, env);
9
+ const data = await response.json();
10
+
11
+ expect(data.status).toBe('failed');
12
+ expect(data.message).toContain('plese set url');
13
+ expect(data.product_type).toBe('url proxy api');
14
+ });
15
+
16
+ test('url proxy handles valid url', async () => {
17
+ const request = new Request('http://example.com/?route=url_proxy&url=https://httpbin.org/json');
18
+ const env = {};
19
+
20
+ const response = await handleUrlProxyRequest(request, env);
21
+
22
+ expect(response.status).toBe(200);
23
+ expect(response.headers.get('Access-Control-Allow-Origin')).toBe('*');
24
+ expect(response.headers.get('cache-control')).toBe('max-age=2592000');
25
+ });
26
+
27
+ test('url proxy handles image url', async () => {
28
+ const request = new Request('http://example.com/?route=url_proxy&url=https://httpbin.org/image/png');
29
+ const env = {};
30
+
31
+ const response = await handleUrlProxyRequest(request, env);
32
+
33
+ expect(response.status).toBe(200);
34
+ expect(response.headers.get('content-type')).toContain('image');
35
+ });
36
+
37
+ test('url proxy handles invalid url', async () => {
38
+ const request = new Request('http://example.com/?route=url_proxy&url=https://invalid-domain-that-does-not-exist.com');
39
+ const env = {};
40
+
41
+ const response = await handleUrlProxyRequest(request, env);
42
+ const data = await response.json();
43
+
44
+ expect(data.status).toBe('failed');
45
+ expect(data.message).toContain('Failed to fetch');
46
+ });
@@ -0,0 +1,45 @@
1
+ import { expect, test } from 'vitest';
2
+ import { handleYouTubeRequest } from '../src/youtube';
3
+
4
+ test('youtube API handles missing videoid', async () => {
5
+ const request = new Request('http://example.com/?route=youtube');
6
+ const env = {};
7
+
8
+ const response = await handleYouTubeRequest(request, env);
9
+ const data = await response.json();
10
+
11
+ expect(data.status).toBe('failed');
12
+ expect(data.message).toContain('plese set indentify music id');
13
+ expect(data.product_type).toBe('youtube api');
14
+ });
15
+
16
+ test('youtube API handles valid request', async () => {
17
+ const request = new Request('http://example.com/?route=youtube&videoid=dQw4w9WgXcQ');
18
+ const env = {};
19
+
20
+ const response = await handleYouTubeRequest(request, env);
21
+
22
+ expect(response.status).toBe(200);
23
+ expect(response.headers.get('content-type')).toBe('application/json');
24
+ expect(response.headers.get('Access-Control-Allow-Origin')).toBe('*');
25
+ });
26
+
27
+ test('youtube API handles image_base64 parameter', async () => {
28
+ const request = new Request('http://example.com/?route=youtube&videoid=dQw4w9WgXcQ&image_base64=1');
29
+ const env = {};
30
+
31
+ const response = await handleYouTubeRequest(request, env);
32
+
33
+ expect(response.status).toBe(200);
34
+ });
35
+
36
+ test('youtube API handles invalid video id', async () => {
37
+ const request = new Request('http://example.com/?route=youtube&videoid=invalid_id');
38
+ const env = {};
39
+
40
+ const response = await handleYouTubeRequest(request, env);
41
+ const data = await response.json();
42
+
43
+ expect(response.status).toBe(200);
44
+ expect(data.status).toBe('failed notfound?');
45
+ });
@@ -0,0 +1,45 @@
1
+ {
2
+ "compilerOptions": {
3
+ /* Visit https://aka.ms/tsconfig.json to read more about this file */
4
+
5
+ /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
6
+ "target": "es2021",
7
+ /* Specify a set of bundled library declaration files that describe the target runtime environment. */
8
+ "lib": ["es2021"],
9
+ /* Specify what JSX code is generated. */
10
+ "jsx": "react-jsx",
11
+
12
+ /* Specify what module code is generated. */
13
+ "module": "es2022",
14
+ /* Specify how TypeScript looks up a file from a given module specifier. */
15
+ "moduleResolution": "Bundler",
16
+ /* Enable importing .json files */
17
+ "resolveJsonModule": true,
18
+
19
+ /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
20
+ "allowJs": true,
21
+ /* Enable error reporting in type-checked JavaScript files. */
22
+ "checkJs": false,
23
+
24
+ /* Disable emitting files from a compilation. */
25
+ "noEmit": true,
26
+
27
+ /* Ensure that each file can be safely transpiled without relying on other imports. */
28
+ "isolatedModules": true,
29
+ /* Allow 'import x from y' when a module doesn't have a default export. */
30
+ "allowSyntheticDefaultImports": true,
31
+ /* Ensure that casing is correct in imports. */
32
+ "forceConsistentCasingInFileNames": true,
33
+
34
+ /* Enable all strict type-checking options. */
35
+ "strict": true,
36
+
37
+ /* Skip type checking all .d.ts files. */
38
+ "skipLibCheck": true,
39
+ "types": [
40
+ "./worker-configuration.d.ts"
41
+ ]
42
+ },
43
+ "exclude": ["test"],
44
+ "include": ["worker-configuration.d.ts", "src/**/*.ts"]
45
+ }
@@ -0,0 +1,11 @@
1
+ import { defineWorkersConfig } from '@cloudflare/vitest-pool-workers/config';
2
+
3
+ export default defineWorkersConfig({
4
+ test: {
5
+ poolOptions: {
6
+ workers: {
7
+ wrangler: { configPath: './wrangler.jsonc' },
8
+ },
9
+ },
10
+ },
11
+ });