Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
apollo-transform-utils
Advanced tools
apollo-transform-utils
Utility transforms to be used as
graphql-tools
transforms
Install apollo-transform-utils
with
$ npm i apollo-transform-utils
or
$ yarn add apollo-transform-utils
and use them within your delegateToSchema
resolvers:
const { Debug, PickTransform, InlineFragmentTransform, NestTransform } = require('apollo-transform-utils')
const transforms = [
new PickTransform(fieldName),
new InlineFragmentTransform('ContactInfo')
new NestTransform(`${fieldName}.user.info`),
new Debug()
]
// within resolver
return info.mergeInfo
.delegateToSchema({
schema: info.schema,
operation: info.operation.operation,
fieldName,
args,
context,
info,
transforms
})
NestTransform(path: string)
Place your current selection set under a specified period-delimited path
const { NestTransform } = require('apollo-transform-utils')
const path = 'user.contactInfo'
const transforms = [
new NestTransform(path)
]
/*
* { number } -> { user { contactInfo { number } } }
*/
PickTransform(path: string)
Opposite of NestTransform
. Select selections along a period-delimited path.
const { PickTransform } = require('apollo-transform-utils')
const path = 'user.contactInfo'
const transforms = [
new PickTransform(path)
]
/*
* { user { contactInfo { number } } } -> { number }
*/
InlineFragmentTransform(typeName: string)
Nest your currently selection under a inline fragment of type typeName
const { InlineFragmentTransform } = require('apollo-transform-utils')
const typeName = 'User'
const transforms = [
new InlineFragmentTransform(typeName)
]
/*
* { id } -> { ... on User { id } }
*/
DocumentTransform(query: string | Document)
Creates a new document and replaces the string __SELECTIONS__
with your current selection set.
const { DocumentTransform } = require('apollo-transform-utils')
const newDocument = `
query {
user {
friends {
${DocumentTransform.__SELECTIONS__}
}
}
}
`
const transforms = new DocumentTransform(newDocument)
/*
* { id } -> { user { friends { id } } }
*/
Debug
Transform that pretty prints the current operation's document and variables. Super helpful for determining intermediate results between transforms.
const { Debug, PickTransform, InlineFragmentTransform, NestTransform } = require('apollo-transform-utils')
const transforms = [
new Debug(),
new PickTransform(fieldName),
new Debug(),
new InlineFragmentTransform('ContactInfo')
new Debug(),
new NestTransform(`${fieldName}.user.info`),
new Debug()
]
nest(path: string, selections: Array<FieldNode>)
Used by NestTransform
, but can be used as a standalone function to nest selections under a certain path.
pick(path: string, selections: Array<FieldNode>)
Used by PickTransform
, but can be used as a standalone function to pick a node along the path from a selection set.
FAQs
Utility transforms for graphql-tools
The npm package apollo-transform-utils receives a total of 0 weekly downloads. As such, apollo-transform-utils popularity was classified as not popular.
We found that apollo-transform-utils demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.