q-fi-core 2.3.1

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 (79) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/LICENSE +1 -0
  3. package/README.md +186 -0
  4. package/dist/api/api.d.ts +78 -0
  5. package/dist/api/api.js +182 -0
  6. package/dist/api/cache.d.ts +3 -0
  7. package/dist/api/cache.js +12 -0
  8. package/dist/api/index.d.ts +2 -0
  9. package/dist/api/index.js +18 -0
  10. package/dist/api/request.d.ts +23 -0
  11. package/dist/api/request.js +88 -0
  12. package/dist/converter/deezer.d.ts +3 -0
  13. package/dist/converter/deezer.js +45 -0
  14. package/dist/converter/index.d.ts +5 -0
  15. package/dist/converter/index.js +34 -0
  16. package/dist/converter/parse.d.ts +18 -0
  17. package/dist/converter/parse.js +176 -0
  18. package/dist/converter/spotify.d.ts +40 -0
  19. package/dist/converter/spotify.js +154 -0
  20. package/dist/converter/tidal.d.ts +146 -0
  21. package/dist/converter/tidal.js +199 -0
  22. package/dist/converter/youtube.d.ts +6 -0
  23. package/dist/converter/youtube.js +102 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.js +24 -0
  26. package/dist/lib/decrypt.d.ts +9 -0
  27. package/dist/lib/decrypt.js +63 -0
  28. package/dist/lib/fast-lru.d.ts +63 -0
  29. package/dist/lib/fast-lru.js +121 -0
  30. package/dist/lib/get-url.d.ts +16 -0
  31. package/dist/lib/get-url.js +154 -0
  32. package/dist/lib/http.d.ts +66 -0
  33. package/dist/lib/http.js +235 -0
  34. package/dist/lib/metaflac-js.d.ts +124 -0
  35. package/dist/lib/metaflac-js.js +343 -0
  36. package/dist/lib/request.d.ts +18 -0
  37. package/dist/lib/request.js +86 -0
  38. package/dist/metadata-writer/abumCover.d.ts +10 -0
  39. package/dist/metadata-writer/abumCover.js +37 -0
  40. package/dist/metadata-writer/flacmetata.d.ts +3 -0
  41. package/dist/metadata-writer/flacmetata.js +80 -0
  42. package/dist/metadata-writer/getTrackLyrics.d.ts +2 -0
  43. package/dist/metadata-writer/getTrackLyrics.js +26 -0
  44. package/dist/metadata-writer/id3.d.ts +3 -0
  45. package/dist/metadata-writer/id3.js +119 -0
  46. package/dist/metadata-writer/index.d.ts +9 -0
  47. package/dist/metadata-writer/index.js +44 -0
  48. package/dist/metadata-writer/musixmatchLyrics.d.ts +1 -0
  49. package/dist/metadata-writer/musixmatchLyrics.js +39 -0
  50. package/dist/metadata-writer/useragents.d.ts +1 -0
  51. package/dist/metadata-writer/useragents.js +86 -0
  52. package/dist/types/album.d.ts +123 -0
  53. package/dist/types/album.js +2 -0
  54. package/dist/types/artist.d.ts +36 -0
  55. package/dist/types/artist.js +2 -0
  56. package/dist/types/channel.d.ts +33 -0
  57. package/dist/types/channel.js +2 -0
  58. package/dist/types/index.d.ts +10 -0
  59. package/dist/types/index.js +26 -0
  60. package/dist/types/playlist-channel.d.ts +81 -0
  61. package/dist/types/playlist-channel.js +2 -0
  62. package/dist/types/playlist.d.ts +49 -0
  63. package/dist/types/playlist.js +2 -0
  64. package/dist/types/profile.d.ts +29 -0
  65. package/dist/types/profile.js +2 -0
  66. package/dist/types/radio.d.ts +7 -0
  67. package/dist/types/radio.js +2 -0
  68. package/dist/types/search.d.ts +79 -0
  69. package/dist/types/search.js +2 -0
  70. package/dist/types/show.d.ts +61 -0
  71. package/dist/types/show.js +2 -0
  72. package/dist/types/tracks.d.ts +144 -0
  73. package/dist/types/tracks.js +2 -0
  74. package/dist/types/user.d.ts +16 -0
  75. package/dist/types/user.js +2 -0
  76. package/package.json +69 -0
  77. package/types/index.d.ts +1 -0
  78. package/types/index.js +3 -0
  79. package/types/package.json +4 -0
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./album"), exports);
18
+ __exportStar(require("./artist"), exports);
19
+ __exportStar(require("./show"), exports);
20
+ __exportStar(require("./playlist"), exports);
21
+ __exportStar(require("./playlist-channel"), exports);
22
+ __exportStar(require("./channel"), exports);
23
+ __exportStar(require("./profile"), exports);
24
+ __exportStar(require("./search"), exports);
25
+ __exportStar(require("./tracks"), exports);
26
+ __exportStar(require("./user"), exports);
@@ -0,0 +1,81 @@
1
+ type itemType = 'album' | 'playlist' | 'radio' | 'show' | 'livestream';
2
+ export interface playlistChannelItemsType {
3
+ item_id: string;
4
+ id: string;
5
+ type: itemType;
6
+ data: {
7
+ NB_FAN: number;
8
+ NB_SONG: number;
9
+ PARENT_USER_ID: string;
10
+ PICTURE_TYPE: string;
11
+ PLAYLIST_ID: string;
12
+ PLAYLIST_PICTURE: string;
13
+ STATUS: number;
14
+ TITLE: string;
15
+ TYPE: string;
16
+ DATE_MOD: string;
17
+ DATE_ADD: string;
18
+ DESCRIPTION: string;
19
+ __TYPE__: itemType;
20
+ } | {
21
+ __TYPE__: itemType;
22
+ background_color: string;
23
+ description: string | null;
24
+ id: string;
25
+ logo: string | null;
26
+ name: string;
27
+ pictures: [
28
+ {
29
+ md5: string;
30
+ type: string;
31
+ }
32
+ ];
33
+ slug: string;
34
+ title: string;
35
+ type: itemType;
36
+ } | null;
37
+ target: string;
38
+ title: string;
39
+ subtitle: string;
40
+ description: string;
41
+ pictures: [
42
+ {
43
+ md5: string;
44
+ type: string;
45
+ }
46
+ ];
47
+ weight: number;
48
+ layout_parameters: {
49
+ cta: {
50
+ type: 'browse';
51
+ label: 'BROWSE';
52
+ };
53
+ };
54
+ }
55
+ export interface playlistChannelSectionsType {
56
+ layout: string;
57
+ section_id: string;
58
+ items: playlistChannelItemsType[];
59
+ title: string;
60
+ target: string;
61
+ related: {
62
+ target: string;
63
+ label: string;
64
+ mandatory: boolean;
65
+ };
66
+ alignment: string;
67
+ group_id: string;
68
+ hasMoreItems: boolean;
69
+ }
70
+ export interface playlistChannelType {
71
+ version: string;
72
+ page_id: string;
73
+ ga: {
74
+ screen_name: string;
75
+ };
76
+ title: string;
77
+ persistent: boolean;
78
+ sections: playlistChannelSectionsType[];
79
+ expire: number;
80
+ }
81
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,49 @@
1
+ import type { trackType } from './tracks';
2
+ export interface playlistInfoMinimal {
3
+ PLAYLIST_ID: string;
4
+ PARENT_PLAYLIST_ID: string;
5
+ TYPE: string;
6
+ TITLE: string;
7
+ PARENT_USER_ID: string;
8
+ PARENT_USERNAME: string;
9
+ PARENT_USER_PICTURE?: string;
10
+ STATUS: string;
11
+ PLAYLIST_PICTURE: string;
12
+ PICTURE_TYPE: string;
13
+ NB_SONG: number;
14
+ HAS_ARTIST_LINKED: boolean;
15
+ DATE_ADD: string;
16
+ DATE_MOD: string;
17
+ __TYPE__: 'playlist';
18
+ }
19
+ export interface playlistInfo {
20
+ PLAYLIST_ID: string;
21
+ DESCRIPTION?: string;
22
+ PARENT_USERNAME: string;
23
+ PARENT_USER_PICTURE?: string;
24
+ PARENT_USER_ID: string;
25
+ PICTURE_TYPE: string;
26
+ PLAYLIST_PICTURE: string;
27
+ TITLE: string;
28
+ TYPE: string;
29
+ STATUS: string;
30
+ USER_ID: string;
31
+ DATE_ADD: string;
32
+ DATE_MOD: string;
33
+ DATE_CREATE: string;
34
+ NB_SONG: number;
35
+ NB_FAN: number;
36
+ CHECKSUM: string;
37
+ HAS_ARTIST_LINKED: boolean;
38
+ IS_SPONSORED: boolean;
39
+ IS_EDITO: boolean;
40
+ __TYPE__: 'playlist';
41
+ }
42
+ export interface playlistTracksType {
43
+ data: trackType[];
44
+ count: number;
45
+ total: number;
46
+ filtered_count: number;
47
+ filtered_items?: number[];
48
+ next?: number;
49
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,29 @@
1
+ import type { albumTracksType } from './album';
2
+ export interface profileTypeMinimal {
3
+ USER_ID: string;
4
+ FIRSTNAME: string;
5
+ LASTNAME: string;
6
+ BLOG_NAME: string;
7
+ USER_PICTURE?: string;
8
+ IS_FOLLOW: boolean;
9
+ __TYPE__: 'user';
10
+ }
11
+ export interface profileType {
12
+ IS_FOLLOW: boolean;
13
+ NB_ARTISTS: number;
14
+ NB_FOLLOWERS: number;
15
+ NB_FOLLOWINGS: number;
16
+ NB_MP3S: number;
17
+ TOP_TRACK: albumTracksType;
18
+ USER: {
19
+ USER_ID: string;
20
+ BLOG_NAME: string;
21
+ SEX?: string;
22
+ COUNTRY: string;
23
+ USER_PICTURE?: string;
24
+ COUNTRY_NAME: string;
25
+ PRIVATE: boolean;
26
+ DISPLAY_NAME: string;
27
+ __TYPE__: 'user';
28
+ };
29
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export interface radioType {
2
+ RADIO_ID: string;
3
+ RADIO_PICTURE: string;
4
+ TITLE: string;
5
+ TAGS: string[];
6
+ __TYPE__: 'radio';
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,79 @@
1
+ import type { albumType, albumTypeMinimal } from './album';
2
+ import type { artistInfoTypeMinimal, artistType } from './artist';
3
+ import type { playlistInfo, playlistInfoMinimal } from './playlist';
4
+ import type { trackType } from './tracks';
5
+ import type { profileTypeMinimal } from './profile';
6
+ import type { channelSearchType } from './channel';
7
+ import type { radioType } from './radio';
8
+ import type { showEpisodeType } from './show';
9
+ interface searchTypeCommon {
10
+ count: number;
11
+ total: number;
12
+ filtered_count: number;
13
+ filtered_items: number[];
14
+ next: number;
15
+ }
16
+ interface albumSearchType extends searchTypeCommon {
17
+ data: albumTypeMinimal[];
18
+ }
19
+ interface artistSearchType extends searchTypeCommon {
20
+ data: artistInfoTypeMinimal[];
21
+ }
22
+ interface playlistSearchType extends searchTypeCommon {
23
+ data: playlistInfoMinimal[];
24
+ }
25
+ interface trackSearchType extends searchTypeCommon {
26
+ data: trackType[];
27
+ }
28
+ interface profileSearchType extends searchTypeCommon {
29
+ data: profileTypeMinimal[];
30
+ }
31
+ interface radioSearchType extends searchTypeCommon {
32
+ data: radioType[];
33
+ }
34
+ interface liveSearchType extends searchTypeCommon {
35
+ data: unknown[];
36
+ }
37
+ interface showSearchType extends searchTypeCommon {
38
+ data: showEpisodeType[];
39
+ }
40
+ export interface discographyType {
41
+ data: albumType[];
42
+ count: number;
43
+ total: number;
44
+ cache_version: number;
45
+ filtered_count: number;
46
+ art_id: number;
47
+ start: number;
48
+ nb: number;
49
+ }
50
+ export interface searchType {
51
+ QUERY: string;
52
+ FUZZINNESS: boolean;
53
+ AUTOCORRECT: boolean;
54
+ TOP_RESULT: [albumType | artistType | trackType | playlistInfo | artistType | unknown] | [];
55
+ ORDER: [
56
+ 'TOP_RESULT',
57
+ 'TRACK',
58
+ 'PLAYLIST',
59
+ 'ALBUM',
60
+ 'ARTIST',
61
+ 'LIVESTREAM',
62
+ 'EPISODE',
63
+ 'SHOW',
64
+ 'CHANNEL',
65
+ 'RADIO',
66
+ 'USER',
67
+ 'LYRICS'
68
+ ];
69
+ ALBUM: albumSearchType;
70
+ ARTIST: artistSearchType;
71
+ TRACK: trackSearchType;
72
+ PLAYLIST: playlistSearchType;
73
+ RADIO: radioSearchType;
74
+ SHOW: showSearchType;
75
+ USER: profileSearchType;
76
+ LIVESTREAM: liveSearchType;
77
+ CHANNEL: channelSearchType;
78
+ }
79
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,61 @@
1
+ interface generesType {
2
+ GENRE_ID: number;
3
+ GENRE_NAME: string;
4
+ }
5
+ export interface showEpisodeType {
6
+ EPISODE_ID: string;
7
+ EPISODE_STATUS: string;
8
+ AVAILABLE: boolean;
9
+ SHOW_ID: string;
10
+ SHOW_NAME: string;
11
+ SHOW_ART_MD5: string;
12
+ SHOW_DESCRIPTION: string;
13
+ SHOW_IS_EXPLICIT: string;
14
+ EPISODE_TITLE: string;
15
+ EPISODE_DESCRIPTION: string;
16
+ MD5_ORIGIN: string;
17
+ FILESIZE_MP3_32: string;
18
+ FILESIZE_MP3_64: string;
19
+ EPISODE_DIRECT_STREAM_URL: string;
20
+ SHOW_IS_DIRECT_STREAM: string;
21
+ DURATION: string;
22
+ EPISODE_PUBLISHED_TIMESTAMP: string;
23
+ EPISODE_UPDATE_TIMESTAMP: string;
24
+ SHOW_IS_ADVERTISING_ALLOWED: string;
25
+ SHOW_IS_DOWNLOAD_ALLOWED: string;
26
+ TRACK_TOKEN: string;
27
+ TRACK_TOKEN_EXPIRE: string;
28
+ __TYPE__: 'episode';
29
+ }
30
+ export interface showType {
31
+ DATA: {
32
+ AVAILABLE: boolean;
33
+ SHOW_IS_EXPLICIT: string;
34
+ LABEL_ID: string;
35
+ LABEL_NAME: string;
36
+ LANGUAGE_CD: string;
37
+ SHOW_IS_DIRECT_STREAM: string;
38
+ SHOW_IS_ADVERTISING_ALLOWED: string;
39
+ SHOW_IS_DOWNLOAD_ALLOWED: string;
40
+ SHOW_EPISODE_DISPLAY_COUNT: string;
41
+ SHOW_ID: string;
42
+ SHOW_ART_MD5: string;
43
+ SHOW_NAME: string;
44
+ SHOW_DESCRIPTION: string;
45
+ SHOW_STATUS: string;
46
+ SHOW_TYPE: string;
47
+ GENRES: generesType[];
48
+ NB_FAN: number;
49
+ NB_RATE: number;
50
+ RATING: string;
51
+ __TYPE__: 'show';
52
+ };
53
+ FAVORITE_STATUS: boolean;
54
+ EPISODES: {
55
+ data: showEpisodeType[];
56
+ count: number;
57
+ total: number;
58
+ filtered_count: number;
59
+ };
60
+ }
61
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,144 @@
1
+ import type { artistType } from './artist';
2
+ interface mediaType {
3
+ TYPE: 'preview';
4
+ HREF: string;
5
+ }
6
+ interface lyricsSync {
7
+ lrc_timestamp: string;
8
+ milliseconds: string;
9
+ duration: string;
10
+ line: string;
11
+ }
12
+ export interface lyricsType {
13
+ LYRICS_ID?: string;
14
+ LYRICS_SYNC_JSON?: lyricsSync[];
15
+ LYRICS_TEXT: string;
16
+ LYRICS_COPYRIGHTS?: string;
17
+ LYRICS_WRITERS?: string;
18
+ }
19
+ interface songType {
20
+ ALB_ID: string;
21
+ ALB_TITLE: string;
22
+ ALB_PICTURE: string;
23
+ ARTISTS: artistType[];
24
+ ART_ID: string;
25
+ ART_NAME: string;
26
+ ARTIST_IS_DUMMY: boolean;
27
+ ART_PICTURE: string;
28
+ DATE_START: string;
29
+ DISK_NUMBER?: string;
30
+ DURATION: string;
31
+ EXPLICIT_TRACK_CONTENT: {
32
+ EXPLICIT_LYRICS_STATUS: number;
33
+ EXPLICIT_COVER_STATUS: number;
34
+ };
35
+ ISRC: string;
36
+ LYRICS_ID: number;
37
+ LYRICS?: lyricsType;
38
+ EXPLICIT_LYRICS?: string;
39
+ RANK: string;
40
+ SMARTRADIO: string;
41
+ SNG_ID: string;
42
+ SNG_TITLE: string;
43
+ SNG_CONTRIBUTORS?: {
44
+ main_artist: string[];
45
+ author?: string[];
46
+ composer?: string[];
47
+ musicpublisher?: string[];
48
+ producer?: string[];
49
+ publisher: string[];
50
+ engineer?: string[];
51
+ writer?: string[];
52
+ mixer?: string[];
53
+ } | [];
54
+ STATUS: number;
55
+ S_MOD: number;
56
+ S_PREMIUM: number;
57
+ TRACK_NUMBER: number;
58
+ URL_REWRITING: string;
59
+ VERSION?: string;
60
+ MD5_ORIGIN?: string;
61
+ FILESIZE_AAC_64: '0';
62
+ FILESIZE_MP3_64: string;
63
+ FILESIZE_MP3_128: string;
64
+ FILESIZE_MP3_256: '0';
65
+ FILESIZE_MP3_320: '0';
66
+ FILESIZE_MP4_RA1: '0';
67
+ FILESIZE_MP4_RA2: '0';
68
+ FILESIZE_MP4_RA3: '0';
69
+ FILESIZE_FLAC: '0';
70
+ FILESIZE: string;
71
+ GAIN: string;
72
+ MEDIA_VERSION: string;
73
+ TRACK_TOKEN: string;
74
+ TRACK_TOKEN_EXPIRE: number;
75
+ MEDIA: [mediaType];
76
+ RIGHTS: {
77
+ STREAM_ADS_AVAILABLE?: boolean;
78
+ STREAM_ADS?: string;
79
+ STREAM_SUB_AVAILABLE?: boolean;
80
+ STREAM_SUB?: string;
81
+ };
82
+ PROVIDER_ID: string;
83
+ __TYPE__: 'song';
84
+ }
85
+ export interface trackType extends songType {
86
+ FALLBACK?: songType;
87
+ TRACK_POSITION?: number;
88
+ }
89
+ export interface contributorsPublicApi {
90
+ id: number;
91
+ name: string;
92
+ link: string;
93
+ share: string;
94
+ picture: string;
95
+ picture_small: string;
96
+ picture_medium: string;
97
+ picture_big: string;
98
+ picture_xl: string;
99
+ radio: boolean;
100
+ tracklist: string;
101
+ type: string;
102
+ role: string;
103
+ }
104
+ export interface trackTypePublicApi {
105
+ id: number;
106
+ readable: boolean;
107
+ title: string;
108
+ title_short: string;
109
+ title_version?: string;
110
+ isrc: string;
111
+ link: string;
112
+ share: string;
113
+ duration: number;
114
+ track_position: number;
115
+ disk_number: number;
116
+ rank: number;
117
+ release_date: string;
118
+ explicit_lyrics: boolean;
119
+ explicit_content_lyrics: number;
120
+ explicit_content_cover: number;
121
+ preview: string;
122
+ bpm: number;
123
+ gain: number;
124
+ available_countries: string[];
125
+ contributors: contributorsPublicApi[];
126
+ md5_image: string;
127
+ artist: contributorsPublicApi;
128
+ album: {
129
+ id: number;
130
+ title: string;
131
+ link: string;
132
+ cover: string;
133
+ cover_small: string;
134
+ cover_medium: string;
135
+ cover_big: string;
136
+ cover_xl: string;
137
+ md5_image: string;
138
+ release_date: string;
139
+ tracklist: string;
140
+ type: 'album';
141
+ };
142
+ type: 'track';
143
+ }
144
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ export interface userType {
2
+ USER_ID: string;
3
+ EMAIL: string;
4
+ FIRSTNAME: string;
5
+ LASTNAME: string;
6
+ BIRTHDAY: string;
7
+ BLOG_NAME: string;
8
+ SEX: string;
9
+ ADDRESS?: string;
10
+ CITY?: string;
11
+ ZIP?: string;
12
+ COUNTRY: string;
13
+ LANG: string;
14
+ PHONE?: string;
15
+ __TYPE__: 'user';
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "q-fi-core",
3
+ "version": "2.3.1",
4
+ "description": "Core module for q-fi.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "lint": "node ./node_modules/eslint/bin/eslint.js --config .eslintrc.js --resolve-plugins-relative-to . .",
9
+ "prepublishOnly": "npm run lint && tsc",
10
+ "prebuild": "npm run lint",
11
+ "build": "tsc",
12
+ "test": "ava"
13
+ },
14
+ "files": [
15
+ "dist/**/*",
16
+ "types/**/*",
17
+ "CHANGELOG.md"
18
+ ],
19
+ "engines": {
20
+ "node": ">=12"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/soulwax/q-fi-core.git"
25
+ },
26
+ "homepage": "https://github.com/soulwax/q-fi-core#readme",
27
+ "bugs": {
28
+ "url": "https://github.com/soulwax/q-fi-core/issues"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "author": "Christian Kling",
34
+ "license": "SEE LICENSE IN LICENSE",
35
+ "dependencies": {
36
+ "browser-id3-writer": "^4.4.0",
37
+ "delay": "^5.0.0",
38
+ "node-html-parser": "^5.3.3",
39
+ "p-queue": "^6.6.2",
40
+ "spotify-uri": "^2.2.0",
41
+ "spotify-web-api-node": "^5.0.2"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^17.0.23",
45
+ "@types/spotify-web-api-node": "^5.0.3",
46
+ "@typescript-eslint/eslint-plugin": "^5.16.0",
47
+ "@typescript-eslint/parser": "^5.16.0",
48
+ "ava": "^4.1.0",
49
+ "eslint": "^8.11.0",
50
+ "eslint-plugin-prettier": "^4.0.0",
51
+ "prettier": "^2.6.0",
52
+ "ts-node": "^10.7.0",
53
+ "typescript": "^4.6.3"
54
+ },
55
+ "ava": {
56
+ "extensions": [
57
+ "ts"
58
+ ],
59
+ "files": [
60
+ "!dist",
61
+ "!__tests__/helpers.ts"
62
+ ],
63
+ "require": [
64
+ "ts-node/register"
65
+ ],
66
+ "timeout": "2m",
67
+ "verbose": true
68
+ }
69
+ }
@@ -0,0 +1 @@
1
+ export * from '../dist/types';
package/types/index.js ADDED
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ module.exports = require('../dist/types');
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "./index.js",
3
+ "types": "./index.d.ts"
4
+ }