quicktype-core 23.0.175 → 23.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/dist/Messages.d.ts +4 -6
- package/dist/Messages.js +9 -10
- package/dist/RendererOptions/index.d.ts +43 -0
- package/dist/{RendererOptions.js → RendererOptions/index.js} +46 -34
- package/dist/RendererOptions/types.d.ts +26 -0
- package/dist/RendererOptions/types.js +2 -0
- package/dist/Run.d.ts +6 -7
- package/dist/TargetLanguage.d.ts +14 -9
- package/dist/TargetLanguage.js +3 -3
- package/dist/TypeUtils.d.ts +1 -1
- package/dist/TypeUtils.js +2 -4
- package/dist/index.d.ts +1 -2
- package/dist/index.js +2 -5
- package/dist/input/Inputs.d.ts +2 -1
- package/dist/language/All.d.ts +31 -2
- package/dist/language/All.js +22 -10
- package/dist/language/CJSON/language.d.ts +53 -20
- package/dist/language/CJSON/language.js +38 -67
- package/dist/language/CPlusPlus/language.d.ts +59 -19
- package/dist/language/CPlusPlus/language.js +41 -68
- package/dist/language/CSharp/language.d.ts +171 -57
- package/dist/language/CSharp/language.js +40 -57
- package/dist/language/Crystal/language.d.ts +8 -5
- package/dist/language/Crystal/language.js +10 -5
- package/dist/language/Dart/language.d.ts +20 -15
- package/dist/language/Dart/language.js +4 -15
- package/dist/language/Elixir/language.d.ts +11 -6
- package/dist/language/Elixir/language.js +8 -3
- package/dist/language/Elm/language.d.ts +15 -7
- package/dist/language/Elm/language.js +12 -7
- package/dist/language/Golang/language.d.ts +16 -10
- package/dist/language/Golang/language.js +7 -9
- package/dist/language/Haskell/language.d.ts +15 -7
- package/dist/language/Haskell/language.js +12 -7
- package/dist/language/JSONSchema/language.d.ts +8 -4
- package/dist/language/JSONSchema/language.js +8 -3
- package/dist/language/Java/language.d.ts +27 -11
- package/dist/language/Java/language.js +10 -19
- package/dist/language/JavaScript/language.d.ts +26 -10
- package/dist/language/JavaScript/language.js +13 -14
- package/dist/language/JavaScriptPropTypes/language.d.ts +24 -8
- package/dist/language/JavaScriptPropTypes/language.js +14 -9
- package/dist/language/Kotlin/language.d.ts +22 -13
- package/dist/language/Kotlin/language.js +18 -20
- package/dist/language/Objective-C/ObjectiveCRenderer.d.ts +3 -1
- package/dist/language/Objective-C/language.d.ts +27 -17
- package/dist/language/Objective-C/language.js +13 -14
- package/dist/language/Php/language.d.ts +19 -9
- package/dist/language/Php/language.js +8 -27
- package/dist/language/Pike/language.d.ts +7 -4
- package/dist/language/Pike/language.js +8 -3
- package/dist/language/Python/language.d.ts +27 -8
- package/dist/language/Python/language.js +11 -12
- package/dist/language/Ruby/language.d.ts +16 -7
- package/dist/language/Ruby/language.js +13 -8
- package/dist/language/Ruby/utils.d.ts +1 -1
- package/dist/language/Rust/language.d.ts +25 -13
- package/dist/language/Rust/language.js +20 -24
- package/dist/language/Scala3/language.d.ts +15 -11
- package/dist/language/Scala3/language.js +16 -17
- package/dist/language/Smithy4s/language.d.ts +13 -6
- package/dist/language/Smithy4s/language.js +10 -4
- package/dist/language/Swift/language.d.ts +54 -25
- package/dist/language/Swift/language.js +25 -39
- package/dist/language/TypeScriptEffectSchema/language.d.ts +11 -6
- package/dist/language/TypeScriptEffectSchema/language.js +10 -5
- package/dist/language/TypeScriptFlow/language.d.ts +47 -22
- package/dist/language/TypeScriptFlow/language.js +44 -23
- package/dist/language/TypeScriptZod/language.d.ts +11 -6
- package/dist/language/TypeScriptZod/language.js +10 -5
- package/dist/language/index.d.ts +3 -0
- package/dist/language/index.js +5 -0
- package/dist/language/options.types.d.ts +11 -0
- package/dist/language/options.types.js +2 -0
- package/dist/language/types.d.ts +12 -0
- package/dist/language/types.js +2 -0
- package/dist/support/Acronyms.d.ts +6 -1
- package/dist/support/Acronyms.js +6 -6
- package/dist/support/Converters.d.ts +4 -1
- package/dist/support/Converters.js +4 -4
- package/dist/types.d.ts +3 -1
- package/dist/types.js +16 -1
- package/package.json +1 -1
- package/dist/RendererOptions.d.ts +0 -64
- package/dist/language/Java.d.ts +0 -124
- package/dist/language/Java.js +0 -1085
package/dist/Messages.d.ts
CHANGED
|
@@ -276,10 +276,8 @@ export type ErrorProperties = {
|
|
|
276
276
|
message: string;
|
|
277
277
|
};
|
|
278
278
|
};
|
|
279
|
-
export type ErrorKinds = ErrorProperties
|
|
280
|
-
|
|
281
|
-
} ? K : never;
|
|
282
|
-
export type ErrorPropertiesForName<K> = Extract<ErrorProperties, {
|
|
279
|
+
export type ErrorKinds = ErrorProperties["kind"];
|
|
280
|
+
export type ErrorPropertiesForKind<K extends ErrorKinds = ErrorKinds> = Extract<ErrorProperties, {
|
|
283
281
|
kind: K;
|
|
284
282
|
}> extends {
|
|
285
283
|
properties: infer P;
|
|
@@ -291,5 +289,5 @@ export declare class QuickTypeError extends Error {
|
|
|
291
289
|
readonly properties: StringMap;
|
|
292
290
|
constructor(errorMessage: string, messageName: string, userMessage: string, properties: StringMap);
|
|
293
291
|
}
|
|
294
|
-
export declare function messageError<
|
|
295
|
-
export declare function messageAssert<
|
|
292
|
+
export declare function messageError<Kind extends ErrorKinds>(kind: Kind, properties: ErrorPropertiesForKind<Kind>): never;
|
|
293
|
+
export declare function messageAssert<Kind extends ErrorKinds>(assertion: boolean, kind: Kind, properties: ErrorPropertiesForKind<Kind>): void;
|
package/dist/Messages.js
CHANGED
|
@@ -78,21 +78,20 @@ exports.QuickTypeError = QuickTypeError;
|
|
|
78
78
|
function messageError(kind, properties) {
|
|
79
79
|
const message = errorMessages[kind];
|
|
80
80
|
let userMessage = message;
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
value = value.toString();
|
|
81
|
+
for (const [name, value] of Object.entries(properties)) {
|
|
82
|
+
let valueString = "";
|
|
83
|
+
if (typeof value === "object" && typeof (value === null || value === void 0 ? void 0 : value.toString) === "function") {
|
|
84
|
+
valueString = value.toString();
|
|
86
85
|
}
|
|
87
|
-
else if (typeof value.message === "string") {
|
|
88
|
-
|
|
86
|
+
else if (typeof (value === null || value === void 0 ? void 0 : value.message) === "string") {
|
|
87
|
+
valueString = value.message;
|
|
89
88
|
}
|
|
90
89
|
else if (typeof value !== "string") {
|
|
91
|
-
|
|
90
|
+
valueString = JSON.stringify(value);
|
|
92
91
|
}
|
|
93
|
-
userMessage = userMessage.replace("${" + name + "}",
|
|
92
|
+
userMessage = userMessage.replace("${" + name + "}", valueString);
|
|
94
93
|
}
|
|
95
|
-
throw new QuickTypeError(message, kind, userMessage,
|
|
94
|
+
throw new QuickTypeError(message, kind, userMessage, properties);
|
|
96
95
|
}
|
|
97
96
|
exports.messageError = messageError;
|
|
98
97
|
function messageAssert(assertion, kind, properties) {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type FixMeOptionsType, type NoInfer } from "../types";
|
|
2
|
+
import type { OptionDefinition, OptionKind, OptionValues } from "./types";
|
|
3
|
+
export * from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* The superclass for target language options. You probably want to use one of its
|
|
6
|
+
* subclasses, `BooleanOption`, `EnumOption`, or `StringOption`.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class Option<Name extends string, T> {
|
|
9
|
+
readonly definition: OptionDefinition<Name, T>;
|
|
10
|
+
constructor(definition: OptionDefinition<Name, T>);
|
|
11
|
+
get name(): Name;
|
|
12
|
+
getValue(values: Record<string, unknown>): T;
|
|
13
|
+
get cliDefinitions(): {
|
|
14
|
+
actual: Array<OptionDefinition<Name, T>>;
|
|
15
|
+
display: Array<OptionDefinition<Name, T>>;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function getOptionValues<Name extends string, T, Options extends Record<string, Option<Name, T>>>(options: Options, untypedOptionValues: FixMeOptionsType): OptionValues<Options>;
|
|
19
|
+
/**
|
|
20
|
+
* A target language option that allows setting a boolean flag.
|
|
21
|
+
*/
|
|
22
|
+
export declare class BooleanOption<Name extends string> extends Option<Name, boolean> {
|
|
23
|
+
/**
|
|
24
|
+
* @param name The shorthand name.
|
|
25
|
+
* @param description Short-ish description of the option.
|
|
26
|
+
* @param defaultValue The default value.
|
|
27
|
+
* @param kind Whether it's a primary or secondary option.
|
|
28
|
+
*/
|
|
29
|
+
constructor(name: Name, description: string, defaultValue: boolean, kind?: OptionKind);
|
|
30
|
+
get cliDefinitions(): {
|
|
31
|
+
actual: Array<OptionDefinition<Name, boolean>>;
|
|
32
|
+
display: Array<OptionDefinition<Name, boolean>>;
|
|
33
|
+
};
|
|
34
|
+
getValue(values: Record<string, unknown>): boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare class StringOption<Name extends string> extends Option<Name, string> {
|
|
37
|
+
constructor(name: Name, description: string, typeLabel: string, defaultValue: string, kind?: OptionKind);
|
|
38
|
+
}
|
|
39
|
+
export declare class EnumOption<Name extends string, EnumMap extends Record<string, unknown>, EnumKey extends Extract<keyof EnumMap, string> = Extract<keyof EnumMap, string>> extends Option<Name, EnumKey> {
|
|
40
|
+
private readonly _values;
|
|
41
|
+
constructor(name: Name, description: string, values: EnumMap, defaultValue: NoInfer<EnumKey>, kind?: OptionKind);
|
|
42
|
+
getEnumValue<Key extends EnumKey>(name: Key): EnumMap[Key];
|
|
43
|
+
}
|
|
@@ -1,26 +1,38 @@
|
|
|
1
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
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
exports.EnumOption = exports.StringOption = exports.BooleanOption = exports.getOptionValues = exports.Option = void 0;
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const Support_1 = require("./support/Support");
|
|
18
|
+
const Messages_1 = require("../Messages");
|
|
19
|
+
const Support_1 = require("../support/Support");
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
8
21
|
/**
|
|
9
22
|
* The superclass for target language options. You probably want to use one of its
|
|
10
23
|
* subclasses, `BooleanOption`, `EnumOption`, or `StringOption`.
|
|
11
24
|
*/
|
|
12
25
|
class Option {
|
|
13
26
|
constructor(definition) {
|
|
14
|
-
definition.renderer = true;
|
|
15
27
|
this.definition = definition;
|
|
16
28
|
(0, Support_1.assert)(definition.kind !== undefined, "Renderer option kind must be defined");
|
|
17
29
|
}
|
|
30
|
+
get name() {
|
|
31
|
+
return this.definition.name;
|
|
32
|
+
}
|
|
18
33
|
getValue(values) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return this.definition.defaultValue;
|
|
22
|
-
}
|
|
23
|
-
return value;
|
|
34
|
+
var _a;
|
|
35
|
+
return ((_a = values[this.name]) !== null && _a !== void 0 ? _a : this.definition.defaultValue);
|
|
24
36
|
}
|
|
25
37
|
get cliDefinitions() {
|
|
26
38
|
return { actual: [this.definition], display: [this.definition] };
|
|
@@ -29,8 +41,14 @@ class Option {
|
|
|
29
41
|
exports.Option = Option;
|
|
30
42
|
function getOptionValues(options, untypedOptionValues) {
|
|
31
43
|
const optionValues = {};
|
|
32
|
-
for (const
|
|
33
|
-
|
|
44
|
+
for (const [key, option] of Object.entries(options)) {
|
|
45
|
+
const value = option.getValue(untypedOptionValues);
|
|
46
|
+
if (option instanceof EnumOption) {
|
|
47
|
+
optionValues[key] = option.getEnumValue(value);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
optionValues[key] = value;
|
|
51
|
+
}
|
|
34
52
|
}
|
|
35
53
|
return optionValues;
|
|
36
54
|
}
|
|
@@ -56,11 +74,11 @@ class BooleanOption extends Option {
|
|
|
56
74
|
}
|
|
57
75
|
get cliDefinitions() {
|
|
58
76
|
const negated = Object.assign({}, this.definition, {
|
|
59
|
-
name: `no-${this.
|
|
77
|
+
name: `no-${this.name}`,
|
|
60
78
|
defaultValue: !this.definition.defaultValue
|
|
61
79
|
});
|
|
62
80
|
const display = Object.assign({}, this.definition, {
|
|
63
|
-
name: `[no-]${this.
|
|
81
|
+
name: `[no-]${this.name}`,
|
|
64
82
|
description: `${this.definition.description} (${this.definition.defaultValue ? "on" : "off"} by default)`
|
|
65
83
|
});
|
|
66
84
|
return {
|
|
@@ -69,11 +87,11 @@ class BooleanOption extends Option {
|
|
|
69
87
|
};
|
|
70
88
|
}
|
|
71
89
|
getValue(values) {
|
|
72
|
-
let value = values[this.
|
|
90
|
+
let value = values[this.name];
|
|
73
91
|
if (value === undefined) {
|
|
74
92
|
value = this.definition.defaultValue;
|
|
75
93
|
}
|
|
76
|
-
let negated = values[`no-${this.
|
|
94
|
+
let negated = values[`no-${this.name}`];
|
|
77
95
|
if (negated === undefined) {
|
|
78
96
|
negated = !this.definition.defaultValue;
|
|
79
97
|
}
|
|
@@ -84,10 +102,10 @@ class BooleanOption extends Option {
|
|
|
84
102
|
value = false;
|
|
85
103
|
}
|
|
86
104
|
if (this.definition.defaultValue) {
|
|
87
|
-
return value && !negated;
|
|
105
|
+
return (value && !negated);
|
|
88
106
|
}
|
|
89
107
|
else {
|
|
90
|
-
return value || !negated;
|
|
108
|
+
return (value || !negated);
|
|
91
109
|
}
|
|
92
110
|
}
|
|
93
111
|
}
|
|
@@ -106,33 +124,27 @@ class StringOption extends Option {
|
|
|
106
124
|
}
|
|
107
125
|
}
|
|
108
126
|
exports.StringOption = StringOption;
|
|
127
|
+
// FIXME: use const generics here
|
|
109
128
|
class EnumOption extends Option {
|
|
110
|
-
constructor(name, description, values, defaultValue
|
|
111
|
-
if (defaultValue === undefined) {
|
|
112
|
-
defaultValue = values[0][0];
|
|
113
|
-
}
|
|
129
|
+
constructor(name, description, values, defaultValue, kind = "primary") {
|
|
114
130
|
const definition = {
|
|
115
131
|
name,
|
|
116
132
|
kind,
|
|
117
133
|
type: String,
|
|
118
134
|
description,
|
|
119
|
-
typeLabel:
|
|
120
|
-
legalValues: values.map(([n, _]) => n),
|
|
135
|
+
typeLabel: Object.keys(values).join("|"),
|
|
121
136
|
defaultValue
|
|
122
137
|
};
|
|
123
138
|
super(definition);
|
|
124
|
-
this._values =
|
|
125
|
-
for (const [n, v] of values) {
|
|
126
|
-
this._values[n] = v;
|
|
127
|
-
}
|
|
139
|
+
this._values = values;
|
|
128
140
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
141
|
+
getEnumValue(name) {
|
|
142
|
+
if (!name) {
|
|
143
|
+
const defaultKey = this.definition.defaultValue;
|
|
144
|
+
return this._values[defaultKey];
|
|
133
145
|
}
|
|
134
|
-
if (!(
|
|
135
|
-
return (0, Messages_1.messageError)("RendererUnknownOptionValue", { value: name, name: this.
|
|
146
|
+
if (!(name in this._values)) {
|
|
147
|
+
return (0, Messages_1.messageError)("RendererUnknownOptionValue", { value: name, name: this.name });
|
|
136
148
|
}
|
|
137
149
|
return this._values[name];
|
|
138
150
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { EnumOption, Option } from "./index";
|
|
2
|
+
/**
|
|
3
|
+
* Primary options show up in the web UI in the "Language" settings tab,
|
|
4
|
+
* secondary options in "Other".
|
|
5
|
+
*/
|
|
6
|
+
export type OptionKind = "primary" | "secondary";
|
|
7
|
+
export interface OptionDefinition<Name extends string = string, T = unknown> {
|
|
8
|
+
alias?: string;
|
|
9
|
+
defaultOption?: boolean;
|
|
10
|
+
defaultValue?: T;
|
|
11
|
+
description: string;
|
|
12
|
+
kind?: OptionKind;
|
|
13
|
+
multiple?: boolean;
|
|
14
|
+
name: Name;
|
|
15
|
+
type: StringConstructor | BooleanConstructor;
|
|
16
|
+
typeLabel?: string;
|
|
17
|
+
}
|
|
18
|
+
export type OptionName<O> = O extends Option<infer Name, unknown> ? Name : never;
|
|
19
|
+
export type OptionValue<O> = O extends EnumOption<string, infer EnumMap, infer EnumKey> ? EnumMap[EnumKey] : O extends Option<string, infer Value> ? Value : never;
|
|
20
|
+
export type OptionKey<O> = O extends EnumOption<string, Record<string, unknown>, infer EnumKey> ? EnumKey : O;
|
|
21
|
+
export type OptionMap<T> = {
|
|
22
|
+
[K in keyof T as OptionName<T[K]>]: OptionKey<T[K]>;
|
|
23
|
+
};
|
|
24
|
+
export type OptionValues<T> = {
|
|
25
|
+
[K in keyof T]: OptionValue<T[K]>;
|
|
26
|
+
};
|
package/dist/Run.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { InputData } from "./input/Inputs";
|
|
2
|
+
import type { RendererOptions } from "./language/options.types";
|
|
3
|
+
import type { LanguageName } from "./language/types";
|
|
2
4
|
import { type SerializedRenderResult } from "./Source";
|
|
3
5
|
import { type Comment } from "./support/Comments";
|
|
4
6
|
import { type MultiFileRenderResult, type TargetLanguage } from "./TargetLanguage";
|
|
5
7
|
import { type TransformedStringTypeKind } from "./Type";
|
|
6
8
|
import { type StringTypeMapping } from "./TypeBuilder";
|
|
7
|
-
export declare function getTargetLanguage(nameOrInstance:
|
|
8
|
-
export interface RendererOptions {
|
|
9
|
-
[name: string]: string | boolean;
|
|
10
|
-
}
|
|
9
|
+
export declare function getTargetLanguage(nameOrInstance: LanguageName | TargetLanguage): TargetLanguage;
|
|
11
10
|
export interface InferenceFlag {
|
|
12
11
|
description: string;
|
|
13
12
|
explanation: string;
|
|
@@ -89,7 +88,7 @@ export type InferenceFlags = {
|
|
|
89
88
|
* The options type for the main quicktype entry points,
|
|
90
89
|
* `quicktypeMultiFile` and `quicktype`.
|
|
91
90
|
*/
|
|
92
|
-
export interface NonInferenceOptions {
|
|
91
|
+
export interface NonInferenceOptions<Lang extends LanguageName = LanguageName> {
|
|
93
92
|
/** Make all class property optional */
|
|
94
93
|
allPropertiesOptional: boolean;
|
|
95
94
|
/** Put class properties in alphabetical order, instead of in the order found in the JSON */
|
|
@@ -128,7 +127,7 @@ export interface NonInferenceOptions {
|
|
|
128
127
|
* or a string specifying one of the names for quicktype's built-in target languages. For example,
|
|
129
128
|
* both `cs` and `csharp` will generate C#.
|
|
130
129
|
*/
|
|
131
|
-
lang:
|
|
130
|
+
lang: Lang | TargetLanguage;
|
|
132
131
|
/** If given, output these comments at the beginning of the main output file */
|
|
133
132
|
leadingComments?: Comment[];
|
|
134
133
|
/** Don't render output. This is mainly useful for benchmarking. */
|
|
@@ -138,7 +137,7 @@ export interface NonInferenceOptions {
|
|
|
138
137
|
*/
|
|
139
138
|
outputFilename: string;
|
|
140
139
|
/** Options for the target language's renderer */
|
|
141
|
-
rendererOptions: RendererOptions
|
|
140
|
+
rendererOptions: RendererOptions<Lang>;
|
|
142
141
|
}
|
|
143
142
|
export type Options = NonInferenceOptions & InferenceFlags;
|
|
144
143
|
export interface RunContext {
|
package/dist/TargetLanguage.d.ts
CHANGED
|
@@ -6,20 +6,25 @@ import { type Comment } from "./support/Comments";
|
|
|
6
6
|
import { type Type } from "./Type";
|
|
7
7
|
import { type StringTypeMapping } from "./TypeBuilder";
|
|
8
8
|
import { type TypeGraph } from "./TypeGraph";
|
|
9
|
-
import { type
|
|
9
|
+
import { type FixMeOptionsType } from "./types";
|
|
10
10
|
export type MultiFileRenderResult = ReadonlyMap<string, SerializedRenderResult>;
|
|
11
|
-
export
|
|
11
|
+
export interface LanguageConfig {
|
|
12
12
|
readonly displayName: string;
|
|
13
|
-
readonly names: string[];
|
|
14
13
|
readonly extension: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
readonly names: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
export declare abstract class TargetLanguage<Config extends LanguageConfig = LanguageConfig> {
|
|
17
|
+
readonly displayName: Config["displayName"];
|
|
18
|
+
readonly names: Config["names"];
|
|
19
|
+
readonly extension: Config["extension"];
|
|
20
|
+
constructor({ displayName, names, extension }: Config);
|
|
21
|
+
protected abstract getOptions(): Record<string, Option<string, unknown>>;
|
|
22
|
+
get optionDefinitions(): Array<OptionDefinition<string, unknown>>;
|
|
18
23
|
get cliOptionDefinitions(): {
|
|
19
|
-
actual: OptionDefinition
|
|
20
|
-
display: OptionDefinition
|
|
24
|
+
actual: Array<OptionDefinition<string, unknown>>;
|
|
25
|
+
display: Array<OptionDefinition<string, unknown>>;
|
|
21
26
|
};
|
|
22
|
-
get name():
|
|
27
|
+
get name(): (typeof this.names)[0];
|
|
23
28
|
protected abstract makeRenderer(renderContext: RenderContext, optionValues: FixMeOptionsType): Renderer;
|
|
24
29
|
renderGraphAndSerialize(typeGraph: TypeGraph, givenOutputFilename: string, alphabetizeProperties: boolean, leadingComments: Comment[] | undefined, rendererOptions: FixMeOptionsType, indentation?: string): MultiFileRenderResult;
|
|
25
30
|
protected get defaultIndentation(): string;
|
package/dist/TargetLanguage.js
CHANGED
|
@@ -7,18 +7,18 @@ const DateTime_1 = require("./DateTime");
|
|
|
7
7
|
const Source_1 = require("./Source");
|
|
8
8
|
const Support_1 = require("./support/Support");
|
|
9
9
|
class TargetLanguage {
|
|
10
|
-
constructor(displayName, names, extension) {
|
|
10
|
+
constructor({ displayName, names, extension }) {
|
|
11
11
|
this.displayName = displayName;
|
|
12
12
|
this.names = names;
|
|
13
13
|
this.extension = extension;
|
|
14
14
|
}
|
|
15
15
|
get optionDefinitions() {
|
|
16
|
-
return this.getOptions().map(o => o.definition);
|
|
16
|
+
return Object.values(this.getOptions()).map(o => o.definition);
|
|
17
17
|
}
|
|
18
18
|
get cliOptionDefinitions() {
|
|
19
19
|
let actual = [];
|
|
20
20
|
let display = [];
|
|
21
|
-
for (const { cliDefinitions } of this.getOptions()) {
|
|
21
|
+
for (const { cliDefinitions } of Object.values(this.getOptions())) {
|
|
22
22
|
actual = actual.concat(cliDefinitions.actual);
|
|
23
23
|
display = display.concat(cliDefinitions.display);
|
|
24
24
|
}
|
package/dist/TypeUtils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { type StringTypes } from "./attributes/StringTypes";
|
|
1
2
|
import { type CombinationKind, type TypeAttributes } from "./attributes/TypeAttributes";
|
|
2
3
|
import { ArrayType, type ClassProperty, ClassType, EnumType, MapType, ObjectType, type PrimitiveType, type SetOperationType, type Type, UnionType } from "./Type";
|
|
3
|
-
import { type StringTypes } from "./attributes/StringTypes";
|
|
4
4
|
export declare function assertIsObject(t: Type): ObjectType;
|
|
5
5
|
export declare function assertIsClass(t: Type): ClassType;
|
|
6
6
|
export declare function setOperationMembersRecursively<T extends SetOperationType>(setOperations: T | T[], combinationKind: CombinationKind | undefined): [ReadonlySet<Type>, TypeAttributes];
|
package/dist/TypeUtils.js
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.matchCompoundType = exports.matchType = exports.matchTypeExhaustive = exports.stringTypesForType = exports.directlyReachableSingleNamedType = exports.directlyReachableTypes = exports.separateNamedTypes = exports.isNamedType = exports.getNullAsOptional = exports.nonNullTypeCases = exports.nullableFromUnion = exports.removeNullFromType = exports.removeNullFromUnion = exports.isAnyOrNull = exports.combineTypeAttributesOfTypes = exports.makeGroupsToFlatten = exports.setOperationMembersRecursively = exports.assertIsClass = exports.assertIsObject = void 0;
|
|
4
4
|
const collection_utils_1 = require("collection-utils");
|
|
5
|
+
// eslint-disable-next-line import/no-cycle
|
|
6
|
+
const StringTypes_1 = require("./attributes/StringTypes");
|
|
5
7
|
const TypeAttributes_1 = require("./attributes/TypeAttributes");
|
|
6
8
|
const Support_1 = require("./support/Support");
|
|
7
|
-
// eslint-disable-next-line import/no-cycle
|
|
8
9
|
const Type_1 = require("./Type");
|
|
9
|
-
// String types should be imported last to avoid circular dependency issues.
|
|
10
|
-
// eslint-disable-next-line import/order
|
|
11
|
-
const StringTypes_1 = require("./attributes/StringTypes");
|
|
12
10
|
function assertIsObject(t) {
|
|
13
11
|
if (t instanceof Type_1.ObjectType) {
|
|
14
12
|
return t;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type Options,
|
|
1
|
+
export { type Options, getTargetLanguage, quicktypeMultiFile, quicktypeMultiFileSync, quicktype, combineRenderResults, inferenceFlags, inferenceFlagNames, defaultInferenceFlags, inferenceFlagsObject, type InferenceFlags, type InferenceFlagName, type RunContext } from "./Run";
|
|
2
2
|
export { CompressedJSON, type Value } from "./input/CompressedJSON";
|
|
3
3
|
export { type Input, InputData, JSONInput, type JSONSourceData, jsonInputForTargetLanguage } from "./input/Inputs";
|
|
4
4
|
export { JSONSchemaInput, type JSONSchemaSourceData } from "./input/JSONSchemaInput";
|
|
@@ -6,7 +6,6 @@ export { Ref, type JSONSchemaType, type JSONSchemaAttributes } from "./input/JSO
|
|
|
6
6
|
export type { RenderContext } from "./Renderer";
|
|
7
7
|
export { Option, type OptionDefinition, getOptionValues, type OptionValues } from "./RendererOptions";
|
|
8
8
|
export { TargetLanguage, type MultiFileRenderResult } from "./TargetLanguage";
|
|
9
|
-
export { all as defaultTargetLanguages, languageNamed } from "./language/All";
|
|
10
9
|
export { type MultiWord, type Sourcelike, type SerializedRenderResult, type Annotation, modifySource, singleWord, parenIfNeeded } from "./Source";
|
|
11
10
|
export { Name, funPrefixNamer, Namer } from "./Naming";
|
|
12
11
|
export { IssueAnnotationData } from "./Annotation";
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.ClassType = exports.ArrayType = exports.PrimitiveType = exports.Type = exports.messageAssert = exports.messageError = exports.QuickTypeError = exports.trainMarkovChain = exports.isLetterOrDigit = exports.legalizeCharacters = exports.allUpperWordStyle = exports.firstUpperWordStyle = exports.combineWords = exports.capitalize = exports.splitIntoWords = exports.inflateBase64 = exports.checkArray = exports.checkStringMap = exports.parseJSON = exports.assertNever = exports.defined = exports.assert = exports.panic = exports.IssueAnnotationData = exports.Namer = exports.funPrefixNamer = exports.Name = exports.parenIfNeeded = exports.singleWord = exports.modifySource = exports.
|
|
18
|
-
exports.uriTypeAttributeKind = exports.ConvenienceRenderer = exports.nullableFromUnion = exports.matchType = exports.removeNullFromUnion = exports.StringTypes = exports.namesTypeAttributeKind = exports.makeNamesTypeAttributes = exports.TypeNames = exports.emptyTypeAttributes = exports.TypeAttributeKind = exports.derefTypeRef = exports.TypeBuilder = exports.sourcesFromPostmanCollection = exports.JSONSchemaStore = exports.FetchingJSONSchemaStore = exports.readFromFileOrURL = exports.readableFromFileOrURL = exports.getStream = exports.ObjectType = exports.UnionType = exports.MapType =
|
|
17
|
+
exports.EnumType = exports.ClassProperty = exports.ClassType = exports.ArrayType = exports.PrimitiveType = exports.Type = exports.messageAssert = exports.messageError = exports.QuickTypeError = exports.trainMarkovChain = exports.isLetterOrDigit = exports.legalizeCharacters = exports.allUpperWordStyle = exports.firstUpperWordStyle = exports.combineWords = exports.capitalize = exports.splitIntoWords = exports.inflateBase64 = exports.checkArray = exports.checkStringMap = exports.parseJSON = exports.assertNever = exports.defined = exports.assert = exports.panic = exports.IssueAnnotationData = exports.Namer = exports.funPrefixNamer = exports.Name = exports.parenIfNeeded = exports.singleWord = exports.modifySource = exports.TargetLanguage = exports.getOptionValues = exports.Option = exports.Ref = exports.JSONSchemaInput = exports.jsonInputForTargetLanguage = exports.JSONInput = exports.InputData = exports.CompressedJSON = exports.inferenceFlagsObject = exports.defaultInferenceFlags = exports.inferenceFlagNames = exports.inferenceFlags = exports.combineRenderResults = exports.quicktype = exports.quicktypeMultiFileSync = exports.quicktypeMultiFile = exports.getTargetLanguage = void 0;
|
|
18
|
+
exports.uriTypeAttributeKind = exports.ConvenienceRenderer = exports.nullableFromUnion = exports.matchType = exports.removeNullFromUnion = exports.StringTypes = exports.namesTypeAttributeKind = exports.makeNamesTypeAttributes = exports.TypeNames = exports.emptyTypeAttributes = exports.TypeAttributeKind = exports.derefTypeRef = exports.TypeBuilder = exports.sourcesFromPostmanCollection = exports.JSONSchemaStore = exports.FetchingJSONSchemaStore = exports.readFromFileOrURL = exports.readableFromFileOrURL = exports.getStream = exports.ObjectType = exports.UnionType = exports.MapType = void 0;
|
|
19
19
|
var Run_1 = require("./Run");
|
|
20
20
|
Object.defineProperty(exports, "getTargetLanguage", { enumerable: true, get: function () { return Run_1.getTargetLanguage; } });
|
|
21
21
|
Object.defineProperty(exports, "quicktypeMultiFile", { enumerable: true, get: function () { return Run_1.quicktypeMultiFile; } });
|
|
@@ -41,9 +41,6 @@ Object.defineProperty(exports, "Option", { enumerable: true, get: function () {
|
|
|
41
41
|
Object.defineProperty(exports, "getOptionValues", { enumerable: true, get: function () { return RendererOptions_1.getOptionValues; } });
|
|
42
42
|
var TargetLanguage_1 = require("./TargetLanguage");
|
|
43
43
|
Object.defineProperty(exports, "TargetLanguage", { enumerable: true, get: function () { return TargetLanguage_1.TargetLanguage; } });
|
|
44
|
-
var All_1 = require("./language/All");
|
|
45
|
-
Object.defineProperty(exports, "defaultTargetLanguages", { enumerable: true, get: function () { return All_1.all; } });
|
|
46
|
-
Object.defineProperty(exports, "languageNamed", { enumerable: true, get: function () { return All_1.languageNamed; } });
|
|
47
44
|
var Source_1 = require("./Source");
|
|
48
45
|
Object.defineProperty(exports, "modifySource", { enumerable: true, get: function () { return Source_1.modifySource; } });
|
|
49
46
|
Object.defineProperty(exports, "singleWord", { enumerable: true, get: function () { return Source_1.singleWord; } });
|
package/dist/input/Inputs.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type RunContext } from "../Run";
|
|
2
2
|
import { type TargetLanguage } from "../TargetLanguage";
|
|
3
3
|
import { type TypeBuilder } from "../TypeBuilder";
|
|
4
|
+
import { type LanguageName } from "../types";
|
|
4
5
|
import { type CompressedJSON } from "./CompressedJSON";
|
|
5
6
|
export interface Input<T> {
|
|
6
7
|
addSource: (source: T) => Promise<void>;
|
|
@@ -33,7 +34,7 @@ export declare class JSONInput<T> implements Input<JSONSourceData<T>> {
|
|
|
33
34
|
addTypes(ctx: RunContext, typeBuilder: TypeBuilder, inferMaps: boolean, inferEnums: boolean, fixedTopLevels: boolean): Promise<void>;
|
|
34
35
|
addTypesSync(_ctx: RunContext, typeBuilder: TypeBuilder, inferMaps: boolean, inferEnums: boolean, fixedTopLevels: boolean): void;
|
|
35
36
|
}
|
|
36
|
-
export declare function jsonInputForTargetLanguage(targetLanguage:
|
|
37
|
+
export declare function jsonInputForTargetLanguage(targetLanguage: LanguageName | TargetLanguage, languages?: TargetLanguage[], handleJSONRefs?: boolean): JSONInput<string>;
|
|
37
38
|
export declare class InputData {
|
|
38
39
|
private _inputs;
|
|
39
40
|
addInput<T>(input: Input<T>): void;
|
package/dist/language/All.d.ts
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
1
|
import { type TargetLanguage } from "../TargetLanguage";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { CJSONTargetLanguage } from "./CJSON";
|
|
3
|
+
import { CPlusPlusTargetLanguage } from "./CPlusPlus";
|
|
4
|
+
import { CrystalTargetLanguage } from "./Crystal";
|
|
5
|
+
import { CSharpTargetLanguage } from "./CSharp";
|
|
6
|
+
import { DartTargetLanguage } from "./Dart";
|
|
7
|
+
import { ElixirTargetLanguage } from "./Elixir";
|
|
8
|
+
import { ElmTargetLanguage } from "./Elm";
|
|
9
|
+
import { GoTargetLanguage } from "./Golang";
|
|
10
|
+
import { HaskellTargetLanguage } from "./Haskell";
|
|
11
|
+
import { JavaTargetLanguage } from "./Java";
|
|
12
|
+
import { JavaScriptTargetLanguage } from "./JavaScript";
|
|
13
|
+
import { JavaScriptPropTypesTargetLanguage } from "./JavaScriptPropTypes";
|
|
14
|
+
import { JSONSchemaTargetLanguage } from "./JSONSchema";
|
|
15
|
+
import { KotlinTargetLanguage } from "./Kotlin";
|
|
16
|
+
import { ObjectiveCTargetLanguage } from "./Objective-C";
|
|
17
|
+
import { PhpTargetLanguage } from "./Php";
|
|
18
|
+
import { PikeTargetLanguage } from "./Pike";
|
|
19
|
+
import { PythonTargetLanguage } from "./Python";
|
|
20
|
+
import { RubyTargetLanguage } from "./Ruby";
|
|
21
|
+
import { RustTargetLanguage } from "./Rust";
|
|
22
|
+
import { Scala3TargetLanguage } from "./Scala3";
|
|
23
|
+
import { SmithyTargetLanguage } from "./Smithy4s";
|
|
24
|
+
import { SwiftTargetLanguage } from "./Swift";
|
|
25
|
+
import { type LanguageDisplayName, type LanguageName, type LanguageNameMap } from "./types";
|
|
26
|
+
import { TypeScriptEffectSchemaTargetLanguage } from "./TypeScriptEffectSchema";
|
|
27
|
+
import { FlowTargetLanguage, TypeScriptTargetLanguage } from "./TypeScriptFlow";
|
|
28
|
+
import { TypeScriptZodTargetLanguage } from "./TypeScriptZod";
|
|
29
|
+
export declare const all: readonly [CJSONTargetLanguage, CPlusPlusTargetLanguage, CrystalTargetLanguage, CSharpTargetLanguage, DartTargetLanguage, ElixirTargetLanguage, ElmTargetLanguage, FlowTargetLanguage, GoTargetLanguage, HaskellTargetLanguage, JavaTargetLanguage, JavaScriptTargetLanguage, JavaScriptPropTypesTargetLanguage, JSONSchemaTargetLanguage, KotlinTargetLanguage, ObjectiveCTargetLanguage, PhpTargetLanguage, PikeTargetLanguage, PythonTargetLanguage, RubyTargetLanguage, RustTargetLanguage, Scala3TargetLanguage, SmithyTargetLanguage, SwiftTargetLanguage, TypeScriptTargetLanguage, TypeScriptEffectSchemaTargetLanguage, TypeScriptZodTargetLanguage];
|
|
30
|
+
export declare function languageNamed<Name extends LanguageName>(name: Name, targetLanguages?: readonly TargetLanguage[]): LanguageNameMap[Name];
|
|
31
|
+
export declare function isLanguageName(maybeName: string): maybeName is LanguageName;
|
|
32
|
+
export declare function isLanguageDisplayName(maybeName: string): maybeName is LanguageDisplayName;
|
package/dist/language/All.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.languageNamed = exports.all = void 0;
|
|
4
|
-
const collection_utils_1 = require("collection-utils");
|
|
3
|
+
exports.isLanguageDisplayName = exports.isLanguageName = exports.languageNamed = exports.all = void 0;
|
|
5
4
|
const CJSON_1 = require("./CJSON");
|
|
6
5
|
const CPlusPlus_1 = require("./CPlusPlus");
|
|
7
6
|
const Crystal_1 = require("./Crystal");
|
|
@@ -47,7 +46,7 @@ exports.all = [
|
|
|
47
46
|
new Objective_C_1.ObjectiveCTargetLanguage(),
|
|
48
47
|
new Php_1.PhpTargetLanguage(),
|
|
49
48
|
new Pike_1.PikeTargetLanguage(),
|
|
50
|
-
new Python_1.PythonTargetLanguage(
|
|
49
|
+
new Python_1.PythonTargetLanguage(),
|
|
51
50
|
new Ruby_1.RubyTargetLanguage(),
|
|
52
51
|
new Rust_1.RustTargetLanguage(),
|
|
53
52
|
new Scala3_1.Scala3TargetLanguage(),
|
|
@@ -57,13 +56,26 @@ exports.all = [
|
|
|
57
56
|
new TypeScriptEffectSchema_1.TypeScriptEffectSchemaTargetLanguage(),
|
|
58
57
|
new TypeScriptZod_1.TypeScriptZodTargetLanguage()
|
|
59
58
|
];
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
exports.all;
|
|
60
|
+
function languageNamed(name, targetLanguages = exports.all) {
|
|
61
|
+
const foundLanguage = targetLanguages.find(language => language.names.includes(name));
|
|
62
|
+
if (!foundLanguage) {
|
|
63
|
+
throw new Error(`Unknown language name: ${name}`);
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
if (maybeTargetLanguage !== undefined)
|
|
66
|
-
return maybeTargetLanguage;
|
|
67
|
-
return (0, collection_utils_1.iterableFind)(targetLanguages, l => l.extension === name);
|
|
65
|
+
return foundLanguage;
|
|
68
66
|
}
|
|
69
67
|
exports.languageNamed = languageNamed;
|
|
68
|
+
function isLanguageName(maybeName) {
|
|
69
|
+
if (exports.all.some(lang => lang.names.includes(maybeName))) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
exports.isLanguageName = isLanguageName;
|
|
75
|
+
function isLanguageDisplayName(maybeName) {
|
|
76
|
+
if (exports.all.some(lang => lang.displayName === maybeName)) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
exports.isLanguageDisplayName = isLanguageDisplayName;
|