@an5/orm 1.0.8 → 1.1.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/README.md +174 -175
- package/dist/an5Metadata.js +64 -0
- package/dist/an5Orm.d.ts +92 -3
- package/dist/an5Orm.js +697 -206
- package/dist/config.d.ts +9 -1
- package/dist/config.js +13 -18
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -1
- package/dist/generator/src/api.d.ts +35 -0
- package/dist/generator/src/api.js +58 -0
- package/dist/generator/src/code-generator.d.ts +14 -13
- package/dist/generator/src/code-generator.js +249 -225
- package/dist/generator/src/config.d.ts +162 -0
- package/dist/generator/src/config.js +354 -0
- package/dist/generator/src/dialect.d.ts +88 -0
- package/dist/generator/src/dialect.js +318 -0
- package/dist/generator/src/dotnet-generator.d.ts +21 -11
- package/dist/generator/src/dotnet-generator.js +1053 -546
- package/dist/generator/src/field-types.d.ts +96 -0
- package/dist/generator/src/field-types.js +433 -0
- package/dist/generator/src/golang-generator.d.ts +36 -0
- package/dist/generator/src/golang-generator.js +1229 -0
- package/dist/generator/src/index.d.ts +1 -1
- package/dist/generator/src/index.js +137 -88
- package/dist/generator/src/metadata-generator.d.ts +11 -8
- package/dist/generator/src/metadata-generator.js +105 -90
- package/dist/generator/src/parser.d.ts +37 -11
- package/dist/generator/src/parser.js +208 -206
- package/dist/generator/src/push-apply.d.ts +37 -0
- package/dist/generator/src/push-apply.js +109 -0
- package/dist/generator/src/push-schema.d.ts +93 -0
- package/dist/generator/src/push-schema.js +189 -0
- package/dist/generator/src/python-generator.d.ts +37 -9
- package/dist/generator/src/python-generator.js +428 -105
- package/dist/generator/src/rust-generator.d.ts +38 -0
- package/dist/generator/src/rust-generator.js +971 -0
- package/dist/generator/src/suggest.d.ts +17 -0
- package/dist/generator/src/suggest.js +45 -0
- package/dist/generator/src/type-kinds.d.ts +27 -0
- package/dist/generator/src/type-kinds.js +72 -0
- package/dist/generator/src/types.d.ts +60 -27
- package/dist/generator/src/types.js +41 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +19 -8
- package/dist/logger.js +1 -1
- package/dist/migration-core.d.ts +102 -0
- package/dist/migration-core.js +731 -0
- package/dist/orm.d.ts +147 -0
- package/dist/orm.js +1654 -0
- package/dist/provider-support.d.ts +27 -0
- package/dist/provider-support.js +50 -0
- package/dist/scripts/release-cli.d.ts +2 -2
- package/dist/scripts/release-cli.js +115 -115
- package/dist/sql-utils.d.ts +3 -1
- package/dist/sql-utils.js +94 -24
- package/generator/src/api.ts +45 -0
- package/generator/src/code-generator.ts +259 -230
- package/generator/src/config.ts +496 -0
- package/generator/src/dialect.ts +415 -0
- package/generator/src/dotnet-generator.ts +1071 -544
- package/generator/src/field-types.ts +473 -0
- package/generator/src/golang-generator.ts +1267 -0
- package/generator/src/index.ts +146 -116
- package/generator/src/metadata-generator.ts +116 -101
- package/generator/src/parser.ts +234 -202
- package/generator/src/push-apply.ts +148 -0
- package/generator/src/push-schema.ts +250 -0
- package/generator/src/python-generator.ts +480 -114
- package/generator/src/rust-generator.ts +974 -0
- package/generator/src/suggest.ts +41 -0
- package/generator/src/type-kinds.ts +78 -0
- package/generator/src/types.ts +77 -29
- package/package.json +32 -6
package/dist/config.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Configuration for an5Orm
|
|
3
|
+
*
|
|
4
|
+
* Re-exported from the generator so the CLI commands and the generator agree on
|
|
5
|
+
* one config shape. These files used to load an5Orm.config.js themselves with
|
|
6
|
+
* `any`, which meant the four of them could disagree about what was valid.
|
|
7
|
+
*/
|
|
8
|
+
export { loadConfig, validateConfig, resolveOutputs, resolveConnectionString, formatIssues, ConfigError, DEFAULT_CONFIG, } from './generator/src/config';
|
|
9
|
+
export type { An5OrmConfig, TypeScriptOutput, ResolvedOutputs, LoadedConfig, ConfigIssue, } from './generator/src/config';
|
|
2
10
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.js
CHANGED
|
@@ -1,24 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
3
|
+
exports.DEFAULT_CONFIG = exports.ConfigError = exports.formatIssues = exports.resolveConnectionString = exports.resolveOutputs = exports.validateConfig = exports.loadConfig = void 0;
|
|
7
4
|
/**
|
|
8
5
|
* Workspace Configuration for an5Orm
|
|
9
|
-
*
|
|
6
|
+
*
|
|
7
|
+
* Re-exported from the generator so the CLI commands and the generator agree on
|
|
8
|
+
* one config shape. These files used to load an5Orm.config.js themselves with
|
|
9
|
+
* `any`, which meant the four of them could disagree about what was valid.
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
exports.
|
|
19
|
-
...workspaceConfig,
|
|
20
|
-
llm: workspaceConfig.llm || {
|
|
21
|
-
providers: [],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
11
|
+
var config_1 = require("./generator/src/config");
|
|
12
|
+
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
|
|
13
|
+
Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return config_1.validateConfig; } });
|
|
14
|
+
Object.defineProperty(exports, "resolveOutputs", { enumerable: true, get: function () { return config_1.resolveOutputs; } });
|
|
15
|
+
Object.defineProperty(exports, "resolveConnectionString", { enumerable: true, get: function () { return config_1.resolveConnectionString; } });
|
|
16
|
+
Object.defineProperty(exports, "formatIssues", { enumerable: true, get: function () { return config_1.formatIssues; } });
|
|
17
|
+
Object.defineProperty(exports, "ConfigError", { enumerable: true, get: function () { return config_1.ConfigError; } });
|
|
18
|
+
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return config_1.DEFAULT_CONFIG; } });
|
|
24
19
|
//# sourceMappingURL=config.js.map
|
package/dist/errors.d.ts
CHANGED
package/dist/errors.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.An5ClientKnownRequestError = void 0;
|
|
9
9
|
class An5ClientKnownRequestError extends Error {
|
|
10
|
-
constructor(message, { code
|
|
10
|
+
constructor(message, { code }) {
|
|
11
11
|
super(message);
|
|
12
12
|
this.code = code;
|
|
13
13
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-effect-free entrypoint for programmatic use of the code generator.
|
|
3
|
+
*
|
|
4
|
+
* Importing `./index` runs the CLI (`main()`), so tooling that wants to drive
|
|
5
|
+
* the generator in-process — such as the an5Agent `generateClientCode` tool —
|
|
6
|
+
* imports this module instead.
|
|
7
|
+
*
|
|
8
|
+
* The provider is optional and defaults to SQL Server. Pass one derived from
|
|
9
|
+
* the connection string when the schema targets another database, so field
|
|
10
|
+
* types are checked against that database's types — `providerForProject` reads
|
|
11
|
+
* it from the config file for callers that only know the project directory:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { SchemaParser, RustGenerator, providerForProject } from '@an5/orm/generator';
|
|
15
|
+
*
|
|
16
|
+
* const provider = providerForProject(__dirname);
|
|
17
|
+
* const models = await new SchemaParser('an5Schema', provider).parse();
|
|
18
|
+
* new RustGenerator('an5Client/rust').generate(models);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export { SchemaParser, sqlTypeToTs } from './parser';
|
|
22
|
+
export { CodeGenerator } from './code-generator';
|
|
23
|
+
export { MetadataGenerator } from './metadata-generator';
|
|
24
|
+
export { PythonGenerator } from './python-generator';
|
|
25
|
+
export { DotnetGenerator } from './dotnet-generator';
|
|
26
|
+
export { GolangGenerator } from './golang-generator';
|
|
27
|
+
export { RustGenerator } from './rust-generator';
|
|
28
|
+
export { detectProvider, providerFromConfig, providerForProject } from './config';
|
|
29
|
+
export { dialectFor, defaultClause, sqlLiteral } from './dialect';
|
|
30
|
+
export { fieldKind } from './type-kinds';
|
|
31
|
+
export type { FieldKind } from './type-kinds';
|
|
32
|
+
export type { ColumnSpec, PushDialect } from './dialect';
|
|
33
|
+
export { DEFAULT_PROVIDER, FieldTypeError, PROVIDERS, PROVIDER_FIELD_TYPES, PROVIDER_LABELS, defaultSqlTypeForTs, fieldTypesFor, resolveFieldType, unknownFieldTypeMessage, } from './field-types';
|
|
34
|
+
export type { FieldTypeIssue, Provider, TsType } from './field-types';
|
|
35
|
+
export type { Model, Field, Relation } from './types';
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unknownFieldTypeMessage = exports.resolveFieldType = exports.fieldTypesFor = exports.defaultSqlTypeForTs = exports.PROVIDER_LABELS = exports.PROVIDER_FIELD_TYPES = exports.PROVIDERS = exports.FieldTypeError = exports.DEFAULT_PROVIDER = exports.fieldKind = exports.sqlLiteral = exports.defaultClause = exports.dialectFor = exports.providerForProject = exports.providerFromConfig = exports.detectProvider = exports.RustGenerator = exports.GolangGenerator = exports.DotnetGenerator = exports.PythonGenerator = exports.MetadataGenerator = exports.CodeGenerator = exports.sqlTypeToTs = exports.SchemaParser = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Side-effect-free entrypoint for programmatic use of the code generator.
|
|
6
|
+
*
|
|
7
|
+
* Importing `./index` runs the CLI (`main()`), so tooling that wants to drive
|
|
8
|
+
* the generator in-process — such as the an5Agent `generateClientCode` tool —
|
|
9
|
+
* imports this module instead.
|
|
10
|
+
*
|
|
11
|
+
* The provider is optional and defaults to SQL Server. Pass one derived from
|
|
12
|
+
* the connection string when the schema targets another database, so field
|
|
13
|
+
* types are checked against that database's types — `providerForProject` reads
|
|
14
|
+
* it from the config file for callers that only know the project directory:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { SchemaParser, RustGenerator, providerForProject } from '@an5/orm/generator';
|
|
18
|
+
*
|
|
19
|
+
* const provider = providerForProject(__dirname);
|
|
20
|
+
* const models = await new SchemaParser('an5Schema', provider).parse();
|
|
21
|
+
* new RustGenerator('an5Client/rust').generate(models);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
var parser_1 = require("./parser");
|
|
25
|
+
Object.defineProperty(exports, "SchemaParser", { enumerable: true, get: function () { return parser_1.SchemaParser; } });
|
|
26
|
+
Object.defineProperty(exports, "sqlTypeToTs", { enumerable: true, get: function () { return parser_1.sqlTypeToTs; } });
|
|
27
|
+
var code_generator_1 = require("./code-generator");
|
|
28
|
+
Object.defineProperty(exports, "CodeGenerator", { enumerable: true, get: function () { return code_generator_1.CodeGenerator; } });
|
|
29
|
+
var metadata_generator_1 = require("./metadata-generator");
|
|
30
|
+
Object.defineProperty(exports, "MetadataGenerator", { enumerable: true, get: function () { return metadata_generator_1.MetadataGenerator; } });
|
|
31
|
+
var python_generator_1 = require("./python-generator");
|
|
32
|
+
Object.defineProperty(exports, "PythonGenerator", { enumerable: true, get: function () { return python_generator_1.PythonGenerator; } });
|
|
33
|
+
var dotnet_generator_1 = require("./dotnet-generator");
|
|
34
|
+
Object.defineProperty(exports, "DotnetGenerator", { enumerable: true, get: function () { return dotnet_generator_1.DotnetGenerator; } });
|
|
35
|
+
var golang_generator_1 = require("./golang-generator");
|
|
36
|
+
Object.defineProperty(exports, "GolangGenerator", { enumerable: true, get: function () { return golang_generator_1.GolangGenerator; } });
|
|
37
|
+
var rust_generator_1 = require("./rust-generator");
|
|
38
|
+
Object.defineProperty(exports, "RustGenerator", { enumerable: true, get: function () { return rust_generator_1.RustGenerator; } });
|
|
39
|
+
var config_1 = require("./config");
|
|
40
|
+
Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return config_1.detectProvider; } });
|
|
41
|
+
Object.defineProperty(exports, "providerFromConfig", { enumerable: true, get: function () { return config_1.providerFromConfig; } });
|
|
42
|
+
Object.defineProperty(exports, "providerForProject", { enumerable: true, get: function () { return config_1.providerForProject; } });
|
|
43
|
+
var dialect_1 = require("./dialect");
|
|
44
|
+
Object.defineProperty(exports, "dialectFor", { enumerable: true, get: function () { return dialect_1.dialectFor; } });
|
|
45
|
+
Object.defineProperty(exports, "defaultClause", { enumerable: true, get: function () { return dialect_1.defaultClause; } });
|
|
46
|
+
Object.defineProperty(exports, "sqlLiteral", { enumerable: true, get: function () { return dialect_1.sqlLiteral; } });
|
|
47
|
+
var type_kinds_1 = require("./type-kinds");
|
|
48
|
+
Object.defineProperty(exports, "fieldKind", { enumerable: true, get: function () { return type_kinds_1.fieldKind; } });
|
|
49
|
+
var field_types_1 = require("./field-types");
|
|
50
|
+
Object.defineProperty(exports, "DEFAULT_PROVIDER", { enumerable: true, get: function () { return field_types_1.DEFAULT_PROVIDER; } });
|
|
51
|
+
Object.defineProperty(exports, "FieldTypeError", { enumerable: true, get: function () { return field_types_1.FieldTypeError; } });
|
|
52
|
+
Object.defineProperty(exports, "PROVIDERS", { enumerable: true, get: function () { return field_types_1.PROVIDERS; } });
|
|
53
|
+
Object.defineProperty(exports, "PROVIDER_FIELD_TYPES", { enumerable: true, get: function () { return field_types_1.PROVIDER_FIELD_TYPES; } });
|
|
54
|
+
Object.defineProperty(exports, "PROVIDER_LABELS", { enumerable: true, get: function () { return field_types_1.PROVIDER_LABELS; } });
|
|
55
|
+
Object.defineProperty(exports, "defaultSqlTypeForTs", { enumerable: true, get: function () { return field_types_1.defaultSqlTypeForTs; } });
|
|
56
|
+
Object.defineProperty(exports, "fieldTypesFor", { enumerable: true, get: function () { return field_types_1.fieldTypesFor; } });
|
|
57
|
+
Object.defineProperty(exports, "resolveFieldType", { enumerable: true, get: function () { return field_types_1.resolveFieldType; } });
|
|
58
|
+
Object.defineProperty(exports, "unknownFieldTypeMessage", { enumerable: true, get: function () { return field_types_1.unknownFieldTypeMessage; } });
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Model } from './types';
|
|
2
|
-
export declare class CodeGenerator {
|
|
3
|
-
private outputDir;
|
|
4
|
-
constructor(outputDir: string);
|
|
5
|
-
generate(models: Model[]): void;
|
|
6
|
-
private generateBaseTs;
|
|
7
|
-
private generateModelFile;
|
|
8
|
-
private generateIndexTs;
|
|
9
|
-
private getAllPropertyVariations;
|
|
10
|
-
private getFieldFilterType;
|
|
11
|
-
private
|
|
12
|
-
private
|
|
13
|
-
|
|
1
|
+
import { Model } from './types';
|
|
2
|
+
export declare class CodeGenerator {
|
|
3
|
+
private outputDir;
|
|
4
|
+
constructor(outputDir: string);
|
|
5
|
+
generate(models: Model[]): void;
|
|
6
|
+
private generateBaseTs;
|
|
7
|
+
private generateModelFile;
|
|
8
|
+
private generateIndexTs;
|
|
9
|
+
private getAllPropertyVariations;
|
|
10
|
+
private getFieldFilterType;
|
|
11
|
+
private inputType;
|
|
12
|
+
private normalizeType;
|
|
13
|
+
private toCamelCase;
|
|
14
|
+
}
|