ormbridge 0.0.0-stage → 0.3.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.
- package/LICENSE +21 -0
- package/README.md +459 -2
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -0
- package/dist/cliRunner.d.ts +20 -0
- package/dist/cliRunner.js +363 -0
- package/dist/cliRunner.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.js +220 -0
- package/dist/config.js.map +1 -0
- package/dist/convert.d.ts +20 -0
- package/dist/convert.js +61 -0
- package/dist/convert.js.map +1 -0
- package/dist/emitters/django.d.ts +4 -0
- package/dist/emitters/django.js +501 -0
- package/dist/emitters/django.js.map +1 -0
- package/dist/emitters/doctrine.d.ts +20 -0
- package/dist/emitters/doctrine.js +1134 -0
- package/dist/emitters/doctrine.js.map +1 -0
- package/dist/emitters/gorm.d.ts +38 -0
- package/dist/emitters/gorm.js +1507 -0
- package/dist/emitters/gorm.js.map +1 -0
- package/dist/emitters/graphene.d.ts +4 -0
- package/dist/emitters/graphene.js +431 -0
- package/dist/emitters/graphene.js.map +1 -0
- package/dist/emitters/laravel.d.ts +33 -0
- package/dist/emitters/laravel.js +1695 -0
- package/dist/emitters/laravel.js.map +1 -0
- package/dist/emitters/prisma.d.ts +21 -0
- package/dist/emitters/prisma.js +1058 -0
- package/dist/emitters/prisma.js.map +1 -0
- package/dist/emitters/typeorm.d.ts +9 -0
- package/dist/emitters/typeorm.js +838 -0
- package/dist/emitters/typeorm.js.map +1 -0
- package/dist/emitters/typescriptInterfaces.d.ts +15 -0
- package/dist/emitters/typescriptInterfaces.js +350 -0
- package/dist/emitters/typescriptInterfaces.js.map +1 -0
- package/dist/formats.d.ts +82 -0
- package/dist/formats.js +238 -0
- package/dist/formats.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +48 -0
- package/dist/io.js +343 -0
- package/dist/io.js.map +1 -0
- package/dist/ir.d.ts +197 -0
- package/dist/ir.js +10 -0
- package/dist/ir.js.map +1 -0
- package/dist/naming.d.ts +11 -0
- package/dist/naming.js +88 -0
- package/dist/naming.js.map +1 -0
- package/dist/parsers/django.d.ts +14 -0
- package/dist/parsers/django.js +1161 -0
- package/dist/parsers/django.js.map +1 -0
- package/dist/parsers/doctrine.d.ts +12 -0
- package/dist/parsers/doctrine.js +1984 -0
- package/dist/parsers/doctrine.js.map +1 -0
- package/dist/parsers/goSyntax.d.ts +105 -0
- package/dist/parsers/goSyntax.js +435 -0
- package/dist/parsers/goSyntax.js.map +1 -0
- package/dist/parsers/gorm.d.ts +16 -0
- package/dist/parsers/gorm.js +1857 -0
- package/dist/parsers/gorm.js.map +1 -0
- package/dist/parsers/laravel.d.ts +17 -0
- package/dist/parsers/laravel.js +2824 -0
- package/dist/parsers/laravel.js.map +1 -0
- package/dist/parsers/phpSyntax.d.ts +124 -0
- package/dist/parsers/phpSyntax.js +429 -0
- package/dist/parsers/phpSyntax.js.map +1 -0
- package/dist/parsers/prisma.d.ts +12 -0
- package/dist/parsers/prisma.js +964 -0
- package/dist/parsers/prisma.js.map +1 -0
- package/dist/parsers/pythonSyntax.d.ts +38 -0
- package/dist/parsers/pythonSyntax.js +120 -0
- package/dist/parsers/pythonSyntax.js.map +1 -0
- package/dist/parsers/typeorm.d.ts +12 -0
- package/dist/parsers/typeorm.js +1614 -0
- package/dist/parsers/typeorm.js.map +1 -0
- package/dist/parsers/typescriptSyntax.d.ts +57 -0
- package/dist/parsers/typescriptSyntax.js +200 -0
- package/dist/parsers/typescriptSyntax.js.map +1 -0
- package/dist/prismaOnlyConstructs.d.ts +7 -0
- package/dist/prismaOnlyConstructs.js +76 -0
- package/dist/prismaOnlyConstructs.js.map +1 -0
- package/dist/result.d.ts +20 -0
- package/dist/result.js +18 -0
- package/dist/result.js.map +1 -0
- package/dist/transforms.d.ts +13 -0
- package/dist/transforms.js +142 -0
- package/dist/transforms.js.map +1 -0
- package/package.json +83 -4
package/dist/formats.js
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { emitDjango } from './emitters/django.js';
|
|
2
|
+
import { emitDoctrine, isValidPhpNamespace } from './emitters/doctrine.js';
|
|
3
|
+
import { emitGorm, isValidGoPackageName } from './emitters/gorm.js';
|
|
4
|
+
import { emitGraphene } from './emitters/graphene.js';
|
|
5
|
+
import { emitLaravel } from './emitters/laravel.js';
|
|
6
|
+
import { emitPrisma, } from './emitters/prisma.js';
|
|
7
|
+
import { emitTypeorm } from './emitters/typeorm.js';
|
|
8
|
+
import { emitTypescriptInterfaces } from './emitters/typescriptInterfaces.js';
|
|
9
|
+
import { parseDoctrine } from './parsers/doctrine.js';
|
|
10
|
+
import { parseDjango } from './parsers/django.js';
|
|
11
|
+
import { parseGorm } from './parsers/gorm.js';
|
|
12
|
+
import { parseLaravel } from './parsers/laravel.js';
|
|
13
|
+
import { parsePrisma } from './parsers/prisma.js';
|
|
14
|
+
import { parseTypeorm } from './parsers/typeorm.js';
|
|
15
|
+
import { err, ok } from './result.js';
|
|
16
|
+
import { expandManyToMany, normalizeSchema, } from './transforms.js';
|
|
17
|
+
export const DEFAULT_APP_LABEL = 'app';
|
|
18
|
+
const adapters = new Map();
|
|
19
|
+
/** Adds an adapter to the registry. Fails when the name or an extension is already taken. */
|
|
20
|
+
export function registerFormat(adapter) {
|
|
21
|
+
if (adapter.name.trim() === '') {
|
|
22
|
+
return err('INVALID_OPTION', 'A format adapter must have a non-empty name.');
|
|
23
|
+
}
|
|
24
|
+
if (adapters.has(adapter.name)) {
|
|
25
|
+
return err('INVALID_OPTION', `The format "${adapter.name}" is already registered.`);
|
|
26
|
+
}
|
|
27
|
+
for (const extension of adapter.extensions) {
|
|
28
|
+
const owner = getFormatByExtension(extension);
|
|
29
|
+
if (owner !== undefined) {
|
|
30
|
+
return err('INVALID_OPTION', `The extension "${extension}" cannot be used by the format "${adapter.name}" because it is already used by "${owner.name}".`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
adapters.set(adapter.name, adapter);
|
|
34
|
+
return ok(adapter);
|
|
35
|
+
}
|
|
36
|
+
/** Removes an adapter from the registry. Returns false when the name was not registered. */
|
|
37
|
+
export function unregisterFormat(name) {
|
|
38
|
+
return adapters.delete(name);
|
|
39
|
+
}
|
|
40
|
+
/** Looks up a format by name. Returns a descriptive error that lists the valid names. */
|
|
41
|
+
export function getFormat(name) {
|
|
42
|
+
const adapter = adapters.get(name);
|
|
43
|
+
if (adapter === undefined) {
|
|
44
|
+
return err('UNSUPPORTED_CONVERSION', `Unknown format "${name}". Expected one of: ${listFormatNames().join(', ')}.`);
|
|
45
|
+
}
|
|
46
|
+
return ok(adapter);
|
|
47
|
+
}
|
|
48
|
+
/** Returns the adapter that owns a file extension (for example ".py"), or undefined. */
|
|
49
|
+
export function getFormatByExtension(extension) {
|
|
50
|
+
for (const adapter of adapters.values()) {
|
|
51
|
+
if (adapter.extensions.includes(extension)) {
|
|
52
|
+
return adapter;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
/** Returns every registered adapter in registration order. */
|
|
58
|
+
export function listFormats() {
|
|
59
|
+
return [...adapters.values()];
|
|
60
|
+
}
|
|
61
|
+
/** Returns every registered format name in registration order. */
|
|
62
|
+
export function listFormatNames() {
|
|
63
|
+
return [...adapters.keys()];
|
|
64
|
+
}
|
|
65
|
+
/** Builds the text printed by the `formats` command: one line per registered format. */
|
|
66
|
+
export function describeFormats(adapters) {
|
|
67
|
+
const nameWidth = Math.max(...adapters.map((adapter) => adapter.name.length));
|
|
68
|
+
const lines = adapters.map((adapter) => {
|
|
69
|
+
const abilities = [];
|
|
70
|
+
if (adapter.parse !== undefined) {
|
|
71
|
+
abilities.push('read');
|
|
72
|
+
}
|
|
73
|
+
if (adapter.emit !== undefined) {
|
|
74
|
+
abilities.push('write');
|
|
75
|
+
}
|
|
76
|
+
return (`${adapter.name.padEnd(nameWidth)} ` +
|
|
77
|
+
`extensions: ${adapter.extensions.join(', ') || '(none)'} ` +
|
|
78
|
+
`${abilities.join(' + ') || 'no read/write support'} ` +
|
|
79
|
+
adapter.description);
|
|
80
|
+
});
|
|
81
|
+
return `${lines.join('\n')}\n`;
|
|
82
|
+
}
|
|
83
|
+
const djangoAdapter = {
|
|
84
|
+
name: 'django',
|
|
85
|
+
extensions: ['.py'],
|
|
86
|
+
description: 'Django models (models.py or a models/ package)',
|
|
87
|
+
parse: (sources, options) => {
|
|
88
|
+
const djangoSources = sources.map((source) => ({
|
|
89
|
+
path: source.path,
|
|
90
|
+
text: source.text,
|
|
91
|
+
appLabel: options.appLabel ?? source.appLabel ?? DEFAULT_APP_LABEL,
|
|
92
|
+
}));
|
|
93
|
+
return parseDjango(djangoSources, { autoField: options.autoField });
|
|
94
|
+
},
|
|
95
|
+
emit: (schema) => ok(emitDjango(schema)),
|
|
96
|
+
};
|
|
97
|
+
const prismaAdapter = {
|
|
98
|
+
name: 'prisma',
|
|
99
|
+
extensions: ['.prisma'],
|
|
100
|
+
description: 'Prisma schema (schema.prisma)',
|
|
101
|
+
parse: (sources, options) => {
|
|
102
|
+
const prismaSources = sources.map((source) => ({
|
|
103
|
+
path: source.path,
|
|
104
|
+
text: source.text,
|
|
105
|
+
}));
|
|
106
|
+
return Promise.resolve(parsePrisma(prismaSources, {
|
|
107
|
+
appLabel: options.appLabel ?? DEFAULT_APP_LABEL,
|
|
108
|
+
}));
|
|
109
|
+
},
|
|
110
|
+
emit: (schema, options) => {
|
|
111
|
+
const prepared = options.naming === 'normalize'
|
|
112
|
+
? normalizeSchema(schema)
|
|
113
|
+
: expandManyToMany(schema);
|
|
114
|
+
return ok(emitPrisma(prepared, {
|
|
115
|
+
provider: options.provider,
|
|
116
|
+
header: options.header,
|
|
117
|
+
camelFields: options.naming === 'normalize',
|
|
118
|
+
...(options.prismaVersion === undefined
|
|
119
|
+
? {}
|
|
120
|
+
: { prismaVersion: options.prismaVersion }),
|
|
121
|
+
}));
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
const typeormAdapter = {
|
|
125
|
+
name: 'typeorm',
|
|
126
|
+
// No extension is claimed: ".ts" is too generic to infer, so pass --from/--to typeorm.
|
|
127
|
+
extensions: [],
|
|
128
|
+
description: 'TypeORM entity classes (TypeScript)',
|
|
129
|
+
parse: (sources, options) => parseTypeorm(sources.map((source) => ({
|
|
130
|
+
path: source.path,
|
|
131
|
+
text: source.text,
|
|
132
|
+
})), { appLabel: options.appLabel ?? DEFAULT_APP_LABEL }),
|
|
133
|
+
emit: (schema, options) => {
|
|
134
|
+
const prepared = options.naming === 'normalize' ? normalizeSchema(schema) : schema;
|
|
135
|
+
return ok(emitTypeorm(prepared, {
|
|
136
|
+
provider: options.provider,
|
|
137
|
+
camelFields: options.naming === 'normalize',
|
|
138
|
+
}));
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
const grapheneAdapter = {
|
|
142
|
+
name: 'graphene',
|
|
143
|
+
// No extension is claimed: ".py" belongs to Django, so pass --to graphene.
|
|
144
|
+
extensions: [],
|
|
145
|
+
description: 'Graphene (graphene-django) GraphQL schema',
|
|
146
|
+
emit: (schema) => ok(emitGraphene(schema)),
|
|
147
|
+
};
|
|
148
|
+
const typescriptAdapter = {
|
|
149
|
+
name: 'typescript',
|
|
150
|
+
// Output only, and no extension is claimed: TypeORM already reads TypeScript, so pass --to typescript.
|
|
151
|
+
extensions: [],
|
|
152
|
+
description: 'Plain TypeScript interfaces and enums',
|
|
153
|
+
emit: (schema, options) => {
|
|
154
|
+
const prepared = options.naming === 'normalize' ? normalizeSchema(schema) : schema;
|
|
155
|
+
return ok(emitTypescriptInterfaces(prepared, {
|
|
156
|
+
camelFields: options.naming === 'normalize',
|
|
157
|
+
}));
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
const doctrineAdapter = {
|
|
161
|
+
name: 'doctrine',
|
|
162
|
+
// No extension is claimed: ".php" is too generic to infer, so pass --from/--to doctrine.
|
|
163
|
+
extensions: [],
|
|
164
|
+
description: 'Doctrine ORM entities (PHP 8 attributes)',
|
|
165
|
+
parse: (sources, options) => parseDoctrine(sources.map((source) => ({
|
|
166
|
+
path: source.path,
|
|
167
|
+
text: source.text,
|
|
168
|
+
})), { appLabel: options.appLabel ?? DEFAULT_APP_LABEL }),
|
|
169
|
+
emit: (schema, options) => {
|
|
170
|
+
const namespace = options.namespace?.replace(/^\\+|\\+$/g, '');
|
|
171
|
+
if (namespace !== undefined && !isValidPhpNamespace(namespace)) {
|
|
172
|
+
return err('INVALID_OPTION', `Invalid namespace "${options.namespace ?? ''}". Expected a PHP namespace such as App\\Entity.`);
|
|
173
|
+
}
|
|
174
|
+
const prepared = options.naming === 'normalize' ? normalizeSchema(schema) : schema;
|
|
175
|
+
return ok(emitDoctrine(prepared, {
|
|
176
|
+
provider: options.provider,
|
|
177
|
+
camelFields: options.naming === 'normalize',
|
|
178
|
+
...(namespace === undefined ? {} : { namespace }),
|
|
179
|
+
}));
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
const laravelAdapter = {
|
|
183
|
+
name: 'laravel',
|
|
184
|
+
// No extension is claimed: ".php" is too generic to infer, so pass --from/--to laravel.
|
|
185
|
+
extensions: [],
|
|
186
|
+
description: 'Laravel migrations and Eloquent models',
|
|
187
|
+
parse: (sources, options) => parseLaravel(sources.map((source) => ({
|
|
188
|
+
path: source.path,
|
|
189
|
+
text: source.text,
|
|
190
|
+
})), { appLabel: options.appLabel ?? DEFAULT_APP_LABEL }),
|
|
191
|
+
emit: (schema, options) => {
|
|
192
|
+
const namespace = options.namespace?.replace(/^\\+|\\+$/g, '');
|
|
193
|
+
if (namespace !== undefined && !isValidPhpNamespace(namespace)) {
|
|
194
|
+
return err('INVALID_OPTION', `Invalid namespace "${options.namespace ?? ''}". Expected a PHP namespace such as App\\Models.`);
|
|
195
|
+
}
|
|
196
|
+
return ok(emitLaravel(schema, {
|
|
197
|
+
provider: options.provider,
|
|
198
|
+
naming: options.naming,
|
|
199
|
+
...(namespace === undefined ? {} : { namespace }),
|
|
200
|
+
}));
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
const gormAdapter = {
|
|
204
|
+
name: 'gorm',
|
|
205
|
+
// No extension is claimed: ".go" is too generic to infer, so pass --from/--to gorm.
|
|
206
|
+
extensions: [],
|
|
207
|
+
description: 'GORM models (Go structs with gorm tags)',
|
|
208
|
+
parse: (sources, options) => parseGorm(sources.map((source) => ({
|
|
209
|
+
path: source.path,
|
|
210
|
+
text: source.text,
|
|
211
|
+
})), { appLabel: options.appLabel ?? DEFAULT_APP_LABEL }),
|
|
212
|
+
emit: (schema, options) => {
|
|
213
|
+
if (options.goPackage !== undefined &&
|
|
214
|
+
!isValidGoPackageName(options.goPackage)) {
|
|
215
|
+
return err('INVALID_OPTION', `Invalid Go package name "${options.goPackage}". Expected a Go identifier such as models.`);
|
|
216
|
+
}
|
|
217
|
+
return ok(emitGorm(schema, {
|
|
218
|
+
provider: options.provider,
|
|
219
|
+
naming: options.naming,
|
|
220
|
+
...(options.goPackage === undefined
|
|
221
|
+
? {}
|
|
222
|
+
: { goPackage: options.goPackage }),
|
|
223
|
+
}));
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
// The built-in names and extensions are distinct, so these registrations cannot fail.
|
|
227
|
+
const builtIns = [
|
|
228
|
+
registerFormat(djangoAdapter),
|
|
229
|
+
registerFormat(prismaAdapter),
|
|
230
|
+
registerFormat(typeormAdapter),
|
|
231
|
+
registerFormat(doctrineAdapter),
|
|
232
|
+
registerFormat(laravelAdapter),
|
|
233
|
+
registerFormat(gormAdapter),
|
|
234
|
+
registerFormat(grapheneAdapter),
|
|
235
|
+
registerFormat(typescriptAdapter),
|
|
236
|
+
];
|
|
237
|
+
export const BUILT_IN_FORMAT_NAMES = builtIns.flatMap((registered) => registered.ok ? [registered.value.name] : []);
|
|
238
|
+
//# sourceMappingURL=formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export { convertText, DEFAULT_APP_LABEL, FORMAT_NAMES } from './convert.js';
|
|
2
|
+
export type { ConvertOptions, ConvertResult, FormatName, SourceText, } from './convert.js';
|
|
3
|
+
export { describeFormats, getFormat, getFormatByExtension, listFormatNames, listFormats, registerFormat, unregisterFormat, } from './formats.js';
|
|
4
|
+
export type { FormatAdapter, FormatEmitOutput, FormatOptions, MultiFileEmitOutput, } from './formats.js';
|
|
5
|
+
export { runConversion, deriveAppLabel } from './io.js';
|
|
6
|
+
export type { RunOptions, RunSummary } from './io.js';
|
|
7
|
+
export { parseDjango } from './parsers/django.js';
|
|
8
|
+
export type { DjangoSourceFile, DjangoParseOptions } from './parsers/django.js';
|
|
9
|
+
export { parsePrisma } from './parsers/prisma.js';
|
|
10
|
+
export type { PrismaSourceFile, PrismaParseOptions } from './parsers/prisma.js';
|
|
11
|
+
export { parseDoctrine } from './parsers/doctrine.js';
|
|
12
|
+
export type { DoctrineSourceFile, DoctrineParseOptions, } from './parsers/doctrine.js';
|
|
13
|
+
export { parseGorm } from './parsers/gorm.js';
|
|
14
|
+
export type { GormSourceFile, GormParseOptions } from './parsers/gorm.js';
|
|
15
|
+
export { parseLaravel } from './parsers/laravel.js';
|
|
16
|
+
export type { LaravelSourceFile, LaravelParseOptions, } from './parsers/laravel.js';
|
|
17
|
+
export { parseTypeorm } from './parsers/typeorm.js';
|
|
18
|
+
export type { TypeormSourceFile, TypeormParseOptions, } from './parsers/typeorm.js';
|
|
19
|
+
export { emitPrisma, PRISMA_PROVIDERS } from './emitters/prisma.js';
|
|
20
|
+
export type { EmitOutput, PrismaEmitOptions, PrismaProvider, } from './emitters/prisma.js';
|
|
21
|
+
export { emitDjango } from './emitters/django.js';
|
|
22
|
+
export { emitDoctrine } from './emitters/doctrine.js';
|
|
23
|
+
export type { DoctrineEmitOptions } from './emitters/doctrine.js';
|
|
24
|
+
export { emitLaravel } from './emitters/laravel.js';
|
|
25
|
+
export type { LaravelEmitOptions } from './emitters/laravel.js';
|
|
26
|
+
export { emitGorm } from './emitters/gorm.js';
|
|
27
|
+
export type { GormEmitOptions } from './emitters/gorm.js';
|
|
28
|
+
export { emitGraphene } from './emitters/graphene.js';
|
|
29
|
+
export { emitTypeorm } from './emitters/typeorm.js';
|
|
30
|
+
export type { TypeormEmitOptions } from './emitters/typeorm.js';
|
|
31
|
+
export { emitTypescriptInterfaces } from './emitters/typescriptInterfaces.js';
|
|
32
|
+
export type { TypescriptDateMode, TypescriptInterfacesOptions, } from './emitters/typescriptInterfaces.js';
|
|
33
|
+
export { expandManyToMany, normalizeSchema } from './transforms.js';
|
|
34
|
+
export type { NamingMode } from './transforms.js';
|
|
35
|
+
export type * from './ir.js';
|
|
36
|
+
export { err, ok } from './result.js';
|
|
37
|
+
export type { ConversionError, ErrorCode, Result } from './result.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { convertText, DEFAULT_APP_LABEL, FORMAT_NAMES } from './convert.js';
|
|
2
|
+
export { describeFormats, getFormat, getFormatByExtension, listFormatNames, listFormats, registerFormat, unregisterFormat, } from './formats.js';
|
|
3
|
+
export { runConversion, deriveAppLabel } from './io.js';
|
|
4
|
+
export { parseDjango } from './parsers/django.js';
|
|
5
|
+
export { parsePrisma } from './parsers/prisma.js';
|
|
6
|
+
export { parseDoctrine } from './parsers/doctrine.js';
|
|
7
|
+
export { parseGorm } from './parsers/gorm.js';
|
|
8
|
+
export { parseLaravel } from './parsers/laravel.js';
|
|
9
|
+
export { parseTypeorm } from './parsers/typeorm.js';
|
|
10
|
+
export { emitPrisma, PRISMA_PROVIDERS } from './emitters/prisma.js';
|
|
11
|
+
export { emitDjango } from './emitters/django.js';
|
|
12
|
+
export { emitDoctrine } from './emitters/doctrine.js';
|
|
13
|
+
export { emitLaravel } from './emitters/laravel.js';
|
|
14
|
+
export { emitGorm } from './emitters/gorm.js';
|
|
15
|
+
export { emitGraphene } from './emitters/graphene.js';
|
|
16
|
+
export { emitTypeorm } from './emitters/typeorm.js';
|
|
17
|
+
export { emitTypescriptInterfaces } from './emitters/typescriptInterfaces.js';
|
|
18
|
+
export { expandManyToMany, normalizeSchema } from './transforms.js';
|
|
19
|
+
export { err, ok } from './result.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5E,OAAO,EACL,eAAe,EACf,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKpD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAK9E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/io.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type ConvertOptions, type ConvertResult } from './convert.js';
|
|
2
|
+
import { type Result } from './result.js';
|
|
3
|
+
export interface RunOptions extends ConvertOptions {
|
|
4
|
+
/** Files or directories to read. */
|
|
5
|
+
inputs: string[];
|
|
6
|
+
/**
|
|
7
|
+
* Destination. A file path for single-text formats; a directory for formats
|
|
8
|
+
* that yield several files. When omitted the converted text is only returned.
|
|
9
|
+
*/
|
|
10
|
+
output?: string;
|
|
11
|
+
/** Run the whole conversion and report what would be written, without touching the filesystem. */
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
/** Compare the result with the existing output and report differences, without writing. */
|
|
14
|
+
check?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** How a planned output file relates to what is on disk. */
|
|
17
|
+
export type OutputState = 'created' | 'changed' | 'unchanged';
|
|
18
|
+
/** One file the conversion produces, with its relation to the existing file. */
|
|
19
|
+
export interface PlannedFile {
|
|
20
|
+
/** Absolute destination path. */
|
|
21
|
+
path: string;
|
|
22
|
+
text: string;
|
|
23
|
+
bytes: number;
|
|
24
|
+
lines: number;
|
|
25
|
+
state: OutputState;
|
|
26
|
+
/** Short description of the differences for a changed file, such as "+3 -1 lines (first difference at line 12)". */
|
|
27
|
+
diff?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface RunSummary extends ConvertResult {
|
|
30
|
+
inputFiles: string[];
|
|
31
|
+
/** The output path as written: the file for single-text formats, the directory for multi-file formats. */
|
|
32
|
+
outputPath?: string;
|
|
33
|
+
/** Every file planned for the output path. Empty when no output path was given. */
|
|
34
|
+
plannedFiles: PlannedFile[];
|
|
35
|
+
/** True when files were written (never in dry-run or check mode). */
|
|
36
|
+
written: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** Reads the inputs, converts them, and writes the result to the output path when one is given. */
|
|
39
|
+
export declare function runConversion(options: RunOptions): Promise<Result<RunSummary>>;
|
|
40
|
+
/** Counts lines the way an editor does: a trailing newline does not add a line. */
|
|
41
|
+
export declare function countLines(text: string): number;
|
|
42
|
+
/**
|
|
43
|
+
* Describes how two texts differ in a short line, for example
|
|
44
|
+
* "+3 -1 lines (first difference at line 12)".
|
|
45
|
+
*/
|
|
46
|
+
export declare function summarizeDiff(before: string, after: string): string;
|
|
47
|
+
/** Derives a Django app label from the location of a models.py file or models/ package. */
|
|
48
|
+
export declare function deriveAppLabel(filePath: string): string;
|