@dtect/security-sdk-react 0.0.31 → 0.1.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.
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -3
- package/src/provider/index.tsx +13 -7
- package/src/types/context.ts +5 -9
- package/src/types/input.ts +0 -3
- package/src/types/response.ts +0 -5
package/dist/index.d.mts
CHANGED
|
@@ -59,9 +59,10 @@ interface SecurityAPIProviderProps {
|
|
|
59
59
|
apiKey: string;
|
|
60
60
|
endpoint?: string;
|
|
61
61
|
includeResults?: boolean;
|
|
62
|
+
autoFlagAIUsage?: boolean;
|
|
62
63
|
children: React.ReactNode;
|
|
63
64
|
}
|
|
64
|
-
declare const SecurityAPIProvider: ({ clientId, apiKey, children, endpoint, includeResults }: SecurityAPIProviderProps) => react_jsx_runtime.JSX.Element;
|
|
65
|
+
declare const SecurityAPIProvider: ({ clientId, apiKey, children, endpoint, includeResults, autoFlagAIUsage, }: SecurityAPIProviderProps) => react_jsx_runtime.JSX.Element;
|
|
65
66
|
|
|
66
67
|
declare const useSecurityApi: () => {
|
|
67
68
|
getSecurityResult: (props: ISecurityCheckInput) => Promise<ISecurityResultResponse | Error>;
|
package/dist/index.d.ts
CHANGED
|
@@ -59,9 +59,10 @@ interface SecurityAPIProviderProps {
|
|
|
59
59
|
apiKey: string;
|
|
60
60
|
endpoint?: string;
|
|
61
61
|
includeResults?: boolean;
|
|
62
|
+
autoFlagAIUsage?: boolean;
|
|
62
63
|
children: React.ReactNode;
|
|
63
64
|
}
|
|
64
|
-
declare const SecurityAPIProvider: ({ clientId, apiKey, children, endpoint, includeResults }: SecurityAPIProviderProps) => react_jsx_runtime.JSX.Element;
|
|
65
|
+
declare const SecurityAPIProvider: ({ clientId, apiKey, children, endpoint, includeResults, autoFlagAIUsage, }: SecurityAPIProviderProps) => react_jsx_runtime.JSX.Element;
|
|
65
66
|
|
|
66
67
|
declare const useSecurityApi: () => {
|
|
67
68
|
getSecurityResult: (props: ISecurityCheckInput) => Promise<ISecurityResultResponse | Error>;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var b=Object.create;var m=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var V=(e,t)=>{for(var r in t)m(e,r,{get:t[r],enumerable:!0})},C=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of K(t))!q.call(e,s)&&s!==r&&m(e,s,{get:()=>t[s],enumerable:!(i=G(t,s))||i.enumerable});return e};var _=(e,t,r)=>(r=e!=null?b(H(e)):{},C(t||!e||!e.__esModule?m(r,"default",{value:e,enumerable:!0}):r,e)),Y=e=>C(m({},"__esModule",{value:!0}),e);var J={};V(J,{LanguageCodes:()=>R.LanguageCodes,QualityQuestionsRespondentTypes:()=>R.QualityQuestionsRespondentTypes,SecurityAPIError:()=>W,SecurityAPIProvider:()=>M,useSecurityApi:()=>B});module.exports=Y(J);var f=require("react");var z={UNAUTHORIZED:"Unauthorized"},g={INTERNAL_SERVER_ERROR:"Internal Server Error during API Request",MISSING_CREDENTIALS:"Missing Public Client ID or Public API Key",MAINTENANCE_MODE:"API Under Maintenance",RATE_LIMIT_REACHED:"Too many requests. Rate limit exceeded"},h={SDK_INIT_ERROR:"Internal Server Error during SDK Initialization",DUPLICATE_INITIALIZATION:"Multiple SDK Initializations Detected",NOT_INITIALIZED:"SDK Not Initialized"},w={INVALID_CREDENTIALS:"Invalid Public Client ID or Public API Key"},D={FAILED_TO_GET_SECURITY_RESULT:"Failed to Retrieve Security Result"},P={FAILED_TO_GET_SECURITY_TOKEN:" Failed to Generate Security Token"},E={...z,...g,...h,...w,...D,...P,FAILED_TO_CHECK_QUESTIONS:"Fail to check questions",FAILED_TO_GET_QUALITY_QUESTIONS:"Fail to get quality questions",FAILED_TO_DETECT_AI:"Fail to detect ai"},x={...g,...h,...w,...D,...P};var S=_(require("@dtect/security-sdk-js"));var I=require("react"),L=()=>{let[e,t]=(0,I.useState)(!1),[r,i]=(0,I.useState)(!1),[s,
|
|
2
|
+
"use strict";var b=Object.create;var m=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var V=(e,t)=>{for(var r in t)m(e,r,{get:t[r],enumerable:!0})},C=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of K(t))!q.call(e,s)&&s!==r&&m(e,s,{get:()=>t[s],enumerable:!(i=G(t,s))||i.enumerable});return e};var _=(e,t,r)=>(r=e!=null?b(H(e)):{},C(t||!e||!e.__esModule?m(r,"default",{value:e,enumerable:!0}):r,e)),Y=e=>C(m({},"__esModule",{value:!0}),e);var J={};V(J,{LanguageCodes:()=>R.LanguageCodes,QualityQuestionsRespondentTypes:()=>R.QualityQuestionsRespondentTypes,SecurityAPIError:()=>W,SecurityAPIProvider:()=>M,useSecurityApi:()=>B});module.exports=Y(J);var f=require("react");var z={UNAUTHORIZED:"Unauthorized"},g={INTERNAL_SERVER_ERROR:"Internal Server Error during API Request",MISSING_CREDENTIALS:"Missing Public Client ID or Public API Key",MAINTENANCE_MODE:"API Under Maintenance",RATE_LIMIT_REACHED:"Too many requests. Rate limit exceeded"},h={SDK_INIT_ERROR:"Internal Server Error during SDK Initialization",DUPLICATE_INITIALIZATION:"Multiple SDK Initializations Detected",NOT_INITIALIZED:"SDK Not Initialized"},w={INVALID_CREDENTIALS:"Invalid Public Client ID or Public API Key"},D={FAILED_TO_GET_SECURITY_RESULT:"Failed to Retrieve Security Result"},P={FAILED_TO_GET_SECURITY_TOKEN:" Failed to Generate Security Token"},E={...z,...g,...h,...w,...D,...P,FAILED_TO_CHECK_QUESTIONS:"Fail to check questions",FAILED_TO_GET_QUALITY_QUESTIONS:"Fail to get quality questions",FAILED_TO_DETECT_AI:"Fail to detect ai"},x={...g,...h,...w,...D,...P};var S=_(require("@dtect/security-sdk-js"));var I=require("react"),L=()=>{let[e,t]=(0,I.useState)(!1),[r,i]=(0,I.useState)(!1),[s,y]=(0,I.useState)(!1),[T,l]=(0,I.useState)(),n=(0,I.useRef)(0),o=()=>{t(!1),i(!1),l(void 0),y(!1),n.current=0};return(0,I.useEffect)(()=>{let c=()=>{window.getSelection()?.toString()?.length&&(n.current=new Date().getTime(),t(!0))},p=a=>{let A=a.clipboardData?.getData("text"),d=a.target instanceof HTMLInputElement||a.target instanceof HTMLTextAreaElement;A&&d&&y(!0)},u=()=>{i(!0),l(a=>{let d=(new Date().getTime()-n.current)/1e3;return n.current?a?d<a?d:a:d:a})};return document?.addEventListener("copy",c),document?.addEventListener("paste",p),window?.addEventListener("blur",u),()=>{document?.removeEventListener("copy",c),document?.removeEventListener("paste",p),window?.removeEventListener("blur",u)}},[]),{qbc:e,mas:r,scb:T,apd:s,reset:o}};var N=require("react/jsx-runtime"),k=(0,f.createContext)({}),Q=({children:e})=>{let{reset:t,...r}=L(),i=async({projectId:n,visitorId:o,securitySettings:c,metaData:p})=>{try{return await S.default.getSecurityResult({projectId:n,visitorId:o,securitySettings:c,metaData:p})}catch(u){throw u instanceof Error?new Error(u.message):new Error(E.FAILED_TO_GET_SECURITY_RESULT)}},s=async({projectId:n,visitorId:o,securitySettings:c,metaData:p})=>{try{return await S.default.getSecurityToken({projectId:n,visitorId:o,securitySettings:c,metaData:p})}catch(u){throw u instanceof Error?new Error(u.message):new Error(E.FAILED_TO_GET_SECURITY_TOKEN)}},y=async({respondentType:n,language:o})=>{try{return await S.default.getQualityQuestions({respondentType:n,language:o})}catch(c){throw c instanceof Error?new Error(c.message):new Error(E.FAILED_TO_GET_QUALITY_QUESTIONS)}},T=async n=>{try{return await S.default.checkQualityQuestions({...n})}catch(o){throw o instanceof Error?new Error(o.message):new Error(E.FAILED_TO_CHECK_QUESTIONS)}},l=async n=>{try{return await S.default.isAIUsageDetected({...n,...r})}catch(o){throw o instanceof Error?new Error(o.message):new Error(E.FAILED_TO_DETECT_AI)}};return(0,N.jsx)(k.Provider,{value:{getSecurityResult:i,getSecurityToken:s,getQualityQuestions:y,isAIUsageDetected:l,checkQualityQuestions:T},children:e})},O=()=>(0,f.useContext)(k);var v=require("react"),U=_(require("@dtect/security-sdk-js"));var F=require("react/jsx-runtime"),Z=({clientId:e,apiKey:t,children:r,endpoint:i,includeResults:s,autoFlagAIUsage:y})=>{let T=async()=>{try{await U.default.init({apiKey:t,clientId:e,endpoint:i,includeResults:s,autoFlagAIUsage:y})}catch(l){if(l instanceof Error){console.error(l.message);return}console.error(E.SDK_INIT_ERROR)}};if((0,v.useEffect)(()=>{e&&t&&T()},[]),!e||!t)throw new Error(E.MISSING_CREDENTIALS);return(0,F.jsx)(Q,{children:r})},M=Z;var R=require("@dtect/security-sdk-js"),B=()=>{let{getSecurityResult:e,getSecurityToken:t,getQualityQuestions:r,isAIUsageDetected:i,checkQualityQuestions:s}=O();return{getSecurityResult:e,getSecurityToken:t,getQualityQuestions:r,isAIUsageDetected:i,checkQualityQuestions:s}},W=x;0&&(module.exports={LanguageCodes,QualityQuestionsRespondentTypes,SecurityAPIError,SecurityAPIProvider,useSecurityApi});
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{createContext as Q,useContext as O}from"react";var x={UNAUTHORIZED:"Unauthorized"},f={INTERNAL_SERVER_ERROR:"Internal Server Error during API Request",MISSING_CREDENTIALS:"Missing Public Client ID or Public API Key",MAINTENANCE_MODE:"API Under Maintenance",RATE_LIMIT_REACHED:"Too many requests. Rate limit exceeded"},R={SDK_INIT_ERROR:"Internal Server Error during SDK Initialization",DUPLICATE_INITIALIZATION:"Multiple SDK Initializations Detected",NOT_INITIALIZED:"SDK Not Initialized"},A={INVALID_CREDENTIALS:"Invalid Public Client ID or Public API Key"},C={FAILED_TO_GET_SECURITY_RESULT:"Failed to Retrieve Security Result"},_={FAILED_TO_GET_SECURITY_TOKEN:" Failed to Generate Security Token"},c={...x,...f,...R,...A,...C,..._,FAILED_TO_CHECK_QUESTIONS:"Fail to check questions",FAILED_TO_GET_QUALITY_QUESTIONS:"Fail to get quality questions",FAILED_TO_DETECT_AI:"Fail to detect ai"},g={...f,...R,...A,...C,..._};import
|
|
2
|
+
import{createContext as Q,useContext as O}from"react";var x={UNAUTHORIZED:"Unauthorized"},f={INTERNAL_SERVER_ERROR:"Internal Server Error during API Request",MISSING_CREDENTIALS:"Missing Public Client ID or Public API Key",MAINTENANCE_MODE:"API Under Maintenance",RATE_LIMIT_REACHED:"Too many requests. Rate limit exceeded"},R={SDK_INIT_ERROR:"Internal Server Error during SDK Initialization",DUPLICATE_INITIALIZATION:"Multiple SDK Initializations Detected",NOT_INITIALIZED:"SDK Not Initialized"},A={INVALID_CREDENTIALS:"Invalid Public Client ID or Public API Key"},C={FAILED_TO_GET_SECURITY_RESULT:"Failed to Retrieve Security Result"},_={FAILED_TO_GET_SECURITY_TOKEN:" Failed to Generate Security Token"},c={...x,...f,...R,...A,...C,..._,FAILED_TO_CHECK_QUESTIONS:"Fail to check questions",FAILED_TO_GET_QUALITY_QUESTIONS:"Fail to get quality questions",FAILED_TO_DETECT_AI:"Fail to detect ai"},g={...f,...R,...A,...C,..._};import T from"@dtect/security-sdk-js";import{useState as d,useRef as L,useEffect as k}from"react";var h=()=>{let[n,s]=d(!1),[a,u]=d(!1),[E,l]=d(!1),[p,I]=d(),t=L(0),e=()=>{s(!1),u(!1),I(void 0),l(!1),t.current=0};return k(()=>{let r=()=>{window.getSelection()?.toString()?.length&&(t.current=new Date().getTime(),s(!0))},y=i=>{let m=i.clipboardData?.getData("text"),S=i.target instanceof HTMLInputElement||i.target instanceof HTMLTextAreaElement;m&&S&&l(!0)},o=()=>{u(!0),I(i=>{let S=(new Date().getTime()-t.current)/1e3;return t.current?i?S<i?S:i:S:i})};return document?.addEventListener("copy",r),document?.addEventListener("paste",y),window?.addEventListener("blur",o),()=>{document?.removeEventListener("copy",r),document?.removeEventListener("paste",y),window?.removeEventListener("blur",o)}},[]),{qbc:n,mas:a,scb:p,apd:E,reset:e}};import{jsx as N}from"react/jsx-runtime";var w=Q({}),D=({children:n})=>{let{reset:s,...a}=h(),u=async({projectId:t,visitorId:e,securitySettings:r,metaData:y})=>{try{return await T.getSecurityResult({projectId:t,visitorId:e,securitySettings:r,metaData:y})}catch(o){throw o instanceof Error?new Error(o.message):new Error(c.FAILED_TO_GET_SECURITY_RESULT)}},E=async({projectId:t,visitorId:e,securitySettings:r,metaData:y})=>{try{return await T.getSecurityToken({projectId:t,visitorId:e,securitySettings:r,metaData:y})}catch(o){throw o instanceof Error?new Error(o.message):new Error(c.FAILED_TO_GET_SECURITY_TOKEN)}},l=async({respondentType:t,language:e})=>{try{return await T.getQualityQuestions({respondentType:t,language:e})}catch(r){throw r instanceof Error?new Error(r.message):new Error(c.FAILED_TO_GET_QUALITY_QUESTIONS)}},p=async t=>{try{return await T.checkQualityQuestions({...t})}catch(e){throw e instanceof Error?new Error(e.message):new Error(c.FAILED_TO_CHECK_QUESTIONS)}},I=async t=>{try{return await T.isAIUsageDetected({...t,...a})}catch(e){throw e instanceof Error?new Error(e.message):new Error(c.FAILED_TO_DETECT_AI)}};return N(w.Provider,{value:{getSecurityResult:u,getSecurityToken:E,getQualityQuestions:l,isAIUsageDetected:I,checkQualityQuestions:p},children:n})},P=()=>O(w);import{useEffect as v}from"react";import U from"@dtect/security-sdk-js";import{jsx as b}from"react/jsx-runtime";var M=({clientId:n,apiKey:s,children:a,endpoint:u,includeResults:E,autoFlagAIUsage:l})=>{let p=async()=>{try{await U.init({apiKey:s,clientId:n,endpoint:u,includeResults:E,autoFlagAIUsage:l})}catch(I){if(I instanceof Error){console.error(I.message);return}console.error(c.SDK_INIT_ERROR)}};if(v(()=>{n&&s&&p()},[]),!n||!s)throw new Error(c.MISSING_CREDENTIALS);return b(D,{children:a})},F=M;import{LanguageCodes as ge,QualityQuestionsRespondentTypes as he}from"@dtect/security-sdk-js";var fe=()=>{let{getSecurityResult:n,getSecurityToken:s,getQualityQuestions:a,isAIUsageDetected:u,checkQualityQuestions:E}=P();return{getSecurityResult:n,getSecurityToken:s,getQualityQuestions:a,isAIUsageDetected:u,checkQualityQuestions:E}},Re=g;export{ge as LanguageCodes,he as QualityQuestionsRespondentTypes,Re as SecurityAPIError,F as SecurityAPIProvider,fe as useSecurityApi};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dtect/security-sdk-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
"ts:check": "tsc --noEmit"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dtect/security-sdk-js": "^0.
|
|
14
|
-
"@tanstack/react-query": "^5.64.1"
|
|
13
|
+
"@dtect/security-sdk-js": "^0.1.1"
|
|
15
14
|
},
|
|
16
15
|
"devDependencies": {
|
|
17
16
|
"@eslint/js": "^9.17.0",
|
package/src/provider/index.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { useEffect, PropsWithChildren } from "react";
|
|
4
4
|
import dtect from "@dtect/security-sdk-js";
|
|
5
5
|
import { SecurityCheckContextProvider } from "../context";
|
|
6
6
|
import { ErrorMessageEnum } from "../types";
|
|
@@ -9,7 +9,8 @@ interface SecurityAPIProviderProps {
|
|
|
9
9
|
clientId: string;
|
|
10
10
|
apiKey: string;
|
|
11
11
|
endpoint?: string;
|
|
12
|
-
includeResults?: boolean
|
|
12
|
+
includeResults?: boolean;
|
|
13
|
+
autoFlagAIUsage?: boolean;
|
|
13
14
|
children: React.ReactNode;
|
|
14
15
|
}
|
|
15
16
|
|
|
@@ -18,19 +19,25 @@ const SecurityAPIProvider = ({
|
|
|
18
19
|
apiKey,
|
|
19
20
|
children,
|
|
20
21
|
endpoint,
|
|
21
|
-
includeResults
|
|
22
|
+
includeResults,
|
|
23
|
+
autoFlagAIUsage,
|
|
22
24
|
}: SecurityAPIProviderProps) => {
|
|
23
|
-
|
|
24
25
|
const getKeysHandler = async () => {
|
|
25
26
|
try {
|
|
26
|
-
await dtect.init({
|
|
27
|
+
await dtect.init({
|
|
28
|
+
apiKey,
|
|
29
|
+
clientId,
|
|
30
|
+
endpoint,
|
|
31
|
+
includeResults,
|
|
32
|
+
autoFlagAIUsage,
|
|
33
|
+
});
|
|
27
34
|
} catch (error) {
|
|
28
35
|
if (error instanceof Error) {
|
|
29
36
|
console.error(error.message);
|
|
30
37
|
return;
|
|
31
38
|
}
|
|
32
39
|
|
|
33
|
-
console.error(ErrorMessageEnum.SDK_INIT_ERROR)
|
|
40
|
+
console.error(ErrorMessageEnum.SDK_INIT_ERROR);
|
|
34
41
|
}
|
|
35
42
|
};
|
|
36
43
|
|
|
@@ -44,7 +51,6 @@ const SecurityAPIProvider = ({
|
|
|
44
51
|
throw new Error(ErrorMessageEnum.MISSING_CREDENTIALS);
|
|
45
52
|
}
|
|
46
53
|
|
|
47
|
-
|
|
48
54
|
return (
|
|
49
55
|
<SecurityCheckContextProvider>{children}</SecurityCheckContextProvider>
|
|
50
56
|
);
|
package/src/types/context.ts
CHANGED
|
@@ -10,26 +10,22 @@ import {
|
|
|
10
10
|
|
|
11
11
|
export interface ISecurityCheckContext {
|
|
12
12
|
getSecurityResult: (
|
|
13
|
-
props: ISecurityCheckInput
|
|
13
|
+
props: ISecurityCheckInput,
|
|
14
14
|
) => Promise<ISecurityResultResponse | Error>;
|
|
15
15
|
getSecurityToken: (
|
|
16
|
-
props: ISecurityCheckInput
|
|
16
|
+
props: ISecurityCheckInput,
|
|
17
17
|
) => Promise<ISecurityTokenResponse | Error>;
|
|
18
18
|
getQualityQuestions: (
|
|
19
|
-
props: IGetQualityQuestionsInput
|
|
19
|
+
props: IGetQualityQuestionsInput,
|
|
20
20
|
) => Promise<IQualityQuestionsResponse | Error>;
|
|
21
21
|
isAIUsageDetected: (
|
|
22
|
-
props: IIsAIUsageDetectedInput
|
|
22
|
+
props: IIsAIUsageDetectedInput,
|
|
23
23
|
) => Promise<ISecurityTokenResponse | ISecurityResultResponse | Error>;
|
|
24
24
|
checkQualityQuestions: (
|
|
25
|
-
props: ICheckQualityQuestionsInput
|
|
25
|
+
props: ICheckQualityQuestionsInput,
|
|
26
26
|
) => Promise<ISecurityTokenResponse | ISecurityResultResponse | Error>;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export interface ISecurityAppContext {
|
|
30
30
|
isReady: boolean;
|
|
31
|
-
isHcaptchaReady: boolean;
|
|
32
|
-
isKeysReady: boolean;
|
|
33
|
-
setIsHcaptchaReady: (isHcaptchaReady: boolean) => void;
|
|
34
|
-
setIsKeysReady: (isKeysReady: boolean) => void;
|
|
35
31
|
}
|
package/src/types/input.ts
CHANGED
package/src/types/response.ts
CHANGED