ormbridge 0.9.0 → 0.10.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 (97) hide show
  1. package/README.md +1 -0
  2. package/dist/cliRunner.js +3 -3
  3. package/dist/cliRunner.js.map +1 -1
  4. package/dist/config.d.ts +2 -2
  5. package/dist/emitters/jpa.d.ts +36 -0
  6. package/dist/emitters/jpa.js +253 -0
  7. package/dist/emitters/jpa.js.map +1 -0
  8. package/dist/emitters/jpaColumns.d.ts +25 -0
  9. package/dist/emitters/jpaColumns.js +341 -0
  10. package/dist/emitters/jpaColumns.js.map +1 -0
  11. package/dist/emitters/jpaDefaults.d.ts +24 -0
  12. package/dist/emitters/jpaDefaults.js +223 -0
  13. package/dist/emitters/jpaDefaults.js.map +1 -0
  14. package/dist/emitters/jpaEnums.d.ts +11 -0
  15. package/dist/emitters/jpaEnums.js +134 -0
  16. package/dist/emitters/jpaEnums.js.map +1 -0
  17. package/dist/emitters/jpaFormat.d.ts +16 -0
  18. package/dist/emitters/jpaFormat.js +73 -0
  19. package/dist/emitters/jpaFormat.js.map +1 -0
  20. package/dist/emitters/jpaKeys.d.ts +25 -0
  21. package/dist/emitters/jpaKeys.js +110 -0
  22. package/dist/emitters/jpaKeys.js.map +1 -0
  23. package/dist/emitters/jpaNames.d.ts +26 -0
  24. package/dist/emitters/jpaNames.js +234 -0
  25. package/dist/emitters/jpaNames.js.map +1 -0
  26. package/dist/emitters/jpaRelations.d.ts +41 -0
  27. package/dist/emitters/jpaRelations.js +304 -0
  28. package/dist/emitters/jpaRelations.js.map +1 -0
  29. package/dist/emitters/jpaRender.d.ts +10 -0
  30. package/dist/emitters/jpaRender.js +81 -0
  31. package/dist/emitters/jpaRender.js.map +1 -0
  32. package/dist/emitters/jpaScalars.d.ts +32 -0
  33. package/dist/emitters/jpaScalars.js +188 -0
  34. package/dist/emitters/jpaScalars.js.map +1 -0
  35. package/dist/emitters/jpaTable.d.ts +10 -0
  36. package/dist/emitters/jpaTable.js +109 -0
  37. package/dist/emitters/jpaTable.js.map +1 -0
  38. package/dist/emitters/jpaTypes.d.ts +85 -0
  39. package/dist/emitters/jpaTypes.js +36 -0
  40. package/dist/emitters/jpaTypes.js.map +1 -0
  41. package/dist/formats.d.ts +3 -2
  42. package/dist/formats.js +34 -0
  43. package/dist/formats.js.map +1 -1
  44. package/dist/index.d.ts +4 -0
  45. package/dist/index.js +2 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/io.js +27 -1
  48. package/dist/io.js.map +1 -1
  49. package/dist/parsers/javaSyntax.d.ts +120 -0
  50. package/dist/parsers/javaSyntax.js +304 -0
  51. package/dist/parsers/javaSyntax.js.map +1 -0
  52. package/dist/parsers/javaValues.d.ts +5 -0
  53. package/dist/parsers/javaValues.js +187 -0
  54. package/dist/parsers/javaValues.js.map +1 -0
  55. package/dist/parsers/jpa.d.ts +17 -0
  56. package/dist/parsers/jpa.js +131 -0
  57. package/dist/parsers/jpa.js.map +1 -0
  58. package/dist/parsers/jpaAnnotations.d.ts +46 -0
  59. package/dist/parsers/jpaAnnotations.js +156 -0
  60. package/dist/parsers/jpaAnnotations.js.map +1 -0
  61. package/dist/parsers/jpaBuild.d.ts +4 -0
  62. package/dist/parsers/jpaBuild.js +297 -0
  63. package/dist/parsers/jpaBuild.js.map +1 -0
  64. package/dist/parsers/jpaClasses.d.ts +27 -0
  65. package/dist/parsers/jpaClasses.js +257 -0
  66. package/dist/parsers/jpaClasses.js.map +1 -0
  67. package/dist/parsers/jpaCollections.d.ts +12 -0
  68. package/dist/parsers/jpaCollections.js +106 -0
  69. package/dist/parsers/jpaCollections.js.map +1 -0
  70. package/dist/parsers/jpaColumns.d.ts +26 -0
  71. package/dist/parsers/jpaColumns.js +361 -0
  72. package/dist/parsers/jpaColumns.js.map +1 -0
  73. package/dist/parsers/jpaEntities.d.ts +9 -0
  74. package/dist/parsers/jpaEntities.js +181 -0
  75. package/dist/parsers/jpaEntities.js.map +1 -0
  76. package/dist/parsers/jpaIndexes.d.ts +12 -0
  77. package/dist/parsers/jpaIndexes.js +87 -0
  78. package/dist/parsers/jpaIndexes.js.map +1 -0
  79. package/dist/parsers/jpaJoins.d.ts +68 -0
  80. package/dist/parsers/jpaJoins.js +131 -0
  81. package/dist/parsers/jpaJoins.js.map +1 -0
  82. package/dist/parsers/jpaModel.d.ts +73 -0
  83. package/dist/parsers/jpaModel.js +2 -0
  84. package/dist/parsers/jpaModel.js.map +1 -0
  85. package/dist/parsers/jpaNotes.d.ts +20 -0
  86. package/dist/parsers/jpaNotes.js +138 -0
  87. package/dist/parsers/jpaNotes.js.map +1 -0
  88. package/dist/parsers/jpaRelations.d.ts +4 -0
  89. package/dist/parsers/jpaRelations.js +242 -0
  90. package/dist/parsers/jpaRelations.js.map +1 -0
  91. package/dist/parsers/jpaTypes.d.ts +23 -0
  92. package/dist/parsers/jpaTypes.js +232 -0
  93. package/dist/parsers/jpaTypes.js.map +1 -0
  94. package/dist/styles.d.ts +3 -2
  95. package/dist/styles.js +4 -1
  96. package/dist/styles.js.map +1 -1
  97. package/package.json +8 -1
