shapedef 1.0.0

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 (149) hide show
  1. package/.gitignore +232 -0
  2. package/CLAUDE.md +41 -0
  3. package/README.md +2 -0
  4. package/dist/cjs/common/guards.d.ts +5 -0
  5. package/dist/cjs/common/guards.d.ts.map +1 -0
  6. package/dist/cjs/common/guards.js +22 -0
  7. package/dist/cjs/common/guards.js.map +1 -0
  8. package/dist/cjs/common/index.d.ts +3 -0
  9. package/dist/cjs/common/index.d.ts.map +1 -0
  10. package/dist/cjs/common/index.js +19 -0
  11. package/dist/cjs/common/index.js.map +1 -0
  12. package/dist/cjs/common/padding.d.ts +2 -0
  13. package/dist/cjs/common/padding.d.ts.map +1 -0
  14. package/dist/cjs/common/padding.js +8 -0
  15. package/dist/cjs/common/padding.js.map +1 -0
  16. package/dist/cjs/common/types.d.ts +8 -0
  17. package/dist/cjs/common/types.d.ts.map +1 -0
  18. package/dist/cjs/common/types.js +3 -0
  19. package/dist/cjs/common/types.js.map +1 -0
  20. package/dist/cjs/index.d.ts +5 -0
  21. package/dist/cjs/index.d.ts.map +1 -0
  22. package/dist/cjs/index.js +21 -0
  23. package/dist/cjs/index.js.map +1 -0
  24. package/dist/cjs/inputs/index.d.ts +2 -0
  25. package/dist/cjs/inputs/index.d.ts.map +1 -0
  26. package/dist/cjs/inputs/index.js +18 -0
  27. package/dist/cjs/inputs/index.js.map +1 -0
  28. package/dist/cjs/inputs/json-schema.d.ts +4 -0
  29. package/dist/cjs/inputs/json-schema.d.ts.map +1 -0
  30. package/dist/cjs/inputs/json-schema.js +306 -0
  31. package/dist/cjs/inputs/json-schema.js.map +1 -0
  32. package/dist/cjs/phantom.d.ts +4 -0
  33. package/dist/cjs/phantom.d.ts.map +1 -0
  34. package/dist/cjs/phantom.js +5 -0
  35. package/dist/cjs/phantom.js.map +1 -0
  36. package/dist/cjs/shape-utils.d.ts +4 -0
  37. package/dist/cjs/shape-utils.d.ts.map +1 -0
  38. package/dist/cjs/shape-utils.js +43 -0
  39. package/dist/cjs/shape-utils.js.map +1 -0
  40. package/dist/cjs/shape.d.ts +169 -0
  41. package/dist/cjs/shape.d.ts.map +1 -0
  42. package/dist/cjs/shape.js +258 -0
  43. package/dist/cjs/shape.js.map +1 -0
  44. package/dist/cjs/translations/index.d.ts +4 -0
  45. package/dist/cjs/translations/index.d.ts.map +1 -0
  46. package/dist/cjs/translations/index.js +20 -0
  47. package/dist/cjs/translations/index.js.map +1 -0
  48. package/dist/cjs/translations/postgres.d.ts +3 -0
  49. package/dist/cjs/translations/postgres.d.ts.map +1 -0
  50. package/dist/cjs/translations/postgres.js +72 -0
  51. package/dist/cjs/translations/postgres.js.map +1 -0
  52. package/dist/cjs/translations/translation.d.ts +3 -0
  53. package/dist/cjs/translations/translation.d.ts.map +1 -0
  54. package/dist/cjs/translations/translation.js +3 -0
  55. package/dist/cjs/translations/translation.js.map +1 -0
  56. package/dist/cjs/translations/typescript.d.ts +3 -0
  57. package/dist/cjs/translations/typescript.d.ts.map +1 -0
  58. package/dist/cjs/translations/typescript.js +122 -0
  59. package/dist/cjs/translations/typescript.js.map +1 -0
  60. package/dist/cjs/validation.d.ts +10 -0
  61. package/dist/cjs/validation.d.ts.map +1 -0
  62. package/dist/cjs/validation.js +101 -0
  63. package/dist/cjs/validation.js.map +1 -0
  64. package/dist/esm/common/guards.d.ts +5 -0
  65. package/dist/esm/common/guards.d.ts.map +1 -0
  66. package/dist/esm/common/guards.js +22 -0
  67. package/dist/esm/common/guards.js.map +1 -0
  68. package/dist/esm/common/index.d.ts +3 -0
  69. package/dist/esm/common/index.d.ts.map +1 -0
  70. package/dist/esm/common/index.js +19 -0
  71. package/dist/esm/common/index.js.map +1 -0
  72. package/dist/esm/common/padding.d.ts +2 -0
  73. package/dist/esm/common/padding.d.ts.map +1 -0
  74. package/dist/esm/common/padding.js +8 -0
  75. package/dist/esm/common/padding.js.map +1 -0
  76. package/dist/esm/common/types.d.ts +8 -0
  77. package/dist/esm/common/types.d.ts.map +1 -0
  78. package/dist/esm/common/types.js +3 -0
  79. package/dist/esm/common/types.js.map +1 -0
  80. package/dist/esm/index.d.ts +5 -0
  81. package/dist/esm/index.d.ts.map +1 -0
  82. package/dist/esm/index.js +21 -0
  83. package/dist/esm/index.js.map +1 -0
  84. package/dist/esm/inputs/index.d.ts +2 -0
  85. package/dist/esm/inputs/index.d.ts.map +1 -0
  86. package/dist/esm/inputs/index.js +18 -0
  87. package/dist/esm/inputs/index.js.map +1 -0
  88. package/dist/esm/inputs/json-schema.d.ts +4 -0
  89. package/dist/esm/inputs/json-schema.d.ts.map +1 -0
  90. package/dist/esm/inputs/json-schema.js +306 -0
  91. package/dist/esm/inputs/json-schema.js.map +1 -0
  92. package/dist/esm/package.json +1 -0
  93. package/dist/esm/phantom.d.ts +4 -0
  94. package/dist/esm/phantom.d.ts.map +1 -0
  95. package/dist/esm/phantom.js +5 -0
  96. package/dist/esm/phantom.js.map +1 -0
  97. package/dist/esm/shape-utils.d.ts +4 -0
  98. package/dist/esm/shape-utils.d.ts.map +1 -0
  99. package/dist/esm/shape-utils.js +43 -0
  100. package/dist/esm/shape-utils.js.map +1 -0
  101. package/dist/esm/shape.d.ts +169 -0
  102. package/dist/esm/shape.d.ts.map +1 -0
  103. package/dist/esm/shape.js +258 -0
  104. package/dist/esm/shape.js.map +1 -0
  105. package/dist/esm/translations/index.d.ts +4 -0
  106. package/dist/esm/translations/index.d.ts.map +1 -0
  107. package/dist/esm/translations/index.js +20 -0
  108. package/dist/esm/translations/index.js.map +1 -0
  109. package/dist/esm/translations/postgres.d.ts +3 -0
  110. package/dist/esm/translations/postgres.d.ts.map +1 -0
  111. package/dist/esm/translations/postgres.js +72 -0
  112. package/dist/esm/translations/postgres.js.map +1 -0
  113. package/dist/esm/translations/translation.d.ts +3 -0
  114. package/dist/esm/translations/translation.d.ts.map +1 -0
  115. package/dist/esm/translations/translation.js +3 -0
  116. package/dist/esm/translations/translation.js.map +1 -0
  117. package/dist/esm/translations/typescript.d.ts +3 -0
  118. package/dist/esm/translations/typescript.d.ts.map +1 -0
  119. package/dist/esm/translations/typescript.js +122 -0
  120. package/dist/esm/translations/typescript.js.map +1 -0
  121. package/dist/esm/validation.d.ts +10 -0
  122. package/dist/esm/validation.d.ts.map +1 -0
  123. package/dist/esm/validation.js +101 -0
  124. package/dist/esm/validation.js.map +1 -0
  125. package/package.json +44 -0
  126. package/pnpm-lock.yaml +969 -0
  127. package/src/common/guards.ts +23 -0
  128. package/src/common/index.ts +2 -0
  129. package/src/common/padding.ts +6 -0
  130. package/src/common/types.ts +21 -0
  131. package/src/index.ts +4 -0
  132. package/src/inputs/index.ts +1 -0
  133. package/src/inputs/json-schema.test.ts +191 -0
  134. package/src/inputs/json-schema.ts +324 -0
  135. package/src/phantom.ts +3 -0
  136. package/src/samples/bank.sample.ts +25 -0
  137. package/src/shape-utils.ts +46 -0
  138. package/src/shape.ts +488 -0
  139. package/src/translations/index.ts +3 -0
  140. package/src/translations/postgres.test.ts +161 -0
  141. package/src/translations/postgres.ts +73 -0
  142. package/src/translations/translation.ts +3 -0
  143. package/src/translations/typescript.test.ts +61 -0
  144. package/src/translations/typescript.ts +142 -0
  145. package/src/validation.test.ts +179 -0
  146. package/src/validation.ts +135 -0
  147. package/tsconfig.cjs.json +10 -0
  148. package/tsconfig.esm.json +10 -0
  149. package/tsconfig.json +22 -0
