A zero-dependency, TypeScript/JavaScript parser for SOQL (Salesforce Object Query Language) that converts query strings into structured objects.
npm install soql-parser-lite
Or with pnpm:
pnpm add soql-parser-lite
Or with yarn:
yarn add soql-parser-lite
import { parseSoqlQuery } from 'soql-parser-lite'
// Parse a simple query
const query = parseSoqlQuery(
'SELECT Id, Name FROM Account WHERE Status = "Active" LIMIT 10',
)
console.log(JSON.stringify(query, null, 2))
// Output:
/*
{
"select": {
"items": [
{
"item": {
"name": "Id"
}
},
{
"item": {
"name": "Name"
}
}
]
},
"from": {
"objects": [
{
"name": "Account"
}
]
},
"where": {
"expr": {
"left": {
"name": "Status"
},
"right": {
"value": "Active"
}
}
},
"limit": 10
}
*/
import { parseSoqlQuery } from 'soql-parser-lite'
const query = parseSoqlQuery('SELECT Id, Name, Email FROM Contact')
const query = parseSoqlQuery(
'SELECT Id, Name FROM Account WHERE Status = "Active" AND Revenue > 1000000',
)
const query = parseSoqlQuery(
'SELECT COUNT(Id) cnt, MAX(Amount) maxAmount FROM Opportunity GROUP BY StageName',
)
const query = parseSoqlQuery(
'SELECT Name, (SELECT LastName FROM Contacts) FROM Account',
)
const query = parseSoqlQuery('SELECT Id FROM Case WHERE CreatedDate = TODAY')
const query = parseSoqlQuery(
'SELECT Id, Name, CreatedDate FROM Account ORDER BY CreatedDate DESC LIMIT 100 OFFSET 50',
)
const query = parseSoqlQuery(
'SELECT Id, Account.Name, Account.Owner.Email FROM Contact',
)
# Install dependencies
pnpm install
# Build the project
pnpm run compile
# Run tests
pnpm test
# Format code
pnpm run format
# Generate documentation
pnpm run docs:gen
Contributions are welcome! Please see CONTRIBUTING.md for details.
MIT © Jacob Shirley