@@ -0,0 +1,232 @@
1
+ /** Java types that are not objects: their columns are NOT NULL. */
2
+ const PRIMITIVES = new Set([
3
+ 'int',
4
+ 'long',
5
+ 'short',
6
+ 'byte',
7
+ 'boolean',
8
+ 'float',
9
+ 'double',
10
+ 'char',
11
+ ]);
12
+ export function isPrimitive(type) {
13
+ return type.arrayDepth === 0 && PRIMITIVES.has(type.name);
14
+ }
15
+ const INTEGER_TYPES = new Set([
16
+ 'int',
17
+ 'Integer',
18
+ 'short',
19
+ 'Short',
20
+ 'byte',
21
+ 'Byte',
22
+ 'long',
23
+ 'Long',
24
+ ]);
25
+ /** True for the integer types an identity or sequence key can have. */
26
+ export function isIntegerType(type) {
27
+ return type.arrayDepth === 0 && INTEGER_TYPES.has(type.name);
28
+ }
29
+ const COLLECTIONS = new Set([
30
+ 'List',
31
+ 'Set',
32
+ 'Collection',
33
+ 'SortedSet',
34
+ 'NavigableSet',
35
+ 'ArrayList',
36
+ 'LinkedList',
37
+ 'HashSet',
38
+ 'LinkedHashSet',
39
+ 'TreeSet',
40
+ 'Iterable',
41
+ ]);
42
+ export function isCollectionType(type) {
43
+ return type.arrayDepth === 0 && COLLECTIONS.has(type.name);
44
+ }
45
+ export function isMapType(type) {
46
+ return (type.arrayDepth === 0 &&
47
+ /^(Map|HashMap|LinkedHashMap|TreeMap|SortedMap|SortedMap)$/.test(type.name));
48
+ }
49
+ /** The element type of a collection or array, or undefined for other types. */
50
+ export function elementOf(type) {
51
+ if (type.arrayDepth > 0) {
52
+ return { ...type, arrayDepth: type.arrayDepth - 1 };
53
+ }
54
+ return isCollectionType(type) ? type.args[0] : undefined;
55
+ }
56
+ const SIMPLE_SHAPES = {
57
+ String: { type: 'string', maxLength: 255 },
58
+ char: { type: 'string', maxLength: 1 },
59
+ Character: { type: 'string', maxLength: 1 },
60
+ int: { type: 'int' },
61
+ Integer: { type: 'int' },
62
+ short: { type: 'int' },
63
+ Short: { type: 'int' },
64
+ byte: { type: 'int' },
65
+ Byte: { type: 'int' },
66
+ long: { type: 'bigInt' },
67
+ Long: { type: 'bigInt' },
68
+ BigInteger: { type: 'decimal', maxDigits: 38, decimalPlaces: 0 },
69
+ BigDecimal: { type: 'decimal', maxDigits: 38, decimalPlaces: 2 },
70
+ float: { type: 'float' },
71
+ Float: { type: 'float' },
72
+ double: { type: 'float' },
73
+ Double: { type: 'float' },
74
+ boolean: { type: 'boolean' },
75
+ Boolean: { type: 'boolean' },
76
+ LocalDate: { type: 'date' },
77
+ LocalTime: { type: 'time' },
78
+ OffsetTime: { type: 'time' },
79
+ LocalDateTime: { type: 'dateTime' },
80
+ OffsetDateTime: { type: 'dateTime' },
81
+ ZonedDateTime: { type: 'dateTime' },
82
+ Instant: { type: 'dateTime' },
83
+ Timestamp: { type: 'dateTime' },
84
+ Calendar: { type: 'dateTime' },
85
+ GregorianCalendar: { type: 'dateTime' },
86
+ Duration: { type: 'duration' },
87
+ UUID: { type: 'uuid' },
88
+ Blob: { type: 'bytes' },
89
+ Clob: { type: 'text' },
90
+ NClob: { type: 'text' },
91
+ Locale: { type: 'string', maxLength: 255 },
92
+ Currency: { type: 'string', maxLength: 255 },
93
+ TimeZone: { type: 'string', maxLength: 255 },
94
+ ZoneId: { type: 'string', maxLength: 255 },
95
+ URL: { type: 'string', maxLength: 255 },
96
+ Class: { type: 'string', maxLength: 255 },
97
+ InetAddress: { type: 'ipAddress' },
98
+ JsonNode: { type: 'json' },
99
+ ObjectNode: { type: 'json' },
100
+ ArrayNode: { type: 'json' },
101
+ JsonObject: { type: 'json' },
102
+ };
103
+ /**
104
+ * The column a Java type maps to by default, or undefined when JPA has no default for it (a class of your own,
105
+ * `Object`, a `Map`). `imports` tells `java.sql.Date` from `java.util.Date`.
106
+ */
107
+ export function javaColumn(type, imports) {
108
+ if (type.arrayDepth === 1 && /^(byte|Byte)$/.test(type.name)) {
109
+ return { type: 'bytes' };
110
+ }
111
+ if (type.arrayDepth === 1 && type.name === 'char') {
112
+ return { type: 'string', maxLength: 255 };
113
+ }
114
+ if (type.arrayDepth > 0) {
115
+ const inner = javaColumn({ ...type, arrayDepth: 0 }, imports);
116
+ return inner === undefined
117
+ ? undefined
118
+ : { ...inner, arrayDepth: type.arrayDepth };
119
+ }
120
+ if (type.name === 'Date') {
121
+ return imports.includes('java.sql.Date') || type.text === 'java.sql.Date'
122
+ ? { type: 'date' }
123
+ : { type: 'dateTime' };
124
+ }
125
+ if (type.name === 'Time') {
126
+ return { type: 'time' };
127
+ }
128
+ const shape = SIMPLE_SHAPES[type.name];
129
+ if (shape !== undefined) {
130
+ return shape;
131
+ }
132
+ if (isCollectionType(type) && type.args.length === 1) {
133
+ const inner = type.args[0];
134
+ const column = inner === undefined ? undefined : javaColumn(inner, imports);
135
+ return column === undefined || column.arrayDepth !== undefined
136
+ ? undefined
137
+ : { ...column, arrayDepth: 1 };
138
+ }
139
+ return undefined;
140
+ }
141
+ /** The column type `@Temporal` selects. */
142
+ export function temporalColumn(kind) {
143
+ switch (kind) {
144
+ case 'DATE':
145
+ return { type: 'date' };
146
+ case 'TIME':
147
+ return { type: 'time' };
148
+ case 'TIMESTAMP':
149
+ return { type: 'dateTime' };
150
+ default:
151
+ return undefined;
152
+ }
153
+ }
154
+ /** The IR type for a `SqlTypes.*` constant of `@JdbcTypeCode`; undefined when it is not one the model knows. */
155
+ export function jdbcTypeColumn(name) {
156
+ switch (name) {
157
+ case 'JSON':
158
+ case 'JSON_ARRAY':
159
+ return { type: 'json' };
160
+ case 'UUID':
161
+ return { type: 'uuid' };
162
+ case 'BLOB':
163
+ case 'BINARY':
164
+ case 'VARBINARY':
165
+ case 'LONGVARBINARY':
166
+ case 'LONG32VARBINARY':
167
+ return { type: 'bytes' };
168
+ case 'CLOB':
169
+ case 'NCLOB':
170
+ case 'LONGVARCHAR':
171
+ case 'LONGNVARCHAR':
172
+ case 'LONG32VARCHAR':
173
+ case 'LONG32NVARCHAR':
174
+ return { type: 'text' };
175
+ case 'VARCHAR':
176
+ case 'NVARCHAR':
177
+ case 'CHAR':
178
+ case 'NCHAR':
179
+ return { type: 'string', maxLength: 255 };
180
+ case 'INTEGER':
181
+ case 'SMALLINT':
182
+ case 'TINYINT':
183
+ return { type: 'int' };
184
+ case 'BIGINT':
185
+ return { type: 'bigInt' };
186
+ case 'BOOLEAN':
187
+ case 'BIT':
188
+ return { type: 'boolean' };
189
+ case 'DECIMAL':
190
+ case 'NUMERIC':
191
+ return { type: 'decimal', maxDigits: 38, decimalPlaces: 2 };
192
+ case 'FLOAT':
193
+ case 'REAL':
194
+ case 'DOUBLE':
195
+ return { type: 'float' };
196
+ case 'DATE':
197
+ return { type: 'date' };
198
+ case 'TIME':
199
+ return { type: 'time' };
200
+ case 'TIMESTAMP':
201
+ case 'TIMESTAMP_WITH_TIMEZONE':
202
+ case 'TIMESTAMP_UTC':
203
+ return { type: 'dateTime' };
204
+ case 'INTERVAL_SECOND':
205
+ return { type: 'duration' };
206
+ case 'INET':
207
+ return { type: 'ipAddress' };
208
+ default:
209
+ return undefined;
210
+ }
211
+ }
212
+ const ON_DELETE = {
213
+ CASCADE: 'cascade',
214
+ SET_NULL: 'setNull',
215
+ SET_DEFAULT: 'setDefault',
216
+ RESTRICT: 'restrict',
217
+ NO_ACTION: 'noAction',
218
+ };
219
+ /** Maps a Hibernate `OnDeleteAction` constant to the referential action. */
220
+ export function onDeleteAction(name) {
221
+ return ON_DELETE[name];
222
+ }
223
+ /** Lower-cases the first letter: `Post` is `post`, `URL` stays `URL`. */
224
+ export function decapitalize(name) {
225
+ if (name.length > 1 && name[0] === name[0]?.toUpperCase()) {
226
+ if (name[1] === name[1]?.toUpperCase() && /[A-Za-z]/.test(name[1] ?? '')) {
227
+ return name;
228
+ }
229
+ }
230
+ return name.charAt(0).toLowerCase() + name.slice(1);
231
+ }
232
+ //# sourceMappingURL=jpaTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jpaTypes.js","sourceRoot":"","sources":["../../src/parsers/jpaTypes.ts"],"names":[],"mappings":"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"}
package/dist/styles.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { type EfcoreStyle } from './emitters/efcore.js';
2
+ import { type JpaStyle } from './emitters/jpa.js';
2
3
  import { type SequelizeStyle } from './emitters/sequelize.js';
