@mhmdalimansour/mock-mock 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -108
- package/dist/server/data-store.d.ts +5 -0
- package/dist/server/data-store.d.ts.map +1 -1
- package/dist/server/data-store.js +10 -0
- package/dist/server/data-store.js.map +1 -1
- package/dist/server/mock-server.js +16 -9
- package/dist/server/mock-server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,194 +1,322 @@
|
|
|
1
1
|
# MockMock
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MockMock is a TypeScript CLI that turns Confluence API documentation into a running mock API server.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
It fetches a Confluence page or local HTML export, parses endpoint definitions into a normalized schema, and starts an Express server that returns generated yet stateful mock responses. It is useful when frontend or integration work needs a realistic API before the real backend is ready.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## What This Project Does
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
9
|
+
- Reads API definitions from Confluence pages or exported HTML files
|
|
10
|
+
- Extracts endpoints from both table-based ERD pages and code blocks
|
|
11
|
+
- Starts an Express server with dynamically registered routes
|
|
12
|
+
- Generates realistic response data with `@faker-js/faker`
|
|
13
|
+
- Keeps data in memory so `GET`, `POST`, `PUT`, `PATCH`, and `DELETE` behave like a lightweight API
|
|
14
|
+
- Optionally proxies unmatched requests to a fallback server
|
|
15
|
+
- Lets you simulate latency with startup flags, runtime endpoints, or stdin commands
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
MockMock has four main steps:
|
|
20
|
+
|
|
21
|
+
1. The CLI in `src/cli.ts` reads command-line options and environment variables.
|
|
22
|
+
2. The fetcher in `src/fetcher/confluence.ts` loads HTML from:
|
|
23
|
+
- a `file://` path
|
|
24
|
+
- a public Confluence page
|
|
25
|
+
- an authenticated Atlassian Confluence page via REST API
|
|
26
|
+
3. The parser in `src/parser/erd-parser.ts` converts the HTML into a `MockSchema`.
|
|
27
|
+
4. The server in `src/server/mock-server.ts` registers routes and serves responses backed by the in-memory `DataStore`.
|
|
28
|
+
|
|
29
|
+
### Runtime Behavior
|
|
30
|
+
|
|
31
|
+
- `GET` list endpoints return a generated collection if the response template contains an array.
|
|
32
|
+
- `GET` item endpoints return one stored record when a matching item exists.
|
|
33
|
+
- `POST` creates a new in-memory record.
|
|
34
|
+
- `PUT` and `PATCH` update an existing record by id.
|
|
35
|
+
- `DELETE` removes an existing record and returns `204`.
|
|
36
|
+
- If no stored collection exists for an endpoint, MockMock falls back to generating data from the response template on demand.
|
|
37
|
+
|
|
38
|
+
## Architecture
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
mock-mock/
|
|
42
|
+
├── src/
|
|
43
|
+
│ ├── cli.ts
|
|
44
|
+
│ ├── fetcher/
|
|
45
|
+
│ │ └── confluence.ts
|
|
46
|
+
│ ├── parser/
|
|
47
|
+
│ │ ├── erd-parser.ts
|
|
48
|
+
│ │ └── schema-types.ts
|
|
49
|
+
│ └── server/
|
|
50
|
+
│ ├── data-generator.ts
|
|
51
|
+
│ ├── data-store.ts
|
|
52
|
+
│ └── mock-server.ts
|
|
53
|
+
├── example-confluence.html
|
|
54
|
+
├── package.json
|
|
55
|
+
└── tsconfig.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Core Modules
|
|
59
|
+
|
|
60
|
+
- `src/cli.ts`: entrypoint, option parsing, orchestration
|
|
61
|
+
- `src/fetcher/confluence.ts`: Confluence and local-file fetching
|
|
62
|
+
- `src/parser/erd-parser.ts`: HTML parsing and endpoint extraction
|
|
63
|
+
- `src/parser/schema-types.ts`: shared contract between parser and server
|
|
64
|
+
- `src/server/data-generator.ts`: fake response generation
|
|
65
|
+
- `src/server/data-store.ts`: in-memory collections and CRUD-like behavior
|
|
66
|
+
- `src/server/mock-server.ts`: Express app, route registration, fallback proxy, health/config endpoints
|
|
15
67
|
|
|
16
68
|
## Installation
|
|
17
69
|
|
|
70
|
+
### Local Development
|
|
71
|
+
|
|
18
72
|
```bash
|
|
19
73
|
npm install
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Build the CLI
|
|
77
|
+
|
|
78
|
+
```bash
|
|
20
79
|
npm run build
|
|
21
80
|
```
|
|
22
81
|
|
|
23
|
-
|
|
82
|
+
### Global Usage
|
|
24
83
|
|
|
25
|
-
|
|
84
|
+
After building or publishing, the CLI command is:
|
|
26
85
|
|
|
27
86
|
```bash
|
|
28
|
-
|
|
87
|
+
mock-mock --url <confluence-url>
|
|
29
88
|
```
|
|
30
89
|
|
|
31
|
-
|
|
90
|
+
## Quick Start
|
|
91
|
+
|
|
92
|
+
### 1. Run Against the Example HTML
|
|
32
93
|
|
|
33
94
|
```bash
|
|
34
|
-
|
|
95
|
+
npm run dev -- --url file://C:/absolute/path/to/example-confluence.html --port 4000
|
|
35
96
|
```
|
|
36
97
|
|
|
37
|
-
|
|
98
|
+
On macOS or Linux:
|
|
38
99
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
### Authentication
|
|
100
|
+
```bash
|
|
101
|
+
npm run dev -- --url file:///absolute/path/to/example-confluence.html --port 4000
|
|
102
|
+
```
|
|
43
103
|
|
|
44
|
-
|
|
104
|
+
### 2. Run Against a Confluence Page
|
|
45
105
|
|
|
46
106
|
```bash
|
|
47
|
-
|
|
48
|
-
export CONFLUENCE_API_TOKEN=your-api-token
|
|
107
|
+
npm run dev -- --url https://your-domain.atlassian.net/wiki/spaces/SPACE/pages/123456/Page+Title --port 4000
|
|
49
108
|
```
|
|
50
109
|
|
|
51
|
-
|
|
110
|
+
### 3. Test the Server
|
|
52
111
|
|
|
53
|
-
|
|
112
|
+
```bash
|
|
113
|
+
curl http://localhost:4000/health
|
|
114
|
+
curl http://localhost:4000/api/users
|
|
115
|
+
curl -X POST http://localhost:4000/api/users -H "Content-Type: application/json" -d "{\"name\":\"John\"}"
|
|
116
|
+
```
|
|
54
117
|
|
|
55
|
-
|
|
118
|
+
## CLI Usage
|
|
56
119
|
|
|
120
|
+
### Development Mode
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
npm run dev -- --url <url>
|
|
57
124
|
```
|
|
58
|
-
POST /api/categories
|
|
59
125
|
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
"name": "string"
|
|
63
|
-
}
|
|
126
|
+
### Run the Built CLI
|
|
64
127
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"id": 1,
|
|
68
|
-
"name": "string"
|
|
69
|
-
}
|
|
128
|
+
```bash
|
|
129
|
+
npm start -- --url <url>
|
|
70
130
|
```
|
|
71
131
|
|
|
72
|
-
###
|
|
132
|
+
### CLI Options
|
|
73
133
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
134
|
+
| Option | Description | Default |
|
|
135
|
+
| --- | --- | --- |
|
|
136
|
+
| `-u, --url <url>` | Confluence page URL or `file://` HTML path | required |
|
|
137
|
+
| `-p, --port <port>` | Port for the mock server | `4000` |
|
|
138
|
+
| `-f, --fallback <url>` | Proxy target for unmatched requests | none |
|
|
139
|
+
| `--delay <ms>` | Response delay in milliseconds | `0` |
|
|
140
|
+
| `-e, --email <email>` | Confluence email, overrides env var | none |
|
|
141
|
+
| `-t, --token <token>` | Confluence API token, overrides env var | none |
|
|
142
|
+
| `-d, --debug` | Save fetched HTML to `debug.html` and print parsed schema | `false` |
|
|
79
143
|
|
|
80
|
-
### Example
|
|
144
|
+
### Example Commands
|
|
81
145
|
|
|
146
|
+
```bash
|
|
147
|
+
npm run dev -- --url file:///tmp/exported-page.html --port 4000
|
|
148
|
+
npm run dev -- --url https://your-domain.atlassian.net/wiki/spaces/SPACE/pages/123456/Page+Title --delay 500
|
|
149
|
+
npm run dev -- --url https://your-domain.atlassian.net/wiki/spaces/SPACE/pages/123456/Page+Title --fallback https://api.dev.example.com
|
|
82
150
|
```
|
|
83
|
-
GET /api/users
|
|
84
151
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
152
|
+
## Authentication
|
|
153
|
+
|
|
154
|
+
Private Confluence pages usually require credentials.
|
|
155
|
+
|
|
156
|
+
Create a `.env` file or export the following variables:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
CONFLUENCE_EMAIL=your-email@example.com
|
|
160
|
+
CONFLUENCE_API_TOKEN=your-api-token
|
|
94
161
|
```
|
|
95
162
|
|
|
163
|
+
You can also pass them directly:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
npm run dev -- --url <url> --email your-email@example.com --token your-api-token
|
|
96
167
|
```
|
|
97
|
-
|
|
168
|
+
|
|
169
|
+
### Fetching Rules
|
|
170
|
+
|
|
171
|
+
- `file://...` reads a local HTML file
|
|
172
|
+
- Atlassian Cloud URLs with credentials use the Confluence REST API
|
|
173
|
+
- Other URLs are fetched as raw HTML
|
|
174
|
+
- If Confluence returns a login page instead of the document, MockMock exits with an authentication error
|
|
175
|
+
|
|
176
|
+
For more setup details, see `AUTH_SETUP.md`.
|
|
177
|
+
|
|
178
|
+
## Supported Input Formats
|
|
179
|
+
|
|
180
|
+
MockMock currently supports two Confluence patterns:
|
|
181
|
+
|
|
182
|
+
- table-based endpoint documentation
|
|
183
|
+
- code blocks containing endpoint definitions
|
|
184
|
+
|
|
185
|
+
### Code Block Format
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
POST /api/categories
|
|
98
189
|
|
|
99
190
|
Request:
|
|
100
191
|
{
|
|
101
|
-
"name": "string"
|
|
102
|
-
"email": "string"
|
|
192
|
+
"name": "string"
|
|
103
193
|
}
|
|
104
194
|
|
|
105
195
|
Response:
|
|
106
196
|
{
|
|
107
197
|
"id": 1,
|
|
108
|
-
"name": "string"
|
|
109
|
-
"email": "string"
|
|
198
|
+
"name": "string"
|
|
110
199
|
}
|
|
111
200
|
|
|
112
201
|
Status: 201
|
|
113
202
|
```
|
|
114
203
|
|
|
115
|
-
|
|
204
|
+
### Supported Methods
|
|
116
205
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
cli.ts # CLI entry point
|
|
121
|
-
fetcher/
|
|
122
|
-
confluence.ts # Confluence page fetcher
|
|
123
|
-
parser/
|
|
124
|
-
erd-parser.ts # Endpoint parser
|
|
125
|
-
schema-types.ts # Schema definitions
|
|
126
|
-
server/
|
|
127
|
-
mock-server.ts # Express mock server
|
|
128
|
-
package.json
|
|
129
|
-
tsconfig.json
|
|
130
|
-
```
|
|
206
|
+
- Table-based parsing supports `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
|
|
207
|
+
- Plain code-block parsing currently recognizes `GET`, `POST`, `PUT`, and `DELETE`.
|
|
208
|
+
- The server runtime supports `PATCH` once an endpoint is present in the parsed schema.
|
|
131
209
|
|
|
132
|
-
###
|
|
210
|
+
### Notes About Response Templates
|
|
133
211
|
|
|
134
|
-
|
|
212
|
+
- Response objects are used as templates for fake data generation.
|
|
213
|
+
- Response arrays are expanded into collections with about 15 to 30 records.
|
|
214
|
+
- Wrapped collections such as `{ "errors": false, "data": [...] }` are preserved.
|
|
215
|
+
- Path parameters in documentation can use `{id}` and are converted to Express-style params internally.
|
|
216
|
+
- Plain code-block parsing is best with object-shaped JSON responses; table-based ERD pages are more flexible.
|
|
135
217
|
|
|
136
|
-
|
|
137
|
-
2. **Parser**: Extracts and normalizes endpoints into `MockSchema`
|
|
138
|
-
3. **Server**: Consumes `MockSchema` and creates Express routes
|
|
218
|
+
## Server Endpoints
|
|
139
219
|
|
|
140
|
-
|
|
220
|
+
In addition to parsed API routes, MockMock exposes a few built-in endpoints:
|
|
141
221
|
|
|
142
|
-
|
|
222
|
+
| Endpoint | Method | Purpose |
|
|
223
|
+
| --- | --- | --- |
|
|
224
|
+
| `/health` | `GET` | Shows registered endpoints and current configuration |
|
|
225
|
+
| `/_config/delay` | `GET` | Returns current response delay |
|
|
226
|
+
| `/_config/delay` | `PUT` | Updates response delay at runtime |
|
|
143
227
|
|
|
144
|
-
|
|
145
|
-
|
|
228
|
+
You can also change delay from stdin while the server is running:
|
|
229
|
+
|
|
230
|
+
```text
|
|
231
|
+
delay 500
|
|
232
|
+
delay
|
|
146
233
|
```
|
|
147
234
|
|
|
148
|
-
|
|
235
|
+
## Developer Guide
|
|
236
|
+
|
|
237
|
+
### Scripts
|
|
149
238
|
|
|
150
239
|
```bash
|
|
240
|
+
npm install
|
|
151
241
|
npm run build
|
|
242
|
+
npm run dev -- --url file://C:/absolute/path/to/example-confluence.html
|
|
243
|
+
npm start -- --url file://C:/absolute/path/to/example-confluence.html
|
|
152
244
|
```
|
|
153
245
|
|
|
154
|
-
###
|
|
246
|
+
### Tech Stack
|
|
155
247
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
248
|
+
- TypeScript
|
|
249
|
+
- Commander
|
|
250
|
+
- Axios
|
|
251
|
+
- Cheerio
|
|
252
|
+
- Express
|
|
253
|
+
- Faker
|
|
159
254
|
|
|
160
|
-
|
|
255
|
+
### Development Flow
|
|
161
256
|
|
|
162
|
-
|
|
257
|
+
1. Update fetching logic in `src/fetcher/` if the Confluence source format changes.
|
|
258
|
+
2. Update parsing logic in `src/parser/` when new ERD/table/code patterns need to be supported.
|
|
259
|
+
3. Keep `MockEndpoint` and `MockSchema` in `src/parser/schema-types.ts` as the contract between layers.
|
|
260
|
+
4. Update server behavior in `src/server/` when changing how routes, state, or fake responses work.
|
|
261
|
+
5. Run `npm run build` to verify TypeScript compilation.
|
|
163
262
|
|
|
164
|
-
|
|
165
|
-
- ❌ Network errors
|
|
166
|
-
- ❌ Malformed JSON in code blocks
|
|
167
|
-
- ❌ Missing endpoints
|
|
168
|
-
- ❌ Invalid port numbers
|
|
263
|
+
### Important Design Choices
|
|
169
264
|
|
|
170
|
-
|
|
265
|
+
- The parser and server communicate through a simple schema contract.
|
|
266
|
+
- The server is stateful only in memory; restarting the process resets all data.
|
|
267
|
+
- Fake data generation is template-driven, so response structure depends on the documentation input.
|
|
268
|
+
- Collections are derived from `GET` endpoints that expose arrays in the response template.
|
|
171
269
|
|
|
172
|
-
|
|
173
|
-
|
|
270
|
+
### Project Structure for Contributors
|
|
271
|
+
|
|
272
|
+
- `example-confluence.html`: local test fixture
|
|
273
|
+
- `README.md`: main project documentation
|
|
274
|
+
- `AUTH_SETUP.md`: authentication help
|
|
275
|
+
- `QUICKSTART.md`: short setup walkthrough
|
|
276
|
+
- `CONTRIBUTING.md`: contributor notes
|
|
174
277
|
|
|
175
|
-
|
|
176
|
-
|
|
278
|
+
## Troubleshooting
|
|
279
|
+
|
|
280
|
+
### No endpoints found
|
|
281
|
+
|
|
282
|
+
- Check that the Confluence page contains supported tables or code blocks.
|
|
283
|
+
- Use `--debug` to save `debug.html` and inspect the fetched HTML.
|
|
284
|
+
|
|
285
|
+
### Authentication failed
|
|
286
|
+
|
|
287
|
+
- Verify `CONFLUENCE_EMAIL` and `CONFLUENCE_API_TOKEN`.
|
|
288
|
+
- Confirm the page is accessible to that account.
|
|
289
|
+
- For Atlassian Cloud, make sure the URL contains a valid `/pages/<id>/` segment.
|
|
290
|
+
|
|
291
|
+
### Unexpected response shape
|
|
292
|
+
|
|
293
|
+
- Check the response JSON in Confluence.
|
|
294
|
+
- Make sure wrapped arrays or nested objects are valid JSON.
|
|
295
|
+
- Remember that fake data is inferred from field names and primitive types.
|
|
296
|
+
|
|
297
|
+
### Changes disappear after restart
|
|
298
|
+
|
|
299
|
+
This is expected. Data is stored only in memory.
|
|
300
|
+
|
|
301
|
+
## Example Output
|
|
177
302
|
|
|
178
|
-
|
|
179
|
-
|
|
303
|
+
```text
|
|
304
|
+
MockMock CLI
|
|
180
305
|
|
|
181
|
-
|
|
306
|
+
Fetching Confluence page: https://confluence.example.com/pages/123456
|
|
307
|
+
Page fetched successfully
|
|
182
308
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
DELETE /api/users/1
|
|
309
|
+
Parsing API endpoints...
|
|
310
|
+
Found 3 endpoint(s)
|
|
186
311
|
|
|
187
|
-
|
|
312
|
+
Registering endpoints:
|
|
313
|
+
GET /api/users
|
|
314
|
+
POST /api/users
|
|
315
|
+
DELETE /api/users/:id
|
|
188
316
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
317
|
+
Mock server started successfully
|
|
318
|
+
Base URL: http://localhost:4000
|
|
319
|
+
Health check: http://localhost:4000/health
|
|
192
320
|
```
|
|
193
321
|
|
|
194
322
|
## License
|
|
@@ -16,6 +16,11 @@ export declare class DataStore {
|
|
|
16
16
|
* if one existed, or as a plain array otherwise.
|
|
17
17
|
*/
|
|
18
18
|
getCollection(key: string): unknown;
|
|
19
|
+
/**
|
|
20
|
+
* Wraps a single item in { errors: false, data: item } when the collection
|
|
21
|
+
* uses that response structure (per ERD spec).
|
|
22
|
+
*/
|
|
23
|
+
wrapItemIfNeeded(key: string, item: Record<string, unknown>): unknown;
|
|
19
24
|
getItem(key: string, id: string | number): Record<string, unknown> | null;
|
|
20
25
|
addItem(key: string, body: Record<string, unknown>): Record<string, unknown>;
|
|
21
26
|
updateItem(key: string, id: string | number, updates: Record<string, unknown>): Record<string, unknown> | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store.d.ts","sourceRoot":"","sources":["../../src/server/data-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAStD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAsC;IAEzD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAsB5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMzE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAsB5E,UAAU,CACR,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYjC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;CAQtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASzD"}
|
|
1
|
+
{"version":3,"file":"data-store.d.ts","sourceRoot":"","sources":["../../src/server/data-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAStD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAsC;IAEzD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAsB5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAMrE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMzE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAsB5E,UAAU,CACR,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYjC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;CAQtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASzD"}
|
|
@@ -53,6 +53,16 @@ class DataStore {
|
|
|
53
53
|
}
|
|
54
54
|
return col.items;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Wraps a single item in { errors: false, data: item } when the collection
|
|
58
|
+
* uses that response structure (per ERD spec).
|
|
59
|
+
*/
|
|
60
|
+
wrapItemIfNeeded(key, item) {
|
|
61
|
+
const col = this.collections.get(key);
|
|
62
|
+
if (!col?.wrapper)
|
|
63
|
+
return item;
|
|
64
|
+
return { ...col.wrapper.shell, [col.wrapper.arrayKey]: item };
|
|
65
|
+
}
|
|
56
66
|
getItem(key, id) {
|
|
57
67
|
const col = this.collections.get(key);
|
|
58
68
|
if (!col)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store.js","sourceRoot":"","sources":["../../src/server/data-store.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"data-store.js","sourceRoot":"","sources":["../../src/server/data-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,15 +163,22 @@ function registerEndpoint(app, endpoint, store) {
|
|
|
163
163
|
const idValue = idParam ? req.params[idParam] : null;
|
|
164
164
|
switch (method) {
|
|
165
165
|
case 'GET': {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const
|
|
171
|
-
if (
|
|
172
|
-
return
|
|
173
|
-
|
|
174
|
-
|
|
166
|
+
// Paths like /mother-categories (no params) or /mother-categories/1/linkedCategories (params but last segment is resource)
|
|
167
|
+
// → return full collection wrapped as { errors: false, data: [...] }
|
|
168
|
+
if (store.hasCollection(collectionKey)) {
|
|
169
|
+
const lastSegment = expressPath.split('/').filter(Boolean).pop() ?? '';
|
|
170
|
+
const lastSegmentIsParam = lastSegment.startsWith(':');
|
|
171
|
+
if (!lastSegmentIsParam) {
|
|
172
|
+
// Last segment is resource name → return collection (list)
|
|
173
|
+
return res.status(status).json(store.getCollection(collectionKey));
|
|
174
|
+
}
|
|
175
|
+
// Last segment is param (e.g. /mother-categories/:id) → get single item
|
|
176
|
+
if (idValue) {
|
|
177
|
+
const item = store.getItem(collectionKey, idValue);
|
|
178
|
+
if (item)
|
|
179
|
+
return res.status(status).json(store.wrapItemIfNeeded(collectionKey, item));
|
|
180
|
+
return res.status(status).json((0, data_generator_1.generateFakeData)(response));
|
|
181
|
+
}
|
|
175
182
|
}
|
|
176
183
|
return res.status(status).json((0, data_generator_1.generateFakeData)(response));
|
|
177
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-server.js","sourceRoot":"","sources":["../../src/server/mock-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mock-server.js","sourceRoot":"","sources":["../../src/server/mock-server.ts"],"names":[],"mappings":"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"}
|