sales-frontend-utils 0.0.5 → 0.0.6

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/dist/index.cjs CHANGED
@@ -41,8 +41,25 @@ var isUserAgentMobile = (userAgent) => {
41
41
  var isUserAgentTablet = (userAgent) => {
42
42
  return /iPad/i.test(userAgent);
43
43
  };
44
+ var isSmartphoneDevice = () => {
45
+ if (typeof window === "undefined") {
46
+ return false;
47
+ }
48
+ const userAgent = navigator.userAgent.toLowerCase();
49
+ const smartphonePatterns = [
50
+ /android.*mobile/i,
51
+ /webos/i,
52
+ /iphone/i,
53
+ /ipod/i,
54
+ /blackberry/i,
55
+ /windows phone/i,
56
+ /mobile/i
57
+ ];
58
+ return smartphonePatterns.some((pattern) => pattern.test(userAgent));
59
+ };
44
60
 
45
61
  exports.debounce = debounce;
62
+ exports.isSmartphoneDevice = isSmartphoneDevice;
46
63
  exports.isUserAgentMobile = isUserAgentMobile;
47
64
  exports.isUserAgentTablet = isUserAgentTablet;
48
65
  exports.throttle = throttle;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/timing/timing-utils.ts","../src/agent/index.ts"],"names":[],"mappings":";;;AAMO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AAErB,IAAI,IAAA,GAAA,GAAM,YAAY,KAAO,EAAA;AAE3B,MAAW,QAAA,GAAA,GAAA;AACX,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,KACd,MAAA,IAAW,CAAC,OAAS,EAAA;AAEnB,MAAU,OAAA,GAAA,UAAA;AAAA,QACR,MAAM;AACJ,UAAA,QAAA,GAAW,KAAK,GAAI,EAAA;AACpB,UAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,UAAU,OAAA,GAAA,IAAA;AAAA,SACZ;AAAA,QACA,SAAS,GAAM,GAAA,QAAA;AAAA,OACjB;AAAA;AACF,GACF;AACF;AAQO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAEtB,IAAA,OAAA,GAAU,WAAW,MAAM;AACzB,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,MAAU,OAAA,GAAA,IAAA;AAAA,OACT,KAAK,CAAA;AAAA,GACV;AACF;;;ACjDa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAChD;AAEa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAC/B","file":"index.cjs","sourcesContent":["/**\n * 쓰로틀\n * @param func\n * @param delay\n * @returns\n */\nexport function throttle<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let lastCall = 0;\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n const now = Date.now();\n\n if (now - lastCall >= delay) {\n // 마지막 호출로부터 delay 시간이 지났으면 즉시 실행\n lastCall = now;\n func(...args);\n } else if (!timeout) {\n // 대기 중인 타이머가 없으면 새로운 타이머 설정\n timeout = setTimeout(\n () => {\n lastCall = Date.now();\n func(...args);\n timeout = null;\n },\n delay - (now - lastCall)\n );\n }\n };\n}\n\n/**\n * 디바운스\n * @param func\n * @param delay\n * @returns\n */\nexport function debounce<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n timeout = null;\n }, delay);\n };\n}\n","export const isUserAgentMobile = (userAgent: string): boolean => {\n return /mobile|iphone|android/i.test(userAgent);\n};\n\nexport const isUserAgentTablet = (userAgent: string): boolean => {\n return /iPad/i.test(userAgent);\n};\n"]}
1
+ {"version":3,"sources":["../src/timing/timing-utils.ts","../src/agent/index.ts"],"names":[],"mappings":";;;AAMO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AAErB,IAAI,IAAA,GAAA,GAAM,YAAY,KAAO,EAAA;AAE3B,MAAW,QAAA,GAAA,GAAA;AACX,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,KACd,MAAA,IAAW,CAAC,OAAS,EAAA;AAEnB,MAAU,OAAA,GAAA,UAAA;AAAA,QACR,MAAM;AACJ,UAAA,QAAA,GAAW,KAAK,GAAI,EAAA;AACpB,UAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,UAAU,OAAA,GAAA,IAAA;AAAA,SACZ;AAAA,QACA,SAAS,GAAM,GAAA,QAAA;AAAA,OACjB;AAAA;AACF,GACF;AACF;AAQO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAEtB,IAAA,OAAA,GAAU,WAAW,MAAM;AACzB,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,MAAU,OAAA,GAAA,IAAA;AAAA,OACT,KAAK,CAAA;AAAA,GACV;AACF;;;ACjDa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAChD;AAEa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAC/B;AAMO,IAAM,qBAAqB,MAAe;AAC/C,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAO,OAAA,KAAA;AAAA;AAGT,EAAM,MAAA,SAAA,GAAY,SAAU,CAAA,SAAA,CAAU,WAAY,EAAA;AAGlD,EAAA,MAAM,kBAAqB,GAAA;AAAA,IACzB,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO,mBAAmB,IAAK,CAAA,CAAC,YAAY,OAAQ,CAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AACrE","file":"index.cjs","sourcesContent":["/**\n * 쓰로틀\n * @param func\n * @param delay\n * @returns\n */\nexport function throttle<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let lastCall = 0;\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n const now = Date.now();\n\n if (now - lastCall >= delay) {\n // 마지막 호출로부터 delay 시간이 지났으면 즉시 실행\n lastCall = now;\n func(...args);\n } else if (!timeout) {\n // 대기 중인 타이머가 없으면 새로운 타이머 설정\n timeout = setTimeout(\n () => {\n lastCall = Date.now();\n func(...args);\n timeout = null;\n },\n delay - (now - lastCall)\n );\n }\n };\n}\n\n/**\n * 디바운스\n * @param func\n * @param delay\n * @returns\n */\nexport function debounce<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n timeout = null;\n }, delay);\n };\n}\n","export const isUserAgentMobile = (userAgent: string): boolean => {\n return /mobile|iphone|android/i.test(userAgent);\n};\n\nexport const isUserAgentTablet = (userAgent: string): boolean => {\n return /iPad/i.test(userAgent);\n};\n\n/**\n * 스마트폰 기기 여부를 판단합니다.(Only Client)\n * @returns\n */\nexport const isSmartphoneDevice = (): boolean => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const userAgent = navigator.userAgent.toLowerCase();\n\n // 스마트폰 기기 패턴들 (태블릿 제외)\n const smartphonePatterns = [\n /android.*mobile/i,\n /webos/i,\n /iphone/i,\n /ipod/i,\n /blackberry/i,\n /windows phone/i,\n /mobile/i\n ];\n\n return smartphonePatterns.some((pattern) => pattern.test(userAgent));\n};\n"]}
package/dist/index.d.cts CHANGED
@@ -15,5 +15,10 @@ declare function debounce<T extends (...args: any[]) => void>(func: T, delay: nu
15
15
 
16
16
  declare const isUserAgentMobile: (userAgent: string) => boolean;
17
17
  declare const isUserAgentTablet: (userAgent: string) => boolean;
18
+ /**
19
+ * 스마트폰 기기 여부를 판단합니다.(Only Client)
20
+ * @returns
21
+ */
22
+ declare const isSmartphoneDevice: () => boolean;
18
23
 
19
- export { debounce, isUserAgentMobile, isUserAgentTablet, throttle };
24
+ export { debounce, isSmartphoneDevice, isUserAgentMobile, isUserAgentTablet, throttle };
package/dist/index.d.ts CHANGED
@@ -15,5 +15,10 @@ declare function debounce<T extends (...args: any[]) => void>(func: T, delay: nu
15
15
 
16
16
  declare const isUserAgentMobile: (userAgent: string) => boolean;
17
17
  declare const isUserAgentTablet: (userAgent: string) => boolean;
18
+ /**
19
+ * 스마트폰 기기 여부를 판단합니다.(Only Client)
20
+ * @returns
21
+ */
22
+ declare const isSmartphoneDevice: () => boolean;
18
23
 
19
- export { debounce, isUserAgentMobile, isUserAgentTablet, throttle };
24
+ export { debounce, isSmartphoneDevice, isUserAgentMobile, isUserAgentTablet, throttle };
package/dist/index.js CHANGED
@@ -39,7 +39,23 @@ var isUserAgentMobile = (userAgent) => {
39
39
  var isUserAgentTablet = (userAgent) => {
40
40
  return /iPad/i.test(userAgent);
41
41
  };
42
+ var isSmartphoneDevice = () => {
43
+ if (typeof window === "undefined") {
44
+ return false;
45
+ }
46
+ const userAgent = navigator.userAgent.toLowerCase();
47
+ const smartphonePatterns = [
48
+ /android.*mobile/i,
49
+ /webos/i,
50
+ /iphone/i,
51
+ /ipod/i,
52
+ /blackberry/i,
53
+ /windows phone/i,
54
+ /mobile/i
55
+ ];
56
+ return smartphonePatterns.some((pattern) => pattern.test(userAgent));
57
+ };
42
58
 
43
- export { debounce, isUserAgentMobile, isUserAgentTablet, throttle };
59
+ export { debounce, isSmartphoneDevice, isUserAgentMobile, isUserAgentTablet, throttle };
44
60
  //# sourceMappingURL=index.js.map
45
61
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/timing/timing-utils.ts","../src/agent/index.ts"],"names":[],"mappings":";AAMO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AAErB,IAAI,IAAA,GAAA,GAAM,YAAY,KAAO,EAAA;AAE3B,MAAW,QAAA,GAAA,GAAA;AACX,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,KACd,MAAA,IAAW,CAAC,OAAS,EAAA;AAEnB,MAAU,OAAA,GAAA,UAAA;AAAA,QACR,MAAM;AACJ,UAAA,QAAA,GAAW,KAAK,GAAI,EAAA;AACpB,UAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,UAAU,OAAA,GAAA,IAAA;AAAA,SACZ;AAAA,QACA,SAAS,GAAM,GAAA,QAAA;AAAA,OACjB;AAAA;AACF,GACF;AACF;AAQO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAEtB,IAAA,OAAA,GAAU,WAAW,MAAM;AACzB,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,MAAU,OAAA,GAAA,IAAA;AAAA,OACT,KAAK,CAAA;AAAA,GACV;AACF;;;ACjDa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAChD;AAEa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAC/B","file":"index.js","sourcesContent":["/**\n * 쓰로틀\n * @param func\n * @param delay\n * @returns\n */\nexport function throttle<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let lastCall = 0;\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n const now = Date.now();\n\n if (now - lastCall >= delay) {\n // 마지막 호출로부터 delay 시간이 지났으면 즉시 실행\n lastCall = now;\n func(...args);\n } else if (!timeout) {\n // 대기 중인 타이머가 없으면 새로운 타이머 설정\n timeout = setTimeout(\n () => {\n lastCall = Date.now();\n func(...args);\n timeout = null;\n },\n delay - (now - lastCall)\n );\n }\n };\n}\n\n/**\n * 디바운스\n * @param func\n * @param delay\n * @returns\n */\nexport function debounce<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n timeout = null;\n }, delay);\n };\n}\n","export const isUserAgentMobile = (userAgent: string): boolean => {\n return /mobile|iphone|android/i.test(userAgent);\n};\n\nexport const isUserAgentTablet = (userAgent: string): boolean => {\n return /iPad/i.test(userAgent);\n};\n"]}
1
+ {"version":3,"sources":["../src/timing/timing-utils.ts","../src/agent/index.ts"],"names":[],"mappings":";AAMO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AAErB,IAAI,IAAA,GAAA,GAAM,YAAY,KAAO,EAAA;AAE3B,MAAW,QAAA,GAAA,GAAA;AACX,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,KACd,MAAA,IAAW,CAAC,OAAS,EAAA;AAEnB,MAAU,OAAA,GAAA,UAAA;AAAA,QACR,MAAM;AACJ,UAAA,QAAA,GAAW,KAAK,GAAI,EAAA;AACpB,UAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,UAAU,OAAA,GAAA,IAAA;AAAA,SACZ;AAAA,QACA,SAAS,GAAM,GAAA,QAAA;AAAA,OACjB;AAAA;AACF,GACF;AACF;AAQO,SAAS,QAAA,CAA6C,MAAS,KAAiD,EAAA;AACrH,EAAA,IAAI,OAAiC,GAAA,IAAA;AAErC,EAAA,OAAO,IAAI,IAAwB,KAAA;AACjC,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAEtB,IAAA,OAAA,GAAU,WAAW,MAAM;AACzB,MAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AACZ,MAAU,OAAA,GAAA,IAAA;AAAA,OACT,KAAK,CAAA;AAAA,GACV;AACF;;;ACjDa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAChD;AAEa,IAAA,iBAAA,GAAoB,CAAC,SAA+B,KAAA;AAC/D,EAAO,OAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAC/B;AAMO,IAAM,qBAAqB,MAAe;AAC/C,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAO,OAAA,KAAA;AAAA;AAGT,EAAM,MAAA,SAAA,GAAY,SAAU,CAAA,SAAA,CAAU,WAAY,EAAA;AAGlD,EAAA,MAAM,kBAAqB,GAAA;AAAA,IACzB,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO,mBAAmB,IAAK,CAAA,CAAC,YAAY,OAAQ,CAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AACrE","file":"index.js","sourcesContent":["/**\n * 쓰로틀\n * @param func\n * @param delay\n * @returns\n */\nexport function throttle<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let lastCall = 0;\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n const now = Date.now();\n\n if (now - lastCall >= delay) {\n // 마지막 호출로부터 delay 시간이 지났으면 즉시 실행\n lastCall = now;\n func(...args);\n } else if (!timeout) {\n // 대기 중인 타이머가 없으면 새로운 타이머 설정\n timeout = setTimeout(\n () => {\n lastCall = Date.now();\n func(...args);\n timeout = null;\n },\n delay - (now - lastCall)\n );\n }\n };\n}\n\n/**\n * 디바운스\n * @param func\n * @param delay\n * @returns\n */\nexport function debounce<T extends (...args: any[]) => void>(func: T, delay: number): (...args: Parameters<T>) => void {\n let timeout: NodeJS.Timeout | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n timeout = null;\n }, delay);\n };\n}\n","export const isUserAgentMobile = (userAgent: string): boolean => {\n return /mobile|iphone|android/i.test(userAgent);\n};\n\nexport const isUserAgentTablet = (userAgent: string): boolean => {\n return /iPad/i.test(userAgent);\n};\n\n/**\n * 스마트폰 기기 여부를 판단합니다.(Only Client)\n * @returns\n */\nexport const isSmartphoneDevice = (): boolean => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const userAgent = navigator.userAgent.toLowerCase();\n\n // 스마트폰 기기 패턴들 (태블릿 제외)\n const smartphonePatterns = [\n /android.*mobile/i,\n /webos/i,\n /iphone/i,\n /ipod/i,\n /blackberry/i,\n /windows phone/i,\n /mobile/i\n ];\n\n return smartphonePatterns.some((pattern) => pattern.test(userAgent));\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sales-frontend-utils",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,8 +24,8 @@
24
24
  "@types/node": "^22.14.0",
25
25
  "tsup": "^8.4.0",
26
26
  "typescript": "5.8.2",
27
- "eslint-config-sales-frontend-eslint-config-v8": "^0.0.5",
28
- "sales-frontend-typescript-config": "0.0.2"
27
+ "sales-frontend-typescript-config": "0.0.2",
28
+ "eslint-config-sales-frontend-eslint-config-v8": "^0.0.6"
29
29
  },
30
30
  "scripts": {
31
31
  "lint": "eslint . --max-warnings 0",