3
4
  import { type SqlAlchemyStyle } from './emitters/sqlalchemy.js';
4
5
  import { type Result } from './result.js';
5
6
  /** Every value `--style` accepts; which ones apply depends on the target format. */
6
- export type OutputStyle = SqlAlchemyStyle | SequelizeStyle | EfcoreStyle;
7
+ export type OutputStyle = SqlAlchemyStyle | SequelizeStyle | EfcoreStyle | JpaStyle;
7
8
  /** Every style of every format, in the order the help lists them. */
8
9
  export declare const OUTPUT_STYLES: readonly OutputStyle[];
9
10
  /** True when a value is a style of some format. */
@@ -12,7 +13,7 @@ export declare function isOutputStyle(value: string): value is OutputStyle;
12
13
  export declare function stylesOf(format: string): readonly OutputStyle[] | undefined;
13
14
  /**
14
15
  * Checks a `--style` value against the target format. A format with styles accepts only its own
15
- * (`sqlalchemy`, `sqlmodel` for SQLAlchemy; `init`, `define` for Sequelize; `annotations`, `fluent` for EF Core). Any other format
16
+ * (`sqlalchemy`, `sqlmodel` for SQLAlchemy; `init`, `define` for Sequelize; `annotations`, `fluent` for EF Core; `jakarta`, `javax` for JPA). Any other format
16
17
  * ignores the option, so it accepts every known style but still rejects values nobody knows.
17
18
  */
