Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@operato/graphql

Package Overview
Dependencies
Maintainers
6
Versions
246
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@operato/graphql - npm Package Compare versions

Comparing version
10.0.0-beta.2
to
10.0.0-beta.53
+9
-0
CHANGELOG.md

@@ -6,2 +6,11 @@ # Change Log

## [10.0.0-beta.53](https://github.com/hatiolab/operato/compare/v10.0.0-beta.52...v10.0.0-beta.53) (2026-05-24)
### :bug: Bug Fix
* **graphql:** mutation variables 에서 __typename 자동 제거 ([5bfd9f9](https://github.com/hatiolab/operato/commit/5bfd9f9fb8d5572c67d838ddc6606a07e7515811))
## [10.0.0-beta.2](https://github.com/hatiolab/operato/compare/v10.0.0-beta.1...v10.0.0-beta.2) (2026-03-05)

@@ -8,0 +17,0 @@

+10
-1

@@ -5,2 +5,3 @@ import createUploadLink from 'apollo-upload-client/createUploadLink.mjs';

import { onError } from '@apollo/client/link/error/index.js';
import { removeTypenameFromVariables } from '@apollo/client/link/remove-typename/index.js';
import { GraphQLWsLink } from '@apollo/client/link/subscriptions/index.js';

@@ -109,3 +110,11 @@ import { getMainDefinition } from '@apollo/client/utilities/index.js';

return def.kind === 'OperationDefinition' && def.operation === 'subscription';
}, wsLink, from([activeRequestCounterLink, onError(ERROR_HANDLER), httpLink]));
}, wsLink, from([
activeRequestCounterLink,
onError(ERROR_HANDLER),
// Apollo 가 InMemoryCache 정규화를 위해 응답 객체에 자동 삽입한 __typename 이,
// 호출자가 그 응답을 mutation input 변수로 재전송할 때 strict 검증에서 거부되는
// 문제를 프레임워크 레벨에서 일괄 제거한다.
removeTypenameFromVariables(),
httpLink
]));
}

