Registry / database / crm-orm

crm-orm

JSON →
library0.0.2jsnpmunverified

Typed Node ORM for CRMs (Salesforce, HubSpot) with Zod schemas, a $‑operator where DSL, and SOQL rendering. Current version 0.0.2 is pre‑1.0; v0.1 focused on typed read queries and Salesforce/SOQL support. Requires Node >=20, TypeScript 5+, and Zod. Key differentiators: type‑safe query building, provider‑agnostic design (Ampersand transport), Zod model schemas for runtime validation.

npm install crm-orm
INSTALL
IMPORT
SIG · CRM-ORM
C
crm-orm
databasejavascriptv0.0.2
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

createORM
import { createORM } from 'crm-orm'
const { createORM } = require('crm-orm')
The package is ESM-only. CommonJS require will fail.
sf
import { sf } from 'crm-orm'
import { Salesforce } from 'crm-orm'
sf is a namespace export (not a class) containing helpers like sf.model.
AmpersandAdapter
import { AmpersandAdapter } from 'crm-orm'
Adapter class to wrap an Ampersand transport client.

Sets up a CRM ORM instance, defines a Salesforce Opportunity model with Zod, and runs a typed query with filtering, sorting, and limiting.

import { createORM, sf, AmpersandAdapter } from 'crm-orm'; import type { AmpersandTransportRequest, AmpersandTransportResponse } from 'crm-orm'; import { z } from 'zod'; class AmpersandPassthroughAPI { async request<T = unknown>(req: AmpersandTransportRequest): Promise<AmpersandTransportResponse<T>> { // delegate to your Ampersand instance throw new Error('wire me to Ampersand'); } } const transport = new AmpersandAdapter(new AmpersandPassthroughAPI()); const orm = createORM({ transport, salesforce: { version: '59.0', providerName: 'salesforce' }, }); const Opportunity = sf.model({ name: 'Opportunity', object: 'Opportunity', schema: z.object({ id: z.string(), name: z.string(), amount: z.number().nullable(), createdDate: z.string(), }), fields: { id: { path: 'Id' }, name: { path: 'Name' }, amount: { path: 'Amount' }, createdDate: { path: 'CreatedDate' }, }, }); const opps = await orm .from(Opportunity) .select({ id: true, name: true, amount: true, createdDate: true }) .where({ name: { $like: 'Acme%' }, amount: { $gte: 25000 } }) .orderBy({ createdDate: 'desc' }) .limit(100) .getMany();
Debug
Known issues
breakingNode >=20 required (engine field in package.json). Will not install on Node 18.
fix
Use Node 20+; or if on 18, try installing with --ignore-engines (not supported).
affects: 0.0.x
gotchaESM-only package: require() fails with ERR_REQUIRE_ESM.
fix
Use import syntax or dynamic import().
affects: >=0.0.0
gotchaHubSpot support is stubs only; only Salesforce dialect works in v0.1.
fix
Use Salesforce provider. HubSpot will come in a later version.
affects: 0.0.x
breakingNo CRUD methods (only read queries). Insert/update/delete planned for future versions.
fix
Use raw queries or alternative ORM for mutation operations.
affects: 0.0.x
gotchaModel fields must exactly match Salesforce field API names in fields.path. Incorrect paths cause SOQL errors.
fix
Double-check field API names in Salesforce object. Use $raw for custom SOQL if needed.
affects: >=0.0.0
Errors
Common errors & fixes
ERR_REQUIRE_ESM
Using require() on an ESM-only module.
fix
Change to use import syntax: import { createORM } from 'crm-orm';
Error: Cannot find module 'zod'
Zod is a peer dependency not automatically installed.
fix
Run: npm install zod
TypeError: createORM is not a function
Incorrect import (e.g., default import instead of named).
fix
Use: import { createORM } from 'crm-orm';
Upgrade
Version history
0.0.2latest on npm
Audit
Dependencies
zodrequiredPeer dependency for defining model schemas
Agent activity
41 hits · last 30 days
node
36
OpenAI (training)
1
Resources
crm-orm — npm install crm-orm · libregistry