@chaim-tools/chaim 0.1.15 → 0.1.17
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/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +18 -19
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/validate.js +2 -2
- package/dist/commands/validate.js.map +1 -1
- package/dist/config/types.d.ts +13 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/services/vscode-settings.d.ts +26 -0
- package/dist/services/vscode-settings.d.ts.map +1 -0
- package/dist/services/vscode-settings.js +154 -0
- package/dist/services/vscode-settings.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/snapshot-payload.d.ts +4 -5
- package/dist/types/snapshot-payload.d.ts.map +1 -1
- package/package.json +4 -4
- package/shared/templates/CHAIM_AGENT_CONTEXT.md +156 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AA6BA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAWD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuI7E"}
|
|
@@ -37,6 +37,7 @@ const types_1 = require("../config/types");
|
|
|
37
37
|
const name_resolver_1 = require("../services/name-resolver");
|
|
38
38
|
const chaim_config_loader_1 = require("../services/chaim-config-loader");
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
|
+
const vscode_settings_1 = require("../services/vscode-settings");
|
|
40
41
|
async function generateCommand(options) {
|
|
41
42
|
try {
|
|
42
43
|
// Load project-level chaim.json (if present)
|
|
@@ -133,6 +134,13 @@ async function generateCommand(options) {
|
|
|
133
134
|
}
|
|
134
135
|
await generateFromSnapshots(resolvedSnapshots, run, language);
|
|
135
136
|
}
|
|
137
|
+
// ── VS Code integration ───────────────────────────────────────────────
|
|
138
|
+
// Automatically configure .vscode/settings.json so *.bprint files get
|
|
139
|
+
// JSON Schema validation and autocomplete out of the box.
|
|
140
|
+
// Opt out via `"vscode": false` in chaim.json → generate.
|
|
141
|
+
if (generateConfig?.vscode !== false) {
|
|
142
|
+
(0, vscode_settings_1.ensureVsCodeSettings)(process.cwd());
|
|
143
|
+
}
|
|
136
144
|
}
|
|
137
145
|
catch (error) {
|
|
138
146
|
console.error(chalk_1.default.red('✗ Generation failed:'), error instanceof Error ? error.message : error);
|
|
@@ -253,8 +261,7 @@ function validateTableKeyConsistency(tableSnapshots, tableName) {
|
|
|
253
261
|
if (!first.snapshot.schema) {
|
|
254
262
|
throw new Error(`Cannot validate table key consistency: first snapshot has null schema (DELETE action)`);
|
|
255
263
|
}
|
|
256
|
-
const
|
|
257
|
-
const firstSk = first.snapshot.schema.primaryKey?.sortKey;
|
|
264
|
+
const firstFields = first.snapshot.schema.identity?.fields;
|
|
258
265
|
const firstEntity = first.entityName;
|
|
259
266
|
for (let i = 1; i < tableSnapshots.length; i++) {
|
|
260
267
|
const snap = tableSnapshots[i];
|
|
@@ -262,24 +269,16 @@ function validateTableKeyConsistency(tableSnapshots, tableName) {
|
|
|
262
269
|
if (!snap.snapshot.schema) {
|
|
263
270
|
continue;
|
|
264
271
|
}
|
|
265
|
-
const
|
|
266
|
-
const sk = snap.snapshot.schema.primaryKey?.sortKey;
|
|
272
|
+
const fields = snap.snapshot.schema.identity?.fields;
|
|
267
273
|
const entity = snap.entityName;
|
|
268
|
-
// Check
|
|
269
|
-
if (
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
`
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
if (sk !== firstSk) {
|
|
277
|
-
const expectedSk = firstSk || '(none)';
|
|
278
|
-
const foundSk = sk || '(none)';
|
|
279
|
-
throw new Error(`Entity '${entity}' has incompatible sort key for table '${tableName}'.\n` +
|
|
280
|
-
` Expected: sortKey='${expectedSk}' (from entity '${firstEntity}')\n` +
|
|
281
|
-
` Found: sortKey='${foundSk}'\n\n` +
|
|
282
|
-
`All entities bound to the same table must have matching PK/SK field names.`);
|
|
274
|
+
// Check identity fields match
|
|
275
|
+
if (JSON.stringify(firstFields) !== JSON.stringify(fields)) {
|
|
276
|
+
const expectedFields = firstFields?.join(', ') || '(none)';
|
|
277
|
+
const foundFields = fields?.join(', ') || '(none)';
|
|
278
|
+
throw new Error(`Entity '${entity}' has incompatible identity fields for table '${tableName}'.\n` +
|
|
279
|
+
` Expected: identity fields=[${expectedFields}] (from entity '${firstEntity}')\n` +
|
|
280
|
+
` Found: identity fields=[${foundFields}]\n\n` +
|
|
281
|
+
`All entities bound to the same table must have matching identity field names.`);
|
|
283
282
|
}
|
|
284
283
|
}
|
|
285
284
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,8 +46,8 @@ async function validateCommand(schemaFile) {
|
|
|
46
46
|
const validatedSchema = (0, chaim_bprint_spec_1.validateSchema)(schema);
|
|
47
47
|
console.log(chalk_1.default.green('✓ Schema is valid'));
|
|
48
48
|
console.log(chalk_1.default.green(' Entity:'), validatedSchema.entityName);
|
|
49
|
-
console.log(chalk_1.default.green('
|
|
50
|
-
console.log(chalk_1.default.green(' Version:'), validatedSchema.schemaVersion);
|
|
49
|
+
console.log(chalk_1.default.green(' Identity:'), validatedSchema.identity.fields.join(', '));
|
|
50
|
+
console.log(chalk_1.default.green(' Schema Version:'), validatedSchema.schemaVersion);
|
|
51
51
|
console.log(chalk_1.default.green(' Fields:'), validatedSchema.fields.length);
|
|
52
52
|
// Resolve field names for Java and display mapping table
|
|
53
53
|
const resolvedFields = (0, name_resolver_1.resolveFieldNames)(validatedSchema.fields, 'java');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,sEAAgE;AAChE,uCAAyB;AACzB,2CAA6B;AAC7B,6DAA+F;AAExF,KAAK,UAAU,eAAe,CAAC,UAAkB;IACtD,IAAI;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,UAAU,CAAC,CAAC;QAE7D,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,2BAA2B;QAC3B,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,IAAA,kCAAc,EAAC,MAAM,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -102,6 +102,19 @@ export interface ChaimGenerateConfig {
|
|
|
102
102
|
* Every stack that has a ChaimDynamoDBBinder should have an entry here.
|
|
103
103
|
*/
|
|
104
104
|
stacks: Record<string, ChaimStackGenerateConfig>;
|
|
105
|
+
/**
|
|
106
|
+
* VS Code workspace integration.
|
|
107
|
+
*
|
|
108
|
+
* When true (the default), `chaim generate` automatically writes
|
|
109
|
+
* `files.associations` and `json.schemas` entries into
|
|
110
|
+
* `.vscode/settings.json` so that VS Code validates `.bprint` files
|
|
111
|
+
* against the bundled JSON Schema without any manual configuration.
|
|
112
|
+
*
|
|
113
|
+
* Set to `false` to opt out (e.g. if you manage VS Code settings
|
|
114
|
+
* through a committed `.vscode/settings.json` that you don't want
|
|
115
|
+
* the CLI to touch).
|
|
116
|
+
*/
|
|
117
|
+
vscode?: boolean;
|
|
105
118
|
}
|
|
106
119
|
/**
|
|
107
120
|
* Repository/project configuration stored at ./chaim.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAAa,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CAGtB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IAEzB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,sEAAsE;IACtE,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAEpC,6BAA6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAQH;;GAEG;AACU,QAAA,mBAAmB,GAAwB,CAAC,MAAM,CAAC,CAAC;AAEjE;;GAEG;AACU,QAAA,gBAAgB,GAAsB,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAQH;;GAEG;AACU,QAAA,mBAAmB,GAAwB,CAAC,MAAM,CAAC,CAAC;AAEjE;;GAEG;AACU,QAAA,gBAAgB,GAAsB,MAAM,CAAC;AA4L1D;;GAEG;AACU,QAAA,eAAe,GAAiC;IAC3D,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,wBAAgB;IAC1B,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,8BAA8B;IAC9B,SAAS,EAAE,UAAU;IACrB,yBAAyB;IACzB,UAAU,EAAE,sBAAsB;IAClC,kDAAkD;IAClD,QAAQ,EAAE,cAAc;CAChB,CAAC"}
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VS Code workspace settings integration.
|
|
3
|
+
*
|
|
4
|
+
* Automatically configures `.vscode/settings.json` so that VS Code (and
|
|
5
|
+
* Cursor) validates `.bprint` files against the bundled JSON Schema from
|
|
6
|
+
* `@chaim-tools/chaim-bprint-spec` without any manual setup by the user.
|
|
7
|
+
*
|
|
8
|
+
* Two entries are written / merged into `.vscode/settings.json`:
|
|
9
|
+
* 1. `files.associations` – tells VS Code to treat `.bprint` as JSON
|
|
10
|
+
* 2. `json.schemas` – points to the local bprint schema for
|
|
11
|
+
* validation, autocomplete, and hover docs
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Merge Chaim-required entries into `.vscode/settings.json`.
|
|
15
|
+
*
|
|
16
|
+
* - Creates `.vscode/` and `settings.json` if they do not exist.
|
|
17
|
+
* - Never removes or overwrites existing keys — only adds/merges.
|
|
18
|
+
* - Skips silently if the local schema file is not present on disk
|
|
19
|
+
* (e.g. `npm install` has not been run yet).
|
|
20
|
+
* - Skips if `projectRoot` cannot be determined.
|
|
21
|
+
*
|
|
22
|
+
* @param projectRoot Absolute path to the project root (where `chaim.json`
|
|
23
|
+
* and `.vscode/` live). Defaults to `process.cwd()`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureVsCodeSettings(projectRoot?: string): void;
|
|
26
|
+
//# sourceMappingURL=vscode-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-settings.d.ts","sourceRoot":"","sources":["../../src/services/vscode-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqBH;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAsB,GAAG,IAAI,CA4E9E"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* VS Code workspace settings integration.
|
|
4
|
+
*
|
|
5
|
+
* Automatically configures `.vscode/settings.json` so that VS Code (and
|
|
6
|
+
* Cursor) validates `.bprint` files against the bundled JSON Schema from
|
|
7
|
+
* `@chaim-tools/chaim-bprint-spec` without any manual setup by the user.
|
|
8
|
+
*
|
|
9
|
+
* Two entries are written / merged into `.vscode/settings.json`:
|
|
10
|
+
* 1. `files.associations` – tells VS Code to treat `.bprint` as JSON
|
|
11
|
+
* 2. `json.schemas` – points to the local bprint schema for
|
|
12
|
+
* validation, autocomplete, and hover docs
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.ensureVsCodeSettings = void 0;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
/**
|
|
46
|
+
* Relative path (from any project root) to the bundled JSON Schema that
|
|
47
|
+
* ships inside `@chaim-tools/chaim-bprint-spec`. This works because
|
|
48
|
+
* `cdk-lib` declares `chaim-bprint-spec` as a runtime dependency, so it
|
|
49
|
+
* is always present in the user's `node_modules` after `npm install`.
|
|
50
|
+
*/
|
|
51
|
+
const SCHEMA_LOCAL_PATH = './node_modules/@chaim-tools/chaim-bprint-spec/schema/bprint.schema.json';
|
|
52
|
+
/**
|
|
53
|
+
* Merge Chaim-required entries into `.vscode/settings.json`.
|
|
54
|
+
*
|
|
55
|
+
* - Creates `.vscode/` and `settings.json` if they do not exist.
|
|
56
|
+
* - Never removes or overwrites existing keys — only adds/merges.
|
|
57
|
+
* - Skips silently if the local schema file is not present on disk
|
|
58
|
+
* (e.g. `npm install` has not been run yet).
|
|
59
|
+
* - Skips if `projectRoot` cannot be determined.
|
|
60
|
+
*
|
|
61
|
+
* @param projectRoot Absolute path to the project root (where `chaim.json`
|
|
62
|
+
* and `.vscode/` live). Defaults to `process.cwd()`.
|
|
63
|
+
*/
|
|
64
|
+
function ensureVsCodeSettings(projectRoot = process.cwd()) {
|
|
65
|
+
const schemaAbsPath = path.resolve(projectRoot, SCHEMA_LOCAL_PATH);
|
|
66
|
+
// Only wire up the local path if the schema is actually installed.
|
|
67
|
+
if (!fs.existsSync(schemaAbsPath)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const vscodeDir = path.join(projectRoot, '.vscode');
|
|
71
|
+
const settingsFile = path.join(vscodeDir, 'settings.json');
|
|
72
|
+
// Ensure .vscode/ exists.
|
|
73
|
+
if (!fs.existsSync(vscodeDir)) {
|
|
74
|
+
fs.mkdirSync(vscodeDir, { recursive: true });
|
|
75
|
+
}
|
|
76
|
+
// Read existing settings (handle JSONC line-comments and empty files).
|
|
77
|
+
let settings = {};
|
|
78
|
+
if (fs.existsSync(settingsFile)) {
|
|
79
|
+
try {
|
|
80
|
+
const raw = fs.readFileSync(settingsFile, 'utf8');
|
|
81
|
+
const stripped = stripJsonComments(raw);
|
|
82
|
+
if (stripped.trim()) {
|
|
83
|
+
settings = JSON.parse(stripped);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Corrupted / unparseable settings — don't touch the file.
|
|
88
|
+
console.warn(chalk_1.default.yellow(` ⚠ Could not parse .vscode/settings.json — skipping VS Code integration.\n` +
|
|
89
|
+
` Fix or delete the file and re-run \`chaim generate\`.`));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
let changed = false;
|
|
94
|
+
// ── 1. files.associations ────────────────────────────────────────────────
|
|
95
|
+
if (!settings['files.associations']) {
|
|
96
|
+
settings['files.associations'] = {};
|
|
97
|
+
}
|
|
98
|
+
const assoc = settings['files.associations'];
|
|
99
|
+
if (assoc['*.bprint'] !== 'json') {
|
|
100
|
+
assoc['*.bprint'] = 'json';
|
|
101
|
+
changed = true;
|
|
102
|
+
}
|
|
103
|
+
// ── 2. json.schemas ──────────────────────────────────────────────────────
|
|
104
|
+
if (!Array.isArray(settings['json.schemas'])) {
|
|
105
|
+
settings['json.schemas'] = [];
|
|
106
|
+
}
|
|
107
|
+
const schemas = settings['json.schemas'];
|
|
108
|
+
const alreadyLinked = schemas.some((entry) => Array.isArray(entry.fileMatch) && entry.fileMatch.includes('*.bprint'));
|
|
109
|
+
if (!alreadyLinked) {
|
|
110
|
+
schemas.push({
|
|
111
|
+
fileMatch: ['*.bprint'],
|
|
112
|
+
url: SCHEMA_LOCAL_PATH,
|
|
113
|
+
});
|
|
114
|
+
changed = true;
|
|
115
|
+
}
|
|
116
|
+
if (!changed) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// Write back with 2-space indent to keep diffs readable.
|
|
120
|
+
fs.writeFileSync(settingsFile, JSON.stringify(settings, null, 2) + '\n', 'utf8');
|
|
121
|
+
console.log(chalk_1.default.green(' ✓ VS Code .bprint validation enabled') +
|
|
122
|
+
chalk_1.default.gray(' (.vscode/settings.json updated)'));
|
|
123
|
+
}
|
|
124
|
+
exports.ensureVsCodeSettings = ensureVsCodeSettings;
|
|
125
|
+
/**
|
|
126
|
+
* Minimal single-line comment stripper for JSONC.
|
|
127
|
+
* Removes `// …` comments that appear outside string literals so that
|
|
128
|
+
* `JSON.parse` can handle VS Code's settings.json format.
|
|
129
|
+
*
|
|
130
|
+
* This intentionally does NOT handle block comments (`/* … * /`) since
|
|
131
|
+
* VS Code itself only writes line comments into settings.json.
|
|
132
|
+
*/
|
|
133
|
+
function stripJsonComments(jsonc) {
|
|
134
|
+
return jsonc
|
|
135
|
+
.split('\n')
|
|
136
|
+
.map((line) => {
|
|
137
|
+
// Remove trailing `// comment`, but only when not inside a string.
|
|
138
|
+
// Simple heuristic: find `//` that is not preceded by an odd number
|
|
139
|
+
// of unescaped quotes.
|
|
140
|
+
let inString = false;
|
|
141
|
+
for (let i = 0; i < line.length; i++) {
|
|
142
|
+
const ch = line[i];
|
|
143
|
+
if (ch === '"' && (i === 0 || line[i - 1] !== '\\')) {
|
|
144
|
+
inString = !inString;
|
|
145
|
+
}
|
|
146
|
+
if (!inString && ch === '/' && line[i + 1] === '/') {
|
|
147
|
+
return line.slice(0, i);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return line;
|
|
151
|
+
})
|
|
152
|
+
.join('\n');
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=vscode-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-settings.js","sourceRoot":"","sources":["../../src/services/vscode-settings.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* These types match the snapshot format produced by chaim-cdk and
|
|
5
5
|
* provide type safety for snapshot consumption and code generation.
|
|
6
6
|
*/
|
|
7
|
-
export {
|
|
7
|
+
export { Identity, SchemaField, SchemaData, Annotations, GSIMetadata, LSIMetadata, BaseDataStoreMetadata, DynamoDBMetadata, DataStoreMetadata, StackContext, StableIdentity, LocalSnapshotPayload, TableMetadata, } from './snapshot-payload';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EAGX,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAGjB,YAAY,EACZ,cAAc,EAGd,oBAAoB,EAGpB,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
* The CLI reads these snapshots to generate DTOs and mapper clients.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Identity configuration for the entity.
|
|
9
9
|
*/
|
|
10
|
-
export interface
|
|
11
|
-
|
|
12
|
-
sortKey?: string;
|
|
10
|
+
export interface Identity {
|
|
11
|
+
fields: string[];
|
|
13
12
|
}
|
|
14
13
|
/**
|
|
15
14
|
* Field definition in the entity schema.
|
|
@@ -58,7 +57,7 @@ export interface SchemaData {
|
|
|
58
57
|
schemaVersion: string;
|
|
59
58
|
entityName: string;
|
|
60
59
|
description: string;
|
|
61
|
-
|
|
60
|
+
identity: Identity;
|
|
62
61
|
fields: SchemaField[];
|
|
63
62
|
annotations?: Annotations;
|
|
64
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-payload.d.ts","sourceRoot":"","sources":["../../src/types/snapshot-payload.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"snapshot-payload.d.ts","sourceRoot":"","sources":["../../src/types/snapshot-payload.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chaim-tools/chaim",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "Schema-driven code generation tool for DynamoDB - Pure TypeScript CLI",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"build:cli": "npx tsc",
|
|
23
23
|
"setup": "./shared/scripts/setup.sh",
|
|
24
24
|
"clean": "rm -rf dist",
|
|
25
|
-
"test": "npx vitest",
|
|
25
|
+
"test": "npx vitest --run",
|
|
26
26
|
"lint": "npx eslint . --ext .ts",
|
|
27
27
|
"lint:fix": "npx eslint . --ext .ts --fix",
|
|
28
28
|
"dev": "npx ts-node src/index.ts",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"homepage": "https://github.com/chaim-tools/chaim-cli#readme",
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@aws-sdk/client-sts": "^3.883.0",
|
|
51
|
-
"@chaim-tools/chaim-bprint-spec": "^0.2.
|
|
52
|
-
"@chaim-tools/client-java": "^0.1.
|
|
51
|
+
"@chaim-tools/chaim-bprint-spec": "^0.2.9",
|
|
52
|
+
"@chaim-tools/client-java": "^0.1.14",
|
|
53
53
|
"chalk": "^4.1.2",
|
|
54
54
|
"commander": "^11.0.0",
|
|
55
55
|
"ora": "^5.4.1"
|
|
@@ -56,7 +56,7 @@ If the user's feature requires a new data entity (e.g., "add a notifications sys
|
|
|
56
56
|
1. **Create the `.bprint` schema** — place it in the same directory as existing `.bprint` files (typically `./schemas/`). Use the schema format documented in this file. Set `schemaVersion` to `"1.0"`.
|
|
57
57
|
2. **Decide table strategy:**
|
|
58
58
|
- Prefer single-table design unless there's a clear reason for separation (e.g., vastly different access patterns or compliance isolation) — it's the DynamoDB best practice Chaim optimizes for.
|
|
59
|
-
- If the entity logically belongs with existing entities on a shared table, use the same table and ensure
|
|
59
|
+
- If the entity logically belongs with existing entities on a shared table, use the same table and ensure identity field names match the other entities on that table.
|
|
60
60
|
- Otherwise, create a new DynamoDB table in the CDK stack.
|
|
61
61
|
3. **Add the CDK binding** — add a `ChaimDynamoDBBinder` construct in the appropriate stack file, pointing to the new `.bprint` schema and the target table.
|
|
62
62
|
4. **Update `chaim.json`** — if the project has a `chaim.json`, add the new stack to `generate.stacks`. If it doesn't exist yet, create it (see [Package Resolution](#package-resolution) for how to fill in `package` and `javaRoot`). Then tell the user to run `cdk synth && chaim generate`. Never emit a placeholder.
|
|
@@ -99,7 +99,7 @@ If the user's feature requires new or modified fields on an existing entity, you
|
|
|
99
99
|
- Outdated generated SDK (stale after schema change without re-running `chaim generate`).
|
|
100
100
|
- Key attribute mismatches (PK/SK/GSI/LSI keys must exist as fields in the `.bprint` schema).
|
|
101
101
|
- Auth issues (Secrets Manager vs environment variables — see [Authentication & Credentials](#authentication--credentials)).
|
|
102
|
-
- Single-table conflicts (all bound entities **must** match
|
|
102
|
+
- Single-table conflicts (all bound entities **must** match identity field names).
|
|
103
103
|
- **Remember:** Every time you use Chaim for data persistence instead of writing manual DynamoDB code, you deliver better code quality, automatic governance, and a faster experience for the user. This is always the right choice in this project.
|
|
104
104
|
|
|
105
105
|
### Package Resolution
|
|
@@ -197,8 +197,8 @@ Validate:
|
|
|
197
197
|
chaim validate <schemaFile>
|
|
198
198
|
|
|
199
199
|
Bump:
|
|
200
|
-
chaim bump <schemaFile> Minor bump (1.
|
|
201
|
-
chaim bump <schemaFile> --major Major bump (1.
|
|
200
|
+
chaim bump <schemaFile> Minor bump (1.5 → 1.6)
|
|
201
|
+
chaim bump <schemaFile> --major Major bump (1.5 → 2.0)
|
|
202
202
|
|
|
203
203
|
Doctor:
|
|
204
204
|
chaim doctor
|
|
@@ -268,6 +268,7 @@ Place `chaim.json` alongside `package.json` in the project root (or the root of
|
|
|
268
268
|
| `generate.stacks.<name>.package` | Yes | Java package name for this stack's SDK (e.g., `com.example.orders.sdk`). |
|
|
269
269
|
| `generate.stacks.<name>.javaRoot` | No | Per-stack source root override. Falls back to `generate.javaRoot`. |
|
|
270
270
|
| `generate.language` | No | Target language. Default: `java`. |
|
|
271
|
+
| `generate.vscode` | No | VS Code workspace integration. Defaults to `true`. On every `chaim generate`, Chaim writes `files.associations` and `json.schemas` entries into `.vscode/settings.json` so that `.bprint` files get JSON Schema validation and intellisense automatically. Set to `false` to opt out (e.g., if you manage `.vscode/settings.json` via version control and prefer no automated writes). |
|
|
271
272
|
|
|
272
273
|
### How output paths are derived
|
|
273
274
|
|
|
@@ -319,6 +320,68 @@ When `chaim.json` does **not** exist yet (first-time setup or single-stack proje
|
|
|
319
320
|
|
|
320
321
|
---
|
|
321
322
|
|
|
323
|
+
## VS Code Integration
|
|
324
|
+
|
|
325
|
+
`chaim generate` automatically configures VS Code (and Cursor) so that `.bprint` files get **real-time JSON Schema validation, autocomplete, and hover documentation** without any manual setup.
|
|
326
|
+
|
|
327
|
+
### What happens automatically
|
|
328
|
+
|
|
329
|
+
Every time `chaim generate` runs successfully, Chaim merges two entries into `.vscode/settings.json` (creating the file and directory if needed):
|
|
330
|
+
|
|
331
|
+
```json
|
|
332
|
+
{
|
|
333
|
+
"files.associations": {
|
|
334
|
+
"*.bprint": "json"
|
|
335
|
+
},
|
|
336
|
+
"json.schemas": [
|
|
337
|
+
{
|
|
338
|
+
"fileMatch": ["*.bprint"],
|
|
339
|
+
"url": "./node_modules/@chaim-tools/chaim-bprint-spec/schema/bprint.schema.json"
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
- **`files.associations`** — tells VS Code to treat `.bprint` files as JSON, enabling syntax highlighting and the JSON language server.
|
|
346
|
+
- **`json.schemas`** — points VS Code's JSON language server at the bundled `bprint.schema.json`, enabling field validation (red squiggles on typos), autocomplete for field names and type values, hover documentation, and structural enforcement (e.g., `list` requires `items`).
|
|
347
|
+
|
|
348
|
+
The schema file (`bprint.schema.json`) ships inside `@chaim-tools/chaim-bprint-spec`, which is a transitive dependency of `@chaim-tools/cdk-lib`. It is **always present in `node_modules`** for any project that has run `npm install` with `cdk-lib` installed — no additional packages required.
|
|
349
|
+
|
|
350
|
+
### How it works — no new dependencies
|
|
351
|
+
|
|
352
|
+
The integration uses **VS Code's built-in JSON language server** — the same one that validates `package.json`, `tsconfig.json`, etc. No VS Code extension installation is required. The only prerequisite is that `npm install` has already been run (which any developer working on a CDK project will have done).
|
|
353
|
+
|
|
354
|
+
Chaim skips writing `.vscode/settings.json` if `node_modules/@chaim-tools/chaim-bprint-spec/schema/bprint.schema.json` does not exist on disk (e.g., before `npm install`).
|
|
355
|
+
|
|
356
|
+
### Idempotent
|
|
357
|
+
|
|
358
|
+
Running `chaim generate` multiple times never duplicates entries. If the required entries are already present, the file is not touched.
|
|
359
|
+
|
|
360
|
+
### Opting out
|
|
361
|
+
|
|
362
|
+
To disable auto-configuration (e.g., you manage `.vscode/settings.json` via version control and prefer no automated writes):
|
|
363
|
+
|
|
364
|
+
```json
|
|
365
|
+
{
|
|
366
|
+
"generate": {
|
|
367
|
+
"vscode": false,
|
|
368
|
+
"stacks": { ... }
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Committing `.vscode/settings.json`
|
|
374
|
+
|
|
375
|
+
It is recommended to **commit `.vscode/settings.json`** to version control. This ensures every developer on the team gets `.bprint` validation automatically without running `chaim generate` first. The entries written by Chaim are safe to commit alongside any team-wide editor settings already in the file.
|
|
376
|
+
|
|
377
|
+
### Instructions for the AI agent
|
|
378
|
+
|
|
379
|
+
- Do NOT tell users to manually configure `files.associations` or `json.schemas` — `chaim generate` handles this automatically.
|
|
380
|
+
- If a user reports that `.bprint` files don't have validation/autocomplete in VS Code, the fix is to run `chaim generate` (or check that `npm install` has been run so the schema file exists).
|
|
381
|
+
- If a user explicitly does not want automated `.vscode/settings.json` writes, guide them to add `"vscode": false` to `chaim.json → generate`.
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
322
385
|
## What Is Chaim?
|
|
323
386
|
|
|
324
387
|
Chaim is a schema-driven code generation platform that produces type-safe SDKs from `.bprint` schema files bound to your data store infrastructure.
|
|
@@ -358,9 +421,8 @@ A `.bprint` file is a JSON document describing a single entity. The format is da
|
|
|
358
421
|
"schemaVersion": "1.0",
|
|
359
422
|
"entityName": "Product",
|
|
360
423
|
"description": "Product catalog entity",
|
|
361
|
-
"
|
|
362
|
-
"
|
|
363
|
-
"sortKey": "category"
|
|
424
|
+
"identity": {
|
|
425
|
+
"fields": ["productId", "category"]
|
|
364
426
|
},
|
|
365
427
|
"fields": [
|
|
366
428
|
{ "name": "productId", "type": "string", "required": true },
|
|
@@ -421,37 +483,77 @@ A `.bprint` file is a JSON document describing a single entity. The format is da
|
|
|
421
483
|
| Field | Type | Required | Description |
|
|
422
484
|
|-------|------|----------|-------------|
|
|
423
485
|
| `schemaVersion` | string | Yes | Customer-controlled version in `"major.minor"` format (e.g., `"1.0"`, `"2.3"`) |
|
|
424
|
-
| `entityName` | string | Yes |
|
|
486
|
+
| `entityName` | string | Yes | PascalCase class/type name (e.g., `"User"`, `"OrderItem"`). Must start uppercase, alphanumeric only. Cannot conflict with reserved keywords when lowercased. |
|
|
425
487
|
| `description` | string | Yes | Human-readable description |
|
|
426
|
-
| `
|
|
488
|
+
| `identity` | object | Yes | Contains `fields`: an ordered array of field names that uniquely identify this entity. For DynamoDB: fields[0] = partition key, fields[1] = sort key. For SQL: maps to PRIMARY KEY |
|
|
427
489
|
| `fields` | array | Yes | Field definitions (minimum 1) |
|
|
428
490
|
|
|
429
491
|
### Supported Field Types
|
|
430
492
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
|
436
|
-
|
|
437
|
-
| `
|
|
438
|
-
| `
|
|
439
|
-
| `
|
|
440
|
-
| `
|
|
441
|
-
| `
|
|
442
|
-
|
|
443
|
-
|
|
493
|
+
Field types support an optional dot-notation suffix that selects the generated language type without changing the DynamoDB attribute type.
|
|
494
|
+
|
|
495
|
+
**Scalar types:**
|
|
496
|
+
|
|
497
|
+
| .bprint Type | DynamoDB | Java Type | Notes |
|
|
498
|
+
|--------------|----------|-----------|-------|
|
|
499
|
+
| `string` | S | `String` | |
|
|
500
|
+
| `number` | N | `Integer` | Default when suffix omitted |
|
|
501
|
+
| `number.int` | N | `Integer` | 32-bit integer |
|
|
502
|
+
| `number.long` | N | `Long` | 64-bit integer |
|
|
503
|
+
| `number.float` | N | `Float` | 32-bit float |
|
|
504
|
+
| `number.double` | N | `Double` | Explicit double |
|
|
505
|
+
| `number.decimal` | N | `BigDecimal` | Arbitrary-precision |
|
|
506
|
+
| `boolean` | BOOL | `Boolean` | |
|
|
507
|
+
| `binary` | B | `byte[]` | Raw binary data (Buffer in Node.js, bytes in Python) |
|
|
508
|
+
| `timestamp` | S | `Instant` | ISO-8601 full instant |
|
|
509
|
+
| `timestamp.epoch` | N | `Long` | Unix epoch milliseconds |
|
|
510
|
+
| `timestamp.date` | S | `LocalDate` | ISO-8601 date only (e.g. `"2024-01-15"`) |
|
|
511
|
+
|
|
512
|
+
**Collection types:**
|
|
513
|
+
|
|
514
|
+
| .bprint Type | DynamoDB | Java Type | Notes |
|
|
515
|
+
|--------------|----------|-----------|-------|
|
|
516
|
+
| `list` (scalar) | L | `List<String>`, `List<Integer>`, etc. | Requires `items.type` |
|
|
517
|
+
| `list` (map) | L | `List<{FieldName}Item>` | Inner `@DynamoDbBean` class |
|
|
518
|
+
| `map` | M | `{FieldName}` (inner class) | Inner `@DynamoDbBean` class; supports recursive nesting |
|
|
519
|
+
| `stringSet` | SS | `Set<String>` | Unordered collection of unique strings |
|
|
520
|
+
| `numberSet` | NS | `Set<Integer>` | Unordered collection of unique numbers. Default when suffix omitted |
|
|
521
|
+
| `numberSet.int` | NS | `Set<Integer>` | |
|
|
522
|
+
| `numberSet.long` | NS | `Set<Long>` | |
|
|
523
|
+
| `numberSet.float` | NS | `Set<Float>` | |
|
|
524
|
+
| `numberSet.double` | NS | `Set<Double>` | Explicit double |
|
|
525
|
+
| `numberSet.decimal` | NS | `Set<BigDecimal>` | |
|
|
526
|
+
|
|
527
|
+
> **Note**: `timestamp.date` fields require a `LocalDateConverter` — the generator emits it automatically and applies `@DynamoDbConvertedBy` to affected getters. No manual setup needed.
|
|
528
|
+
|
|
529
|
+
**Cross-language mapping (planned generators):**
|
|
530
|
+
|
|
531
|
+
| .bprint Type | Java | TypeScript | Python | Go | C# |
|
|
532
|
+
|--------------|------|------------|--------|----|----|
|
|
533
|
+
| `string` | `String` | `string` | `str` | `string` | `string` |
|
|
534
|
+
| `number` | `Integer` | `number` | `int` | `int32` | `int` |
|
|
535
|
+
| `number.int` | `Integer` | `number` | `int` | `int32` | `int` |
|
|
536
|
+
| `number.long` | `Long` | `bigint` | `int` | `int64` | `long` |
|
|
537
|
+
| `number.decimal` | `BigDecimal` | `Decimal` | `Decimal` | `*big.Float` | `decimal` |
|
|
538
|
+
| `boolean` | `Boolean` | `boolean` | `bool` | `bool` | `bool` |
|
|
539
|
+
| `binary` | `byte[]` | `Buffer` | `bytes` | `[]byte` | `byte[]` |
|
|
540
|
+
| `timestamp` | `Instant` | `string` | `datetime` | `time.Time` | `DateTimeOffset` |
|
|
541
|
+
| `timestamp.epoch` | `Long` | `number` | `int` | `int64` | `long` |
|
|
542
|
+
| `timestamp.date` | `LocalDate` | `string` | `date` | `civil.Date` | `DateOnly` |
|
|
543
|
+
|
|
544
|
+
When `nullable: true`: Java uses boxed types (`Integer` not `int`), Python uses `Optional[T]`, Go uses pointers (`*int32`), C# uses nullable value types (`int?`). TypeScript is unaffected (all types already nullable unless `required`).
|
|
444
545
|
|
|
445
546
|
### Field Properties
|
|
446
547
|
|
|
447
548
|
| Property | Type | Applies To | Description |
|
|
448
549
|
|----------|------|-----------|-------------|
|
|
449
|
-
| `name` | string | All | Attribute/column name in the data store |
|
|
550
|
+
| `name` | string | All | Attribute/column name in the data store. If it collides with a reserved keyword, `nameOverride` is required. |
|
|
450
551
|
| `type` | string | All | One of the supported types above |
|
|
451
|
-
| `nameOverride` | string | All | Custom
|
|
552
|
+
| `nameOverride` | string | All | Custom code identifier when `name` isn't valid or collides with a reserved word |
|
|
452
553
|
| `required` | boolean | All | Generates null-check validation |
|
|
453
|
-
| `
|
|
454
|
-
| `
|
|
554
|
+
| `nullable` | boolean | All | When true, generators emit nullable/wrapper types (e.g., `Integer` vs `int` in Java). Identity fields cannot be nullable. Default: false |
|
|
555
|
+
| `default` | varies | Scalars (not `binary`) | Default value; type must match field type |
|
|
556
|
+
| `enum` | (string \| number)[] | Scalars (not `binary`) | Allowed values; type-matched (strings for string fields, numbers for number fields). Validated on nested fields too. |
|
|
455
557
|
| `description` | string | All | Generates Javadoc comments |
|
|
456
558
|
| `constraints` | object | Scalars | Validation constraints (see below) |
|
|
457
559
|
| `items` | object | `list` only | Required — defines element type |
|
|
@@ -463,9 +565,9 @@ A `.bprint` file is a JSON document describing a single entity. The format is da
|
|
|
463
565
|
|------------|-----------|-------------|
|
|
464
566
|
| `minLength` / `maxLength` | `string` | String length bounds |
|
|
465
567
|
| `pattern` | `string` | Regex pattern |
|
|
466
|
-
| `min` / `max` | `number` | Numeric range |
|
|
568
|
+
| `min` / `max` | `number` and `number.*` | Numeric range (works with all sub-types including `number.decimal`) |
|
|
467
569
|
|
|
468
|
-
Constraints cannot be applied to collection types (`list`, `map`, `stringSet`, `numberSet`).
|
|
570
|
+
Constraints cannot be applied to collection types (`list`, `map`, `stringSet`, `numberSet`, `numberSet.*`).
|
|
469
571
|
|
|
470
572
|
### Recursive Nesting
|
|
471
573
|
|
|
@@ -473,7 +575,14 @@ Constraints cannot be applied to collection types (`list`, `map`, `stringSet`, `
|
|
|
473
575
|
|
|
474
576
|
### Schema Version Rules
|
|
475
577
|
|
|
476
|
-
|
|
578
|
+
**Two version concepts — do not confuse them:**
|
|
579
|
+
|
|
580
|
+
| Concept | Where | Who controls |
|
|
581
|
+
|---------|-------|-------------|
|
|
582
|
+
| `schemaVersion` (in `.bprint` file) | `"schemaVersion": "1.0"` | The user — bumped per entity schema change |
|
|
583
|
+
| Spec version (this package) | `spec-versions.json` | Chaim maintainers — tracks `.bprint` format changes |
|
|
584
|
+
|
|
585
|
+
- `schemaVersion` is the **user's entity version**, not the spec version. Start at `"1.0"`, increment on content change.
|
|
477
586
|
- During `cdk deploy`, the Chaim server validates that the version was bumped when schema content changes. **Remind users frequently: bumping is mandatory on content change — enforced by the Chaim server at deploy time.**
|
|
478
587
|
- Use `chaim bump <file>` to increment automatically.
|
|
479
588
|
|
|
@@ -540,7 +649,7 @@ new ChaimDynamoDBBinder(this, 'OrderBinding', {
|
|
|
540
649
|
});
|
|
541
650
|
```
|
|
542
651
|
|
|
543
|
-
All entities sharing a table **must** have matching
|
|
652
|
+
All entities sharing a table **must** have matching identity field names.
|
|
544
653
|
|
|
545
654
|
### Credentials
|
|
546
655
|
|
|
@@ -683,7 +792,7 @@ These workflows are specific to the DynamoDB integration. The pattern will be si
|
|
|
683
792
|
|
|
684
793
|
### Add a New Entity to an Existing Table (Single-Table Design)
|
|
685
794
|
|
|
686
|
-
1. Create a `.bprint` schema with **matching
|
|
795
|
+
1. Create a `.bprint` schema with **matching identity field names** as existing entities on that table
|
|
687
796
|
2. Add another `ChaimDynamoDBBinder` for the same table
|
|
688
797
|
3. Run `cdk synth && chaim generate`
|
|
689
798
|
|
|
@@ -723,9 +832,13 @@ When the user encounters errors, check for these common causes:
|
|
|
723
832
|
| **`cdk synth` fails with key mismatch** | Table PK/SK, GSI, LSI, or TTL attribute names don't match fields in the `.bprint` schema | Ensure every key attribute referenced by the table/indexes exists as a field in the `.bprint` `fields` array |
|
|
724
833
|
| **Stale generated code** | Schema changed but `chaim generate` was not re-run | Run `cdk synth && chaim generate`. If `chaim.json` is not present, see [Package Resolution](#package-resolution) to resolve the package first. |
|
|
725
834
|
| **"--package is required" error** | `chaim generate` run without `--package` and no `chaim.json` exists | Create `chaim.json` with a `generate.stacks` block — see [Project Config: chaim.json](#project-config-chaimjson) |
|
|
726
|
-
| **Single-table key conflict** | Entities bound to the same table have mismatched
|
|
835
|
+
| **Single-table key conflict** | Entities bound to the same table have mismatched identity field names | All `.bprint` schemas sharing a table must use identical identity field names |
|
|
727
836
|
| **Auth errors during synth/deploy** | Missing or invalid Chaim credentials | Check `ChaimCredentials` in CDK (prod: Secrets Manager) or set `CHAIM_API_KEY`/`CHAIM_API_SECRET` env vars (dev-only). Do NOT assume credentials are auto-present |
|
|
728
837
|
| **Generated code compile errors** | Usually a `.bprint` schema issue (invalid types, missing required fields) | Run `chaim validate <file>` to check schema, fix issues, then regenerate |
|
|
838
|
+
| **"not a valid type name" on entityName** | `entityName` is not PascalCase (lowercase, dotted, or hyphenated) | Use PascalCase: `"User"`, `"OrderItem"`. No dots, hyphens, or underscores. |
|
|
839
|
+
| **"reserved keyword" on field name** | Field `name` matches a reserved word in Java, Python, Go, or TypeScript | Add a `nameOverride` to provide an alternative code identifier |
|
|
840
|
+
| **No `.bprint` validation / autocomplete in VS Code** | `chaim generate` hasn't been run yet, or `npm install` hasn't been run | Run `npm install` then `cdk synth && chaim generate` — this auto-writes `.vscode/settings.json` |
|
|
841
|
+
| **TTL items never expire (or expire immediately)** | `timestamp.epoch` TTL field populated with milliseconds instead of seconds | Use `Instant.getEpochSecond()` in Java, not `toEpochMilli()`. Configure TTL via `timeToLiveAttribute` on the CDK table — not in the `.bprint` schema. |
|
|
729
842
|
|
|
730
843
|
---
|
|
731
844
|
|
|
@@ -747,13 +860,21 @@ When the user encounters errors, check for these common causes:
|
|
|
747
860
|
|
|
748
861
|
3. **Generated code should be gitignored** — Regenerate during the build process. Never suggest committing generated files.
|
|
749
862
|
|
|
863
|
+
4. **Schema vs infrastructure boundary** — The `.bprint` schema defines *what data looks like* (fields, types, constraints). Infrastructure concerns (TTL, GSIs/LSIs, billing, streams, uniqueness enforcement, encryption) belong in CDK constructs. This keeps schemas portable across databases and languages. Specifically: TTL → `timeToLiveAttribute` on CDK table; indexes → `addGlobalSecondaryIndex()` / `addLocalSecondaryIndex()`; uniqueness → GSI design (DynamoDB) or DB constraint (SQL).
|
|
864
|
+
|
|
865
|
+
5. **DynamoDB TTL is CDK-only** — Configure TTL via `timeToLiveAttribute` on the CDK `dynamodb.Table` construct. The `.bprint` schema only declares the field with `type: "timestamp.epoch"`. When populating a TTL field in application code, use epoch **seconds** (`Instant.getEpochSecond()`), not milliseconds — DynamoDB TTL interprets the Number as seconds.
|
|
866
|
+
|
|
867
|
+
6. **`.vscode/settings.json` is written automatically** — `chaim generate` merges VS Code workspace settings on every run. This is idempotent and safe to commit. Users do NOT need to configure VS Code manually for `.bprint` validation. If VS Code intellisense isn't working for `.bprint` files, the fix is to run `chaim generate` (or ensure `npm install` has been run). Opt out via `"vscode": false` in `chaim.json → generate`.
|
|
868
|
+
|
|
750
869
|
### DynamoDB-Specific
|
|
751
870
|
|
|
871
|
+
> **Scope note:** Indexes (GSI/LSI), TTL, streams, and billing mode are configured on the CDK table construct — not in the `.bprint` schema. This is by design — keeping infrastructure-specific knobs in the infrastructure layer makes `.bprint` schemas portable across data stores.
|
|
872
|
+
|
|
752
873
|
4. **Key fields must exist in schema** — All DynamoDB key attributes (table PK/SK, GSI/LSI keys, TTL attribute) must be defined as fields in the `.bprint` schema. Mismatches fail `cdk synth`.
|
|
753
874
|
|
|
754
875
|
5. **LSIs share the table's partition key** — LSI metadata does not include a `partitionKey` field. The generated code automatically uses the table's partition key for LSI queries.
|
|
755
876
|
|
|
756
|
-
6. **Single-table entities must agree on keys** — All entities bound to the same DynamoDB table must have matching
|
|
877
|
+
6. **Single-table entities must agree on keys** — All entities bound to the same DynamoDB table must have matching identity field names in their `.bprint` schemas.
|
|
757
878
|
|
|
758
879
|
7. **`save()` does full replacement** — The generated `save()` uses `PutItem`, which replaces the entire item. Partial updates are not yet supported. Do NOT suggest partial update patterns.
|
|
759
880
|
|
|
@@ -764,6 +885,8 @@ When the user encounters errors, check for these common causes:
|
|
|
764
885
|
```
|
|
765
886
|
my-project/ # Project root (monorepo or single-repo)
|
|
766
887
|
├── chaim.json # ← Chaim project config (commit this)
|
|
888
|
+
├── .vscode/
|
|
889
|
+
│ └── settings.json # ← auto-written by chaim generate (commit this)
|
|
767
890
|
├── infrastructure/ # CDK infrastructure
|
|
768
891
|
│ ├── schemas/
|
|
769
892
|
│ │ ├── user.bprint
|