|
| 1 | +# AGENTS.md — AI / automation context |
| 2 | + |
| 3 | +## Project |
| 4 | + |
| 5 | +| | | |
| 6 | +|---|---| |
| 7 | +| **Name** | **`contentstack`** (npm) — **Contentstack JavaScript Content Delivery SDK** | |
| 8 | +| **Purpose** | Client for the **Content Delivery API (CDA)**: read published content, assets, taxonomies, sync, and live preview from a stack. *(This is not the Content Management API / CMA client — see `@contentstack/management`.)* | |
| 9 | +| **Repository** | [contentstack/contentstack-javascript](https://github.com/contentstack/contentstack-javascript.git) | |
| 10 | + |
| 11 | +## Tech stack |
| 12 | + |
| 13 | +| Area | Details | |
| 14 | +|------|---------| |
| 15 | +| **Language** | JavaScript **ES modules** in `src/core/` and `src/runtime/`; public types in root **`index.d.ts`** | |
| 16 | +| **Runtime** | Node `>= 10.14.2` per `package.json` `engines` | |
| 17 | +| **Build** | **Webpack** bundles for `node`, `web`, `react-native`, `nativescript` → `dist/` (`npm run build`) | |
| 18 | +| **Lint / style** | **ESLint** with `eslint-config-standard`, **`@babel/eslint-parser`**; **semicolons required** (see `.eslintrc.js`) | |
| 19 | +| **Tests** | **Jest**: JS e2e-style suite (`jest.js.config.js`, `test/**/*.js`) and **TypeScript** tests (`jest.config.js`, `test/typescript/**/*.test.ts`) | |
| 20 | +| **HTTP** | Platform **`fetch`** via webpack alias `runtime/http.js` and `runtime/localstorage.js` (Node / web / React Native / NativeScript) | |
| 21 | +| **Helpers** | **`@contentstack/utils`** re-exported on the `Contentstack` instance | |
| 22 | + |
| 23 | +## Source layout & public entrypoints |
| 24 | + |
| 25 | +| Path | Role | |
| 26 | +|------|------| |
| 27 | +| `src/core/contentstack.js` | Package facade: `Stack()`, `CachePolicy`, `Region`, `Utils` | |
| 28 | +| `src/core/stack.js` | `Stack` class: delivery config, queries, sync, plugins, `fetchOptions` | |
| 29 | +| `src/core/lib/request.js` | CDA requests: query serialization, retries, plugins `onRequest` / `onResponse` | |
| 30 | +| `src/core/lib/utils.js` | Shared helpers | |
| 31 | +| `src/core/modules/*` | Entry, Query, Assets, Taxonomy, Result, etc. | |
| 32 | +| `src/core/cache*.js`, `src/core/cache-provider/` | Cache policies and providers | |
| 33 | +| `src/runtime/**` | Per-platform `http` and `localstorage` implementations | |
| 34 | +| `config.js` | Default CDN host, API version, URL paths (imported by `stack.js`) | |
| 35 | +| `webpack/` | Build configs per target | |
| 36 | +| `dist/**` | Built artifacts (`package.json` `main` / `browser` / `react-native`) | |
| 37 | + |
| 38 | +## Common commands |
| 39 | + |
| 40 | +```bash |
| 41 | +npm install |
| 42 | +npm run build # all webpack targets (also runs on prepare / pretest) |
| 43 | +npm run lint # eslint src test |
| 44 | +npm run format # eslint src test --fix |
| 45 | +npm run test # test:e2e + test:typescript (pretest runs build) |
| 46 | +npm run test:e2e # Jest JS tests under test/ (see jest.js.config.js) |
| 47 | +npm run test:typescript # Jest + ts-jest for test/typescript |
| 48 | +npm run generate-docs # JSDoc (docs-config.json) |
| 49 | +``` |
| 50 | + |
| 51 | +**Live API tests** |
| 52 | + |
| 53 | +- **`test/config.js`** loads **`.env`** and **requires** `HOST`, `API_KEY`, `DELIVERY_TOKEN`, `ENVIRONMENT`. Without them, importing `test/config.js` throws. |
| 54 | +- Jest e2e tests use **`dist/node/contentstack.js`** (built output). Run **`npm run build`** (or `npm test`, which runs `pretest`) before relying on fresh `src/` changes. |
| 55 | + |
| 56 | +## Further guidance |
| 57 | + |
| 58 | +- **Cursor rules:** [`.cursor/rules/README.md`](.cursor/rules/README.md) |
| 59 | +- **Deeper playbooks:** [`skills/README.md`](skills/README.md) |
| 60 | + |
| 61 | +When unsure about API behavior, prefer the official [Content Delivery API](https://www.contentstack.com/docs/developers/apis/content-delivery-api/) documentation and existing JSDoc in `src/core/`. |
0 commit comments