Registry / devops / sasat
library0.22.8jsnpmunverified

RDB migration-based GraphQL source code generator that resolves relations without N+1 queries. v0.22.8 (stable, active development). Unlike traditional ORM or code-first GraphQL tools (e.g., TypeGraphQL, Prisma), Sasat generates both GraphQL schema and resolvers from migration files, ensuring DB schema and API are always in sync via a declarative migration system. Ships TypeScript types, requires @apollo/server v4 or v5. Release cadence: irregular, with several minor releases per year. Key differentiator: automatic relation handling with DataLoader baked in, reducing boilerplate and preventing N+1 issues at the generator level.

npm install sasat
INSTALL
IMPORT
SIG · SASAT
S
sasat
devopsjavascriptv0.22.8
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.

createTypeDef
import { createTypeDef } from 'sasat'
const createTypeDef = require('sasat')
ESM-only package; CommonJS require() will fail.
SasatMigration
import type { SasatMigration } from 'sasat'
import { SasatMigration } from 'sasat'
Use type-only import to avoid runtime inclusion; exports as a type.
MigrationStore
import type { MigrationStore } from 'sasat'
import { MigrationStore } from 'sasat'
TypeScript type; use `import type` for compilation safety.
Queries
import { Queries } from 'sasat'
Value import; used in migration up/down methods.
Mutations
import { Mutations } from 'sasat'
Value import; used in migration up/down methods.

Shows minimal Apollo server setup using generated typeDefs and resolvers from Sasat after running migrations.

import { ApolloServer } from '@apollo/server'; import { startStandaloneServer } from '@apollo/server/standalone'; import { createTypeDef } from 'sasat'; import { resolvers } from './out/__generated__/resolver.js'; import { inputs, typeDefs } from './out/__generated__/typeDefs.js'; const server = new ApolloServer({ typeDefs: createTypeDef(typeDefs, inputs), resolvers, }); const { url } = await startStandaloneServer(server, { listen: { port: 4000 } }); console.log(`🚀 Server ready at ${url}`);
Debug
Known issues
breakingESM-only package: plain require() will fail with 'ERR_REQUIRE_ESM'.
fix
Use import syntax; set "type": "module" in package.json or use .mjs extension.
affects: >=0.0.0
gotchaSasat relies on @apollo/server v4 or v5; mismatched peer dependency causes runtime errors.
fix
Install @apollo/server ^4.0.0 || ^5.0.0 as a dependency.
affects: >=0.0.0
gotchaGenerated output files may have incorrect import paths if addJsExtToImportStatement is set wrong.
fix
Set addJsExtToImportStatement: true in sasat.yml to fix Node.js ESM resolution.
affects: >=0.0.0
deprecatedLegacy query/mutation generation using deprecated APIs may produce incorrect types.
fix
Upgrade to latest and use Queries.primary(), Mutations.create() patterns.
affects: <0.20.0
Errors
Common errors & fixes
Cannot find module 'sasat' or its corresponding type declarations.
Package not installed or missing @apollo/server peer dependency causing type resolution issues.
fix
Run 'npm install sasat @apollo/server'
TypeError: (0 , sasat.createTypeDef) is not a function
Using CommonJS require() on an ESM-only package.
fix
Switch to import syntax or set "type": "module" in package.json.
Error: ENOENT: no such file or directory, open './out/__generated__/resolver.js'
Generated files not present; migrations not run or output dir misconfigured.
fix
Run 'npx sasat generate' then 'npx sasat migrate'
Upgrade
Version history
0.22.8latest on npm
Audit
Dependencies
@apollo/serverrequiredPeer dependency for running the Apollo GraphQL server; required to use generated resolvers and typeDefs.
Agent activity
6 hits · last 30 days
node
6
Resources
packagesasat
sasat — npm install sasat · libregistry