@superbright/indexeddb-orm 1.0.45 → 1.0.46

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.
Files changed (2) hide show
  1. package/README.md +17 -0
  2. package/package.json +25 -23
package/README.md CHANGED
@@ -77,6 +77,23 @@ Always pass `snake_case` to tracking helpers. Internally, payloads are normalise
77
77
  > **Deprecated:** `skipKeyTransform` has been removed. It was a no-op because `convertKeysToSnakeCase` is idempotent for snake_case inputs.
78
78
 
79
79
 
80
+ ## Schema tooling
81
+
82
+ API types and Zod schemas are generated from the live OpenAPI spec. Scalar is used to validate and mock the spec locally.
83
+
84
+ ```bash
85
+ pnpm generate:api-schema # validate openapi.json, pull latest types, regenerate Zod schemas
86
+ pnpm validate:api # validate openapi.json only (Scalar)
87
+ pnpm mock:api # run a mock API server on :4010 (Scalar)
88
+ ```
89
+
90
+ `generate:api-schema` runs automatically on `prepublishOnly`. It:
91
+ 1. Validates `openapi.json` via Scalar
92
+ 2. Fetches the live spec from `api.dev.inresi.link` and generates `src/types/api.generated.ts` (openapi-typescript)
93
+ 3. Runs `gen-schemas.mjs` to emit `src/api/schemas.generated.ts` (Zod schemas with `z.lazy()` for circular refs) and `src/api/response-schemas.generated.ts` (strict embed overrides from `src/scripts/response-schema-overrides.json`)
94
+
95
+ Never edit `*.generated.ts` files by hand — they will be overwritten.
96
+
80
97
  ## Development
81
98
 
82
99
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superbright/indexeddb-orm",
3
- "version": "1.0.45",
3
+ "version": "1.0.46",
4
4
  "description": "Vite + TypeScript IndexedDB ORM.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -38,6 +38,29 @@
38
38
  "files": [
39
39
  "dist"
40
40
  ],
41
+ "scripts": {
42
+ "clean": "rimraf dist",
43
+ "build": "pnpm clean && vite build && tsc -p tsconfig.build.json",
44
+ "prepare": "pnpm build",
45
+ "start": "vite --clearScreen false",
46
+ "dev": "concurrently -k -n PLAY,BUILD \"pnpm:start\" \"pnpm:watch\"",
47
+ "watch": "concurrently -k -n TYPES,BUNDLE \"pnpm:watch:types\" \"pnpm:watch:bundle\"",
48
+ "watch:types": "tsc -w -p tsconfig.build.json",
49
+ "watch:bundle": "vite build --watch",
50
+ "test": "vitest run",
51
+ "test:watch": "vitest",
52
+ "test:contract": "vitest run --config vitest.contract.config.ts",
53
+ "format": "pnpm format:write",
54
+ "format:write": "prettier --write .",
55
+ "format:check": "prettier --check .",
56
+ "docs:api": "typedoc --plugin typedoc-plugin-markdown --entryPoints src/docs/property.ts src/docs/unit.ts src/docs/filters.ts --tsconfig tsconfig.json --out autodocs/docs/api/schema --readme none",
57
+ "analyze": "pnpm clean && ANALYZE=1 vite build && tsc -p tsconfig.build.json",
58
+ "docs:serve": "cp openapi.json autodocs/static/openapi.json && cd autodocs && pnpm start",
59
+ "mock:api": "scalar mock openapi.json --port 4010",
60
+ "validate:api": "scalar validate openapi.json",
61
+ "generate:api-schema": "scalar validate openapi.json && openapi-typescript https://api.dev.inresi.link/docs/json -o src/types/api.generated.ts && node src/scripts/gen-schemas.mjs",
62
+ "prepublishOnly": "pnpm generate:api-schema"
63
+ },
41
64
  "dependencies": {
42
65
  "add": "^2.0.6",
43
66
  "dexie": "^4.0.8",
@@ -82,26 +105,5 @@
82
105
  "posthog-js": {
83
106
  "optional": true
84
107
  }
85
- },
86
- "scripts": {
87
- "clean": "rimraf dist",
88
- "build": "pnpm clean && vite build && tsc -p tsconfig.build.json",
89
- "start": "vite --clearScreen false",
90
- "dev": "concurrently -k -n PLAY,BUILD \"pnpm:start\" \"pnpm:watch\"",
91
- "watch": "concurrently -k -n TYPES,BUNDLE \"pnpm:watch:types\" \"pnpm:watch:bundle\"",
92
- "watch:types": "tsc -w -p tsconfig.build.json",
93
- "watch:bundle": "vite build --watch",
94
- "test": "vitest run",
95
- "test:watch": "vitest",
96
- "test:contract": "vitest run --config vitest.contract.config.ts",
97
- "format": "pnpm format:write",
98
- "format:write": "prettier --write .",
99
- "format:check": "prettier --check .",
100
- "docs:api": "typedoc --plugin typedoc-plugin-markdown --entryPoints src/docs/property.ts src/docs/unit.ts src/docs/filters.ts --tsconfig tsconfig.json --out autodocs/docs/api/schema --readme none",
101
- "analyze": "pnpm clean && ANALYZE=1 vite build && tsc -p tsconfig.build.json",
102
- "docs:serve": "cp openapi.json autodocs/static/openapi.json && cd autodocs && pnpm start",
103
- "mock:api": "scalar mock openapi.json --port 4010",
104
- "validate:api": "scalar validate openapi.json",
105
- "generate:api-schema": "scalar validate openapi.json && openapi-typescript https://api.dev.inresi.link/docs/json -o src/types/api.generated.ts && node src/scripts/gen-schemas.mjs"
106
108
  }
107
- }
109
+ }