@@ -0,0 +1,169 @@
1
+ import { Prettify, TupleOf } from "./common/types";
2
+ export declare const ShapeBrandSymbol: unique symbol;
3
+ export type ShapeBrandSymbol = typeof ShapeBrandSymbol;
4
+ export type ShapeAnnotation = {
5
+ name?: string;
6
+ title?: string;
7
+ description?: string;
8
+ optional?: boolean;
9
+ primary?: boolean;
10
+ unique?: boolean;
11
+ min?: number;
12
+ max?: number;
13
+ format?: string;
14
+ pattern?: string;
15
+ uniqueWithin?: boolean;
16
+ defaultValue?: any;
17
+ foreign?: {
18
+ shapeName: string;
19
+ fieldName: string;
20
+ };
21
+ };
22
+ export type PhantomShape = {
23
+ out: any;
24
+ };
25
+ export type LooseShape = {
26
+ type: string;
27
+ __phantom: PhantomShape;
28
+ anno: ShapeAnnotation;
29
+ };
30
+ export type OutputOfShape<T> = [
31
+ T
32
+ ] extends [LooseShape] ? T["__phantom"]["out"] : never;
33
+ export type AnnoOfShape<T> = [T] extends [LooseShape] ? T["anno"] : never;
34
+ export type ShapeIsOptional<T> = [
35
+ AnnoOfShape<T>["optional"]
36
+ ] extends [true] ? true : false;
37
+ export type AnnotateShape<T extends LooseShape, Anno extends ShapeAnnotation> = T & {
38
+ anno: T["anno"] & Anno;
39
+ };
40
+ export interface ShapeBase<Type extends string> extends LooseShape {
41
+ type: Type;
42
+ [ShapeBrandSymbol]: true;
43
+ }
44
+ export interface ShapeWithOutput<Type extends string, Out> extends ShapeBase<Type> {
45
+ __phantom: {
46
+ out: Out;
47
+ };
48
+ }
49
+ export interface ShapeFloat extends ShapeWithOutput<"float", number> {
50
+ }
51
+ export interface ShapeInt extends ShapeWithOutput<"int", number> {
52
+ }
53
+ export interface ShapeNumber extends ShapeWithOutput<"number", number> {
54
+ }
55
+ export interface ShapeBool extends ShapeWithOutput<"bool", boolean> {
56
+ }
57
+ export interface ShapeStr extends ShapeWithOutput<"str", string> {
58
+ }
59
+ export interface ShapeDate extends ShapeWithOutput<"date", Date> {
60
+ }
61
+ export interface ShapeNil extends ShapeWithOutput<"nil", null> {
62
+ }
63
+ export interface ShapeUnknown extends ShapeWithOutput<"unknown", unknown> {
64
+ }
65
+ export interface ShapeLiteralFloat<Value extends number = number> extends ShapeWithOutput<"literal-float", Value> {
66
+ value: Value;
67
+ }
68
+ export interface ShapeLiteralInt<Value extends number = number> extends ShapeWithOutput<"literal-int", Value> {
69
+ value: Value;
70
+ }
71
+ export interface ShapeLiteralNumber<Value extends number = number> extends ShapeWithOutput<"literal-number", Value> {
72
+ value: Value;
73
+ }
74
+ export interface ShapeLiteralBool<Value extends boolean = boolean> extends ShapeWithOutput<"literal-bool", Value> {
75
+ value: Value;
76
+ }
77
+ export interface ShapeLiteralStr<Value extends string = string> extends ShapeWithOutput<"literal-str", Value> {
78
+ value: Value;
79
+ }
80
+ export interface ShapeRef<Name extends string = string, Hint extends Shape = ShapeUnknown> extends ShapeBase<"ref"> {
81
+ name: Name;
82
+ hint?: Hint;
83
+ __phantom: {
84
+ out: unknown;
85
+ };
86
+ }
87
+ export interface ShapeArray<Item extends Shape = Shape> extends ShapeBase<"array"> {
88
+ item: Item;
89
+ __phantom: {
90
+ out: Array<OutputOfShape<Item>>;
91
+ };
92
+ }
93
+ export interface ShapeTuple<out Items extends TupleOf<Shape> = TupleOf<Shape>> extends ShapeBase<"tuple"> {
94
+ tup: Items;
95
+ __phantom: {
96
+ out: {
97
+ -readonly [P in keyof Items]: Items[P];
98
+ };
99
+ };
100
+ }
101
+ export interface ShapeMapping<Rec extends Record<string, Shape> = Record<string, Shape>> extends ShapeBase<"mapping"> {
102
+ rec: Rec;
103
+ __phantom: {
104
+ out: Prettify<{
105
+ -readonly [P in keyof Rec as [ShapeIsOptional<Rec[P]>] extends [true] ? never : P]: OutputOfShape<Rec[P]>;
106
+ } & {
107
+ -readonly [P in keyof Rec as [ShapeIsOptional<Rec[P]>] extends [true] ? P : never]?: OutputOfShape<Rec[P]>;
108
+ }>;
109
+ };
110
+ }
111
+ export interface ShapeVector<Dims extends number = number> extends ShapeWithOutput<"vector", number[]> {
112
+ dims: Dims;
113
+ }
114
+ export interface ShapeUnion<out Ofs extends TupleOf<Shape> | Array<Shape> = TupleOf<Shape> | Array<Shape>> extends ShapeWithOutput<"union", OutputOfShape<Ofs[number]>> {
115
+ ofs: Ofs;
116
+ }
117
+ export type Shape = ShapeFloat | ShapeInt | ShapeNumber | ShapeBool | ShapeStr | ShapeDate | ShapeNil | ShapeUnknown | ShapeLiteralFloat | ShapeLiteralInt | ShapeLiteralNumber | ShapeLiteralBool | ShapeLiteralStr | ShapeRef | ShapeArray | ShapeMapping | ShapeTuple | ShapeVector | ShapeUnion;
118
+ export declare function isShape(x: unknown): x is Shape;
119
+ export declare namespace shapes {
120
+ function float(): ShapeFloat;
121
+ function int(): ShapeInt;
122
+ function number(): ShapeNumber;
123
+ function bool(): ShapeBool;
124
+ function str(): ShapeStr;
125
+ function date(): ShapeDate;
126
+ function nil(): ShapeNil;
127
+ function unknown(): ShapeUnknown;
128
+ function literalFloat<Value extends number>(value: Value): ShapeLiteralFloat<Value>;
129
+ function literalInt<Value extends number>(value: Value): ShapeLiteralInt<Value>;
130
+ function literalNumber<Value extends number>(value: Value): ShapeLiteralNumber<Value>;
131
+ function literalBool<Value extends boolean>(value: Value): ShapeLiteralBool<Value>;
132
+ function literalStr<Value extends string>(value: Value): ShapeLiteralStr<Value>;
133
+ function literal<Value extends number>(value: Value): ShapeLiteralNumber<Value>;
134
+ function literal<Value extends boolean>(value: Value): ShapeLiteralBool<Value>;
135
+ function literal<Value extends string>(value: Value): ShapeLiteralStr<Value>;
136
+ function literal(value: number | boolean | string): ShapeLiteralNumber | ShapeLiteralBool | ShapeLiteralStr;
137
+ function ref<Name extends string, Hint extends Shape = ShapeUnknown>(name: Name, hint?: Hint): ShapeRef<Name, Hint>;
138
+ function array<Item extends Shape>(item: Item): ShapeArray<Item>;
139
+ function tuple<Items extends TupleOf<Shape>>(...items: Items): ShapeTuple<Items>;
140
+ function mapping<Rec extends Record<string, Shape>>(rec: Rec): ShapeMapping<Rec>;
141
+ function vector<Dims extends number>(dims: Dims): ShapeVector<Dims>;
142
+ function union<Ofs extends Array<Shape>>(...ofs: Ofs): ShapeUnion<Ofs>;
143
+ function union<Ofs extends TupleOf<Shape>>(...ofs: Ofs): ShapeUnion<Ofs>;
144
+ }
145
+ export declare namespace annotate {
146
+ function by<S extends Shape, Anno extends ShapeAnnotation>(shape: S, anno: Anno): AnnotateShape<S, Anno>;
147
+ function optional<S extends Shape>(shape: S): AnnotateShape<S, {
148
+ optional: true;
149
+ }>;
150
+ function primary<S extends Shape>(shape: S): AnnotateShape<S, {
151
+ primary: true;
152
+ }>;
153
+ function unique<S extends Shape>(shape: S): AnnotateShape<S, {
154
+ unique: true;
155
+ }>;
156
+ function named<S extends Shape, Name extends string>(shape: S, name: Name): AnnotateShape<S, {
157
+ name: Name;
158
+ }>;
159
+ function foreign<S extends Shape, ShapeName extends string, FieldName extends string>(shape: S, shapeName: ShapeName, fieldName: FieldName): AnnotateShape<S, {
160
+ foreign: {
161
+ shapeName: ShapeName;
162
+ fieldName: FieldName;
163
+ };
164
+ }>;
165
+ function auto(x: unknown, options?: {
166
+ preferLiterals?: boolean;
167
+ }): Shape;
168
+ }
169
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.annotate = exports.shapes = exports.ShapeBrandSymbol = void 0;
4
+ exports.isShape = isShape;
5
+ const common_1 = require("./common");
6
+ const phantom_1 = require("./phantom");
7
+ exports.ShapeBrandSymbol = Symbol("Shape");
8
+ const createPhantom = () => {
9
+ return { __phantom: { out: phantom_1.Phantom }, [exports.ShapeBrandSymbol]: true };
10
+ };
11
+ function isShape(x) {
12
+ return ((0, common_1.has)(x, exports.ShapeBrandSymbol) &&
13
+ x[exports.ShapeBrandSymbol] === true);
14
+ }
15
+ var shapes;
16
+ (function (shapes) {
17
+ function float() {
18
+ return {
19
+ type: "float",
20
+ anno: {},
21
+ ...createPhantom(),
22
+ };
23
+ }
24
+ shapes.float = float;
25
+ function int() {
26
+ return {
27
+ type: "int",
28
+ anno: {},
29
+ ...createPhantom(),
30
+ };
31
+ }
32
+ shapes.int = int;
33
+ function number() {
34
+ return {
35
+ type: "number",
36
+ anno: {},
37
+ ...createPhantom(),
38
+ };
39
+ }
40
+ shapes.number = number;
41
+ function bool() {
42
+ return {
43
+ type: "bool",
44
+ anno: {},
45
+ ...createPhantom(),
46
+ };
47
+ }
48
+ shapes.bool = bool;
49
+ function str() {
50
+ return {
51
+ type: "str",
52
+ anno: {},
53
+ ...createPhantom(),
54
+ };
55
+ }
56
+ shapes.str = str;
57
+ function date() {
58
+ return {
59
+ type: "date",
60
+ anno: {},
61
+ ...createPhantom(),
62
+ };
63
+ }
64
+ shapes.date = date;
65
+ function nil() {
66
+ return {
67
+ type: "nil",
68
+ anno: {},
69
+ ...createPhantom(),
70
+ };
71
+ }
72
+ shapes.nil = nil;
73
+ function unknown() {
74
+ return {
75
+ type: "unknown",
76
+ anno: {},
77
+ ...createPhantom(),
78
+ };
79
+ }
80
+ shapes.unknown = unknown;
81
+ function literalFloat(value) {
82
+ return {
83
+ type: "literal-float",
84
+ value: value,
85
+ anno: {},
86
+ ...createPhantom(),
87
+ };
88
+ }
89
+ shapes.literalFloat = literalFloat;
90
+ function literalInt(value) {
91
+ return {
92
+ type: "literal-int",
93
+ value: value,
94
+ anno: {},
95
+ ...createPhantom(),
96
+ };
97
+ }
98
+ shapes.literalInt = literalInt;
99
+ function literalNumber(value) {
100
+ return {
101
+ type: "literal-number",
102
+ value: value,
103
+ anno: {},
104
+ ...createPhantom(),
105
+ };
106
+ }
107
+ shapes.literalNumber = literalNumber;
108
+ function literalBool(value) {
109
+ return {
110
+ type: "literal-bool",
111
+ value: value,
112
+ anno: {},
113
+ ...createPhantom(),
114
+ };
115
+ }
116
+ shapes.literalBool = literalBool;
117
+ function literalStr(value) {
118
+ return {
119
+ type: "literal-str",
120
+ value: value,
121
+ anno: {},
122
+ ...createPhantom(),
123
+ };
124
+ }
125
+ shapes.literalStr = literalStr;
126
+ function literal(value) {
127
+ if (typeof value === "number")
128
+ return literalNumber(value);
129
+ if (typeof value === "boolean")
130
+ return literalBool(value);
131
+ return literalStr(value);
132
+ }
133
+ shapes.literal = literal;
134
+ function ref(name, hint) {
135
+ return {
136
+ type: "ref",
137
+ name: name,
138
+ anno: {},
139
+ ...(hint ?
140
+ {
141
+ hint: hint,
142
+ }
143
+ : {}),
144
+ ...createPhantom(),
145
+ };
146
+ }
147
+ shapes.ref = ref;
148
+ function array(item) {
149
+ return {
150
+ type: "array",
151
+ item: item,
152
+ anno: {},
153
+ ...createPhantom(),
154
+ };
155
+ }
156
+ shapes.array = array;
157
+ function tuple(...items) {
158
+ return {
159
+ type: "tuple",
160
+ tup: items,
161
+ anno: {},
162
+ ...createPhantom(),
163
+ };
164
+ }
165
+ shapes.tuple = tuple;
166
+ function mapping(rec) {
167
+ return {
168
+ type: "mapping",
169
+ rec: rec,
170
+ anno: {},
171
+ ...createPhantom(),
172
+ };
173
+ }
174
+ shapes.mapping = mapping;
175
+ function vector(dims) {
176
+ return {
177
+ type: "vector",
178
+ dims: dims,
179
+ anno: {},
180
+ ...createPhantom(),
181
+ };
182
+ }
183
+ shapes.vector = vector;
184
+ function union(...ofs) {
185
+ return {
186
+ type: "union",
187
+ ofs: ofs,
188
+ anno: {},
189
+ ...createPhantom(),
190
+ };
191
+ }
192
+ shapes.union = union;
193
+ })(shapes || (exports.shapes = shapes = {}));
194
+ var annotate;
195
+ (function (annotate) {
196
+ function by(shape, anno) {
197
+ return {
198
+ ...shape,
199
+ anno: {
200
+ ...anno,
201
+ ...shape.anno,
202
+ },
203
+ };
204
+ }
205
+ annotate.by = by;
206
+ function optional(shape) {
207
+ return by(shape, { optional: true });
208
+ }
209
+ annotate.optional = optional;
210
+ function primary(shape) {
211
+ return by(shape, { primary: true });
212
+ }
213
+ annotate.primary = primary;
214
+ function unique(shape) {
215
+ return by(shape, { unique: true });
216
+ }
217
+ annotate.unique = unique;
218
+ function named(shape, name) {
219
+ return by(shape, { name: name });
220
+ }
221
+ annotate.named = named;
222
+ function foreign(shape, shapeName, fieldName) {
223
+ return by(shape, { foreign: { shapeName, fieldName } });
224
+ }
225
+ annotate.foreign = foreign;
226
+ function auto(x, options = {}) {
227
+ if (isShape(x))
228
+ return x;
229
+ if (x === null)
230
+ return shapes.nil();
231
+ if (typeof x === "undefined")
232
+ return shapes.unknown();
233
+ if (typeof x === "number")
234
+ return options.preferLiterals ? shapes.literalNumber(x) : shapes.number();
235
+ if (typeof x === "string")
236
+ return options.preferLiterals ? shapes.literalStr(x) : shapes.str();
237
+ if (typeof x === "boolean")
238
+ return options.preferLiterals ? shapes.literalBool(x) : shapes.bool();
239
+ if (x instanceof Date)
240
+ return shapes.date();
241
+ if (Array.isArray(x)) {
242
+ if (x.length <= 0)
243
+ return shapes.array(shapes.unknown());
244
+ if (x.length === 1)
245
+ return shapes.array(auto(x[0], options));
246
+ const types = new Set(x.map((v) => typeof v));
247
+ return shapes.array(types.size === 1 ?
248
+ auto(x[0], options)
249
+ : shapes.union(...x.map((v) => auto(v, options))));
250
+ }
251
+ if ((0, common_1.isPlainObject)(x)) {
252
+ return shapes.mapping(Object.fromEntries(Object.entries(x).map(([k, v]) => [k, auto(v, options)])));
253
+ }
254
+ return shapes.unknown();
255
+ }
256
+ annotate.auto = auto;
257
+ })(annotate || (exports.annotate = annotate = {}));
258
+ //# sourceMappingURL=shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.js","sourceRoot":"","sources":["../../src/shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./translation";
2
+ export * from "./typescript";
3
+ export * from "./postgres";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/translations/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./translation"), exports);
18
+ __exportStar(require("./typescript"), exports);
19
+ __exportStar(require("./postgres"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/translations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,6CAA2B"}
@@ -0,0 +1,3 @@
1
+ import { TranslationFunc } from "./translation";
2
+ export declare const postgres: TranslationFunc<string>;
3
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/translations/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA+DhD,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,MAAM,CAQ5C,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.postgres = void 0;
4
+ const pgType = (shape) => {
5
+ switch (shape.type) {
6
+ case "int":
7
+ return "INTEGER";
8
+ case "float":
9
+ return "DOUBLE PRECISION";
10
+ case "number":
11
+ return "NUMERIC";
12
+ case "str":
13
+ return "TEXT";
14
+ case "bool":
15
+ return "BOOLEAN";
16
+ case "date":
17
+ return "TIMESTAMPTZ";
18
+ case "nil":
19
+ return "NULL";
20
+ case "unknown":
21
+ return "JSONB";
22
+ case "literal-int":
23
+ case "literal-float":
24
+ case "literal-number":
25
+ return "NUMERIC";
26
+ case "literal-str":
27
+ return "TEXT";
28
+ case "literal-bool":
29
+ return "BOOLEAN";
30
+ case "ref":
31
+ return shape.name;
32
+ case "array": {
33
+ const inner = pgType(shape.item);
34
+ return inner === "JSONB" ? "JSONB" : `${inner}[]`;
35
+ }
36
+ case "tuple":
37
+ return "JSONB";
38
+ case "union":
39
+ return "JSONB";
40
+ case "vector":
41
+ return `vector(${shape.dims})`;
42
+ case "mapping":
43
+ return "JSONB";
44
+ }
45
+ };
46
+ const pgColumnDef = (colName, shape) => {
47
+ const parts = [colName, pgType(shape)];
48
+ if (shape.anno.primary) {
49
+ parts.push("PRIMARY KEY");
50
+ }
51
+ else if (!shape.anno.optional) {
52
+ parts.push("NOT NULL");
53
+ }
54
+ if (shape.anno.unique && !shape.anno.primary) {
55
+ parts.push("UNIQUE");
56
+ }
57
+ if (shape.anno.foreign) {
58
+ parts.push(`REFERENCES ${shape.anno.foreign.shapeName}(${shape.anno.foreign.fieldName})`);
59
+ }
60
+ return parts.join(" ");
61
+ };
62
+ const postgres = (shape) => {
63
+ if (shape.type === "mapping" && shape.anno.name) {
64
+ const cols = Object.entries(shape.rec)
65
+ .map(([k, v]) => ` ${pgColumnDef(k, v)}`)
66
+ .join(",\n");
67
+ return `CREATE TABLE IF NOT EXISTS ${shape.anno.name} (\n${cols}\n)`;
68
+ }
69
+ return pgType(shape);
70
+ };
71
+ exports.postgres = postgres;
72
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../src/translations/postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Shape } from "../shape";
2
+ export type TranslationFunc<T extends any = any> = (shape: Shape) => T;
3
+ //# sourceMappingURL=translation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../../src/translations/translation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.js","sourceRoot":"","sources":["../../../src/translations/translation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { TranslationFunc } from "./translation";
2
+ export declare const typescript: TranslationFunc<string>;
3
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/translations/typescript.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAyIhD,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,MAAM,CAE9C,CAAC"}