ampscript-data
v2.0.4
Published
Canonical AMPscript function catalog, keywords, and personalization strings for SFMC tooling
Maintainers
Readme
ampscript-data
Canonical AMPscript function catalog, keywords, and personalization strings for Salesforce Marketing Cloud (SFMC) tooling.
This package is the single source of truth consumed by:
- eslint-plugin-sfmc — unknown-function detection and arity validation
- prettier-plugin-sfmc — casing normalization
- VSCode: sfmc-language — completions, hover, and diagnostics
Installation
npm install ampscript-dataUsage
import {
FUNCTIONS,
AMPSCRIPT_KEYWORDS,
PERSONALIZATION_STRINGS,
DEPRECATED_FUNCTIONS,
functionLookup,
functionNames,
CANONICAL_FUNCTIONS,
FUNCTION_CANONICAL_MAP,
deprecatedFunctionLookup,
isEmailExcluded,
isMcnSupported,
getMcnApiVersion,
getMcnNotes,
} from 'ampscript-data';FUNCTIONS
An array of all known AMPscript functions with full metadata:
import { FUNCTIONS } from 'ampscript-data';
for (const fn of FUNCTIONS) {
console.log(fn.name); // e.g. 'Lookup'
console.log(fn.minArgs); // minimum argument count
console.log(fn.maxArgs); // maximum argument count (Infinity = variadic)
console.log(fn.category); // e.g. 'Data Extension'
console.log(fn.description); // human-readable description
console.log(fn.params); // array of { name, description, type?, optional? }
console.log(fn.returnType); // e.g. 'string'
console.log(fn.syntax); // canonical signature string
console.log(fn.example); // usage example (where available)
console.log(fn.docUrl); // URL to official Salesforce developer docs
console.log(fn.guideUrl); // URL to ampscript.guide reference page
console.log(fn.mcnSince); // API version when MCN support was added (null = MCE only)
console.log(fn.mcnNotes); // behavioral differences on MCN (null = none)
}functionLookup
A Map<string, FunctionEntry> keyed by lowercase function name for O(1) lookups:
import { functionLookup } from 'ampscript-data';
const entry = functionLookup.get('lookup');functionNames
A Set<string> of all function names in lowercase — useful for existence checks:
import { functionNames } from 'ampscript-data';
if (functionNames.has('lookup')) { /* ... */ }CANONICAL_FUNCTIONS
An array of function names in their canonical casing (e.g. 'Lookup'), used for casing normalization:
import { CANONICAL_FUNCTIONS } from 'ampscript-data';FUNCTION_CANONICAL_MAP
A Map<string, string> from lowercase name to canonical-cased name:
import { FUNCTION_CANONICAL_MAP } from 'ampscript-data';
FUNCTION_CANONICAL_MAP.get('lookup'); // 'Lookup'DEPRECATED_FUNCTIONS
An array of deprecated function entries with the same shape as FUNCTIONS:
import { DEPRECATED_FUNCTIONS } from 'ampscript-data';deprecatedFunctionLookup
A Map<string, FunctionEntry> for deprecated functions, keyed by lowercase name:
import { deprecatedFunctionLookup } from 'ampscript-data';isEmailExcluded
Returns true if the function is not available in email send contexts:
import { isEmailExcluded } from 'ampscript-data';
isEmailExcluded('HTTPGet'); // true — not available in emailMarketing Cloud Next (MCN) compatibility
Each FunctionEntry has two MCN fields:
| Field | Type | Description |
|---|---|---|
| mcnSince | number \| null | API version when MCN support was added (e.g. 67); null means MCE only |
| mcnNotes | string \| null | Behavioral differences on MCN vs MCE; null means no known differences |
Three helper functions are exported for programmatic MCN checks:
isMcnSupported
Returns true when the function is available on Marketing Cloud Next:
import { isMcnSupported } from 'ampscript-data';
isMcnSupported('Lookup'); // true
isMcnSupported('HTTPGet'); // falsegetMcnApiVersion
Returns the API version number (e.g. 67) when MCN support was added, or null for MCE-only functions:
import { getMcnApiVersion } from 'ampscript-data';
getMcnApiVersion('Lookup'); // 67
getMcnApiVersion('HTTPGet'); // nullgetMcnNotes
Returns a string describing behavioral differences on MCN, or null when the function behaves identically across platforms:
import { getMcnNotes } from 'ampscript-data';
getMcnNotes('FormatDate'); // "In Marketing Cloud Next, this function uses ..."
getMcnNotes('Lookup'); // "In Marketing Cloud Next, an odd number of search ..."
getMcnNotes('ProperCase'); // nullAMPSCRIPT_KEYWORDS
An array of AMPscript language keyword descriptors (if, for, set, etc.). Each entry carries a short description and a completion snippet with ${n:placeholder} tab stops:
import { AMPSCRIPT_KEYWORDS } from 'ampscript-data';
for (const kw of AMPSCRIPT_KEYWORDS) {
console.log(kw.name); // e.g. 'if'
console.log(kw.description); // human-readable description
console.log(kw.snippet); // completion body, e.g. 'if ${1:condition} then\n\t${2}\nendif'
}PERSONALIZATION_STRINGS
An array of AMPscript personalization string descriptors (subscriber attributes, system variables, etc.):
import { PERSONALIZATION_STRINGS } from 'ampscript-data';
for (const ps of PERSONALIZATION_STRINGS) {
console.log(ps.name); // e.g. 'emailaddr'
console.log(ps.description); // human-readable description
}License
MIT