18
19
  export declare function checkStyle(format: string, value: string, label?: string): Result<OutputStyle>;
package/dist/styles.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { EFCORE_STYLES } from './emitters/efcore.js';
2
+ import { JPA_STYLES } from './emitters/jpa.js';
2
3
  import { SEQUELIZE_STYLES } from './emitters/sequelize.js';
3
4
  import { SQLALCHEMY_STYLES, } from './emitters/sqlalchemy.js';
4
5
  import { err, ok } from './result.js';
@@ -7,12 +8,14 @@ const STYLES_BY_FORMAT = {
7
8
  sqlalchemy: SQLALCHEMY_STYLES,
8
9
  sequelize: SEQUELIZE_STYLES,
9
10
  efcore: EFCORE_STYLES,
11
+ jpa: JPA_STYLES,
10
12
  };
11
13
  /** Every style of every format, in the order the help lists them. */
12
14
  export const OUTPUT_STYLES = [
13
15
  ...SQLALCHEMY_STYLES,
14
16
  ...SEQUELIZE_STYLES,
15
17
  ...EFCORE_STYLES,
18
+ ...JPA_STYLES,
16
19
  ];
17
20
  /** True when a value is a style of some format. */
18
21
  export function isOutputStyle(value) {
@@ -24,7 +27,7 @@ export function stylesOf(format) {
24
27
  }
25
28
  /**
26
29
  * Checks a `--style` value against the target format. A format with styles accepts only its own
27
- * (`sqlalchemy`, `sqlmodel` for SQLAlchemy; `init`, `define` for Sequelize; `annotations`, `fluent` for EF Core). Any other format
30
+ * (`sqlalchemy`, `sqlmodel` for SQLAlchemy; `init`, `define` for Sequelize; `annotations`, `fluent` for EF Core; `jakarta`, `javax` for JPA). Any other format
28
31
  * ignores the option, so it accepts every known style but still rejects values nobody knows.
29
32
  */
30
33
  export function checkStyle(format, value, label = '--style value') {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAKnD,sEAAsE;AACtE,MAAM,gBAAgB,GAAqD;IACzE,UAAU,EAAE,iBAAiB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,aAAa;CACtB,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,GAAG,iBAAiB;IACpB,GAAG,gBAAgB;IACnB,GAAG,aAAa;CACjB,CAAC;AAEF,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAQ,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,KAAa,EACb,QAAgB,eAAe;IAE/B,MAAM,GAAG,GAAuC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAoB,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC,KAAoB,CAAC;YAC1B,CAAC,CAAC,GAAG,CACD,gBAAgB,EAChB,WAAW,KAAK,KAAK,KAAK,aAAa,MAAM,6BAA6B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5F,CAAC;IACR,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACX,CAAC,CAAC,GAAG,CACD,gBAAgB,EAChB,WAAW,KAAK,KAAK,KAAK,uBAAuB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,CAC1F,gBAAgB,CACjB;aACE,GAAG,CACF,CAAC,CAAC,IAAI,EAAE,MAAM,CAAmC,EAAE,EAAE,CACnD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CACrC;aACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAMnD,sEAAsE;AACtE,MAAM,gBAAgB,GAAqD;IACzE,UAAU,EAAE,iBAAiB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,aAAa;IACrB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,GAAG,iBAAiB;IACpB,GAAG,gBAAgB;IACnB,GAAG,aAAa;IAChB,GAAG,UAAU;CACd,CAAC;AAEF,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAQ,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,KAAa,EACb,QAAgB,eAAe;IAE/B,MAAM,GAAG,GAAuC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAoB,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC,KAAoB,CAAC;YAC1B,CAAC,CAAC,GAAG,CACD,gBAAgB,EAChB,WAAW,KAAK,KAAK,KAAK,aAAa,MAAM,6BAA6B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5F,CAAC;IACR,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACX,CAAC,CAAC,GAAG,CACD,gBAAgB,EAChB,WAAW,KAAK,KAAK,KAAK,uBAAuB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,CAC1F,gBAAgB,CACjB;aACE,GAAG,CACF,CAAC,CAAC,IAAI,EAAE,MAAM,CAAmC,EAAE,EAAE,CACnD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CACrC;aACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,CAAC;AACR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ormbridge",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Convert ORM models between frameworks and languages (Django, Prisma, TypeORM, Doctrine, Laravel). Define your data model once and share typed schemas across your stack.",
5
5
  "author": {
6
6
  "name": "Richard McQuiston",
@@ -55,6 +55,9 @@
55
55
  "drizzle",
56
56
  "sequelize",
57
57
  "efcore",
58
+ "hibernate",
59
+ "jpa",
60
+ "java",
58
61
  "entity-framework",
59
62
  "graphene",
60
63
  "doctrine",
@@ -87,5 +90,9 @@
87
90
  "homepage": "https://github.com/RichardMcQuiston01/ormbridge#readme",
88
91
  "bugs": {
89
92
  "url": "https://github.com/RichardMcQuiston01/ormbridge/issues"
93
+ },
94
+ "funding": {
95
+ "type": "individual",
96
+ "url": "https://donate.stripe.com/00w5kD3Gj1Xo9v7gVOcs800"
90
97
  }
91
98
  }