node-csfd-api 5.2.1 → 5.2.2
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.
package/helpers/global.helper.js
CHANGED
|
@@ -5,6 +5,8 @@ const ISO8601_DURATION_REGEX = /(-)?P(?:([.,\d]+)Y)?(?:([.,\d]+)M)?(?:([.,\d]+)W
|
|
|
5
5
|
const parseIdFromUrl = (url) => {
|
|
6
6
|
if (!url) return null;
|
|
7
7
|
const parts = url.split("/");
|
|
8
|
+
const idParts = parts.filter((p) => /^\d+-/.test(p));
|
|
9
|
+
if (idParts.length > 0) return +idParts[idParts.length - 1].split("-")[0] || null;
|
|
8
10
|
return +parts[LANG_PREFIX_REGEX.test(parts[1]) ? 3 : 2]?.split("-")[0] || null;
|
|
9
11
|
};
|
|
10
12
|
const parseLastIdFromUrl = (url) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.helper.js","names":[],"sources":["../../src/helpers/global.helper.ts"],"sourcesContent":["import { CSFDColorRating, CSFDFilmTypes } from '../dto/global';\nimport { CSFDColors } from '../dto/user-ratings';\n\nconst LANG_PREFIX_REGEX = /^[a-z]{2,3}$/;\nconst ISO8601_DURATION_REGEX =\n /(-)?P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?T(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:([.,\\d]+)S)?/;\n\nexport const parseIdFromUrl = (url: string): number => {\n if (!url) return null;\n\n const parts = url.split('/');\n
|
|
1
|
+
{"version":3,"file":"global.helper.js","names":[],"sources":["../../src/helpers/global.helper.ts"],"sourcesContent":["import { CSFDColorRating, CSFDFilmTypes } from '../dto/global';\nimport { CSFDColors } from '../dto/user-ratings';\n\nconst LANG_PREFIX_REGEX = /^[a-z]{2,3}$/;\nconst ISO8601_DURATION_REGEX =\n /(-)?P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?T(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:([.,\\d]+)S)?/;\n\nexport const parseIdFromUrl = (url: string): number => {\n if (!url) return null;\n\n const parts = url.split('/');\n const idParts = parts.filter((p) => /^\\d+-/.test(p));\n if (idParts.length > 0) {\n const idSlug = idParts[idParts.length - 1];\n return +idSlug.split('-')[0] || null;\n }\n\n // Fallback\n const hasLangPrefix = LANG_PREFIX_REGEX.test(parts[1]);\n const idSlug = parts[hasLangPrefix ? 3 : 2];\n const id = idSlug?.split('-')[0];\n return +id || null;\n};\n\nexport const parseLastIdFromUrl = (url: string): number => {\n if (url) {\n const idSlug = url?.split('/')[3];\n const id = idSlug?.split('-')[0];\n return +id || null;\n } else {\n return null;\n }\n};\n\nexport const getColor = (cls: string): CSFDColorRating => {\n switch (cls) {\n case 'page-lightgrey':\n return 'unknown';\n case 'page-red':\n return 'good';\n case 'page-blue':\n return 'average';\n case 'page-grey':\n return 'bad';\n default:\n return 'unknown';\n }\n};\n\nexport const parseColor = (quality: CSFDColors): CSFDColorRating => {\n switch (quality) {\n case 'lightgrey':\n return 'unknown';\n case 'red':\n return 'good';\n case 'blue':\n return 'average';\n case 'grey':\n return 'bad';\n default:\n return 'unknown';\n }\n};\n\nconst filmTypeMap: Record<string, CSFDFilmTypes> = {\n 'TV film': 'tv-film',\n pořad: 'tv-show',\n seriál: 'series',\n 'divadelní záznam': 'theatrical',\n koncert: 'concert',\n série: 'season',\n 'studentský film': 'student-film',\n 'amatérský film': 'amateur-film',\n 'hudební videoklip': 'music-video',\n epizoda: 'episode',\n 'video kompilace': 'video-compilation',\n film: 'film'\n};\n\nexport const parseFilmType = (type: string): CSFDFilmTypes => {\n return filmTypeMap[type] || 'film';\n};\n\nexport const addProtocol = (url: string): string => {\n return url.startsWith('//') ? 'https:' + url : url;\n};\n\nexport const getDuration = (matches: RegExpMatchArray) => {\n return {\n sign: matches[1] === undefined ? '+' : '-',\n years: matches[2] === undefined ? 0 : matches[2],\n months: matches[3] === undefined ? 0 : matches[3],\n weeks: matches[4] === undefined ? 0 : matches[4],\n days: matches[5] === undefined ? 0 : matches[5],\n hours: matches[6] === undefined ? 0 : matches[6],\n minutes: matches[7] === undefined ? 0 : matches[7],\n seconds: matches[8] === undefined ? 0 : matches[8]\n };\n};\n\nexport const parseISO8601Duration = (iso: string): number => {\n const matches = iso.match(ISO8601_DURATION_REGEX);\n\n const duration = getDuration(matches);\n\n return +duration.hours * 60 + +duration.minutes;\n};\n\n/**\n * Parses a date string into a standardized YYYY-MM-DD format.\n * Supports:\n * - D.M.YYYY\n * - DD.MM.YYYY\n * - D. M. YYYY\n * - MM/DD/YYYY\n * - YYYY\n */\nexport const parseDate = (date: string): string | null => {\n if (!date) return null;\n\n // Clean the input\n const cleanDate = date.trim();\n\n // Try parsing DD.MM.YYYY or D.M.YYYY with optional spaces\n const dateMatch = cleanDate.match(/^(\\d{1,2})\\.\\s*(\\d{1,2})\\.\\s*(\\d{4})$/);\n if (dateMatch) {\n const day = dateMatch[1].padStart(2, '0');\n const month = dateMatch[2].padStart(2, '0');\n const year = dateMatch[3];\n return `${year}-${month}-${day}`;\n }\n\n // Try parsing MM/DD/YYYY\n const slashMatch = cleanDate.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (slashMatch) {\n const month = slashMatch[1].padStart(2, '0');\n const day = slashMatch[2].padStart(2, '0');\n const year = slashMatch[3];\n return `${year}-${month}-${day}`;\n }\n\n // Try parsing YYYY\n const yearMatch = cleanDate.match(/^(\\d{4})$/);\n if (yearMatch) {\n return `${yearMatch[1]}-01-01`;\n }\n\n return null;\n};\n\n// Sleep in loop\nexport const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms));\n"],"mappings":";;AAGA,MAAM,oBAAoB;AAC1B,MAAM,yBACJ;AAEF,MAAa,kBAAkB,QAAwB;AACrD,KAAI,CAAC,IAAK,QAAO;CAEjB,MAAM,QAAQ,IAAI,MAAM,IAAI;CAC5B,MAAM,UAAU,MAAM,QAAQ,MAAM,QAAQ,KAAK,EAAE,CAAC;AACpD,KAAI,QAAQ,SAAS,EAEnB,QAAO,CADQ,QAAQ,QAAQ,SAAS,GACzB,MAAM,IAAI,CAAC,MAAM;AAOlC,QAAO,CAFQ,MADO,kBAAkB,KAAK,MAAM,GAAG,GACjB,IAAI,IACtB,MAAM,IAAI,CAAC,MAChB;;AAGhB,MAAa,sBAAsB,QAAwB;AACzD,KAAI,IAGF,QAAO,EAFQ,KAAK,MAAM,IAAI,CAAC,KACZ,MAAM,IAAI,CAAC,MAChB;KAEd,QAAO;;AAIX,MAAa,YAAY,QAAiC;AACxD,SAAQ,KAAR;EACE,KAAK,iBACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,cAAc,YAAyC;AAClE,SAAQ,SAAR;EACE,KAAK,YACH,QAAO;EACT,KAAK,MACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAM,cAA6C;CACjD,WAAW;CACX,OAAO;CACP,QAAQ;CACR,oBAAoB;CACpB,SAAS;CACT,OAAO;CACP,mBAAmB;CACnB,kBAAkB;CAClB,qBAAqB;CACrB,SAAS;CACT,mBAAmB;CACnB,MAAM;CACP;AAED,MAAa,iBAAiB,SAAgC;AAC5D,QAAO,YAAY,SAAS;;AAG9B,MAAa,eAAe,QAAwB;AAClD,QAAO,IAAI,WAAW,KAAK,GAAG,WAAW,MAAM;;AAGjD,MAAa,eAAe,YAA8B;AACxD,QAAO;EACL,MAAM,QAAQ,OAAO,SAAY,MAAM;EACvC,OAAO,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC9C,QAAQ,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC/C,OAAO,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC9C,MAAM,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC7C,OAAO,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC9C,SAAS,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAChD,SAAS,QAAQ,OAAO,SAAY,IAAI,QAAQ;EACjD;;AAGH,MAAa,wBAAwB,QAAwB;CAG3D,MAAM,WAAW,YAFD,IAAI,MAAM,uBAAuB,CAEZ;AAErC,QAAO,CAAC,SAAS,QAAQ,KAAK,CAAC,SAAS;;;;;;;;;;;AAY1C,MAAa,aAAa,SAAgC;AACxD,KAAI,CAAC,KAAM,QAAO;CAGlB,MAAM,YAAY,KAAK,MAAM;CAG7B,MAAM,YAAY,UAAU,MAAM,wCAAwC;AAC1E,KAAI,WAAW;EACb,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI;EACzC,MAAM,QAAQ,UAAU,GAAG,SAAS,GAAG,IAAI;AAE3C,SAAO,GADM,UAAU,GACR,GAAG,MAAM,GAAG;;CAI7B,MAAM,aAAa,UAAU,MAAM,kCAAkC;AACrE,KAAI,YAAY;EACd,MAAM,QAAQ,WAAW,GAAG,SAAS,GAAG,IAAI;EAC5C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,IAAI;AAE1C,SAAO,GADM,WAAW,GACT,GAAG,MAAM,GAAG;;CAI7B,MAAM,YAAY,UAAU,MAAM,YAAY;AAC9C,KAAI,UACF,QAAO,GAAG,UAAU,GAAG;AAGzB,QAAO;;AAIT,MAAa,SAAS,OAAe,IAAI,SAAS,QAAQ,WAAW,KAAK,GAAG,CAAC"}
|
|
@@ -4,6 +4,8 @@ const ISO8601_DURATION_REGEX = /(-)?P(?:([.,\d]+)Y)?(?:([.,\d]+)M)?(?:([.,\d]+)W
|
|
|
4
4
|
const parseIdFromUrl = (url) => {
|
|
5
5
|
if (!url) return null;
|
|
6
6
|
const parts = url.split("/");
|
|
7
|
+
const idParts = parts.filter((p) => /^\d+-/.test(p));
|
|
8
|
+
if (idParts.length > 0) return +idParts[idParts.length - 1].split("-")[0] || null;
|
|
7
9
|
return +parts[LANG_PREFIX_REGEX.test(parts[1]) ? 3 : 2]?.split("-")[0] || null;
|
|
8
10
|
};
|
|
9
11
|
const parseLastIdFromUrl = (url) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.helper.mjs","names":[],"sources":["../../src/helpers/global.helper.ts"],"sourcesContent":["import { CSFDColorRating, CSFDFilmTypes } from '../dto/global';\nimport { CSFDColors } from '../dto/user-ratings';\n\nconst LANG_PREFIX_REGEX = /^[a-z]{2,3}$/;\nconst ISO8601_DURATION_REGEX =\n /(-)?P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?T(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:([.,\\d]+)S)?/;\n\nexport const parseIdFromUrl = (url: string): number => {\n if (!url) return null;\n\n const parts = url.split('/');\n
|
|
1
|
+
{"version":3,"file":"global.helper.mjs","names":[],"sources":["../../src/helpers/global.helper.ts"],"sourcesContent":["import { CSFDColorRating, CSFDFilmTypes } from '../dto/global';\nimport { CSFDColors } from '../dto/user-ratings';\n\nconst LANG_PREFIX_REGEX = /^[a-z]{2,3}$/;\nconst ISO8601_DURATION_REGEX =\n /(-)?P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?T(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:([.,\\d]+)S)?/;\n\nexport const parseIdFromUrl = (url: string): number => {\n if (!url) return null;\n\n const parts = url.split('/');\n const idParts = parts.filter((p) => /^\\d+-/.test(p));\n if (idParts.length > 0) {\n const idSlug = idParts[idParts.length - 1];\n return +idSlug.split('-')[0] || null;\n }\n\n // Fallback\n const hasLangPrefix = LANG_PREFIX_REGEX.test(parts[1]);\n const idSlug = parts[hasLangPrefix ? 3 : 2];\n const id = idSlug?.split('-')[0];\n return +id || null;\n};\n\nexport const parseLastIdFromUrl = (url: string): number => {\n if (url) {\n const idSlug = url?.split('/')[3];\n const id = idSlug?.split('-')[0];\n return +id || null;\n } else {\n return null;\n }\n};\n\nexport const getColor = (cls: string): CSFDColorRating => {\n switch (cls) {\n case 'page-lightgrey':\n return 'unknown';\n case 'page-red':\n return 'good';\n case 'page-blue':\n return 'average';\n case 'page-grey':\n return 'bad';\n default:\n return 'unknown';\n }\n};\n\nexport const parseColor = (quality: CSFDColors): CSFDColorRating => {\n switch (quality) {\n case 'lightgrey':\n return 'unknown';\n case 'red':\n return 'good';\n case 'blue':\n return 'average';\n case 'grey':\n return 'bad';\n default:\n return 'unknown';\n }\n};\n\nconst filmTypeMap: Record<string, CSFDFilmTypes> = {\n 'TV film': 'tv-film',\n pořad: 'tv-show',\n seriál: 'series',\n 'divadelní záznam': 'theatrical',\n koncert: 'concert',\n série: 'season',\n 'studentský film': 'student-film',\n 'amatérský film': 'amateur-film',\n 'hudební videoklip': 'music-video',\n epizoda: 'episode',\n 'video kompilace': 'video-compilation',\n film: 'film'\n};\n\nexport const parseFilmType = (type: string): CSFDFilmTypes => {\n return filmTypeMap[type] || 'film';\n};\n\nexport const addProtocol = (url: string): string => {\n return url.startsWith('//') ? 'https:' + url : url;\n};\n\nexport const getDuration = (matches: RegExpMatchArray) => {\n return {\n sign: matches[1] === undefined ? '+' : '-',\n years: matches[2] === undefined ? 0 : matches[2],\n months: matches[3] === undefined ? 0 : matches[3],\n weeks: matches[4] === undefined ? 0 : matches[4],\n days: matches[5] === undefined ? 0 : matches[5],\n hours: matches[6] === undefined ? 0 : matches[6],\n minutes: matches[7] === undefined ? 0 : matches[7],\n seconds: matches[8] === undefined ? 0 : matches[8]\n };\n};\n\nexport const parseISO8601Duration = (iso: string): number => {\n const matches = iso.match(ISO8601_DURATION_REGEX);\n\n const duration = getDuration(matches);\n\n return +duration.hours * 60 + +duration.minutes;\n};\n\n/**\n * Parses a date string into a standardized YYYY-MM-DD format.\n * Supports:\n * - D.M.YYYY\n * - DD.MM.YYYY\n * - D. M. YYYY\n * - MM/DD/YYYY\n * - YYYY\n */\nexport const parseDate = (date: string): string | null => {\n if (!date) return null;\n\n // Clean the input\n const cleanDate = date.trim();\n\n // Try parsing DD.MM.YYYY or D.M.YYYY with optional spaces\n const dateMatch = cleanDate.match(/^(\\d{1,2})\\.\\s*(\\d{1,2})\\.\\s*(\\d{4})$/);\n if (dateMatch) {\n const day = dateMatch[1].padStart(2, '0');\n const month = dateMatch[2].padStart(2, '0');\n const year = dateMatch[3];\n return `${year}-${month}-${day}`;\n }\n\n // Try parsing MM/DD/YYYY\n const slashMatch = cleanDate.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (slashMatch) {\n const month = slashMatch[1].padStart(2, '0');\n const day = slashMatch[2].padStart(2, '0');\n const year = slashMatch[3];\n return `${year}-${month}-${day}`;\n }\n\n // Try parsing YYYY\n const yearMatch = cleanDate.match(/^(\\d{4})$/);\n if (yearMatch) {\n return `${yearMatch[1]}-01-01`;\n }\n\n return null;\n};\n\n// Sleep in loop\nexport const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms));\n"],"mappings":";AAGA,MAAM,oBAAoB;AAC1B,MAAM,yBACJ;AAEF,MAAa,kBAAkB,QAAwB;AACrD,KAAI,CAAC,IAAK,QAAO;CAEjB,MAAM,QAAQ,IAAI,MAAM,IAAI;CAC5B,MAAM,UAAU,MAAM,QAAQ,MAAM,QAAQ,KAAK,EAAE,CAAC;AACpD,KAAI,QAAQ,SAAS,EAEnB,QAAO,CADQ,QAAQ,QAAQ,SAAS,GACzB,MAAM,IAAI,CAAC,MAAM;AAOlC,QAAO,CAFQ,MADO,kBAAkB,KAAK,MAAM,GAAG,GACjB,IAAI,IACtB,MAAM,IAAI,CAAC,MAChB;;AAGhB,MAAa,sBAAsB,QAAwB;AACzD,KAAI,IAGF,QAAO,EAFQ,KAAK,MAAM,IAAI,CAAC,KACZ,MAAM,IAAI,CAAC,MAChB;KAEd,QAAO;;AAIX,MAAa,YAAY,QAAiC;AACxD,SAAQ,KAAR;EACE,KAAK,iBACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,cAAc,YAAyC;AAClE,SAAQ,SAAR;EACE,KAAK,YACH,QAAO;EACT,KAAK,MACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAM,cAA6C;CACjD,WAAW;CACX,OAAO;CACP,QAAQ;CACR,oBAAoB;CACpB,SAAS;CACT,OAAO;CACP,mBAAmB;CACnB,kBAAkB;CAClB,qBAAqB;CACrB,SAAS;CACT,mBAAmB;CACnB,MAAM;CACP;AAED,MAAa,iBAAiB,SAAgC;AAC5D,QAAO,YAAY,SAAS;;AAG9B,MAAa,eAAe,QAAwB;AAClD,QAAO,IAAI,WAAW,KAAK,GAAG,WAAW,MAAM;;AAGjD,MAAa,eAAe,YAA8B;AACxD,QAAO;EACL,MAAM,QAAQ,OAAO,SAAY,MAAM;EACvC,OAAO,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC9C,QAAQ,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC/C,OAAO,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC9C,MAAM,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC7C,OAAO,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAC9C,SAAS,QAAQ,OAAO,SAAY,IAAI,QAAQ;EAChD,SAAS,QAAQ,OAAO,SAAY,IAAI,QAAQ;EACjD;;AAGH,MAAa,wBAAwB,QAAwB;CAG3D,MAAM,WAAW,YAFD,IAAI,MAAM,uBAAuB,CAEZ;AAErC,QAAO,CAAC,SAAS,QAAQ,KAAK,CAAC,SAAS;;;;;;;;;;;AAY1C,MAAa,aAAa,SAAgC;AACxD,KAAI,CAAC,KAAM,QAAO;CAGlB,MAAM,YAAY,KAAK,MAAM;CAG7B,MAAM,YAAY,UAAU,MAAM,wCAAwC;AAC1E,KAAI,WAAW;EACb,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI;EACzC,MAAM,QAAQ,UAAU,GAAG,SAAS,GAAG,IAAI;AAE3C,SAAO,GADM,UAAU,GACR,GAAG,MAAM,GAAG;;CAI7B,MAAM,aAAa,UAAU,MAAM,kCAAkC;AACrE,KAAI,YAAY;EACd,MAAM,QAAQ,WAAW,GAAG,SAAS,GAAG,IAAI;EAC5C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,IAAI;AAE1C,SAAO,GADM,WAAW,GACT,GAAG,MAAM,GAAG;;CAI7B,MAAM,YAAY,UAAU,MAAM,YAAY;AAC9C,KAAI,UACF,QAAO,GAAG,UAAU,GAAG;AAGzB,QAAO;;AAIT,MAAa,SAAS,OAAe,IAAI,SAAS,QAAQ,WAAW,KAAK,GAAG,CAAC"}
|
package/package.json
CHANGED