@makegov/tango-node 0.1.4
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/.editorconfig +13 -0
- package/.eslintrc.cjs +20 -0
- package/.prettierrc +8 -0
- package/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +331 -0
- package/dist/client.d.ts +48 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +321 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +39 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +78 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/models/Agency.d.ts +8 -0
- package/dist/models/Agency.d.ts.map +1 -0
- package/dist/models/Agency.js +2 -0
- package/dist/models/Agency.js.map +1 -0
- package/dist/models/Contract.d.ts +17 -0
- package/dist/models/Contract.d.ts.map +1 -0
- package/dist/models/Contract.js +2 -0
- package/dist/models/Contract.js.map +1 -0
- package/dist/models/Department.d.ts +5 -0
- package/dist/models/Department.d.ts.map +1 -0
- package/dist/models/Department.js +2 -0
- package/dist/models/Department.js.map +1 -0
- package/dist/models/Entity.d.ts +11 -0
- package/dist/models/Entity.d.ts.map +1 -0
- package/dist/models/Entity.js +2 -0
- package/dist/models/Entity.js.map +1 -0
- package/dist/models/Forecast.d.ts +12 -0
- package/dist/models/Forecast.d.ts.map +1 -0
- package/dist/models/Forecast.js +2 -0
- package/dist/models/Forecast.js.map +1 -0
- package/dist/models/Grant.d.ts +10 -0
- package/dist/models/Grant.d.ts.map +1 -0
- package/dist/models/Grant.js +2 -0
- package/dist/models/Grant.js.map +1 -0
- package/dist/models/Location.d.ts +17 -0
- package/dist/models/Location.d.ts.map +1 -0
- package/dist/models/Location.js +2 -0
- package/dist/models/Location.js.map +1 -0
- package/dist/models/Notice.d.ts +9 -0
- package/dist/models/Notice.d.ts.map +1 -0
- package/dist/models/Notice.js +2 -0
- package/dist/models/Notice.js.map +1 -0
- package/dist/models/Opportunity.d.ts +11 -0
- package/dist/models/Opportunity.d.ts.map +1 -0
- package/dist/models/Opportunity.js +2 -0
- package/dist/models/Opportunity.js.map +1 -0
- package/dist/models/RecipientProfile.d.ts +12 -0
- package/dist/models/RecipientProfile.d.ts.map +1 -0
- package/dist/models/RecipientProfile.js +2 -0
- package/dist/models/RecipientProfile.js.map +1 -0
- package/dist/models/index.d.ts +11 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -0
- package/dist/shapes/explicitSchemas.d.ts +24 -0
- package/dist/shapes/explicitSchemas.d.ts.map +1 -0
- package/dist/shapes/explicitSchemas.js +1818 -0
- package/dist/shapes/explicitSchemas.js.map +1 -0
- package/dist/shapes/factory.d.ts +29 -0
- package/dist/shapes/factory.d.ts.map +1 -0
- package/dist/shapes/factory.js +93 -0
- package/dist/shapes/factory.js.map +1 -0
- package/dist/shapes/generator.d.ts +53 -0
- package/dist/shapes/generator.d.ts.map +1 -0
- package/dist/shapes/generator.js +117 -0
- package/dist/shapes/generator.js.map +1 -0
- package/dist/shapes/index.d.ts +8 -0
- package/dist/shapes/index.d.ts.map +1 -0
- package/dist/shapes/index.js +8 -0
- package/dist/shapes/index.js.map +1 -0
- package/dist/shapes/parser.d.ts +36 -0
- package/dist/shapes/parser.d.ts.map +1 -0
- package/dist/shapes/parser.js +169 -0
- package/dist/shapes/parser.js.map +1 -0
- package/dist/shapes/schema.d.ts +30 -0
- package/dist/shapes/schema.d.ts.map +1 -0
- package/dist/shapes/schema.js +63 -0
- package/dist/shapes/schema.js.map +1 -0
- package/dist/shapes/schemaTypes.d.ts +42 -0
- package/dist/shapes/schemaTypes.d.ts.map +1 -0
- package/dist/shapes/schemaTypes.js +2 -0
- package/dist/shapes/schemaTypes.js.map +1 -0
- package/dist/shapes/types.d.ts +46 -0
- package/dist/shapes/types.d.ts.map +1 -0
- package/dist/shapes/types.js +25 -0
- package/dist/shapes/types.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/dates.d.ts +14 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +25 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/http.d.ts +23 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +158 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/number.d.ts +14 -0
- package/dist/utils/number.d.ts.map +1 -0
- package/dist/utils/number.js +14 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/unflatten.d.ts +11 -0
- package/dist/utils/unflatten.d.ts.map +1 -0
- package/dist/utils/unflatten.js +49 -0
- package/dist/utils/unflatten.js.map +1 -0
- package/docs/API_REFERENCE.md +201 -0
- package/docs/DYNAMIC_MODELS.md +127 -0
- package/docs/SHAPES.md +94 -0
- package/eslint.config.js +37 -0
- package/package.json +73 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explicitSchemas.js","sourceRoot":"","sources":["../../src/shapes/explicitSchemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ShapeSpec } from "./types.js";
|
|
2
|
+
import { TypeGenerator } from "./generator.js";
|
|
3
|
+
type AnyRecord = Record<string, unknown>;
|
|
4
|
+
export interface ModelFactoryOptions {
|
|
5
|
+
typeGenerator?: TypeGenerator;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Model factory for creating shaped instances from API responses.
|
|
9
|
+
*
|
|
10
|
+
* This is the Node/TS analogue of tango.shapes.factory.ModelFactory.
|
|
11
|
+
* Instead of creating dynamic dataclass instances, it returns plain
|
|
12
|
+
* JavaScript objects with the correct structure and basic type parsing.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ModelFactory {
|
|
15
|
+
private readonly typeGenerator;
|
|
16
|
+
constructor(options?: ModelFactoryOptions);
|
|
17
|
+
/**
|
|
18
|
+
* Create a list of shaped objects from a list response.
|
|
19
|
+
*/
|
|
20
|
+
createList(baseModelName: string, shapeSpec: ShapeSpec, rawItems: unknown[]): AnyRecord[];
|
|
21
|
+
/**
|
|
22
|
+
* Create a single shaped object from a detail response.
|
|
23
|
+
*/
|
|
24
|
+
createOne(baseModelName: string, shapeSpec: ShapeSpec, rawItem: unknown): AnyRecord;
|
|
25
|
+
private createOneFromDescriptor;
|
|
26
|
+
private parseFieldValue;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/shapes/factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,OAAO,GAAE,mBAAwB;IAI7C;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE;IAKzF;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS;IAKnF,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,eAAe;CAkDxB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ModelInstantiationError } from "../errors.js";
|
|
2
|
+
import { parseDate, parseDateTime } from "../utils/dates.js";
|
|
3
|
+
import { parseDecimal } from "../utils/number.js";
|
|
4
|
+
import { TypeGenerator } from "./generator.js";
|
|
5
|
+
/**
|
|
6
|
+
* Model factory for creating shaped instances from API responses.
|
|
7
|
+
*
|
|
8
|
+
* This is the Node/TS analogue of tango.shapes.factory.ModelFactory.
|
|
9
|
+
* Instead of creating dynamic dataclass instances, it returns plain
|
|
10
|
+
* JavaScript objects with the correct structure and basic type parsing.
|
|
11
|
+
*/
|
|
12
|
+
export class ModelFactory {
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.typeGenerator = options.typeGenerator ?? new TypeGenerator();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a list of shaped objects from a list response.
|
|
18
|
+
*/
|
|
19
|
+
createList(baseModelName, shapeSpec, rawItems) {
|
|
20
|
+
const descriptor = this.typeGenerator.generateModelDescriptor(baseModelName, shapeSpec);
|
|
21
|
+
return rawItems.map((item, index) => this.createOneFromDescriptor(descriptor, item, `index ${index}`));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a single shaped object from a detail response.
|
|
25
|
+
*/
|
|
26
|
+
createOne(baseModelName, shapeSpec, rawItem) {
|
|
27
|
+
const descriptor = this.typeGenerator.generateModelDescriptor(baseModelName, shapeSpec);
|
|
28
|
+
return this.createOneFromDescriptor(descriptor, rawItem, "root");
|
|
29
|
+
}
|
|
30
|
+
createOneFromDescriptor(model, raw, context) {
|
|
31
|
+
if (raw === null || raw === undefined || typeof raw !== "object" || Array.isArray(raw)) {
|
|
32
|
+
throw new ModelInstantiationError(`Expected object for model "${model.modelName}" at ${context}, got ${typeof raw}`);
|
|
33
|
+
}
|
|
34
|
+
const src = raw;
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const field of model.fields) {
|
|
37
|
+
const { field: fieldSchema, alias } = field;
|
|
38
|
+
const sourceKey = fieldSchema.name;
|
|
39
|
+
if (!(sourceKey in src)) {
|
|
40
|
+
// If field is optional, we skip it; otherwise we still skip but do not error,
|
|
41
|
+
// mirroring the Python factory's forgiving behavior for partial payloads.
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const rawValue = src[sourceKey];
|
|
45
|
+
const parsed = this.parseFieldValue(field, rawValue, `${context}.${sourceKey}`);
|
|
46
|
+
result[alias] = parsed;
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
parseFieldValue(field, rawValue, context) {
|
|
51
|
+
const { field: fieldSchema, nestedModel } = field;
|
|
52
|
+
const parseScalar = (value) => {
|
|
53
|
+
if (value === null || value === undefined) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
switch (fieldSchema.type) {
|
|
57
|
+
case "date":
|
|
58
|
+
return parseDate(value);
|
|
59
|
+
case "datetime":
|
|
60
|
+
return parseDateTime(value);
|
|
61
|
+
case "Decimal":
|
|
62
|
+
return parseDecimal(value);
|
|
63
|
+
default:
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
// Nested model: recurse
|
|
68
|
+
if (nestedModel) {
|
|
69
|
+
if (fieldSchema.isList) {
|
|
70
|
+
if (!Array.isArray(rawValue)) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
return rawValue.map((item, index) => this.createOneFromDescriptor(nestedModel, item, `${context}[${index}]`));
|
|
74
|
+
}
|
|
75
|
+
if (rawValue === null || rawValue === undefined) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
if (typeof rawValue !== "object" || Array.isArray(rawValue)) {
|
|
79
|
+
throw new ModelInstantiationError(`Expected object for nested field "${fieldSchema.name}" at ${context}`);
|
|
80
|
+
}
|
|
81
|
+
return this.createOneFromDescriptor(nestedModel, rawValue, context);
|
|
82
|
+
}
|
|
83
|
+
// Non-nested field
|
|
84
|
+
if (fieldSchema.isList) {
|
|
85
|
+
if (!Array.isArray(rawValue)) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
return rawValue.map((item) => parseScalar(item));
|
|
89
|
+
}
|
|
90
|
+
return parseScalar(rawValue);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/shapes/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { FieldSchema } from "./schemaTypes.js";
|
|
2
|
+
import { SchemaRegistry } from "./schema.js";
|
|
3
|
+
import type { FieldSpec } from "./types.js";
|
|
4
|
+
import { ShapeSpec } from "./types.js";
|
|
5
|
+
export interface GeneratedField {
|
|
6
|
+
field: FieldSchema;
|
|
7
|
+
spec: FieldSpec;
|
|
8
|
+
/**
|
|
9
|
+
* Alias to use in the shaped output (defaults to field.name).
|
|
10
|
+
*/
|
|
11
|
+
alias: string;
|
|
12
|
+
/**
|
|
13
|
+
* Nested generated model for nested objects, if any.
|
|
14
|
+
*/
|
|
15
|
+
nestedModel?: GeneratedModel | null;
|
|
16
|
+
}
|
|
17
|
+
export interface GeneratedModel {
|
|
18
|
+
modelName: string;
|
|
19
|
+
fields: GeneratedField[];
|
|
20
|
+
isFlat: boolean;
|
|
21
|
+
isFlatLists: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface TypeGeneratorOptions {
|
|
24
|
+
cacheEnabled?: boolean;
|
|
25
|
+
cacheSize?: number;
|
|
26
|
+
schemaRegistry?: SchemaRegistry;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate runtime descriptors for shaped models based on ShapeSpec and the schema registry.
|
|
30
|
+
*
|
|
31
|
+
* This is the Node/TS analogue of tango.shapes.generator.TypeGenerator. Instead of creating
|
|
32
|
+
* TypedDict classes, it produces plain descriptors that the ModelFactory can use to construct
|
|
33
|
+
* shaped objects.
|
|
34
|
+
*/
|
|
35
|
+
export declare class TypeGenerator {
|
|
36
|
+
private readonly cacheEnabled;
|
|
37
|
+
private readonly cacheSize;
|
|
38
|
+
private readonly cache;
|
|
39
|
+
private readonly schemaRegistry;
|
|
40
|
+
constructor(options?: TypeGeneratorOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Generate (or retrieve from cache) a model descriptor for the given base model and shape.
|
|
43
|
+
*/
|
|
44
|
+
generateModelDescriptor(baseModelName: string, shapeSpec: ShapeSpec): GeneratedModel;
|
|
45
|
+
private buildModelDescriptor;
|
|
46
|
+
private buildGeneratedField;
|
|
47
|
+
private inferNestedModelName;
|
|
48
|
+
/**
|
|
49
|
+
* Normalize nested shape fields, handling wildcard nested selection like recipient(*).
|
|
50
|
+
*/
|
|
51
|
+
private normalizeNestedShapeFields;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/shapes/generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAEpC,OAAO,GAAE,oBAAyB;IAO9C;;OAEG;IACH,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,cAAc;IA4BpF,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAWnC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { ShapeValidationError } from "../errors.js";
|
|
2
|
+
import { SchemaRegistry } from "./schema.js";
|
|
3
|
+
import { ShapeSpec } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Generate runtime descriptors for shaped models based on ShapeSpec and the schema registry.
|
|
6
|
+
*
|
|
7
|
+
* This is the Node/TS analogue of tango.shapes.generator.TypeGenerator. Instead of creating
|
|
8
|
+
* TypedDict classes, it produces plain descriptors that the ModelFactory can use to construct
|
|
9
|
+
* shaped objects.
|
|
10
|
+
*/
|
|
11
|
+
export class TypeGenerator {
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.cacheEnabled = options.cacheEnabled ?? true;
|
|
14
|
+
this.cacheSize = options.cacheSize ?? 128;
|
|
15
|
+
this.cache = new Map();
|
|
16
|
+
this.schemaRegistry = options.schemaRegistry ?? new SchemaRegistry();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate (or retrieve from cache) a model descriptor for the given base model and shape.
|
|
20
|
+
*/
|
|
21
|
+
generateModelDescriptor(baseModelName, shapeSpec) {
|
|
22
|
+
const cacheKey = shapeSpec.getCacheKey(baseModelName);
|
|
23
|
+
if (this.cacheEnabled) {
|
|
24
|
+
const cached = this.cache.get(cacheKey);
|
|
25
|
+
if (cached) {
|
|
26
|
+
return cached;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const model = this.buildModelDescriptor(baseModelName, shapeSpec);
|
|
30
|
+
if (this.cacheEnabled) {
|
|
31
|
+
if (!this.cache.has(cacheKey)) {
|
|
32
|
+
this.cache.set(cacheKey, model);
|
|
33
|
+
if (this.cache.size > this.cacheSize) {
|
|
34
|
+
// Simple FIFO eviction
|
|
35
|
+
const firstKey = this.cache.keys().next().value;
|
|
36
|
+
if (firstKey) {
|
|
37
|
+
this.cache.delete(firstKey);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return model;
|
|
43
|
+
}
|
|
44
|
+
buildModelDescriptor(modelName, shapeSpec) {
|
|
45
|
+
const schema = this.schemaRegistry.getSchema(modelName);
|
|
46
|
+
const fields = [];
|
|
47
|
+
for (const fieldSpec of shapeSpec.fields) {
|
|
48
|
+
if (fieldSpec.name === "*" || fieldSpec.isWildcard) {
|
|
49
|
+
// Wildcard at this level: expand all fields
|
|
50
|
+
for (const [fieldName, fieldSchema] of Object.entries(schema.fields)) {
|
|
51
|
+
fields.push(this.buildGeneratedField(fieldName, fieldSpec, fieldSchema));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const fieldSchema = this.schemaRegistry.getField(modelName, fieldSpec.name);
|
|
56
|
+
fields.push(this.buildGeneratedField(fieldSpec.name, fieldSpec, fieldSchema));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Deduplicate by alias (later fields win, mirroring Python behavior)
|
|
60
|
+
const byAlias = new Map();
|
|
61
|
+
for (const f of fields) {
|
|
62
|
+
byAlias.set(f.alias, f);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
modelName,
|
|
66
|
+
fields: Array.from(byAlias.values()),
|
|
67
|
+
isFlat: shapeSpec.isFlat,
|
|
68
|
+
isFlatLists: shapeSpec.isFlatLists,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
buildGeneratedField(requestedName, spec, fieldSchema) {
|
|
72
|
+
const alias = spec.alias ?? fieldSchema.name;
|
|
73
|
+
let nestedModel = null;
|
|
74
|
+
if (spec.nestedFields && spec.nestedFields.length > 0) {
|
|
75
|
+
const nestedModelName = fieldSchema.nestedModel && typeof fieldSchema.nestedModel === "string" && fieldSchema.nestedModel.trim() !== ""
|
|
76
|
+
? fieldSchema.nestedModel
|
|
77
|
+
: this.inferNestedModelName(fieldSchema);
|
|
78
|
+
if (!nestedModelName) {
|
|
79
|
+
throw new ShapeValidationError(`Field "${requestedName}" on model "${fieldSchema.name}" does not support nested fields.`);
|
|
80
|
+
}
|
|
81
|
+
const nestedShapeFields = this.normalizeNestedShapeFields(spec.nestedFields);
|
|
82
|
+
const nestedShape = new ShapeSpec(nestedShapeFields, {
|
|
83
|
+
isFlat: false,
|
|
84
|
+
isFlatLists: false,
|
|
85
|
+
});
|
|
86
|
+
nestedModel = this.buildModelDescriptor(nestedModelName, nestedShape);
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
field: fieldSchema,
|
|
90
|
+
spec,
|
|
91
|
+
alias,
|
|
92
|
+
nestedModel,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
inferNestedModelName(fieldSchema) {
|
|
96
|
+
const primitiveTypes = new Set(["str", "int", "float", "bool", "Decimal", "date", "datetime", "dict", "Any"]);
|
|
97
|
+
if (!primitiveTypes.has(fieldSchema.type)) {
|
|
98
|
+
return fieldSchema.type;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Normalize nested shape fields, handling wildcard nested selection like recipient(*).
|
|
104
|
+
*/
|
|
105
|
+
normalizeNestedShapeFields(nested) {
|
|
106
|
+
if (nested.length === 1) {
|
|
107
|
+
const only = nested[0];
|
|
108
|
+
if (only.name === "*" || only.isWildcard) {
|
|
109
|
+
// A pure wildcard nested selection – leave as-is and let buildModelDescriptor
|
|
110
|
+
// expand it for the nested model.
|
|
111
|
+
return [{ name: "*", isWildcard: true }];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return nested;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/shapes/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./schemaTypes.js";
|
|
3
|
+
export * from "./explicitSchemas.js";
|
|
4
|
+
export * from "./schema.js";
|
|
5
|
+
export * from "./parser.js";
|
|
6
|
+
export * from "./generator.js";
|
|
7
|
+
export * from "./factory.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shapes/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./schemaTypes.js";
|
|
3
|
+
export * from "./explicitSchemas.js";
|
|
4
|
+
export * from "./schema.js";
|
|
5
|
+
export * from "./parser.js";
|
|
6
|
+
export * from "./generator.js";
|
|
7
|
+
export * from "./factory.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shapes/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ShapeSpec } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shape string parser for Tango SDK (Node/TS port).
|
|
4
|
+
*
|
|
5
|
+
* Grammar (same as Python SDK):
|
|
6
|
+
* shape := field_list
|
|
7
|
+
* field_list := field ("," field)*
|
|
8
|
+
* field := field_name [alias] [nested]
|
|
9
|
+
* field_name := identifier | "*"
|
|
10
|
+
* alias := "::" identifier
|
|
11
|
+
* nested := "(" field_list ")"
|
|
12
|
+
* identifier := [a-zA-Z_][a-zA-Z0-9_]*
|
|
13
|
+
*/
|
|
14
|
+
export declare class ShapeParser {
|
|
15
|
+
private readonly cacheEnabled;
|
|
16
|
+
private readonly parseCache;
|
|
17
|
+
constructor(options?: {
|
|
18
|
+
cacheEnabled?: boolean;
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Parse a shape string into a ShapeSpec.
|
|
22
|
+
*/
|
|
23
|
+
parse(shape: string): ShapeSpec;
|
|
24
|
+
/**
|
|
25
|
+
* Parse a shape string and attach flat/flat_lists flags.
|
|
26
|
+
*/
|
|
27
|
+
parseWithFlags(shape: string, isFlat: boolean, isFlatLists: boolean): ShapeSpec;
|
|
28
|
+
/**
|
|
29
|
+
* Validate syntax only (used for quick checks).
|
|
30
|
+
*/
|
|
31
|
+
validateSyntax(shape: string): void;
|
|
32
|
+
private parseFieldList;
|
|
33
|
+
private parseField;
|
|
34
|
+
private parseIdentifier;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/shapes/parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvC;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAExC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO;IAKpD;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAgC/B;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,SAAS;IAK/E;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,UAAU;IA8DlB,OAAO,CAAC,eAAe;CAkBxB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { ShapeParseError } from "../errors.js";
|
|
2
|
+
import { ShapeSpec } from "./types.js";
|
|
3
|
+
function isIdentifierStart(ch) {
|
|
4
|
+
return /[a-zA-Z_]/.test(ch);
|
|
5
|
+
}
|
|
6
|
+
function isIdentifierPart(ch) {
|
|
7
|
+
return /[a-zA-Z0-9_]/.test(ch);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Shape string parser for Tango SDK (Node/TS port).
|
|
11
|
+
*
|
|
12
|
+
* Grammar (same as Python SDK):
|
|
13
|
+
* shape := field_list
|
|
14
|
+
* field_list := field ("," field)*
|
|
15
|
+
* field := field_name [alias] [nested]
|
|
16
|
+
* field_name := identifier | "*"
|
|
17
|
+
* alias := "::" identifier
|
|
18
|
+
* nested := "(" field_list ")"
|
|
19
|
+
* identifier := [a-zA-Z_][a-zA-Z0-9_]*
|
|
20
|
+
*/
|
|
21
|
+
export class ShapeParser {
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
this.cacheEnabled = options.cacheEnabled ?? true;
|
|
24
|
+
this.parseCache = new Map();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parse a shape string into a ShapeSpec.
|
|
28
|
+
*/
|
|
29
|
+
parse(shape) {
|
|
30
|
+
const input = shape.trim();
|
|
31
|
+
if (!input) {
|
|
32
|
+
throw new ShapeParseError("Shape string cannot be empty");
|
|
33
|
+
}
|
|
34
|
+
if (this.cacheEnabled && this.parseCache.has(input)) {
|
|
35
|
+
return this.parseCache.get(input);
|
|
36
|
+
}
|
|
37
|
+
const [fields, pos] = this.parseFieldList(input, 0);
|
|
38
|
+
// Skip trailing whitespace
|
|
39
|
+
let cursor = pos;
|
|
40
|
+
while (cursor < input.length && input[cursor].trim() === "") {
|
|
41
|
+
cursor += 1;
|
|
42
|
+
}
|
|
43
|
+
if (cursor < input.length) {
|
|
44
|
+
const ch = input[cursor];
|
|
45
|
+
throw new ShapeParseError(`Unexpected character "${ch}" at position ${cursor}`);
|
|
46
|
+
}
|
|
47
|
+
const spec = new ShapeSpec(fields);
|
|
48
|
+
if (this.cacheEnabled) {
|
|
49
|
+
this.parseCache.set(input, spec);
|
|
50
|
+
}
|
|
51
|
+
return spec;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parse a shape string and attach flat/flat_lists flags.
|
|
55
|
+
*/
|
|
56
|
+
parseWithFlags(shape, isFlat, isFlatLists) {
|
|
57
|
+
const spec = this.parse(shape);
|
|
58
|
+
return new ShapeSpec(spec.fields, { isFlat, isFlatLists });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validate syntax only (used for quick checks).
|
|
62
|
+
*/
|
|
63
|
+
validateSyntax(shape) {
|
|
64
|
+
// Parsing already performs syntax validation; we discard the result.
|
|
65
|
+
this.parse(shape);
|
|
66
|
+
}
|
|
67
|
+
parseFieldList(input, startPos) {
|
|
68
|
+
const fields = [];
|
|
69
|
+
let pos = startPos;
|
|
70
|
+
let expectField = true;
|
|
71
|
+
while (pos < input.length) {
|
|
72
|
+
// Skip whitespace
|
|
73
|
+
while (pos < input.length && input[pos].trim() === "") {
|
|
74
|
+
pos += 1;
|
|
75
|
+
}
|
|
76
|
+
if (pos >= input.length) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
const ch = input[pos];
|
|
80
|
+
if (ch === ",") {
|
|
81
|
+
if (expectField) {
|
|
82
|
+
throw new ShapeParseError(`Expected field before comma at position ${pos}`);
|
|
83
|
+
}
|
|
84
|
+
expectField = true;
|
|
85
|
+
pos += 1;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (ch === ")") {
|
|
89
|
+
// Caller is responsible for consuming ')'
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
// Parse a single field
|
|
93
|
+
const [field, nextPos] = this.parseField(input, pos);
|
|
94
|
+
fields.push(field);
|
|
95
|
+
pos = nextPos;
|
|
96
|
+
expectField = false;
|
|
97
|
+
}
|
|
98
|
+
if (expectField && fields.length > 0) {
|
|
99
|
+
throw new ShapeParseError("Expected field after comma but reached end of shape string");
|
|
100
|
+
}
|
|
101
|
+
return [fields, pos];
|
|
102
|
+
}
|
|
103
|
+
parseField(input, startPos) {
|
|
104
|
+
let pos = startPos;
|
|
105
|
+
// Skip whitespace
|
|
106
|
+
while (pos < input.length && input[pos].trim() === "") {
|
|
107
|
+
pos += 1;
|
|
108
|
+
}
|
|
109
|
+
if (pos >= input.length) {
|
|
110
|
+
throw new ShapeParseError("Unexpected end of shape while parsing field");
|
|
111
|
+
}
|
|
112
|
+
let name;
|
|
113
|
+
let isWildcard = false;
|
|
114
|
+
if (input[pos] === "*") {
|
|
115
|
+
name = "*";
|
|
116
|
+
isWildcard = true;
|
|
117
|
+
pos += 1;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
[name, pos] = this.parseIdentifier(input, pos);
|
|
121
|
+
}
|
|
122
|
+
let alias = null;
|
|
123
|
+
let nestedFields;
|
|
124
|
+
// Parse optional alias
|
|
125
|
+
if (input.slice(pos, pos + 2) === "::") {
|
|
126
|
+
if (isWildcard) {
|
|
127
|
+
throw new ShapeParseError('Wildcard fields cannot have aliases ("*::alias" is invalid)');
|
|
128
|
+
}
|
|
129
|
+
pos += 2;
|
|
130
|
+
[alias, pos] = this.parseIdentifier(input, pos);
|
|
131
|
+
}
|
|
132
|
+
// Skip whitespace
|
|
133
|
+
while (pos < input.length && input[pos].trim() === "") {
|
|
134
|
+
pos += 1;
|
|
135
|
+
}
|
|
136
|
+
// Parse optional nested field list
|
|
137
|
+
if (pos < input.length && input[pos] === "(") {
|
|
138
|
+
pos += 1;
|
|
139
|
+
const [nested, nextPos] = this.parseFieldList(input, pos);
|
|
140
|
+
pos = nextPos;
|
|
141
|
+
// Skip whitespace before ')'
|
|
142
|
+
while (pos < input.length && input[pos].trim() === "") {
|
|
143
|
+
pos += 1;
|
|
144
|
+
}
|
|
145
|
+
if (pos >= input.length || input[pos] !== ")") {
|
|
146
|
+
throw new ShapeParseError(`Expected ')' to close nested field list for "${name}"`);
|
|
147
|
+
}
|
|
148
|
+
pos += 1;
|
|
149
|
+
nestedFields = nested;
|
|
150
|
+
}
|
|
151
|
+
const fieldSpec = { name, alias, nestedFields, isWildcard };
|
|
152
|
+
return [fieldSpec, pos];
|
|
153
|
+
}
|
|
154
|
+
parseIdentifier(input, startPos) {
|
|
155
|
+
let pos = startPos;
|
|
156
|
+
const first = input[pos];
|
|
157
|
+
if (!isIdentifierStart(first)) {
|
|
158
|
+
throw new ShapeParseError(`Invalid identifier start '${first}' at position ${pos}`);
|
|
159
|
+
}
|
|
160
|
+
let ident = first;
|
|
161
|
+
pos += 1;
|
|
162
|
+
while (pos < input.length && isIdentifierPart(input[pos])) {
|
|
163
|
+
ident += input[pos];
|
|
164
|
+
pos += 1;
|
|
165
|
+
}
|
|
166
|
+
return [ident, pos];
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/shapes/parser.ts"],"names":[],"mappings":"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"}
|