diff --git a/README.md b/README.md
index 51f857da..ef976578 100644
--- a/README.md
+++ b/README.md
@@ -93,6 +93,8 @@ See [server demo](example) and [browser demo](https://github.com/bcherny/json-sc
| unknownAny | boolean | `true` | Use `unknown` instead of `any` where possible |
| unreachableDefinitions | boolean | `false` | Generates code for `definitions` that aren't referenced by the schema. |
| strictIndexSignatures | boolean | `false` | Append all index signatures with `\| undefined` so that they are strictly typed. |
+| readonlyByDefault | boolean | `false` | This is the implied value for unspecified `"tsReadonly"` and `"tsReadonlyProperty"` properties. |
+| readonlyKeyword | boolean | `true` | Use the `readonly` keyword instead of `ReadonlyArray` for `array` types. **WARNING:** Setting this to `false` will disable readonly tuple support. |
| $refOptions | object | `{}` | [$RefParser](https://github.com/BigstickCarpet/json-schema-ref-parser) Options, used when resolving `$ref`s |
## CLI
@@ -164,11 +166,112 @@ json2ts -i foo.json -o foo.d.ts --style.singleQuote --no-style.semi
- [x] literal objects in enum ([eg](https://github.com/tdegrunt/jsonschema/blob/67c0e27ce9542efde0bf43dc1b2a95dd87df43c3/examples/all.js#L236))
- [x] referencing schema by id ([eg](https://github.com/tdegrunt/jsonschema/blob/67c0e27ce9542efde0bf43dc1b2a95dd87df43c3/examples/all.js#L331))
- [x] custom typescript types via `tsType`
+- [x] support for `readonly` types via `tsReadonly`
+- [x] support for `readonly` properties via `tsReadonlyProperty`
## Custom schema properties:
- `tsType`: Overrides the type that's generated from the schema. Useful for forcing a type to `any` or when using non-standard JSON schema extensions ([eg](https://github.com/sokra/json-schema-to-typescript/blob/f1f40307cf5efa328522bb1c9ae0b0d9e5f367aa/test/e2e/customType.ts)).
- `tsEnumNames`: Overrides the names used for the elements in an enum. Can also be used to create string enums ([eg](https://github.com/johnbillion/wp-json-schemas/blob/647440573e4a675f15880c95fcca513fdf7a2077/schemas/properties/post-status-name.json)).
+- `tsReadonly`: Sets whether an array is `readonly` in TypeScript.
+
+ ```jsonc
+ // readonlyByDefault: false
+ {
+ "anyOf": [
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "tsReadonly": true
+ // Compiles to `readonly string[]`
+ },
+ {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ },
+ "tsReadonly": true
+ // Compiles to `readonly [string, ...string[]]`
+ }
+ ]
+ }
+ ```
+
+ If unspecified, defaults to the value of the *readonlyByDefault* option.
+
+- `tsReadonlyProperty`: Sets whether an object property is `readonly` in TypeScript.
+
+ ```jsonc
+ // readonlyByDefault: false
+ {
+ "type": "object",
+ "properties": {
+ "foo": {
+ "type": "string",
+ "tsReadonlyProperty": true
+ }
+ },
+ "additionalProperties": {
+ "type": "number",
+ "tsReadonlyProperty": true
+ }
+ // Compiles to `{ readonly foo: string, readonly [k: string]: number }`
+ }
+ ```
+
+ If unspecified, defaults to:
+
+ 1. The value of the containing object schema's `tsReadonlyPropertyDefaultValue` property, if it is specified.
+ 2. The value of the *readonlyByDefault* option.
+
+
+
+
+- `tsReadonlyPropertyDefaultValue`: Sets the default value of `tsReadonlyProperty` for an object schema's properties. This is the same as passing the object type to `Readonly`, except that properties can be explicitly marked as non-readonly.
+
+ ```jsonc
+ {
+ "type": "object",
+ "tsReadonlyPropertyDefaultValue": true,
+ "properties": {
+ // This property is readonly
+ "foo": {},
+ // This property is NOT readonly because we explicitly override the object's default
+ "bar": {
+ "tsReadonlyProperty": false
+ }
+ },
+ // Additional properties are readonly
+ "additionalProperties": true
+ }
+ ```
+
+ Note that this property has no effect on sub-objects.
+
+ ```jsonc
+ // readonlyByDefault: false
+ {
+ "type": "object",
+ "tsReadonlyPropertyDefaultValue": true,
+ "properties": {
+ // This property is readonly
+ "foo": {
+ "type": "object",
+ "properties": {
+ // This property is NOT readonly
+ "bar": {
+ "type": "string"
+ }
+ },
+ // Additional properties are NOT readonly
+ "additionalProperties": true
+ }
+ }
+ }
+ ```
## Not expressible in TypeScript:
diff --git a/src/generator.ts b/src/generator.ts
index 077cc5a4..dc26207f 100644
--- a/src/generator.ts
+++ b/src/generator.ts
@@ -12,7 +12,8 @@ import {
TIntersection,
TNamedInterface,
TUnion,
- T_UNKNOWN
+ T_UNKNOWN,
+ TTuple
} from './types/AST'
import {log, toSafeString} from './utils'
@@ -178,8 +179,16 @@ function generateRawType(ast: AST, options: Options): string {
return 'any'
case 'ARRAY':
return (() => {
- const type = generateType(ast.params, options)
- return type.endsWith('"') ? '(' + type + ')[]' : type + '[]'
+ let type = generateType(ast.params, options)
+ if (ast.isReadonly && !options.readonlyKeyword) {
+ type = 'ReadonlyArray<' + type + '>'
+ } else {
+ type = type.endsWith('"') ? '(' + type + ')[]' : type + '[]'
+ if (ast.isReadonly) {
+ type = 'readonly ' + type
+ }
+ }
+ return type
})()
case 'BOOLEAN':
return 'boolean'
@@ -230,7 +239,14 @@ function generateRawType(ast: AST, options: Options): string {
}
function paramsToString(params: string[]): string {
- return '[' + params.join(', ') + ']'
+ let type = '[' + params.join(', ') + ']'
+ // `Readonly` where T is a tuple type is unsupported in versions of TypeScript prior to the introduction
+ // of the `readonly` keyword for array/tuple types, so don't bother adding it if options.readonlyKeyword is
+ // false
+ // Sources:
+ // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#a-new-syntax-for-readonlyarray
+ // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#readonly-tuples
+ return (ast as TTuple).isReadonly && options.readonlyKeyword ? 'readonly ' + type : type
}
const paramsList = astParams.map(param => generateType(param, options))
@@ -302,12 +318,19 @@ function generateInterface(ast: TInterface, options: Options): string {
ast.params
.filter(_ => !_.isPatternProperty && !_.isUnreachableDefinition)
.map(
- ({isRequired, keyName, ast}) =>
- [isRequired, keyName, ast, generateType(ast, options)] as [boolean, string, AST, string]
+ ({isRequired, isReadonlyParam, keyName, ast}) =>
+ [isRequired, isReadonlyParam, keyName, ast, generateType(ast, options)] as [
+ boolean,
+ boolean,
+ string,
+ AST,
+ string
+ ]
)
.map(
- ([isRequired, keyName, ast, type]) =>
+ ([isRequired, isReadonlyParam, keyName, ast, type]) =>
(hasComment(ast) && !ast.standaloneName ? generateComment(ast.comment) + '\n' : '') +
+ (isReadonlyParam ? 'readonly ' : '') +
escapeKeyName(keyName) +
(isRequired ? '' : '?') +
': ' +
diff --git a/src/index.ts b/src/index.ts
index cacc4118..d62ef444 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -42,6 +42,16 @@ export interface Options {
* Ignore maxItems and minItems for `array` types, preventing tuples being generated.
*/
ignoreMinAndMaxItems: boolean
+ /**
+ * This is the implied value for unspecified `"tsReadonly"` and `"tsReadonlyProperty"` properties.
+ */
+ readonlyByDefault: boolean
+ /**
+ * Use the `readonly` keyword instead of `ReadonlyArray` for array types.
+ *
+ * **WARNING:** Setting this to `false` will disable readonly tuple support.
+ */
+ readonlyKeyword: boolean
/**
* Append all index signatures with `| undefined` so that they are strictly typed.
*
@@ -79,6 +89,8 @@ export const DEFAULT_OPTIONS: Options = {
enableConstEnums: true,
format: true,
ignoreMinAndMaxItems: false,
+ readonlyByDefault: false,
+ readonlyKeyword: true,
strictIndexSignatures: false,
style: {
bracketSpacing: false,
diff --git a/src/parser.ts b/src/parser.ts
index 6cb6cef3..ec7be4a4 100644
--- a/src/parser.ts
+++ b/src/parser.ts
@@ -224,6 +224,7 @@ function parseNonLiteral(
minItems,
standaloneName: standaloneName(schema, keyNameFromDefinition, usedNames),
params: schema.items.map(_ => parse(_, options, undefined, processed, usedNames)),
+ isReadonly: schema.tsReadonly ?? options.readonlyByDefault,
type: 'TUPLE'
}
if (schema.additionalItems === true) {
@@ -238,6 +239,7 @@ function parseNonLiteral(
keyName,
standaloneName: standaloneName(schema, keyNameFromDefinition, usedNames),
params: parse(schema.items!, options, undefined, processed, usedNames),
+ isReadonly: schema.tsReadonly ?? options.readonlyByDefault,
type: 'ARRAY'
}
}
@@ -278,6 +280,7 @@ function parseNonLiteral(
// if there is no maximum, then add a spread item to collect the rest
spreadParam: maxItems >= 0 ? undefined : params,
standaloneName: standaloneName(schema, keyNameFromDefinition, usedNames),
+ isReadonly: schema.tsReadonly ?? options.readonlyByDefault,
type: 'TUPLE'
}
}
@@ -287,6 +290,7 @@ function parseNonLiteral(
keyName,
params,
standaloneName: standaloneName(schema, keyNameFromDefinition, usedNames),
+ isReadonly: schema.tsReadonly ?? options.readonlyByDefault,
type: 'ARRAY'
}
}
@@ -355,6 +359,8 @@ function parseSchema(
isPatternProperty: false,
isRequired: includes(schema.required || [], key),
isUnreachableDefinition: false,
+ // Readonly state specified on property supercedes readonly state specified on the object
+ isReadonlyParam: value.tsReadonlyProperty ?? schema.tsReadonlyPropertyDefaultValue ?? options.readonlyByDefault,
keyName: key
}))
@@ -376,6 +382,8 @@ via the \`patternProperty\` "${key}".`
isPatternProperty: !singlePatternProperty,
isRequired: singlePatternProperty || includes(schema.required || [], key),
isUnreachableDefinition: false,
+ isReadonlyParam:
+ value.tsReadonlyProperty ?? schema.tsReadonlyPropertyDefaultValue ?? options.readonlyByDefault,
keyName: singlePatternProperty ? '[k: string]' : key
}
})
@@ -394,6 +402,8 @@ via the \`definition\` "${key}".`
isPatternProperty: false,
isRequired: includes(schema.required || [], key),
isUnreachableDefinition: true,
+ isReadonlyParam:
+ value.tsReadonlyProperty ?? schema.tsReadonlyPropertyDefaultValue ?? options.readonlyByDefault,
keyName: key
}
})
@@ -412,6 +422,7 @@ via the \`definition\` "${key}".`
isPatternProperty: false,
isRequired: true,
isUnreachableDefinition: false,
+ isReadonlyParam: schema.tsReadonlyPropertyDefaultValue ?? options.readonlyByDefault,
keyName: '[k: string]'
})
@@ -426,6 +437,11 @@ via the \`definition\` "${key}".`
isPatternProperty: false,
isRequired: true,
isUnreachableDefinition: false,
+ // Explicit additionalProperties readonly state supercedes generic readonly state
+ isReadonlyParam:
+ schema.additionalProperties.tsReadonlyProperty ??
+ schema.tsReadonlyPropertyDefaultValue ??
+ options.readonlyByDefault,
keyName: '[k: string]'
})
}
diff --git a/src/types/AST.ts b/src/types/AST.ts
index 0697be60..ac545598 100644
--- a/src/types/AST.ts
+++ b/src/types/AST.ts
@@ -49,6 +49,7 @@ export interface TAny extends AbstractAST {
export interface TArray extends AbstractAST {
type: 'ARRAY'
params: AST
+ isReadonly: boolean
}
export interface TBoolean extends AbstractAST {
@@ -85,6 +86,7 @@ export interface TInterfaceParam {
isRequired: boolean
isPatternProperty: boolean
isUnreachableDefinition: boolean
+ isReadonlyParam: boolean
}
export interface TIntersection extends AbstractAST {
@@ -124,6 +126,7 @@ export interface TTuple extends AbstractAST {
spreadParam?: AST
minItems: number
maxItems?: number
+ isReadonly: boolean
}
export interface TUnion extends AbstractAST {
diff --git a/src/types/JSONSchema.ts b/src/types/JSONSchema.ts
index d11d099f..17ae1aea 100644
--- a/src/types/JSONSchema.ts
+++ b/src/types/JSONSchema.ts
@@ -33,6 +33,26 @@ export interface JSONSchema extends JSONSchema4 {
* schema extension to support custom types
*/
tsType?: string
+ /**
+ * schema extension to support readonly types
+ */
+ tsReadonly?: boolean
+ /**
+ * schema extension to support readonly properties
+ */
+ tsReadonlyProperty?: boolean
+ /**
+ * schema extension to support changing the default value of tsReadonlyProperty on this schema's properties
+ */
+ tsReadonlyPropertyDefaultValue?: boolean
+
+ // NOTE: When adding a new custom property, you MUST ALSO add that custom property as an exclusion in the
+ // nonCustomKeys function in src/typesOfSchema.ts
+ // If you do not do this weird things happen with otherwise empty schemas:
+ // {"title": "X", "additionalProperties": {"myCustomProperty": null}}
+ // Outputs: interface X {[k: string]: {[k: string]: unknown}}
+ // Instead of the expected: interface X {[k: string]: unknown}
+ // (or [k: string]: any depending on options)
}
export const Parent = Symbol('Parent')
diff --git a/src/typesOfSchema.ts b/src/typesOfSchema.ts
index 130c5665..fbc5360f 100644
--- a/src/typesOfSchema.ts
+++ b/src/typesOfSchema.ts
@@ -31,12 +31,23 @@ export function typesOfSchema(schema: JSONSchema): readonly [SchemaType, ...Sche
return matchedTypes as [SchemaType, ...SchemaType[]]
}
+function nonCustonKeys(obj: JSONSchema): string[] {
+ return Object.keys(obj).filter(
+ key =>
+ key !== 'tsEnumNames' &&
+ key !== 'tsType' &&
+ key !== 'tsReadonly' &&
+ key !== 'tsReadonlyProperty' &&
+ key !== 'tsReadonlyPropertyDefaultValue'
+ )
+}
+
const matchers: Record boolean> = {
ALL_OF(schema) {
return 'allOf' in schema
},
ANY(schema) {
- if (Object.keys(schema).length === 0) {
+ if (nonCustonKeys(schema).length === 0) {
// The empty schema {} validates any value
// @see https://json-schema.org/draft-07/json-schema-core.html#rfc.section.4.3.1
return true
diff --git a/src/utils.ts b/src/utils.ts
index 7fbbb177..237a69de 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -275,6 +275,13 @@ export function escapeBlockComment(schema: JSONSchema) {
}
}
+/**
+ * Makes Windows paths look like POSIX paths, ignoring drive letter prefixes (if present).
+ */
+export function forcePosixLikePath(path: string): string {
+ return path.replace(/\\/gu, '/')
+}
+
/*
the following logic determines the out path by comparing the in path to the users specified out path.
For example, if input directory MultiSchema looks like:
@@ -291,7 +298,7 @@ export function pathTransform(outputPath: string, inputPath: string, filePath: s
const filePathList = dirname(normalize(filePath)).split(sep)
const filePathRel = filePathList.filter((f, i) => f !== inPathList[i])
- return join(normalize(outputPath), ...filePathRel)
+ return forcePosixLikePath(join(normalize(outputPath), ...filePathRel))
}
/**
diff --git a/test/__snapshots__/test/test.ts.md b/test/__snapshots__/test/test.ts.md
index 7e03a2c8..6f81e0d1 100644
--- a/test/__snapshots__/test/test.ts.md
+++ b/test/__snapshots__/test/test.ts.md
@@ -9021,3 +9021,4520 @@ Generated by [AVA](https://avajs.dev).
""␊
]␊
}`
+
+## additionalPropertiesEmptyExceptForCustomProperties.js
+
+> Expected output to match snapshot for e2e test: additionalPropertiesEmptyExceptForCustomProperties.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface AdditionalProperties {␊
+ foo?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyArray.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = string[];␊
+ `
+
+## readonlyArray.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = string[];␊
+ `
+
+## readonlyArray.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = string[];␊
+ `
+
+## readonlyArray.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = ReadonlyArray;␊
+ `
+
+## readonlyArray.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoFalse.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoFalse.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoFalse.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoFalse.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoFalse.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoFalse.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyTuple.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleExplicitFalse = [string, ...string[]];␊
+ `
+
+## readonlyTuple.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleExplicitFalse = [string, ...string[]];␊
+ `
+
+## readonlyTuple.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleExplicitFalse = [string, ...string[]];␊
+ `
+
+## readonlyTuple.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = [string, ...string[]];␊
+ `
+
+## readonlyTuple.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = readonly [string, ...string[]];␊
+ `
+
+## readonlyArray.readonlyByDefault.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = ReadonlyArray;␊
+ `
+
+## readonlyArray.readonlyByDefault.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = ReadonlyArray;␊
+ `
+
+## readonlyArray.readonlyByDefault.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.explicitFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.explicitFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.explicitFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.explicitFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.explicitFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.explicitFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyTuple.readonlyByDefault.explicitTrue.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.explicitTrue.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefaultExplicitTrue = [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.explicitTrue.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.explicitTrue.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefaultExplicitTrue = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.explicitTrue.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.explicitTrue.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefaultExplicitTrue = [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.optionFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.optionFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefault = [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.optionTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.optionTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefault = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.optionUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.optionUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefault = readonly [string, ...string[]];␊
+ `
+
+## readonlyArray.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = string[];␊
+ `
+
+## readonlyArray.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = string[];␊
+ `
+
+## readonlyArray.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = string[];␊
+ `
+
+## readonlyArray.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = ReadonlyArray;␊
+ `
+
+## readonlyArray.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = ReadonlyArray;␊
+ `
+
+## readonlyArray.readonlyByDefault.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = ReadonlyArray;␊
+ `
+
+## readonlyArray.readonlyByDefault.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyArray.readonlyByDefault.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyArray.readonlyByDefault.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type MyArray = readonly string[];␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesEmptySchema.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesEmptySchema.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesRoTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesRoTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesRoTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.additionalPropertiesTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.additionalPropertiesTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesEmptySchemaExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoFalseExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesRoTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultAdditionalPropertiesTrueExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultExplicitFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyByDefault.readonlyObject.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyByDefault.readonlyObject.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyByDefaultReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchemaExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesEmptySchema {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalseExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoFalse {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesRoTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrueExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectAdditionalPropertiesTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ readonly [k: string]: unknown;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObjectExplicitTrue {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyInterface.readonlyObject.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.readonlyObject.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterfaceReadonlyObject {␊
+ readonly a: string;␊
+ b: string;␊
+ readonly c?: string;␊
+ d?: string;␊
+ }␊
+ `
+
+## readonlyTuple.explicitFalse.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.explicitFalse.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleExplicitFalse = [string, ...string[]];␊
+ `
+
+## readonlyTuple.explicitFalse.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.explicitFalse.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleExplicitFalse = [string, ...string[]];␊
+ `
+
+## readonlyTuple.explicitFalse.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.explicitFalse.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleExplicitFalse = [string, ...string[]];␊
+ `
+
+## readonlyTuple.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = [string, ...string[]];␊
+ `
+
+## readonlyTuple.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.explicitTrue.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.explicitTrue.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefaultExplicitTrue = [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.explicitTrue.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.explicitTrue.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefaultExplicitTrue = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.explicitTrue.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.explicitTrue.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefaultExplicitTrue = [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.keywordFalse.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.keywordFalse.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefault = [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.keywordTrue.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.keywordTrue.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefault = readonly [string, ...string[]];␊
+ `
+
+## readonlyTuple.readonlyByDefault.keywordUnspecified.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.readonlyByDefault.keywordUnspecified.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTupleReadonlyByDefault = readonly [string, ...string[]];␊
+ `
+
+## readonlyInterface.tsType.js
+
+> Expected output to match snapshot for e2e test: readonlyInterface.tsType.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export interface ReadonlyInterface {␊
+ readonly a: MyCustomType;␊
+ }␊
+ `
+
+## readonlyTuple.maxItems.js
+
+> Expected output to match snapshot for e2e test: readonlyTuple.maxItems.js
+
+ `/* tslint:disable */␊
+ /**␊
+ * This file was automatically generated by json-schema-to-typescript.␊
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊
+ * and run json-schema-to-typescript to regenerate this file.␊
+ */␊
+ ␊
+ export type ReadonlyTuple = readonly [string] | readonly [string, string] | readonly [string, string, string];␊
+ `
diff --git a/test/__snapshots__/test/test.ts.snap b/test/__snapshots__/test/test.ts.snap
index 32b63915..62aea049 100644
Binary files a/test/__snapshots__/test/test.ts.snap and b/test/__snapshots__/test/test.ts.snap differ
diff --git a/test/e2e/additionalPropertiesEmptyExceptForCustomProperties.ts b/test/e2e/additionalPropertiesEmptyExceptForCustomProperties.ts
new file mode 100644
index 00000000..49d64672
--- /dev/null
+++ b/test/e2e/additionalPropertiesEmptyExceptForCustomProperties.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'AdditionalProperties',
+ type: 'object',
+ properties: {
+ foo: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {
+ tsEnumNames: []
+ }
+}
diff --git a/test/e2e/readonlyArray.explicitFalse.keywordFalse.ts b/test/e2e/readonlyArray.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..08bea4cc
--- /dev/null
+++ b/test/e2e/readonlyArray.explicitFalse.keywordFalse.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyArray.explicitFalse.keywordTrue.ts b/test/e2e/readonlyArray.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..2b884e24
--- /dev/null
+++ b/test/e2e/readonlyArray.explicitFalse.keywordTrue.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyArray.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyArray.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..1e310072
--- /dev/null
+++ b/test/e2e/readonlyArray.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,8 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: false
+}
diff --git a/test/e2e/readonlyArray.keywordFalse.ts b/test/e2e/readonlyArray.keywordFalse.ts
new file mode 100644
index 00000000..934cc34b
--- /dev/null
+++ b/test/e2e/readonlyArray.keywordFalse.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyArray.keywordTrue.ts b/test/e2e/readonlyArray.keywordTrue.ts
new file mode 100644
index 00000000..4e75a8bf
--- /dev/null
+++ b/test/e2e/readonlyArray.keywordTrue.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyArray.keywordUnspecified.ts b/test/e2e/readonlyArray.keywordUnspecified.ts
new file mode 100644
index 00000000..014bd6d9
--- /dev/null
+++ b/test/e2e/readonlyArray.keywordUnspecified.ts
@@ -0,0 +1,8 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
diff --git a/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordFalse.ts b/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..29c57bc6
--- /dev/null
+++ b/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordFalse.ts
@@ -0,0 +1,13 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordTrue.ts b/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..26791598
--- /dev/null
+++ b/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordTrue.ts
@@ -0,0 +1,13 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..e3cd09f3
--- /dev/null
+++ b/test/e2e/readonlyArray.readonlyByDefault.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyArray.readonlyByDefault.keywordFalse.ts b/test/e2e/readonlyArray.readonlyByDefault.keywordFalse.ts
new file mode 100644
index 00000000..cc39d98f
--- /dev/null
+++ b/test/e2e/readonlyArray.readonlyByDefault.keywordFalse.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyArray.readonlyByDefault.keywordTrue.ts b/test/e2e/readonlyArray.readonlyByDefault.keywordTrue.ts
new file mode 100644
index 00000000..d987c066
--- /dev/null
+++ b/test/e2e/readonlyArray.readonlyByDefault.keywordTrue.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyArray.readonlyByDefault.keywordUnspecified.ts b/test/e2e/readonlyArray.readonlyByDefault.keywordUnspecified.ts
new file mode 100644
index 00000000..d987c066
--- /dev/null
+++ b/test/e2e/readonlyArray.readonlyByDefault.keywordUnspecified.ts
@@ -0,0 +1,12 @@
+export const input = {
+ title: 'MyArray',
+ type: 'array',
+ items: {
+ type: 'string'
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..83c7d66c
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..09b8639c
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..161220c1
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordFalse.ts
new file mode 100644
index 00000000..53278f9c
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordTrue.ts
new file mode 100644
index 00000000..0b8fb902
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordUnspecified.ts
new file mode 100644
index 00000000..27c68252
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesEmptySchema.keywordUnspecified.ts
@@ -0,0 +1,22 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..df38de41
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordFalse.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..9b39b822
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordTrue.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..da9d0e45
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..dec9da20
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordFalse.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..938e5b1b
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordTrue.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..b189305b
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordFalse.ts
new file mode 100644
index 00000000..4102594e
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordTrue.ts
new file mode 100644
index 00000000..e3db52df
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..54605f93
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesRoTrue.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..19c537db
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..ab6d8b33
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..f8ad8c94
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesTrue.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordFalse.ts b/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordFalse.ts
new file mode 100644
index 00000000..fa6f5f18
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordTrue.ts b/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordTrue.ts
new file mode 100644
index 00000000..cec0d581
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..f37a52f1
--- /dev/null
+++ b/test/e2e/readonlyInterface.additionalPropertiesTrue.keywordUnspecified.ts
@@ -0,0 +1,22 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..58672b24
--- /dev/null
+++ b/test/e2e/readonlyInterface.explicitFalse.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..5f21c659
--- /dev/null
+++ b/test/e2e/readonlyInterface.explicitFalse.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..6cc7d7a7
--- /dev/null
+++ b/test/e2e/readonlyInterface.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: false
+}
diff --git a/test/e2e/readonlyInterface.keywordFalse.ts b/test/e2e/readonlyInterface.keywordFalse.ts
new file mode 100644
index 00000000..5fdf65be
--- /dev/null
+++ b/test/e2e/readonlyInterface.keywordFalse.ts
@@ -0,0 +1,25 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.keywordTrue.ts b/test/e2e/readonlyInterface.keywordTrue.ts
new file mode 100644
index 00000000..a0b2d7a8
--- /dev/null
+++ b/test/e2e/readonlyInterface.keywordTrue.ts
@@ -0,0 +1,25 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.keywordUnspecified.ts b/test/e2e/readonlyInterface.keywordUnspecified.ts
new file mode 100644
index 00000000..cad91e8f
--- /dev/null
+++ b/test/e2e/readonlyInterface.keywordUnspecified.ts
@@ -0,0 +1,21 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string'
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string'
+ }
+ },
+ additionalProperties: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..07039057
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordFalse.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..d999b84c
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordTrue.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..b50639ae
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesEmptySchema.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..efa47a20
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordFalse.ts
@@ -0,0 +1,31 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..2acc5f59
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordTrue.ts
@@ -0,0 +1,31 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..0dbd0ee4
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoFalse.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..2b80f5b6
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordFalse.ts
@@ -0,0 +1,31 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..ace9edfb
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordTrue.ts
@@ -0,0 +1,31 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..f9efe601
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesRoTrue.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..07d876fe
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordFalse.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..3d87893a
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordTrue.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..f22c4515
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.additionalPropertiesTrue.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const optionds = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..98b8a89e
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordFalse.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..661ca0a0
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordTrue.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..24834142
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: false
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..a67fd7ca
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {}
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..8fed8009
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {}
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..e3d31a81
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,27 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {}
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.ts
new file mode 100644
index 00000000..0327c8d4
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {}
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.ts
new file mode 100644
index 00000000..921587a9
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {}
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.ts
new file mode 100644
index 00000000..6e5d8944
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..da630e63
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..38af4e23
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..103cf785
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ }
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordFalse.ts
new file mode 100644
index 00000000..58254b98
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordTrue.ts
new file mode 100644
index 00000000..3c1bc9c1
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..5373ae7c
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.ts
@@ -0,0 +1,27 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ }
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..bea314f6
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..78dc2470
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..3e371c04
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,29 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ }
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..9184a0e0
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..576a7578
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..39c1ca09
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,27 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordFalse.ts
new file mode 100644
index 00000000..fd1a3bd3
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordTrue.ts
new file mode 100644
index 00000000..5886e94b
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..8c6468f3
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.additionalPropertiesTrue.keywordUnspecified.ts
@@ -0,0 +1,25 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..8a1cf276
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..312c73e0
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..5a4257cf
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,27 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordFalse.ts
new file mode 100644
index 00000000..f1d8d668
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordTrue.ts
new file mode 100644
index 00000000..0c32388b
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordUnspecified.ts
new file mode 100644
index 00000000..aa04e9da
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyByDefault.readonlyObject.keywordUnspecified.ts
@@ -0,0 +1,25 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..9eeb15ae
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..c13b38b5
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..36a97a48
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.ts
new file mode 100644
index 00000000..1bb029b0
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.ts
new file mode 100644
index 00000000..84e5b88f
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.ts
new file mode 100644
index 00000000..5a9a002e
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesEmptySchema.keywordUnspecified.ts
@@ -0,0 +1,22 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {},
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..b70d8753
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordFalse.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..2824934b
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordTrue.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..34294862
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordFalse.ts
new file mode 100644
index 00000000..50710043
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordTrue.ts
new file mode 100644
index 00000000..e3b208a7
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..a1cbed7c
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoFalse.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: false
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..9059a075
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordFalse.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..98479461
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordTrue.ts
@@ -0,0 +1,30 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..a9089fb7
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesRoTrue.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: {
+ tsReadonlyProperty: true
+ },
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..41ca28a8
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..9e3bfcff
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..5291560c
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordFalse.ts
new file mode 100644
index 00000000..83358fbd
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordTrue.ts
new file mode 100644
index 00000000..590f7326
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..8da003d2
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.additionalPropertiesTrue.keywordUnspecified.ts
@@ -0,0 +1,22 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: true,
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..c8684ffc
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordFalse.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..c230f0be
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordTrue.ts
@@ -0,0 +1,28 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..fbd78875
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,24 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string',
+ tsReadonlyProperty: true
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.keywordFalse.ts b/test/e2e/readonlyInterface.readonlyObject.keywordFalse.ts
new file mode 100644
index 00000000..80c3a9c0
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.keywordFalse.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.keywordTrue.ts b/test/e2e/readonlyInterface.readonlyObject.keywordTrue.ts
new file mode 100644
index 00000000..094988eb
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.keywordTrue.ts
@@ -0,0 +1,26 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyInterface.readonlyObject.keywordUnspecified.ts b/test/e2e/readonlyInterface.readonlyObject.keywordUnspecified.ts
new file mode 100644
index 00000000..9fa6f955
--- /dev/null
+++ b/test/e2e/readonlyInterface.readonlyObject.keywordUnspecified.ts
@@ -0,0 +1,22 @@
+export const input = {
+ type: 'object',
+ required: ['a', 'b'],
+ properties: {
+ a: {
+ type: 'string'
+ },
+ b: {
+ type: 'string',
+ tsReadonlyProperty: false
+ },
+ c: {
+ type: 'string'
+ },
+ d: {
+ type: 'string',
+ tsReadonlyProperty: false
+ }
+ },
+ additionalProperties: false,
+ tsReadonlyPropertyDefaultValue: true
+}
diff --git a/test/e2e/readonlyInterface.tsType.ts b/test/e2e/readonlyInterface.tsType.ts
new file mode 100644
index 00000000..b1dbf540
--- /dev/null
+++ b/test/e2e/readonlyInterface.tsType.ts
@@ -0,0 +1,11 @@
+export const input = {
+ type: 'object',
+ required: ['a'],
+ properties: {
+ a: {
+ tsType: 'MyCustomType',
+ tsReadonlyProperty: true
+ }
+ },
+ additionalProperties: false
+}
diff --git a/test/e2e/readonlyTuple.explicitFalse.keywordFalse.ts b/test/e2e/readonlyTuple.explicitFalse.keywordFalse.ts
new file mode 100644
index 00000000..1a44e1c5
--- /dev/null
+++ b/test/e2e/readonlyTuple.explicitFalse.keywordFalse.ts
@@ -0,0 +1,12 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: false
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyTuple.explicitFalse.keywordTrue.ts b/test/e2e/readonlyTuple.explicitFalse.keywordTrue.ts
new file mode 100644
index 00000000..a14000ea
--- /dev/null
+++ b/test/e2e/readonlyTuple.explicitFalse.keywordTrue.ts
@@ -0,0 +1,12 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: false
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyTuple.explicitFalse.keywordUnspecified.ts b/test/e2e/readonlyTuple.explicitFalse.keywordUnspecified.ts
new file mode 100644
index 00000000..aa53eeb7
--- /dev/null
+++ b/test/e2e/readonlyTuple.explicitFalse.keywordUnspecified.ts
@@ -0,0 +1,8 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: false
+}
diff --git a/test/e2e/readonlyTuple.keywordFalse.ts b/test/e2e/readonlyTuple.keywordFalse.ts
new file mode 100644
index 00000000..61130c90
--- /dev/null
+++ b/test/e2e/readonlyTuple.keywordFalse.ts
@@ -0,0 +1,12 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyTuple.keywordTrue.ts b/test/e2e/readonlyTuple.keywordTrue.ts
new file mode 100644
index 00000000..8e9b77e7
--- /dev/null
+++ b/test/e2e/readonlyTuple.keywordTrue.ts
@@ -0,0 +1,12 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyTuple.keywordUnspecified.ts b/test/e2e/readonlyTuple.keywordUnspecified.ts
new file mode 100644
index 00000000..8ff849e2
--- /dev/null
+++ b/test/e2e/readonlyTuple.keywordUnspecified.ts
@@ -0,0 +1,8 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
diff --git a/test/e2e/readonlyTuple.maxItems.ts b/test/e2e/readonlyTuple.maxItems.ts
new file mode 100644
index 00000000..7d3a852f
--- /dev/null
+++ b/test/e2e/readonlyTuple.maxItems.ts
@@ -0,0 +1,9 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ maxItems: 3,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
diff --git a/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordFalse.ts b/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordFalse.ts
new file mode 100644
index 00000000..469dc79e
--- /dev/null
+++ b/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordFalse.ts
@@ -0,0 +1,13 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordTrue.ts b/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordTrue.ts
new file mode 100644
index 00000000..86bab447
--- /dev/null
+++ b/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordTrue.ts
@@ -0,0 +1,13 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordUnspecified.ts b/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordUnspecified.ts
new file mode 100644
index 00000000..469dc79e
--- /dev/null
+++ b/test/e2e/readonlyTuple.readonlyByDefault.explicitTrue.keywordUnspecified.ts
@@ -0,0 +1,13 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ },
+ tsReadonly: true
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyTuple.readonlyByDefault.keywordFalse.ts b/test/e2e/readonlyTuple.readonlyByDefault.keywordFalse.ts
new file mode 100644
index 00000000..fd8f8202
--- /dev/null
+++ b/test/e2e/readonlyTuple.readonlyByDefault.keywordFalse.ts
@@ -0,0 +1,12 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: false
+}
diff --git a/test/e2e/readonlyTuple.readonlyByDefault.keywordTrue.ts b/test/e2e/readonlyTuple.readonlyByDefault.keywordTrue.ts
new file mode 100644
index 00000000..03ac663f
--- /dev/null
+++ b/test/e2e/readonlyTuple.readonlyByDefault.keywordTrue.ts
@@ -0,0 +1,12 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ }
+}
+
+export const options = {
+ readonlyByDefault: true,
+ readonlyKeyword: true
+}
diff --git a/test/e2e/readonlyTuple.readonlyByDefault.keywordUnspecified.ts b/test/e2e/readonlyTuple.readonlyByDefault.keywordUnspecified.ts
new file mode 100644
index 00000000..b785bf0e
--- /dev/null
+++ b/test/e2e/readonlyTuple.readonlyByDefault.keywordUnspecified.ts
@@ -0,0 +1,11 @@
+export const input = {
+ type: 'array',
+ minItems: 1,
+ items: {
+ type: 'string'
+ }
+}
+
+export const options = {
+ readonlyByDefault: true
+}
diff --git a/test/testCLI.ts b/test/testCLI.ts
index a31568d8..51008d2c 100644
--- a/test/testCLI.ts
+++ b/test/testCLI.ts
@@ -3,6 +3,7 @@ import {execSync} from 'child_process'
import {readFileSync, unlinkSync, readdirSync, existsSync, lstatSync} from 'fs'
import {resolve, join} from 'path'
import rimraf = require('rimraf')
+import {forcePosixLikePath} from '../src/utils'
export function run() {
test('pipe in, pipe out', t => {
@@ -84,7 +85,7 @@ export function run() {
})
test('files in (-i), files out (-o)', t => {
- execSync("node dist/src/cli.js -i './test/resources/MultiSchema/**/*.json' -o ./test/resources/MultiSchema/out")
+ execSync("node dist/src/cli.js -i ./test/resources/MultiSchema/**/*.json -o ./test/resources/MultiSchema/out")
readdirSync('./test/resources/MultiSchema/out').forEach(f => {
const path = `./test/resources/MultiSchema/out/${f}`
@@ -96,12 +97,12 @@ export function run() {
})
test('files in (-i), pipe out', t => {
- t.snapshot(execSync("node dist/src/cli.js -i './test/resources/MultiSchema/**/*.json'").toString())
+ t.snapshot(execSync("node dist/src/cli.js -i ./test/resources/MultiSchema/**/*.json").toString())
})
test('files in (-i), files out (-o) nested dir does not exist', t => {
execSync(
- "node dist/src/cli.js -i './test/resources/MultiSchema/**/*.json' -o ./test/resources/MultiSchema/foo/bar/out"
+ "node dist/src/cli.js -i ./test/resources/MultiSchema/**/*.json -o ./test/resources/MultiSchema/foo/bar/out"
)
readdirSync('./test/resources/MultiSchema/foo/bar/out').forEach(f => {
const path = `./test/resources/MultiSchema/foo/bar/out/${f}`
@@ -114,9 +115,10 @@ export function run() {
test('files in (-i), files out (-o) matching nested dir', t => {
execSync(
- "node dist/src/cli.js -i './test/resources/../../test/resources/MultiSchema2/' -o ./test/resources/MultiSchema2/out"
+ "node dist/src/cli.js -i ./test/resources/../../test/resources/MultiSchema2/ -o ./test/resources/MultiSchema2/out"
)
- getPaths('./test/resources/MultiSchema2/out').forEach(file => {
+ // Need to make sure file ordering is the same on Windows and Unix-like OSs
+ getPaths('./test/resources/MultiSchema2/out').sort(compareByCodePoint).forEach(file => {
t.snapshot(file)
t.snapshot(readFileSync(file, 'utf-8'))
unlinkSync(file)
@@ -129,8 +131,25 @@ function getPaths(path: string, paths: string[] = []) {
if (existsSync(path) && lstatSync(path).isDirectory()) {
readdirSync(resolve(path)).forEach(item => getPaths(join(path, item), paths))
} else {
- paths.push(path)
+ // Need to make sure path strings are the same on Windows and Unix-like OSs
+ paths.push(forcePosixLikePath(path))
}
return paths
}
+
+function compareByCodePoint (a: string, b: string) {
+ const minLength = Math.min(a.length, b.length)
+ for (let i = 0; i < minLength; i++) {
+ const cmp = (a?.codePointAt(i) ?? a.charCodeAt(i)) - (b.codePointAt(i) ?? b.charCodeAt(i))
+ if (cmp !== 0) {
+ return cmp
+ }
+ }
+ if (a.length < b.length) {
+ return -1
+ } else if (a.length > b.length) {
+ return 1
+ }
+ return 0
+}