@@ -112,0 +121,0 @@ return apolloLink;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"graphql-env.js","sourceRoot":"","sources":["../../src/graphql-env.ts"],"names":[],"mappings":"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","sourcesContent":["import createUploadLink from 'apollo-upload-client/createUploadLink.mjs'\nimport { createClient as createWebSocketClient } from 'graphql-ws'\n\nimport {\n ApolloLink,\n from,\n HttpLink,\n HttpOptions,\n Observable,\n ServerParseError,\n split\n} from '@apollo/client/core/index.js'\nimport { ErrorLink, onError } from '@apollo/client/link/error/index.js'\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions/index.js'\nimport { getMainDefinition } from '@apollo/client/utilities/index.js'\n\nimport { decodeHTML } from '@operato/utils'\nimport { activeRequestCounterLink, decreaseActiveRequestCounter } from './active-request-counter-link.js'\n\nexport const GRAPHQL_URI = '/graphql'\nexport const SUBSCRIPTION_URI = GRAPHQL_URI\n\nvar apolloLink: ApolloLink\n\nconst httpOptions: HttpOptions = {\n uri: GRAPHQL_URI,\n credentials: 'include',\n headers: { 'Apollo-Require-Preflight': 'true' }\n}\n\nconst httpLink = ApolloLink.split(\n operation => operation.getContext().hasUpload,\n createUploadLink(httpOptions) as any,\n new HttpLink(httpOptions)\n)\n\nconst wsLink = new GraphQLWsLink(\n createWebSocketClient({\n url: location.origin.replace(/^http/, 'ws') + SUBSCRIPTION_URI,\n keepAlive: 10_000,\n retryAttempts: 1_000_000,\n shouldRetry: e => true,\n connectionParams: {\n headers: {\n /* \n 특정 도메인의 데이타만 받고자 하는 경우에, referer 정보를 제공해서 서버에서 서브도메인 정보를 취득하도록 한다.\n referer: location.href\n 또는, 이미 서브도메인 정보를 알고 있다면,\n 'x-things-factory-domain': '[subdomain]'\n 을 보낼 수 있다.\n 관련 정보를 보내지 않는다면, 사용자가 권한을 가진 모든 도메인의 데이타를 수신하게 된다.\n */\n referer: location.href\n }\n }\n })\n)\n\nconst ERROR_HANDLER: ErrorLink.ErrorHandler = ({ operation, graphQLErrors, networkError }) => {\n if (graphQLErrors) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: decodeHTML(graphQLErrors[0].message),\n ex: graphQLErrors,\n option: {\n timer: -1, // disable auto close\n action: {\n label: 'Close',\n callback: () => {\n document.dispatchEvent(\n new CustomEvent('notify-close', {\n detail: {\n id: 'error-notify'\n }\n })\n )\n }\n }\n }\n }\n })\n )\n }\n\n if (networkError) {\n decreaseActiveRequestCounter()\n\n /* networkError가 ServerParseError 이거나 ServerError 인 경우에만 statusCode를 갖는다. */\n switch ((networkError as ServerParseError).statusCode) {\n case undefined /* in case this error is not a server side error */:\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: networkError.message,\n ex: networkError\n }\n })\n )\n break\n\n case 401:\n /* 401 에러가 리턴되면, 인증이 필요하다는 메시지를 dispatch 한다. 이 auth 모듈 등에서 이 메시지를 받아서 signin 프로세스를 진행할 수 있다. */\n document.dispatchEvent(new CustomEvent('auth-required'))\n break\n\n case 403:\n /* 403 에러가 리턴되면, 도메인 정보가 필요하다는 메시지를 dispatch 한다. 이 auth 모듈 등에서 이 메시지를 받아서 domain-register 프로세스 등을 진행할 수 있다. */\n document.dispatchEvent(new CustomEvent('domain-required'))\n break\n\n default:\n var { name, response, statusCode, bodyText, message } = networkError as ServerParseError\n if (name == 'ServerParseError') {\n message = `[ ${statusCode || ''} : ${response.statusText} ] ${bodyText}`\n } else {\n /* in case this error is instanceof ServerError */\n message = `[ ${statusCode || ''} : ${response.statusText} ] ${message}`\n }\n\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: decodeHTML(message),\n ex: networkError\n }\n })\n )\n }\n }\n}\n\nexport const setClientLink = (link: ApolloLink) => {\n apolloLink = link\n}\n\nexport const getClientLink = () => {\n if (!apolloLink) {\n apolloLink = split(\n ({ query }) => {\n const def = getMainDefinition(query)\n return def.kind === 'OperationDefinition' && def.operation === 'subscription'\n },\n wsLink,\n from([activeRequestCounterLink, onError(ERROR_HANDLER), httpLink])\n )\n }\n\n return apolloLink\n}\n\nexport const createMockLink = (mockedResponses: any = {}) =>\n new ApolloLink((operation, forward) => {\n return new Observable(observer => {\n const operationName = operation.operationName\n\n if (mockedResponses[operationName]) {\n observer.next({\n data: mockedResponses[operationName]\n })\n } else {\n observer.error(new Error(`No mock response for operation ${operationName}`))\n }\n\n observer.complete()\n })\n })\n"]}
{"version":3,"file":"graphql-env.js","sourceRoot":"","sources":["../../src/graphql-env.ts"],"names":[],"mappings":"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","sourcesContent":["import createUploadLink from 'apollo-upload-client/createUploadLink.mjs'\nimport { createClient as createWebSocketClient } from 'graphql-ws'\n\nimport {\n ApolloLink,\n from,\n HttpLink,\n HttpOptions,\n Observable,\n ServerParseError,\n split\n} from '@apollo/client/core/index.js'\nimport { ErrorLink, onError } from '@apollo/client/link/error/index.js'\nimport { removeTypenameFromVariables } from '@apollo/client/link/remove-typename/index.js'\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions/index.js'\nimport { getMainDefinition } from '@apollo/client/utilities/index.js'\n\nimport { decodeHTML } from '@operato/utils'\nimport { activeRequestCounterLink, decreaseActiveRequestCounter } from './active-request-counter-link.js'\n\nexport const GRAPHQL_URI = '/graphql'\nexport const SUBSCRIPTION_URI = GRAPHQL_URI\n\nvar apolloLink: ApolloLink\n\nconst httpOptions: HttpOptions = {\n uri: GRAPHQL_URI,\n credentials: 'include',\n headers: { 'Apollo-Require-Preflight': 'true' }\n}\n\nconst httpLink = ApolloLink.split(\n operation => operation.getContext().hasUpload,\n createUploadLink(httpOptions) as any,\n new HttpLink(httpOptions)\n)\n\nconst wsLink = new GraphQLWsLink(\n createWebSocketClient({\n url: location.origin.replace(/^http/, 'ws') + SUBSCRIPTION_URI,\n keepAlive: 10_000,\n retryAttempts: 1_000_000,\n shouldRetry: e => true,\n connectionParams: {\n headers: {\n /* \n 특정 도메인의 데이타만 받고자 하는 경우에, referer 정보를 제공해서 서버에서 서브도메인 정보를 취득하도록 한다.\n referer: location.href\n 또는, 이미 서브도메인 정보를 알고 있다면,\n 'x-things-factory-domain': '[subdomain]'\n 을 보낼 수 있다.\n 관련 정보를 보내지 않는다면, 사용자가 권한을 가진 모든 도메인의 데이타를 수신하게 된다.\n */\n referer: location.href\n }\n }\n })\n)\n\nconst ERROR_HANDLER: ErrorLink.ErrorHandler = ({ operation, graphQLErrors, networkError }) => {\n if (graphQLErrors) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: decodeHTML(graphQLErrors[0].message),\n ex: graphQLErrors,\n option: {\n timer: -1, // disable auto close\n action: {\n label: 'Close',\n callback: () => {\n document.dispatchEvent(\n new CustomEvent('notify-close', {\n detail: {\n id: 'error-notify'\n }\n })\n )\n }\n }\n }\n }\n })\n )\n }\n\n if (networkError) {\n decreaseActiveRequestCounter()\n\n /* networkError가 ServerParseError 이거나 ServerError 인 경우에만 statusCode를 갖는다. */\n switch ((networkError as ServerParseError).statusCode) {\n case undefined /* in case this error is not a server side error */:\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: networkError.message,\n ex: networkError\n }\n })\n )\n break\n\n case 401:\n /* 401 에러가 리턴되면, 인증이 필요하다는 메시지를 dispatch 한다. 이 auth 모듈 등에서 이 메시지를 받아서 signin 프로세스를 진행할 수 있다. */\n document.dispatchEvent(new CustomEvent('auth-required'))\n break\n\n case 403:\n /* 403 에러가 리턴되면, 도메인 정보가 필요하다는 메시지를 dispatch 한다. 이 auth 모듈 등에서 이 메시지를 받아서 domain-register 프로세스 등을 진행할 수 있다. */\n document.dispatchEvent(new CustomEvent('domain-required'))\n break\n\n default:\n var { name, response, statusCode, bodyText, message } = networkError as ServerParseError\n if (name == 'ServerParseError') {\n message = `[ ${statusCode || ''} : ${response.statusText} ] ${bodyText}`\n } else {\n /* in case this error is instanceof ServerError */\n message = `[ ${statusCode || ''} : ${response.statusText} ] ${message}`\n }\n\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: decodeHTML(message),\n ex: networkError\n }\n })\n )\n }\n }\n}\n\nexport const setClientLink = (link: ApolloLink) => {\n apolloLink = link\n}\n\nexport const getClientLink = () => {\n if (!apolloLink) {\n apolloLink = split(\n ({ query }) => {\n const def = getMainDefinition(query)\n return def.kind === 'OperationDefinition' && def.operation === 'subscription'\n },\n wsLink,\n from([\n activeRequestCounterLink,\n onError(ERROR_HANDLER),\n // Apollo 가 InMemoryCache 정규화를 위해 응답 객체에 자동 삽입한 __typename 이,\n // 호출자가 그 응답을 mutation input 변수로 재전송할 때 strict 검증에서 거부되는\n // 문제를 프레임워크 레벨에서 일괄 제거한다.\n removeTypenameFromVariables(),\n httpLink\n ])\n )\n }\n\n return apolloLink\n}\n\nexport const createMockLink = (mockedResponses: any = {}) =>\n new ApolloLink((operation, forward) => {\n return new Observable(observer => {\n const operationName = operation.operationName\n\n if (mockedResponses[operationName]) {\n observer.next({\n data: mockedResponses[operationName]\n })\n } else {\n observer.error(new Error(`No mock response for operation ${operationName}`))\n }\n\n observer.complete()\n })\n })\n"]}

@@ -5,3 +5,3 @@ {

"author": "heartyoh@hatiolab.com",
"version": "10.0.0-beta.2",
"version": "10.0.0-beta.53",
"type": "module",

@@ -127,3 +127,3 @@ "main": "dist/src/index.js",

},
"gitHead": "82e48e285373112cbda6f5cf2f7dc8a279a21104"
"gitHead": "70e24a258025798d77bddc935beecb45349baeed"
}

Sorry, the diff of this file is not supported yet