@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.
Files changed (125) hide show
  1. package/.editorconfig +13 -0
  2. package/.eslintrc.cjs +20 -0
  3. package/.prettierrc +8 -0
  4. package/CHANGELOG.md +15 -0
  5. package/LICENSE +21 -0
  6. package/README.md +331 -0
  7. package/dist/client.d.ts +48 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +321 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/config.d.ts +11 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +21 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/errors.d.ts +39 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +78 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/index.d.ts +6 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +6 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/models/Agency.d.ts +8 -0
  24. package/dist/models/Agency.d.ts.map +1 -0
  25. package/dist/models/Agency.js +2 -0
  26. package/dist/models/Agency.js.map +1 -0
  27. package/dist/models/Contract.d.ts +17 -0
  28. package/dist/models/Contract.d.ts.map +1 -0
  29. package/dist/models/Contract.js +2 -0
  30. package/dist/models/Contract.js.map +1 -0
  31. package/dist/models/Department.d.ts +5 -0
  32. package/dist/models/Department.d.ts.map +1 -0
  33. package/dist/models/Department.js +2 -0
  34. package/dist/models/Department.js.map +1 -0
  35. package/dist/models/Entity.d.ts +11 -0
  36. package/dist/models/Entity.d.ts.map +1 -0
  37. package/dist/models/Entity.js +2 -0
  38. package/dist/models/Entity.js.map +1 -0
  39. package/dist/models/Forecast.d.ts +12 -0
  40. package/dist/models/Forecast.d.ts.map +1 -0
  41. package/dist/models/Forecast.js +2 -0
  42. package/dist/models/Forecast.js.map +1 -0
  43. package/dist/models/Grant.d.ts +10 -0
  44. package/dist/models/Grant.d.ts.map +1 -0
  45. package/dist/models/Grant.js +2 -0
  46. package/dist/models/Grant.js.map +1 -0
  47. package/dist/models/Location.d.ts +17 -0
  48. package/dist/models/Location.d.ts.map +1 -0
  49. package/dist/models/Location.js +2 -0
  50. package/dist/models/Location.js.map +1 -0
  51. package/dist/models/Notice.d.ts +9 -0
  52. package/dist/models/Notice.d.ts.map +1 -0
  53. package/dist/models/Notice.js +2 -0
  54. package/dist/models/Notice.js.map +1 -0
  55. package/dist/models/Opportunity.d.ts +11 -0
  56. package/dist/models/Opportunity.d.ts.map +1 -0
  57. package/dist/models/Opportunity.js +2 -0
  58. package/dist/models/Opportunity.js.map +1 -0
  59. package/dist/models/RecipientProfile.d.ts +12 -0
  60. package/dist/models/RecipientProfile.d.ts.map +1 -0
  61. package/dist/models/RecipientProfile.js +2 -0
  62. package/dist/models/RecipientProfile.js.map +1 -0
  63. package/dist/models/index.d.ts +11 -0
  64. package/dist/models/index.d.ts.map +1 -0
  65. package/dist/models/index.js +2 -0
  66. package/dist/models/index.js.map +1 -0
  67. package/dist/shapes/explicitSchemas.d.ts +24 -0
  68. package/dist/shapes/explicitSchemas.d.ts.map +1 -0
  69. package/dist/shapes/explicitSchemas.js +1818 -0
  70. package/dist/shapes/explicitSchemas.js.map +1 -0
  71. package/dist/shapes/factory.d.ts +29 -0
  72. package/dist/shapes/factory.d.ts.map +1 -0
  73. package/dist/shapes/factory.js +93 -0
  74. package/dist/shapes/factory.js.map +1 -0
  75. package/dist/shapes/generator.d.ts +53 -0
  76. package/dist/shapes/generator.d.ts.map +1 -0
  77. package/dist/shapes/generator.js +117 -0
  78. package/dist/shapes/generator.js.map +1 -0
  79. package/dist/shapes/index.d.ts +8 -0
  80. package/dist/shapes/index.d.ts.map +1 -0
  81. package/dist/shapes/index.js +8 -0
  82. package/dist/shapes/index.js.map +1 -0
  83. package/dist/shapes/parser.d.ts +36 -0
  84. package/dist/shapes/parser.d.ts.map +1 -0
  85. package/dist/shapes/parser.js +169 -0
  86. package/dist/shapes/parser.js.map +1 -0
  87. package/dist/shapes/schema.d.ts +30 -0
  88. package/dist/shapes/schema.d.ts.map +1 -0
  89. package/dist/shapes/schema.js +63 -0
  90. package/dist/shapes/schema.js.map +1 -0
  91. package/dist/shapes/schemaTypes.d.ts +42 -0
  92. package/dist/shapes/schemaTypes.d.ts.map +1 -0
  93. package/dist/shapes/schemaTypes.js +2 -0
  94. package/dist/shapes/schemaTypes.js.map +1 -0
  95. package/dist/shapes/types.d.ts +46 -0
  96. package/dist/shapes/types.d.ts.map +1 -0
  97. package/dist/shapes/types.js +25 -0
  98. package/dist/shapes/types.js.map +1 -0
  99. package/dist/types.d.ts +28 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +2 -0
  102. package/dist/types.js.map +1 -0
  103. package/dist/utils/dates.d.ts +14 -0
  104. package/dist/utils/dates.d.ts.map +1 -0
  105. package/dist/utils/dates.js +25 -0
  106. package/dist/utils/dates.js.map +1 -0
  107. package/dist/utils/http.d.ts +23 -0
  108. package/dist/utils/http.d.ts.map +1 -0
  109. package/dist/utils/http.js +158 -0
  110. package/dist/utils/http.js.map +1 -0
  111. package/dist/utils/number.d.ts +14 -0
  112. package/dist/utils/number.d.ts.map +1 -0
  113. package/dist/utils/number.js +14 -0
  114. package/dist/utils/number.js.map +1 -0
  115. package/dist/utils/unflatten.d.ts +11 -0
  116. package/dist/utils/unflatten.d.ts.map +1 -0
  117. package/dist/utils/unflatten.js +49 -0
  118. package/dist/utils/unflatten.js.map +1 -0
  119. package/docs/API_REFERENCE.md +201 -0
  120. package/docs/DYNAMIC_MODELS.md +127 -0
  121. package/docs/SHAPES.md +94 -0
  122. package/eslint.config.js +37 -0
  123. package/package.json +73 -0
  124. package/tsconfig.json +21 -0
  125. 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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"}