Copy disabled (too large)
Download .txt
Showing preview only (14,631K chars total). Download the full file to get everything.
Repository: glideapps/quicktype
Branch: master
Commit: 41950205609a
Files: 777
Total size: 13.8 MB
Directory structure:
gitextract_n0pnx0cj/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── master.yaml
│ ├── setup/
│ │ └── action.yaml
│ └── test-pr.yaml
├── .gitignore
├── .nvmrc
├── .vscode/
│ ├── extensions.json
│ ├── launch.json
│ └── settings.json
├── FAQ.md
├── LICENSE
├── README.md
├── biome.json
├── data/
│ └── lib.d.ts
├── doc/
│ ├── CustomRenderer.md
│ ├── PostmanCollection.schema
│ ├── Templates.md
│ └── Transformers.md
├── package.json
├── packages/
│ ├── quicktype-core/
│ │ ├── env.sh
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── Annotation.ts
│ │ │ ├── ConvenienceRenderer.ts
│ │ │ ├── CycleBreaker.ts
│ │ │ ├── DateTime.ts
│ │ │ ├── DeclarationIR.ts
│ │ │ ├── EncodedMarkovChain.ts
│ │ │ ├── GatherNames.ts
│ │ │ ├── Graph.ts
│ │ │ ├── GraphRewriting.ts
│ │ │ ├── Inference.ts
│ │ │ ├── MakeTransformations.ts
│ │ │ ├── MarkovChain.ts
│ │ │ ├── Messages.ts
│ │ │ ├── Naming.ts
│ │ │ ├── Renderer.ts
│ │ │ ├── RendererOptions/
│ │ │ │ ├── index.ts
│ │ │ │ └── types.ts
│ │ │ ├── Run.ts
│ │ │ ├── Source.ts
│ │ │ ├── TargetLanguage.ts
│ │ │ ├── Transformers.ts
│ │ │ ├── Type/
│ │ │ │ ├── ProvenanceTypeAttributeKind.ts
│ │ │ │ ├── TransformedStringType.ts
│ │ │ │ ├── Type.ts
│ │ │ │ ├── TypeBuilder.ts
│ │ │ │ ├── TypeBuilderUtils.ts
│ │ │ │ ├── TypeGraph.ts
│ │ │ │ ├── TypeGraphUtils.ts
│ │ │ │ ├── TypeRef.ts
│ │ │ │ ├── TypeUtils.ts
│ │ │ │ └── index.ts
│ │ │ ├── UnifyClasses.ts
│ │ │ ├── UnionBuilder.ts
│ │ │ ├── attributes/
│ │ │ │ ├── AccessorNames.ts
│ │ │ │ ├── Constraints.ts
│ │ │ │ ├── Description.ts
│ │ │ │ ├── EnumValues.ts
│ │ │ │ ├── StringTypes.ts
│ │ │ │ ├── TypeAttributes.ts
│ │ │ │ ├── TypeNames.ts
│ │ │ │ └── URIAttributes.ts
│ │ │ ├── index.ts
│ │ │ ├── input/
│ │ │ │ ├── CompressedJSON.ts
│ │ │ │ ├── FetchingJSONSchemaStore.ts
│ │ │ │ ├── Inference.ts
│ │ │ │ ├── Inputs.ts
│ │ │ │ ├── JSONSchemaInput.ts
│ │ │ │ ├── JSONSchemaStore.ts
│ │ │ │ ├── PathElement.ts
│ │ │ │ ├── PostmanCollection.ts
│ │ │ │ └── io/
│ │ │ │ ├── $fetch.ci.ts
│ │ │ │ ├── $fetch.ts
│ │ │ │ ├── NodeIO.ts
│ │ │ │ └── get-stream/
│ │ │ │ ├── buffer-stream.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── license
│ │ │ ├── language/
│ │ │ │ ├── All.ts
│ │ │ │ ├── CJSON/
│ │ │ │ │ ├── CJSONRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── CPlusPlus/
│ │ │ │ │ ├── CPlusPlusRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── CSharp/
│ │ │ │ │ ├── CSharpRenderer.ts
│ │ │ │ │ ├── NewtonSoftCSharpRenderer.ts
│ │ │ │ │ ├── SystemTextJsonCSharpRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Crystal/
│ │ │ │ │ ├── CrystalRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Dart/
│ │ │ │ │ ├── DartRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Elixir/
│ │ │ │ │ ├── ElixirRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Elm/
│ │ │ │ │ ├── ElmRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Golang/
│ │ │ │ │ ├── GolangRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Haskell/
│ │ │ │ │ ├── HaskellRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── JSONSchema/
│ │ │ │ │ ├── JSONSchemaRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Java/
│ │ │ │ │ ├── DateTimeProvider.ts
│ │ │ │ │ ├── JavaJacksonRenderer.ts
│ │ │ │ │ ├── JavaRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── JavaScript/
│ │ │ │ │ ├── JavaScriptRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ ├── unicodeMaps.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── JavaScriptPropTypes/
│ │ │ │ │ ├── JavaScriptPropTypesRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── language.ts
│ │ │ │ ├── Kotlin/
│ │ │ │ │ ├── KotlinJacksonRenderer.ts
│ │ │ │ │ ├── KotlinKlaxonRenderer.ts
│ │ │ │ │ ├── KotlinRenderer.ts
│ │ │ │ │ ├── KotlinXRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Objective-C/
│ │ │ │ │ ├── ObjectiveCRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Php/
│ │ │ │ │ ├── PhpRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Pike/
│ │ │ │ │ ├── PikeRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Python/
│ │ │ │ │ ├── JSONPythonRenderer.ts
│ │ │ │ │ ├── PythonRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Ruby/
│ │ │ │ │ ├── RubyRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Rust/
│ │ │ │ │ ├── RustRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Scala3/
│ │ │ │ │ ├── CirceRenderer.ts
│ │ │ │ │ ├── Scala3Renderer.ts
│ │ │ │ │ ├── UpickleRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Smithy4s/
│ │ │ │ │ ├── Smithy4sRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Swift/
│ │ │ │ │ ├── SwiftRenderer.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── TypeScriptEffectSchema/
│ │ │ │ │ ├── TypeScriptEffectSchemaRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── language.ts
│ │ │ │ ├── TypeScriptFlow/
│ │ │ │ │ ├── FlowRenderer.ts
│ │ │ │ │ ├── TypeScriptFlowBaseRenderer.ts
│ │ │ │ │ ├── TypeScriptRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── language.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── TypeScriptZod/
│ │ │ │ │ ├── TypeScriptZodRenderer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── language.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── options.types.ts
│ │ │ │ └── types.ts
│ │ │ ├── rewrites/
│ │ │ │ ├── CombineClasses.ts
│ │ │ │ ├── ExpandStrings.ts
│ │ │ │ ├── FlattenStrings.ts
│ │ │ │ ├── FlattenUnions.ts
│ │ │ │ ├── InferMaps.ts
│ │ │ │ ├── ReplaceObjectType.ts
│ │ │ │ └── ResolveIntersections.ts
│ │ │ ├── support/
│ │ │ │ ├── Acronyms.const.ts
│ │ │ │ ├── Acronyms.ts
│ │ │ │ ├── Chance.ts
│ │ │ │ ├── Comments.ts
│ │ │ │ ├── Converters.ts
│ │ │ │ ├── Strings.ts
│ │ │ │ └── Support.ts
│ │ │ └── types.ts
│ │ └── tsconfig.json
│ ├── quicktype-graphql-input/
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── GraphQLSchema.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── quicktype-typescript-input/
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── EncodedDefaultTypeScriptLibrary.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ └── quicktype-vscode/
│ ├── .gitignore
│ ├── .vscodeignore
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── quicktype-23.0.122.vsix
│ ├── src/
│ │ └── extension.ts
│ └── tsconfig.json
├── script/
│ ├── dev
│ ├── dev.ps1
│ ├── homebrew-update.sh
│ ├── make-encoded-markov-chain.sh
│ ├── make-encoded-ts-lib.sh
│ ├── patch-npm-version.ts
│ ├── publish.sh
│ ├── quickesttype
│ ├── quicktype
│ ├── test
│ └── watch
├── src/
│ ├── CompressedJSONFromStream.ts
│ ├── GraphQLIntrospection.ts
│ ├── TypeSource.ts
│ ├── URLGrammar.ts
│ └── index.ts
├── test/
│ ├── .gitignore
│ ├── acronyms.txt
│ ├── awesome-json-datasets
│ ├── buildkite.ts
│ ├── compare-all.sh
│ ├── fixtures/
│ │ ├── cjson/
│ │ │ └── main.c
│ │ ├── cplusplus/
│ │ │ ├── Generators.hpp
│ │ │ └── main.cpp
│ │ ├── crystal/
│ │ │ └── main.cr
│ │ ├── csharp/
│ │ │ ├── .gitignore
│ │ │ ├── .vscode/
│ │ │ │ ├── launch.json
│ │ │ │ └── tasks.json
│ │ │ ├── Program.cs
│ │ │ └── test.csproj
│ │ ├── csharp-SystemTextJson/
│ │ │ ├── .gitignore
│ │ │ ├── .vscode/
│ │ │ │ ├── launch.json
│ │ │ │ └── tasks.json
│ │ │ ├── Program.cs
│ │ │ └── test.csproj
│ │ ├── dart/
│ │ │ └── parser.dart
│ │ ├── elixir/
│ │ │ ├── .gitignore
│ │ │ ├── main.exs
│ │ │ └── mix.exs
│ │ ├── elm/
│ │ │ ├── .gitignore
│ │ │ ├── Main.elm
│ │ │ ├── elm-package.json
│ │ │ └── runner.js
│ │ ├── flow/
│ │ │ ├── .flowconfig
│ │ │ └── main.js
│ │ ├── golang/
│ │ │ └── main.go
│ │ ├── haskell/
│ │ │ ├── .gitignore
│ │ │ ├── Main.hs
│ │ │ ├── QuickType.hs
│ │ │ ├── Setup.hs
│ │ │ ├── package.yaml
│ │ │ └── stack.yaml
│ │ ├── java/
│ │ │ ├── .classpath
│ │ │ ├── .project
│ │ │ ├── .settings/
│ │ │ │ ├── org.eclipse.jdt.core.prefs
│ │ │ │ └── org.eclipse.m2e.core.prefs
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── io/
│ │ │ └── quicktype/
│ │ │ ├── App.java
│ │ │ ├── Converter.java
│ │ │ └── TopLevel.java
│ │ ├── java-lombok/
│ │ │ ├── .classpath
│ │ │ ├── .project
│ │ │ ├── .settings/
│ │ │ │ ├── org.eclipse.jdt.core.prefs
│ │ │ │ └── org.eclipse.m2e.core.prefs
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── io/
│ │ │ └── quicktype/
│ │ │ ├── App.java
│ │ │ ├── Converter.java
│ │ │ └── TopLevel.java
│ │ ├── javascript/
│ │ │ └── main.js
│ │ ├── javascript-prop-types/
│ │ │ ├── main.js
│ │ │ └── package.json
│ │ ├── kotlin/
│ │ │ ├── .gitignore
│ │ │ ├── TopLevel.kt
│ │ │ ├── build.sh
│ │ │ ├── klaxon-3.0.1.jar
│ │ │ ├── main.kt
│ │ │ ├── run.sh
│ │ │ └── sample.json
│ │ ├── kotlin-jackson/
│ │ │ ├── .gitignore
│ │ │ ├── build.sh
│ │ │ ├── jackson-annotations-2.9.0.jar
│ │ │ ├── jackson-core-2.9.7.jar
│ │ │ ├── jackson-databind-2.9.7.jar
│ │ │ ├── jackson-module-kotlin-2.9.7.jar
│ │ │ ├── main.kt
│ │ │ ├── run.sh
│ │ │ └── runfixture.sh
│ │ ├── objective-c/
│ │ │ ├── ObjectiveCFixture.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ └── xcuserdata/
│ │ │ │ └── david.xcuserdatad/
│ │ │ │ └── xcschemes/
│ │ │ │ ├── ObjectiveCFixture.xcscheme
│ │ │ │ └── xcschememanagement.plist
│ │ │ ├── QTTopLevel.h
│ │ │ ├── QTTopLevel.m
│ │ │ ├── main.m
│ │ │ └── sample.json
│ │ ├── php/
│ │ │ └── main.php
│ │ ├── pike/
│ │ │ └── main.pike
│ │ ├── python/
│ │ │ ├── main.py
│ │ │ └── run.sh
│ │ ├── ruby/
│ │ │ ├── .gitignore
│ │ │ ├── Gemfile
│ │ │ └── main.rb
│ │ ├── rust/
│ │ │ ├── Cargo.toml
│ │ │ └── main.rs
│ │ ├── scala3/
│ │ │ ├── .gitignore
│ │ │ ├── circe.scala
│ │ │ ├── rename/
│ │ │ │ ├── debug.scala
│ │ │ │ └── upickle.scala
│ │ │ └── run.sh
│ │ ├── swift/
│ │ │ ├── .gitignore
│ │ │ ├── SwiftFixture.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── main.swift
│ │ │ └── quicktype.swift
│ │ ├── typescript/
│ │ │ ├── main.ts
│ │ │ └── tsconfig.json
│ │ ├── typescript-effect-schema/
│ │ │ ├── main.ts
│ │ │ ├── package.json
│ │ │ └── tsconfig.json
│ │ └── typescript-zod/
│ │ ├── main.ts
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── fixtures.ts
│ ├── generate-json.py
│ ├── generate-markov-corpus.py
│ ├── inputs/
│ │ ├── graphql/
│ │ │ ├── github.gqlschema
│ │ │ ├── github1.1.json
│ │ │ ├── github1.graphql
│ │ │ ├── github2.1.json
│ │ │ ├── github2.graphql
│ │ │ ├── github3.1.json
│ │ │ ├── github3.graphql
│ │ │ ├── github4.1.json
│ │ │ ├── github4.graphql
│ │ │ ├── github5.1.json
│ │ │ ├── github5.2.json
│ │ │ ├── github5.graphql
│ │ │ ├── github6.1.json
│ │ │ ├── github6.graphql
│ │ │ ├── github7.1.json
│ │ │ ├── github7.graphql
│ │ │ ├── github8.1.json
│ │ │ ├── github8.graphql
│ │ │ ├── github9.1.json
│ │ │ └── github9.graphql
│ │ ├── json/
│ │ │ ├── misc/
│ │ │ │ ├── 00c36.json
│ │ │ │ ├── 00ec5.json
│ │ │ │ ├── 010b1.json
│ │ │ │ ├── 016af.json
│ │ │ │ ├── 033b1.json
│ │ │ │ ├── 050b0.json
│ │ │ │ ├── 06bee.json
│ │ │ │ ├── 07540.json
│ │ │ │ ├── 0779f.json
│ │ │ │ ├── 07c75.json
│ │ │ │ ├── 09f54.json
│ │ │ │ ├── 0a358.json
│ │ │ │ ├── 0a91a.json
│ │ │ │ ├── 0b91a.json
│ │ │ │ ├── 0cffa.json
│ │ │ │ ├── 0e0c2.json
│ │ │ │ ├── 0fecf.json
│ │ │ │ ├── 10be4.json
│ │ │ │ ├── 112b5.json
│ │ │ │ ├── 127a1.json
│ │ │ │ ├── 13d8d.json
│ │ │ │ ├── 14d38.json
│ │ │ │ ├── 167d6.json
│ │ │ │ ├── 16bc5.json
│ │ │ │ ├── 176f1.json
│ │ │ │ ├── 1a7f5.json
│ │ │ │ ├── 1b28c.json
│ │ │ │ ├── 1b409.json
│ │ │ │ ├── 2465e.json
│ │ │ │ ├── 24f52.json
│ │ │ │ ├── 262f0.json
│ │ │ │ ├── 26b49.json
│ │ │ │ ├── 26c9c.json
│ │ │ │ ├── 27332.json
│ │ │ │ ├── 29f47.json
│ │ │ │ ├── 2d4e2.json
│ │ │ │ ├── 2df80.json
│ │ │ │ ├── 31189.json
│ │ │ │ ├── 32431.json
│ │ │ │ ├── 32d5c.json
│ │ │ │ ├── 337ed.json
│ │ │ │ ├── 33d2e.json
│ │ │ │ ├── 34702.json
│ │ │ │ ├── 3536b.json
│ │ │ │ ├── 3659d.json
│ │ │ │ ├── 36d5d.json
│ │ │ │ ├── 3a6b3.json
│ │ │ │ ├── 3e9a3.json
│ │ │ │ ├── 3f1ce.json
│ │ │ │ ├── 421d4.json
│ │ │ │ ├── 437e7.json
│ │ │ │ ├── 43970.json
│ │ │ │ ├── 43eaf.json
│ │ │ │ ├── 458db.json
│ │ │ │ ├── 4961a.json
│ │ │ │ ├── 4a0d7.json
│ │ │ │ ├── 4a455.json
│ │ │ │ ├── 4c547.json
│ │ │ │ ├── 4d6fb.json
│ │ │ │ ├── 4e336.json
│ │ │ │ ├── 54147.json
│ │ │ │ ├── 54d32.json
│ │ │ │ ├── 570ec.json
│ │ │ │ ├── 5dd0d.json
│ │ │ │ ├── 5eae5.json
│ │ │ │ ├── 5eb20.json
│ │ │ │ ├── 5f3a1.json
│ │ │ │ ├── 5f7fe.json
│ │ │ │ ├── 617e8.json
│ │ │ │ ├── 61b66.json
│ │ │ │ ├── 6260a.json
│ │ │ │ ├── 65dec.json
│ │ │ │ ├── 66121.json
│ │ │ │ ├── 6617c.json
│ │ │ │ ├── 67c03.json
│ │ │ │ ├── 68c30.json
│ │ │ │ ├── 6c155.json
│ │ │ │ ├── 6de06.json
│ │ │ │ ├── 6dec6.json
│ │ │ │ ├── 6eb00.json
│ │ │ │ ├── 70c77.json
│ │ │ │ ├── 734ad.json
│ │ │ │ ├── 75912.json
│ │ │ │ ├── 7681c.json
│ │ │ │ ├── 76ae1.json
│ │ │ │ ├── 77392.json
│ │ │ │ ├── 7d397.json
│ │ │ │ ├── 7d722.json
│ │ │ │ ├── 7df41.json
│ │ │ │ ├── 7dfa6.json
│ │ │ │ ├── 7eb30.json
│ │ │ │ ├── 7f568.json
│ │ │ │ ├── 7fbfb.json
│ │ │ │ ├── 80aff.json
│ │ │ │ ├── 82509.json
│ │ │ │ ├── 8592b.json
│ │ │ │ ├── 88130.json
│ │ │ │ ├── 8a62c.json
│ │ │ │ ├── 908db.json
│ │ │ │ ├── 9617f.json
│ │ │ │ ├── 96f7c.json
│ │ │ │ ├── 9847b.json
│ │ │ │ ├── 9929c.json
│ │ │ │ ├── 996bd.json
│ │ │ │ ├── 9a503.json
│ │ │ │ ├── 9ac3b.json
│ │ │ │ ├── 9eed5.json
│ │ │ │ ├── a0496.json
│ │ │ │ ├── a1eca.json
│ │ │ │ ├── a3d8c.json
│ │ │ │ ├── a45b0.json
│ │ │ │ ├── a71df.json
│ │ │ │ ├── a9691.json
│ │ │ │ ├── ab0d1.json
│ │ │ │ ├── abb4b.json
│ │ │ │ ├── ac944.json
│ │ │ │ ├── ad8be.json
│ │ │ │ ├── ae7f0.json
│ │ │ │ ├── ae9ca.json
│ │ │ │ ├── af2d1.json
│ │ │ │ ├── b4865.json
│ │ │ │ ├── b6f2c.json
│ │ │ │ ├── b6fe5.json
│ │ │ │ ├── b9f64.json
│ │ │ │ ├── bb1ec.json
│ │ │ │ ├── be234.json
│ │ │ │ ├── c0356.json
│ │ │ │ ├── c0a3a.json
│ │ │ │ ├── c3303.json
│ │ │ │ ├── c6cfd.json
│ │ │ │ ├── c8c7e.json
│ │ │ │ ├── cb0cc.json
│ │ │ │ ├── cb81e.json
│ │ │ │ ├── ccd18.json
│ │ │ │ ├── cd238.json
│ │ │ │ ├── cd463.json
│ │ │ │ ├── cda6c.json
│ │ │ │ ├── cf0d8.json
│ │ │ │ ├── cfbce.json
│ │ │ │ ├── d0908.json
│ │ │ │ ├── d23d5.json
│ │ │ │ ├── dbfb3.json
│ │ │ │ ├── dc44f.json
│ │ │ │ ├── dd1ce.json
│ │ │ │ ├── dec3a.json
│ │ │ │ ├── df957.json
│ │ │ │ ├── e0ac7.json
│ │ │ │ ├── e2915.json
│ │ │ │ ├── e2a58.json
│ │ │ │ ├── e324e.json
│ │ │ │ ├── e53b5.json
│ │ │ │ ├── e64a0.json
│ │ │ │ ├── e8a0b.json
│ │ │ │ ├── e8b04.json
│ │ │ │ ├── ed095.json
│ │ │ │ ├── f22f5.json
│ │ │ │ ├── f3139.json
│ │ │ │ ├── f3edf.json
│ │ │ │ ├── f466a.json
│ │ │ │ ├── f6a65.json
│ │ │ │ ├── f74d5.json
│ │ │ │ ├── f82d9.json
│ │ │ │ ├── f974d.json
│ │ │ │ ├── faff5.json
│ │ │ │ ├── fcca3.json
│ │ │ │ └── fd329.json
│ │ │ ├── priority/
│ │ │ │ ├── blns-object.json
│ │ │ │ ├── bug427.json
│ │ │ │ ├── bug790.json
│ │ │ │ ├── bug855-short.json
│ │ │ │ ├── bug863.json
│ │ │ │ ├── coin-pairs.json
│ │ │ │ ├── combinations1.json
│ │ │ │ ├── combinations2.json
│ │ │ │ ├── combinations3.json
│ │ │ │ ├── combinations4.json
│ │ │ │ ├── combined-enum.json
│ │ │ │ ├── direct-recursive.json
│ │ │ │ ├── empty-enum.json
│ │ │ │ ├── identifiers.json
│ │ │ │ ├── keywords.json
│ │ │ │ ├── list.json
│ │ │ │ ├── name-style.json
│ │ │ │ ├── nbl-stats.json
│ │ │ │ ├── no-classes.json
│ │ │ │ ├── nst-test-suite.json
│ │ │ │ ├── number-map.json
│ │ │ │ ├── optional-union.json
│ │ │ │ ├── recursive.json
│ │ │ │ ├── simple-identifiers.json
│ │ │ │ ├── union-constructor-clash.json
│ │ │ │ ├── unions.json
│ │ │ │ └── url.json
│ │ │ └── samples/
│ │ │ ├── bitcoin-block.json
│ │ │ ├── getting-started.json
│ │ │ ├── github-events.json
│ │ │ ├── kitchen-sink.json
│ │ │ ├── null-safe.json
│ │ │ ├── pokedex.json
│ │ │ ├── reddit.json
│ │ │ ├── simple-object.json
│ │ │ ├── spotify-album.json
│ │ │ ├── us-avg-temperatures.json
│ │ │ └── us-senators.json
│ │ ├── schema/
│ │ │ ├── a/
│ │ │ │ └── test2.json
│ │ │ ├── accessors.1.json
│ │ │ ├── accessors.schema
│ │ │ ├── any.1.json
│ │ │ ├── any.2.json
│ │ │ ├── any.3.json
│ │ │ ├── any.schema
│ │ │ ├── b/
│ │ │ │ └── test3.json
│ │ │ ├── bool-string.1.fail.bool-string.json
│ │ │ ├── bool-string.1.json
│ │ │ ├── bool-string.1.out.bool-string.json
│ │ │ ├── bool-string.2.json
│ │ │ ├── bool-string.3.json
│ │ │ ├── bool-string.schema
│ │ │ ├── camelCase.schema
│ │ │ ├── camelCase1.json
│ │ │ ├── class-map-union.1.fail.union.json
│ │ │ ├── class-map-union.1.json
│ │ │ ├── class-map-union.2.json
│ │ │ ├── class-map-union.3.json
│ │ │ ├── class-map-union.4.json
│ │ │ ├── class-map-union.schema
│ │ │ ├── class-with-additional.1.fail.union.json
│ │ │ ├── class-with-additional.1.json
│ │ │ ├── class-with-additional.schema
│ │ │ ├── constructor.1.json
│ │ │ ├── constructor.schema
│ │ │ ├── cut-enum.1.json
│ │ │ ├── cut-enum.schema
│ │ │ ├── date-time-or-string.schema
│ │ │ ├── date-time.1.fail.date-time.json
│ │ │ ├── date-time.1.json
│ │ │ ├── date-time.schema
│ │ │ ├── description-with-double-quotes.json
│ │ │ ├── description-with-double-quotes.schema
│ │ │ ├── description.1.json
│ │ │ ├── description.2.json
│ │ │ ├── description.schema
│ │ │ ├── direct-union.1.json
│ │ │ ├── direct-union.schema
│ │ │ ├── enum-with-null.1.json
│ │ │ ├── enum-with-null.2.json
│ │ │ ├── enum-with-null.schema
│ │ │ ├── enum-with-values.schema
│ │ │ ├── enum.1.fail.enum.json
│ │ │ ├── enum.1.json
│ │ │ ├── enum.2.json
│ │ │ ├── enum.3.json
│ │ │ ├── enum.4.json
│ │ │ ├── enum.schema
│ │ │ ├── go-schema-pattern-properties.1.fail.json
│ │ │ ├── go-schema-pattern-properties.1.json
│ │ │ ├── go-schema-pattern-properties.schema
│ │ │ ├── id-no-address.1.json
│ │ │ ├── id-no-address.schema
│ │ │ ├── id-root.1.json
│ │ │ ├── id-root.schema
│ │ │ ├── implicit-all-of.1.json
│ │ │ ├── implicit-all-of.schema
│ │ │ ├── implicit-class-array-union.1.fail.union.json
│ │ │ ├── implicit-class-array-union.1.json
│ │ │ ├── implicit-class-array-union.2.fail.union.json
│ │ │ ├── implicit-class-array-union.2.json
│ │ │ ├── implicit-class-array-union.3.json
│ │ │ ├── implicit-class-array-union.4.json
│ │ │ ├── implicit-class-array-union.5.json
│ │ │ ├── implicit-class-array-union.schema
│ │ │ ├── implicit-one-of.1.json
│ │ │ ├── implicit-one-of.2.json
│ │ │ ├── implicit-one-of.schema
│ │ │ ├── integer-float-union.1.json
│ │ │ ├── integer-float-union.2.json
│ │ │ ├── integer-float-union.schema
│ │ │ ├── integer-string.1.fail.integer-string.json
│ │ │ ├── integer-string.1.json
│ │ │ ├── integer-string.1.out.integer-string.json
│ │ │ ├── integer-string.2.json
│ │ │ ├── integer-string.3.json
│ │ │ ├── integer-string.schema
│ │ │ ├── intersection-nested.schema
│ │ │ ├── intersection.1.fail.no-defaults.json
│ │ │ ├── intersection.1.json
│ │ │ ├── intersection.2.json
│ │ │ ├── intersection.schema
│ │ │ ├── keyword-enum.1.json
│ │ │ ├── keyword-enum.schema
│ │ │ ├── keyword-unions.1.json
│ │ │ ├── keyword-unions.2.json
│ │ │ ├── keyword-unions.schema
│ │ │ ├── list.1.json
│ │ │ ├── list.2.json
│ │ │ ├── list.3.json
│ │ │ ├── list.schema
│ │ │ ├── minmax-integer.1.fail.minmaxInteger.json
│ │ │ ├── minmax-integer.1.json
│ │ │ ├── minmax-integer.schema
│ │ │ ├── minmax.1.fail.minmax.json
│ │ │ ├── minmax.1.json
│ │ │ ├── minmax.schema
│ │ │ ├── minmaxlength.1.fail.minmaxlength.json
│ │ │ ├── minmaxlength.1.json
│ │ │ ├── minmaxlength.schema
│ │ │ ├── multi-type-enum.1.fail.union.json
│ │ │ ├── multi-type-enum.1.json
│ │ │ ├── multi-type-enum.2.json
│ │ │ ├── multi-type-enum.3.json
│ │ │ ├── multi-type-enum.schema
│ │ │ ├── mutually-recursive.1.json
│ │ │ ├── mutually-recursive.2.json
│ │ │ ├── mutually-recursive.schema
│ │ │ ├── non-standard-ref.1.json
│ │ │ ├── non-standard-ref.schema
│ │ │ ├── object-type-required.1.json
│ │ │ ├── object-type-required.2.json
│ │ │ ├── object-type-required.schema
│ │ │ ├── optional-any.1.json
│ │ │ ├── optional-any.2.json
│ │ │ ├── optional-any.schema
│ │ │ ├── pattern.1.fail.pattern.json
│ │ │ ├── pattern.1.json
│ │ │ ├── pattern.schema
│ │ │ ├── postman-collection.1.json
│ │ │ ├── postman-collection.2.json
│ │ │ ├── postman-collection.schema
│ │ │ ├── ref-id-files.1.json
│ │ │ ├── ref-id-files.schema
│ │ │ ├── ref-remote.1.json
│ │ │ ├── ref-remote.2.json
│ │ │ ├── ref-remote.3.json
│ │ │ ├── ref-remote.schema
│ │ │ ├── renaming-bug.schema
│ │ │ ├── required-draft3.schema
│ │ │ ├── required-non-properties.1.json
│ │ │ ├── required-non-properties.schema
│ │ │ ├── required.1.fail.no-defaults.json
│ │ │ ├── required.schema
│ │ │ ├── simple-ref.1.json
│ │ │ ├── simple-ref.1.ref
│ │ │ ├── simple-ref.2.json
│ │ │ ├── simple-ref.3.json
│ │ │ ├── simple-ref.schema
│ │ │ ├── strict-optional.1.fail.strict-optional.json
│ │ │ ├── strict-optional.schema
│ │ │ ├── top-level-enum.1.json
│ │ │ ├── top-level-enum.schema
│ │ │ ├── top-level-primitive.schema
│ │ │ ├── tuple.1.json
│ │ │ ├── tuple.schema
│ │ │ ├── union-list.1.json
│ │ │ ├── union-list.2.json
│ │ │ ├── union-list.3.json
│ │ │ ├── union-list.schema
│ │ │ ├── union.1.json
│ │ │ ├── union.schema
│ │ │ ├── uuid.1.fail.uuid.json
│ │ │ ├── uuid.1.json
│ │ │ ├── uuid.2.json
│ │ │ ├── uuid.schema
│ │ │ └── vega-lite.schema
│ │ ├── spotify-api/
│ │ │ ├── Album/
│ │ │ │ ├── She's So Unusual.json
│ │ │ │ └── The Best of Keane (Deluxe Edition).json
│ │ │ ├── Artist.json
│ │ │ ├── Playlist.json
│ │ │ ├── Track.json
│ │ │ └── UserProfile.json
│ │ └── urls/
│ │ └── github.json
│ ├── keywords.py
│ ├── keywords.txt
│ ├── languages.ts
│ ├── lib/
│ │ ├── deepEquals.ts
│ │ └── multicore.ts
│ ├── make-keyword-tests.sh
│ ├── run-for-all.sh
│ ├── test-awesome.py
│ ├── test.ts
│ ├── tsconfig.json
│ └── utils.ts
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
*.sh text eol=lf
scripts/* eol=lf
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: quicktype
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: New Bug Report
about: Use this template for reporting new bugs.
title: "[BUG]: bug description here"
labels: bug
---
<!--- Provide a general summary of the issue in the Title above -->
## Issue Type
<!--- Is this an issue with quicktype output, input parsing, or during runtime ? -->
## Context (Environment, Version, Language)
<!-- What input format and what target output language were you using ? -->
Input Format:
Output Language:
<!-- Please specify how you were using the library (CLI, npm package, or app.quicktype.io) and what version, if applicable -->
CLI, npm, or app.quicktype.io:
Version:
## Description
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Input Data
<!--- Please provide a snippet of your input data. -->
<!--- Please truncate if it is too large and ideally isolate to a minimum reproducible example -->
## Expected Behaviour / Output
<!--- Tell us what should happen / what output should be generated -->
## Current Behaviour / Output
<!--- Tell us what happens instead of the expected behavior / what output is currently generated -->
## Steps to Reproduce
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Possible Solution
<!--- Optional, suggest a fix/reason for the bug, -->
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
# contact_links:
# - name: GitHub Community Support
# url: https://github.com/orgs/community/discussions
# about: Please ask and answer questions here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature Request
about: Use this template for requesting new features.
title: "[FEATURE]: feature description here"
labels: enhancement
---
<!--- Provide a general summary of the feature in the Title above -->
## Context (Input, Language)
<!-- What input format and what target output language would this affect ? -->
Input Format:
Output Language:
## Description
<!--- How would this feature benefit you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Current Behaviour / Output
<!--- Tell us what happens / what output is currently generated -->
## Proposed Behaviour / Output
<!--- Tell us what should happen / what output should be generated -->
## Solution
<!-- Describe or propose a potential solution -->
## Alternatives
<!-- Please describe any alternatives you have considered and how they do or do not work for you -->
## Context
<!-- Add any additional context here, if applicable -->
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
================================================
FILE: .github/pull_request_template.md
================================================
## Description
<!--- Describe your changes in detail -->
## Related Issue
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
<!--- Please link to the issue here: -->
## Motivation and Context
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->
## Previous Behaviour / Output
<!--- Provide an example of what was happening before your change -->
## New Behaviour / Output
<!--- Provide an example of what now happens after your change -->
## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran, including any new unit tests --->
## Screenshots (if appropriate):
================================================
FILE: .github/workflows/master.yaml
================================================
name: Build and Release
on:
push:
branches:
- master
jobs:
publish:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/setup
env:
PUBLISH: true
- run: npm run pub
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
VSCE_TOKEN: ${{ secrets.VSCE_TOKEN }}
================================================
FILE: .github/workflows/setup/action.yaml
================================================
name: Setup
description: Setup common stuff for jobs
runs:
using: "composite"
steps:
- name: Setup environment
shell: bash
run: |
NODE_VERSION=$(cat .nvmrc | xargs)
echo "node_version=$NODE_VERSION" >> $GITHUB_ENV
# Create keys to control caching
BASE_KEY="${{ runner.os }}"
NODE_MODULES_KEY="$BASE_KEY-${{ hashFiles('package-lock.json') }}"
echo "node_modules_key=$NODE_MODULES_KEY" >> $GITHUB_ENV
SOURCE_KEY="$NODE_MODULES_KEY-${{ hashFiles('src/**') }}"
echo "source_key=$SOURCE_KEY" >> $GITHUB_ENV
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ env.node_version }}
cache: npm
registry-url: "https://registry.npmjs.org"
- name: Install Dependencies
run: npm ci
shell: bash
- name: Build Packages
run: npm run build
shell: bash
================================================
FILE: .github/workflows/test-pr.yaml
================================================
name: Test PR
on:
pull_request:
branches:
- master
- "release/**"
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/setup
test:
needs: [build]
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: true
matrix:
fixture:
- typescript,typescript-zod,typescript-effect-schema
- javascript,schema-javascript
- golang,schema-golang
- cjson,schema-cjson
- cplusplus,schema-cplusplus
- flow,schema-flow
- java,schema-java
- python,schema-python
- haskell,schema-haskell
- csharp,schema-csharp,schema-json-csharp,graphql-csharp,csharp-SystemTextJson
- json-ts-csharp
- dart,schema-dart
# - swift,schema-swift # pgp issue
- javascript-prop-types
- ruby
- php
- scala3,schema-scala3
- elixir,schema-elixir,graphql-elixir
# Partially working
# - schema-typescript # TODO Unify with typescript once fixed
# Implementation is too outdated to test in GitHub Actions
# - elm,schema-elm
# Language is too niche / obscure to test easily on ubuntu-22.04
# - pike,schema-pike
# Not yet started
# @schani can you help me understand this fixture?
# It looks like it tests 13+ languages?
# - graphql
# Never tested?
# - crystal
runs-on: [ubuntu-22.04]
include:
# Rust is very slow, so we use a larger runner
- fixture: rust,schema-rust
runs-on: ubuntu-latest-16-cores
# Kotlin is also slow
- fixture: kotlin,schema-kotlin,kotlin-jackson,schema-kotlin-jackson
runs-on: ubuntu-latest-16-cores
# - fixture: objective-c # segfault on compiled test cmd
# runs-on: macos-latest
name: ${{ matrix.fixture }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/setup
- name: Setup PHP
if: ${{ contains(matrix.fixture, 'php') }}
uses: shivammathur/setup-php@v2
with:
php-version: "8.2"
- name: Setup Dart
if: ${{ contains(matrix.fixture, 'dart') }}
uses: dart-lang/setup-dart@v1.3
with:
sdk: 2.14.4
- name: Setup Swift
if: ${{ contains(matrix.fixture, 'swift') }}
uses: swift-actions/setup-swift@v1
with:
swift-version: "5.7.2"
- name: Install Ruby
uses: ruby/setup-ruby@v1
if: ${{ contains(matrix.fixture, 'ruby') }}
with:
ruby-version: "3.2.0"
- name: Setup .NET Core SDK
if: ${{ contains(matrix.fixture, 'csharp') }}
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6
- name: Install Rust
if: ${{ contains(matrix.fixture, 'rust') }}
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Install Elm
if: ${{ contains(matrix.fixture, 'elm') }}
run: |
curl -L -o elm.gz https://github.com/elm/compiler/releases/download/0.19.1/binary-for-linux-64-bit.gz
gunzip elm.gz
chmod +x elm
sudo mv elm /usr/local/bin/
- name: Install Haskell
if: ${{ contains(matrix.fixture, 'haskell') }}
run: |
if ! command -v stack > /dev/null 2>&1; then
curl -sL "https://get.haskellstack.org/" | sh
fi
- name: Install Python 3.7
if: ${{ contains(matrix.fixture, 'python') }}
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: Install Python Dependencies
if: ${{ contains(matrix.fixture, 'python') }}
run: |
pip3.7 install mypy python-dateutil types-python-dateutil
- name: Install flow
if: ${{ contains(matrix.fixture, 'flow') }}
run: |
npm install -g flow-bin@0.66.0 flow-remove-types@1.2.3
- name: Install Java
if: ${{ matrix.fixture == 'java,schema-java' || contains(matrix.fixture, 'kotlin') }}
uses: actions/setup-java@v3
with:
java-version: "11"
distribution: "adopt"
- name: Install Maven
if: ${{ matrix.fixture == 'java,schema-java' }}
uses: stCarolas/setup-maven@v4.5
with:
maven-version: 3.8.2
- name: Install Kotlin
if: ${{ contains(matrix.fixture, 'kotlin') }}
uses: fwilhe2/setup-kotlin@main
- name: Install go
if: ${{ contains(matrix.fixture, 'golang') }}
uses: actions/setup-go@v3
with:
go-version: 1.15
- name: Install C
if: ${{ contains(matrix.fixture, 'cjson') }}
run: |
sudo apt-get update
sudo apt-get -y install build-essential valgrind
- name: Install C++
if: ${{ contains(matrix.fixture, 'cplusplus') }}
run: |
sudo apt-get update
sudo apt-get -y install libboost-all-dev software-properties-common g++ --assume-yes
- name: Install scala
if: ${{ contains(matrix.fixture, 'scala3') }}
uses: VirtusLab/scala-cli-setup@main
- run: echo '@main def hello() = println("We need this spam print statement for bloop to exit correctly...")' | scala-cli _
if: ${{ contains(matrix.fixture, 'scala3') }}
- name: Install Elixir
if: ${{ contains(matrix.fixture, 'elixir') }}
uses: erlef/setup-beam@v1
with:
elixir-version: "1.15.7"
otp-version: "26.0"
- run: QUICKTEST=true FIXTURE=${{ matrix.fixture }} npm test
test-complete:
if: ${{ cancelled() || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure') }}
needs: test
runs-on: ubuntu-22.04
steps:
- run: |
echo "Some workflows have failed!"
exit 1
================================================
FILE: .gitignore
================================================
node_modules/
/test/awesome-json-results/
npm-debug.log
yarn.lock
shrinkwrap.yaml
test/csharp/QuickType.cs
test/golang/quicktype.go
test/golang/schema.json
test/golang/schema-from-schema.json
test/elm/elm-stuff/
test/elm/elm.js
test/elm/QuickType.elm
test/fixtures/cjson/cJSON.*
test/fixtures/cjson/hashtable.*
test/fixtures/cjson/list.*
test/fixtures/rust/target
test/fixtures/java/target
test/fixtures/java-lombok/target
packages/*/dist
packages/*/node_modules
*.log
/test/elm/libsysconfcpus/
/test/runs
test/fixtures/cplusplus/json.hpp
/dist
test/fixtures/objective-c/quicktype
*.xcbkptlist
*.xcuserstate
/bin
/.node-persist
/.vs
.idea
.DS_Store
/.bsp
.metals
.scala-build
================================================
FILE: .nvmrc
================================================
v22.14.0
================================================
FILE: .vscode/extensions.json
================================================
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
}
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "quicktype",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/ts-node/dist/_bin.js",
"runtimeArgs": ["--nolazy"],
"args": [
"--project",
"src/cli/tsconfig.json",
"src/cli/index.ts",
"--lang",
"dart",
"--src-lang",
"json",
"./test/inputs/json/priority/blns-object.json"
],
"cwd": "${workspaceRoot}",
"protocol": "inspector"
},
{
"name": "test",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/ts-node/dist/_bin.js",
"args": ["--project", "test/tsconfig.json", "test/test.ts"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"env": {
"CPUs": "1",
"FIXTURE": "golang"
}
}
]
}
================================================
FILE: .vscode/settings.json
================================================
{
// Place your settings in this file to overwrite default and user settings.
"editor.formatOnSave": true,
"search.exclude": {
"**/.git": true,
"**/node_modules": true,
"**/bower_components": true,
"**/tmp": true,
"output": true,
"**/obj": true,
"**/bin": true,
"test/inputs": true,
"test/runs": true,
"app/build": true,
"elm-stuff": true,
"dist": true
},
"explorer.excludeGitIgnore": false,
"java.configuration.updateBuildConfiguration": "automatic",
"files.associations": {
"*.schema": "jsonc"
},
"[json]": {
"editor.defaultFormatter": "biomejs.biome",
"editor.wordWrap": "on",
"editor.insertSpaces": true,
"editor.tabSize": 4,
"editor.detectIndentation": false
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.wordWrap": "on",
"editor.insertSpaces": true,
"editor.tabSize": 4,
"editor.detectIndentation": false
}
}
================================================
FILE: FAQ.md
================================================
# The quicktype FAQ
- [What is this?](#what-is-this)
- [How does this work?](#how-does-this-work)
- [How do I use this with my code?](#how-do-i-use-this-with-my-code)
- [No code appears when I paste my JSON](#why-does-quicktype-complain-about-my-json)
- [I think I found a bug!](#i-think-i-found-a-bug)
- [When will you support my favorite language?](#when-will-you-support-my-favorite-language)
- [Why do my types have weird names?](#why-do-my-types-have-weird-names)
- [I'd like the output to be a little different.](#id-like-the-output-to-be-a-little-different)
- [Am I allowed to use the generated code in my software?](#am-i-allowed-to-use-the-generated-code-in-my-software)
- [This map/dictionary should be a class!](#this-mapdictionary-should-be-a-class)
- [This class should be a map/dictionary!](#this-class-should-be-a-mapdictionary)
- [Where can I learn more about JSON Schema?](#where-can-i-learn-more-about-json-schema)
- [I'd like to customize the output for my particular application.](#id-like-to-customize-the-output-for-my-particular-application)
- [How can I control the property order in JSON Schema?](#how-can-i-control-the-property-order-in-json-schema)
- [quicktype is awesome, I'd like to support it!](#quicktype-is-awesome-id-like-to-support-it)
- [How is this different from other JSON converters?](#how-is-quicktype-different-from-other-json-converters)
## What is this?
[quicktype](https://app.quicktype.io) produces nice types and JSON (de)serializers for many programming languages. It can infer types from JSON but also takes types from JSON Schema, TypeScript, and GraphQL.
## How does this work?
You paste JSON on the left, and code appears on the right. [This video](https://www.youtube.com/watch?v=19bMU7jZ27w) gives a quick demonstration.
## How is this different from other JSON converters?
`quicktype` is superior to other JSON converters in many important ways:
- **Type inference**: quicktype infers optionals, dates, UUIDs, enums, integers, and unions. It also infers maps (versus objects) using a Markov chain.
- **Careful naming**: quicktype’s naming system creates nice, legal, unique names for types and properties, handling reserved words and tricky corner cases (e.g. `{ “”: “this is legal”, “null”: “so is this”, "1;DROP TABLE users”: “and this" }`).
- **Heterogeneous data**: JSON data is often heterogenous. quicktype infers this, and creates union types in languages that support them, or synthetic union types in languages that don’t (e.g. try quicktyping `[0, “zero”]` as Swift and Go).
- **Type unification**. This works across multiple samples, so you can quicktype a directory of API data, for example, and unify types across all responses (e.g. you’ll get just one `Customer` type, even if customer data occurs in many samples). You can also provide multiple samples for the same type for better coverage.
- **Marshalling code**: In addition to types, quicktype generates functions for marshalling your types to and from JSON.
- Supports dynamic languages: quicktype can add dynamic typechecks for JavaScript, TypeScript, Flow, Python, and Ruby.
- **Convenient CLI**: Run `quicktype https://blockchain.info/latestblock -o LatestBlock.ts` to quicktype a Bitcoin API in TypeScript.
- **Client-side**: [The web version of quicktype](https://app.quicktype.io/) runs on the client, so servers never see your data (most JSON converters send your JSON to their server)
- **Typed input**: Feed quicktype TypeScript or JSON Schema instead of JSON for better control over generated types.
- **Code quality**: quicktype emits clean code
## How do I use this with my code?
The generated code has comments at the start with a short code sample that shows how to convert a JSON string to instances of the generated types. You can also go the other way, which is very easy, too, but you'll have to look at the generated code to see how it works.
## No code appears when I paste my JSON
This is probably because your JSON is invalid. The most common issues we're seeing are
- Trailing commas in arrays and objects: `[1, 2, 3]` is valid JSON, while `[1, 2, 3,]` is not.
- Unquoted property keys in objects: `{ "name": "Mark" }` is valid JSON, while `{ name: "Mark" }` is not.
- Comments: JSON does not support comments.
If you're unsure whether your JSON is valid, please use [JSONLint](https://jsonlint.com).
## I think I found a bug!
Please [file an issue on GitHub](https://github.com/quicktype/quicktype/issues). Give as much context as you can so that we can reproduce it. Assume we know nothing about what you're trying to do (because we don't).
## When will you support my favorite language?
Please check whether there is [a pull request](https://github.com/quicktype/quicktype/pulls) that adds support for your language. If there is, please consider helping it along. If there isn't, please consider contributing one.
## Why do my types have weird names?
Sometimes quicktype has trouble giving names to your types. There are a couple of causes for this:
- The name quicktype would like to give to your type conflicts with a name that's already used in the target language, such as `String` in C#.
- Two or more types in your data have the same name.
- A type has so many potential names that quicktype can't find a commonality between them.
If you're using JSON Schema, you can use the `title` property to give a type a name that quicktype tries hard to use.
## I'd like the output to be a little different.
Check out the "Language" and "Other" tabs in the options panel. What you're looking for might just be there:
<img width="33%" height="33%" alt="Screenshot showing the options panel" src="https://raw.githubusercontent.com/quicktype/quicktype/master/media/faq/options-panel.png" />
If it isn't, then depending on your coding skills, you might be able to [customize the output](https://blog.quicktype.io/customizing-quicktype/).
## Am I allowed to use the generated code in my software?
Yes, there are no intellectual property restrictions on the code that quicktype generates.
## This map/dictionary should be a class!
quicktype has [advanced heuristics](https://blog.quicktype.io/markov/) to decide whether a JSON object should be represented by a class or a map, but sometimes it gets it wrong. If it generates a map, but you'd rather have a class, you can disable map detection in the options panel:
<img width="66%" height="66%" alt="Screenshot showing the 'Detect maps' switch in the options panel" src="https://raw.githubusercontent.com/quicktype/quicktype/master/media/faq/disable-detect-maps.png" />
## This class should be a map/dictionary!
quicktype has [advanced heuristics](https://blog.quicktype.io/markov/) to decide whether a JSON object should be represented by a class or a map, but sometimes it gets it wrong. If it generates a class, but you need a map, first make sure that you have the "Detect maps" option set in the options panel. Also, check that all properties in the object have the same exact type because quicktype only makes a map if that's the case. If that still doesn't do it, you have two options:
- Duplicate some of the properties and/or change the property names to look more random.
- Output JSON Schema, modify it to produce a map, and then use the schema as the input to quicktype.
## Where can I learn more about JSON Schema?
The [JSON Schema homepage](http://json-schema.org) contains many links and resources.
## I'd like to customize the output for my particular application.
We have [a blog post](https://blog.quicktype.io/customizing-quicktype/) on that very topic.
## How can I control the property order in JSON Schema?
There is a custom schema field `quicktypePropertyOrder` which can be used to specify the order of properties for quicktype.
For example:
```json
...
"Location": {
"quicktypePropertyOrder": [ "latitude", "longitude" ],
"type": "object",
"properties": {
"latitude": {
"type": "number",
"description": "The latitude component of the location",
"example": -32.204754
},
...
},
"required": [ "latitude", "longitude" ]
},
...
```
## quicktype is awesome, I'd like to support it!
There are many ways you can support quicktype:
- Tell all your friends about it! Show it around, tweet about it, write a blog post, present it at a lightning talk.
- quicktype is open source - please contribute! We need documentation at least as much as code, so you don't need strong coding skills to make an impact. If you do, we have [lots of open issues](https://github.com/quicktype/quicktype/issues) that need resolving, almost all of our target languages can be improved, and there are many, many programming languages that quicktype doesn't support yet. Talk to us [on Slack](http://slack.quicktype.io) if you're interested - we're always happy to help.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================

[](https://badge.fury.io/js/quicktype)

`quicktype` generates strongly-typed models and serializers from JSON, JSON Schema, TypeScript, and [GraphQL queries](https://blog.quicktype.io/graphql-with-quicktype/), making it a breeze to work with JSON type-safely in many programming languages.
- [Try `quicktype` in your browser](https://app.quicktype.io).
- Read ['A first look at quicktype'](http://blog.quicktype.io/first-look/) for more introduction.
- If you have any questions, check out the [FAQ](FAQ.md) first.
### Supported Inputs
| JSON | JSON API URLs | [JSON Schema](https://app.quicktype.io/#s=coordinate) |
| ---- | ------------- | ----------------------------------------------------- |
| TypeScript | GraphQL queries |
| ---------- | --------------- |
### Target Languages
| [Ruby](https://app.quicktype.io/#l=ruby) | [JavaScript](https://app.quicktype.io/#l=js) | [Flow](https://app.quicktype.io/#l=flow) | [Rust](https://app.quicktype.io/#l=rust) | [Kotlin](https://app.quicktype.io/#l=kotlin) |
| ---------------------------------------- | -------------------------------------------- | ---------------------------------------- | ---------------------------------------- | -------------------------------------------- |
| [Dart](https://app.quicktype.io/#l=dart) | [Python](https://app.quicktype.io/#l=python) | [C#](https://app.quicktype.io/#l=cs) | [Go](https://app.quicktype.io/#l=go) | [C++](https://app.quicktype.io/#l=cpp) |
| ---------------------------------------- | -------------------------------------------- | ------------------------------------ | ------------------------------------ | -------------------------------------- |
| [Java](https://app.quicktype.io/#l=java) | [Scala](https://app.quicktype.io/#l=scala3) | [TypeScript](https://app.quicktype.io/#l=ts) | [Swift](https://app.quicktype.io/#l=swift) | [Objective-C](https://app.quicktype.io/#l=objc) | [Elm](https://app.quicktype.io/#l=elm) |
| ---------------------------------------- | ------------------------------------------- | -------------------------------------------- | ------------------------------------------ | ----------------------------------------------- | -------------------------------------- |
| [JSON Schema](https://app.quicktype.io/#l=schema) | [Pike](https://app.quicktype.io/#l=pike) | [Prop-Types](https://app.quicktype.io/#l=javascript-prop-types) | [Haskell](https://app.quicktype.io/#l=haskell) | [PHP](https://app.quicktype.io/#l=php) |
| ------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------- | -------------------------------------- |
_Missing your favorite language? Please implement it!_
## Installation
There are many ways to use `quicktype`. [app.quicktype.io](https://app.quicktype.io) is the most powerful and complete UI. The web app also works offline and doesn't send your sample data over the Internet, so paste away!
For the best CLI, we recommend installing `quicktype` globally via `npm`:
```bash
npm install -g quicktype
```
## Using `quicktype`
```bash
# Run quicktype without arguments for help and options
quicktype
# quicktype a simple JSON object in C#
echo '{ "name": "David" }' | quicktype -l csharp
# quicktype a top-level array and save as Go source
echo '[1, 2, 3]' | quicktype -o ints.go
# quicktype a sample JSON file in Swift
quicktype person.json -o Person.swift
# A verbose way to do the same thing
quicktype \
--src person.json \
--src-lang json \
--lang swift \
--top-level Person \
--out Person.swift
# quicktype a directory of samples as a C++ program
# Suppose ./blockchain is a directory with files:
# latest-block.json transactions.json marketcap.json
quicktype ./blockchain -o blockchain-api.cpp
# quicktype a live JSON API as a Java program
quicktype https://api.somewhere.com/data -o Data.java
```
### Generating code from JSON schema
The recommended way to use `quicktype` is to generate a JSON schema from sample data, review and edit the schema, commit the schema to your project repo, then generate code from the schema as part of your build process:
```bash
# First, infer a JSON schema from a sample.
quicktype pokedex.json -l schema -o schema.json
# Review the schema, make changes,
# and commit it to your project repo.
# Finally, generate model code from schema in your
# build process for whatever languages you need:
quicktype -s schema schema.json -o src/ios/models.swift
quicktype -s schema schema.json -o src/android/Models.java
quicktype -s schema schema.json -o src/nodejs/Models.ts
# All of these models will serialize to and from the same
# JSON, so different programs in your stack can communicate
# seamlessly.
```
### Generating code from TypeScript (Experimental)
You can achieve a similar result by writing or generating a [TypeScript](http://www.typescriptlang.org/) file, then quicktyping it. TypeScript is a typed superset of JavaScript with simple, succinct syntax for defining types:
```typescript
interface Person {
name: string;
nickname?: string; // an optional property
luckyNumber: number;
}
```
You can use TypeScript just like JSON schema was used in the last example:
```bash
# First, infer a TypeScript file from a sample (or just write one!)
quicktype pokedex.json -o pokedex.ts --just-types
# Review the TypeScript, make changes, etc.
quicktype pokedex.ts -o src/ios/models.swift
```
### Calling `quicktype` from JavaScript
You can use `quicktype` as a JavaScript function within `node` or browsers. First add the `quicktype-core` package:
```bash
$ npm install quicktype-core
```
In general, first you create an `InputData` value with one or more JSON samples, JSON schemas, TypeScript sources, or other supported input types. Then you call `quicktype`, passing that `InputData` value and any options you want.
```javascript
import {
quicktype,
InputData,
jsonInputForTargetLanguage,
JSONSchemaInput,
FetchingJSONSchemaStore
} from "quicktype-core";
async function quicktypeJSON(targetLanguage, typeName, jsonString) {
const jsonInput = jsonInputForTargetLanguage(targetLanguage);
// We could add multiple samples for the same desired
// type, or many sources for other types. Here we're
// just making one type from one piece of sample JSON.
await jsonInput.addSource({
name: typeName,
samples: [jsonString]
});
const inputData = new InputData();
inputData.addInput(jsonInput);
return await quicktype({
inputData,
lang: targetLanguage
});
}
async function quicktypeJSONSchema(targetLanguage, typeName, jsonSchemaString) {
const schemaInput = new JSONSchemaInput(new FetchingJSONSchemaStore());
// We could add multiple schemas for multiple types,
// but here we're just making one type from JSON schema.
await schemaInput.addSource({ name: typeName, schema: jsonSchemaString });
const inputData = new InputData();
inputData.addInput(schemaInput);
return await quicktype({
inputData,
lang: targetLanguage
});
}
async function main() {
const { lines: swiftPerson } = await quicktypeJSON("swift", "Person", jsonString);
console.log(swiftPerson.join("\n"));
const { lines: pythonPerson } = await quicktypeJSONSchema("python", "Person", jsonSchemaString);
console.log(pythonPerson.join("\n"));
}
main();
```
The argument to `quicktype` is a complex object with many optional properties. [Explore its definition](https://github.com/quicktype/quicktype/blob/master/packages/quicktype-core/src/Run.ts#L637) to understand what options are allowed.
### Adding Custom logic or Rendering:
Quicktype supports creating your own custom languages and rendering output, you can extend existing classes or create your own to be using by the `quicktype function`.<br/>
Check out [this guide](./doc/CustomRenderer.md) for more info.
## Contributing
`quicktype` is [Open Source](LICENSE) and we love contributors! In fact, we have a [list of issues](https://github.com/quicktype/quicktype/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Ahelp-wanted) that are low-priority for us, but for which we'd happily accept contributions. Support for new target languages is also strongly desired. If you'd like to contribute, need help with anything at all, or would just like to talk things over, come [join us on Slack](http://slack.quicktype.io/).
### Setup, Build, Run
`quicktype` is implemented in TypeScript and requires `nodejs` and `npm` to build and run.
First, install `typescript` globally via `npm`:
Clone this repo and do:
#### macOS / Linux
```bash
nvm use
npm install
script/quicktype # rebuild (slow) and run (fast)
```
#### Windows
```bash
npm install --ignore-scripts # Install dependencies
npm install -g typescript # Install typescript globally
tsc --project src/cli # Rebuild
node dist\cli\index.js # Run
```
### Edit
Install [Visual Studio Code](https://code.visualstudio.com/), open this
workspace, and install the recommended extensions:
```bash
code . # opens in VS Code
```
### Live-reloading for quick feedback
When working on an output language, you'll want to view generated
output as you edit. Use `npm start` to watch for changes and
recompile and rerun `quicktype` for live feedback. For example, if you're
developing a new renderer for `fortran`, you could use the following command to
rebuild and reinvoke `quicktype` as you implement your renderer:
```bash
npm start -- "--lang fortran pokedex.json"
```
The command in quotes is passed to `quicktype`, so you can render local `.json`
files, URLs, or add other options.
### Test
```bash
# Run full test suite
npm run test
# Test a specific language (see test/languages.ts)
FIXTURE=golang npm test
# Test a single sample or directory
FIXTURE=swift npm test -- pokedex.json
FIXTURE=swift npm test -- test/inputs/json/samples
```
================================================
FILE: biome.json
================================================
{
"files": {
"ignore": [
"test/runs",
"test/inputs",
"dist",
"node_modules",
"packages/*/dist",
"packages/*/node_modules"
]
},
"formatter": {
"indentStyle": "space",
"indentWidth": 4
}
}
================================================
FILE: data/lib.d.ts
================================================
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/// <reference no-default-lib="true"/>
/////////////////////////////
/// ECMAScript APIs
/////////////////////////////
declare const NaN: number;
declare const Infinity: number;
declare function eval(x: string): any;
declare function parseInt(s: string, radix?: number): number;
declare function parseFloat(string: string): number;
declare function isNaN(number: number): boolean;
declare function isFinite(number: number): boolean;
declare function decodeURI(encodedURI: string): string;
declare function decodeURIComponent(encodedURIComponent: string): string;
declare function encodeURI(uri: string): string;
declare function encodeURIComponent(uriComponent: string): string;
interface PropertyDescriptor {
configurable?: boolean;
enumerable?: boolean;
value?: any;
writable?: boolean;
get?(): any;
set?(v: any): void;
}
interface PropertyDescriptorMap {
[s: string]: PropertyDescriptor;
}
interface Object {
constructor: Function;
toString(): string;
toLocaleString(): string;
valueOf(): Object;
hasOwnProperty(v: string): boolean;
isPrototypeOf(v: Object): boolean;
propertyIsEnumerable(v: string): boolean;
}
interface ObjectConstructor {
new (value?: any): Object;
(): any;
(value: any): any;
readonly prototype: Object;
getPrototypeOf(o: any): any;
getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor | undefined;
getOwnPropertyNames(o: any): string[];
create(o: object | null): any;
create(o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any;
defineProperty(o: any, p: string, attributes: PropertyDescriptor & ThisType<any>): any;
defineProperties(o: any, properties: PropertyDescriptorMap & ThisType<any>): any;
seal<T>(o: T): T;
freeze<T>(a: T[]): ReadonlyArray<T>;
freeze<T extends Function>(f: T): T;
freeze<T>(o: T): Readonly<T>;
preventExtensions<T>(o: T): T;
isSealed(o: any): boolean;
isFrozen(o: any): boolean;
isExtensible(o: any): boolean;
keys(o: {}): string[];
}
declare const Object: ObjectConstructor;
interface Function {
apply(this: Function, thisArg: any, argArray?: any): any;
call(this: Function, thisArg: any, ...argArray: any[]): any;
bind(this: Function, thisArg: any, ...argArray: any[]): any;
toString(): string;
prototype: any;
readonly length: number;
// Non-standard extensions
arguments: any;
caller: Function;
}
interface FunctionConstructor {
new (...args: string[]): Function;
(...args: string[]): Function;
readonly prototype: Function;
}
declare const Function: FunctionConstructor;
interface IArguments {
[index: number]: any;
length: number;
callee: Function;
}
interface String {
toString(): string;
charAt(pos: number): string;
charCodeAt(index: number): number;
concat(...strings: string[]): string;
indexOf(searchString: string, position?: number): number;
lastIndexOf(searchString: string, position?: number): number;
localeCompare(that: string): number;
match(regexp: string | RegExp): RegExpMatchArray | null;
replace(searchValue: string | RegExp, replaceValue: string): string;
replace(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
search(regexp: string | RegExp): number;
slice(start?: number, end?: number): string;
split(separator: string | RegExp, limit?: number): string[];
substring(start: number, end?: number): string;
toLowerCase(): string;
toLocaleLowerCase(): string;
toUpperCase(): string;
toLocaleUpperCase(): string;
trim(): string;
readonly length: number;
// IE extensions
substr(from: number, length?: number): string;
valueOf(): string;
readonly [index: number]: string;
}
interface StringConstructor {
new (value?: any): String;
(value?: any): string;
readonly prototype: String;
fromCharCode(...codes: number[]): string;
}
declare const String: StringConstructor;
interface Boolean {
valueOf(): boolean;
}
interface BooleanConstructor {
new (value?: any): Boolean;
(value?: any): boolean;
readonly prototype: Boolean;
}
declare const Boolean: BooleanConstructor;
interface Number {
toString(radix?: number): string;
toFixed(fractionDigits?: number): string;
toExponential(fractionDigits?: number): string;
toPrecision(precision?: number): string;
valueOf(): number;
}
interface NumberConstructor {
new (value?: any): Number;
(value?: any): number;
readonly prototype: Number;
readonly MAX_VALUE: number;
readonly MIN_VALUE: number;
readonly NaN: number;
readonly NEGATIVE_INFINITY: number;
readonly POSITIVE_INFINITY: number;
}
declare const Number: NumberConstructor;
interface TemplateStringsArray extends ReadonlyArray<string> {
readonly raw: ReadonlyArray<string>;
}
interface Math {
readonly E: number;
readonly LN10: number;
readonly LN2: number;
readonly LOG2E: number;
readonly LOG10E: number;
readonly PI: number;
readonly SQRT1_2: number;
readonly SQRT2: number;
abs(x: number): number;
acos(x: number): number;
asin(x: number): number;
atan(x: number): number;
atan2(y: number, x: number): number;
ceil(x: number): number;
cos(x: number): number;
exp(x: number): number;
floor(x: number): number;
log(x: number): number;
max(...values: number[]): number;
min(...values: number[]): number;
pow(x: number, y: number): number;
random(): number;
round(x: number): number;
sin(x: number): number;
sqrt(x: number): number;
tan(x: number): number;
}
declare const Math: Math;
interface Date {
toString(): string;
toDateString(): string;
toTimeString(): string;
toLocaleString(): string;
toLocaleDateString(): string;
toLocaleTimeString(): string;
valueOf(): number;
getTime(): number;
getFullYear(): number;
getUTCFullYear(): number;
getMonth(): number;
getUTCMonth(): number;
getDate(): number;
getUTCDate(): number;
getDay(): number;
getUTCDay(): number;
getHours(): number;
getUTCHours(): number;
getMinutes(): number;
getUTCMinutes(): number;
getSeconds(): number;
getUTCSeconds(): number;
getMilliseconds(): number;
getUTCMilliseconds(): number;
getTimezoneOffset(): number;
setTime(time: number): number;
setMilliseconds(ms: number): number;
setUTCMilliseconds(ms: number): number;
setSeconds(sec: number, ms?: number): number;
setUTCSeconds(sec: number, ms?: number): number;
setMinutes(min: number, sec?: number, ms?: number): number;
setUTCMinutes(min: number, sec?: number, ms?: number): number;
setHours(hours: number, min?: number, sec?: number, ms?: number): number;
setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number;
setDate(date: number): number;
setUTCDate(date: number): number;
setMonth(month: number, date?: number): number;
setUTCMonth(month: number, date?: number): number;
setFullYear(year: number, month?: number, date?: number): number;
setUTCFullYear(year: number, month?: number, date?: number): number;
toUTCString(): string;
toISOString(): string;
toJSON(key?: any): string;
}
interface DateConstructor {
new (): Date;
new (value: number): Date;
new (value: string): Date;
new (
year: number,
month: number,
date?: number,
hours?: number,
minutes?: number,
seconds?: number,
ms?: number
): Date;
(): string;
readonly prototype: Date;
parse(s: string): number;
UTC(
year: number,
month: number,
date?: number,
hours?: number,
minutes?: number,
seconds?: number,
ms?: number
): number;
now(): number;
}
declare const Date: DateConstructor;
interface RegExpMatchArray extends Array<string> {
index?: number;
input?: string;
}
interface RegExpExecArray extends Array<string> {
index: number;
input: string;
}
interface RegExp {
exec(string: string): RegExpExecArray | null;
test(string: string): boolean;
readonly source: string;
readonly global: boolean;
readonly ignoreCase: boolean;
readonly multiline: boolean;
lastIndex: number;
// Non-standard extensions
compile(): this;
}
interface RegExpConstructor {
new (pattern: RegExp | string): RegExp;
new (pattern: string, flags?: string): RegExp;
(pattern: RegExp | string): RegExp;
(pattern: string, flags?: string): RegExp;
readonly prototype: RegExp;
// Non-standard extensions
$1: string;
$2: string;
$3: string;
$4: string;
$5: string;
$6: string;
$7: string;
$8: string;
$9: string;
lastMatch: string;
}
declare const RegExp: RegExpConstructor;
interface Error {
name: string;
message: string;
stack?: string;
}
interface ErrorConstructor {
new (message?: string): Error;
(message?: string): Error;
readonly prototype: Error;
}
declare const Error: ErrorConstructor;
interface EvalError extends Error {}
interface EvalErrorConstructor {
new (message?: string): EvalError;
(message?: string): EvalError;
readonly prototype: EvalError;
}
declare const EvalError: EvalErrorConstructor;
interface RangeError extends Error {}
interface RangeErrorConstructor {
new (message?: string): RangeError;
(message?: string): RangeError;
readonly prototype: RangeError;
}
declare const RangeError: RangeErrorConstructor;
interface ReferenceError extends Error {}
interface ReferenceErrorConstructor {
new (message?: string): ReferenceError;
(message?: string): ReferenceError;
readonly prototype: ReferenceError;
}
declare const ReferenceError: ReferenceErrorConstructor;
interface SyntaxError extends Error {}
interface SyntaxErrorConstructor {
new (message?: string): SyntaxError;
(message?: string): SyntaxError;
readonly prototype: SyntaxError;
}
declare const SyntaxError: SyntaxErrorConstructor;
interface TypeError extends Error {}
interface TypeErrorConstructor {
new (message?: string): TypeError;
(message?: string): TypeError;
readonly prototype: TypeError;
}
declare const TypeError: TypeErrorConstructor;
interface URIError extends Error {}
interface URIErrorConstructor {
new (message?: string): URIError;
(message?: string): URIError;
readonly prototype: URIError;
}
declare const URIError: URIErrorConstructor;
interface JSON {
parse(text: string, reviver?: (key: any, value: any) => any): any;
stringify(value: any, replacer?: (key: string, value: any) => any, space?: string | number): string;
stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
}
declare const JSON: JSON;
/////////////////////////////
/// ECMAScript Array API (specially handled by compiler)
/////////////////////////////
interface ReadonlyArray<T> {
readonly length: number;
toString(): string;
toLocaleString(): string;
concat(...items: ReadonlyArray<T>[]): T[];
concat(...items: (T | ReadonlyArray<T>)[]): T[];
join(separator?: string): string;
slice(start?: number, end?: number): T[];
indexOf(searchElement: T, fromIndex?: number): number;
lastIndexOf(searchElement: T, fromIndex?: number): number;
every(callbackfn: (value: T, index: number, array: ReadonlyArray<T>) => boolean, thisArg?: any): boolean;
some(callbackfn: (value: T, index: number, array: ReadonlyArray<T>) => boolean, thisArg?: any): boolean;
forEach(callbackfn: (value: T, index: number, array: ReadonlyArray<T>) => void, thisArg?: any): void;
map<U>(callbackfn: (value: T, index: number, array: ReadonlyArray<T>) => U, thisArg?: any): U[];
filter<S extends T>(
callbackfn: (value: T, index: number, array: ReadonlyArray<T>) => value is S,
thisArg?: any
): S[];
filter(callbackfn: (value: T, index: number, array: ReadonlyArray<T>) => any, thisArg?: any): T[];
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray<T>) => T): T;
reduce(
callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray<T>) => T,
initialValue: T
): T;
reduce<U>(
callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray<T>) => U,
initialValue: U
): U;
reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray<T>) => T): T;
reduceRight(
callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray<T>) => T,
initialValue: T
): T;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray<T>) => U,
initialValue: U
): U;
readonly [n: number]: T;
}
interface Array<T> {
length: number;
toString(): string;
toLocaleString(): string;
push(...items: T[]): number;
pop(): T | undefined;
concat(...items: ReadonlyArray<T>[]): T[];
concat(...items: (T | ReadonlyArray<T>)[]): T[];
join(separator?: string): string;
reverse(): T[];
shift(): T | undefined;
slice(start?: number, end?: number): T[];
sort(compareFn?: (a: T, b: T) => number): this;
splice(start: number, deleteCount?: number): T[];
splice(start: number, deleteCount: number, ...items: T[]): T[];
unshift(...items: T[]): number;
indexOf(searchElement: T, fromIndex?: number): number;
lastIndexOf(searchElement: T, fromIndex?: number): number;
every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
filter<S extends T>(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];
filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[];
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
reduce<U>(
callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U,
initialValue: U
): U;
reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
reduceRight(
callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T,
initialValue: T
): T;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U,
initialValue: U
): U;
[n: number]: T;
}
interface ArrayConstructor {
new (arrayLength?: number): any[];
new <T>(arrayLength: number): T[];
new <T>(...items: T[]): T[];
(arrayLength?: number): any[];
<T>(arrayLength: number): T[];
<T>(...items: T[]): T[];
isArray(arg: any): arg is Array<any>;
readonly prototype: Array<any>;
}
declare const Array: ArrayConstructor;
interface TypedPropertyDescriptor<T> {
enumerable?: boolean;
configurable?: boolean;
writable?: boolean;
value?: T;
get?: () => T;
set?: (value: T) => void;
}
declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;
declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;
declare type MethodDecorator = <T>(
target: Object,
propertyKey: string | symbol,
descriptor: TypedPropertyDescriptor<T>
) => TypedPropertyDescriptor<T> | void;
declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
declare type PromiseConstructorLike = new <T>(
executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void
) => PromiseLike<T>;
interface PromiseLike<T> {
then<TResult1 = T, TResult2 = never>(
onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,
onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null
): PromiseLike<TResult1 | TResult2>;
}
interface Promise<T> {
then<TResult1 = T, TResult2 = never>(
onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,
onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null
): Promise<TResult1 | TResult2>;
catch<TResult = never>(
onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null
): Promise<T | TResult>;
}
interface ArrayLike<T> {
readonly length: number;
readonly [n: number]: T;
}
type Partial<T> = {
[P in keyof T]?: T[P];
};
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
type Record<K extends string, T> = {
[P in K]: T;
};
interface ThisType<T> {}
interface ArrayBuffer {
readonly byteLength: number;
slice(begin: number, end?: number): ArrayBuffer;
}
interface ArrayBufferTypes {
ArrayBuffer: ArrayBuffer;
}
type ArrayBufferLike = ArrayBufferTypes[keyof ArrayBufferTypes];
interface ArrayBufferConstructor {
readonly prototype: ArrayBuffer;
new (byteLength: number): ArrayBuffer;
isView(arg: any): arg is ArrayBufferView;
}
declare const ArrayBuffer: ArrayBufferConstructor;
interface ArrayBufferView {
buffer: ArrayBufferLike;
byteLength: number;
byteOffset: number;
}
interface DataView {
readonly buffer: ArrayBuffer;
readonly byteLength: number;
readonly byteOffset: number;
getFloat32(byteOffset: number, littleEndian?: boolean): number;
getFloat64(byteOffset: number, littleEndian?: boolean): number;
getInt8(byteOffset: number): number;
getInt16(byteOffset: number, littleEndian?: boolean): number;
getInt32(byteOffset: number, littleEndian?: boolean): number;
getUint8(byteOffset: number): number;
getUint16(byteOffset: number, littleEndian?: boolean): number;
getUint32(byteOffset: number, littleEndian?: boolean): number;
setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void;
setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void;
setInt8(byteOffset: number, value: number): void;
setInt16(byteOffset: number, value: number, littleEndian?: boolean): void;
setInt32(byteOffset: number, value: number, littleEndian?: boolean): void;
setUint8(byteOffset: number, value: number): void;
setUint16(byteOffset: number, value: number, littleEndian?: boolean): void;
setUint32(byteOffset: number, value: number, littleEndian?: boolean): void;
}
interface DataViewConstructor {
new (buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number): DataView;
}
declare const DataView: DataViewConstructor;
interface Int8Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Int8Array) => any, thisArg?: any): Int8Array;
find(predicate: (value: number, index: number, obj: Int8Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Int8Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U,
initialValue: U
): U;
reverse(): Int8Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Int8Array;
some(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Int8Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Int8ArrayConstructor {
readonly prototype: Int8Array;
new (length: number): Int8Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Int8Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Int8Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Int8Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;
}
declare const Int8Array: Int8ArrayConstructor;
interface Uint8Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Uint8Array) => any, thisArg?: any): Uint8Array;
find(predicate: (value: number, index: number, obj: Uint8Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Uint8Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U,
initialValue: U
): U;
reverse(): Uint8Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Uint8Array;
some(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Uint8Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Uint8ArrayConstructor {
readonly prototype: Uint8Array;
new (length: number): Uint8Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Uint8Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Uint8Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Uint8Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
}
declare const Uint8Array: Uint8ArrayConstructor;
interface Uint8ClampedArray {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(
callbackfn: (value: number, index: number, array: Uint8ClampedArray) => any,
thisArg?: any
): Uint8ClampedArray;
find(
predicate: (value: number, index: number, obj: Uint8ClampedArray) => boolean,
thisArg?: any
): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Uint8ClampedArray) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(
callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number,
thisArg?: any
): Uint8ClampedArray;
reduce(
callbackfn: (
previousValue: number,
currentValue: number,
currentIndex: number,
array: Uint8ClampedArray
) => number
): number;
reduce(
callbackfn: (
previousValue: number,
currentValue: number,
currentIndex: number,
array: Uint8ClampedArray
) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (
previousValue: number,
currentValue: number,
currentIndex: number,
array: Uint8ClampedArray
) => number
): number;
reduceRight(
callbackfn: (
previousValue: number,
currentValue: number,
currentIndex: number,
array: Uint8ClampedArray
) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U,
initialValue: U
): U;
reverse(): Uint8ClampedArray;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Uint8ClampedArray;
some(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Uint8ClampedArray;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Uint8ClampedArrayConstructor {
readonly prototype: Uint8ClampedArray;
new (length: number): Uint8ClampedArray;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Uint8ClampedArray;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Uint8ClampedArray;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Uint8ClampedArray;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;
}
declare const Uint8ClampedArray: Uint8ClampedArrayConstructor;
interface Int16Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Int16Array) => any, thisArg?: any): Int16Array;
find(predicate: (value: number, index: number, obj: Int16Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Int16Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U,
initialValue: U
): U;
reverse(): Int16Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Int16Array;
some(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Int16Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Int16ArrayConstructor {
readonly prototype: Int16Array;
new (length: number): Int16Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Int16Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Int16Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Int16Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;
}
declare const Int16Array: Int16ArrayConstructor;
interface Uint16Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Uint16Array) => any, thisArg?: any): Uint16Array;
find(predicate: (value: number, index: number, obj: Uint16Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Uint16Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U,
initialValue: U
): U;
reverse(): Uint16Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Uint16Array;
some(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Uint16Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Uint16ArrayConstructor {
readonly prototype: Uint16Array;
new (length: number): Uint16Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Uint16Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Uint16Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Uint16Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;
}
declare const Uint16Array: Uint16ArrayConstructor;
interface Int32Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Int32Array) => any, thisArg?: any): Int32Array;
find(predicate: (value: number, index: number, obj: Int32Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Int32Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U,
initialValue: U
): U;
reverse(): Int32Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Int32Array;
some(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Int32Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Int32ArrayConstructor {
readonly prototype: Int32Array;
new (length: number): Int32Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Int32Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Int32Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Int32Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;
}
declare const Int32Array: Int32ArrayConstructor;
interface Uint32Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Uint32Array) => any, thisArg?: any): Uint32Array;
find(predicate: (value: number, index: number, obj: Uint32Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Uint32Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U,
initialValue: U
): U;
reverse(): Uint32Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Uint32Array;
some(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Uint32Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Uint32ArrayConstructor {
readonly prototype: Uint32Array;
new (length: number): Uint32Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Uint32Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Uint32Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Uint32Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;
}
declare const Uint32Array: Uint32ArrayConstructor;
interface Float32Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Float32Array) => any, thisArg?: any): Float32Array;
find(predicate: (value: number, index: number, obj: Float32Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Float32Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U,
initialValue: U
): U;
reverse(): Float32Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Float32Array;
some(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Float32Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Float32ArrayConstructor {
readonly prototype: Float32Array;
new (length: number): Float32Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Float32Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Float32Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Float32Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;
}
declare const Float32Array: Float32ArrayConstructor;
interface Float64Array {
readonly BYTES_PER_ELEMENT: number;
readonly buffer: ArrayBufferLike;
readonly byteLength: number;
readonly byteOffset: number;
copyWithin(target: number, start: number, end?: number): this;
every(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean;
fill(value: number, start?: number, end?: number): this;
filter(callbackfn: (value: number, index: number, array: Float64Array) => any, thisArg?: any): Float64Array;
find(predicate: (value: number, index: number, obj: Float64Array) => boolean, thisArg?: any): number | undefined;
findIndex(predicate: (value: number, index: number, obj: Float64Array) => boolean, thisArg?: any): number;
forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void;
indexOf(searchElement: number, fromIndex?: number): number;
join(separator?: string): string;
lastIndexOf(searchElement: number, fromIndex?: number): number;
readonly length: number;
map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number
): number;
reduce(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number,
initialValue: number
): number;
reduce<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U,
initialValue: U
): U;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number
): number;
reduceRight(
callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number,
initialValue: number
): number;
reduceRight<U>(
callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U,
initialValue: U
): U;
reverse(): Float64Array;
set(array: ArrayLike<number>, offset?: number): void;
slice(start?: number, end?: number): Float64Array;
some(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean;
sort(compareFn?: (a: number, b: number) => number): this;
subarray(begin: number, end?: number): Float64Array;
toLocaleString(): string;
toString(): string;
[index: number]: number;
}
interface Float64ArrayConstructor {
readonly prototype: Float64Array;
new (length: number): Float64Array;
new (arrayOrArrayBuffer: ArrayLike<number> | ArrayBufferLike): Float64Array;
new (buffer: ArrayBufferLike, byteOffset: number, length?: number): Float64Array;
readonly BYTES_PER_ELEMENT: number;
of(...items: number[]): Float64Array;
from(arrayLike: ArrayLike<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;
}
declare const Float64Array: Float64ArrayConstructor;
================================================
FILE: doc/CustomRenderer.md
================================================
# Extending quicktype functionality with a Custom Renderer
## quicktype Interface
To customise your rendering output, you can extend existing quicktype classes and override existing methods to achieve the behaviour you want.
This process requires 3 main steps:
1. [Extending a `Renderer` Class](#creating-a-custom-renderer)
2. [Wrapping your `Renderer` in a `TargetLanguage` Class](#creating-a-targetlanguage)
3. [Using your new classes in the `quicktype` function](#using-your-custom-language)
4. [Advanced Usage: Creating an entirely new Language](#creating-a-new-language)
## Creating a custom `Renderer`
Adding custom render logic for an existing language often involves extending a Renderer class and simply overriding or amending one of the `emit` methods:
```ts
// MyCustomRenderer.ts
import { CSharpRenderer } from "quicktype-core";
export class MyCustomRenderer extends CSharpRenderer {
// Add your custom logic here, feel free to reference the source code for how existing methods work
//
// ex.
protected superclassForType(t: Type): Sourcelike | undefined {
// if the type is a class, it should extend `GameObject` when rendered in C#
if (t instanceof ClassType) {
return "GameObject";
}
return undefined;
}
// See: http://blog.quicktype.io/customizing-quicktype/ for more context
}
```
## Creating a `TargetLanguage`
If you just want to change the rendering logic for an existing language, you can just extend an exported Language class (`CSharpTargetLanguage` in this example) and override the `makeRenderer` method:
```ts
// MyCustomLanguage.ts
import { CSharpTargetLanguage } from "quicktype-core";
import { MyCustomRenderer } from "./MyCustomRenderer";
export class MyCustomLanguage extends CSharpTargetLanguage {
// `makeRenderer` instantiates the Renderer class for the TargetLanguage
protected makeRenderer(
renderContext: RenderContext,
untypedOptionValues: Record<string, unknown>
): MyCustomRenderer {
// use your new custom renderer class here
return new MyCustomRenderer(this, renderContext, getOptionValues(cSharpOptions, untypedOptionValues));
}
}
```
## Using your custom Language
```ts
import { quicktype } from "quicktype-core";
import { MyCustomLanguage } from './MyCustomLanguage';
const lang = new MyCustomLanguage();
const lines = await quicktype({
lang: lang, // use your new TargetLanguage in the `lang` field here
...
});
console.log(lines);
```
## Creating a new Language
If none of the existing `quicktype` Language classes suit your needs, you can creating your own `TargetLanguge` and `Renderer` classes from scratch. If this satisfies your use cases for a language we don't currently support, please consider opening a PR with your new language and we'd love to take a look.
If you run into any issues, you can open a GitHub issue and we'll help you take a look.
### Creating a `TargetLanguage` from scratch
Instead of just extending an existing language, a new Language requires two additional steps:
- Defining the language config
- Adding any language-specific options
```ts
import { TargetLanguage, BooleanOption } from "quicktype-core";
// language config
const brandNewLanguageConfig = {
displayName: "Scratch", // these can be the same
names: ["scratch"], // these can be the same
extension: "sb" // the file extension that this language commonly has
} as const;
// language options
const brandNewLanguageOptions = {
allowFoo: new BooleanOption(
"allow-foo", // option name
"Allows Foo", // description
true // default value
)
// The default available Option classes are: StringOption, BooleanOption, EnumOption
// Please visit the source code for more examples and usage
};
class BrandNewLanguage extends TargetLanguage<typeof brandNewLanguageConfig> {
public constructor() {
super(brandNewLanguageConfig);
}
public getOptions(): typeof brandNewLanguageOptions {
return brandNewLanguageOptions;
}
protected makeRenderer(
renderContext: RenderContext,
untypedOptionValues: Record<string, unknown>
): BrandNewRenderer {
return new BrandNewRenderer(this, renderContext, getOptionValues(brandNewLanguageOptions, untypedOptionValues));
}
}
```
### Creating a `Renderer` from scratch
Creating a brand new `Renderer` class is very similar to extending an existing class:
```ts
export class BrandNewRenderer extends ConvenienceRenderer {
public constructor(targetLanguage: TargetLanguage, renderContext: RenderContext) {
super(targetLanguage, renderContext);
}
// Additional render methods go here
// Please reference existing Renderer classes and open a GitHub issue if you need help
}
```
## Links
Blog post with an older example: http://blog.quicktype.io/customizing-quicktype/
================================================
FILE: doc/PostmanCollection.schema
================================================
{
"$schema": "http://json-schema.org/draft-06/schema#",
"description": "Postman collection",
"$ref": "#/definitions/collection",
"definitions": {
"group": {
"type": "object",
"properties": {
"item": {
"type": "array",
"items": {
"$ref": "#/definitions/collection"
}
}
}
},
"item": {
"type": "object",
"properties": {
"name": { "type": "string" },
"response": {
"type": "array",
"items": {
"$ref": "#/definitions/response"
}
}
}
},
"response": {
"type": "object",
"properties": {
"body": { "type": "string" }
}
},
"collection": {
"oneOf": [
{ "$ref": "#/definitions/group" },
{ "$ref": "#/definitions/item" }
]
}
}
}
================================================
FILE: doc/Templates.md
================================================
# NOTE
This was a prototype that we've since removed from quicktype. If you'd like to play with it, please use commit `8eba491ac167a51203eaa6100609ec73ad553236`. If you find it useful and would like us to bring it back, please let us know - it's probably fairly easy.
# Templates
quicktype allows the processing of [Handlebars](http://handlebarsjs.com) templates based on the types specified in or inferred from the input. Templates are always processed in the context of a specific target language, which makes it possible for their output to interact with the types generated for that target language.
## Invocation
quicktype --lang csharp --template TEMPLATE-FILE ./test/inputs/json/samples/kitchen-sink.json
## Example
```
{{#each namedTypes}}
{{#if_eq type.kind "class"}}
public partial class {{{assignedName}}} {
{{#each properties}}
[JsonProperty("{{{string_escape @key}}}")]
public {{{csType}}} {{{assignedName}}} { get; set; }
{{/each}}
}
{{/if_eq}}
{{#if_eq type.kind "enum"}}
public enum {{{assignedName}}} {
{{#each cases}}{{#unless @first}}, {{/unless}}{{{assignedName}}}{{/each}}
}
{{/if_eq}}
{{#if_eq type.kind "union"}}
public partial struct {{{assignedName}}}
{
{{#each members}}
public {{{nullableCSType}}} {{{assignedName}}};
{{/each}}
}
{{/if_eq}}
{{/each}}
{{#each topLevels}}
public partial class {{{assignedTopLevelName}}} {
public static {{{csType}}} FromJson(string json) => JsonConvert.DeserializeObject<{{{csType}}}>(json, Converter.Settings);
}
{{/each}}
{{#each namedTypes}}{{#if_eq type.kind "enum"}}
static class {{{extensionsName}}}
{
public static {{{assignedName}}}? ValueForString(string str)
{
switch (str)
{
{{#each cases}}
case "{{{string_escape @key}}}": return {{{../assignedName}}}.{{{assignedName}}};
{{/each}}
default: return null;
}
}
public static {{{assignedName}}} ReadJson(JsonReader reader, JsonSerializer serializer)
{
var str = serializer.Deserialize<string>(reader);
var maybeValue = ValueForString(str);
if (maybeValue.HasValue) return maybeValue.Value;
throw new Exception("Unknown enum case " + str);
}
public static void WriteJson(this {{{assignedName}}} value, JsonWriter writer, JsonSerializer serializer)
{
switch (value)
{
{{#each cases}}
case {{{../assignedName}}}.{{{assignedName}}}: serializer.Serialize(writer, "{{{string_escape @key}}}"); break;
{{/each}}
}
}
}
{{/if_eq}}{{/each}}
public static class Serialize {
{{#each topLevels}}
public static string ToJson(this {{{csType}}} self) => JsonConvert.SerializeObject(self, Converter.Settings);
{{/each}}
}
public class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
};
}
```
================================================
FILE: doc/Transformers.md
================================================
# Transformed string types
quicktype has facilities for transforming JSON strings into other data types, provided a given target language implementation supports it. Right now the most advanced target language in that regard is C#, which supports data/time types and stringified integers.
There are two different sorts of transformed string types:
- Those that transform strings into other JSON-representable types, such as stringified integers.
- Those that transform into types that are not directly representable in JSON (other than as strings), such as date/time types.
Several pieces need to be implemented to add a new transformed string type:
1. `TransformedStringTypeTargets` have to be added for the new type kind in the object `transformedStringTypeTargetTypeKinds` in `Type.ts`. The property names of that object are the internal primitive type names. Adding a new property automatically adds a new type.
2. `inferTransformedStringTypeKindForString` in `StringTypes.ts` can optionally be amended to automatically infer the new transformed type from a given string in JSON input. If this isn't done, the only way to use the new type is through JSON Schema. If it is done, a CLI option to turn it off has to be added. This is currently still more complicated than it needs to be, since it also involves changing the options to `quicktype-core`.
3. The target languages that should support the new type have to be amended. Currently C# is the only one that allows this easily. See `CSharp.ts` and search for `date-time`.
4. Test cases have to be added. See `test/inputs/schema/date-time*`, for example. If JSON inference is implemented, there should be at least one JSON test file with a string of that type.
5. In `fixtures.ts`, `ajv`, which we use to validate JSON against schemas, has to be told about the new JSON Schema string format. Search for `date-time`.
## Stuff we need to improve
- Automatic generation of tests. We should have a test generator that produces test files with all string types in all reasonable combinations.
- One CLI option for all string types. No CLI option work should be necessary to implement a new string type.
- The AJV thing should be automated, too. We have almost all the validation code necessary in `StringTypes.ts` anyway.
================================================
FILE: package.json
================================================
{
"name": "quicktype",
"version": "23.2.0",
"license": "Apache-2.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"repository": "https://github.com/quicktype/quicktype",
"engines": {
"node": ">=18.12.0"
},
"scripts": {
"pub": "script/publish.sh",
"build": "npm run clean && npm run build --workspaces --if-present && tsc",
"test": "script/test",
"start": "script/watch",
"clean": "rm -rf dist *~ packages/*/{dist,out}",
"debug": "node --inspect-brk --max-old-space-size=4096 ./dist/index.js",
"lint": "eslint src/** packages/*/src/**",
"lint:fix": "eslint --fix src/** packages/*/src/**"
},
"workspaces": [
"./packages/quicktype-core",
"./packages/quicktype-graphql-input",
"./packages/quicktype-typescript-input",
"./packages/quicktype-vscode"
],
"dependencies": {
"@glideapps/ts-necessities": "^2.2.3",
"chalk": "^4.1.2",
"collection-utils": "^1.0.1",
"command-line-args": "^5.2.1",
"command-line-usage": "^7.0.1",
"cross-fetch": "^4.0.0",
"graphql": "^0.11.7",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"quicktype-core": "20.0.12",
"quicktype-graphql-input": "20.0.2",
"quicktype-typescript-input": "20.0.2",
"readable-stream": "^4.5.2",
"stream-json": "1.8.0",
"string-to-stream": "^3.0.1",
"typescript": "~5.8.3"
},
"devDependencies": {
"@biomejs/biome": "^1.9.4",
"@tsconfig/node18": "^1.0.1",
"@types/command-line-args": "^5.2.0",
"@types/command-line-usage": "^5.0.4",
"@types/graphql": "^0.11.7",
"@types/lodash": "^4.17.0",
"@types/semver": "^7.5.0",
"@types/shelljs": "^0.8.15",
"@types/stream-json": "^1.7.3",
"@types/urijs": "^1.19.25",
"@types/wordwrap": "^1.0.3",
"@typescript-eslint/eslint-plugin": "^6.3.0",
"@typescript-eslint/parser": "^6.3.0",
"ajv": "^5.5.2",
"deep-equal": "^2.2.3",
"esbuild": "^0.20.2",
"exit": "^0.1.2",
"promise-timeout": "^1.3.0",
"semver": "^7.5.4",
"shelljs": "^0.8.5",
"ts-node": "^10.9.2",
"watch": "^1.0.2"
},
"overrides": {
"cross-fetch": {
"node-fetch": {
"whatwg-url": "^13.0.0"
}
}
},
"files": ["dist"],
"bin": "dist/index.js"
}
================================================
FILE: packages/quicktype-core/env.sh
================================================
#!/usr/bin/env bash
if [[ $PUBLISH == true ]]; then
echo 'HAS PUBLISH, exit'
exit 0
fi
if [[ $CI ]]; then
if [[ "$OSTYPE" == "darwin"* ]]; then
grep -rl '$fetch' src | xargs sed -i '' -e 's/$fetch/$fetch.ci/g'
else
grep -rl '$fetch' src | xargs sed -i -e 's/$fetch/$fetch.ci/g'
fi
fi
================================================
FILE: packages/quicktype-core/package.json
================================================
{
"name": "quicktype-core",
"version": "18.0.15",
"description": "The quicktype engine as a library",
"license": "Apache-2.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"repository": "https://github.com/quicktype/quicktype",
"scripts": {
"clean": "rm -rf dist node_modules *~",
"build": "./env.sh && tsc"
},
"dependencies": {
"@glideapps/ts-necessities": "2.2.3",
"browser-or-node": "^3.0.0",
"collection-utils": "^1.0.1",
"cross-fetch": "^4.0.0",
"is-url": "^1.2.4",
"js-base64": "^3.7.7",
"lodash": "^4.17.21",
"pako": "^1.0.6",
"pluralize": "^8.0.0",
"readable-stream": "4.5.2",
"unicode-properties": "^1.4.1",
"urijs": "^1.19.1",
"wordwrap": "^1.0.0",
"yaml": "^2.4.1"
},
"devDependencies": {
"@types/browser-or-node": "^1.3.2",
"@types/is-url": "^1.2.32",
"@types/node": "~22.14.0",
"@types/pako": "^1.0.0",
"@types/pluralize": "0.0.30",
"@types/readable-stream": "4.0.10",
"@types/unicode-properties": "^1.3.0",
"@types/urijs": "^1.19.25",
"@types/wordwrap": "^1.0.3",
"command-line-args": "^5.2.1",
"typescript": "~5.8.3"
},
"overrides": {
"cross-fetch": {
"node-fetch": {
"whatwg-url": "^13.0.0"
}
}
},
"files": ["dist"],
"browser": {
"fs": false
}
}
================================================
FILE: packages/quicktype-core/src/Annotation.ts
================================================
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
export class AnnotationData {}
export class IssueAnnotationData extends AnnotationData {
public constructor(public readonly message: string) {
super();
}
}
export const anyTypeIssueAnnotation = new IssueAnnotationData(
"quicktype cannot infer this type because there is no data about it in the input.",
);
export const nullTypeIssueAnnotation = new IssueAnnotationData(
"The only value for this in the input is null, which means you probably need a more complete input sample.",
);
================================================
FILE: packages/quicktype-core/src/ConvenienceRenderer.ts
================================================
import {
iterableEnumerate,
iterableSome,
mapFilter,
mapFilterMap,
mapSome,
mapSortBy,
setFilter,
setUnion,
} from "collection-utils";
import _wordwrap from "wordwrap";
import {
enumCaseNames,
getAccessorName,
objectPropertyNames,
unionMemberName,
} from "./attributes/AccessorNames";
import {
descriptionTypeAttributeKind,
propertyDescriptionsTypeAttributeKind,
} from "./attributes/Description";
import { TypeAttributeKind } from "./attributes/TypeAttributes";
import {
type Declaration,
type DeclarationIR,
cycleBreakerTypesForGraph,
declarationsForGraph,
} from "./DeclarationIR";
import {
DependencyName,
FixedName,
type Name,
type Namer,
Namespace,
SimpleName,
keywordNamespace,
} from "./Naming";
import {
type BlankLineConfig,
type ForEachPosition,
type RenderContext,
Renderer,
} from "./Renderer";
import {
type Sourcelike,
serializeRenderResult,
sourcelikeToSource,
} from "./Source";
import {
type Comment,
type CommentOptions,
isStringComment,
} from "./support/Comments";
import { trimEnd } from "./support/Strings";
import { assert, defined, nonNull, panic } from "./support/Support";
import type { TargetLanguage } from "./TargetLanguage";
import {
type Transformation,
followTargetType,
transformationForType,
} from "./Transformers";
import {
type ClassProperty,
ClassType,
EnumType,
MapType,
ObjectType,
type Type,
type TypeKind,
UnionType,
} from "./Type";
import { TypeAttributeStoreView } from "./Type/TypeGraph";
import {
isNamedType,
matchTypeExhaustive,
nullableFromUnion,
separateNamedTypes,
} from "./Type/TypeUtils";
const wordWrap: (s: string) => string = _wordwrap(90);
export const topLevelNameOrder = 1;
const givenNameOrder = 10;
export const inferredNameOrder = 30;
const classPropertyNameOrder = 20;
const assignedClassPropertyNameOrder = 10;
const enumCaseNameOrder = 20;
const assignedEnumCaseNameOrder = 10;
const unionMemberNameOrder = 40;
function splitDescription(
descriptions: Iterable<string> | undefined,
): string[] | undefined {
if (descriptions === undefined) return undefined;
const description = Array.from(descriptions).join("\n\n").trim();
if (description === "") return undefined;
return wordWrap(description)
.split("\n")
.map((l) => l.trim());
}
export interface ForbiddenWordsInfo {
includeGlobalForbidden: boolean;
names: Array<Name | string>;
}
const assignedNameAttributeKind = new TypeAttributeKind<Name>("assignedName");
const assignedPropertyNamesAttributeKind = new TypeAttributeKind<
ReadonlyMap<string, Name>
>("assignedPropertyNames");
const assignedMemberNamesAttributeKind = new TypeAttributeKind<
ReadonlyMap<Type, Name>
>("assignedMemberNames");
const assignedCaseNamesAttributeKind = new TypeAttributeKind<
ReadonlyMap<string, Name>
>("assignedCaseNames");
export abstract class ConvenienceRenderer extends Renderer {
private _globalForbiddenNamespace: Namespace | undefined;
private _otherForbiddenNamespaces: Map<string, Namespace> | undefined;
private _globalNamespace: Namespace | undefined;
private _nameStoreView: TypeAttributeStoreView<Name> | undefined;
private _propertyNamesStoreView:
| TypeAttributeStoreView<ReadonlyMap<string, Name>>
| undefined;
private _memberNamesStoreView:
| TypeAttributeStoreView<ReadonlyMap<Type, Name>>
| undefined;
private _caseNamesStoreView:
| TypeAttributeStoreView<ReadonlyMap<string, Name>>
| undefined;
private _namesForTransformations: Map<Type, Name> | undefined;
private _namedTypeNamer: Namer | undefined;
// @ts-expect-error: FIXME: Make this `Namer | undefined`
private _unionMemberNamer: Namer | null;
// @ts-expect-error: FIXME: Make this `Namer | undefined`
private _enumCaseNamer: Namer | null;
private _declarationIR: DeclarationIR | undefined;
private _namedTypes: readonly Type[] | undefined;
private _namedObjects: Set<ObjectType> | undefined;
private _namedEnums: Set<EnumType> | undefined;
private _namedUnions: Set<UnionType> | undefined;
private _haveUnions: boolean | undefined;
private _haveMaps: boolean | undefined;
private _haveOptionalProperties: boolean | undefined;
private _cycleBreakerTypes?: Set<Type> | undefined;
private _alphabetizeProperties = false;
public constructor(
targetLanguage: TargetLanguage,
renderContext: RenderContext,
) {
super(targetLanguage, renderContext);
}
public get topLevels(): ReadonlyMap<string, Type> {
return this.typeGraph.topLevels;
}
/**
* Return an array of strings which are not allowed as names in the global
* namespace. Since names of generated types are in the global namespace,
* this will include anything built into the language or default libraries
* that can conflict with that, such as reserved keywords or common type
* names.
*/
protected forbiddenNamesForGlobalNamespace(): readonly string[] {
return [];
}
/**
* Returns which names are forbidden for the property names of an object
* type. `names` can contain strings as well as `Name`s. In some
* languages, the class name can't be used as the name for a property, for
* example, in which case `_className` would have to be return in `names`.
* If `includeGlobalForbidden` is set, then all names that are forbidden
* in the global namespace will also be forbidden for the properties.
* Note: That doesn't mean that the names in the global namespace will be
* forbidden, too!
*/
protected forbiddenForObjectProperties(
_o: ObjectType,
_className: Name,
): ForbiddenWordsInfo {
return { names: [], includeGlobalForbidden: false };
}
protected forbiddenForUnionMembers(
_u: UnionType,
_unionName: Name,
): ForbiddenWordsInfo {
return { names: [], includeGlobalForbidden: false };
}
protected forbiddenForEnumCases(
_e: EnumType,
_enumName: Name,
): ForbiddenWordsInfo {
return { names: [], includeGlobalForbidden: false };
}
protected makeTopLevelDependencyNames(
_t: Type,
_topLevelName: Name,
): DependencyName[] {
return [];
}
protected makeNamedTypeDependencyNames(
_t: Type,
_name: Name,
): DependencyName[] {
return [];
}
protected abstract makeNamedTypeNamer(): Namer;
protected abstract namerForObjectProperty(
o: ObjectType,
p: ClassProperty,
): Namer | null;
protected abstract makeUnionMemberNamer(): Namer | null;
protected abstract makeEnumCaseNamer(): Namer | null;
protected abstract emitSourceStructure(givenOutputFilename: string): void;
protected makeNameForTransformation(
_xf: Transformation,
_typeName: Name | undefined,
): Name | undefined {
return undefined;
}
protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
if (isNamedType(type)) {
return type;
}
return undefined;
}
protected get unionMembersInGlobalNamespace(): boolean {
return false;
}
protected get enumCasesInGlobalNamespace(): boolean {
return false;
}
protected get needsTypeDeclarationBeforeUse(): boolean {
return false;
}
protected canBeForwardDeclared(_t: Type): boolean {
return panic(
"If needsTypeDeclarationBeforeUse returns true, canBeForwardDeclared must be implemented",
);
}
protected unionNeedsName(u: UnionType): boolean {
return nullableFromUnion(u) === null;
}
private get globalNamespace(): Namespace {
return defined(this._globalNamespace);
}
private get nameStoreView(): TypeAttributeStoreView<Name> {
return defined(this._nameStoreView);
}
protected descriptionForType(t: Type): string[] | undefined {
const description = this.typeGraph.attributeStore.tryGet(
descriptionTypeAttributeKind,
t,
);
return splitDescription(description);
}
protected descriptionForClassProperty(
o: ObjectType,
name: string,
): string[] | undefined {
const descriptions = this.typeGraph.attributeStore.tryGet(
propertyDescriptionsTypeAttributeKind,
o,
);
if (descriptions === undefined) return undefined;
return splitDescription(descriptions.get(name));
}
protected setUpNaming(): ReadonlySet<Namespace> {
this._nameStoreView = new TypeAttributeStoreView(
this.typeGraph.attributeStore,
assignedNameAttributeKind,
);
this._propertyNamesStoreView = new TypeAttributeStoreView(
this.typeGraph.attributeStore,
assignedPropertyNamesAttributeKind,
);
this._memberNamesStoreView = new TypeAttributeStoreView(
this.typeGraph.attributeStore,
assignedMemberNamesAttributeKind,
);
this._caseNamesStoreView = new TypeAttributeStoreView(
this.typeGraph.attributeStore,
assignedCaseNamesAttributeKind,
);
this._namesForTransformations = new Map();
this._namedTypeNamer = this.makeNamedTypeNamer();
this._unionMemberNamer = this.makeUnionMemberNamer();
this._enumCaseNamer = this.makeEnumCaseNamer();
this._globalForbiddenNamespace = keywordNamespace(
"forbidden",
this.forbiddenNamesForGlobalNamespace(),
);
this._otherForbiddenNamespaces = new Map();
this._globalNamespace = new Namespace(
"global",
undefined,
[this._globalForbiddenNamespace],
[],
);
const { objects, enums, unions } =
this.typeGraph.allNamedTypesSeparated();
const namedUnions = setFilter(unions, (u) => this.unionNeedsName(u));
for (const [name, t] of this.topLevels) {
this.nameStoreView.setForTopLevel(
name,
this.addNameForTopLevel(t, name),
);
}
for (const o of objects) {
const name = this.addNameForNamedType(o);
this.addPropertyNames(o, name);
}
for (const e of enums) {
const name = this.addNameForNamedType(e);
this.addEnumCaseNames(e, name);
}
for (const u of namedUnions) {
const name = this.addNameForNamedType(u);
this.addUnionMemberNames(u, name);
}
for (const t of this.typeGraph.allTypesUnordered()) {
this.addNameForTransformation(t);
}
return setUnion(
[this._globalForbiddenNamespace, this._globalNamespace],
this._otherForbiddenNamespaces.values(),
);
}
private addDependenciesForNamedType(type: Type, named: Name): void {
const dependencyNames = this.makeNamedTypeDependencyNames(type, named);
for (const dn of dependencyNames) {
this.globalNamespace.add(dn);
}
}
protected makeNameForTopLevel(
_t: Type,
givenName: string,
_maybeNamedType: Type | undefined,
): Name {
return new SimpleName(
[givenName],
defined(this._namedTypeNamer),
topLevelNameOrder,
);
}
private addNameForTopLevel(type: Type, givenName: string): Name {
const maybeNamedType = this.namedTypeToNameForTopLevel(type);
const name = this.makeNameForTopLevel(type, givenName, maybeNamedType);
this.globalNamespace.add(name);
const dependencyNames = this.makeTopLevelDependencyNames(type, name);
for (const dn of dependencyNames) {
this.globalNamespace.add(dn);
}
if (maybeNamedType !== undefined) {
this.addDependenciesForNamedType(maybeNamedType, name);
this.nameStoreView.set(maybeNamedType, name);
}
return name;
}
private makeNameForType(
t: Type,
namer: Namer,
givenOrder: number,
inferredOrder: number,
): Name {
const names = t.getNames();
const order = names.areInferred ? inferredOrder : givenOrder;
return new SimpleName(names.proposedNames, namer, order);
}
protected makeNameForNamedType(t: Type): Name {
return this.makeNameForType(
t,
defined(this._namedTypeNamer),
givenNameOrder,
inferredNameOrder,
);
}
private addNameForNamedType(type: Type): Name {
const existing = this.nameStoreView.tryGet(type);
if (existing !== undefined) return existing;
const name = this.globalNamespace.add(this.makeNameForNamedType(type));
this.addDependenciesForNamedType(type, name);
this.nameStoreView.set(type, name);
return name;
}
protected get typesWithNamedTransformations(): ReadonlyMap<Type, Name> {
return defined(this._namesForTransformations);
}
protected nameForTransformation(t: Type): Name | undefined {
const xf = transformationForType(t);
if (xf === undefined) return undefined;
const name = defined(this._namesForTransformations).get(t);
if (name === undefined) {
return panic("No name for transformation");
}
return name;
}
private addNameForTransformation(t: Type): void {
const xf = transformationForType(t);
if (xf === undefined) return;
assert(
defined(this._namesForTransformations).get(t) === undefined,
"Tried to give two names to the same transformation",
);
const name = this.makeNameForTransformation(
xf,
this.nameStoreView.tryGet(xf.targetType),
);
if (name === undefined) return;
this.globalNamespace.add(name);
defined(this._namesForTransformations).set(t, name);
}
private processForbiddenWordsInfo(
info: ForbiddenWordsInfo,
namespaceName: string,
): {
forbiddenNames: ReadonlySet<Name>;
forbiddenNamespaces: ReadonlySet<Namespace>;
} {
const forbiddenNames: Name[] = [];
const forbiddenStrings: string[] = [];
for (const nameOrString of info.names) {
if (typeof nameOrString === "string") {
forbiddenStrings.push(nameOrString);
} else {
forbiddenNames.push(nameOrString);
}
}
let namespace = defined(this._otherForbiddenNamespaces).get(
namespaceName,
);
if (forbiddenStrings.length > 0 && namespace === undefined) {
namespace = keywordNamespace(namespaceName, forbiddenStrings);
this._otherForbiddenNamespaces = defined(
this._otherForbiddenNamespaces,
).set(namespaceName, namespace);
}
let forbiddenNamespaces = new Set<Namespace>();
if (info.includeGlobalForbidden) {
forbiddenNamespaces = forbiddenNamespaces.add(
defined(this._globalForbiddenNamespace),
);
}
if (namespace !== undefined) {
forbiddenNamespaces = forbiddenNamespaces.add(namespace);
}
return { forbiddenNames: new Set(forbiddenNames), forbiddenNamespaces };
}
protected makeNameForProperty(
o: ObjectType,
_className: Name,
p: ClassProperty,
jsonName: string,
assignedName: string | undefined,
): Name | undefined {
const namer = this.namerForObjectProperty(o, p);
if (namer === null) return undefined;
// FIXME: This alternative should really depend on what the
// actual name of the class ends up being. We can do this
// with a DependencyName.
// Also, we currently don't have any languages where properties
// are global, so collisions here could only occur where two
// properties of the same class have the same name, in which case
// the alternative would also be the same, i.e. useless. But
// maybe we'll need global properties for some weird language at
// some point.
const alternative = `${o.getCombinedName()}_${jsonName}`;
const order =
assignedName === undefined
? classPropertyNameOrder
: assignedClassPropertyNameOrder;
const names =
assignedName === undefined
? [jsonName, alternative]
: [assignedName];
return new SimpleName(names, namer, order);
}
protected makePropertyDependencyNames(
_o: ObjectType,
_className: Name,
_p: ClassProperty,
_jsonName: string,
_name: Name,
): Name[] {
return [];
}
private addPropertyNames(o: ObjectType, className: Name): void {
const { forbiddenNames, forbiddenNamespaces } =
this.processForbiddenWordsInfo(
this.forbiddenForObjectProperties(o, className),
"forbidden-for-properties",
);
let ns: Namespace | undefined;
const accessorNames = objectPropertyNames(o, this.targetLanguage.name);
const names = mapFilterMap(o.getSortedProperties(), (p, jsonName) => {
const [assignedName, isFixed] = getAccessorName(
accessorNames,
jsonName,
);
let name: Name | undefined;
if (isFixed) {
name = new FixedName(defined(assignedName));
} else {
name = this.makeNameForProperty(
o,
className,
p,
jsonName,
assignedName,
);
}
if (name === undefined) return undefined;
if (ns === undefined) {
ns = new Namespace(
o.getCombinedName(),
this.globalNamespace,
forbiddenNamespaces,
forbiddenNames,
);
}
ns.add(name);
for (const depName of this.makePropertyDependencyNames(
o,
className,
p,
jsonName,
name,
)) {
ns.add(depName);
}
return name;
});
defined(this._propertyNamesStoreView).set(o, names);
}
protected makeNameForUnionMember(
u: UnionType,
unionName: Name,
t: Type,
): Name {
const [assignedName, isFixed] = unionMemberName(
u,
t,
this.targetLanguage.name,
);
if (isFixed) {
return new FixedName(defined(assignedName));
}
return new DependencyName(
nonNull(this._unionMemberNamer),
unionMemberNameOrder,
(lookup) => {
if (assignedName !== undefined) return assignedName;
return this.proposeUnionMemberName(u, unionName, t, lookup);
},
);
}
private addUnionMemberNames(u: UnionType, unionName: Name): void {
const memberNamer = this._unionMemberNamer;
if (memberNamer === null) return;
const { forbiddenNames, forbiddenNamespaces } =
this.processForbiddenWordsInfo(
this.forbiddenForUnionMembers(u, unionName),
"forbidden-for-union-members",
);
let ns: Namespace;
if (this.unionMembersInGlobalNamespace) {
ns = this.globalNamespace;
} else {
ns = new Namespace(
u.getCombinedName(),
this.globalNamespace,
forbiddenNamespaces,
forbiddenNames,
);
}
const names = new Map<Type, Name>();
for (const t of u.members) {
const name = this.makeNameForUnionMember(
u,
unionName,
followTargetType(t),
);
names.set(t, ns.add(name));
}
defined(this._memberNamesStoreView).set(u, names);
}
protected makeNameForEnumCase(
e: EnumType,
_enumName: Name,
caseName: string,
assignedName: string | undefined,
): Name {
// FIXME: See the FIXME in `makeNameForProperty`. We do have global
// enum cases, though (in Go), so this is actually useful already.
const alternative = `${e.getCombinedName()}_${caseName}`;
const order =
assignedName === undefined
? enumCaseNameOrder
: assignedEnumCaseNameOrder;
const names =
assignedName === undefined
? [caseName, alternative]
: [assignedName];
return new SimpleName(names, nonNull(this._enumCaseNamer), order);
}
// FIXME: this is very similar to addPropertyNameds and addUnionMemberNames
private addEnumCaseNames(e: EnumType, enumName: Name): void {
if (this._enumCaseNamer === null) return;
const { forbiddenNames, forbiddenNamespaces } =
this.processForbiddenWordsInfo(
this.forbiddenForEnumCases(e, enumName),
"forbidden-for-enum-cases",
);
let ns: Namespace;
if (this.enumCasesInGlobalNamespace) {
ns = this.globalNamespace;
} else {
ns = new Namespace(
e.getCombinedName(),
this.globalNamespace,
forbiddenNamespaces,
forbiddenNames,
);
}
const names = new Map<string, Name>();
const accessorNames = enumCaseNames(e, this.targetLanguage.name);
for (const caseName of e.cases) {
const [assignedName, isFixed] = getAccessorName(
accessorNames,
caseName,
);
let name: Name;
if (isFixed) {
name = new FixedName(defined(assignedName));
} else {
name = this.makeNameForEnumCase(
e,
enumName,
caseName,
assignedName,
);
}
names.set(caseName, ns.add(name));
}
defined(this._caseNamesStoreView).set(e, names);
}
private childrenOfType(t: Type): ReadonlySet<Type> {
const names = this.names;
if (t instanceof ClassType) {
const propertyNameds = defined(this._propertyNamesStoreView).get(t);
const filteredMap = mapFilterMap(t.getProperties(), (p, n) => {
if (propertyNameds.get(n) === undefined) return undefined;
return p.type;
});
const sortedMap = mapSortBy(filteredMap, (_, n) =>
defined(names.get(defined(propertyNameds.get(n)))),
);
return new Set(sortedMap.values());
}
return t.getChildren();
}
protected get namedUnions(): ReadonlySet<UnionType> {
return defined(this._namedUnions);
}
protected get haveNamedUnions(): boolean {
return this.namedUnions.size > 0;
}
protected get haveNamedTypes(): boolean {
return defined(this._namedTypes).length > 0;
}
protected get haveUnions(): boolean {
return defined(this._haveUnions);
}
protected get haveMaps(): boolean {
return defined(this._haveMaps);
}
protected get haveOptionalProperties(): boolean {
return defined(this._haveOptionalProperties);
}
// FIXME: Inconsistently named, though technically correct. Right now all enums are named,
// but this should really be called `namedEnums`.
protected get enums(): ReadonlySet<EnumType> {
return defined(this._namedEnums);
}
protected get haveEnums(): boolean {
return this.enums.size > 0;
}
protected proposedUnionMemberNameForTypeKind(
_kind: TypeKind,
): string | null {
return null;
}
protected proposeUnionMemberName(
_u: UnionType,
_unionName: Name,
fieldType: Type,
lookup: (n: Name) => string,
): string {
const simpleName = this.proposedUnionMemberNameForTypeKind(
fieldType.kind,
);
if (simpleName !== null) {
return simpleName;
}
const typeNameForUnionMember = (t: Type): string =>
matchTypeExhaustive(
t,
(_noneType) => {
return panic("none type should have been replaced");
},
(_anyType) => "anything",
(_nullType) => "null",
(_boolType) => "bool",
(_integerType) => "integer",
(_doubleType) => "double",
(_stringType) => "string",
(arrayType) =>
typeNameForUnionMember(arrayType.items) + "_array",
(classType) => lookup(this.nameForNamedType(classType)),
(mapType) => typeNameForUnionMember(mapType.values) + "_map",
(objectType) => {
assert(
this.targetLanguage.supportsFullObjectType,
"Object type should have been replaced in `replaceObjectType`",
);
return lookup(this.nameForNamedType(objectType));
},
(_enumType) => "enum",
(_unionType) => "union",
(transformedType) => transformedType.kind.replace("-", "_"),
);
return typeNameForUnionMember(fieldType);
}
protected nameForNamedType(t: Type): Name {
return this.nameStoreView.get(t);
}
protected isForwardDeclaredType(t: Type): boolean {
return defined(this._declarationIR).forwardedTypes.has(t);
}
protected isImplicitCycleBreaker(_t: Type): boolean {
return panic(
"A renderer that invokes isCycleBreakerType must implement isImplicitCycleBreaker",
);
}
protected canBreakCycles(_t: Type): boolean {
return true;
}
protected isCycleBreakerType(t: Type): boolean {
if (this._cycleBreakerTypes === undefined) {
this._cycleBreakerTypes = cycleBreakerTypesForGraph(
this.typeGraph,
(s) => this.isImplicitCycleBreaker(s),
(s) => this.canBreakCycles(s),
);
}
return this._cycleBreakerTypes.has(t);
}
protected forEachTopLevel(
blankLocations: BlankLineConfig,
f: (t: Type, name: Name, position: ForEachPosition) => void,
predicate?: (t: Type) => boolean,
): boolean {
let topLevels: ReadonlyMap<string, Type>;
if (predicate !== undefined) {
topLevels = mapFilter(this.topLevels, predicate);
} else {
topLevels = this.topLevels;
}
return this.forEachWithBlankLines(
topLevels,
blankLocations,
(t, name, pos) =>
f(t, this.nameStoreView.getForTopLevel(name), pos),
);
}
protected forEachDeclaration(
blankLocations: BlankLineConfig,
f: (decl: Declaration, position: ForEachPosition) => void,
): void {
this.forEachWithBlankLines(
iterableEnumerate(defined(this._declarationIR).declarations),
blankLocations,
(decl, _, pos) => f(decl, pos),
);
}
public setAlphabetizeProperties(value: boolean): void {
this._alphabetizeProperties = value;
}
protected getAlphabetizeProperties(): boolean {
return this._alphabetizeProperties;
}
// Returns the number of properties defined for the specified object type.
protected propertyCount(o: ObjectType): number {
const propertyNames = defined(this._propertyNamesStoreView).get(o);
return propertyNames.size;
}
protected sortClassProperties(
properties: ReadonlyMap<string, ClassProperty>,
propertyNames: ReadonlyMap<string, Name>,
): ReadonlyMap<string, ClassProperty> {
if (this._alphabetizeProperties) {
return mapSortBy(
properties,
(_p: ClassProperty, jsonName: string) => {
const name = defined(propertyNames.get(jsonName));
return defined(this.names.get(name));
},
);
}
return properties;
}
protected forEachClassProperty(
o: ObjectType,
blankLocations: BlankLineConfig,
f: (
name: Name,
jsonName: string,
p: ClassProperty,
position: ForEachPosition,
) => void,
): void {
const propertyNames = defined(this._propertyNamesStoreView).get(o);
const sortedProperties = this.sortClassProperties(
o.getProperties(),
propertyNames,
);
this.forEachWithBlankLines(
sortedProperties,
blankLocations,
(p, jsonName, pos) => {
const name = defined(propertyNames.get(jsonName));
f(name, jsonName, p, pos);
},
);
}
protected nameForUnionMember(u: UnionType, t: Type): Name {
return defined(defined(this._memberNamesStoreView).get(u).get(t));
}
protected nameForEnumCase(e: EnumType, caseName: string): Name {
const caseNames = defined(this._caseNamesStoreView).get(e);
return defined(caseNames.get(caseName));
}
protected forEachUnionMember(
u: UnionType,
members: ReadonlySet<Type> | null,
blankLocations: BlankLineConfig,
sortOrder: ((n: Name, t: Type) => string) | null,
f: (name: Name, t: Type, position: ForEachPosition) => void,
): void {
const iterateMembers = members ?? u.members;
if (sortOrder === null) {
sortOrder = (n): string => defined(this.names.get(n));
}
const memberNames = mapFilter(
defined(this._memberNamesStoreView).get(u),
(_, t) => iterateMembers.has(t),
);
const sortedMemberNames = mapSortBy(memberNames, sortOrder);
this.forEachWithBlankLines(sortedMemberNames, blankLocations, f);
}
protected forEachEnumCase(
e: EnumType,
blankLocations: BlankLineConfig,
f: (name: Name, jsonName: string, position: ForEachPosition) => void,
): void {
const caseNames = defined(this._caseNamesStoreView).get(e);
const sortedCaseNames = mapSortBy(caseNames, (n) =>
defined(this.names.get(n)),
);
this.forEachWithBlankLines(sortedCaseNames, blankLocations, f);
}
protected forEachTransformation(
blankLocations: BlankLineConfig,
f: (n: Name, t: Type, position: ForEachPosition) => void,
): void {
this.forEachWithBlankLines(
defined(this._namesForTransformations),
blankLocations,
f,
);
}
protected forEachSpecificNamedType<T extends Type>(
blankLocations: BlankLineConfig,
types: Iterable<[T, T]>,
f: (t: T, name: Name, position: ForEachPosition) => void,
): void {
this.forEachWithBlankLines(types, blankLocations, (t, _, pos) =>
f(t, this.nameForNamedType(t), pos),
);
}
protected forEachObject(
blankLocations: BlankLineConfig,
f:
| ((
c: ClassType,
className: Name,
position: ForEachPosition,
) => void)
| ((
o: ObjectType,
objectName: Name,
position: ForEachPosition,
) => void),
): void {
// FIXME: This is ugly.
this.forEachSpecificNamedType<ObjectType>(
blankLocations,
defined(this._namedObjects).entries(),
f,
);
}
protected forEachEnum(
blankLocations: BlankLineConfig,
f: (u: EnumType, enumName: Name, position: ForEachPosition) => void,
): void {
this.forEachSpecificNamedType(blankLocations, this.enums.entries(), f);
}
protected forEachUnion(
blankLocations: BlankLineConfig,
f: (u: UnionType, unionName: Name, position: ForEachPosition) => void,
): void {
this.forEachSpecificNamedType(
blankLocations,
this.namedUnions.entries(),
f,
);
}
protected forEachUniqueUnion<T>(
blankLocations: BlankLineConfig,
uniqueValue: (u: UnionType) => T,
f: (firstUnion: UnionType, value: T, position: ForEachPosition) => void,
): void {
const firstUnionByValue = new Map<T, UnionType>();
for (const u of this.namedUnions) {
const v = uniqueValue(u);
if (!firstUnionByValue.has(v)) {
firstUnionByValue.set(v, u);
}
}
this.forEachWithBlankLines(firstUnionByValue, blankLocations, f);
}
protected forEachNamedType(
blankLocations: BlankLineConfig,
objectFunc:
| ((
c: ClassType,
className: Name,
position: ForEachPosition,
) => void)
| ((
o: ObjectType,
objectName: Name,
position: ForEachPosition,
) => void),
enumFunc: (
e: EnumType,
enumName: Name,
position: ForEachPosition,
) => void,
unionFunc: (
u: UnionType,
unionName: Name,
position: ForEachPosition,
) => void,
): void {
this.forEachWithBlankLines(
defined(this._namedTypes).entries(),
blankLocations,
(t, _, pos) => {
const name = this.nameForNamedType(t);
if (t instanceof ObjectType) {
// FIXME: This is ugly. We can't runtime check that the function
// takes full object types if we have them.
objectFunc(t, name, pos);
} else if (t instanceof EnumType) {
enumFunc(t, name, pos);
} else if (t instanceof UnionType) {
unionFunc(t, name, pos);
} else {
return panic("Named type that's neither a class nor union");
}
},
);
}
// You should never have to use this to produce parts of your generated
// code. If you need to modify a Name, for example to change its casing,
// use `modifySource`.
protected sourcelikeToString(src: Sourcelike): string {
return serializeRenderResult(
sourcelikeToSource(src),
this.names,
"",
).lines.join("\n");
}
protected get commentLineStart(): string {
return "// ";
}
protected emitComments(comments: Comment[]): void {
comments.forEach((comment) => {
if (isStringComment(comment)) {
this.emitCommentLines([comment]);
} else if ("lines" in comment) {
this.emitCommentLines(comment.lines);
} else if ("descriptionBlock" in comment) {
this.emitDescriptionBlock(comment.descriptionBlock);
} else {
this.emitCommentLines(comment.customLines, comment);
}
this.ensureBlankLine();
});
}
protected emitCommentLines(
lines: Sourcelike[],
{
lineStart = this.commentLineStart,
firstLineStart = lineStart,
lineEnd,
beforeComment,
afterComment,
}: CommentOptions = {},
): void {
if (beforeComment !== undefined) {
this.emitLine(beforeComment);
}
let first = true;
for (const line of lines) {
let start = first ? firstLineStart : lineStart;
first = false;
if (this.sourcelikeToString(line) === "") {
start = trimEnd(start);
}
if (lineEnd) {
this.emitLine(start, line, lineEnd);
} else {
this.emitLine(start, line);
}
}
if (afterComment !== undefined) {
this.emitLine(afterComment);
}
}
protected emitDescription(description: Sourcelike[] | undefined): void {
if (description === undefined) return;
// FIXME: word-wrap
this.emitDescriptionBlock(description);
}
protected emitDescriptionBlock(lines: Sourcelike[]): void {
this.emitCommentLines(lines);
}
protected emitPropertyTable(
c: ClassType,
makePropertyRow: (
name: Name,
jsonName: string,
p: ClassProperty,
) => Sourcelike[],
): void {
let table: Sourcelike[][] = [];
const emitTable = (): void => {
if (table.length === 0) return;
this.emitTable(table);
table = [];
};
this.forEachClassProperty(c, "none", (name, jsonName, p) => {
const description = this.descriptionForClassProperty(c, jsonName);
if (description !== undefined) {
emitTable();
this.emitDescription(description);
}
table.push(makePropertyRow(name, jsonName, p));
});
emitTable();
}
private processGraph(): void {
this._declarationIR = declarationsForGraph(
this.typeGraph,
this.needsTypeDeclarationBeforeUse
? (t): boolean => this.canBeForwardDeclared(t)
: undefined,
(t) => this.childrenOfType(t),
(t) => {
if (t instanceof UnionType) {
return this.unionNeedsName(t);
}
return isNamedType(t);
},
);
const types = this.typeGraph.allTypesUnordered();
this._haveUnions = iterableSome(types, (t) => t instanceof UnionType);
this._haveMaps = iterableSome(types, (t) => t instanceof MapType);
const classTypes = setFilter(
types,
(t) => t instanceof ClassType,
) as Set<ClassType>;
this._haveOptionalProperties = iterableSome(classTypes, (c) =>
mapSome(c.getProperties(), (p) => p.isOptional),
);
this._namedTypes = this._declarationIR.declarations
.filter((d) => d.kind === "define")
.map((d) => d.type);
const { objects, enums, unions } = separateNamedTypes(this._namedTypes);
this._namedObjects = new Set(objects);
this._namedEnums = new Set(enums);
this._namedUnions = new Set(unions);
}
protected emitSource(givenOutputFilename: string): void {
this.processGraph();
this.emitSourceStructure(givenOutputFilename);
}
protected forEachType<TResult>(
process: (t: Type) => TResult,
): Set<TResult> {
const visitedTypes = new Set<Type>();
const processed = new Set<TResult>();
const queue = Array.from(this.typeGraph.topLevels.values());
function visit(t: Type): void {
if (visitedTypes.has(t)) return;
for (const c of t.getChildren()) {
queue.push(c);
}
visitedTypes.add(t);
processed.add(process(t));
}
for (;;) {
const maybeType = queue.pop();
if (maybeType === undefined) {
break;
}
visit(maybeType);
}
return processed;
}
}
================================================
FILE: packages/quicktype-core/src/CycleBreaker.ts
================================================
import { assert, panic } from "./support/Support";
export function breakCycles<T>(
outEdges: number[][],
chooseBreaker: (cycle: number[]) => [number, T],
): Array<[number, T]> {
const numNodes = outEdges.length;
const inEdges: number[][] = [];
const inDegree: number[] = [];
const outDegree: number[] = [];
const done: boolean[] = [];
const results: Array<[number, T]> = [];
for (let i = 0; i < numNodes; i++) {
inEdges.push([]);
inDegree.push(0);
outDegree.push(outEdges[i].length);
done.push(false);
}
for (let i = 0; i < numNodes; i++) {
for (const n of outEdges[i]) {
inEdges[n].push(i);
inDegree[n] += 1;
}
}
const workList: number[] = [];
for (let i = 0; i < numNodes; i++) {
if (inDegree[i] === 0 || outDegree[i] === 0) {
workList.push(i);
}
}
function removeNode(node: number): void {
for (const n of outEdges[node]) {
assert(inDegree[n] > 0);
inDegree[n] -= 1;
if (inDegree[n] === 0) {
workList.push(n);
}
}
for (const n of inEdges[node]) {
assert(outDegree[n] > 0);
outDegree[n] -= 1;
if (outDegree[n] === 0) {
workList.push(n);
}
}
done[node] = true;
}
for (;;) {
const i = workList.pop();
if (i !== undefined) {
if (done[i] || (inDegree[i] === 0 && outDegree[i] === 0)) {
done[i] = true;
continue;
}
assert(
inDegree[i] === 0 || outDegree[i] === 0,
"Can't have nodes in the worklist with in and out edges",
);
removeNode(i);
continue;
}
let n = done.indexOf(false);
if (n < 0) {
// We're done!
break;
}
// There's a cycle
const path: number[] = [n];
for (;;) {
// FIXME: We look an arbitrary node that's still in the graph and follow it
// until we see a cycle. This cycle might not be the first cycle the needs to
// be broken. For example, imagine two cycles that are connected via an edge,
// i.e. one cycle depends on the other cycle. The dependee cycle should be
// broken up first.
//
// We could count the number of reachable nodes for all nodes in the graph,
// and then pick one of the nodes with the lowest number, which would pick
// the dependee cycle.
const maybeEdge = outEdges[n].find((x) => !done[x]);
if (maybeEdge === undefined) {
return panic("Presumed cycle is not a cycle");
}
const maybeFirst = path.indexOf(maybeEdge);
if (maybeFirst === undefined) {
// No cycle yet, continue
n = maybeEdge;
path.push(n);
continue;
}
// We found a cycle - break it
const cycle = path.slice(maybeFirst);
const [breakNode, info] = chooseBreaker(cycle);
assert(cycle.includes(breakNode), "Breaker chose an invalid node");
removeNode(breakNode);
results.push([breakNode, info]);
break;
}
continue;
}
return results;
}
================================================
FILE: packages/quicktype-core/src/DateTime.ts
================================================
/* eslint-disable */
// https://github.com/epoberezkin/ajv/blob/4d76c6fb813b136b6ec4fe74990bc97233d75dea/lib/compile/formats.js
/*
The MIT License (MIT)
Copyright (c) 2015 Evgeny Poberezkin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
const DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
const DAYS = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
const TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i;
export interface DateTimeRecognizer {
isDate: (s: string) => boolean;
isDateTime: (s: string) => boolean;
isTime: (s: string) => boolean;
}
const DATE_TIME_SEPARATOR = /t|\s/i;
export class DefaultDateTimeRecognizer implements DateTimeRecognizer {
isDate(str: string) {
// full-date from http://tools.ietf.org/html/rfc3339#section-5.6
const matches = DATE.exec(str);
if (matches === null) return false;
const month = +matches[2];
const day = +matches[3];
return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month];
}
isTime(str: string): boolean {
const matches = TIME.exec(str);
if (matches === null) return false;
const hour = +matches[1];
const minute = +matches[2];
const second = +matches[3];
return hour <= 23 && minute <= 59 && second <= 59;
}
isDateTime(str: string): boolean {
// http://tools.ietf.org/html/rfc3339#section-5.6
const dateTime = str.split(DATE_TIME_SEPARATOR);
return (
dateTime.length === 2 &&
this.isDate(dateTime[0]) &&
this.isTime(dateTime[1])
);
}
}
================================================
FILE: packages/quicktype-core/src/DeclarationIR.ts
================================================
import {
iterableFirst,
setFilter,
setIntersect,
setSubtract,
setUnionInto,
} from "collection-utils";
import { Graph } from "./Graph";
import { messageError } from "./Messages";
import { assert, defined, panic } from "./support/Support";
import type { Type } from "./Type/Type";
import type { TypeGraph } from "./Type/TypeGraph";
export type DeclarationKind = "forward" | "define";
export interface Declaration {
readonly kind: DeclarationKind;
readonly type: Type;
}
export class DeclarationIR {
public readonly declarations: readonly Declaration[];
public constructor(
declarations: Iterable<Declaration>,
public readonly forwardedTypes: Set<Type>,
) {
this.declarations = Array.from(declarations);
}
}
function findBreaker(
t: Type,
path: readonly Type[],
canBreak: ((t: Type) => boolean) | undefined,
): Type | undefined {
const index = path.indexOf(t);
if (index < 0) return undefined;
if (canBreak === undefined) {
return path[index];
}
const potentialBreakers = path.slice(0, index + 1).reverse();
const maybeBreaker = potentialBreakers.find(canBreak);
if (maybeBreaker === undefined) {
return panic("Found a cycle that cannot be broken");
}
return maybeBreaker;
}
export function cycleBreakerTypesForGraph(
graph: TypeGraph,
isImplicitCycleBreaker: (t: Type) => boolean,
canBreakCycles: (t: Type) => boolean,
): Set<Type> {
const visitedTypes = new Set<Type>();
const cycleBreakerTypes = new Set<Type>();
const queue: Type[] = Array.from(graph.topLevels.values());
function visit(t: Type, path: Type[]): void {
if (visitedTypes.has(t)) return;
if (isImplicitCycleBreaker(t)) {
for (const c of t.getChildren()) {
queue.push(c);
}
} else {
const maybeBreaker = findBreaker(t, path, canBreakCycles);
if (maybeBreaker !== undefined) {
cycleBreakerTypes.add(maybeBreaker);
return;
}
for (const c of t.getChildren()) {
path.unshift(t);
visit(c, path);
path.shift();
}
}
visitedTypes.add(t);
}
for (;;) {
const maybeType = queue.pop();
if (maybeType === undefined) break;
const path: Type[] = [];
visit(maybeType, path);
assert(path.length === 0);
}
return cycleBreakerTypes;
}
export function declarationsForGraph(
typeGraph: TypeGraph,
canBeForwardDeclared: ((t: Type) => boolean) | undefined,
childrenOfType: (t: Type) => ReadonlySet<Type>,
needsDeclaration: (t: Type) => boolean,
): DeclarationIR {
/*
function nodeTitle(t: Type): string {
const indexAndKind = `${t.typeRef.index} ${t.kind}`;
if (t.hasNames) {
return `${indexAndKind} ${t.getCombinedName()}`;
} else {
return indexAndKind;
}
}
function componentName(c: Iterable<Type>): string {
return Array.from(c).map(nodeTitle).join(", ");
}
*/
const topDown = canBeForwardDeclared === undefined;
const declarations: Declaration[] = [];
const forwardedTypes = new Set<Type>();
const visitedComponents = new Set<ReadonlySet<Type>>();
function processGraph(graph: Graph<Type>, _writeComponents: boolean): void {
const componentsGraph = graph.stronglyConnectedComponents();
function visitComponent(component: ReadonlySet<Type>): void {
if (visitedComponents.has(component)) return;
visitedComponents.add(component);
// console.log(`visiting component ${componentName(component)}`);
const declarationNeeded = setFilter(component, needsDeclaration);
// 1. Only one node in the cycle needs a declaration, in which
// case it's the breaker, and no forward declaration is necessary.
if (declarationNeeded.size === 1) {
declarations.push({
kind: "define",
type: defined(iterableFirst(declarationNeeded)),
});
return;
}
// 2. No node in the cycle needs a declaration, but it's also
// the only node, so we don't actually need a declaration at all.
if (declarationNeeded.size === 0 && component.size === 1) {
return;
}
// 3. No node in the cycle needs a declaration, but there's more.
// than one node total. We have to pick a node to make a
// declaration, so we can pick any one. This is not a forward
// declaration, either.
if (declarationNeeded.size === 0) {
declarations.push({
kind: "define",
type: defined(iterableFirst(component)),
});
return;
}
// 4. More than one node needs a declaration, and we don't need
// forward declarations. Just declare all of them and be done
// with it.
if (canBeForwardDeclared === undefined) {
for (const t of declarationNeeded) {
declarations.push({ kind: "define", type: t });
}
return;
}
// 5. More than one node needs a declaration, and we have
// to make forward declarations. We do the simple thing and first
// forward-declare all forward-declarable types in the SCC. If
// there are none, we're stuck. If there are, we take them out of
// the component and try the whole thing again recursively. Then
// we declare the types we previously forward-declared.
const forwardDeclarable = setFilter(
component,
canBeForwardDeclared,
);
if (forwardDeclarable.size === 0) {
messageError("IRNoForwardDeclarableTypeInCycle", {});
}
for (const t of forwardDeclarable) {
declarations.push({ kind: "forward", type: t });
}
setUnionInto(forwardedTypes, forwardDeclarable);
const rest = setSubtract(component, forwardDeclarable);
const restGraph = new Graph(rest, true, (t) =>
setIntersect(childrenOfType(t), rest),
);
processGraph(restGraph, false);
for (const t of forwardDeclarable) {
declarations.push({ kind: "define", type: t });
}
return;
}
/*
if (_writeComponents) {
componentsGraph.nodes.forEach(types => {
console.log(
`scc: ${types
.filter(t => t instanceof ClassType)
.map(t => t.getCombinedName())
.join(", ")}`
);
});
}
*/
const rootsUnordered = componentsGraph.findRoots();
const roots = rootsUnordered;
for (const component of roots) {
componentsGraph.dfsTraversal(component, topDown, visitComponent);
}
}
const fullGraph = typeGraph.makeGraph(false, childrenOfType);
// fs.writeFileSync("graph.dot", fullGraph.makeDot(t => !(t instanceof PrimitiveType), nodeTitle));
processGraph(fullGraph, true);
return new DeclarationIR(declarations, forwardedTypes);
}
================================================
FILE: packages/quicktype-core/src/EncodedMarkovChain.ts
================================================
export const encodedMarkovChain =
"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
gitextract_n0pnx0cj/ ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── master.yaml │ ├── setup/ │ │ └── action.yaml │ └── test-pr.yaml ├── .gitignore ├── .nvmrc ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── FAQ.md ├── LICENSE ├── README.md ├── biome.json ├── data/ │ └── lib.d.ts ├── doc/ │ ├── CustomRenderer.md │ ├── PostmanCollection.schema │ ├── Templates.md │ └── Transformers.md ├── package.json ├── packages/ │ ├── quicktype-core/ │ │ ├── env.sh │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Annotation.ts │ │ │ ├── ConvenienceRenderer.ts │ │ │ ├── CycleBreaker.ts │ │ │ ├── DateTime.ts │ │ │ ├── DeclarationIR.ts │ │ │ ├── EncodedMarkovChain.ts │ │ │ ├── GatherNames.ts │ │ │ ├── Graph.ts │ │ │ ├── GraphRewriting.ts │ │ │ ├── Inference.ts │ │ │ ├── MakeTransformations.ts │ │ │ ├── MarkovChain.ts │ │ │ ├── Messages.ts │ │ │ ├── Naming.ts │ │ │ ├── Renderer.ts │ │ │ ├── RendererOptions/ │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── Run.ts │ │ │ ├── Source.ts │ │ │ ├── TargetLanguage.ts │ │ │ ├── Transformers.ts │ │ │ ├── Type/ │ │ │ │ ├── ProvenanceTypeAttributeKind.ts │ │ │ │ ├── TransformedStringType.ts │ │ │ │ ├── Type.ts │ │ │ │ ├── TypeBuilder.ts │ │ │ │ ├── TypeBuilderUtils.ts │ │ │ │ ├── TypeGraph.ts │ │ │ │ ├── TypeGraphUtils.ts │ │ │ │ ├── TypeRef.ts │ │ │ │ ├── TypeUtils.ts │ │ │ │ └── index.ts │ │ │ ├── UnifyClasses.ts │ │ │ ├── UnionBuilder.ts │ │ │ ├── attributes/ │ │ │ │ ├── AccessorNames.ts │ │ │ │ ├── Constraints.ts │ │ │ │ ├── Description.ts │ │ │ │ ├── EnumValues.ts │ │ │ │ ├── StringTypes.ts │ │ │ │ ├── TypeAttributes.ts │ │ │ │ ├── TypeNames.ts │ │ │ │ └── URIAttributes.ts │ │ │ ├── index.ts │ │ │ ├── input/ │ │ │ │ ├── CompressedJSON.ts │ │ │ │ ├── FetchingJSONSchemaStore.ts │ │ │ │ ├── Inference.ts │ │ │ │ ├── Inputs.ts │ │ │ │ ├── JSONSchemaInput.ts │ │ │ │ ├── JSONSchemaStore.ts │ │ │ │ ├── PathElement.ts │ │ │ │ ├── PostmanCollection.ts │ │ │ │ └── io/ │ │ │ │ ├── $fetch.ci.ts │ │ │ │ ├── $fetch.ts │ │ │ │ ├── NodeIO.ts │ │ │ │ └── get-stream/ │ │ │ │ ├── buffer-stream.ts │ │ │ │ ├── index.ts │ │ │ │ └── license │ │ │ ├── language/ │ │ │ │ ├── All.ts │ │ │ │ ├── CJSON/ │ │ │ │ │ ├── CJSONRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── CPlusPlus/ │ │ │ │ │ ├── CPlusPlusRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── CSharp/ │ │ │ │ │ ├── CSharpRenderer.ts │ │ │ │ │ ├── NewtonSoftCSharpRenderer.ts │ │ │ │ │ ├── SystemTextJsonCSharpRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Crystal/ │ │ │ │ │ ├── CrystalRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Dart/ │ │ │ │ │ ├── DartRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Elixir/ │ │ │ │ │ ├── ElixirRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Elm/ │ │ │ │ │ ├── ElmRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Golang/ │ │ │ │ │ ├── GolangRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Haskell/ │ │ │ │ │ ├── HaskellRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── JSONSchema/ │ │ │ │ │ ├── JSONSchemaRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Java/ │ │ │ │ │ ├── DateTimeProvider.ts │ │ │ │ │ ├── JavaJacksonRenderer.ts │ │ │ │ │ ├── JavaRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── JavaScript/ │ │ │ │ │ ├── JavaScriptRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ ├── unicodeMaps.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── JavaScriptPropTypes/ │ │ │ │ │ ├── JavaScriptPropTypesRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── language.ts │ │ │ │ ├── Kotlin/ │ │ │ │ │ ├── KotlinJacksonRenderer.ts │ │ │ │ │ ├── KotlinKlaxonRenderer.ts │ │ │ │ │ ├── KotlinRenderer.ts │ │ │ │ │ ├── KotlinXRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Objective-C/ │ │ │ │ │ ├── ObjectiveCRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Php/ │ │ │ │ │ ├── PhpRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Pike/ │ │ │ │ │ ├── PikeRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Python/ │ │ │ │ │ ├── JSONPythonRenderer.ts │ │ │ │ │ ├── PythonRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Ruby/ │ │ │ │ │ ├── RubyRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Rust/ │ │ │ │ │ ├── RustRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Scala3/ │ │ │ │ │ ├── CirceRenderer.ts │ │ │ │ │ ├── Scala3Renderer.ts │ │ │ │ │ ├── UpickleRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Smithy4s/ │ │ │ │ │ ├── Smithy4sRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Swift/ │ │ │ │ │ ├── SwiftRenderer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── TypeScriptEffectSchema/ │ │ │ │ │ ├── TypeScriptEffectSchemaRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── language.ts │ │ │ │ ├── TypeScriptFlow/ │ │ │ │ │ ├── FlowRenderer.ts │ │ │ │ │ ├── TypeScriptFlowBaseRenderer.ts │ │ │ │ │ ├── TypeScriptRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── language.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── TypeScriptZod/ │ │ │ │ │ ├── TypeScriptZodRenderer.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── language.ts │ │ │ │ ├── index.ts │ │ │ │ ├── options.types.ts │ │ │ │ └── types.ts │ │ │ ├── rewrites/ │ │ │ │ ├── CombineClasses.ts │ │ │ │ ├── ExpandStrings.ts │ │ │ │ ├── FlattenStrings.ts │ │ │ │ ├── FlattenUnions.ts │ │ │ │ ├── InferMaps.ts │ │ │ │ ├── ReplaceObjectType.ts │ │ │ │ └── ResolveIntersections.ts │ │ │ ├── support/ │ │ │ │ ├── Acronyms.const.ts │ │ │ │ ├── Acronyms.ts │ │ │ │ ├── Chance.ts │ │ │ │ ├── Comments.ts │ │ │ │ ├── Converters.ts │ │ │ │ ├── Strings.ts │ │ │ │ └── Support.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── quicktype-graphql-input/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── GraphQLSchema.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── quicktype-typescript-input/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── EncodedDefaultTypeScriptLibrary.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ └── quicktype-vscode/ │ ├── .gitignore │ ├── .vscodeignore │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── quicktype-23.0.122.vsix │ ├── src/ │ │ └── extension.ts │ └── tsconfig.json ├── script/ │ ├── dev │ ├── dev.ps1 │ ├── homebrew-update.sh │ ├── make-encoded-markov-chain.sh │ ├── make-encoded-ts-lib.sh │ ├── patch-npm-version.ts │ ├── publish.sh │ ├── quickesttype │ ├── quicktype │ ├── test │ └── watch ├── src/ │ ├── CompressedJSONFromStream.ts │ ├── GraphQLIntrospection.ts │ ├── TypeSource.ts │ ├── URLGrammar.ts │ └── index.ts ├── test/ │ ├── .gitignore │ ├── acronyms.txt │ ├── awesome-json-datasets │ ├── buildkite.ts │ ├── compare-all.sh │ ├── fixtures/ │ │ ├── cjson/ │ │ │ └── main.c │ │ ├── cplusplus/ │ │ │ ├── Generators.hpp │ │ │ └── main.cpp │ │ ├── crystal/ │ │ │ └── main.cr │ │ ├── csharp/ │ │ │ ├── .gitignore │ │ │ ├── .vscode/ │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── Program.cs │ │ │ └── test.csproj │ │ ├── csharp-SystemTextJson/ │ │ │ ├── .gitignore │ │ │ ├── .vscode/ │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── Program.cs │ │ │ └── test.csproj │ │ ├── dart/ │ │ │ └── parser.dart │ │ ├── elixir/ │ │ │ ├── .gitignore │ │ │ ├── main.exs │ │ │ └── mix.exs │ │ ├── elm/ │ │ │ ├── .gitignore │ │ │ ├── Main.elm │ │ │ ├── elm-package.json │ │ │ └── runner.js │ │ ├── flow/ │ │ │ ├── .flowconfig │ │ │ └── main.js │ │ ├── golang/ │ │ │ └── main.go │ │ ├── haskell/ │ │ │ ├── .gitignore │ │ │ ├── Main.hs │ │ │ ├── QuickType.hs │ │ │ ├── Setup.hs │ │ │ ├── package.yaml │ │ │ └── stack.yaml │ │ ├── java/ │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings/ │ │ │ │ ├── org.eclipse.jdt.core.prefs │ │ │ │ └── org.eclipse.m2e.core.prefs │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── io/ │ │ │ └── quicktype/ │ │ │ ├── App.java │ │ │ ├── Converter.java │ │ │ └── TopLevel.java │ │ ├── java-lombok/ │ │ │ ├── .classpath │ │ │ ├── .project │ │ │ ├── .settings/ │ │ │ │ ├── org.eclipse.jdt.core.prefs │ │ │ │ └── org.eclipse.m2e.core.prefs │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── io/ │ │ │ └── quicktype/ │ │ │ ├── App.java │ │ │ ├── Converter.java │ │ │ └── TopLevel.java │ │ ├── javascript/ │ │ │ └── main.js │ │ ├── javascript-prop-types/ │ │ │ ├── main.js │ │ │ └── package.json │ │ ├── kotlin/ │ │ │ ├── .gitignore │ │ │ ├── TopLevel.kt │ │ │ ├── build.sh │ │ │ ├── klaxon-3.0.1.jar │ │ │ ├── main.kt │ │ │ ├── run.sh │ │ │ └── sample.json │ │ ├── kotlin-jackson/ │ │ │ ├── .gitignore │ │ │ ├── build.sh │ │ │ ├── jackson-annotations-2.9.0.jar │ │ │ ├── jackson-core-2.9.7.jar │ │ │ ├── jackson-databind-2.9.7.jar │ │ │ ├── jackson-module-kotlin-2.9.7.jar │ │ │ ├── main.kt │ │ │ ├── run.sh │ │ │ └── runfixture.sh │ │ ├── objective-c/ │ │ │ ├── ObjectiveCFixture.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ └── xcuserdata/ │ │ │ │ └── david.xcuserdatad/ │ │ │ │ └── xcschemes/ │ │ │ │ ├── ObjectiveCFixture.xcscheme │ │ │ │ └── xcschememanagement.plist │ │ │ ├── QTTopLevel.h │ │ │ ├── QTTopLevel.m │ │ │ ├── main.m │ │ │ └── sample.json │ │ ├── php/ │ │ │ └── main.php │ │ ├── pike/ │ │ │ └── main.pike │ │ ├── python/ │ │ │ ├── main.py │ │ │ └── run.sh │ │ ├── ruby/ │ │ │ ├── .gitignore │ │ │ ├── Gemfile │ │ │ └── main.rb │ │ ├── rust/ │ │ │ ├── Cargo.toml │ │ │ └── main.rs │ │ ├── scala3/ │ │ │ ├── .gitignore │ │ │ ├── circe.scala │ │ │ ├── rename/ │ │ │ │ ├── debug.scala │ │ │ │ └── upickle.scala │ │ │ └── run.sh │ │ ├── swift/ │ │ │ ├── .gitignore │ │ │ ├── SwiftFixture.xcodeproj/ │ │ │ │ └── project.pbxproj │ │ │ ├── main.swift │ │ │ └── quicktype.swift │ │ ├── typescript/ │ │ │ ├── main.ts │ │ │ └── tsconfig.json │ │ ├── typescript-effect-schema/ │ │ │ ├── main.ts │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ └── typescript-zod/ │ │ ├── main.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── fixtures.ts │ ├── generate-json.py │ ├── generate-markov-corpus.py │ ├── inputs/ │ │ ├── graphql/ │ │ │ ├── github.gqlschema │ │ │ ├── github1.1.json │ │ │ ├── github1.graphql │ │ │ ├── github2.1.json │ │ │ ├── github2.graphql │ │ │ ├── github3.1.json │ │ │ ├── github3.graphql │ │ │ ├── github4.1.json │ │ │ ├── github4.graphql │ │ │ ├── github5.1.json │ │ │ ├── github5.2.json │ │ │ ├── github5.graphql │ │ │ ├── github6.1.json │ │ │ ├── github6.graphql │ │ │ ├── github7.1.json │ │ │ ├── github7.graphql │ │ │ ├── github8.1.json │ │ │ ├── github8.graphql │ │ │ ├── github9.1.json │ │ │ └── github9.graphql │ │ ├── json/ │ │ │ ├── misc/ │ │ │ │ ├── 00c36.json │ │ │ │ ├── 00ec5.json │ │ │ │ ├── 010b1.json │ │ │ │ ├── 016af.json │ │ │ │ ├── 033b1.json │ │ │ │ ├── 050b0.json │ │ │ │ ├── 06bee.json │ │ │ │ ├── 07540.json │ │ │ │ ├── 0779f.json │ │ │ │ ├── 07c75.json │ │ │ │ ├── 09f54.json │ │ │ │ ├── 0a358.json │ │ │ │ ├── 0a91a.json │ │ │ │ ├── 0b91a.json │ │ │ │ ├── 0cffa.json │ │ │ │ ├── 0e0c2.json │ │ │ │ ├── 0fecf.json │ │ │ │ ├── 10be4.json │ │ │ │ ├── 112b5.json │ │ │ │ ├── 127a1.json │ │ │ │ ├── 13d8d.json │ │ │ │ ├── 14d38.json │ │ │ │ ├── 167d6.json │ │ │ │ ├── 16bc5.json │ │ │ │ ├── 176f1.json │ │ │ │ ├── 1a7f5.json │ │ │ │ ├── 1b28c.json │ │ │ │ ├── 1b409.json │ │ │ │ ├── 2465e.json │ │ │ │ ├── 24f52.json │ │ │ │ ├── 262f0.json │ │ │ │ ├── 26b49.json │ │ │ │ ├── 26c9c.json │ │ │ │ ├── 27332.json │ │ │ │ ├── 29f47.json │ │ │ │ ├── 2d4e2.json │ │ │ │ ├── 2df80.json │ │ │ │ ├── 31189.json │ │ │ │ ├── 32431.json │ │ │ │ ├── 32d5c.json │ │ │ │ ├── 337ed.json │ │ │ │ ├── 33d2e.json │ │ │ │ ├── 34702.json │ │ │ │ ├── 3536b.json │ │ │ │ ├── 3659d.json │ │ │ │ ├── 36d5d.json │ │ │ │ ├── 3a6b3.json │ │ │ │ ├── 3e9a3.json │ │ │ │ ├── 3f1ce.json │ │ │ │ ├── 421d4.json │ │ │ │ ├── 437e7.json │ │ │ │ ├── 43970.json │ │ │ │ ├── 43eaf.json │ │ │ │ ├── 458db.json │ │ │ │ ├── 4961a.json │ │ │ │ ├── 4a0d7.json │ │ │ │ ├── 4a455.json │ │ │ │ ├── 4c547.json │ │ │ │ ├── 4d6fb.json │ │ │ │ ├── 4e336.json │ │ │ │ ├── 54147.json │ │ │ │ ├── 54d32.json │ │ │ │ ├── 570ec.json │ │ │ │ ├── 5dd0d.json │ │ │ │ ├── 5eae5.json │ │ │ │ ├── 5eb20.json │ │ │ │ ├── 5f3a1.json │ │ │ │ ├── 5f7fe.json │ │ │ │ ├── 617e8.json │ │ │ │ ├── 61b66.json │ │ │ │ ├── 6260a.json │ │ │ │ ├── 65dec.json │ │ │ │ ├── 66121.json │ │ │ │ ├── 6617c.json │ │ │ │ ├── 67c03.json │ │ │ │ ├── 68c30.json │ │ │ │ ├── 6c155.json │ │ │ │ ├── 6de06.json │ │ │ │ ├── 6dec6.json │ │ │ │ ├── 6eb00.json │ │ │ │ ├── 70c77.json │ │ │ │ ├── 734ad.json │ │ │ │ ├── 75912.json │ │ │ │ ├── 7681c.json │ │ │ │ ├── 76ae1.json │ │ │ │ ├── 77392.json │ │ │ │ ├── 7d397.json │ │ │ │ ├── 7d722.json │ │ │ │ ├── 7df41.json │ │ │ │ ├── 7dfa6.json │ │ │ │ ├── 7eb30.json │ │ │ │ ├── 7f568.json │ │ │ │ ├── 7fbfb.json │ │ │ │ ├── 80aff.json │ │ │ │ ├── 82509.json │ │ │ │ ├── 8592b.json │ │ │ │ ├── 88130.json │ │ │ │ ├── 8a62c.json │ │ │ │ ├── 908db.json │ │ │ │ ├── 9617f.json │ │ │ │ ├── 96f7c.json │ │ │ │ ├── 9847b.json │ │ │ │ ├── 9929c.json │ │ │ │ ├── 996bd.json │ │ │ │ ├── 9a503.json │ │ │ │ ├── 9ac3b.json │ │ │ │ ├── 9eed5.json │ │ │ │ ├── a0496.json │ │ │ │ ├── a1eca.json │ │ │ │ ├── a3d8c.json │ │ │ │ ├── a45b0.json │ │ │ │ ├── a71df.json │ │ │ │ ├── a9691.json │ │ │ │ ├── ab0d1.json │ │ │ │ ├── abb4b.json │ │ │ │ ├── ac944.json │ │ │ │ ├── ad8be.json │ │ │ │ ├── ae7f0.json │ │ │ │ ├── ae9ca.json │ │ │ │ ├── af2d1.json │ │ │ │ ├── b4865.json │ │ │ │ ├── b6f2c.json │ │ │ │ ├── b6fe5.json │ │ │ │ ├── b9f64.json │ │ │ │ ├── bb1ec.json │ │ │ │ ├── be234.json │ │ │ │ ├── c0356.json │ │ │ │ ├── c0a3a.json │ │ │ │ ├── c3303.json │ │ │ │ ├── c6cfd.json │ │ │ │ ├── c8c7e.json │ │ │ │ ├── cb0cc.json │ │ │ │ ├── cb81e.json │ │ │ │ ├── ccd18.json │ │ │ │ ├── cd238.json │ │ │ │ ├── cd463.json │ │ │ │ ├── cda6c.json │ │ │ │ ├── cf0d8.json │ │ │ │ ├── cfbce.json │ │ │ │ ├── d0908.json │ │ │ │ ├── d23d5.json │ │ │ │ ├── dbfb3.json │ │ │ │ ├── dc44f.json │ │ │ │ ├── dd1ce.json │ │ │ │ ├── dec3a.json │ │ │ │ ├── df957.json │ │ │ │ ├── e0ac7.json │ │ │ │ ├── e2915.json │ │ │ │ ├── e2a58.json │ │ │ │ ├── e324e.json │ │ │ │ ├── e53b5.json │ │ │ │ ├── e64a0.json │ │ │ │ ├── e8a0b.json │ │ │ │ ├── e8b04.json │ │ │ │ ├── ed095.json │ │ │ │ ├── f22f5.json │ │ │ │ ├── f3139.json │ │ │ │ ├── f3edf.json │ │ │ │ ├── f466a.json │ │ │ │ ├── f6a65.json │ │ │ │ ├── f74d5.json │ │ │ │ ├── f82d9.json │ │ │ │ ├── f974d.json │ │ │ │ ├── faff5.json │ │ │ │ ├── fcca3.json │ │ │ │ └── fd329.json │ │ │ ├── priority/ │ │ │ │ ├── blns-object.json │ │ │ │ ├── bug427.json │ │ │ │ ├── bug790.json │ │ │ │ ├── bug855-short.json │ │ │ │ ├── bug863.json │ │ │ │ ├── coin-pairs.json │ │ │ │ ├── combinations1.json │ │ │ │ ├── combinations2.json │ │ │ │ ├── combinations3.json │ │ │ │ ├── combinations4.json │ │ │ │ ├── combined-enum.json │ │ │ │ ├── direct-recursive.json │ │ │ │ ├── empty-enum.json │ │ │ │ ├── identifiers.json │ │ │ │ ├── keywords.json │ │ │ │ ├── list.json │ │ │ │ ├── name-style.json │ │ │ │ ├── nbl-stats.json │ │ │ │ ├── no-classes.json │ │ │ │ ├── nst-test-suite.json │ │ │ │ ├── number-map.json │ │ │ │ ├── optional-union.json │ │ │ │ ├── recursive.json │ │ │ │ ├── simple-identifiers.json │ │ │ │ ├── union-constructor-clash.json │ │ │ │ ├── unions.json │ │ │ │ └── url.json │ │ │ └── samples/ │ │ │ ├── bitcoin-block.json │ │ │ ├── getting-started.json │ │ │ ├── github-events.json │ │ │ ├── kitchen-sink.json │ │ │ ├── null-safe.json │ │ │ ├── pokedex.json │ │ │ ├── reddit.json │ │ │ ├── simple-object.json │ │ │ ├── spotify-album.json │ │ │ ├── us-avg-temperatures.json │ │ │ └── us-senators.json │ │ ├── schema/ │ │ │ ├── a/ │ │ │ │ └── test2.json │ │ │ ├── accessors.1.json │ │ │ ├── accessors.schema │ │ │ ├── any.1.json │ │ │ ├── any.2.json │ │ │ ├── any.3.json │ │ │ ├── any.schema │ │ │ ├── b/ │ │ │ │ └── test3.json │ │ │ ├── bool-string.1.fail.bool-string.json │ │ │ ├── bool-string.1.json │ │ │ ├── bool-string.1.out.bool-string.json │ │ │ ├── bool-string.2.json │ │ │ ├── bool-string.3.json │ │ │ ├── bool-string.schema │ │ │ ├── camelCase.schema │ │ │ ├── camelCase1.json │ │ │ ├── class-map-union.1.fail.union.json │ │ │ ├── class-map-union.1.json │ │ │ ├── class-map-union.2.json │ │ │ ├── class-map-union.3.json │ │ │ ├── class-map-union.4.json │ │ │ ├── class-map-union.schema │ │ │ ├── class-with-additional.1.fail.union.json │ │ │ ├── class-with-additional.1.json │ │ │ ├── class-with-additional.schema │ │ │ ├── constructor.1.json │ │ │ ├── constructor.schema │ │ │ ├── cut-enum.1.json │ │ │ ├── cut-enum.schema │ │ │ ├── date-time-or-string.schema │ │ │ ├── date-time.1.fail.date-time.json │ │ │ ├── date-time.1.json │ │ │ ├── date-time.schema │ │ │ ├── description-with-double-quotes.json │ │ │ ├── description-with-double-quotes.schema │ │ │ ├── description.1.json │ │ │ ├── description.2.json │ │ │ ├── description.schema │ │ │ ├── direct-union.1.json │ │ │ ├── direct-union.schema │ │ │ ├── enum-with-null.1.json │ │ │ ├── enum-with-null.2.json │ │ │ ├── enum-with-null.schema │ │ │ ├── enum-with-values.schema │ │ │ ├── enum.1.fail.enum.json │ │ │ ├── enum.1.json │ │ │ ├── enum.2.json │ │ │ ├── enum.3.json │ │ │ ├── enum.4.json │ │ │ ├── enum.schema │ │ │ ├── go-schema-pattern-properties.1.fail.json │ │ │ ├── go-schema-pattern-properties.1.json │ │ │ ├── go-schema-pattern-properties.schema │ │ │ ├── id-no-address.1.json │ │ │ ├── id-no-address.schema │ │ │ ├── id-root.1.json │ │ │ ├── id-root.schema │ │ │ ├── implicit-all-of.1.json │ │ │ ├── implicit-all-of.schema │ │ │ ├── implicit-class-array-union.1.fail.union.json │ │ │ ├── implicit-class-array-union.1.json │ │ │ ├── implicit-class-array-union.2.fail.union.json │ │ │ ├── implicit-class-array-union.2.json │ │ │ ├── implicit-class-array-union.3.json │ │ │ ├── implicit-class-array-union.4.json │ │ │ ├── implicit-class-array-union.5.json │ │ │ ├── implicit-class-array-union.schema │ │ │ ├── implicit-one-of.1.json │ │ │ ├── implicit-one-of.2.json │ │ │ ├── implicit-one-of.schema │ │ │ ├── integer-float-union.1.json │ │ │ ├── integer-float-union.2.json │ │ │ ├── integer-float-union.schema │ │ │ ├── integer-string.1.fail.integer-string.json │ │ │ ├── integer-string.1.json │ │ │ ├── integer-string.1.out.integer-string.json │ │ │ ├── integer-string.2.json │ │ │ ├── integer-string.3.json │ │ │ ├── integer-string.schema │ │ │ ├── intersection-nested.schema │ │ │ ├── intersection.1.fail.no-defaults.json │ │ │ ├── intersection.1.json │ │ │ ├── intersection.2.json │ │ │ ├── intersection.schema │ │ │ ├── keyword-enum.1.json │ │ │ ├── keyword-enum.schema │ │ │ ├── keyword-unions.1.json │ │ │ ├── keyword-unions.2.json │ │ │ ├── keyword-unions.schema │ │ │ ├── list.1.json │ │ │ ├── list.2.json │ │ │ ├── list.3.json │ │ │ ├── list.schema │ │ │ ├── minmax-integer.1.fail.minmaxInteger.json │ │ │ ├── minmax-integer.1.json │ │ │ ├── minmax-integer.schema │ │ │ ├── minmax.1.fail.minmax.json │ │ │ ├── minmax.1.json │ │ │ ├── minmax.schema │ │ │ ├── minmaxlength.1.fail.minmaxlength.json │ │ │ ├── minmaxlength.1.json │ │ │ ├── minmaxlength.schema │ │ │ ├── multi-type-enum.1.fail.union.json │ │ │ ├── multi-type-enum.1.json │ │ │ ├── multi-type-enum.2.json │ │ │ ├── multi-type-enum.3.json │ │ │ ├── multi-type-enum.schema │ │ │ ├── mutually-recursive.1.json │ │ │ ├── mutually-recursive.2.json │ │ │ ├── mutually-recursive.schema │ │ │ ├── non-standard-ref.1.json │ │ │ ├── non-standard-ref.schema │ │ │ ├── object-type-required.1.json │ │ │ ├── object-type-required.2.json │ │ │ ├── object-type-required.schema │ │ │ ├── optional-any.1.json │ │ │ ├── optional-any.2.json │ │ │ ├── optional-any.schema │ │ │ ├── pattern.1.fail.pattern.json │ │ │ ├── pattern.1.json │ │ │ ├── pattern.schema │ │ │ ├── postman-collection.1.json │ │ │ ├── postman-collection.2.json │ │ │ ├── postman-collection.schema │ │ │ ├── ref-id-files.1.json │ │ │ ├── ref-id-files.schema │ │ │ ├── ref-remote.1.json │ │ │ ├── ref-remote.2.json │ │ │ ├── ref-remote.3.json │ │ │ ├── ref-remote.schema │ │ │ ├── renaming-bug.schema │ │ │ ├── required-draft3.schema │ │ │ ├── required-non-properties.1.json │ │ │ ├── required-non-properties.schema │ │ │ ├── required.1.fail.no-defaults.json │ │ │ ├── required.schema │ │ │ ├── simple-ref.1.json │ │ │ ├── simple-ref.1.ref │ │ │ ├── simple-ref.2.json │ │ │ ├── simple-ref.3.json │ │ │ ├── simple-ref.schema │ │ │ ├── strict-optional.1.fail.strict-optional.json │ │ │ ├── strict-optional.schema │ │ │ ├── top-level-enum.1.json │ │ │ ├── top-level-enum.schema │ │ │ ├── top-level-primitive.schema │ │ │ ├── tuple.1.json │ │ │ ├── tuple.schema │ │ │ ├── union-list.1.json │ │ │ ├── union-list.2.json │ │ │ ├── union-list.3.json │ │ │ ├── union-list.schema │ │ │ ├── union.1.json │ │ │ ├── union.schema │ │ │ ├── uuid.1.fail.uuid.json │ │ │ ├── uuid.1.json │ │ │ ├── uuid.2.json │ │ │ ├── uuid.schema │ │ │ └── vega-lite.schema │ │ ├── spotify-api/ │ │ │ ├── Album/ │ │ │ │ ├── She's So Unusual.json │ │ │ │ └── The Best of Keane (Deluxe Edition).json │ │ │ ├── Artist.json │ │ │ ├── Playlist.json │ │ │ ├── Track.json │ │ │ └── UserProfile.json │ │ └── urls/ │ │ └── github.json │ ├── keywords.py │ ├── keywords.txt │ ├── languages.ts │ ├── lib/ │ │ ├── deepEquals.ts │ │ └── multicore.ts │ ├── make-keyword-tests.sh │ ├── run-for-all.sh │ ├── test-awesome.py │ ├── test.ts │ ├── tsconfig.json │ └── utils.ts └── tsconfig.json
Showing preview only (260K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3001 symbols across 189 files)
FILE: data/lib.d.ts
type PropertyDescriptor (line 43) | interface PropertyDescriptor {
type PropertyDescriptorMap (line 52) | interface PropertyDescriptorMap {
type Object (line 56) | interface Object {
type ObjectConstructor (line 72) | interface ObjectConstructor {
type Function (line 114) | interface Function {
type FunctionConstructor (line 131) | interface FunctionConstructor {
type IArguments (line 139) | interface IArguments {
type String (line 145) | interface String {
type StringConstructor (line 195) | interface StringConstructor {
type Boolean (line 204) | interface Boolean {
type BooleanConstructor (line 208) | interface BooleanConstructor {
type Number (line 216) | interface Number {
type NumberConstructor (line 228) | interface NumberConstructor {
type TemplateStringsArray (line 246) | interface TemplateStringsArray extends ReadonlyArray<string> {
type Math (line 250) | interface Math {
type Date (line 306) | interface Date {
type DateConstructor (line 394) | interface DateConstructor {
type RegExpMatchArray (line 426) | interface RegExpMatchArray extends Array<string> {
type RegExpExecArray (line 431) | interface RegExpExecArray extends Array<string> {
type RegExp (line 436) | interface RegExp {
type RegExpConstructor (line 455) | interface RegExpConstructor {
type Error (line 477) | interface Error {
type ErrorConstructor (line 483) | interface ErrorConstructor {
type EvalError (line 491) | interface EvalError extends Error {}
type EvalErrorConstructor (line 493) | interface EvalErrorConstructor {
type RangeError (line 501) | interface RangeError extends Error {}
type RangeErrorConstructor (line 503) | interface RangeErrorConstructor {
type ReferenceError (line 511) | interface ReferenceError extends Error {}
type ReferenceErrorConstructor (line 513) | interface ReferenceErrorConstructor {
type SyntaxError (line 521) | interface SyntaxError extends Error {}
type SyntaxErrorConstructor (line 523) | interface SyntaxErrorConstructor {
type TypeError (line 531) | interface TypeError extends Error {}
type TypeErrorConstructor (line 533) | interface TypeErrorConstructor {
type URIError (line 541) | interface URIError extends Error {}
type URIErrorConstructor (line 543) | interface URIErrorConstructor {
type JSON (line 551) | interface JSON {
type ReadonlyArray (line 565) | interface ReadonlyArray<T> {
type Array (line 624) | interface Array<T> {
type ArrayConstructor (line 693) | interface ArrayConstructor {
type TypedPropertyDescriptor (line 706) | interface TypedPropertyDescriptor<T> {
type ClassDecorator (line 715) | type ClassDecorator = <TFunction extends Function>(target: TFunction) =>...
type PropertyDecorator (line 716) | type PropertyDecorator = (target: Object, propertyKey: string | symbol) ...
type MethodDecorator (line 717) | type MethodDecorator = <T>(
type ParameterDecorator (line 722) | type ParameterDecorator = (target: Object, propertyKey: string | symbol,...
type PromiseConstructorLike (line 724) | type PromiseConstructorLike = new <T>(
type PromiseLike (line 728) | interface PromiseLike<T> {
type Promise (line 735) | interface Promise<T> {
type ArrayLike (line 746) | interface ArrayLike<T> {
type Partial (line 751) | type Partial<T> = {
type Readonly (line 755) | type Readonly<T> = {
type Pick (line 759) | type Pick<T, K extends keyof T> = {
type Record (line 763) | type Record<K extends string, T> = {
type ThisType (line 767) | interface ThisType<T> {}
type ArrayBuffer (line 769) | interface ArrayBuffer {
type ArrayBufferTypes (line 775) | interface ArrayBufferTypes {
type ArrayBufferLike (line 778) | type ArrayBufferLike = ArrayBufferTypes[keyof ArrayBufferTypes];
type ArrayBufferConstructor (line 780) | interface ArrayBufferConstructor {
type ArrayBufferView (line 787) | interface ArrayBufferView {
type DataView (line 795) | interface DataView {
type DataViewConstructor (line 833) | interface DataViewConstructor {
type Int8Array (line 838) | interface Int8Array {
type Int8ArrayConstructor (line 915) | interface Int8ArrayConstructor {
type Uint8Array (line 929) | interface Uint8Array {
type Uint8ArrayConstructor (line 1007) | interface Uint8ArrayConstructor {
type Uint8ClampedArray (line 1021) | interface Uint8ClampedArray {
type Uint8ClampedArrayConstructor (line 1128) | interface Uint8ClampedArrayConstructor {
type Int16Array (line 1142) | interface Int16Array {
type Int16ArrayConstructor (line 1220) | interface Int16ArrayConstructor {
type Uint16Array (line 1234) | interface Uint16Array {
type Uint16ArrayConstructor (line 1312) | interface Uint16ArrayConstructor {
type Int32Array (line 1326) | interface Int32Array {
type Int32ArrayConstructor (line 1404) | interface Int32ArrayConstructor {
type Uint32Array (line 1418) | interface Uint32Array {
type Uint32ArrayConstructor (line 1496) | interface Uint32ArrayConstructor {
type Float32Array (line 1510) | interface Float32Array {
type Float32ArrayConstructor (line 1588) | interface Float32ArrayConstructor {
type Float64Array (line 1602) | interface Float64Array {
type Float64ArrayConstructor (line 1680) | interface Float64ArrayConstructor {
FILE: packages/quicktype-core/src/Annotation.ts
class AnnotationData (line 2) | class AnnotationData {}
class IssueAnnotationData (line 4) | class IssueAnnotationData extends AnnotationData {
method constructor (line 5) | public constructor(public readonly message: string) {
FILE: packages/quicktype-core/src/ConvenienceRenderer.ts
function splitDescription (line 96) | function splitDescription(
type ForbiddenWordsInfo (line 107) | interface ForbiddenWordsInfo {
method constructor (line 174) | public constructor(
method topLevels (line 181) | public get topLevels(): ReadonlyMap<string, Type> {
method forbiddenNamesForGlobalNamespace (line 192) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 206) | protected forbiddenForObjectProperties(
method forbiddenForUnionMembers (line 213) | protected forbiddenForUnionMembers(
method forbiddenForEnumCases (line 220) | protected forbiddenForEnumCases(
method makeTopLevelDependencyNames (line 227) | protected makeTopLevelDependencyNames(
method makeNamedTypeDependencyNames (line 234) | protected makeNamedTypeDependencyNames(
method makeNameForTransformation (line 250) | protected makeNameForTransformation(
method namedTypeToNameForTopLevel (line 257) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method unionMembersInGlobalNamespace (line 265) | protected get unionMembersInGlobalNamespace(): boolean {
method enumCasesInGlobalNamespace (line 269) | protected get enumCasesInGlobalNamespace(): boolean {
method needsTypeDeclarationBeforeUse (line 273) | protected get needsTypeDeclarationBeforeUse(): boolean {
method canBeForwardDeclared (line 277) | protected canBeForwardDeclared(_t: Type): boolean {
method unionNeedsName (line 283) | protected unionNeedsName(u: UnionType): boolean {
method globalNamespace (line 287) | private get globalNamespace(): Namespace {
method nameStoreView (line 291) | private get nameStoreView(): TypeAttributeStoreView<Name> {
method descriptionForType (line 295) | protected descriptionForType(t: Type): string[] | undefined {
method descriptionForClassProperty (line 303) | protected descriptionForClassProperty(
method setUpNaming (line 315) | protected setUpNaming(): ReadonlySet<Namespace> {
method addDependenciesForNamedType (line 384) | private addDependenciesForNamedType(type: Type, named: Name): void {
method makeNameForTopLevel (line 391) | protected makeNameForTopLevel(
method addNameForTopLevel (line 403) | private addNameForTopLevel(type: Type, givenName: string): Name {
method makeNameForType (line 420) | private makeNameForType(
method makeNameForNamedType (line 431) | protected makeNameForNamedType(t: Type): Name {
method addNameForNamedType (line 440) | private addNameForNamedType(type: Type): Name {
method typesWithNamedTransformations (line 452) | protected get typesWithNamedTransformations(): ReadonlyMap<Type, Name> {
method nameForTransformation (line 456) | protected nameForTransformation(t: Type): Name | undefined {
method addNameForTransformation (line 468) | private addNameForTransformation(t: Type): void {
method processForbiddenWordsInfo (line 487) | private processForbiddenWordsInfo(
method makeNameForProperty (line 528) | protected makeNameForProperty(
method makePropertyDependencyNames (line 558) | protected makePropertyDependencyNames(
method addPropertyNames (line 568) | private addPropertyNames(o: ObjectType, className: Name): void {
method makeNameForUnionMember (line 622) | protected makeNameForUnionMember(
method addUnionMemberNames (line 646) | private addUnionMemberNames(u: UnionType, unionName: Name): void {
method makeNameForEnumCase (line 681) | protected makeNameForEnumCase(
method addEnumCaseNames (line 702) | private addEnumCaseNames(e: EnumType, enumName: Name): void {
method childrenOfType (line 748) | private childrenOfType(t: Type): ReadonlySet<Type> {
method namedUnions (line 765) | protected get namedUnions(): ReadonlySet<UnionType> {
method haveNamedUnions (line 769) | protected get haveNamedUnions(): boolean {
method haveNamedTypes (line 773) | protected get haveNamedTypes(): boolean {
method haveUnions (line 777) | protected get haveUnions(): boolean {
method haveMaps (line 781) | protected get haveMaps(): boolean {
method haveOptionalProperties (line 785) | protected get haveOptionalProperties(): boolean {
method enums (line 791) | protected get enums(): ReadonlySet<EnumType> {
method haveEnums (line 795) | protected get haveEnums(): boolean {
method proposedUnionMemberNameForTypeKind (line 799) | protected proposedUnionMemberNameForTypeKind(
method proposeUnionMemberName (line 805) | protected proposeUnionMemberName(
method nameForNamedType (line 849) | protected nameForNamedType(t: Type): Name {
method isForwardDeclaredType (line 853) | protected isForwardDeclaredType(t: Type): boolean {
method isImplicitCycleBreaker (line 857) | protected isImplicitCycleBreaker(_t: Type): boolean {
method canBreakCycles (line 863) | protected canBreakCycles(_t: Type): boolean {
method isCycleBreakerType (line 867) | protected isCycleBreakerType(t: Type): boolean {
method forEachTopLevel (line 879) | protected forEachTopLevel(
method forEachDeclaration (line 899) | protected forEachDeclaration(
method setAlphabetizeProperties (line 910) | public setAlphabetizeProperties(value: boolean): void {
method getAlphabetizeProperties (line 914) | protected getAlphabetizeProperties(): boolean {
method propertyCount (line 919) | protected propertyCount(o: ObjectType): number {
method sortClassProperties (line 924) | protected sortClassProperties(
method forEachClassProperty (line 941) | protected forEachClassProperty(
method nameForUnionMember (line 966) | protected nameForUnionMember(u: UnionType, t: Type): Name {
method nameForEnumCase (line 970) | protected nameForEnumCase(e: EnumType, caseName: string): Name {
method forEachUnionMember (line 975) | protected forEachUnionMember(
method forEachEnumCase (line 995) | protected forEachEnumCase(
method forEachTransformation (line 1007) | protected forEachTransformation(
method forEachSpecificNamedType (line 1018) | protected forEachSpecificNamedType<T extends Type>(
method forEachObject (line 1028) | protected forEachObject(
method forEachEnum (line 1050) | protected forEachEnum(
method forEachUnion (line 1057) | protected forEachUnion(
method forEachUniqueUnion (line 1068) | protected forEachUniqueUnion<T>(
method forEachNamedType (line 1084) | protected forEachNamedType(
method sourcelikeToString (line 1131) | protected sourcelikeToString(src: Sourcelike): string {
method commentLineStart (line 1139) | protected get commentLineStart(): string {
method emitComments (line 1143) | protected emitComments(comments: Comment[]): void {
method emitCommentLines (line 1159) | protected emitCommentLines(
method emitDescription (line 1194) | protected emitDescription(description: Sourcelike[] | undefined): void {
method emitDescriptionBlock (line 1200) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitPropertyTable (line 1204) | protected emitPropertyTable(
method processGraph (line 1231) | private processGraph(): void {
method emitSource (line 1266) | protected emitSource(givenOutputFilename: string): void {
method forEachType (line 1271) | protected forEachType<TResult>(
FILE: packages/quicktype-core/src/CycleBreaker.ts
function breakCycles (line 3) | function breakCycles<T>(
FILE: packages/quicktype-core/src/DateTime.ts
constant DATE (line 28) | const DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
constant DAYS (line 29) | const DAYS = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
constant TIME (line 30) | const TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i;
type DateTimeRecognizer (line 32) | interface DateTimeRecognizer {
constant DATE_TIME_SEPARATOR (line 38) | const DATE_TIME_SEPARATOR = /t|\s/i;
class DefaultDateTimeRecognizer (line 40) | class DefaultDateTimeRecognizer implements DateTimeRecognizer {
method isDate (line 41) | isDate(str: string) {
method isTime (line 51) | isTime(str: string): boolean {
method isDateTime (line 61) | isDateTime(str: string): boolean {
FILE: packages/quicktype-core/src/DeclarationIR.ts
type DeclarationKind (line 15) | type DeclarationKind = "forward" | "define";
type Declaration (line 17) | interface Declaration {
class DeclarationIR (line 22) | class DeclarationIR {
method constructor (line 25) | public constructor(
function findBreaker (line 33) | function findBreaker(
function cycleBreakerTypesForGraph (line 53) | function cycleBreakerTypesForGraph(
function declarationsForGraph (line 97) | function declarationsForGraph(
FILE: packages/quicktype-core/src/GatherNames.ts
class UniqueQueue (line 16) | class UniqueQueue<T> {
method size (line 23) | public get size(): number {
method isEmpty (line 27) | public get isEmpty(): boolean {
method push (line 31) | public push(v: T): void {
method unshift (line 37) | public unshift(): T {
function gatherNames (line 93) | function gatherNames(
FILE: packages/quicktype-core/src/Graph.ts
function countComponentGraphNodes (line 5) | function countComponentGraphNodes(components: number[][]): number {
function stronglyConnectedComponents (line 25) | function stronglyConnectedComponents(successors: number[][]): number[][] {
function buildComponentOfNodeMap (line 86) | function buildComponentOfNodeMap(
function buildMetaSuccessors (line 112) | function buildMetaSuccessors(
function invertEdges (line 145) | function invertEdges(successors: number[][]): number[][] {
function calculateInDegrees (line 158) | function calculateInDegrees(successors: number[][]): number[] {
function findRoots (line 171) | function findRoots(successors: number[][]): number[] {
class Graph (line 185) | class Graph<T> {
method constructor (line 192) | public constructor(
method size (line 219) | public get size(): number {
method nodes (line 223) | public get nodes(): readonly T[] {
method findRoots (line 227) | public findRoots(): ReadonlySet<T> {
method dfsTraversal (line 233) | public dfsTraversal(
method stronglyConnectedComponents (line 260) | public stronglyConnectedComponents(): Graph<ReadonlySet<T>> {
method makeDot (line 273) | public makeDot(
FILE: packages/quicktype-core/src/GraphRewriting.ts
type TypeLookerUp (line 28) | interface TypeLookerUp {
class TypeReconstituter (line 40) | class TypeReconstituter<TBuilder extends BaseGraphRewriteBuilder> {
method constructor (line 45) | public constructor(
method builderForNewType (line 53) | private builderForNewType(): TBuilder {
method builderForSetting (line 59) | private builderForSetting(): TBuilder {
method getResult (line 67) | public getResult(): TypeRef {
method register (line 76) | private register(tref: TypeRef): void {
method registerAndAddAttributes (line 82) | private registerAndAddAttributes(tref: TypeRef): void {
method lookup (line 89) | public lookup(
method lookupMap (line 110) | public lookupMap<K>(
method reconstitute (line 131) | public reconstitute(
method reconstituteMap (line 147) | public reconstituteMap<K>(
method getPrimitiveType (line 155) | public getPrimitiveType(kind: PrimitiveTypeKind): void {
method getEnumType (line 165) | public getEnumType(cases: ReadonlySet<string>): void {
method getUniqueMapType (line 175) | public getUniqueMapType(): void {
method getMapType (line 181) | public getMapType(values: TypeRef): void {
method getUniqueArrayType (line 191) | public getUniqueArrayType(): void {
method getArrayType (line 197) | public getArrayType(items: TypeRef): void {
method setArrayItems (line 207) | public setArrayItems(items: TypeRef): void {
method makeClassProperty (line 211) | public makeClassProperty(
method getObjectType (line 218) | public getObjectType(
method getUniqueObjectType (line 232) | public getUniqueObjectType(
method getClassType (line 246) | public getClassType(properties: ReadonlyMap<string, ClassProperty>): v...
method getUniqueClassType (line 261) | public getUniqueClassType(
method setObjectProperties (line 275) | public setObjectProperties(
method getUnionType (line 286) | public getUnionType(members: ReadonlySet<TypeRef>): void {
method getUniqueUnionType (line 296) | public getUniqueUnionType(): void {
method getIntersectionType (line 306) | public getIntersectionType(members: ReadonlySet<TypeRef>): void {
method getUniqueIntersectionType (line 316) | public getUniqueIntersectionType(members?: ReadonlySet<TypeRef>): void {
method setSetOperationMembers (line 326) | public setSetOperationMembers(members: ReadonlySet<TypeRef>): void {
method constructor (line 344) | public constructor(
method withForwardingRef (line 360) | public withForwardingRef(
method reconstituteType (line 377) | public reconstituteType(
method reconstituteTypeRef (line 396) | public reconstituteTypeRef(
method reconstituteTypeAttributes (line 417) | public reconstituteTypeAttributes(
method assertTypeRefsToReconstitute (line 423) | protected assertTypeRefsToReconstitute(
method changeDebugPrintIndent (line 440) | protected changeDebugPrintIndent(delta: number): void {
method debugPrintIndentation (line 444) | protected get debugPrintIndentation(): string {
method finish (line 448) | public finish(): TypeGraph {
method setLostTypeAttributes (line 456) | public setLostTypeAttributes(): void {
method lostTypeAttributes (line 460) | public get lostTypeAttributes(): boolean {
class GraphRemapBuilder (line 465) | class GraphRemapBuilder extends BaseGraphRewriteBuilder {
method constructor (line 468) | public constructor(
method makeIdentity (line 495) | protected makeIdentity(_maker: () => MaybeTypeIdentity): MaybeTypeIden...
method getMapTarget (line 499) | private getMapTarget(tref: TypeRef): TypeRef {
method addForwardingIntersection (line 509) | protected addForwardingIntersection(
method lookupTypeRefs (line 518) | public lookupTypeRefs(
method forceReconstituteTypeRef (line 544) | protected forceReconstituteTypeRef(
class GraphRewriteBuilder (line 622) | class GraphRewriteBuilder<
method constructor (line 630) | public constructor(
method registerUnion (line 665) | public registerUnion(typeRefs: TypeRef[], reconstituted: TypeRef): void {
method replaceSet (line 674) | private replaceSet(
method forceReconstituteTypeRef (line 718) | protected forceReconstituteTypeRef(
method lookupTypeRefs (line 796) | public lookupTypeRefs(
FILE: packages/quicktype-core/src/Inference.ts
type InferenceFlag (line 3) | interface InferenceFlag {
type InferenceFlagName (line 79) | type InferenceFlagName = keyof typeof inferenceFlagsObject;
type InferenceFlags (line 86) | type InferenceFlags = { [F in InferenceFlagName]: boolean };
function makeDefaultInferenceFlags (line 88) | function makeDefaultInferenceFlags(): InferenceFlags {
FILE: packages/quicktype-core/src/MakeTransformations.ts
function transformationAttributes (line 54) | function transformationAttributes(
function makeEnumTransformer (line 77) | function makeEnumTransformer(
function replaceUnion (line 101) | function replaceUnion(
function replaceArray (line 281) | function replaceArray(
function replaceEnum (line 313) | function replaceEnum(
function replaceNumber (line 345) | function replaceNumber(
function replaceString (line 379) | function replaceString(
function replaceTransformedStringType (line 417) | function replaceTransformedStringType(
function makeTransformations (line 453) | function makeTransformations(
FILE: packages/quicktype-core/src/MarkovChain.ts
type SubTrie (line 5) | type SubTrie = number | null | Trie;
type Trie (line 6) | interface Trie {
type MarkovChain (line 11) | interface MarkovChain {
function makeTrie (line 16) | function makeTrie(): Trie {
function lookup (line 25) | function lookup(t: Trie, seq: string, i: number): Trie | number | undefi...
function increment (line 47) | function increment(t: Trie, seq: string, i: number): void {
function train (line 82) | function train(lines: string[], depth: number): MarkovChain {
function load (line 93) | function load(): MarkovChain {
function evaluateFull (line 97) | function evaluateFull(
function evaluate (line 125) | function evaluate(mc: MarkovChain, word: string): number {
function randomInt (line 129) | function randomInt(lower: number, upper: number): number {
function generate (line 134) | function generate(
function testWord (line 172) | function testWord(mc: MarkovChain, word: string): void {
function test (line 176) | function test(): void {
FILE: packages/quicktype-core/src/Messages.ts
type ErrorProperties (line 5) | type ErrorProperties =
type ErrorKinds (line 143) | type ErrorKinds = ErrorProperties["kind"];
type ErrorMessages (line 145) | type ErrorMessages = { readonly [K in ErrorKinds]: string };
type ErrorPropertiesForKind (line 253) | type ErrorPropertiesForKind<K extends ErrorKinds = ErrorKinds> = Extract<
class QuickTypeError (line 260) | class QuickTypeError extends Error {
method constructor (line 261) | public constructor(
function messageError (line 271) | function messageError<Kind extends ErrorKinds>(
function messageAssert (line 302) | function messageAssert<Kind extends ErrorKinds>(
FILE: packages/quicktype-core/src/Naming.ts
class Namespace (line 18) | class Namespace {
method constructor (line 27) | public constructor(
method addChild (line 40) | private addChild(child: Namespace): void {
method children (line 44) | public get children(): ReadonlySet<Namespace> {
method members (line 48) | public get members(): ReadonlySet<Name> {
method forbiddenNameds (line 52) | public get forbiddenNameds(): ReadonlySet<Name> {
method add (line 60) | public add<TName extends Name>(named: TName): TName {
type NameStyle (line 66) | type NameStyle = (rawName: string) => string;
class Namer (line 83) | class Namer {
method constructor (line 86) | public constructor(
method assignNames (line 96) | public assignNames(
function funPrefixNamer (line 193) | function funPrefixNamer(name: string, nameStyle: NameStyle): Namer {
method constructor (line 206) | public constructor(
method addAssociate (line 211) | public addAssociate(associate: AssociatedName): void {
method isFixed (line 217) | public isFixed(): this is FixedName {
method namingFunction (line 221) | public get namingFunction(): Namer {
method firstProposedName (line 230) | public firstProposedName(names: ReadonlyMap<Name, string>): string {
method nameAssignments (line 234) | public nameAssignments(
class FixedName (line 254) | class FixedName extends Name {
method constructor (line 255) | public constructor(private readonly _fixedName: string) {
method dependencies (line 259) | public get dependencies(): readonly Name[] {
method addAssociate (line 263) | public addAssociate(_: AssociatedName): never {
method fixedName (line 267) | public get fixedName(): string {
method proposeUnstyledNames (line 271) | public proposeUnstyledNames(
class SimpleName (line 278) | class SimpleName extends Name {
method constructor (line 281) | public constructor(
method dependencies (line 290) | public get dependencies(): readonly Name[] {
method proposeUnstyledNames (line 294) | public proposeUnstyledNames(
class AssociatedName (line 301) | class AssociatedName extends Name {
method constructor (line 302) | public constructor(
method dependencies (line 310) | public get dependencies(): readonly Name[] {
method proposeUnstyledNames (line 314) | public proposeUnstyledNames(_?: ReadonlyMap<Name, string>): never {
class DependencyName (line 319) | class DependencyName extends Name {
method constructor (line 322) | public constructor(
method dependencies (line 338) | public get dependencies(): readonly Name[] {
method proposeUnstyledNames (line 342) | public proposeUnstyledNames(
function keywordNamespace (line 357) | function keywordNamespace(
function allNamespacesRecursively (line 369) | function allNamespacesRecursively(
class NamingContext (line 380) | class NamingContext {
method constructor (line 387) | public constructor(rootNamespaces: Iterable<Namespace>) {
method names (line 391) | public get names(): ReadonlyMap<Name, string> {
method isReadyToBeNamed (line 395) | public isReadyToBeNamed(named: Name): boolean {
method areForbiddensFullyNamed (line 400) | public areForbiddensFullyNamed(namespace: Namespace): boolean {
method isConflicting (line 406) | public isConflicting(namedNamespace: Namespace, proposed: string): boo...
method assign (line 423) | public assign(named: Name, namedNamespace: Namespace, name: string): v...
function assignNames (line 441) | function assignNames(
FILE: packages/quicktype-core/src/Renderer.ts
type RenderResult (line 18) | interface RenderResult {
type BlankLinePosition (line 23) | type BlankLinePosition =
type BlankLineConfig (line 28) | type BlankLineConfig = BlankLinePosition | [BlankLinePosition, number];
function getBlankLineConfig (line 30) | function getBlankLineConfig(cfg: BlankLineConfig): {
function lineIndentation (line 41) | function lineIndentation(line: string): {
type RenderContext (line 61) | interface RenderContext {
type ForEachPosition (line 66) | type ForEachPosition = "first" | "last" | "middle" | "only";
class EmitContext (line 68) | class EmitContext {
method constructor (line 79) | public constructor() {
method isEmpty (line 85) | public get isEmpty(): boolean {
method isNested (line 89) | public get isNested(): boolean {
method source (line 93) | public get source(): Sourcelike[] {
method pushItem (line 97) | public pushItem(item: Sourcelike): void {
method emitNewline (line 102) | public emitNewline(): void {
method emitItem (line 108) | public emitItem(item: Sourcelike): void {
method containsItem (line 119) | public containsItem(item: Sourcelike): boolean {
method ensureBlankLine (line 126) | public ensureBlankLine(numBlankLines: number): void {
method preventBlankLine (line 134) | public preventBlankLine(): void {
method changeIndent (line 139) | public changeIndent(offset: number): void {
method constructor (line 161) | public constructor(
method ensureBlankLine (line 174) | public ensureBlankLine(numBlankLines = 1): void {
method preventBlankLine (line 178) | protected preventBlankLine(): void {
method emitItem (line 182) | protected emitItem(item: Sourcelike): void {
method emitItemOnce (line 186) | protected emitItemOnce(item: Sourcelike): boolean {
method emitLineOnce (line 195) | protected emitLineOnce(...lineParts: Sourcelike[]): void {
method emitLine (line 209) | public emitLine(...lineParts: Sourcelike[]): void {
method emitMultiline (line 219) | protected emitMultiline(linesString: string): void {
method gatherSource (line 244) | protected gatherSource(emitter: () => void): Sourcelike[] {
method emitGatheredSource (line 257) | protected emitGatheredSource(items: Sourcelike[]): void {
method emitAnnotated (line 263) | protected emitAnnotated(
method emitIssue (line 272) | protected emitIssue(message: string, emitter: () => void): void {
method changeIndent (line 285) | protected changeIndent(offset: number): void {
method iterableForEach (line 289) | protected iterableForEach<T>(
method forEach (line 309) | protected forEach<K, V>(
method forEachWithBlankLines (line 329) | protected forEachWithBlankLines<K, V>(
method indent (line 350) | public indent(fn: () => void): void {
method assignNames (line 359) | protected assignNames(): ReadonlyMap<Name, string> {
method initializeEmitContextForFilename (line 363) | protected initializeEmitContextForFilename(filename: string): void {
method finishFile (line 374) | protected finishFile(filename: string): void {
method render (line 392) | public render(givenOutputFilename: string): RenderResult {
method names (line 402) | public get names(): ReadonlyMap<Name, string> {
FILE: packages/quicktype-core/src/RendererOptions/index.ts
method constructor (line 16) | public constructor(definition: OptionDefinition<Name, T>) {
method name (line 24) | public get name(): Name {
method getValue (line 28) | public getValue(values: Record<string, unknown>): T {
method cliDefinitions (line 32) | public get cliDefinitions(): {
function getOptionValues (line 40) | function getOptionValues<
class BooleanOption (line 64) | class BooleanOption<Name extends string> extends Option<Name, boolean> {
method constructor (line 71) | public constructor(
method cliDefinitions (line 86) | public get cliDefinitions(): {
method getValue (line 104) | public getValue(values: Record<string, unknown>): boolean {
class StringOption (line 129) | class StringOption<Name extends string> extends Option<Name, string> {
method constructor (line 130) | public constructor(
class EnumOption (line 148) | class EnumOption<
method constructor (line 158) | public constructor(
method getEnumValue (line 178) | public getEnumValue<const Key extends EnumKey>(name: Key): EnumMap[Key] {
FILE: packages/quicktype-core/src/RendererOptions/types.ts
type OptionKind (line 9) | type OptionKind = "primary" | "secondary" | "cli";
type OptionType (line 10) | type OptionType = "string" | "boolean" | "enum";
type OptionDefinition (line 12) | interface OptionDefinition<Name extends string = string, T = unknown>
type OptionName (line 34) | type OptionName<O> = O extends Option<infer Name, unknown>
type OptionValue (line 37) | type OptionValue<O> = O extends EnumOption<
type OptionKey (line 47) | type OptionKey<O> = O extends EnumOption<
type OptionMap (line 56) | type OptionMap<T> = {
type OptionValues (line 59) | type OptionValues<T> = { [K in keyof T]: OptionValue<T[K]> };
FILE: packages/quicktype-core/src/Run.ts
function getTargetLanguage (line 43) | function getTargetLanguage(
type NonInferenceOptions (line 64) | interface NonInferenceOptions<Lang extends LanguageName = LanguageName> {
type Options (line 116) | type Options = NonInferenceOptions & InferenceFlags;
type RunContext (line 138) | interface RunContext {
type GraphInputs (line 148) | interface GraphInputs {
class Run (line 155) | class Run implements RunContext {
method constructor (line 158) | public constructor(options: Partial<Options>) {
method stringTypeMapping (line 168) | public get stringTypeMapping(): StringTypeMapping {
method debugPrintReconstitution (line 181) | public get debugPrintReconstitution(): boolean {
method debugPrintTransformations (line 185) | public get debugPrintTransformations(): boolean {
method debugPrintSchemaResolving (line 189) | public get debugPrintSchemaResolving(): boolean {
method timeSync (line 193) | public async timeSync<T>(name: string, f: () => Promise<T>): Promise<T> {
method time (line 204) | public time<T>(name: string, f: () => T): T {
method makeGraphInputs (line 215) | private makeGraphInputs(): GraphInputs {
method makeGraph (line 241) | private async makeGraph(allInputs: InputData): Promise<TypeGraph> {
method makeGraphSync (line 259) | private makeGraphSync(allInputs: InputData): TypeGraph {
method processGraph (line 275) | private processGraph(
method makeSimpleTextResult (line 512) | private makeSimpleTextResult(lines: string[]): MultiFileRenderResult {
method preRun (line 518) | private preRun(): MultiFileRenderResult | [InputData, TargetLanguage] {
method run (line 549) | public async run(): Promise<MultiFileRenderResult> {
method runSync (line 562) | public runSync(): MultiFileRenderResult {
method renderGraph (line 575) | private renderGraph(
function quicktypeMultiFile (line 600) | async function quicktypeMultiFile(
function quicktypeMultiFileSync (line 606) | function quicktypeMultiFileSync(
function offsetLocation (line 612) | function offsetLocation(loc: Location, lineOffset: number): Location {
function offsetSpan (line 616) | function offsetSpan(span: Span, lineOffset: number): Span {
function combineRenderResults (line 628) | function combineRenderResults(
function quicktype (line 664) | async function quicktype(
FILE: packages/quicktype-core/src/Source.ts
type Source (line 8) | type Source =
type TextSource (line 17) | interface TextSource {
type NewlineSource (line 22) | interface NewlineSource {
type SequenceSource (line 32) | interface SequenceSource {
type TableSource (line 37) | interface TableSource {
type AnnotatedSource (line 42) | interface AnnotatedSource {
type NameSource (line 48) | interface NameSource {
type ModifiedSource (line 53) | interface ModifiedSource {
function newline (line 59) | function newline(): NewlineSource {
type Sourcelike (line 65) | type Sourcelike = Source | string | Name | SourcelikeArray;
type SourcelikeArray (line 66) | type SourcelikeArray = Sourcelike[];
function sourcelikeToSource (line 68) | function sourcelikeToSource(sl: Sourcelike): Source {
function annotated (line 98) | function annotated(annotation: AnnotationData, sl: Sourcelike): Source {
function maybeAnnotated (line 106) | function maybeAnnotated(
function modifySource (line 118) | function modifySource(
type Location (line 129) | interface Location {
type Span (line 135) | interface Span {
type Annotation (line 140) | interface Annotation {
type SerializedRenderResult (line 145) | interface SerializedRenderResult {
function sourceLineLength (line 150) | function sourceLineLength(
function serializeRenderResult (line 177) | function serializeRenderResult(
type MultiWord (line 310) | interface MultiWord {
function singleWord (line 315) | function singleWord(...source: Sourcelike[]): MultiWord {
function multiWord (line 319) | function multiWord(
function parenIfNeeded (line 337) | function parenIfNeeded({ source, needsParens }: MultiWord): Sourcelike {
FILE: packages/quicktype-core/src/TargetLanguage.ts
type MultiFileRenderResult (line 15) | type MultiFileRenderResult = ReadonlyMap<string, SerializedRenderResult>;
type LanguageConfig (line 17) | interface LanguageConfig {
method constructor (line 32) | public constructor({ displayName, names, extension }: Config) {
method optionDefinitions (line 40) | public get optionDefinitions(): Array<OptionDefinition<string, unknown>> {
method cliOptionDefinitions (line 44) | public get cliOptionDefinitions(): {
method name (line 58) | public get name(): (typeof this.names)[0] {
method renderGraphAndSerialize (line 67) | public renderGraphAndSerialize<Lang extends LanguageName>(
method defaultIndentation (line 91) | protected get defaultIndentation(): string {
method stringTypeMapping (line 95) | public get stringTypeMapping(): StringTypeMapping {
method supportsOptionalClassProperties (line 99) | public get supportsOptionalClassProperties(): boolean {
method supportsUnionsWithBothNumberTypes (line 103) | public get supportsUnionsWithBothNumberTypes(): boolean {
method supportsFullObjectType (line 107) | public get supportsFullObjectType(): boolean {
method needsTransformerForType (line 111) | public needsTransformerForType(_t: Type): boolean {
method dateTimeRecognizer (line 115) | public get dateTimeRecognizer(): DateTimeRecognizer {
FILE: packages/quicktype-core/src/Transformers.ts
function debugStringForType (line 25) | function debugStringForType(t: Type): string {
function getNumberOfNodes (line 34) | function getNumberOfNodes(xfer: Transformer | undefined): number {
method constructor (line 39) | public constructor(
method sourceType (line 45) | public get sourceType(): Type {
method getChildren (line 50) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 54) | public getNumberOfNodes(): number {
method equals (line 69) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 73) | public hashCode(): number {
method debugDescription (line 77) | protected debugDescription(): string {
method debugPrintContinuations (line 81) | protected debugPrintContinuations(_indent: number): void {
method debugPrint (line 85) | public debugPrint(indent: number): void {
method constructor (line 92) | public constructor(
method getChildren (line 101) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 107) | public getNumberOfNodes(): number {
method equals (line 111) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 117) | public hashCode(): number {
method debugPrintContinuations (line 122) | protected debugPrintContinuations(indent: number): void {
method constructor (line 129) | public constructor(
method getChildren (line 138) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 145) | public getNumberOfNodes(): number {
method equals (line 149) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 155) | public hashCode(): number {
method debugPrintContinuations (line 160) | protected debugPrintContinuations(indent: number): void {
class DecodingTransformer (line 165) | class DecodingTransformer extends ProducerTransformer {
method constructor (line 166) | public constructor(
method canFail (line 174) | public get canFail(): boolean {
method reverse (line 178) | public reverse(
method reconstitute (line 198) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 208) | public equals<T extends Transformer>(other: T): boolean {
class EncodingTransformer (line 214) | class EncodingTransformer extends Transformer {
method constructor (line 215) | public constructor(graph: TypeGraph, sourceTypeRef: TypeRef) {
method canFail (line 219) | public get canFail(): boolean {
method reverse (line 223) | public reverse(
method reconstitute (line 230) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 239) | public equals<T extends Transformer>(other: T): boolean {
class ArrayDecodingTransformer (line 246) | class ArrayDecodingTransformer extends ProducerTransformer {
method constructor (line 247) | public constructor(
method getChildren (line 257) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 263) | public getNumberOfNodes(): number {
method canFail (line 269) | public get canFail(): boolean {
method itemTargetType (line 273) | public get itemTargetType(): Type {
method reverse (line 277) | public reverse(
method reconstitute (line 312) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method hashCode (line 324) | public hashCode(): number {
method equals (line 331) | public equals<T extends Transformer>(other: T): boolean {
method debugPrintContinuations (line 339) | protected debugPrintContinuations(indent: number): void {
class ArrayEncodingTransformer (line 345) | class ArrayEncodingTransformer extends Transformer {
method constructor (line 346) | public constructor(
method getChildren (line 355) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 361) | public getNumberOfNodes(): number {
method canFail (line 367) | public get canFail(): boolean {
method itemTargetType (line 371) | public get itemTargetType(): Type {
method reverse (line 375) | public reverse(
method reconstitute (line 382) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method hashCode (line 393) | public hashCode(): number {
method equals (line 399) | public equals<T extends Transformer>(other: T): boolean {
method debugPrintContinuations (line 407) | protected debugPrintContinuations(indent: number): void {
class ChoiceTransformer (line 413) | class ChoiceTransformer extends Transformer {
method constructor (line 414) | public constructor(
method getChildren (line 426) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 435) | public getNumberOfNodes(): number {
method canFail (line 444) | public get canFail(): boolean {
method reverse (line 448) | public reverse(
method reconstitute (line 487) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 497) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 503) | public hashCode(): number {
method debugPrintContinuations (line 508) | protected debugPrintContinuations(indent: number): void {
class DecodingChoiceTransformer (line 515) | class DecodingChoiceTransformer extends Transformer {
method constructor (line 516) | public constructor(
method transformers (line 530) | public get transformers(): readonly Transformer[] {
method getChildren (line 548) | public getChildren(): Set<Type> {
method getNumberOfNodes (line 557) | public getNumberOfNodes(): number {
method canFail (line 566) | public get canFail(): boolean {
method reverse (line 570) | public reverse(
method reconstitute (line 673) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 696) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 716) | public hashCode(): number {
method debugPrintContinuations (line 728) | protected debugPrintContinuations(indent: number): void {
class UnionMemberMatchTransformer (line 735) | class UnionMemberMatchTransformer extends MatchTransformer {
method constructor (line 736) | public constructor(
method sourceType (line 745) | public get sourceType(): UnionType {
method canFail (line 756) | public get canFail(): boolean {
method memberType (line 760) | public get memberType(): Type {
method getChildren (line 764) | public getChildren(): Set<Type> {
method reverse (line 768) | public reverse(
method reconstitute (line 775) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 786) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 792) | public hashCode(): number {
method debugDescription (line 797) | protected debugDescription(): string {
class StringMatchTransformer (line 805) | class StringMatchTransformer extends MatchTransformer {
method constructor (line 806) | public constructor(
method sourceType (line 815) | public get sourceType(): EnumType | PrimitiveType {
method canFail (line 829) | public get canFail(): boolean {
method reverse (line 833) | public reverse(
method reconstitute (line 848) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 859) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 865) | public hashCode(): number {
method debugDescription (line 870) | protected debugDescription(): string {
class UnionInstantiationTransformer (line 875) | class UnionInstantiationTransformer extends Transformer {
method constructor (line 876) | public constructor(graph: TypeGraph, sourceTypeRef: TypeRef) {
method canFail (line 880) | public get canFail(): boolean {
method reverse (line 884) | public reverse(
method reconstitute (line 902) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 911) | public equals<T extends Transformer>(other: T): boolean {
class StringProducerTransformer (line 920) | class StringProducerTransformer extends ProducerTransformer {
method constructor (line 921) | public constructor(
method canFail (line 930) | public get canFail(): boolean {
method reverse (line 934) | public reverse(
method reconstitute (line 964) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 975) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 981) | public hashCode(): number {
method debugDescription (line 986) | protected debugDescription(): string {
class ParseStringTransformer (line 991) | class ParseStringTransformer extends ProducerTransformer {
method constructor (line 992) | public constructor(
method canFail (line 1000) | public get canFail(): boolean {
method reverse (line 1004) | public reverse(
method reconstitute (line 1026) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 1036) | public equals<T extends Transformer>(other: T): boolean {
class StringifyTransformer (line 1042) | class StringifyTransformer extends ProducerTransformer {
method constructor (line 1043) | public constructor(
method canFail (line 1051) | public get canFail(): boolean {
method reverse (line 1055) | public reverse(
method reconstitute (line 1077) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 1087) | public equals<T extends Transformer>(other: T): boolean {
class MinMaxLengthCheckTransformer (line 1093) | class MinMaxLengthCheckTransformer extends ProducerTransformer {
method constructor (line 1094) | public constructor(
method canFail (line 1104) | public get canFail(): boolean {
method reverse (line 1108) | public reverse(
method reconstitute (line 1134) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 1146) | public equals<T extends Transformer>(other: T): boolean {
class MinMaxValueTransformer (line 1156) | class MinMaxValueTransformer extends ProducerTransformer {
method constructor (line 1157) | public constructor(
method canFail (line 1167) | public get canFail(): boolean {
method reverse (line 1171) | public reverse(
method reconstitute (line 1197) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 1209) | public equals<T extends Transformer>(other: T): boolean {
class Transformation (line 1219) | class Transformation {
method constructor (line 1220) | public constructor(
method sourceType (line 1226) | public get sourceType(): Type {
method targetType (line 1230) | public get targetType(): Type {
method reverse (line 1234) | public get reverse(): Transformation {
method getChildren (line 1242) | public getChildren(): Set<Type> {
method reconstitute (line 1246) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method equals (line 1256) | public equals<T extends Transformer>(other: T): boolean {
method hashCode (line 1264) | public hashCode(): number {
method debugPrint (line 1270) | public debugPrint(): void {
class TransformationTypeAttributeKind (line 1276) | class TransformationTypeAttributeKind extends TypeAttributeKind<Transfor...
method constructor (line 1277) | public constructor() {
method appliesToTypeKind (line 1281) | public appliesToTypeKind(_kind: TypeKind): boolean {
method inIdentity (line 1285) | public get inIdentity(): boolean {
method children (line 1289) | public children(xf: Transformation): Set<Type> {
method reconstitute (line 1293) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method stringify (line 1300) | public stringify(_: Transformation): string {
function transformationForType (line 1308) | function transformationForType(t: Type): Transformation | undefined {
function followTargetType (line 1314) | function followTargetType(t: Type): Type {
FILE: packages/quicktype-core/src/Type/ProvenanceTypeAttributeKind.ts
class ProvenanceTypeAttributeKind (line 9) | class ProvenanceTypeAttributeKind extends TypeAttributeKind<Set<number>> {
method constructor (line 10) | public constructor() {
method appliesToTypeKind (line 14) | public appliesToTypeKind(_kind: TypeKind): boolean {
method combine (line 18) | public combine(arr: Array<Set<number>>): Set<number> {
method makeInferred (line 22) | public makeInferred(p: Set<number>): Set<number> {
method stringify (line 26) | public stringify(p: Set<number>): string {
FILE: packages/quicktype-core/src/Type/TransformedStringType.ts
type TransformedStringTypeTargets (line 20) | interface TransformedStringTypeTargets {
type TransformedStringTypeKind (line 58) | type TransformedStringTypeKind =
type PrimitiveStringTypeKind (line 60) | type PrimitiveStringTypeKind = "string" | TransformedStringTypeKind;
type PrimitiveNonStringTypeKind (line 61) | type PrimitiveNonStringTypeKind =
type PrimitiveTypeKind (line 68) | type PrimitiveTypeKind =
type NamedTypeKind (line 71) | type NamedTypeKind = "class" | "enum" | "union";
type TypeKind (line 72) | type TypeKind =
type ObjectTypeKind (line 79) | type ObjectTypeKind = "object" | "map" | "class";
function isPrimitiveStringTypeKind (line 85) | function isPrimitiveStringTypeKind(
function targetTypeKindForTransformedStringTypeKind (line 94) | function targetTypeKindForTransformedStringTypeKind(
function isNumberTypeKind (line 102) | function isNumberTypeKind(kind: TypeKind): kind is "integer" | "double" {
function isPrimitiveTypeKind (line 106) | function isPrimitiveTypeKind(kind: TypeKind): kind is PrimitiveTypeKind {
function triviallyStructurallyCompatible (line 114) | function triviallyStructurallyCompatible(x: Type, y: Type): boolean {
FILE: packages/quicktype-core/src/Type/Type.ts
class TypeIdentity (line 49) | class TypeIdentity {
method constructor (line 52) | public constructor(
method equals (line 66) | public equals<T extends TypeIdentity>(other: T): boolean {
method hashCode (line 82) | public hashCode(): number {
type MaybeTypeIdentity (line 88) | type MaybeTypeIdentity = TypeIdentity | undefined;
method constructor (line 93) | public constructor(
method index (line 98) | public get index(): number {
method getChildren (line 105) | public getChildren(): ReadonlySet<Type> {
method getAttributes (line 115) | public getAttributes(): TypeAttributes {
method hasNames (line 119) | public get hasNames(): boolean {
method getNames (line 126) | public getNames(): TypeNames {
method getCombinedName (line 132) | public getCombinedName(): string {
method debugPrintKind (line 145) | public get debugPrintKind(): string {
method equals (line 149) | public equals<T extends Type>(other: T): boolean {
method hashCode (line 154) | public hashCode(): number {
method structurallyCompatible (line 166) | public structurallyCompatible(
method getParentTypes (line 230) | public getParentTypes(): ReadonlySet<Type> {
method getAncestorsNotInSet (line 234) | public getAncestorsNotInSet(set: ReadonlySet<TypeRef>): ReadonlySet<Type> {
function hasUniqueIdentityAttributes (line 261) | function hasUniqueIdentityAttributes(attributes: TypeAttributes): boolean {
function identityAttributes (line 265) | function identityAttributes(attributes: TypeAttributes): TypeAttributes {
function primitiveTypeIdentity (line 269) | function primitiveTypeIdentity(
class PrimitiveType (line 277) | class PrimitiveType extends Type {
method constructor (line 278) | public constructor(
method isNullable (line 286) | public get isNullable(): boolean {
method isPrimitive (line 292) | public isPrimitive(): this is PrimitiveType {
method getNonAttributeChildren (line 296) | public getNonAttributeChildren(): Set<Type> {
method identity (line 300) | public get identity(): MaybeTypeIdentity {
method reconstitute (line 304) | public reconstitute<T extends BaseGraphRewriteBuilder>(
method structuralEqualityStep (line 310) | protected structuralEqualityStep(
function arrayTypeIdentity (line 319) | function arrayTypeIdentity(
class ArrayType (line 330) | class ArrayType extends Type {
method constructor (line 333) | public constructor(
method setItems (line 341) | public setItems(itemsRef: TypeRef): void {
method getItemsRef (line 349) | private getItemsRef(): TypeRef {
method items (line 357) | public get items(): Type {
method getNonAttributeChildren (line 361) | public getNonAttributeChildren(): Set<Type> {
method isNullable (line 365) | public get isNullable(): boolean {
method isPrimitive (line 369) | public isPrimitive(): this is PrimitiveType {
method identity (line 373) | public get identity(): MaybeTypeIdentity {
method reconstitute (line 377) | public reconstitute<T extends BaseGraphRewriteBuilder>(
method structuralEqualityStep (line 390) | protected structuralEqualityStep(
class GenericClassProperty (line 399) | class GenericClassProperty<T> {
method constructor (line 400) | public constructor(
method equals (line 405) | public equals(other: GenericClassProperty<unknown>): boolean {
method hashCode (line 416) | public hashCode(): number {
class ClassProperty (line 421) | class ClassProperty extends GenericClassProperty<TypeRef> {
method constructor (line 422) | public constructor(
method typeRef (line 430) | public get typeRef(): TypeRef {
method type (line 434) | public get type(): Type {
function objectTypeIdentify (line 439) | function objectTypeIdentify(
function classTypeIdentity (line 453) | function classTypeIdentity(
function mapTypeIdentify (line 460) | function mapTypeIdentify(
class ObjectType (line 472) | class ObjectType extends Type {
method constructor (line 473) | public constructor(
method setProperties (line 496) | public setProperties(
method getProperties (line 520) | public getProperties(): ReadonlyMap<string, ClassProperty> {
method getSortedProperties (line 524) | public getSortedProperties(): ReadonlyMap<string, ClassProperty> {
method getAdditionalPropertiesRef (line 528) | private getAdditionalPropertiesRef(): TypeRef | undefined {
method getAdditionalProperties (line 533) | public getAdditionalProperties(): Type | undefined {
method getNonAttributeChildren (line 539) | public getNonAttributeChildren(): Set<Type> {
method isNullable (line 551) | public get isNullable(): boolean {
method isPrimitive (line 555) | public isPrimitive(): this is PrimitiveType {
method identity (line 559) | public get identity(): MaybeTypeIdentity {
method reconstitute (line 569) | public reconstitute<T extends BaseGraphRewriteBuilder>(
method structuralEqualityStep (line 652) | protected structuralEqualityStep(
class ClassType (line 691) | class ClassType extends ObjectType {
method constructor (line 692) | public constructor(
class MapType (line 702) | class MapType extends ObjectType {
method constructor (line 703) | public constructor(
method values (line 719) | public get values(): Type {
function enumTypeIdentity (line 724) | function enumTypeIdentity(
class EnumType (line 732) | class EnumType extends Type {
method constructor (line 735) | public constructor(
method isNullable (line 743) | public get isNullable(): boolean {
method isPrimitive (line 747) | public isPrimitive(): this is PrimitiveType {
method identity (line 751) | public get identity(): MaybeTypeIdentity {
method getNonAttributeChildren (line 755) | public getNonAttributeChildren(): Set<Type> {
method reconstitute (line 759) | public reconstitute<T extends BaseGraphRewriteBuilder>(
method structuralEqualityStep (line 765) | protected structuralEqualityStep(
function setOperationCasesEqual (line 774) | function setOperationCasesEqual(
function setOperationTypeIdentity (line 806) | function setOperationTypeIdentity(
function unionTypeIdentity (line 815) | function unionTypeIdentity(
function intersectionTypeIdentity (line 822) | function intersectionTypeIdentity(
method constructor (line 830) | public constructor(
method setMembers (line 839) | public setMembers(memberRefs: ReadonlySet<TypeRef>): void {
method getMemberRefs (line 847) | protected getMemberRefs(): ReadonlySet<TypeRef> {
method members (line 855) | public get members(): ReadonlySet<Type> {
method sortedMembers (line 861) | public get sortedMembers(): ReadonlySet<Type> {
method getNonAttributeChildren (line 865) | public getNonAttributeChildren(): Set<Type> {
method isPrimitive (line 870) | public isPrimitive(): this is PrimitiveType {
method identity (line 874) | public get identity(): MaybeTypeIdentity {
method reconstituteSetOperation (line 882) | protected reconstituteSetOperation<T extends BaseGraphRewriteBuilder>(
method structuralEqualityStep (line 908) | protected structuralEqualityStep(
class IntersectionType (line 922) | class IntersectionType extends SetOperationType {
method constructor (line 923) | public constructor(
method isNullable (line 931) | public get isNullable(): boolean {
method reconstitute (line 935) | public reconstitute<T extends BaseGraphRewriteBuilder>(
class UnionType (line 949) | class UnionType extends SetOperationType {
method constructor (line 950) | public constructor(
method setMembers (line 961) | public setMembers(memberRefs: ReadonlySet<TypeRef>): void {
method stringTypeMembers (line 966) | public get stringTypeMembers(): ReadonlySet<Type> {
method findMember (line 973) | public findMember(kind: TypeKind): Type | undefined {
method isNullable (line 977) | public get isNullable(): boolean {
method isCanonical (line 981) | public get isCanonical(): boolean {
method reconstitute (line 999) | public reconstitute<T extends BaseGraphRewriteBuilder>(
FILE: packages/quicktype-core/src/Type/TypeBuilder.ts
class TypeBuilder (line 63) | class TypeBuilder {
method constructor (line 75) | public constructor(
method typeGraph (line 88) | public get typeGraph(): TypeGraph {
method typeGraph (line 94) | public set typeGraph(typeGraph: TypeGraph) {
method addTopLevel (line 98) | public addTopLevel(name: string, tref: TypeRef): void {
method reserveTypeRef (line 111) | public reserveTypeRef(): TypeRef {
method assertTypeRefGraph (line 123) | private assertTypeRefGraph(tref: TypeRef | undefined): void {
method assertTypeRefSetGraph (line 128) | private assertTypeRefSetGraph(
method filterTypeAttributes (line 135) | private filterTypeAttributes(
method commitType (line 149) | private commitType(tref: TypeRef, t: Type): void {
method addType (line 165) | protected addType<T extends Type>(
method typeAtIndex (line 190) | public typeAtIndex(index: number): Type {
method atIndex (line 199) | public atIndex(index: number): [Type, TypeAttributes] {
method addAttributes (line 205) | public addAttributes(tref: TypeRef, attributes: TypeAttributes): void {
method finish (line 234) | public finish(): TypeGraph {
method addForwardingIntersection (line 243) | protected addForwardingIntersection(
method forwardIfNecessary (line 268) | protected forwardIfNecessary(
method didAddForwardingIntersection (line 277) | public get didAddForwardingIntersection(): boolean {
method registerTypeForIdentity (line 284) | private registerTypeForIdentity(
method makeIdentity (line 292) | protected makeIdentity(maker: () => MaybeTypeIdentity): MaybeTypeIdent...
method getOrAddType (line 296) | private getOrAddType(
method registerType (line 331) | private registerType(t: Type): void {
method getPrimitiveType (line 335) | public getPrimitiveType(
method getStringType (line 361) | public getStringType(
method getEnumType (line 392) | public getEnumType(
method makeClassProperty (line 405) | public makeClassProperty(
method getUniqueObjectType (line 412) | public getUniqueObjectType(
method getUniqueMapType (line 438) | public getUniqueMapType(forwardingRef?: TypeRef): TypeRef {
method getMapType (line 446) | public getMapType(
method setObjectProperties (line 461) | public setObjectProperties(
method getUniqueArrayType (line 480) | public getUniqueArrayType(forwardingRef?: TypeRef): TypeRef {
method getArrayType (line 488) | public getArrayType(
method setArrayItems (line 503) | public setArrayItems(ref: TypeRef, items: TypeRef): void {
method modifyPropertiesIfNecessary (line 515) | public modifyPropertiesIfNecessary(
method getClassType (line 533) | public getClassType(
method getUniqueClassType (line 549) | public getUniqueClassType(
method getUnionType (line 565) | public getUnionType(
method getUniqueUnionType (line 581) | public getUniqueUnionType(
method getIntersectionType (line 595) | public getIntersectionType(
method getUniqueIntersectionType (line 611) | public getUniqueIntersectionType(
method setSetOperationMembers (line 625) | public setSetOperationMembers(
method setLostTypeAttributes (line 640) | public setLostTypeAttributes(): void {
FILE: packages/quicktype-core/src/Type/TypeBuilderUtils.ts
type StringTypeMapping (line 7) | type StringTypeMapping = ReadonlyMap<
function stringTypeMappingGet (line 12) | function stringTypeMappingGet(
function getNoStringTypeMapping (line 23) | function getNoStringTypeMapping(): StringTypeMapping {
FILE: packages/quicktype-core/src/Type/TypeGraph.ts
class TypeAttributeStore (line 37) | class TypeAttributeStore {
method constructor (line 40) | public constructor(
method getTypeIndex (line 45) | private getTypeIndex(t: Type): number {
method attributesForType (line 51) | public attributesForType(t: Type): TypeAttributes {
method attributesForTopLevel (line 61) | public attributesForTopLevel(name: string): TypeAttributes {
method setInMap (line 70) | public setInMap<T>(
method set (line 79) | public set<T>(kind: TypeAttributeKind<T>, t: Type, value: T): void {
method setForTopLevel (line 92) | public setForTopLevel<T>(
method tryGetInMap (line 107) | public tryGetInMap<T>(
method tryGet (line 114) | public tryGet<T>(kind: TypeAttributeKind<T>, t: Type): T | undefined {
method tryGetForTopLevel (line 118) | public tryGetForTopLevel<T>(
class TypeAttributeStoreView (line 126) | class TypeAttributeStoreView<T> {
method constructor (line 127) | public constructor(
method set (line 132) | public set(t: Type, value: T): void {
method setForTopLevel (line 136) | public setForTopLevel(name: string, value: T): void {
method tryGet (line 140) | public tryGet(t: Type): T | undefined {
method get (line 144) | public get(t: Type): T {
method tryGetForTopLevel (line 148) | public tryGetForTopLevel(name: string): T | undefined {
method getForTopLevel (line 152) | public getForTopLevel(name: string): T {
class TypeGraph (line 157) | class TypeGraph {
method constructor (line 172) | public constructor(
method isFrozen (line 180) | private get isFrozen(): boolean {
method attributeStore (line 184) | public get attributeStore(): TypeAttributeStore {
method freeze (line 188) | public freeze(
method topLevels (line 209) | public get topLevels(): ReadonlyMap<string, Type> {
method typeAtIndex (line 215) | public typeAtIndex(index: number): Type {
method atIndex (line 223) | public atIndex(index: number): [Type, TypeAttributes] {
method filterTypes (line 233) | private filterTypes(
method allNamedTypes (line 264) | public allNamedTypes(): ReadonlySet<Type> {
method allNamedTypesSeparated (line 268) | public allNamedTypesSeparated(): SeparatedNamedTypes {
method allProvenance (line 274) | private allProvenance(): ReadonlySet<number> {
method setPrintOnRewrite (line 292) | public setPrintOnRewrite(): void {
method checkLostTypeAttributes (line 296) | private checkLostTypeAttributes(
method printRewrite (line 316) | private printRewrite(title: string): void {
method rewrite (line 330) | public rewrite<T extends Type>(
method remap (line 383) | public remap(
method garbageCollect (line 424) | public garbageCollect(
method rewriteFixedPoint (line 440) | public rewriteFixedPoint(
method allTypesUnordered (line 467) | public allTypesUnordered(): ReadonlySet<Type> {
method makeGraph (line 475) | public makeGraph(
method getParentsOfType (line 482) | public getParentsOfType(t: Type): Set<Type> {
method printGraph (line 499) | public printGraph(): void {
FILE: packages/quicktype-core/src/Type/TypeGraphUtils.ts
function noneToAny (line 19) | function noneToAny(
function optionalToNullable (line 51) | function optionalToNullable(
function removeIndirectionIntersections (line 130) | function removeIndirectionIntersections(
FILE: packages/quicktype-core/src/Type/TypeRef.ts
type TypeRef (line 13) | type TypeRef = number;
function isTypeRef (line 15) | function isTypeRef(x: unknown): x is TypeRef {
function makeTypeRef (line 19) | function makeTypeRef(graph: TypeGraph, index: number): TypeRef {
function typeRefIndex (line 24) | function typeRefIndex(tref: TypeRef): number {
function assertTypeRefGraph (line 28) | function assertTypeRefGraph(tref: TypeRef, graph: TypeGraph): void {
function getGraph (line 35) | function getGraph(
function derefTypeRef (line 46) | function derefTypeRef(
function attributesForTypeRef (line 55) | function attributesForTypeRef(
function typeAndAttributesForTypeRef (line 64) | function typeAndAttributesForTypeRef(
FILE: packages/quicktype-core/src/Type/TypeUtils.ts
function assertIsObject (line 35) | function assertIsObject(t: Type): ObjectType {
function assertIsClass (line 43) | function assertIsClass(t: Type): ClassType {
function setOperationMembersRecursively (line 55) | function setOperationMembersRecursively<T extends SetOperationType>(
function makeGroupsToFlatten (line 102) | function makeGroupsToFlatten<T extends SetOperationType>(
function combineTypeAttributesOfTypes (line 133) | function combineTypeAttributesOfTypes(
function isAnyOrNull (line 143) | function isAnyOrNull(t: Type): boolean {
function removeNullFromUnion (line 150) | function removeNullFromUnion(
function removeNullFromType (line 171) | function removeNullFromType(
function nullableFromUnion (line 185) | function nullableFromUnion(t: UnionType): Type | null {
function nonNullTypeCases (line 192) | function nonNullTypeCases(t: Type): ReadonlySet<Type> {
function getNullAsOptional (line 196) | function getNullAsOptional(
function isNamedType (line 209) | function isNamedType(t: Type): boolean {
type SeparatedNamedTypes (line 213) | interface SeparatedNamedTypes {
function separateNamedTypes (line 219) | function separateNamedTypes(types: Iterable<Type>): SeparatedNamedTypes {
function directlyReachableTypes (line 236) | function directlyReachableTypes<T>(
function directlyReachableSingleNamedType (line 249) | function directlyReachableSingleNamedType(type: Type): Type | undefined {
function stringTypesForType (line 267) | function stringTypesForType(t: PrimitiveType): StringTypes {
type StringTypeMatchers (line 279) | interface StringTypeMatchers<U> {
function matchTypeExhaustive (line 285) | function matchTypeExhaustive<U>(
function matchType (line 332) | function matchType<U>(
function matchCompoundType (line 370) | function matchCompoundType(
FILE: packages/quicktype-core/src/UnifyClasses.ts
function getCliqueProperties (line 25) | function getCliqueProperties(
function countProperties (line 92) | function countProperties(clique: ObjectType[]): {
class UnifyUnionBuilder (line 121) | class UnifyUnionBuilder extends UnionBuilder<
method constructor (line 126) | public constructor(
method makeObject (line 135) | protected makeObject(
method makeArray (line 229) | protected makeArray(
function unionBuilderForUnification (line 243) | function unionBuilderForUnification<T extends Type>(
function unifyTypes (line 271) | function unifyTypes<T extends Type>(
FILE: packages/quicktype-core/src/UnionBuilder.ts
type UnionTypeProvider (line 38) | interface UnionTypeProvider<TArrayData, TObjectData> {
type TypeAttributeMap (line 49) | type TypeAttributeMap<T extends TypeKind> = Map<T, TypeAttributes>;
type TypeAttributeMapBuilder (line 51) | type TypeAttributeMapBuilder<T extends TypeKind> = Map<T, TypeAttributes...
function addAttributes (line 53) | function addAttributes(
function setAttributes (line 61) | function setAttributes<T extends TypeKind>(
function addAttributesToBuilder (line 72) | function addAttributesToBuilder<T extends TypeKind>(
function buildTypeAttributeMap (line 86) | function buildTypeAttributeMap<T extends TypeKind>(
function moveAttributes (line 92) | function moveAttributes<T extends TypeKind>(
class UnionAccumulator (line 102) | class UnionAccumulator<TArray, TObject>
method constructor (line 119) | public constructor(private readonly _conflateNumbers: boolean) {}
method have (line 121) | private have(kind: TypeKind): boolean {
method addNone (line 128) | public addNone(_attributes: TypeAttributes): void {
method addAny (line 135) | public addAny(attributes: TypeAttributes): void {
method addPrimitive (line 144) | public addPrimitive(
method addFullStringType (line 152) | protected addFullStringType(
method addStringType (line 193) | public addStringType(
method addArray (line 213) | public addArray(t: TArray, attributes: TypeAttributes): void {
method addObject (line 222) | public addObject(t: TObject, attributes: TypeAttributes): void {
method addEnum (line 231) | public addEnum(
method addStringCases (line 253) | public addStringCases(cases: string[], attributes: TypeAttributes): vo...
method addStringCase (line 257) | public addStringCase(
method enumCases (line 265) | public get enumCases(): ReadonlySet<string> {
method getMemberKinds (line 269) | public getMemberKinds(): TypeAttributeMap<TypeKind> {
method lostTypeAttributes (line 316) | public get lostTypeAttributes(): boolean {
class FauxUnion (line 321) | class FauxUnion {
method getAttributes (line 322) | public getAttributes(): TypeAttributes {
type UnionOrFaux (line 327) | type UnionOrFaux = UnionType | FauxUnion;
function attributesForTypes (line 329) | function attributesForTypes(
class TypeRefUnionAccumulator (line 412) | class TypeRefUnionAccumulator extends UnionAccumulator<
method addType (line 418) | private addType(t: Type, attributes: TypeAttributes): void {
method addTypes (line 449) | public addTypes(types: Iterable<Type>): TypeAttributes {
method constructor (line 464) | public constructor(protected readonly typeBuilder: TBuilder) {}
method makeTypeOfKind (line 477) | private makeTypeOfKind(
method buildUnion (line 530) | public buildUnion(
FILE: packages/quicktype-core/src/attributes/AccessorNames.ts
type AccessorEntry (line 32) | type AccessorEntry = string | Map<string, string>;
type AccessorNames (line 34) | type AccessorNames = Map<string, AccessorEntry>;
class AccessorNamesTypeAttributeKind (line 36) | class AccessorNamesTypeAttributeKind extends TypeAttributeKind<AccessorN...
method constructor (line 37) | public constructor() {
method makeInferred (line 41) | public makeInferred(_: AccessorNames): undefined {
function getFromEntry (line 50) | function getFromEntry(
function lookupKey (line 65) | function lookupKey(
function objectPropertyNames (line 75) | function objectPropertyNames(
function enumCaseNames (line 87) | function enumCaseNames(
function getAccessorName (line 99) | function getAccessorName(
class UnionIdentifierTypeAttributeKind (line 115) | class UnionIdentifierTypeAttributeKind extends TypeAttributeKind<
method constructor (line 118) | public constructor() {
method combine (line 122) | public combine(arr: Array<ReadonlySet<number>>): ReadonlySet<number> {
method makeInferred (line 126) | public makeInferred(_: ReadonlySet<number>): ReadonlySet<number> {
function makeUnionIdentifierAttribute (line 137) | function makeUnionIdentifierAttribute(): TypeAttributes {
class UnionMemberNamesTypeAttributeKind (line 145) | class UnionMemberNamesTypeAttributeKind extends TypeAttributeKind<
method constructor (line 148) | public constructor() {
method combine (line 152) | public combine(
function makeUnionMemberNamesAttribute (line 168) | function makeUnionMemberNamesAttribute(
function unionMemberName (line 179) | function unionMemberName(
function isAccessorEntry (line 229) | function isAccessorEntry(
function makeAccessorEntry (line 239) | function makeAccessorEntry(
function makeAccessorNames (line 246) | function makeAccessorNames(x: unknown): AccessorNames {
function accessorNamesAttributeProducer (line 252) | function accessorNamesAttributeProducer(
FILE: packages/quicktype-core/src/attributes/Constraints.ts
type MinMaxConstraint (line 16) | type MinMaxConstraint = [number | undefined, number | undefined];
function checkMinMaxConstraint (line 18) | function checkMinMaxConstraint(
class MinMaxConstraintTypeAttributeKind (line 33) | class MinMaxConstraintTypeAttributeKind extends TypeAttributeKind<MinMax...
method constructor (line 34) | public constructor(
method inIdentity (line 43) | public get inIdentity(): boolean {
method combine (line 47) | public combine(arr: MinMaxConstraint[]): MinMaxConstraint | undefined {
method intersect (line 69) | public intersect(arr: MinMaxConstraint[]): MinMaxConstraint | undefined {
method makeInferred (line 91) | public makeInferred(_: MinMaxConstraint): undefined {
method addToSchema (line 95) | public addToSchema(
method stringify (line 112) | public stringify([min, max]: MinMaxConstraint): string {
function producer (line 133) | function producer(
function minMaxAttributeProducer (line 155) | function minMaxAttributeProducer(
function minMaxLengthAttributeProducer (line 167) | function minMaxLengthAttributeProducer(
function minMaxValueForType (line 182) | function minMaxValueForType(t: Type): MinMaxConstraint | undefined {
function minMaxLengthForType (line 186) | function minMaxLengthForType(t: Type): MinMaxConstraint | undefined {
class PatternTypeAttributeKind (line 190) | class PatternTypeAttributeKind extends TypeAttributeKind<string> {
method constructor (line 191) | public constructor() {
method inIdentity (line 195) | public get inIdentity(): boolean {
method combine (line 199) | public combine(arr: string[]): string {
method intersect (line 204) | public intersect(_arr: string[]): string | undefined {
method makeInferred (line 209) | public makeInferred(_: string): undefined {
method addToSchema (line 213) | public addToSchema(
function patternAttributeProducer (line 226) | function patternAttributeProducer(
function patternForType (line 239) | function patternForType(t: Type): string | undefined {
FILE: packages/quicktype-core/src/attributes/Description.ts
function addDescriptionToSchema (line 22) | function addDescriptionToSchema(
class DescriptionTypeAttributeKind (line 30) | class DescriptionTypeAttributeKind extends TypeAttributeKind<
method constructor (line 33) | public constructor() {
method combine (line 37) | public combine(attrs: Array<ReadonlySet<string>>): ReadonlySet<string> {
method makeInferred (line 41) | public makeInferred(_: ReadonlySet<string>): undefined {
method addToSchema (line 45) | public addToSchema(
method stringify (line 53) | public stringify(descriptions: ReadonlySet<string>): string | undefined {
class PropertyDescriptionsTypeAttributeKind (line 72) | class PropertyDescriptionsTypeAttributeKind extends TypeAttributeKind<
method constructor (line 75) | public constructor() {
method combine (line 79) | public combine(
method makeInferred (line 91) | public makeInferred(_: Map<string, ReadonlySet<string>>): undefined {
method stringify (line 95) | public stringify(
function isPropertiesKey (line 107) | function isPropertiesKey(el: PathElement): boolean {
function descriptionAttributeProducer (line 111) | function descriptionAttributeProducer(
FILE: packages/quicktype-core/src/attributes/EnumValues.ts
class EnumValuesTypeAttributeKind (line 18) | class EnumValuesTypeAttributeKind extends TypeAttributeKind<AccessorName...
method constructor (line 19) | public constructor() {
method makeInferred (line 23) | public makeInferred(_: AccessorNames): undefined {
function enumCaseValues (line 31) | function enumCaseValues(
function enumValuesAttributeProducer (line 43) | function enumValuesAttributeProducer(
FILE: packages/quicktype-core/src/attributes/StringTypes.ts
class StringTypes (line 23) | class StringTypes {
method fromCase (line 29) | public static fromCase(s: string, count: number): StringTypes {
method fromCases (line 38) | public static fromCases(cases: string[]): StringTypes {
method constructor (line 51) | public constructor(
method isRestricted (line 63) | public get isRestricted(): boolean {
method union (line 67) | public union(othersArray: StringTypes[], startIndex: number): StringTy...
method intersect (line 85) | public intersect(
method applyStringTypeMapping (line 125) | public applyStringTypeMapping(mapping: StringTypeMapping): StringTypes {
method equals (line 138) | public equals<T extends StringTypes>(other: T): boolean {
method hashCode (line 146) | public hashCode(): number {
method toString (line 152) | public toString(): string {
class StringTypesTypeAttributeKind (line 173) | class StringTypesTypeAttributeKind extends TypeAttributeKind<StringTypes> {
method constructor (line 174) | public constructor() {
method inIdentity (line 178) | public get inIdentity(): boolean {
method requiresUniqueIdentity (line 182) | public requiresUniqueIdentity(st: StringTypes): boolean {
method combine (line 186) | public combine(arr: StringTypes[]): StringTypes {
method intersect (line 191) | public intersect(arr: StringTypes[]): StringTypes {
method makeInferred (line 196) | public makeInferred(_: StringTypes): undefined {
method stringify (line 200) | public stringify(st: StringTypes): string {
constant INTEGER_STRING (line 208) | const INTEGER_STRING = /^(0|-?[1-9]\d*)$/;
constant MIN_INTEGER_STRING (line 211) | const MIN_INTEGER_STRING = 1 << 31;
constant MAX_INTEGER_STRING (line 212) | const MAX_INTEGER_STRING = -(MIN_INTEGER_STRING + 1);
function isIntegerString (line 214) | function isIntegerString(s: string): boolean {
constant UUID (line 223) | const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{...
function isUUID (line 225) | function isUUID(s: string): boolean {
constant URI (line 232) | const URI = /^(https?|ftp):\/\/[^{}]+$/;
function isURI (line 234) | function isURI(s: string): boolean {
function inferTransformedStringTypeKindForString (line 245) | function inferTransformedStringTypeKindForString(
FILE: packages/quicktype-core/src/attributes/TypeAttributes.ts
class TypeAttributeKind (line 12) | class TypeAttributeKind<T> {
method constructor (line 13) | public constructor(public readonly name: string) {}
method appliesToTypeKind (line 15) | public appliesToTypeKind(kind: TypeKind): boolean {
method combine (line 19) | public combine(_attrs: T[]): T | undefined {
method intersect (line 23) | public intersect(attrs: T[]): T | undefined {
method makeInferred (line 27) | public makeInferred(_: T): T | undefined {
method increaseDistance (line 31) | public increaseDistance(attrs: T): T | undefined {
method addToSchema (line 35) | public addToSchema(
method children (line 43) | public children(_: T): ReadonlySet<Type> {
method stringify (line 47) | public stringify(_: T): string | undefined {
method inIdentity (line 51) | public get inIdentity(): boolean {
method requiresUniqueIdentity (line 55) | public requiresUniqueIdentity(_: T): boolean {
method reconstitute (line 59) | public reconstitute<TBuilder extends BaseGraphRewriteBuilder>(
method makeAttributes (line 66) | public makeAttributes(value: T): TypeAttributes {
method tryGetInAttributes (line 71) | public tryGetInAttributes(a: TypeAttributes): T | undefined {
method setInAttributes (line 75) | private setInAttributes(a: TypeAttributes, value: T): TypeAttributes {
method modifyInAttributes (line 80) | public modifyInAttributes(
method setDefaultInAttributes (line 95) | public setDefaultInAttributes(
method removeInAttributes (line 103) | public removeInAttributes(a: TypeAttributes): TypeAttributes {
method equals (line 107) | public equals(other: TypeAttributeKind<unknown>): boolean {
method hashCode (line 115) | public hashCode(): number {
type TypeAttributes (line 122) | type TypeAttributes = ReadonlyMap<TypeAttributeKind<any>, any>;
type CombinationKind (line 126) | type CombinationKind = "union" | "intersect";
function combineTypeAttributes (line 137) | function combineTypeAttributes(
function makeTypeAttributesInferred (line 171) | function makeTypeAttributesInferred(
function increaseTypeAttributesDistance (line 177) | function increaseTypeAttributesDistance(
FILE: packages/quicktype-core/src/attributes/TypeNames.ts
function initTypeNames (line 19) | function initTypeNames(): void {
function makeRandomName (line 26) | function makeRandomName(): string {
type NameOrNames (line 35) | type NameOrNames = string | TypeNames;
function combineNames (line 41) | function combineNames(names: ReadonlySet<string>): string {
method makeWithDistance (line 95) | public static makeWithDistance(
method make (line 114) | public static make(
method constructor (line 126) | public constructor(public readonly distance: number) {}
method areInferred (line 128) | public get areInferred(): boolean {
class RegularTypeNames (line 146) | class RegularTypeNames extends TypeNames {
method constructor (line 147) | public constructor(
method add (line 155) | public add(namesArray: TypeNames[], startIndex = 0): TypeNames {
method clearInferred (line 213) | public clearInferred(): TypeNames {
method combinedName (line 218) | public get combinedName(): string {
method proposedNames (line 222) | public get proposedNames(): ReadonlySet<string> {
method makeInferred (line 232) | public makeInferred(): TypeNames {
method singularize (line 240) | public singularize(): TypeNames {
method toString (line 250) | public toString(): string {
class TooManyTypeNames (line 263) | class TooManyTypeNames extends TypeNames {
method constructor (line 266) | public constructor(distance: number, name?: string) {
method combinedName (line 276) | public get combinedName(): string {
method proposedNames (line 280) | public get proposedNames(): ReadonlySet<string> {
method add (line 284) | public add(namesArray: TypeNames[], startIndex = 0): TypeNames {
method clearInferred (line 297) | public clearInferred(): TypeNames {
method makeInferred (line 305) | public makeInferred(): TypeNames {
method singularize (line 312) | public singularize(): TypeNames {
method toString (line 316) | public toString(): string {
class TypeNamesTypeAttributeKind (line 321) | class TypeNamesTypeAttributeKind extends TypeAttributeKind<TypeNames> {
method constructor (line 322) | public constructor() {
method combine (line 326) | public combine(namesArray: TypeNames[]): TypeNames {
method makeInferred (line 332) | public makeInferred(tn: TypeNames): TypeNames {
method increaseDistance (line 336) | public increaseDistance(tn: TypeNames): TypeNames {
method stringify (line 340) | public stringify(tn: TypeNames): string {
function modifyTypeNames (line 348) | function modifyTypeNames(
function singularizeTypeNames (line 355) | function singularizeTypeNames(
function makeNamesTypeAttributes (line 364) | function makeNamesTypeAttributes(
FILE: packages/quicktype-core/src/attributes/URIAttributes.ts
type URIAttributes (line 23) | type URIAttributes = [ReadonlySet<string>, ReadonlySet<string>];
class URITypeAttributeKind (line 25) | class URITypeAttributeKind extends TypeAttributeKind<URIAttributes> {
method constructor (line 26) | public constructor() {
method inIdentity (line 30) | public get inIdentity(): boolean {
method combine (line 34) | public combine(attrs: URIAttributes[]): URIAttributes {
method makeInferred (line 43) | public makeInferred(_: URIAttributes): undefined {
method addToSchema (line 47) | public addToSchema(
function pathExtension (line 70) | function pathExtension(path: string): string | undefined {
function uriInferenceAttributesProducer (line 76) | function uriInferenceAttributesProducer(s: string): TypeAttributes {
function uriSchemaAttributesProducer (line 91) | function uriSchemaAttributesProducer(
FILE: packages/quicktype-core/src/input/CompressedJSON.ts
type Tag (line 12) | enum Tag {
type Value (line 26) | type Value = number;
constant TAG_BITS (line 28) | const TAG_BITS = 4;
constant TAG_MASK (line 29) | const TAG_MASK = (1 << TAG_BITS) - 1;
function makeValue (line 31) | function makeValue(t: Tag, index: number): Value {
function getIndex (line 35) | function getIndex(v: Value, tag: Tag): number {
function valueTag (line 43) | function valueTag(v: Value): Tag {
type Context (line 47) | interface Context {
method constructor (line 69) | public constructor(
method parseSync (line 76) | public parseSync(_input: T): Value {
method getStringForValue (line 80) | public getStringForValue(v: Value): string {
method getStringFormatTypeKind (line 94) | public getStringFormatTypeKind(v: Value): TransformedStringTypeKind {
method context (line 103) | protected get context(): Context {
method internString (line 107) | protected internString(s: string): number {
method makeString (line 118) | protected makeString(s: string): Value {
method internObject (line 127) | protected internObject(obj: Value[]): Value {
method isExpectingRef (line 139) | protected get isExpectingRef(): boolean {
method commitValue (line 143) | protected commitValue(value: Value): void {
method commitNull (line 173) | protected commitNull(): void {
method commitBoolean (line 177) | protected commitBoolean(v: boolean): void {
method commitNumber (line 181) | protected commitNumber(isDouble: boolean): void {
method commitString (line 186) | protected commitString(s: string): void {
method finish (line 220) | protected finish(): Value {
method pushContext (line 234) | protected pushContext(): void {
method pushObjectContext (line 247) | protected pushObjectContext(): void {
method setPropertyKey (line 252) | protected setPropertyKey(key: string): void {
method finishObject (line 257) | protected finishObject(): void {
method pushArrayContext (line 267) | protected pushArrayContext(): void {
method finishArray (line 272) | protected finishArray(): void {
method popContext (line 282) | protected popContext(): void {
method equals (line 287) | public equals(other: CompressedJSON<unknown>): boolean {
method hashCode (line 291) | public hashCode(): number {
class CompressedJSONFromString (line 323) | class CompressedJSONFromString extends CompressedJSON<string> {
method parse (line 324) | public async parse(input: string): Promise<Value> {
method parseSync (line 328) | public parseSync(input: string): Value {
method process (line 334) | private process(json: unknown): void {
FILE: packages/quicktype-core/src/input/FetchingJSONSchemaStore.ts
class FetchingJSONSchemaStore (line 6) | class FetchingJSONSchemaStore extends JSONSchemaStore {
method constructor (line 7) | public constructor(private readonly _httpHeaders?: string[]) {
method fetch (line 11) | public async fetch(address: string): Promise<JSONSchema | undefined> {
FILE: packages/quicktype-core/src/input/Inference.ts
type NestedValueArray (line 36) | type NestedValueArray = any;
function forEachArrayInNestedValueArray (line 38) | function forEachArrayInNestedValueArray(
function forEachValueInNestedValueArray (line 55) | function forEachValueInNestedValueArray(
class InferenceUnionBuilder (line 66) | class InferenceUnionBuilder extends UnionBuilder<
method constructor (line 71) | public constructor(
method makeObject (line 79) | protected makeObject(
method makeArray (line 92) | protected makeArray(
function canBeEnumCase (line 109) | function canBeEnumCase(_s: string): boolean {
type Accumulator (line 113) | type Accumulator = UnionAccumulator<NestedValueArray, NestedValueArray>;
class TypeInference (line 115) | class TypeInference {
method constructor (line 118) | public constructor(
method addValuesToAccumulator (line 125) | private addValuesToAccumulator(
method inferType (line 226) | public inferType(
method resolveRef (line 241) | private resolveRef(ref: string, topLevel: TypeRef): TypeRef {
method inferTopLevelType (line 295) | public inferTopLevelType(
method accumulatorForArray (line 324) | private accumulatorForArray(valueArray: NestedValueArray): Accumulator {
method makeTypeFromAccumulator (line 333) | private makeTypeFromAccumulator(
method inferClassType (line 352) | public inferClassType(
FILE: packages/quicktype-core/src/input/Inputs.ts
type Input (line 27) | interface Input<T> {
type JSONTopLevel (line 53) | interface JSONTopLevel {
type JSONSourceData (line 58) | interface JSONSourceData<T> {
function messageParseError (line 64) | function messageParseError(
class JSONInput (line 76) | class JSONInput<T> implements Input<JSONSourceData<T>> {
method constructor (line 85) | public constructor(private readonly _compressedJSON: CompressedJSON<T>...
method addSample (line 87) | private addSample(topLevelName: string, sample: Value): void {
method setDescription (line 97) | private setDescription(topLevelName: string, description: string): void {
method addSamples (line 108) | private addSamples(
method addSource (line 121) | public async addSource(source: JSONSourceData<T>): Promise<void> {
method addSourceSync (line 134) | public addSourceSync(source: JSONSourceData<T>): void {
method singleStringSchemaSource (line 146) | public singleStringSchemaSource(): undefined {
method addTypes (line 150) | public async addTypes(
method addTypesSync (line 166) | public addTypesSync(
function jsonInputForTargetLanguage (line 197) | function jsonInputForTargetLanguage(
class InputData (line 213) | class InputData {
method addInput (line 218) | public addInput<T>(input: Input<T>): void {
method getOrAddInput (line 222) | private getOrAddInput<T>(
method addSource (line 238) | public async addSource<T>(
method addSourceSync (line 247) | public addSourceSync<T>(
method addTypes (line 256) | public async addTypes(
method addTypesSync (line 274) | public addTypesSync(
method needIR (line 292) | public get needIR(): boolean {
method needSchemaProcessing (line 296) | public get needSchemaProcessing(): boolean {
method singleStringSchemaSource (line 300) | public singleStringSchemaSource(): string | undefined {
FILE: packages/quicktype-core/src/input/JSONSchemaInput.ts
function keyOrIndex (line 70) | function keyOrIndex(pe: PathElement): string | undefined {
function pathElementEquals (line 75) | function pathElementEquals(a: PathElement, b: PathElement): boolean {
function withRef (line 97) | function withRef<T extends object>(
function checkJSONSchemaObject (line 110) | function checkJSONSchemaObject(
function checkJSONSchema (line 132) | function checkJSONSchema(x: unknown, refOrLoc: Ref | (() => Ref)): JSONS...
function normalizeURI (line 139) | function normalizeURI(uri: string | URI): URI {
class Ref (line 152) | class Ref {
method root (line 153) | public static root(address: string | undefined): Ref {
method parsePath (line 158) | private static parsePath(path: string): readonly PathElement[] {
method parseURI (line 176) | public static parseURI(uri: URI, destroyURI = false): Ref {
method parse (line 191) | public static parse(ref: string): Ref {
method constructor (line 197) | public constructor(
method hasAddress (line 212) | public get hasAddress(): boolean {
method address (line 216) | public get address(): string {
method isRoot (line 220) | public get isRoot(): boolean {
method pushElement (line 226) | private pushElement(pe: PathElement): Ref {
method push (line 232) | public push(...keys: string[]): Ref {
method pushObject (line 242) | public pushObject(): Ref {
method pushType (line 246) | public pushType(index: number): Ref {
method resolveAgainst (line 250) | public resolveAgainst(base: Ref | undefined): Ref {
method name (line 262) | public get name(): string {
method definitionName (line 305) | public get definitionName(): string | undefined {
method toString (line 313) | public toString(): string {
method lookup (line 334) | private lookup(
method lookupRef (line 392) | public lookupRef(root: JSONSchema): JSONSchema {
method equals (line 396) | public equals<R extends Ref>(other: R): boolean {
method hashCode (line 417) | public hashCode(): number {
class Location (line 437) | class Location {
method constructor (line 442) | public constructor(
method updateWithID (line 451) | public updateWithID(id: string | unknown): Location {
method push (line 468) | public push(...keys: string[]): Location {
method pushObject (line 476) | public pushObject(): Location {
method pushType (line 484) | public pushType(index: number): Location {
method toString (line 492) | public toString(): string {
class Canonizer (line 497) | class Canonizer {
method constructor (line 502) | public constructor(private readonly _ctx: RunContext) {}
method addIDs (line 504) | private addIDs(schema: unknown, loc: Location): void {
method addSchema (line 540) | public addSchema(schema: unknown, address: string): boolean {
method canonize (line 552) | public canonize(base: Location, ref: Ref): Location {
function checkTypeList (line 567) | function checkTypeList(
function checkRequiredArray (line 616) | function checkRequiredArray(arr: string[], loc: Location): string[] {
type JSONSchemaType (line 645) | type JSONSchemaType = keyof typeof schemaTypeDict;
type JSONSchemaAttributes (line 651) | interface JSONSchemaAttributes {
type JSONSchemaAttributeProducer (line 659) | type JSONSchemaAttributeProducer = (
function typeKindForJSONSchemaFormat (line 666) | function typeKindForJSONSchemaFormat(
function schemaFetchError (line 677) | function schemaFetchError(base: Location | undefined, address: string): ...
class Resolver (line 688) | class Resolver {
method constructor (line 689) | public constructor(
method tryResolveVirtualRef (line 695) | private async tryResolveVirtualRef(
method resolveVirtualRef (line 749) | public async resolveVirtualRef(
method resolveTopLevelRef (line 789) | public async resolveTopLevelRef(ref: Ref): Promise<[JSONSchema, Locati...
function addTypesInSchema (line 797) | async function addTypesInSchema(
function removeExtension (line 1373) | function removeExtension(fn: string): string {
function nameFromURI (line 1388) | function nameFromURI(uri: URI): string | undefined {
function refsInSchemaForURI (line 1412) | async function refsInSchemaForURI(
class InputJSONSchemaStore (line 1451) | class InputJSONSchemaStore extends JSONSchemaStore {
method constructor (line 1452) | public constructor(
method fetch (line 1459) | public async fetch(address: string): Promise<JSONSchema | undefined> {
type JSONSchemaSourceData (line 1476) | interface JSONSchemaSourceData {
class JSONSchemaInput (line 1483) | class JSONSchemaInput implements Input<JSONSchemaSourceData> {
method constructor (line 1498) | public constructor(
method needIR (line 1514) | public get needIR(): boolean {
method addTopLevel (line 1518) | public addTopLevel(name: string, ref: Ref): void {
method addTypes (line 1522) | public async addTypes(
method addTypesSync (line 1596) | public addTypesSync(): void {
method addSource (line 1600) | public async addSource(schemaSource: JSONSchemaSourceData): Promise<vo...
method addSourceSync (line 1604) | public addSourceSync(schemaSource: JSONSchemaSourceData): void {
method singleStringSchemaSource (line 1655) | public singleStringSchemaSource(): string | undefined {
FILE: packages/quicktype-core/src/input/JSONSchemaStore.ts
type JSONSchema (line 3) | type JSONSchema = StringMap | boolean;
method add (line 8) | private add(address: string, schema: JSONSchema): void {
method get (line 19) | public async get(
FILE: packages/quicktype-core/src/input/PathElement.ts
type PathElementKind (line 1) | enum PathElementKind {
type PathElement (line 8) | type PathElement =
FILE: packages/quicktype-core/src/input/PostmanCollection.ts
function isValidJSON (line 6) | function isValidJSON(s: string): boolean {
function sourcesFromPostmanCollection (line 15) | function sourcesFromPostmanCollection(
FILE: packages/quicktype-core/src/input/io/NodeIO.ts
type HttpHeaders (line 15) | interface HttpHeaders {
function parseHeaders (line 19) | function parseHeaders(httpHeaders?: string[]): HttpHeaders {
function readableFromFileOrURL (line 41) | async function readableFromFileOrURL(
function readFromFileOrURL (line 81) | async function readFromFileOrURL(
FILE: packages/quicktype-core/src/input/io/get-stream/buffer-stream.ts
type BufferedPassThrough (line 6) | interface BufferedPassThrough extends PassThrough {
function bufferStream (line 14) | function bufferStream(opts: Options) {
FILE: packages/quicktype-core/src/input/io/get-stream/index.ts
type Options (line 6) | interface Options {
function getStream (line 12) | async function getStream(inputStream: Readable, opts: Options = {}) {
function buffer (line 57) | function buffer(stream: Readable, opts: Options = {}) {
function array (line 62) | function array(stream: Readable, opts: Options = {}) {
FILE: packages/quicktype-core/src/language/All.ts
function languageNamed (line 67) | function languageNamed<Name extends LanguageName>(
function isLanguageName (line 81) | function isLanguageName(maybeName: string): maybeName is LanguageName {
function isLanguageDisplayName (line 93) | function isLanguageDisplayName(
FILE: packages/quicktype-core/src/language/CJSON/CJSONRenderer.ts
class CJSONRenderer (line 59) | class CJSONRenderer extends ConvenienceRenderer {
method constructor (line 84) | public constructor(
method forbiddenNamesForGlobalNamespace (line 114) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForEnumCases (line 122) | protected forbiddenForEnumCases(
method forbiddenForUnionMembers (line 133) | protected forbiddenForUnionMembers(
method forbiddenForObjectProperties (line 144) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 155) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 163) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 171) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 179) | protected makeEnumCaseNamer(): Namer {
method proposeUnionMemberName (line 194) | protected proposeUnionMemberName(
method emitTypedefAlias (line 220) | protected emitTypedefAlias(fieldType: Type, fieldName: Name): void {
method emitSourceStructure (line 237) | protected emitSourceStructure(proposedFilename: string): void {
method emitSingleSourceStructure (line 250) | protected emitSingleSourceStructure(proposedFilename: string): void {
method emitMultiSourceStructure (line 343) | protected emitMultiSourceStructure(): void {
method emitEnum (line 371) | protected emitEnum(enumType: EnumType): void {
method emitEnumTypedef (line 398) | protected emitEnumTypedef(enumType: EnumType): void {
method emitEnumPrototypes (line 445) | protected emitEnumPrototypes(enumType: EnumType): void {
method emitEnumFunctions (line 471) | protected emitEnumFunctions(enumType: EnumType): void {
method emitUnion (line 548) | protected emitUnion(unionType: UnionType): void {
method emitUnionTypedef (line 575) | protected emitUnionTypedef(unionType: UnionType): void {
method emitUnionPrototypes (line 618) | protected emitUnionPrototypes(unionType: UnionType): void {
method emitUnionFunctions (line 649) | protected emitUnionFunctions(unionType: UnionType): void {
method emitClass (line 1997) | protected emitClass(classType: ClassType): void {
method emitClassTypedef (line 2024) | protected emitClassTypedef(classType: ClassType): void {
method emitClassPrototypes (line 2067) | protected emitClassPrototypes(classType: ClassType): void {
method emitClassFunctions (line 2116) | protected emitClassFunctions(classType: ClassType): void {
method emitTopLevel (line 4613) | protected emitTopLevel(
method emitTopLevelTypedef (line 4646) | protected emitTopLevelTypedef(type: Type, className: Name): void {
method emitTopLevelPrototypes (line 4670) | protected emitTopLevelPrototypes(_type: Type, className: Name): void {
method emitTopLevelFunctions (line 4718) | protected emitTopLevelFunctions(type: Type, className: Name): void {
method quicktypeTypeToCJSON (line 5356) | protected quicktypeTypeToCJSON(
method startFile (line 5559) | protected startFile(proposedFilename: Sourcelike): void {
method finishFile (line 5640) | protected finishFile(): void {
method needsTypeDeclarationBeforeUse (line 5673) | protected get needsTypeDeclarationBeforeUse(): boolean {
method canBeForwardDeclared (line 5681) | protected canBeForwardDeclared(type: Type): boolean {
method withConst (line 5689) | protected withConst(s: Sourcelike): Sourcelike {
method emitIncludeLine (line 5698) | protected emitIncludeLine(name: Sourcelike, global = false): void {
method emitDescriptionBlock (line 5711) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 5727) | protected emitBlock(
method emitIncludes (line 5763) | protected emitIncludes(
method updateIncludes (line 5800) | protected updateIncludes(
method generatedTypes (line 5863) | protected generatedTypes(isClassMember: boolean, type: Type): TypeReco...
FILE: packages/quicktype-core/src/language/CJSON/language.ts
class CJSONTargetLanguage (line 122) | class CJSONTargetLanguage extends TargetLanguage<
method constructor (line 125) | public constructor() {
method getOptions (line 133) | public getOptions(): typeof cJSONOptions {
method supportsUnionsWithBothNumberTypes (line 141) | public get supportsUnionsWithBothNumberTypes(): boolean {
method supportsOptionalClassProperties (line 149) | public get supportsOptionalClassProperties(): boolean {
method makeRenderer (line 159) | protected makeRenderer<Lang extends LanguageName = "cjson">(
FILE: packages/quicktype-core/src/language/CJSON/utils.ts
type GlobalNames (line 16) | enum GlobalNames {
type IncludeKind (line 28) | enum IncludeKind {
type IncludeRecord (line 34) | interface IncludeRecord {
type TypeRecord (line 40) | interface TypeRecord {
type IncludeMap (line 49) | type IncludeMap = Map<string, IncludeRecord>;
type TypeCJSON (line 52) | interface TypeCJSON {
FILE: packages/quicktype-core/src/language/CPlusPlus/CPlusPlusRenderer.ts
class CPlusPlusRenderer (line 83) | class CPlusPlusRenderer extends ConvenienceRenderer {
method constructor (line 131) | public constructor(
method isUnion (line 188) | private isUnion(t: Type | UnionType): t is UnionType {
method isOptionalAsValuePossible (line 195) | private isOptionalAsValuePossible(t: Type): boolean {
method isImplicitCycleBreaker (line 257) | public isImplicitCycleBreaker(t: Type): boolean {
method optionalTypeStack (line 263) | private optionalTypeStack(): string {
method optionalFactoryStack (line 268) | private optionalFactoryStack(): string {
method optionalTypeHeap (line 273) | private optionalTypeHeap(): string {
method optionalFactoryHeap (line 278) | private optionalFactoryHeap(): string {
method optionalType (line 285) | private optionalType(t: Type): string {
method optionalTypeLabel (line 295) | private optionalTypeLabel(t: Type): string {
method getConstraintMembers (line 303) | protected getConstraintMembers(): ConstraintMember[] {
method lookupGlobalName (line 351) | protected lookupGlobalName(type: GlobalNames): string {
method lookupMemberName (line 355) | protected lookupMemberName(type: MemberNames): string {
method addGlobalName (line 359) | protected addGlobalName(type: GlobalNames): void {
method addMemberName (line 365) | protected addMemberName(type: MemberNames): void {
method setupGlobalNames (line 372) | protected setupGlobalNames(): void {
method forbiddenNamesForGlobalNamespace (line 382) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 386) | protected forbiddenForObjectProperties(
method forbiddenForEnumCases (line 393) | protected forbiddenForEnumCases(
method makeNamedTypeNamer (line 400) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 404) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 408) | protected makeUnionMemberNamer(): null {
method makeEnumCaseNamer (line 412) | protected makeEnumCaseNamer(): Namer {
method makeNamesForPropertyGetterAndSetter (line 419) | protected makeNamesForPropertyGetterAndSetter(
method makePropertyDependencyNames (line 444) | protected makePropertyDependencyNames(
method withConst (line 462) | protected withConst(s: Sourcelike): Sourcelike {
method emitInclude (line 470) | protected emitInclude(global: boolean, name: Sourcelike): void {
method startFile (line 479) | protected startFile(basename: Sourcelike, includeHelper = true): void {
method finishFile (line 575) | protected finishFile(): void {
method needsTypeDeclarationBeforeUse (line 580) | protected get needsTypeDeclarationBeforeUse(): boolean {
method canBeForwardDeclared (line 584) | protected canBeForwardDeclared(t: Type): boolean {
method emitDescriptionBlock (line 589) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 597) | protected emitBlock(
method emitNamespaces (line 619) | protected emitNamespaces(
method cppTypeInOptional (line 637) | protected cppTypeInOptional(
method variantType (line 677) | protected variantType(u: UnionType, inJsonNamespace: boolean): Sourcel...
method ourQualifier (line 701) | protected ourQualifier(inJsonNamespace: boolean): Sourcelike {
method jsonQualifier (line 707) | protected jsonQualifier(inJsonNamespace: boolean): Sourcelike {
method variantIndirection (line 711) | protected variantIndirection(
method cppType (line 720) | protected cppType(
method generatedTypes (line 849) | protected generatedTypes(
method constraintMember (line 920) | protected constraintMember(jsonName: string): string {
method emitMember (line 924) | protected emitMember(cppType: Sourcelike, name: Sourcelike): void {
method emitClassMembers (line 928) | protected emitClassMembers(
method generateClassConstraints (line 1097) | protected generateClassConstraints(
method emitClass (line 1159) | protected emitClass(c: ClassType, className: Name): void {
method emitTopLevelHeaders (line 1197) | protected emitTopLevelHeaders(t: Type, className: Name): void {
method emitClassHeaders (line 1225) | protected emitClassHeaders(className: Name): void {
method emitTopLevelFunction (line 1243) | protected emitTopLevelFunction(t: Type, className: Name): void {
method emitClassFunctions (line 1349) | protected emitClassFunctions(c: ClassType, className: Name): void {
method emitEnum (line 1632) | protected emitEnum(e: EnumType, enumName: Name): void {
method emitUnionTypedefs (line 1659) | protected emitUnionTypedefs(u: UnionType, unionName: Name): void {
method emitUnionHeaders (line 1669) | protected emitUnionHeaders(u: UnionType): void {
method emitUnionFunctions (line 1709) | protected emitUnionFunctions(u: UnionType): void {
method emitEnumHeaders (line 1875) | protected emitEnumHeaders(enumName: Name): void {
method isLargeEnum (line 1893) | private isLargeEnum(e: EnumType): boolean {
method emitEnumFunctions (line 1899) | protected emitEnumFunctions(e: EnumType, enumName: Name): void {
method emitTopLevelTypedef (line 2037) | protected emitTopLevelTypedef(t: Type, name: Name): void {
method emitAllUnionFunctions (line 2057) | protected emitAllUnionFunctions(): void {
method emitAllUnionHeaders (line 2077) | protected emitAllUnionHeaders(): void {
method emitOptionalHelpers (line 2097) | protected emitOptionalHelpers(): void {
method emitDeclaration (line 2153) | protected emitDeclaration(decl: Declaration): void {
method emitGetterSetter (line 2177) | protected emitGetterSetter(
method emitNumericCheckConstraints (line 2205) | protected emitNumericCheckConstraints(
method emitConstraintClasses (line 2312) | protected emitConstraintClasses(): void {
method emitHelperFunctions (line 2591) | protected emitHelperFunctions(): void {
method emitExtraIncludes (line 2731) | protected emitExtraIncludes(): void {
method emitHelper (line 2762) | protected emitHelper(): void {
method emitTypes (line 2783) | protected emitTypes(): void {
method gatherUserNamespaceForwardDecls (line 2801) | protected gatherUserNamespaceForwardDecls(): Sourcelike[] {
method gatherNlohmannNamespaceForwardDecls (line 2816) | protected gatherNlohmannNamespaceForwardDecls(): Sourcelike[] {
method emitUserNamespaceImpls (line 2830) | protected emitUserNamespaceImpls(): void {
method emitNlohmannNamespaceImpls (line 2844) | protected emitNlohmannNamespaceImpls(): void {
method emitGenerators (line 2856) | protected emitGenerators(): void {
method emitSingleSourceStructure (line 2915) | protected emitSingleSourceStructure(proposedFilename: string): void {
method updateIncludes (line 2943) | protected updateIncludes(
method emitIncludes (line 3010) | protected emitIncludes(
method emitDefinition (line 3095) | protected emitDefinition(
method emitMultiSourceStructure (line 3122) | protected emitMultiSourceStructure(proposedFilename: string): void {
method emitSourceStructure (line 3178) | protected emitSourceStructure(proposedFilename: string): void {
method isConversionRequired (line 3224) | protected isConversionRequired(t: Type): boolean {
method constructor (line 3253) | public constructor() {
method wrapEncodingChange (line 3266) | public wrapEncodingChange(
method emitHelperFunctions (line 3275) | public emitHelperFunctions(): void {
method constructor (line 3281) | public constructor(public superThis: CPlusPlusRenderer) {
method wrapEncodingChange (line 3294) | public wrapEncodingChange(
method emitHelperFunctions (line 3321) | public emitHelperFunctions(): void {
FILE: packages/quicktype-core/src/language/CPlusPlus/language.ts
class CPlusPlusTargetLanguage (line 121) | class CPlusPlusTargetLanguage extends TargetLanguage<
method constructor (line 124) | public constructor() {
method getOptions (line 128) | public getOptions(): typeof cPlusPlusOptions {
method supportsUnionsWithBothNumberTypes (line 132) | public get supportsUnionsWithBothNumberTypes(): boolean {
method supportsOptionalClassProperties (line 136) | public get supportsOptionalClassProperties(): boolean {
method makeRenderer (line 140) | protected makeRenderer<Lang extends LanguageName = "c++">(
FILE: packages/quicktype-core/src/language/CPlusPlus/utils.ts
function constraintsForType (line 16) | function constraintsForType(t: Type):
type IncludeKind (line 49) | enum IncludeKind {
type GlobalNames (line 55) | enum GlobalNames {
type MemberNames (line 67) | enum MemberNames {
type ConstraintMember (line 91) | interface ConstraintMember {
type IncludeRecord (line 99) | interface IncludeRecord {
type TypeRecord (line 104) | interface TypeRecord {
type IncludeMap (line 116) | type IncludeMap = Map<string, IncludeRecord>;
type TypeContext (line 118) | interface TypeContext {
type StringType (line 124) | interface StringType {
function addQualifier (line 140) | function addQualifier(
class WrappingCode (line 151) | class WrappingCode {
method constructor (line 152) | public constructor(
method wrap (line 157) | public wrap(qualifier: Sourcelike, inner: Sourcelike): Sourcelike {
class BaseString (line 162) | class BaseString {
method constructor (line 179) | public constructor(
method getType (line 199) | public getType(): string {
method getConstType (line 203) | public getConstType(): string {
method getSMatch (line 207) | public getSMatch(): string {
method getRegex (line 211) | public getRegex(): string {
method createStringLiteral (line 215) | public createStringLiteral(inner: Sourcelike): Sourcelike {
method wrapToString (line 219) | public wrapToString(inner: Sourcelike): Sourcelike {
FILE: packages/quicktype-core/src/language/CSharp/CSharpRenderer.ts
class CSharpRenderer (line 43) | class CSharpRenderer extends ConvenienceRenderer {
method constructor (line 44) | public constructor(
method forbiddenNamesForGlobalNamespace (line 52) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 65) | protected forbiddenForObjectProperties(
method forbiddenForUnionMembers (line 84) | protected forbiddenForUnionMembers(
method makeNamedTypeNamer (line 91) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 95) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 101) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 105) | protected makeEnumCaseNamer(): Namer {
method unionNeedsName (line 109) | protected unionNeedsName(u: UnionType): boolean {
method namedTypeToNameForTopLevel (line 113) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method emitBlock (line 120) | protected emitBlock(f: () => void, semicolon = false): void {
method doubleType (line 126) | protected get doubleType(): string {
method csType (line 130) | protected csType(
method nullableCSType (line 184) | protected nullableCSType(
method baseclassForType (line 198) | protected baseclassForType(_t: Type): Sourcelike | undefined {
method emitType (line 202) | protected emitType(
method attributesForProperty (line 231) | protected attributesForProperty(
method propertyDefinition (line 240) | protected propertyDefinition(
method emitDescriptionBlock (line 258) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method blankLinesBetweenAttributes (line 271) | protected blankLinesBetweenAttributes(): boolean {
method emitClassDefinition (line 275) | private emitClassDefinition(c: ClassType, className: Name): void {
method emitUnionDefinition (line 352) | private emitUnionDefinition(u: UnionType, unionName: Name): void {
method emitEnumDefinition (line 415) | private emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitExpressionMember (line 425) | protected emitExpressionMember(
method emitTypeSwitch (line 446) | protected emitTypeSwitch<T extends Sourcelike>(
method emitUsing (line 469) | protected emitUsing(ns: Sourcelike): void {
method emitUsings (line 473) | protected emitUsings(): void {
method emitRequiredHelpers (line 479) | protected emitRequiredHelpers(): void {
method emitTypesAndSupport (line 483) | private emitTypesAndSupport(): void {
method emitDefaultLeadingComments (line 497) | protected emitDefaultLeadingComments(): void {
method emitDefaultFollowingComments (line 501) | protected emitDefaultFollowingComments(): void {
method needNamespace (line 505) | protected needNamespace(): boolean {
method emitSourceStructure (line 509) | protected emitSourceStructure(): void {
method emitDependencyUsings (line 531) | protected emitDependencyUsings(): void {
FILE: packages/quicktype-core/src/language/CSharp/NewtonSoftCSharpRenderer.ts
class NewtonsoftCSharpRenderer (line 56) | class NewtonsoftCSharpRenderer extends CSharpRenderer {
method constructor (line 65) | public constructor(
method forbiddenNamesForGlobalNamespace (line 76) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 101) | protected forbiddenForObjectProperties(
method makeNameForTransformation (line 110) | protected makeNameForTransformation(
method makeNamedTypeDependencyNames (line 137) | protected makeNamedTypeDependencyNames(
method emitUsings (line 152) | protected emitUsings(): void {
method baseclassForType (line 189) | protected baseclassForType(_t: Type): Sourcelike | undefined {
method emitDefaultLeadingComments (line 193) | protected emitDefaultLeadingComments(): void {
method converterForType (line 228) | private converterForType(t: Type): Name | undefined {
method attributesForProperty (line 246) | protected attributesForProperty(
method blankLinesBetweenAttributes (line 309) | protected blankLinesBetweenAttributes(): boolean {
method topLevelResultType (line 314) | private topLevelResultType(t: Type): Sourcelike {
method emitFromJsonForTopLevel (line 320) | private emitFromJsonForTopLevel(t: Type, name: Name): void {
method emitDecoderSwitch (line 357) | private emitDecoderSwitch(emitBody: () => void): void {
method emitTokenCase (line 362) | private emitTokenCase(tokenType: string): void {
method emitThrow (line 366) | private emitThrow(message: Sourcelike): void {
method deserializeTypeCode (line 370) | private deserializeTypeCode(typeName: Sourcelike): Sourcelike {
method serializeValueCode (line 374) | private serializeValueCode(value: Sourcelike): Sourcelike {
method emitSerializeClass (line 378) | private emitSerializeClass(): void {
method emitCanConvert (line 412) | private emitCanConvert(expr: Sourcelike): void {
method emitReadJson (line 419) | private emitReadJson(emitBody: () => void): void {
method emitWriteJson (line 426) | private emitWriteJson(variable: string, emitBody: () => void): void {
method converterObject (line 435) | private converterObject(converterName: Name): Sourcelike {
method emitConverterClass (line 440) | private emitConverterClass(): void {
method emitDecoderTransformerCase (line 487) | private emitDecoderTransformerCase(
method emitConsume (line 513) | private emitConsume(
method emitDecodeTransformer (line 527) | private emitDecodeTransformer(
method stringCaseValue (line 676) | private stringCaseValue(t: Type, stringCase: string): Sourcelike {
method emitTransformer (line 691) | private emitTransformer(
method emitTransformation (line 1057) | private emitTransformation(converterName: Name, t: Type): void {
method emitRequiredHelpers (line 1145) | protected emitRequiredHelpers(): void {
method needNamespace (line 1166) | protected needNamespace(): boolean {
FILE: packages/quicktype-core/src/language/CSharp/SystemTextJsonCSharpRenderer.ts
class SystemTextJsonCSharpRenderer (line 55) | class SystemTextJsonCSharpRenderer extends CSharpRenderer {
method constructor (line 64) | public constructor(
method forbiddenNamesForGlobalNamespace (line 77) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 103) | protected forbiddenForObjectProperties(
method makeNameForTransformation (line 112) | protected makeNameForTransformation(
method makeNamedTypeDependencyNames (line 139) | protected makeNamedTypeDependencyNames(
method emitUsings (line 154) | protected emitUsings(): void {
method baseclassForType (line 188) | protected baseclassForType(_t: Type): Sourcelike | undefined {
method emitDefaultFollowingComments (line 192) | protected emitDefaultFollowingComments(): void {
method emitDefaultLeadingComments (line 200) | protected emitDefaultLeadingComments(): void {
method converterForType (line 241) | private converterForType(t: Type): Name | undefined {
method attributesForProperty (line 259) | protected attributesForProperty(
method blankLinesBetweenAttributes (line 308) | protected blankLinesBetweenAttributes(): boolean {
method topLevelResultType (line 313) | private topLevelResultType(t: Type): Sourcelike {
method emitFromJsonForTopLevel (line 319) | private emitFromJsonForTopLevel(t: Type, name: Name): void {
method emitDecoderSwitch (line 356) | private emitDecoderSwitch(emitBody: () => void): void {
method emitTokenCase (line 361) | private emitTokenCase(tokenType: string): void {
method emitThrow (line 365) | private emitThrow(message: Sourcelike): void {
method deserializeTypeCode (line 369) | private deserializeTypeCode(typeName: Sourcelike): Sourcelike {
method serializeValueCode (line 390) | private serializeValueCode(value: Sourcelike): Sourcelike {
method emitSerializeClass (line 398) | private emitSerializeClass(): void {
method emitCanConvert (line 432) | private emitCanConvert(expr: Sourcelike): void {
method emitReadJson (line 439) | private emitReadJson(emitBody: () => void, csType: Sourcelike): void {
method emitWriteJson (line 448) | private emitWriteJson(
method converterObject (line 463) | private converterObject(converterName: Name): Sourcelike {
method emitConverterClass (line 468) | private emitConverterClass(): void {
method emitDecoderTransformerCase (line 513) | private emitDecoderTransformerCase(
method emitConsume (line 539) | private emitConsume(
method emitDecodeTransformer (line 553) | private emitDecodeTransformer(
method stringCaseValue (line 702) | private stringCaseValue(t: Type, stringCase: string): Sourcelike {
method emitTransformer (line 717) | private emitTransformer(
method emitTransformation (line 1091) | private emitTransformation(converterName: Name, t: Type): void {
method emitRequiredHelpers (line 1182) | protected emitRequiredHelpers(): void {
method needNamespace (line 1313) | protected needNamespace(): boolean {
FILE: packages/quicktype-core/src/language/CSharp/language.ts
type OutputFeatures (line 23) | interface OutputFeatures {
type CSharpTypeForAny (line 28) | type CSharpTypeForAny = "object" | "dynamic";
class CSharpTargetLanguage (line 152) | class CSharpTargetLanguage extends TargetLanguage<
method constructor (line 155) | public constructor() {
method getOptions (line 159) | public getOptions(): typeof cSharpOptions {
method stringTypeMapping (line 163) | public get stringTypeMapping(): StringTypeMapping {
method supportsUnionsWithBothNumberTypes (line 176) | public get supportsUnionsWithBothNumberTypes(): boolean {
method supportsOptionalClassProperties (line 180) | public get supportsOptionalClassProperties(): boolean {
method needsTransformerForType (line 184) | public needsTransformerForType(t: Type): boolean {
method makeRenderer (line 189) | protected makeRenderer<Lang extends LanguageName = "csharp">(
FILE: packages/quicktype-core/src/language/CSharp/utils.ts
type AccessModifier (line 29) | enum AccessModifier {
function noFollow (line 35) | function noFollow(t: Type): Type {
function needTransformerForType (line 39) | function needTransformerForType(
function alwaysApplyTransformation (line 69) | function alwaysApplyTransformation(xf: Transformation): boolean {
function csTypeForTransformedStringType (line 79) | function csTypeForTransformedStringType(t: PrimitiveType): Sourcelike {
function isStartCharacter (line 100) | function isStartCharacter(utf16Unit: number): boolean {
function isPartCharacter (line 108) | function isPartCharacter(utf16Unit: number): boolean {
function csNameStyle (line 119) | function csNameStyle(original: string): string {
function csNameStyleKeep (line 133) | function csNameStyleKeep(original: string): string {
function isValueType (line 156) | function isValueType(t: Type): boolean {
FILE: packages/quicktype-core/src/language/Crystal/CrystalRenderer.ts
class CrystalRenderer (line 32) | class CrystalRenderer extends ConvenienceRenderer {
method constructor (line 33) | public constructor(
method makeNamedTypeNamer (line 40) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 44) | protected namerForObjectProperty(): Namer | null {
method makeUnionMemberNamer (line 48) | protected makeUnionMemberNamer(): Namer | null {
method makeEnumCaseNamer (line 52) | protected makeEnumCaseNamer(): Namer | null {
method forbiddenNamesForGlobalNamespace (line 56) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 60) | protected forbiddenForObjectProperties(
method forbiddenForUnionMembers (line 67) | protected forbiddenForUnionMembers(
method forbiddenForEnumCases (line 74) | protected forbiddenForEnumCases(
method commentLineStart (line 81) | protected get commentLineStart(): string {
method nullableCrystalType (line 85) | private nullableCrystalType(t: Type, withIssues: boolean): Sourcelike {
method isImplicitCycleBreaker (line 89) | protected isImplicitCycleBreaker(t: Type): boolean {
method crystalType (line 94) | private crystalType(t: Type, withIssues = false): Sourcelike {
method breakCycle (line 136) | private breakCycle(t: Type, withIssues: boolean): Sourcelike {
method emitRenameAttribute (line 140) | private emitRenameAttribute(propName: Name, jsonName: string): void {
method emitStructDefinition (line 148) | protected emitStructDefinition(c: ClassType, className: Name): void {
method emitBlock (line 169) | protected emitBlock(line: Sourcelike, f: () => void): void {
method emitEnum (line 179) | protected emitEnum(line: Sourcelike, f: () => void): void {
method emitUnion (line 185) | protected emitUnion(u: UnionType, unionName: Name): void {
method emitTopLevelAlias (line 212) | protected emitTopLevelAlias(t: Type, name: Name): void {
method emitLeadingComments (line 216) | protected emitLeadingComments(): void {
method emitSourceStructure (line 223) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Crystal/language.ts
class CrystalTargetLanguage (line 12) | class CrystalTargetLanguage extends TargetLanguage<
method constructor (line 15) | public constructor() {
method makeRenderer (line 19) | protected makeRenderer(renderContext: RenderContext): CrystalRenderer {
method defaultIndentation (line 23) | protected get defaultIndentation(): string {
method getOptions (line 27) | public getOptions(): {} {
FILE: packages/quicktype-core/src/language/Crystal/utils.ts
function isAsciiLetterOrUnderscoreOrDigit (line 17) | function isAsciiLetterOrUnderscoreOrDigit(codePoint: number): boolean {
function isAsciiLetterOrUnderscore (line 25) | function isAsciiLetterOrUnderscore(codePoint: number): boolean {
function crystalStyle (line 35) | function crystalStyle(original: string, isSnakeCase: boolean): string {
function standardUnicodeCrystalEscape (line 62) | function standardUnicodeCrystalEscape(codePoint: number): string {
FILE: packages/quicktype-core/src/language/Dart/DartRenderer.ts
type TopLevelDependents (line 38) | interface TopLevelDependents {
class DartRenderer (line 43) | class DartRenderer extends ConvenienceRenderer {
method constructor (line 59) | public constructor(
method forbiddenNamesForGlobalNamespace (line 67) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 71) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 78) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 82) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 86) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 90) | protected makeEnumCaseNamer(): Namer {
method unionNeedsName (line 94) | protected unionNeedsName(u: UnionType): boolean {
method namedTypeToNameForTopLevel (line 98) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method toJson (line 105) | protected get toJson(): string {
method fromJson (line 109) | protected get fromJson(): string {
method makeTopLevelDependencyNames (line 113) | protected makeTopLevelDependencyNames(
method makeNamesForPropertyGetterAndSetter (line 131) | protected makeNamesForPropertyGetterAndSetter(
method makePropertyDependencyNames (line 151) | protected makePropertyDependencyNames(
method makeNamedTypeDependencyNames (line 169) | protected makeNamedTypeDependencyNames(
method emitFileHeader (line 183) | protected emitFileHeader(): void {
method emitDescriptionBlock (line 252) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 256) | protected emitBlock(line: Sourcelike, f: () => void): void {
method dartType (line 262) | protected dartType(
method mapList (line 318) | protected mapList(
method mapMap (line 353) | protected mapMap(
method mapClass (line 386) | protected mapClass(
method fromDynamicExpression (line 423) | protected fromDynamicExpression(
method toDynamicExpression (line 518) | protected toDynamicExpression(
method _emitEmptyConstructor (line 631) | private _emitEmptyConstructor(className: Name): void {
method _emitConstructor (line 635) | private _emitConstructor(c: ClassType, className: Name): void {
method _emitVariables (line 650) | private _emitVariables(c: ClassType): void {
method _emitCopyConstructor (line 677) | private _emitCopyConstructor(c: ClassType, className: Name): void {
method _emitStringJsonEncoderDecoder (line 702) | private _emitStringJsonEncoderDecoder(className: Name): void {
method _emitMapEncoderDecoder (line 728) | private _emitMapEncoderDecoder(c: ClassType, className: Name): void {
method emitClassDefinition (line 778) | protected emitClassDefinition(c: ClassType, className: Name): void {
method emitFreezedClassDefinition (line 835) | protected emitFreezedClassDefinition(c: ClassType, className: Name): v...
method emitEnumDefinition (line 899) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitEnumValues (line 941) | protected emitEnumValues(): void {
method _emitTopLvlEncoderDecoder (line 956) | private _emitTopLvlEncoderDecoder(): void {
method emitSourceStructure (line 989) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Dart/language.ts
class DartTargetLanguage (line 79) | class DartTargetLanguage extends TargetLanguage<
method constructor (line 82) | public constructor() {
method getOptions (line 86) | public getOptions(): typeof dartOptions {
method supportsUnionsWithBothNumberTypes (line 90) | public get supportsUnionsWithBothNumberTypes(): boolean {
method stringTypeMapping (line 94) | public get stringTypeMapping(): StringTypeMapping {
method makeRenderer (line 102) | protected makeRenderer<Lang extends LanguageName = "dart">(
FILE: packages/quicktype-core/src/language/Dart/utils.ts
function isStartCharacter (line 36) | function isStartCharacter(codePoint: number): boolean {
function isPartCharacter (line 41) | function isPartCharacter(codePoint: number): boolean {
function dartNameStyle (line 54) | function dartNameStyle(
FILE: packages/quicktype-core/src/language/Elixir/ElixirRenderer.ts
class ElixirRenderer (line 32) | class ElixirRenderer extends ConvenienceRenderer {
method constructor (line 33) | public constructor(
method commentLineStart (line 41) | protected get commentLineStart(): string {
method needsTypeDeclarationBeforeUse (line 45) | protected get needsTypeDeclarationBeforeUse(): boolean {
method canBeForwardDeclared (line 49) | protected canBeForwardDeclared(t: Type): boolean {
method forbiddenNamesForGlobalNamespace (line 53) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 60) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 70) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 74) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 78) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 82) | protected makeEnumCaseNamer(): Namer {
method nameForNamedTypeWithNamespace (line 86) | private nameForNamedTypeWithNamespace(t: Type): Sourcelike {
method nameWithNamespace (line 94) | private nameWithNamespace(n: Name): Sourcelike {
method elixirType (line 102) | private elixirType(t: Type, isOptional = false): Sourcelike {
method patternMatchClauseDecode (line 150) | private patternMatchClauseDecode(
method patternMatchClauseEncode (line 243) | private patternMatchClauseEncode(
method sortAndFilterPatternMatchTypes (line 336) | private sortAndFilterPatternMatchTypes(types: Type[]): Type[] {
method emitPatternMatches (line 369) | protected emitPatternMatches(
method nameOfTransformFunction (line 442) | private nameOfTransformFunction(
method fromDynamic (line 479) | private fromDynamic(
method toDynamic (line 632) | private toDynamic(t: Type, e: Sourcelike, optional = false): Sourcelike {
method emitBlock (line 769) | protected emitBlock(source: Sourcelike, emit: () => void): void {
method emitDescriptionBlock (line 775) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitModule (line 783) | protected emitModule(c: ClassType, moduleName: Name): void {
method isValidAtom (line 1016) | private isValidAtom(str: string): boolean {
method emitEnum (line 1049) | protected emitEnum(e: EnumType, enumName: Name): void {
method emitUnion (line 1111) | protected emitUnion(_u: UnionType, _unionName: Name): void {
method emitSourceStructure (line 1115) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Elixir/language.ts
class ElixirTargetLanguage (line 28) | class ElixirTargetLanguage extends TargetLanguage<
method constructor (line 31) | public constructor() {
method getOptions (line 35) | public getOptions(): typeof elixirOptions {
method supportsOptionalClassProperties (line 39) | public get supportsOptionalClassProperties(): boolean {
method defaultIndentation (line 43) | protected get defaultIndentation(): string {
method makeRenderer (line 47) | protected makeRenderer<Lang extends LanguageName = "elixir">(
FILE: packages/quicktype-core/src/language/Elixir/utils.ts
function unicodeEscape (line 17) | function unicodeEscape(codePoint: number): string {
function capitalizeFirstLetter (line 21) | function capitalizeFirstLetter(str: string): string {
function escapeDoubleQuotes (line 29) | function escapeDoubleQuotes(str: string): string {
function escapeNewLines (line 33) | function escapeNewLines(str: string): string {
function isPartCharacter (line 39) | function isPartCharacter(utf16Unit: number): boolean {
function simpleNameStyle (line 49) | function simpleNameStyle(original: string, uppercase: boolean): string {
function memberNameStyle (line 67) | function memberNameStyle(original: string): string {
FILE: packages/quicktype-core/src/language/Elm/ElmRenderer.ts
type TopLevelDependent (line 42) | interface TopLevelDependent {
type NamedTypeDependent (line 47) | interface NamedTypeDependent {
class ElmRenderer (line 52) | class ElmRenderer extends ConvenienceRenderer {
method constructor (line 57) | public constructor(
method forbiddenNamesForGlobalNamespace (line 65) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method makeTopLevelDependencyNames (line 69) | protected makeTopLevelDependencyNames(
method makeNamedTypeNamer (line 95) | protected makeNamedTypeNamer(): Namer {
method makeNamedTypeDependencyNames (line 99) | protected makeNamedTypeDependencyNames(
method namerForObjectProperty (line 117) | protected namerForObjectProperty(): Namer {
method forbiddenForObjectProperties (line 121) | protected forbiddenForObjectProperties(
method makeUnionMemberNamer (line 128) | protected makeUnionMemberNamer(): Namer {
method unionMembersInGlobalNamespace (line 132) | protected get unionMembersInGlobalNamespace(): boolean {
method makeEnumCaseNamer (line 136) | protected makeEnumCaseNamer(): Namer {
method enumCasesInGlobalNamespace (line 140) | protected get enumCasesInGlobalNamespace(): boolean {
method proposeUnionMemberName (line 144) | protected proposeUnionMemberName(
method commentLineStart (line 159) | protected get commentLineStart(): string {
method emitDescriptionBlock (line 163) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method arrayType (line 177) | private get arrayType(): string {
method elmType (line 181) | private elmType(t: Type, noOptional = false): MultiWord {
method elmProperty (line 218) | private elmProperty(p: ClassProperty): Sourcelike {
method decoderNameForNamedType (line 230) | private decoderNameForNamedType(t: Type): Name {
method decoderNameForType (line 235) | private decoderNameForType(t: Type, noOptional = false): MultiWord {
method decoderNameForProperty (line 275) | private decoderNameForProperty(p: ClassProperty): MultiWord {
method encoderNameForNamedType (line 287) | private encoderNameForNamedType(t: Type): Name {
method encoderNameForType (line 292) | private encoderNameForType(t: Type, noOptional = false): MultiWord {
method encoderNameForProperty (line 332) | private encoderNameForProperty(p: ClassProperty): MultiWord {
method emitTopLevelDefinition (line 344) | private emitTopLevelDefinition(t: Type, topLevelName: Name): void {
method emitClassDefinition (line 353) | private emitClassDefinition(c: ClassType, className: Name): void {
method emitEnumDefinition (line 394) | private emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitUnionDefinition (line 407) | private emitUnionDefinition(u: UnionType, unionName: Name): void {
method emitTopLevelFunctions (line 431) | private emitTopLevelFunctions(t: Type, topLevelName: Name): void {
method emitClassFunctions (line 454) | private emitClassFunctions(c: ClassType, className: Name): void {
method emitEnumFunctions (line 511) | private emitEnumFunctions(e: EnumType, enumName: Name): void {
method emitUnionFunctions (line 557) | private emitUnionFunctions(u: UnionType, unionName: Name): void {
method emitSourceStructure (line 625) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Elm/language.ts
class ElmTargetLanguage (line 39) | class ElmTargetLanguage extends TargetLanguage<
method constructor (line 42) | public constructor() {
method getOptions (line 46) | public getOptions(): typeof elmOptions {
method supportsOptionalClassProperties (line 50) | public get supportsOptionalClassProperties(): boolean {
method supportsUnionsWithBothNumberTypes (line 54) | public get supportsUnionsWithBothNumberTypes(): boolean {
method makeRenderer (line 58) | protected makeRenderer<Lang extends LanguageName = "elm">(
FILE: packages/quicktype-core/src/language/Elm/utils.ts
function elmNameStyle (line 20) | function elmNameStyle(original: string, upper: boolean): string {
type RequiredOrOptional (line 41) | interface RequiredOrOptional {
function requiredOrOptional (line 46) | function requiredOrOptional(p: ClassProperty): RequiredOrOptional {
FILE: packages/quicktype-core/src/language/Golang/GolangRenderer.ts
class GoRenderer (line 36) | class GoRenderer extends ConvenienceRenderer {
method constructor (line 41) | public constructor(
method makeNamedTypeNamer (line 49) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 53) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 57) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 61) | protected makeEnumCaseNamer(): Namer {
method enumCasesInGlobalNamespace (line 65) | protected get enumCasesInGlobalNamespace(): boolean {
method makeTopLevelDependencyNames (line 69) | protected makeTopLevelDependencyNames(
method startFile (line 83) | protected startFile(basename: Sourcelike): void {
method endFile (line 97) | protected endFile(): void {
method emitBlock (line 106) | private emitBlock(line: Sourcelike, f: () => void): void {
method emitFunc (line 112) | private emitFunc(decl: Sourcelike, f: () => void): void {
method emitStruct (line 116) | private emitStruct(name: Name, table: Sourcelike[][]): void {
method nullableGoType (line 120) | private nullableGoType(t: Type, withIssues: boolean): Sourcelike {
method propertyGoType (line 129) | private propertyGoType(cp: ClassProperty): Sourcelike {
method goType (line 142) | private goType(t: Type, withIssues = false): Sourcelike {
method emitTopLevel (line 191) | private emitTopLevel(t: Type, name: Name): void {
method emitClass (line 244) | private emitClass(c: ClassType, className: Name): void {
method emitEnum (line 285) | private emitEnum(e: EnumType, enumName: Name): void {
method emitUnion (line 304) | private emitUnion(u: UnionType, unionName: Name): void {
method emitSingleFileHeaderComments (line 416) | private emitSingleFileHeaderComments(): void {
method emitPackageDefinitons (line 437) | private emitPackageDefinitons(
method emitImports (line 465) | private emitImports(imports: Set<string>): void {
method emitHelperFunctions (line 480) | private emitHelperFunctions(): void {
method emitSourceStructure (line 607) | protected emitSourceStructure(): void {
method collectAllImports (line 646) | private collectAllImports(): Set<string> {
method collectClassImports (line 666) | private collectClassImports(c: ClassType): Set<string> {
method collectUnionImports (line 689) | private collectUnionImports(u: UnionType): Set<string> {
FILE: packages/quicktype-core/src/language/Golang/language.ts
class GoTargetLanguage (line 54) | class GoTargetLanguage extends TargetLanguage<
method constructor (line 57) | public constructor() {
method getOptions (line 61) | public getOptions(): typeof goOptions {
method supportsUnionsWithBothNumberTypes (line 65) | public get supportsUnionsWithBothNumberTypes(): boolean {
method stringTypeMapping (line 69) | public get stringTypeMapping(): StringTypeMapping {
method supportsOptionalClassProperties (line 76) | public get supportsOptionalClassProperties(): boolean {
method makeRenderer (line 80) | protected makeRenderer<Lang extends LanguageName = "go">(
method defaultIndentation (line 91) | protected get defaultIndentation(): string {
FILE: packages/quicktype-core/src/language/Golang/utils.ts
function goNameStyle (line 17) | function goNameStyle(original: string): string {
function isValueType (line 39) | function isValueType(t: Type): boolean {
function canOmitEmpty (line 49) | function canOmitEmpty(
FILE: packages/quicktype-core/src/language/Haskell/HaskellRenderer.ts
class HaskellRenderer (line 32) | class HaskellRenderer extends ConvenienceRenderer {
method constructor (line 33) | public constructor(
method forbiddenNamesForGlobalNamespace (line 41) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method makeNamedTypeNamer (line 45) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 49) | protected namerForObjectProperty(): Namer {
method forbiddenForObjectProperties (line 53) | protected forbiddenForObjectProperties(
method makeUnionMemberNamer (line 60) | protected makeUnionMemberNamer(): Namer {
method unionMembersInGlobalNamespace (line 64) | protected get unionMembersInGlobalNamespace(): boolean {
method makeEnumCaseNamer (line 68) | protected makeEnumCaseNamer(): Namer {
method enumCasesInGlobalNamespace (line 72) | protected get enumCasesInGlobalNamespace(): boolean {
method proposeUnionMemberName (line 76) | protected proposeUnionMemberName(
method commentLineStart (line 91) | protected get commentLineStart(): string {
method emitDescriptionBlock (line 95) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method haskellType (line 109) | private haskellType(t: Type, noOptional = false): MultiWord {
method haskellProperty (line 155) | private haskellProperty(p: ClassProperty): Sourcelike {
method encoderNameForType (line 167) | private encoderNameForType(t: Type): MultiWord {
method emitTopLevelDefinition (line 184) | private emitTopLevelDefinition(t: Type, topLevelName: Name): void {
method emitClassDefinition (line 188) | private emitClassDefinition(c: ClassType, className: Name): void {
method emitEnumDefinition (line 229) | private emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitUnionDefinition (line 243) | private emitUnionDefinition(u: UnionType, unionName: Name): void {
method emitTopLevelFunctions (line 268) | private emitTopLevelFunctions(topLevelName: Name): void {
method classPropertyLength (line 273) | private classPropertyLength(c: ClassType): number {
method emitClassEncoderInstance (line 281) | private emitClassEncoderInstance(c: ClassType, className: Name): void {
method emitClassDecoderInstance (line 319) | private emitClassDecoderInstance(c: ClassType, className: Name): void {
method emitClassFunctions (line 346) | private emitClassFunctions(c: ClassType, className: Name): void {
method emitEnumEncoderInstance (line 352) | private emitEnumEncoderInstance(e: EnumType, enumName: Name): void {
method emitEnumDecoderInstance (line 368) | private emitEnumDecoderInstance(e: EnumType, enumName: Name): void {
method emitEnumFunctions (line 389) | private emitEnumFunctions(e: EnumType, enumName: Name): void {
method emitUnionEncoderInstance (line 395) | private emitUnionEncoderInstance(u: UnionType, unionName: Name): void {
method emitUnionDecoderInstance (line 408) | private emitUnionDecoderInstance(u: UnionType, unionName: Name): void {
method emitUnionFunctions (line 427) | private emitUnionFunctions(u: UnionType, unionName: Name): void {
method emitLanguageExtensions (line 433) | private emitLanguageExtensions(ext: string): void {
method emitSourceStructure (line 437) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Haskell/language.ts
class HaskellTargetLanguage (line 38) | class HaskellTargetLanguage extends TargetLanguage<
method constructor (line 41) | public constructor() {
method getOptions (line 45) | public getOptions(): typeof haskellOptions {
method supportsOptionalClassProperties (line 49) | public get supportsOptionalClassProperties(): boolean {
method supportsUnionsWithBothNumberTypes (line 53) | public get supportsUnionsWithBothNumberTypes(): boolean {
method makeRenderer (line 57) | protected makeRenderer<Lang extends LanguageName = "haskell">(
FILE: packages/quicktype-core/src/language/Haskell/utils.ts
function haskellNameStyle (line 18) | function haskellNameStyle(original: string, upper: boolean): string {
FILE: packages/quicktype-core/src/language/JSONSchema/JSONSchemaRenderer.ts
type Schema (line 18) | interface Schema {
class JSONSchemaRenderer (line 23) | class JSONSchemaRenderer extends ConvenienceRenderer {
method makeNamedTypeNamer (line 24) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 28) | protected namerForObjectProperty(): null {
method makeUnionMemberNamer (line 32) | protected makeUnionMemberNamer(): null {
method makeEnumCaseNamer (line 36) | protected makeEnumCaseNamer(): null {
method nameForType (line 40) | private nameForType(t: Type): string {
method makeOneOf (line 44) | private makeOneOf(types: ReadonlySet<Type>): Schema {
method makeRef (line 59) | private makeRef(t: Type): Schema {
method addAttributesToSchema (line 63) | private addAttributesToSchema(t: Type, schema: Schema): void {
method schemaForType (line 70) | private schemaForType(t: Type): Schema {
method definitionForObject (line 117) | private definitionForObject(
method definitionForUnion (line 162) | private definitionForUnion(u: UnionType, title?: string): Schema {
method definitionForEnum (line 172) | private definitionForEnum(e: EnumType, title: string): Schema {
method emitSourceStructure (line 178) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/JSONSchema/language.ts
class JSONSchemaTargetLanguage (line 17) | class JSONSchemaTargetLanguage extends TargetLanguage<
method constructor (line 20) | public constructor() {
method getOptions (line 24) | public getOptions(): {} {
method stringTypeMapping (line 28) | public get stringTypeMapping(): StringTypeMapping {
method supportsOptionalClassProperties (line 32) | public get supportsOptionalClassProperties(): boolean {
method supportsFullObjectType (line 36) | public get supportsFullObjectType(): boolean {
method makeRenderer (line 40) | protected makeRenderer<Lang extends LanguageName = "json-schema">(
FILE: packages/quicktype-core/src/language/JSONSchema/utils.ts
function jsonNameStyle (line 16) | function jsonNameStyle(original: string): string {
FILE: packages/quicktype-core/src/language/Java/DateTimeProvider.ts
method constructor (line 6) | public constructor(
class Java8DateTimeProvider (line 50) | class Java8DateTimeProvider extends JavaDateTimeProvider {
method emitDateTimeConverters (line 91) | public emitDateTimeConverters(): void {
method convertStringToDateTime (line 166) | public convertStringToDateTime(variable: Sourcelike): Sourcelike {
method convertStringToTime (line 170) | public convertStringToTime(variable: Sourcelike): Sourcelike {
method convertStringToDate (line 174) | public convertStringToDate(variable: Sourcelike): Sourcelike {
method convertDateTimeToString (line 178) | public convertDateTimeToString(variable: Sourcelike): Sourcelike {
method convertTimeToString (line 185) | public convertTimeToString(variable: Sourcelike): Sourcelike {
method convertDateToString (line 192) | public convertDateToString(variable: Sourcelike): Sourcelike {
class JavaLegacyDateTimeProvider (line 199) | class JavaLegacyDateTimeProvider extends JavaDateTimeProvider {
method emitDateTimeConverters (line 235) | public emitDateTimeConverters(): void {
method convertStringToDateTime (line 307) | public convertStringToDateTime(variable: Sourcelike): Sourcelike {
method convertStringToTime (line 311) | public convertStringToTime(variable: Sourcelike): Sourcelike {
method convertStringToDate (line 315) | public convertStringToDate(variable: Sourcelike): Sourcelike {
method convertDateTimeToString (line 319) | public convertDateTimeToString(variable: Sourcelike): Sourcelike {
method convertTimeToString (line 323) | public convertTimeToString(variable: Sourcelike): Sourcelike {
method convertDateToString (line 327) | public convertDateToString(variable: Sourcelike): Sourcelike {
FILE: packages/quicktype-core/src/language/Java/JavaJacksonRenderer.ts
class JacksonRenderer (line 22) | class JacksonRenderer extends JavaRenderer {
method constructor (line 23) | public constructor(
method emitClassAttributes (line 43) | protected emitClassAttributes(c: ClassType, _className: Name): void {
method annotationsForAccessor (line 52) | protected annotationsForAccessor(
method importsForType (line 96) | protected importsForType(t: ClassType | UnionType | EnumType): string[] {
method emitUnionAttributes (line 127) | protected emitUnionAttributes(_u: UnionType, unionName: Name): void {
method emitUnionSerializer (line 140) | protected emitUnionSerializer(u: UnionType, unionName: Name): void {
method emitEnumSerializationAttributes (line 485) | protected emitEnumSerializationAttributes(_e: EnumType): void {
method emitEnumDeserializationAttributes (line 489) | protected emitEnumDeserializationAttributes(_e: EnumType): void {
method emitOffsetDateTimeConverterModule (line 493) | protected emitOffsetDateTimeConverterModule(): void {
method emitConverterClass (line 591) | protected emitConverterClass(): void {
method emitSourceStructure (line 795) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Java/JavaRenderer.ts
class JavaRenderer (line 47) | class JavaRenderer extends ConvenienceRenderer {
method constructor (line 63) | public constructor(
method forbiddenNamesForGlobalNamespace (line 87) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 97) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 104) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 108) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 112) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 116) | protected makeEnumCaseNamer(): Namer {
method unionNeedsName (line 120) | protected unionNeedsName(u: UnionType): boolean {
method namedTypeToNameForTopLevel (line 124) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method makeNamesForPropertyGetterAndSetter (line 131) | protected makeNamesForPropertyGetterAndSetter(
method makePropertyDependencyNames (line 151) | protected makePropertyDependencyNames(
method getNameStyling (line 169) | private getNameStyling(convention: string): Namer {
method fieldOrMethodName (line 199) | protected fieldOrMethodName(
method methodName (line 210) | protected methodName(
method decoderName (line 222) | protected decoderName(topLevelName: Name): Sourcelike {
method encoderName (line 226) | protected encoderName(topLevelName: Name): Sourcelike {
method readerGetterName (line 230) | protected readerGetterName(topLevelName: Name): Sourcelike {
method writerGetterName (line 234) | protected writerGetterName(topLevelName: Name): Sourcelike {
method startFile (line 238) | protected startFile(basename: Sourcelike): void {
method finishFile (line 257) | protected finishFile(): void {
method emitPackageAndImports (line 262) | protected emitPackageAndImports(imports: string[]): void {
method emitFileHeader (line 270) | protected emitFileHeader(fileName: Sourcelike, imports: string[]): void {
method emitDescriptionBlock (line 276) | public emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 284) | public emitBlock(line: Sourcelike, f: () => void): void {
method emitTryCatch (line 290) | public emitTryCatch(
method emitIgnoredTryCatchBlock (line 302) | public emitIgnoredTryCatchBlock(f: () => void): void {
method javaType (line 306) | protected javaType(
method javaImport (line 370) | protected javaImport(t: Type): string[] {
method javaTypeWithoutGenerics (line 421) | protected javaTypeWithoutGenerics(reference: boolean, t: Type): Source...
method emitClassAttributes (line 442) | protected emitClassAttributes(_c: ClassType, _className: Name): void {
method annotationsForAccessor (line 448) | protected annotationsForAccessor(
method importsForType (line 459) | protected importsForType(t: ClassType | UnionType | EnumType): string[] {
method importsForClass (line 475) | protected importsForClass(c: ClassType): string[] {
method importsForUnionMembers (line 484) | protected importsForUnionMembers(u: UnionType): string[] {
method emitClassDefinition (line 494) | protected emitClassDefinition(c: ClassType, className: Name): void {
method unionField (line 596) | protected unionField(
method emitUnionAttributes (line 607) | protected emitUnionAttributes(_u: UnionType, _unionName: Name): void {
method emitUnionSerializer (line 611) | protected emitUnionSerializer(_u: UnionType, _unionName: Name): void {
method emitUnionDefinition (line 615) | protected emitUnionDefinition(u: UnionType, unionName: Name): void {
method emitEnumSerializationAttributes (line 637) | protected emitEnumSerializationAttributes(_e: EnumType): void {
method emitEnumDeserializationAttributes (line 641) | protected emitEnumDeserializationAttributes(_e: EnumType): void {
method emitEnumDefinition (line 645) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitSourceStructure (line 705) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Java/language.ts
class JavaTargetLanguage (line 57) | class JavaTargetLanguage extends TargetLanguage<
method constructor (line 60) | public constructor() {
method getOptions (line 64) | public getOptions(): typeof javaOptions {
method supportsUnionsWithBothNumberTypes (line 68) | public get supportsUnionsWithBothNumberTypes(): boolean {
method makeRenderer (line 72) | protected makeRenderer<Lang extends LanguageName = "java">(
method stringTypeMapping (line 84) | public get stringTypeMapping(): StringTypeMapping {
FILE: packages/quicktype-core/src/language/Java/utils.ts
function isStartCharacter (line 20) | function isStartCharacter(codePoint: number): boolean {
function isPartCharacter (line 25) | function isPartCharacter(codePoint: number): boolean {
function javaNameStyle (line 34) | function javaNameStyle(
FILE: packages/quicktype-core/src/language/JavaScript/JavaScriptRenderer.ts
type JavaScriptTypeAnnotations (line 36) | interface JavaScriptTypeAnnotations {
class JavaScriptRenderer (line 48) | class JavaScriptRenderer extends ConvenienceRenderer {
method constructor (line 49) | public constructor(
method nameStyle (line 57) | protected nameStyle(original: string, upper: boolean): string {
method makeNamedTypeNamer (line 72) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 76) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 80) | protected makeUnionMemberNamer(): null {
method makeEnumCaseNamer (line 84) | protected makeEnumCaseNamer(): Namer {
method namedTypeToNameForTopLevel (line 88) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method makeNameForProperty (line 92) | protected makeNameForProperty(
method emitDescriptionBlock (line 103) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method typeMapTypeFor (line 111) | private typeMapTypeFor(t: Type): Sourcelike {
method typeMapTypeForProperty (line 144) | private typeMapTypeForProperty(p: ClassProperty): Sourcelike {
method emitBlock (line 153) | protected emitBlock(
method emitTypeMap (line 163) | private emitTypeMap(): void {
method deserializerFunctionName (line 205) | protected deserializerFunctionName(name: Name): Sourcelike {
method deserializerFunctionLine (line 209) | protected deserializerFunctionLine(_t: Type, name: Name): Sourcelike {
method serializerFunctionName (line 213) | protected serializerFunctionName(name: Name): Sourcelike {
method serializerFunctionLine (line 218) | protected serializerFunctionLine(_t: Type, name: Name): Sourcelike {
method moduleLine (line 222) | protected get moduleLine(): string | undefined {
method castFunctionLines (line 226) | protected get castFunctionLines(): [string, string] {
method typeAnnotations (line 230) | protected get typeAnnotations(): JavaScriptTypeAnnotations {
method emitConvertModuleBody (line 242) | protected emitConvertModuleBody(): void {
method emitConvertModuleHelpers (line 308) | protected emitConvertModuleHelpers(): void {
method emitConvertModule (line 479) | protected emitConvertModule(): void {
method emitTypes (line 500) | protected emitTypes(): void {
method emitUsageImportComment (line 504) | protected emitUsageImportComment(): void {
method emitUsageComments (line 508) | protected emitUsageComments(): void {
method emitModuleExports (line 535) | protected emitModuleExports(): void {
method emitSourceStructure (line 548) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/JavaScript/language.ts
class JavaScriptTargetLanguage (line 51) | class JavaScriptTargetLanguage extends TargetLanguage<
method constructor (line 54) | public constructor() {
method getOptions (line 58) | public getOptions(): typeof javaScriptOptions {
method stringTypeMapping (line 62) | public get stringTypeMapping(): StringTypeMapping {
method supportsOptionalClassProperties (line 71) | public get supportsOptionalClassProperties(): boolean {
method supportsFullObjectType (line 75) | public get supportsFullObjectType(): boolean {
method makeRenderer (line 79) | protected makeRenderer<Lang extends LanguageName = "javascript">(
FILE: packages/quicktype-core/src/language/JavaScript/unicodeMaps.ts
function lookupInUnicodeMap (line 4) | function lookupInUnicodeMap(code: number, map: readonly number[]): boole...
type CharacterCodes (line 33) | enum CharacterCodes {
function isES3IdentifierStart (line 49) | function isES3IdentifierStart(ch: number): boolean {
function isES3IdentifierPart (line 60) | function isES3IdentifierPart(ch: number): boolean {
FILE: packages/quicktype-core/src/language/JavaScriptPropTypes/JavaScriptPropTypesRenderer.ts
class JavaScriptPropTypesRenderer (line 38) | class JavaScriptPropTypesRenderer extends ConvenienceRenderer {
method constructor (line 39) | public constructor(
method nameStyle (line 49) | protected nameStyle(original: string, upper: boolean): string {
method makeNamedTypeNamer (line 64) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 68) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 72) | protected makeUnionMemberNamer(): null {
method makeEnumCaseNamer (line 76) | protected makeEnumCaseNamer(): Namer {
method namedTypeToNameForTopLevel (line 80) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method makeNameForProperty (line 84) | protected makeNameForProperty(
method typeMapTypeFor (line 95) | private typeMapTypeFor(t: Type, required = true): Sourcelike {
method typeMapTypeForProperty (line 138) | private typeMapTypeForProperty(p: ClassProperty): Sourcelike {
method importStatement (line 142) | private importStatement(
method emitUsageComments (line 153) | protected emitUsageComments(): void {
method emitBlock (line 173) | protected emitBlock(
method emitImports (line 183) | protected emitImports(): void {
method emitExport (line 188) | private emitExport(name: Sourcelike, value: Sourcelike): void {
method emitTypes (line 202) | protected emitTypes(): void {
method emitObject (line 291) | private emitObject(name: Name, t: ObjectType): void {
method emitSourceStructure (line 307) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/JavaScriptPropTypes/language.ts
class JavaScriptPropTypesTargetLanguage (line 30) | class JavaScriptPropTypesTargetLanguage extends TargetLanguage<
method constructor (line 33) | public constructor() {
method getOptions (line 37) | public getOptions(): typeof javaScriptPropTypesOptions {
method makeRenderer (line 41) | protected makeRenderer<Lang extends LanguageName = "javascript-prop-ty...
FILE: packages/quicktype-core/src/language/Kotlin/KotlinJacksonRenderer.ts
class KotlinJacksonRenderer (line 25) | class KotlinJacksonRenderer extends KotlinRenderer {
method constructor (line 26) | public constructor(
method unionMemberJsonValueGuard (line 34) | private unionMemberJsonValueGuard(t: Type, _e: Sourcelike): Sourcelike {
method emitUsageHeader (line 55) | protected emitUsageHeader(): void {
method emitHeader (line 71) | protected emitHeader(): void {
method emitTopLevelArray (line 132) | protected emitTopLevelArray(t: ArrayType, name: Name): void {
method emitTopLevelMap (line 158) | protected emitTopLevelMap(t: MapType, name: Name): void {
method jacksonRenameAttribute (line 184) | private jacksonRenameAttribute(
method emitEmptyClassDefinition (line 225) | protected emitEmptyClassDefinition(c: ClassType, className: Name): void {
method emitClassDefinitionMethods (line 231) | protected emitClassDefinitionMethods(c: ClassType, className: Name): v...
method renameAttribute (line 253) | protected renameAttribute(
method emitEnumDefinition (line 265) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitGenericConverter (line 304) | private emitGenericConverter(): void {
method emitUnionDefinitionMethods (line 318) | protected emitUnionDefinitionMethods(
FILE: packages/quicktype-core/src/language/Kotlin/KotlinKlaxonRenderer.ts
class KotlinKlaxonRenderer (line 25) | class KotlinKlaxonRenderer extends KotlinRenderer {
method constructor (line 26) | public constructor(
method unionMemberFromJsonValue (line 34) | private unionMemberFromJsonValue(t: Type, e: Sourcelike): Sourcelike {
method unionMemberJsonValueGuard (line 71) | private unionMemberJsonValueGuard(t: Type, _e: Sourcelike): Sourcelike {
method emitUsageHeader (line 92) | protected emitUsageHeader(): void {
method emitHeader (line 106) | protected emitHeader(): void {
method emitTopLevelArray (line 154) | protected emitTopLevelArray(t: ArrayType, name: Name): void {
method emitTopLevelMap (line 184) | protected emitTopLevelMap(t: MapType, name: Name): void {
method klaxonRenameAttribute (line 218) | private klaxonRenameAttribute(
method emitEmptyClassDefinition (line 239) | protected emitEmptyClassDefinition(c: ClassType, className: Name): void {
method emitClassDefinitionMethods (line 245) | protected emitClassDefinitionMethods(c: ClassType, className: Name): v...
method renameAttribute (line 269) | protected renameAttribute(
method emitEnumDefinition (line 281) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitGenericConverter (line 320) | private emitGenericConverter(): void {
method emitUnionDefinitionMethods (line 348) | protected emitUnionDefinitionMethods(
FILE: packages/quicktype-core/src/language/Kotlin/KotlinRenderer.ts
class KotlinRenderer (line 36) | class KotlinRenderer extends ConvenienceRenderer {
method constructor (line 37) | public constructor(
method forbiddenNamesForGlobalNamespace (line 45) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 49) | protected forbiddenForObjectProperties(
method forbiddenForEnumCases (line 56) | protected forbiddenForEnumCases(
method forbiddenForUnionMembers (line 63) | protected forbiddenForUnionMembers(
method topLevelNameStyle (line 70) | protected topLevelNameStyle(rawName: string): string {
method makeNamedTypeNamer (line 74) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 84) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 94) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 101) | protected makeEnumCaseNamer(): Namer {
method emitDescriptionBlock (line 111) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 119) | protected emitBlock(
method anySourceType (line 135) | protected anySourceType(optional: string): Sourcelike {
method arrayType (line 141) | protected arrayType(
method mapType (line 149) | protected mapType(
method kotlinType (line 161) | protected kotlinType(
method emitUsageHeader (line 200) | protected emitUsageHeader(): void {
method emitHeader (line 204) | protected emitHeader(): void {
method emitTopLevelPrimitive (line 216) | protected emitTopLevelPrimitive(t: PrimitiveType, name: Name): void {
method emitTopLevelArray (line 221) | protected emitTopLevelArray(t: ArrayType, name: Name): void {
method emitTopLevelMap (line 226) | protected emitTopLevelMap(t: MapType, name: Name): void {
method emitEmptyClassDefinition (line 237) | protected emitEmptyClassDefinition(c: ClassType, className: Name): void {
method emitClassDefinition (line 243) | protected emitClassDefinition(c: ClassType, className: Name): void {
method emitClassDefinitionMethods (line 310) | protected emitClassDefinitionMethods(
method emitClassAnnotations (line 317) | protected emitClassAnnotations(_c: Type, _className: Name): void {
method renameAttribute (line 321) | protected renameAttribute(
method emitEnumDefinition (line 330) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitUnionDefinition (line 341) | protected emitUnionDefinition(u: UnionType, unionName: Name): void {
method emitUnionDefinitionMethods (line 387) | protected emitUnionDefinitionMethods(
method emitSourceStructure (line 396) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Kotlin/KotlinXRenderer.ts
class KotlinXRenderer (line 22) | class KotlinXRenderer extends KotlinRenderer {
method constructor (line 23) | public constructor(
method anySourceType (line 31) | protected anySourceType(optional: string): Sourcelike {
method arrayType (line 35) | protected arrayType(
method mapType (line 49) | protected mapType(
method emitTopLevelMap (line 63) | protected emitTopLevelMap(t: MapType, name: Name): void {
method emitTopLevelArray (line 72) | protected emitTopLevelArray(t: ArrayType, name: Name): void {
method emitUsageHeader (line 77) | protected emitUsageHeader(): void {
method emitHeader (line 98) | protected emitHeader(): void {
method emitClassAnnotations (line 107) | protected emitClassAnnotations(_c: Type, _className: Name): void {
method renameAttribute (line 111) | protected renameAttribute(
method _rename (line 123) | private _rename(propName: Name, jsonName: string): Sourcelike | undefi...
method emitEnumDefinition (line 133) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
FILE: packages/quicktype-core/src/language/Kotlin/language.ts
class KotlinTargetLanguage (line 40) | class KotlinTargetLanguage extends TargetLanguage<
method constructor (line 43) | public constructor() {
method getOptions (line 47) | public getOptions(): typeof kotlinOptions {
method supportsOptionalClassProperties (line 51) | public get supportsOptionalClassProperties(): boolean {
method supportsUnionsWithBothNumberTypes (line 55) | public get supportsUnionsWithBothNumberTypes(): boolean {
method makeRenderer (line 59) | protected makeRenderer<Lang extends LanguageName = "kotlin">(
FILE: packages/quicktype-core/src/language/Kotlin/utils.ts
function isPartCharacter (line 17) | function isPartCharacter(codePoint: number): boolean {
function isStartCharacter (line 21) | function isStartCharacter(codePoint: number): boolean {
function kotlinNameStyle (line 27) | function kotlinNameStyle(
function unicodeEscape (line 45) | function unicodeEscape(codePoint: number): string {
function stringEscape (line 54) | function stringEscape(s: string): string {
FILE: packages/quicktype-core/src/language/Objective-C/ObjectiveCRenderer.ts
type MemoryAttribute (line 51) | type MemoryAttribute = "assign" | "strong" | "copy";
constant DEBUG (line 53) | const DEBUG = false;
class ObjectiveCRenderer (line 55) | class ObjectiveCRenderer extends ConvenienceRenderer {
method constructor (line 60) | public constructor(
method inferClassPrefix (line 76) | private inferClassPrefix(name: string): string {
method forbiddenNamesForGlobalNamespace (line 90) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 94) | protected forbiddenForObjectProperties(
method forbiddenForEnumCases (line 104) | protected forbiddenForEnumCases(
method makeNamedTypeNamer (line 111) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 117) | protected namerForObjectProperty(_: ClassType, p: ClassProperty): Namer {
method makeUnionMemberNamer (line 126) | protected makeUnionMemberNamer(): null {
method makeEnumCaseNamer (line 130) | protected makeEnumCaseNamer(): Namer {
method namedTypeToNameForTopLevel (line 134) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method emitDescriptionBlock (line 138) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 142) | protected emitBlock(line: Sourcelike, f: () => void): void {
method emitMethod (line 148) | protected emitMethod(declaration: Sourcelike, f: () => void): void {
method emitExtraComments (line 155) | protected emitExtraComments(...comments: Sourcelike[]): void {
method startFile (line 162) | protected startFile(basename: Sourcelike, extension: string): void {
method finishFile (line 171) | protected finishFile(): void {
method memoryAttribute (line 176) | protected memoryAttribute(t: Type, isNullable: boolean): MemoryAttribu...
method objcType (line 198) | protected objcType(t: Type, nullableOrBoxed = false): [Sourcelike, str...
method jsonType (line 240) | private jsonType(t: Type): [Sourcelike, string] {
method fromDynamicExpression (line 268) | protected fromDynamicExpression(
method toDynamicExpression (line 317) | protected toDynamicExpression(t: Type, typed: Sourcelike): Sourcelike {
method implicitlyConvertsFromJSON (line 377) | protected implicitlyConvertsFromJSON(t: Type): boolean {
method implicitlyConvertsToJSON (line 406) | protected implicitlyConvertsToJSON(t: Type): boolean {
method emitPropertyAssignment (line 410) | protected emitPropertyAssignment(
method emitPrivateClassInterface (line 517) | protected emitPrivateClassInterface(_: ClassType, name: Name): void {
method pointerAwareTypeName (line 526) | protected pointerAwareTypeName(t: Type | [Sourcelike, string]): Source...
method emitNonClassTopLevelTypedef (line 532) | private emitNonClassTopLevelTypedef(t: Type, name: Name): void {
method topLevelFromDataPrototype (line 537) | private topLevelFromDataPrototype(name: Name): Sourcelike {
method topLevelFromJSONPrototype (line 546) | private topLevelFromJSONPrototype(name: Name): Sourcelike {
method topLevelToDataPrototype (line 555) | private topLevelToDataPrototype(name: Name, pad = false): Sourcelike {
method topLevelToJSONPrototype (line 576) | private topLevelToJSONPrototype(name: Name, pad = false): Sourcelike {
method emitTopLevelFunctionDeclarations (line 597) | private emitTopLevelFunctionDeclarations(_: Type, name: Name): void {
method emitTryCatchAsError (line 604) | private emitTryCatchAsError(inTry: () => void, inCatch: () => void): v...
method emitTopLevelFunctions (line 617) | private emitTopLevelFunctions(t: Type, name: Name): void {
method emitClassInterface (line 679) | private emitClassInterface(t: ClassType, className: Name): void {
method hasIrregularProperties (line 724) | protected hasIrregularProperties(t: ClassType): boolean {
method hasUnsafeProperties (line 734) | protected hasUnsafeProperties(t: ClassType): boolean {
method emitClassImplementation (line 743) | private emitClassImplementation(t: ClassType, className: Name): void {
method emitMark (line 978) | protected emitMark(label: string): void {
method variableNameForTopLevel (line 984) | protected variableNameForTopLevel(name: Name): Sourcelike {
method emitPseudoEnumInterface (line 994) | private emitPseudoEnumInterface(enumType: EnumType, enumName: Name): v...
method emitPseudoEnumImplementation (line 1006) | private emitPseudoEnumImplementation(
method emitSourceStructure (line 1089) | protected emitSourceStructure(proposedFilename: string): void {
method needsMap (line 1280) | private get needsMap(): boolean {
method emitMapFunction (line 1294) | protected emitMapFunction(): void {
FILE: packages/quicktype-core/src/language/Objective-C/language.ts
class ObjectiveCTargetLanguage (line 46) | class ObjectiveCTargetLanguage extends TargetLanguage<
method constructor (line 49) | public constructor() {
method getOptions (line 53) | public getOptions(): typeof objectiveCOptions {
method makeRenderer (line 57) | protected makeRenderer<Lang extends LanguageName = "objective-c">(
FILE: packages/quicktype-core/src/language/Objective-C/utils.ts
constant DEFAULT_CLASS_PREFIX (line 15) | const DEFAULT_CLASS_PREFIX = "QT";
function typeNameStyle (line 17) | function typeNameStyle(prefix: string, original: string): string {
function propertyNameStyle (line 32) | function propertyNameStyle(original: string, isBool = false): string {
function isStartCharacter (line 72) | function isStartCharacter(utf16Unit: number): boolean {
function isPartCharacter (line 76) | function isPartCharacter(utf16Unit: number): boolean {
function splitExtension (line 89) | function splitExtension(filename: string): [string, string] {
FILE: packages/quicktype-core/src/language/Php/PhpRenderer.ts
type FunctionNames (line 39) | interface FunctionNames {
class PhpRenderer (line 48) | class PhpRenderer extends ConvenienceRenderer {
method constructor (line 60) | public constructor(
method forbiddenForObjectProperties (line 68) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 75) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 79) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 83) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 87) | protected makeEnumCaseNamer(): Namer {
method unionNeedsName (line 91) | protected unionNeedsName(u: UnionType): boolean {
method namedTypeToNameForTopLevel (line 95) | protected namedTypeToNameForTopLevel(type: Type): Type | undefined {
method makeNamesForPropertyGetterAndSetter (line 99) | protected makeNamesForPropertyGetterAndSetter(
method makePropertyDependencyNames (line 146) | protected makePropertyDependencyNames(
method getNameStyling (line 171) | private getNameStyling(convention: string): Namer {
method startFile (line 201) | protected startFile(_basename: Sourcelike): void {
method finishFile (line 213) | protected finishFile(): void {
method emitFileHeader (line 217) | protected emitFileHeader(fileName: Sourcelike, _imports: string[]): vo...
method emitDescriptionBlock (line 223) | public emitDescriptionBlock(lines: Sourcelike[]): void {
method emitBlock (line 231) | public emitBlock(line: Sourcelike, f: () => void): void {
method phpType (line 237) | protected phpType(
method phpDocConvertType (line 290) | protected phpDocConvertType(className: Name, t: Type): Sourcelike {
method phpConvertType (line 327) | protected phpConvertType(className: Name, t: Type): Sourcelike {
method phpToObjConvert (line 358) | protected phpToObjConvert(
method transformDateTime (line 441) | private transformDateTime(
method phpFromObjConvert (line 460) | protected phpFromObjConvert(
method phpSampleConvert (line 553) | protected phpSampleConvert(
method phpValidate (line 723) | private phpValidate(
method emitFromMethod (line 820) | protected emitFromMethod(
method emitToMethod (line 863) | protected emitToMethod(
method emitValidateMethod (line 917) | protected emitValidateMethod(
method emitGetMethod (line 952) | protected emitGetMethod(
method emitSetMethod (line 1008) | protected emitSetMethod(
method emitSampleMethod (line 1048) | protected emitSampleMethod(
method emitClassDefinition (line 1082) | protected emitClassDefinition(c: ClassType, className: Name): void {
method emitUnionAttributes (line 1317) | protected emitUnionAttributes(_u: UnionType, _unionName: Name): void {
method emitUnionSerializer (line 1321) | protected emitUnionSerializer(_u: UnionType, _unionName: Name): void {
method emitUnionDefinition (line 1325) | protected emitUnionDefinition(_u: UnionType, _unionName: Name): void {
method emitEnumSerializationAttributes (line 1329) | protected emitEnumSerializationAttributes(_e: EnumType): void {
method emitEnumDeserializationAttributes (line 1333) | protected emitEnumDeserializationAttributes(_e: EnumType): void {
method emitEnumDefinition (line 1337) | protected emitEnumDefinition(e: EnumType, enumName: Name): void {
method emitSourceStructure (line 1475) | protected emitSourceStructure(givenFilename: string): void {
FILE: packages/quicktype-core/src/language/Php/language.ts
class PhpTargetLanguage (line 28) | class PhpTargetLanguage extends TargetLanguage<
method constructor (line 31) | public constructor() {
method getOptions (line 35) | public getOptions(): typeof phpOptions {
method supportsUnionsWithBothNumberTypes (line 39) | public get supportsUnionsWithBothNumberTypes(): boolean {
method makeRenderer (line 43) | protected makeRenderer<Lang extends LanguageName = "php">(
method stringTypeMapping (line 51) | public get stringTypeMapping(): StringTypeMapping {
FILE: packages/quicktype-core/src/language/Php/utils.ts
function isStartCharacter (line 22) | function isStartCharacter(codePoint: number): boolean {
function isPartCharacter (line 27) | function isPartCharacter(codePoint: number): boolean {
function phpNameStyle (line 36) | function phpNameStyle(
FILE: packages/quicktype-core/src/language/Pike/PikeRenderer.ts
class PikeRenderer (line 36) | class PikeRenderer extends ConvenienceRenderer {
method emitSourceStructure (line 37) | protected emitSourceStructure(): void {
method enumCasesInGlobalNamespace (line 60) | protected get enumCasesInGlobalNamespace(): boolean {
method makeEnumCaseNamer (line 64) | protected makeEnumCaseNamer(): Namer {
method makeNamedTypeNamer (line 68) | protected makeNamedTypeNamer(): Namer {
method makeUnionMemberNamer (line 72) | protected makeUnionMemberNamer(): Namer {
method namerForObjectProperty (line 76) | protected namerForObjectProperty(): Namer {
method forbiddenNamesForGlobalNamespace (line 80) | protected forbiddenNamesForGlobalNamespace(): string[] {
method forbiddenForObjectProperties (line 84) | protected forbiddenForObjectProperties(
method forbiddenForEnumCases (line 91) | protected forbiddenForEnumCases(
method forbiddenForUnionMembers (line 98) | protected forbiddenForUnionMembers(
method sourceFor (line 105) | protected sourceFor(t: Type): MultiWord {
method emitClassDefinition (line 145) | protected emitClassDefinition(c: ClassType, className: Name): void {
method emitEnum (line 156) | protected emitEnum(e: EnumType, enumName: Name): void {
method emitUnion (line 169) | protected emitUnion(u: UnionType, unionName: Name): void {
method emitBlock (line 204) | private emitBlock(
method emitMappingBlock (line 215) | private emitMappingBlock(line: Sourcelike, f: () => void): void {
method emitClassMembers (line 219) | private emitClassMembers(c: ClassType): void {
method emitInformationComment (line 233) | private emitInformationComment(): void {
method emitTopLevelTypedef (line 254) | private emitTopLevelTypedef(t: Type, name: Name): void {
method emitTopLevelConverter (line 258) | private emitTopLevelConverter(t: Type, name: Name): void {
method emitEncodingFunction (line 286) | private emitEncodingFunction(c: ClassType): void {
method emitDecodingFunction (line 304) | private emitDecodingFunction(className: Name, c: ClassType): void {
FILE: packages/quicktype-core/src/language/Pike/language.ts
class PikeTargetLanguage (line 14) | class PikeTargetLanguage extends TargetLanguage<
method constructor (line 17) | public constructor() {
method getOptions (line 21) | public getOptions(): {} {
method makeRenderer (line 25) | protected makeRenderer(renderContext: RenderContext): PikeRenderer {
FILE: packages/quicktype-core/src/language/Python/JSONPythonRenderer.ts
type ConverterFunction (line 31) | type ConverterFunction =
type TopLevelConverterNames (line 47) | interface TopLevelConverterNames {
type ValueOrLambda (line 58) | interface ValueOrLambda {
function compose (line 76) | function compose(
function makeLambda (line 143) | function makeLambda(vol: ValueOrLambda): MultiWord {
function makeValue (line 167) | function makeValue(vol: ValueOrLambda): Sourcelike {
class JSONPythonRenderer (line 179) | class JSONPythonRenderer extends PythonRenderer {
method emitTypeVar (line 197) | protected emitTypeVar(tvar: string, constraints: Sourcelike): void {
method typeVar (line 213) | protected typeVar(): string {
method enumTypeVar (line 225) | protected enumTypeVar(): string {
method cast (line 233) | protected cast(type: Sourcelike, v: Sourcelike): Sourcelike {
method emitNoneConverter (line 241) | protected emitNoneConverter(): void {
method emitBoolConverter (line 259) | protected emitBoolConverter(): void {
method emitIntConverter (line 275) | protected emitIntConverter(): void {
method emitFromFloatConverter (line 293) | protected emitFromFloatConverter(): void {
method emitToFloatConverter (line 311) | protected emitToFloatConverter(): void {
method emitStrConverter (line 327) | protected emitStrConverter(): void {
method emitToEnumConverter (line 344) | protected emitToEnumConverter(): void {
method emitListConverter (line 363) | protected emitListConverter(): void {
method emitToClassConverter (line 390) | protected emitToClassConverter(): void {
method emitDictConverter (line 413) | protected emitDictConverter(): void {
method emitUnionConverter (line 448) | protected emitUnionConverter(): void {
method emitFromDatetimeConverter (line 458) | protected emitFromDatetimeConverter(): void {
method emitFromStringifiedBoolConverter (line 474) | protected emitFromStringifiedBoolConverter(): void {
method emitIsTypeConverter (line 495) | protected emitIsTypeConverter(): void {
method emitConverter (line 514) | protected emitConverter(cf: ConverterFunction): void {
method conv (line 592) | protected conv(cf: ConverterFunction): Sourcelike {
method convFn (line 605) | protected convFn(cf: ConverterFunction, arg: ValueOrLambda): ValueOrLa...
method typeObject (line 612) | protected typeObject(t: Type): Sourcelike {
method transformer (line 645) | protected transformer(
method deserializer (line 787) | protected deserializer(value: ValueOrLambda, t: Type): ValueOrLambda {
method serializer (line 870) | protected serializer(value: ValueOrLambda, t: Type): ValueOrLambda {
method emitClassMembers (line 956) | protected emitClassMembers(t: ClassType): void {
method emitImports (line 1030) | protected emitImports(): void {
method emitSupportCode (line 1051) | protected emitSupportCode(): void {
method makeTopLevelDependencyNames (line 1060) | protected makeTopLevelDependencyNames(
method emitDefaultLeadingComments (line 1078) | protected emitDefaultLeadingComments(): void {
method emitClosingCode (line 1110) | protected emitClosingCode(): void {
FILE: packages/quicktype-core/src/language/Python/PythonRenderer.ts
class PythonRenderer (line 38) | class PythonRenderer extends ConvenienceRenderer {
method constructor (line 43) | public constructor(
method forbiddenNamesForGlobalNamespace (line 51) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 55) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 65) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 69) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 75) | protected makeUnionMemberNamer(): null {
method makeEnumCaseNamer (line 79) | protected makeEnumCaseNamer(): Namer {
method commentLineStart (line 85) | protected get commentLineStart(): string {
method emitDescriptionBlock (line 89) | protected emitDescriptionBlock(lines: Sourcelike[]): void {
method needsTypeDeclarationBeforeUse (line 110) | protected get needsTypeDeclarationBeforeUse(): boolean {
method canBeForwardDeclared (line 114) | protected canBeForwardDeclared(t: Type): boolean {
method emitBlock (line 119) | protected emitBlock(line: Sourcelike, f: () => void): void {
method string (line 124) | protected string(s: string): Sourcelike {
method withImport (line 129) | protected withImport(module: string, name: string): Sourcelike {
method withTyping (line 143) | protected withTyping(name: string): Sourcelike {
method namedType (line 147) | protected namedType(t: Type): Sourcelike {
method pythonType (line 153) | protected pythonType(t: Type, _isRootTypeDef = false): Sourcelike {
method declarationLine (line 241) | protected declarationLine(t: Type): Sourcelike {
method declareType (line 268) | protected declareType<T extends Type>(t: T, emitter: () => void): void {
method emitClassMembers (line 276) | protected emitClassMembers(t: ClassType): void {
method typeHint (line 307) | protected typeHint(...sl: Sourcelike[]): Sourcelike {
method typingDecl (line 315) | protected typingDecl(name: Sourcelike, type: string): Sourcelike {
method typingReturn (line 319) | protected typingReturn(type: string): Sourcelike {
method sortClassProperties (line 323) | protected sortClassProperties(
method emitClass (line 343) | protected emitClass(t: ClassType): void {
method emitEnum (line 381) | protected emitEnum(t: EnumType): void {
method emitImports (line 389) | protected emitImports(): void {
method emitSupportCode (line 400) | protected emitSupportCode(): void {
method emitClosingCode (line 404) | protected emitClosingCode(): void {
method emitSourceStructure (line 408) | protected emitSourceStructure(_givenOutputFilename: string): void {
FILE: packages/quicktype-core/src/language/Python/language.ts
type PythonFeatures (line 22) | interface PythonFeatures {
class PythonTargetLanguage (line 57) | class PythonTargetLanguage extends TargetLanguage<
method constructor (line 60) | public constructor() {
method getOptions (line 64) | public getOptions(): typeof pythonOptions {
method stringTypeMapping (line 68) | public get stringTypeMapping(): StringTypeMapping {
method supportsUnionsWithBothNumberTypes (line 81) | public get supportsUnionsWithBothNumberTypes(): boolean {
method supportsOptionalClassProperties (line 85) | public get supportsOptionalClassProperties(): boolean {
method needsTransformerForType (line 89) | public needsTransformerForType(t: Type): boolean {
method makeRenderer (line 99) | protected makeRenderer<Lang extends LanguageName = "python">(
FILE: packages/quicktype-core/src/language/Python/utils.ts
function isNormalizedStartCharacter3 (line 13) | function isNormalizedStartCharacter3(utf16Unit: number): boolean {
function isNormalizedPartCharacter3 (line 19) | function isNormalizedPartCharacter3(utf16Unit: number): boolean {
function isStartCharacter3 (line 26) | function isStartCharacter3(utf16Unit: number): boolean {
function isPartCharacter3 (line 37) | function isPartCharacter3(utf16Unit: number): boolean {
function classNameStyle (line 49) | function classNameStyle(original: string): string {
function getWordStyle (line 63) | function getWordStyle(uppercase: boolean, forceSnakeNameStyle: boolean) {
function snakeNameStyle (line 71) | function snakeNameStyle(
FILE: packages/quicktype-core/src/language/Ruby/RubyRenderer.ts
class RubyRenderer (line 36) | class RubyRenderer extends ConvenienceRenderer {
method constructor (line 37) | public constructor(
method commentLineStart (line 45) | protected get commentLineStart(): string {
method needsTypeDeclarationBeforeUse (line 49) | protected get needsTypeDeclarationBeforeUse(): boolean {
method canBeForwardDeclared (line 53) | protected canBeForwardDeclared(t: Type): boolean {
method forbiddenNamesForGlobalNamespace (line 57) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 68) | protected forbiddenForObjectProperties(
method makeNamedTypeNamer (line 78) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 82) | protected namerForObjectProperty(): Namer {
method makeUnionMemberNamer (line 86) | protected makeUnionMemberNamer(): Namer {
method makeEnumCaseNamer (line 90) | protected makeEnumCaseNamer(): Namer {
method dryType (line 94) | private dryType(t: Type, isOptional = false): Sourcelike {
method exampleUse (line 138) | private exampleUse(
method jsonSample (line 227) | private jsonSample(t: Type): Sourcelike {
method fromDynamic (line 245) | private fromDynamic(
method toDynamic (line 316) | private toDynamic(t: Type, e: Sourcelike, optional = false): Sourcelike {
method marshalsImplicitlyToDynamic (line 360) | private marshalsImplicitlyToDynamic(t: Type): boolean {
method propertyTypeMarshalsImplicitlyFromDynamic (line 387) | private propertyTypeMarshalsImplicitlyFromDynamic(t: Type): boolean {
method emitBlock (line 415) | private emitBlock(source: Sourcelike, emit: () => void): void {
method emitModule (line 421) | private emitModule(emit: () => void): void {
method emitClass (line 443) | private emitClass(c: ClassType, className: Name): void {
method emitEnum (line 565) | private emitEnum(e: EnumType, enumName: Name): void {
method emitUnion (line 576) | private emitUnion(u: UnionType, unionName: Name): void {
method emitTypesModule (line 701) | private emitTypesModule(): void {
method emitSourceStructure (line 794) | protected emitSourceStructure(): void {
FILE: packages/quicktype-core/src/language/Ruby/language.ts
class RubyTargetLanguage (line 41) | class RubyTargetLanguage extends TargetLanguage<
method constructor (line 44) | public constructor() {
method getOptions (line 48) | public getOptions(): typeof rubyOptions {
method supportsOptionalClassProperties (line 52) | public get supportsOptionalClassProperties(): boolean {
method defaultIndentation (line 56) | protected get defaultIndentation(): string {
method makeRenderer (line 60) | protected makeRenderer<Lang extends LanguageName = "ruby">(
FILE: packages/quicktype-core/src/language/Ruby/utils.ts
type Strictness (line 19) | enum Strictness {
function unicodeEscape (line 28) | function unicodeEscape(codePoint: number): string {
function isPartCharacter (line 38) | function isPartCharacter(utf16Unit: number): boolean {
function simpleNameStyle (line 48) | function simpleNameStyle(original: string, uppercase: boolean): string {
function memberNameStyle (line 66) | function memberNameStyle(original: string): string {
FILE: packages/quicktype-core/src/language/Rust/RustRenderer.ts
class RustRenderer (line 45) | class RustRenderer extends ConvenienceRenderer {
method constructor (line 46) | public constructor(
method makeNamedTypeNamer (line 54) | protected makeNamedTypeNamer(): Namer {
method namerForObjectProperty (line 58) | protected namerForObjectProperty(): Namer | null {
method makeUnionMemberNamer (line 62) | protected makeUnionMemberNamer(): Namer | null {
method makeEnumCaseNamer (line 66) | protected makeEnumCaseNamer(): Namer | null {
method forbiddenNamesForGlobalNamespace (line 70) | protected forbiddenNamesForGlobalNamespace(): readonly string[] {
method forbiddenForObjectProperties (line 74) | protected forbiddenForObjectProperties(
method forbiddenForUnionMembers (line 81) | protected forbiddenForUnionMembers(
method forbiddenForEnumCases (line 88) | protected forbiddenForEnumCases(
method commentLineStart (line 95) | protected get commentLineStart(): string {
method nullableRustType (line 99) | private nullableRustType(t: Type, withIssues: boolean): Sourcelike {
method isImplicitCycleBreaker (line 103) | protected isImplicitCycleBreaker(t: Type): boolean {
method rustType (line 108) | private rustType(t: Type, withIssues = false): Sourcelike {
method breakCycle (line 160) | private breakCycle(t: Type, withIssues: boolean): Sourcelike {
method emitRenameAttribute (line 167) | private emitRenameAttribute(
method emitSkipSerializeNone (line 184) | private emitSkipSerializeNone(t: Type): void {
method visibility (line 194) | private get visibility(): string {
method emitStructDefinition (line 205) | protected emitStructDefinition(c: ClassType, className: Name): void {
method emitBlock (line 261
Copy disabled (too large)
Download .json
Condensed preview — 777 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,958K chars).
[
{
"path": ".gitattributes",
"chars": 34,
"preview": "*.sh text eol=lf\nscripts/* eol=lf\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 736,
"preview": "# These are supported funding model platforms\n\ngithub: quicktype \npatreon: # Replace with a single Patreon username\nopen"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1482,
"preview": "---\nname: New Bug Report\nabout: Use this template for reporting new bugs.\ntitle: \"[BUG]: bug description here\"\nlabels: b"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 190,
"preview": "blank_issues_enabled: false\n# contact_links:\n# - name: GitHub Community Support\n# url: https://github.com/orgs/com"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 1015,
"preview": "---\nname: Feature Request\nabout: Use this template for requesting new features.\ntitle: \"[FEATURE]: feature description h"
},
{
"path": ".github/dependabot.yml",
"chars": 430,
"preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
},
{
"path": ".github/pull_request_template.md",
"chars": 892,
"preview": "## Description\n\n<!--- Describe your changes in detail -->\n\n## Related Issue\n\n<!--- If suggesting a new feature or change"
},
{
"path": ".github/workflows/master.yaml",
"chars": 443,
"preview": "name: Build and Release\non:\n push:\n branches:\n - master\n\njobs:\n publish:\n runs-on: ubuntu"
},
{
"path": ".github/workflows/setup/action.yaml",
"chars": 1034,
"preview": "name: Setup\ndescription: Setup common stuff for jobs\nruns:\n using: \"composite\"\n steps:\n - name: Setup envir"
},
{
"path": ".github/workflows/test-pr.yaml",
"chars": 7179,
"preview": "name: Test PR\non:\n pull_request:\n branches:\n - master\n - \"release/**\"\njobs:\n build:\n "
},
{
"path": ".gitignore",
"chars": 678,
"preview": "node_modules/\n/test/awesome-json-results/\nnpm-debug.log\nyarn.lock\nshrinkwrap.yaml\ntest/csharp/QuickType.cs\ntest/golang/q"
},
{
"path": ".nvmrc",
"chars": 9,
"preview": "v22.14.0\n"
},
{
"path": ".vscode/extensions.json",
"chars": 199,
"preview": "{\n // See http://go.microsoft.com/fwlink/?LinkId=827846\n // for the documentation about the extensions.json format"
},
{
"path": ".vscode/launch.json",
"chars": 1326,
"preview": "{\n // Use IntelliSense to learn about possible Node.js debug attributes.\n // Hover to view descriptions of existin"
},
{
"path": ".vscode/settings.json",
"chars": 1080,
"preview": "{\n // Place your settings in this file to overwrite default and user settings.\n \"editor.formatOnSave\": true,\n \""
},
{
"path": "FAQ.md",
"chars": 8926,
"preview": "# The quicktype FAQ\n\n- [What is this?](#what-is-this)\n- [How does this work?](#how-does-this-work)\n- [How do I use"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 10249,
"preview": "\n\n[![npm version"
},
{
"path": "biome.json",
"chars": 307,
"preview": "{\n \"files\": {\n \"ignore\": [\n \"test/runs\",\n \"test/inputs\",\n \"dist\",\n "
},
{
"path": "data/lib.d.ts",
"chars": 49009,
"preview": "/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. A"
},
{
"path": "doc/CustomRenderer.md",
"chars": 4925,
"preview": "# Extending quicktype functionality with a Custom Renderer\n\n## quicktype Interface\n\nTo customise your rendering output, "
},
{
"path": "doc/PostmanCollection.schema",
"chars": 872,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-06/schema#\",\n \"description\": \"Postman collection\",\n \"$ref\": \"#/definition"
},
{
"path": "doc/Templates.md",
"chars": 3031,
"preview": "# NOTE\n\nThis was a prototype that we've since removed from quicktype. If you'd like to play with it, please use commit `"
},
{
"path": "doc/Transformers.md",
"chars": 2292,
"preview": "# Transformed string types\n\nquicktype has facilities for transforming JSON strings into other data types, provided a giv"
},
{
"path": "package.json",
"chars": 2534,
"preview": "{\n \"name\": \"quicktype\",\n \"version\": \"23.2.0\",\n \"license\": \"Apache-2.0\",\n \"main\": \"dist/index.js\",\n \"types"
},
{
"path": "packages/quicktype-core/env.sh",
"chars": 297,
"preview": "#!/usr/bin/env bash\n\nif [[ $PUBLISH == true ]]; then\n echo 'HAS PUBLISH, exit'\n exit 0\nfi\n\nif [[ $CI ]]; then\n\tif [[ \""
},
{
"path": "packages/quicktype-core/package.json",
"chars": 1522,
"preview": "{\n \"name\": \"quicktype-core\",\n \"version\": \"18.0.15\",\n \"description\": \"The quicktype engine as a library\",\n \"l"
},
{
"path": "packages/quicktype-core/src/Annotation.ts",
"chars": 575,
"preview": "// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class AnnotationData {}\n\nexport class IssueAnn"
},
{
"path": "packages/quicktype-core/src/ConvenienceRenderer.ts",
"chars": 40572,
"preview": "import {\n iterableEnumerate,\n iterableSome,\n mapFilter,\n mapFilterMap,\n mapSome,\n mapSortBy,\n setFi"
},
{
"path": "packages/quicktype-core/src/CycleBreaker.ts",
"chars": 3491,
"preview": "import { assert, panic } from \"./support/Support\";\n\nexport function breakCycles<T>(\n outEdges: number[][],\n choose"
},
{
"path": "packages/quicktype-core/src/DateTime.ts",
"chars": 2589,
"preview": "/* eslint-disable */\n// https://github.com/epoberezkin/ajv/blob/4d76c6fb813b136b6ec4fe74990bc97233d75dea/lib/compile/for"
},
{
"path": "packages/quicktype-core/src/DeclarationIR.ts",
"chars": 7595,
"preview": "import {\n iterableFirst,\n setFilter,\n setIntersect,\n setSubtract,\n setUnionInto,\n} from \"collection-utils"
},
{
"path": "packages/quicktype-core/src/EncodedMarkovChain.ts",
"chars": 197634,
"preview": "export const encodedMarkovChain =\n \"H4sICBHke1oCA21hcmtvdi5qc29uAOy9yW4jMbQl+C9vHQtezqxfafSi0OhFAw/VwEPVqtD/3jyHMYiOQ"
},
{
"path": "packages/quicktype-core/src/GatherNames.ts",
"chars": 14700,
"preview": "import { setMap, setSortBy, setUnion } from \"collection-utils\";\nimport * as pluralize from \"pluralize\";\n\nimport {\n To"
},
{
"path": "packages/quicktype-core/src/Graph.ts",
"chars": 8485,
"preview": "import { setMap } from \"collection-utils\";\n\nimport { assert, defined, repeated, repeatedCall } from \"./support/Support\";"
},
{
"path": "packages/quicktype-core/src/GraphRewriting.ts",
"chars": 26304,
"preview": "import { EqualityMap, mapMap } from \"collection-utils\";\n\nimport {\n type TypeAttributes,\n combineTypeAttributes,\n "
},
{
"path": "packages/quicktype-core/src/Inference.ts",
"chars": 3895,
"preview": "import type { TransformedStringTypeKind } from \"./Type\";\n\nexport interface InferenceFlag {\n description: string;\n "
},
{
"path": "packages/quicktype-core/src/MakeTransformations.ts",
"chars": 16050,
"preview": "import {\n arraySortByInto,\n iterableFirst,\n iterableSome,\n mapMapEntries,\n setFilter,\n withDefault,\n} "
},
{
"path": "packages/quicktype-core/src/MarkovChain.ts",
"chars": 4749,
"preview": "import { encodedMarkovChain } from \"./EncodedMarkovChain\";\nimport { assert, inflateBase64, panic } from \"./support/Suppo"
},
{
"path": "packages/quicktype-core/src/Messages.ts",
"chars": 12354,
"preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Ref } from \"./input/JSONSchemaInput\";\nimport type "
},
{
"path": "packages/quicktype-core/src/Naming.ts",
"chars": 16265,
"preview": "import {\n iterableEvery,\n iterableFind,\n iterableFirst,\n iterableMinBy,\n iterableSome,\n mapMergeInto,\n"
},
{
"path": "packages/quicktype-core/src/Renderer.ts",
"chars": 12489,
"preview": "import { iterableEnumerate } from \"collection-utils\";\n\nimport { type AnnotationData, IssueAnnotationData } from \"./Annot"
},
{
"path": "packages/quicktype-core/src/RendererOptions/index.ts",
"chars": 5476,
"preview": "import { messageError } from \"../Messages\";\nimport { assert } from \"../support/Support\";\nimport type { LanguageName, Ren"
},
{
"path": "packages/quicktype-core/src/RendererOptions/types.ts",
"chars": 1821,
"preview": "import type { EnumOption, Option } from \"./index\";\nimport type { OptionDefinition as CommandLineArgsOptionDefinition } f"
},
{
"path": "packages/quicktype-core/src/Run.ts",
"chars": 21785,
"preview": "import { mapFirst } from \"collection-utils\";\n\nimport { initTypeNames } from \"./attributes/TypeNames\";\nimport { InputData"
},
{
"path": "packages/quicktype-core/src/Source.ts",
"chars": 9625,
"preview": "import { arrayIntercalate, iterableMax, withDefault } from \"collection-utils\";\n\nimport type { AnnotationData } from \"./A"
},
{
"path": "packages/quicktype-core/src/TargetLanguage.ts",
"chars": 3958,
"preview": "import { mapMap } from \"collection-utils\";\n\nimport { ConvenienceRenderer } from \"./ConvenienceRenderer\";\nimport { type D"
},
{
"path": "packages/quicktype-core/src/Transformers.ts",
"chars": 40385,
"preview": "import {\n addHashCode,\n areEqual,\n arraySortByInto,\n definedMap,\n definedMapWithDefault,\n hashCodeOf,\n"
},
{
"path": "packages/quicktype-core/src/Type/ProvenanceTypeAttributeKind.ts",
"chars": 994,
"preview": "import { setUnionManyInto } from \"collection-utils\";\n\nimport { TypeAttributeKind } from \"../attributes/TypeAttributes\";\n"
},
{
"path": "packages/quicktype-core/src/Type/TransformedStringType.ts",
"chars": 3875,
"preview": "import {\n // eslint-disable-next-line @typescript-eslint/no-redeclare\n hasOwnProperty,\n mapFromObject,\n} from \""
},
{
"path": "packages/quicktype-core/src/Type/Type.ts",
"chars": 29334,
"preview": "import {\n addHashCode,\n areEqual,\n definedMap,\n hashCodeInit,\n hashCodeOf,\n iterableEvery,\n iterabl"
},
{
"path": "packages/quicktype-core/src/Type/TypeBuilder.ts",
"chars": 19708,
"preview": "import {\n EqualityMap,\n areEqual,\n definedMap,\n iterableEvery,\n mapFilter,\n mapFind,\n mapMap,\n m"
},
{
"path": "packages/quicktype-core/src/Type/TypeBuilderUtils.ts",
"chars": 993,
"preview": "import {\n type PrimitiveStringTypeKind,\n type TransformedStringTypeKind,\n transformedStringTypeKinds,\n} from \"."
},
{
"path": "packages/quicktype-core/src/Type/TypeGraph.ts",
"chars": 15216,
"preview": "import { mapMap, setSubtract, setUnionManyInto } from \"collection-utils\";\n\nimport {\n type TypeAttributeKind,\n type"
},
{
"path": "packages/quicktype-core/src/Type/TypeGraphUtils.ts",
"chars": 5046,
"preview": "import {\n iterableFirst,\n mapMap,\n mapSome,\n setFilter,\n setMap,\n} from \"collection-utils\";\n\nimport { Typ"
},
{
"path": "packages/quicktype-core/src/Type/TypeRef.ts",
"chars": 2153,
"preview": "import type { TypeAttributes } from \"../attributes/TypeAttributes\";\nimport type { BaseGraphRewriteBuilder } from \"../Gra"
},
{
"path": "packages/quicktype-core/src/Type/TypeUtils.ts",
"chars": 11588,
"preview": "import {\n EqualityMap,\n iterableFirst,\n setFilter,\n setSortBy,\n setUnion,\n} from \"collection-utils\";\n\nimp"
},
{
"path": "packages/quicktype-core/src/Type/index.ts",
"chars": 202,
"preview": "export * from \"./Type\";\nexport * from \"./TypeBuilder\";\nexport * from \"./TypeGraph\";\nexport * from \"./TypeUtils\";\n\n// TOD"
},
{
"path": "packages/quicktype-core/src/UnifyClasses.ts",
"chars": 10564,
"preview": "import { iterableFirst, setUnionInto } from \"collection-utils\";\n\nimport {\n type TypeAttributes,\n combineTypeAttrib"
},
{
"path": "packages/quicktype-core/src/UnionBuilder.ts",
"chars": 18833,
"preview": "import {\n mapMap,\n mapMerge,\n mapUpdateInto,\n setUnionInto,\n} from \"collection-utils\";\n\nimport {\n StringT"
},
{
"path": "packages/quicktype-core/src/attributes/AccessorNames.ts",
"chars": 8632,
"preview": "import {\n iterableFirst,\n mapFromIterable,\n mapFromObject,\n mapMap,\n mapMergeInto,\n setUnionManyInto,\n"
},
{
"path": "packages/quicktype-core/src/attributes/Constraints.ts",
"chars": 7040,
"preview": "import type {\n JSONSchemaAttributes,\n JSONSchemaType,\n Ref,\n} from \"../input/JSONSchemaInput\";\nimport type { JS"
},
{
"path": "packages/quicktype-core/src/attributes/Description.ts",
"chars": 4822,
"preview": "import {\n iterableFirst,\n mapFilterMap,\n mapFromObject,\n mapMergeWithInto,\n setSubtract,\n setUnion,\n "
},
{
"path": "packages/quicktype-core/src/attributes/EnumValues.ts",
"chars": 1642,
"preview": "import { mapMap } from \"collection-utils\";\n\nimport type {\n JSONSchemaAttributes,\n JSONSchemaType,\n Ref,\n} from "
},
{
"path": "packages/quicktype-core/src/attributes/StringTypes.ts",
"chars": 8205,
"preview": "import {\n addHashCode,\n areEqual,\n definedMap,\n hashCodeOf,\n iterableFirst,\n mapMap,\n mapMergeWithI"
},
{
"path": "packages/quicktype-core/src/attributes/TypeAttributes.ts",
"chars": 4965,
"preview": "import {\n hashString,\n mapFilter,\n mapFilterMap,\n mapTranspose,\n} from \"collection-utils\";\n\nimport type { Ba"
},
{
"path": "packages/quicktype-core/src/attributes/TypeNames.ts",
"chars": 10780,
"preview": "import {\n definedMap,\n iterableFirst,\n iterableSkip,\n setMap,\n setUnionInto,\n} from \"collection-utils\";\ni"
},
{
"path": "packages/quicktype-core/src/attributes/URIAttributes.ts",
"chars": 3515,
"preview": "import { setUnionManyInto } from \"collection-utils\";\nimport URI from \"urijs\";\n\nimport type {\n JSONSchemaAttributes,\n "
},
{
"path": "packages/quicktype-core/src/index.ts",
"chars": 3110,
"preview": "export {\n type Options,\n getTargetLanguage,\n quicktypeMultiFile,\n quicktypeMultiFileSync,\n quicktype,\n "
},
{
"path": "packages/quicktype-core/src/input/CompressedJSON.ts",
"chars": 10679,
"preview": "import { addHashCode, hashCodeInit, hashString } from \"collection-utils\";\n\nimport { inferTransformedStringTypeKindForStr"
},
{
"path": "packages/quicktype-core/src/input/FetchingJSONSchemaStore.ts",
"chars": 603,
"preview": "import { parseJSON } from \"../support/Support\";\n\nimport { readFromFileOrURL } from \"./io/NodeIO\";\nimport { type JSONSche"
},
{
"path": "packages/quicktype-core/src/input/Inference.ts",
"chars": 13920,
"preview": "import {\n StringTypes,\n inferTransformedStringTypeKindForString,\n} from \"../attributes/StringTypes\";\nimport {\n "
},
{
"path": "packages/quicktype-core/src/input/Inputs.ts",
"chars": 8652,
"preview": "import {\n arrayMapSync,\n iterableFind,\n iterableFirst,\n iterableSome,\n setFilterMap,\n withDefault,\n} f"
},
{
"path": "packages/quicktype-core/src/input/JSONSchemaInput.ts",
"chars": 53317,
"preview": "import {\n EqualityMap,\n addHashCode,\n arrayGetFromEnd,\n arrayLast,\n arrayMapSync,\n definedMap,\n // "
},
{
"path": "packages/quicktype-core/src/input/JSONSchemaStore.ts",
"chars": 1386,
"preview": "import { type StringMap, assert } from \"../support/Support\";\n\nexport type JSONSchema = StringMap | boolean;\n\nexport abst"
},
{
"path": "packages/quicktype-core/src/input/PathElement.ts",
"chars": 308,
"preview": "export enum PathElementKind {\n Root = 1,\n KeyOrIndex = 2,\n Type = 3,\n Object = 4,\n}\n\nexport type PathElement"
},
{
"path": "packages/quicktype-core/src/input/PostmanCollection.ts",
"chars": 3275,
"preview": "import { parseJSON } from \"../support/Support\";\n\nimport type { JSONSourceData } from \"./Inputs\";\nimport type { JSONSchem"
},
{
"path": "packages/quicktype-core/src/input/io/$fetch.ci.ts",
"chars": 107,
"preview": "console.info(\"=== RUNNING IN CI, USE FETCH.CI ===\");\n\nexport const fetch = require(\"cross-fetch\").default;\n"
},
{
"path": "packages/quicktype-core/src/input/io/$fetch.ts",
"chars": 216,
"preview": "import type CrossFetch from \"cross-fetch\";\n\nlet fetch: typeof CrossFetch;\n\ntry {\n fetch = global.fetch ?? require(\"cr"
},
{
"path": "packages/quicktype-core/src/input/io/NodeIO.ts",
"chars": 2750,
"preview": "import * as fs from \"node:fs\";\n\nimport { defined, exceptionToString } from \"@glideapps/ts-necessities\";\nimport { isNode "
},
{
"path": "packages/quicktype-core/src/input/io/get-stream/buffer-stream.ts",
"chars": 1418,
"preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { PassThrough } from \"readable-stream\";\n\nimport type { Op"
},
{
"path": "packages/quicktype-core/src/input/io/get-stream/index.ts",
"chars": 1918,
"preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Readable } from \"readable-stream\";\n\nimport bufferS"
},
{
"path": "packages/quicktype-core/src/input/io/get-stream/license",
"chars": 1148,
"preview": "The MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby gra"
},
{
"path": "packages/quicktype-core/src/language/All.ts",
"chars": 3370,
"preview": "import type { TargetLanguage } from \"../TargetLanguage\";\n\nimport { CJSONTargetLanguage } from \"./CJSON\";\nimport { CPlusP"
},
{
"path": "packages/quicktype-core/src/language/CJSON/CJSONRenderer.ts",
"chars": 363816,
"preview": "// FIXME: NEEDS REFACTOR\n/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable @typescript-eslint/naming-c"
},
{
"path": "packages/quicktype-core/src/language/CJSON/constants.ts",
"chars": 1864,
"preview": "/* Forbidden names for namespace */\nexport const keywords = [\n /* C and C++ keywords */\n \"alignas\",\n \"alignof\","
},
{
"path": "packages/quicktype-core/src/language/CJSON/index.ts",
"chars": 113,
"preview": "export { CJSONTargetLanguage, cJSONOptions } from \"./language\";\nexport { CJSONRenderer } from \"./CJSONRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/CJSON/language.ts",
"chars": 5600,
"preview": "/**\n * CJSON.ts\n * This file is used to generate cJSON code with quicktype\n * The generated code depends of https://gith"
},
{
"path": "packages/quicktype-core/src/language/CJSON/utils.ts",
"chars": 2109,
"preview": "import type { Name } from \"../../Naming\";\nimport type { Sourcelike } from \"../../Source\";\nimport {\n isAscii,\n isLe"
},
{
"path": "packages/quicktype-core/src/language/CPlusPlus/CPlusPlusRenderer.ts",
"chars": 122028,
"preview": "import {\n arrayIntercalate,\n iterableFind,\n iterableFirst,\n iterableSome,\n setUnion,\n toReadonlyArray,"
},
{
"path": "packages/quicktype-core/src/language/CPlusPlus/constants.ts",
"chars": 1512,
"preview": "export const keywords = [\n \"alignas\",\n \"alignof\",\n \"and\",\n \"and_eq\",\n \"asm\",\n \"atomic_cancel\",\n \"at"
},
{
"path": "packages/quicktype-core/src/language/CPlusPlus/index.ts",
"chars": 129,
"preview": "export { CPlusPlusTargetLanguage, cPlusPlusOptions } from \"./language\";\nexport { CPlusPlusRenderer } from \"./CPlusPlusRe"
},
{
"path": "packages/quicktype-core/src/language/CPlusPlus/language.ts",
"chars": 4118,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n StringOption,\n g"
},
{
"path": "packages/quicktype-core/src/language/CPlusPlus/utils.ts",
"chars": 5635,
"preview": "import {\n type MinMaxConstraint,\n minMaxLengthForType,\n minMaxValueForType,\n patternForType,\n} from \"../../a"
},
{
"path": "packages/quicktype-core/src/language/CSharp/CSharpRenderer.ts",
"chars": 17522,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n"
},
{
"path": "packages/quicktype-core/src/language/CSharp/NewtonSoftCSharpRenderer.ts",
"chars": 39958,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport {\n type ForbiddenWordsInfo,\n inferredNameOrder,\n} fro"
},
{
"path": "packages/quicktype-core/src/language/CSharp/SystemTextJsonCSharpRenderer.ts",
"chars": 45245,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport {\n type ForbiddenWordsInfo,\n inferredNameOrder,\n} fro"
},
{
"path": "packages/quicktype-core/src/language/CSharp/constants.ts",
"chars": 1077,
"preview": "export const keywords = [\n \"abstract\",\n \"as\",\n \"base\",\n \"bool\",\n \"break\",\n \"byte\",\n \"case\",\n \"ca"
},
{
"path": "packages/quicktype-core/src/language/CSharp/index.ts",
"chars": 338,
"preview": "export {\n CSharpTargetLanguage,\n cSharpOptions,\n newtonsoftCSharpOptions,\n systemTextJsonCSharpOptions,\n} fr"
},
{
"path": "packages/quicktype-core/src/language/CSharp/language.ts",
"chars": 6056,
"preview": "import type { ConvenienceRenderer } from \"../../ConvenienceRenderer\";\nimport type { RenderContext } from \"../../Renderer"
},
{
"path": "packages/quicktype-core/src/language/CSharp/utils.ts",
"chars": 4321,
"preview": "import unicode from \"unicode-properties\";\n\nimport {\n minMaxLengthForType,\n minMaxValueForType,\n} from \"../../attri"
},
{
"path": "packages/quicktype-core/src/language/Crystal/CrystalRenderer.ts",
"chars": 7126,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport {\n ConvenienceRen"
},
{
"path": "packages/quicktype-core/src/language/Crystal/constants.ts",
"chars": 1854,
"preview": "export const keywords = [\n \"Any\",\n \"Array\",\n \"Atomic\",\n \"Bool\",\n \"Channel\",\n \"Char\",\n \"Class\",\n "
},
{
"path": "packages/quicktype-core/src/language/Crystal/index.ts",
"chars": 105,
"preview": "export { CrystalTargetLanguage } from \"./language\";\nexport { CrystalRenderer } from \"./CrystalRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Crystal/language.ts",
"chars": 751,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport { TargetLanguage } from \"../../TargetLanguage\";\n\nimport { Cr"
},
{
"path": "packages/quicktype-core/src/language/Crystal/utils.ts",
"chars": 1863,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordStyle,\n combineWords,\n escapeNonPrintableM"
},
{
"path": "packages/quicktype-core/src/language/Dart/DartRenderer.ts",
"chars": 32381,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport {\n ConvenienceRen"
},
{
"path": "packages/quicktype-core/src/language/Dart/constants.ts",
"chars": 952,
"preview": "export const keywords = [\n \"abstract\",\n \"do\",\n \"import\",\n \"super\",\n \"as\",\n \"dynamic\",\n \"in\",\n \"s"
},
{
"path": "packages/quicktype-core/src/language/Dart/index.ts",
"chars": 109,
"preview": "export { DartTargetLanguage, dartOptions } from \"./language\";\nexport { DartRenderer } from \"./DartRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Dart/language.ts",
"chars": 3002,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n StringOption,\n getOptionValues,\n"
},
{
"path": "packages/quicktype-core/src/language/Dart/utils.ts",
"chars": 2257,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n"
},
{
"path": "packages/quicktype-core/src/language/Elixir/ElixirRenderer.ts",
"chars": 42002,
"preview": "import {\n ConvenienceRenderer,\n type ForbiddenWordsInfo,\n} from \"../../ConvenienceRenderer\";\nimport { type Name, N"
},
{
"path": "packages/quicktype-core/src/language/Elixir/constants.ts",
"chars": 1582,
"preview": "export const forbiddenModuleNames = [\n \"Access\",\n \"Agent\",\n \"Any\",\n \"Application\",\n \"ArgumentError\",\n "
},
{
"path": "packages/quicktype-core/src/language/Elixir/index.ts",
"chars": 117,
"preview": "export { ElixirTargetLanguage, elixirOptions } from \"./language\";\nexport { ElixirRenderer } from \"./ElixirRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Elixir/language.ts",
"chars": 1444,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n StringOption,\n getOptionValues,\n"
},
{
"path": "packages/quicktype-core/src/language/Elixir/utils.ts",
"chars": 1991,
"preview": "import unicode from \"unicode-properties\";\n\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n "
},
{
"path": "packages/quicktype-core/src/language/Elm/ElmRenderer.ts",
"chars": 26211,
"preview": "import { arrayIntercalate, mapContains } from \"collection-utils\";\n\nimport {\n anyTypeIssueAnnotation,\n nullTypeIssu"
},
{
"path": "packages/quicktype-core/src/language/Elm/constants.ts",
"chars": 554,
"preview": "export const forbiddenNames = [\n \"if\",\n \"then\",\n \"else\",\n \"case\",\n \"of\",\n \"let\",\n \"in\",\n \"infix\""
},
{
"path": "packages/quicktype-core/src/language/Elm/index.ts",
"chars": 105,
"preview": "export { ElmTargetLanguage, elmOptions } from \"./language\";\nexport { ElmRenderer } from \"./ElmRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Elm/language.ts",
"chars": 1674,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n StringOption,\n g"
},
{
"path": "packages/quicktype-core/src/language/Elm/utils.ts",
"chars": 1682,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n"
},
{
"path": "packages/quicktype-core/src/language/Golang/GolangRenderer.ts",
"chars": 22646,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport { ConvenienceRendere"
},
{
"path": "packages/quicktype-core/src/language/Golang/index.ts",
"chars": 105,
"preview": "export { GoTargetLanguage, goOptions } from \"./language\";\nexport { GoRenderer } from \"./GolangRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Golang/language.ts",
"chars": 2498,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n StringOption,\n getOptionValues,\n"
},
{
"path": "packages/quicktype-core/src/language/Golang/utils.ts",
"chars": 1456,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allUpperWordStyle,\n combineWords,\n firstUpperWordStyle"
},
{
"path": "packages/quicktype-core/src/language/Haskell/HaskellRenderer.ts",
"chars": 17469,
"preview": "import { mapContains } from \"collection-utils\";\n\nimport {\n ConvenienceRenderer,\n type ForbiddenWordsInfo,\n} from \""
},
{
"path": "packages/quicktype-core/src/language/Haskell/constants.ts",
"chars": 747,
"preview": "export const forbiddenNames = [\n // reserved keywords\n \"as\",\n \"case\",\n \"class\",\n \"data\",\n \"default\",\n "
},
{
"path": "packages/quicktype-core/src/language/Haskell/index.ts",
"chars": 121,
"preview": "export { HaskellTargetLanguage, haskellOptions } from \"./language\";\nexport { HaskellRenderer } from \"./HaskellRenderer\";"
},
{
"path": "packages/quicktype-core/src/language/Haskell/language.ts",
"chars": 1679,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n StringOption,\n g"
},
{
"path": "packages/quicktype-core/src/language/Haskell/utils.ts",
"chars": 996,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n"
},
{
"path": "packages/quicktype-core/src/language/JSONSchema/JSONSchemaRenderer.ts",
"chars": 6776,
"preview": "import { iterableFirst, mapFirst } from \"collection-utils\";\n\nimport { addDescriptionToSchema } from \"../../attributes/De"
},
{
"path": "packages/quicktype-core/src/language/JSONSchema/index.ts",
"chars": 114,
"preview": "export { JSONSchemaTargetLanguage } from \"./language\";\nexport { JSONSchemaRenderer } from \"./JSONSchemaRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/JSONSchema/language.ts",
"chars": 1250,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport { TargetLanguage } from \"../../TargetLanguage\";\nimport {\n "
},
{
"path": "packages/quicktype-core/src/language/JSONSchema/utils.ts",
"chars": 687,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allUpperWordStyle,\n combineWords,\n firstUpperWordStyle"
},
{
"path": "packages/quicktype-core/src/language/Java/DateTimeProvider.ts",
"chars": 11492,
"preview": "import type { Sourcelike } from \"../../Source\";\n\nimport type { JavaRenderer } from \"./JavaRenderer\";\n\nexport abstract cl"
},
{
"path": "packages/quicktype-core/src/language/Java/JavaJacksonRenderer.ts",
"chars": 28600,
"preview": "import type { Name } from \"../../Naming\";\nimport type { RenderContext } from \"../../Renderer\";\nimport type { OptionValue"
},
{
"path": "packages/quicktype-core/src/language/Java/JavaRenderer.ts",
"chars": 23053,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport {\n ConvenienceRen"
},
{
"path": "packages/quicktype-core/src/language/Java/constants.ts",
"chars": 1035,
"preview": "export const javaKeywords = [\n \"_\", // as of release 9, '_' is a keyword, and may not be used as an identifier\n \"O"
},
{
"path": "packages/quicktype-core/src/language/Java/index.ts",
"chars": 166,
"preview": "export { JavaTargetLanguage, javaOptions } from \"./language\";\nexport { JavaRenderer } from \"./JavaRenderer\";\nexport { Ja"
},
{
"path": "packages/quicktype-core/src/language/Java/language.ts",
"chars": 2799,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n StringOption,\n g"
},
{
"path": "packages/quicktype-core/src/language/Java/utils.ts",
"chars": 1529,
"preview": "import {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n escapeNonPrintableMapper,\n firstUpperWor"
},
{
"path": "packages/quicktype-core/src/language/JavaScript/JavaScriptRenderer.ts",
"chars": 19098,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport { ConvenienceRenderer } from \"../../ConvenienceRenderer\";\ni"
},
{
"path": "packages/quicktype-core/src/language/JavaScript/index.ts",
"chars": 174,
"preview": "export { JavaScriptTargetLanguage, javaScriptOptions } from \"./language\";\nexport {\n JavaScriptRenderer,\n type Java"
},
{
"path": "packages/quicktype-core/src/language/JavaScript/language.ts",
"chars": 2623,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n getOptionValues,\n} "
},
{
"path": "packages/quicktype-core/src/language/JavaScript/unicodeMaps.ts",
"chars": 10248,
"preview": "/* eslint-disable */\n// Taken from https://github.com/Microsoft/TypeScript\n\nfunction lookupInUnicodeMap(code: number, ma"
},
{
"path": "packages/quicktype-core/src/language/JavaScript/utils.ts",
"chars": 194,
"preview": "import { utf16LegalizeCharacters } from \"../../support/Strings\";\n\nimport { isES3IdentifierPart } from \"./unicodeMaps\";\n\n"
},
{
"path": "packages/quicktype-core/src/language/JavaScriptPropTypes/JavaScriptPropTypesRenderer.ts",
"chars": 9878,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport { ConvenienceRenderer } from \"../../ConvenienceRenderer\";\ni"
},
{
"path": "packages/quicktype-core/src/language/JavaScriptPropTypes/index.ts",
"chars": 178,
"preview": "export {\n JavaScriptPropTypesTargetLanguage,\n javaScriptPropTypesOptions,\n} from \"./language\";\nexport { JavaScript"
},
{
"path": "packages/quicktype-core/src/language/JavaScriptPropTypes/language.ts",
"chars": 1686,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport { EnumOption, getOptionValues } from \"../../RendererOptions\""
},
{
"path": "packages/quicktype-core/src/language/Kotlin/KotlinJacksonRenderer.ts",
"chars": 13211,
"preview": "import { arrayIntercalate, iterableSome } from \"collection-utils\";\n\nimport type { Name } from \"../../Naming\";\nimport typ"
},
{
"path": "packages/quicktype-core/src/language/Kotlin/KotlinKlaxonRenderer.ts",
"chars": 14334,
"preview": "import { arrayIntercalate, iterableSome } from \"collection-utils\";\n\nimport type { Name } from \"../../Naming\";\nimport typ"
},
{
"path": "packages/quicktype-core/src/language/Kotlin/KotlinRenderer.ts",
"chars": 12662,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport {\n ConvenienceRen"
},
{
"path": "packages/quicktype-core/src/language/Kotlin/KotlinXRenderer.ts",
"chars": 4910,
"preview": "import type { Name } from \"../../Naming\";\nimport type { RenderContext } from \"../../Renderer\";\nimport type { OptionValue"
},
{
"path": "packages/quicktype-core/src/language/Kotlin/constants.ts",
"chars": 672,
"preview": "export const keywords = [\n \"package\",\n \"as\",\n \"typealias\",\n \"class\",\n \"this\",\n \"super\",\n \"val\",\n "
},
{
"path": "packages/quicktype-core/src/language/Kotlin/index.ts",
"chars": 298,
"preview": "export { KotlinTargetLanguage, kotlinOptions } from \"./language\";\nexport { KotlinRenderer } from \"./KotlinRenderer\";\nexp"
},
{
"path": "packages/quicktype-core/src/language/Kotlin/language.ts",
"chars": 2509,
"preview": "import type { ConvenienceRenderer } from \"../../ConvenienceRenderer\";\nimport type { RenderContext } from \"../../Renderer"
},
{
"path": "packages/quicktype-core/src/language/Kotlin/utils.ts",
"chars": 1524,
"preview": "import {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n escapeNonPrintableMapper,\n firstUpperWor"
},
{
"path": "packages/quicktype-core/src/language/Objective-C/ObjectiveCRenderer.ts",
"chars": 46143,
"preview": "import {\n iterableFirst,\n iterableSome,\n mapContains,\n mapFirst,\n mapSome,\n} from \"collection-utils\";\n\nim"
},
{
"path": "packages/quicktype-core/src/language/Objective-C/constants.ts",
"chars": 1096,
"preview": "export const keywords = [\n /*\n\t\"_Bool\",\n\t\"_Complex\",\n\t\"_Imaginary\",\n\t*/\n \"asm\",\n \"atomic\",\n \"auto\",\n \"boo"
},
{
"path": "packages/quicktype-core/src/language/Objective-C/index.ts",
"chars": 133,
"preview": "export { ObjectiveCTargetLanguage, objectiveCOptions } from \"./language\";\nexport { ObjectiveCRenderer } from \"./Objectiv"
},
{
"path": "packages/quicktype-core/src/language/Objective-C/language.ts",
"chars": 1977,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n StringOption,\n g"
},
{
"path": "packages/quicktype-core/src/language/Objective-C/utils.ts",
"chars": 2826,
"preview": "import unicode from \"unicode-properties\";\n\nimport {\n addPrefixIfNecessary,\n allLowerWordStyle,\n allUpperWordSty"
},
{
"path": "packages/quicktype-core/src/language/Php/PhpRenderer.ts",
"chars": 49345,
"preview": "import * as _ from \"lodash\";\n\nimport {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation"
},
{
"path": "packages/quicktype-core/src/language/Php/index.ts",
"chars": 105,
"preview": "export { PhpTargetLanguage, phpOptions } from \"./language\";\nexport { PhpRenderer } from \"./PhpRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Php/language.ts",
"chars": 2120,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport { BooleanOption, getOptionValues } from \"../../RendererOptio"
},
{
"path": "packages/quicktype-core/src/language/Php/utils.ts",
"chars": 1558,
"preview": "import * as _ from \"lodash\";\n\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n escapeNonPrin"
},
{
"path": "packages/quicktype-core/src/language/Pike/PikeRenderer.ts",
"chars": 10666,
"preview": "import {\n ConvenienceRenderer,\n type ForbiddenWordsInfo,\n} from \"../../ConvenienceRenderer\";\nimport type { Name, N"
},
{
"path": "packages/quicktype-core/src/language/Pike/constants.ts",
"chars": 769,
"preview": "export const keywords = [\n \"auto\",\n \"nomask\",\n \"final\",\n \"static\",\n \"extern\",\n \"private\",\n \"local\","
},
{
"path": "packages/quicktype-core/src/language/Pike/index.ts",
"chars": 109,
"preview": "export { PikeTargetLanguage, pikeOptions } from \"./language\";\nexport { PikeRenderer } from \"./PikeRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Pike/language.ts",
"chars": 669,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport { TargetLanguage } from \"../../TargetLanguage\";\n\nimport { Pi"
},
{
"path": "packages/quicktype-core/src/language/Pike/utils.ts",
"chars": 592,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n isLetterOrUnderscoreOrDigit,\n legalizeCharacters,\n mak"
},
{
"path": "packages/quicktype-core/src/language/Python/JSONPythonRenderer.ts",
"chars": 35716,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport { topLevelNameOrder } from \"../../ConvenienceRenderer\";\nimp"
},
{
"path": "packages/quicktype-core/src/language/Python/PythonRenderer.ts",
"chars": 13760,
"preview": "import {\n arrayIntercalate,\n iterableFirst,\n mapSortBy,\n mapUpdateInto,\n setUnionInto,\n} from \"collection"
},
{
"path": "packages/quicktype-core/src/language/Python/constants.ts",
"chars": 777,
"preview": "export const forbiddenTypeNames = [\n \"Any\",\n \"True\",\n \"False\",\n \"None\",\n \"Enum\",\n \"List\",\n \"Dict\",\n"
},
{
"path": "packages/quicktype-core/src/language/Python/index.ts",
"chars": 176,
"preview": "export { PythonTargetLanguage, pythonOptions } from \"./language\";\nexport { PythonRenderer } from \"./PythonRenderer\";\nexp"
},
{
"path": "packages/quicktype-core/src/language/Python/language.ts",
"chars": 3219,
"preview": "import { iterableSome } from \"collection-utils\";\n\nimport type { RenderContext } from \"../../Renderer\";\nimport {\n Bool"
},
{
"path": "packages/quicktype-core/src/language/Python/utils.ts",
"chars": 2619,
"preview": "import unicode from \"unicode-properties\";\n\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n "
},
{
"path": "packages/quicktype-core/src/language/Ruby/RubyRenderer.ts",
"chars": 32842,
"preview": "import {\n ConvenienceRenderer,\n type ForbiddenWordsInfo,\n} from \"../../ConvenienceRenderer\";\nimport { type Name, N"
},
{
"path": "packages/quicktype-core/src/language/Ruby/constants.ts",
"chars": 5983,
"preview": "export const keywords = [\n \"__ENCODING__\",\n \"__FILE__\",\n \"__LINE__\",\n \"alias\",\n \"and\",\n \"begin\",\n \""
},
{
"path": "packages/quicktype-core/src/language/Ruby/index.ts",
"chars": 109,
"preview": "export { RubyTargetLanguage, rubyOptions } from \"./language\";\nexport { RubyRenderer } from \"./RubyRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Ruby/language.ts",
"chars": 1746,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n StringOption,\n g"
},
{
"path": "packages/quicktype-core/src/language/Ruby/utils.ts",
"chars": 1960,
"preview": "import unicode from \"unicode-properties\";\n\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n "
},
{
"path": "packages/quicktype-core/src/language/Rust/RustRenderer.ts",
"chars": 12871,
"preview": "/* eslint-disable @typescript-eslint/naming-convention */\nimport { mapFirst } from \"collection-utils\";\n\nimport {\n any"
},
{
"path": "packages/quicktype-core/src/language/Rust/constants.ts",
"chars": 1229,
"preview": "export const keywords = [\n \"Serialize\",\n \"Deserialize\",\n\n // Special reserved identifiers used internally for e"
},
{
"path": "packages/quicktype-core/src/language/Rust/index.ts",
"chars": 109,
"preview": "export { RustTargetLanguage, rustOptions } from \"./language\";\nexport { RustRenderer } from \"./RustRenderer\";\n"
},
{
"path": "packages/quicktype-core/src/language/Rust/language.ts",
"chars": 2188,
"preview": "import type { RenderContext } from \"../../Renderer\";\nimport {\n BooleanOption,\n EnumOption,\n getOptionValues,\n} "
},
{
"path": "packages/quicktype-core/src/language/Rust/utils.ts",
"chars": 6101,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordStyle,\n combineWords,\n escapeNonPrintableM"
},
{
"path": "packages/quicktype-core/src/language/Scala3/CirceRenderer.ts",
"chars": 8436,
"preview": "import type { Name } from \"../../Naming\";\nimport type { Sourcelike } from \"../../Source\";\nimport type {\n ArrayType,\n "
},
{
"path": "packages/quicktype-core/src/language/Scala3/Scala3Renderer.ts",
"chars": 11833,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport {\n ConvenienceRen"
},
{
"path": "packages/quicktype-core/src/language/Scala3/UpickleRenderer.ts",
"chars": 367,
"preview": "import { Scala3Renderer } from \"./Scala3Renderer\";\n\nexport class UpickleRenderer extends Scala3Renderer {\n protected "
},
{
"path": "packages/quicktype-core/src/language/Scala3/constants.ts",
"chars": 1077,
"preview": "// Use backticks for param names with symbols\nexport const invalidSymbols = [\n \":\",\n \"-\",\n \"+\",\n \"!\",\n \"@"
},
{
"path": "packages/quicktype-core/src/language/Scala3/index.ts",
"chars": 219,
"preview": "export { Scala3TargetLanguage, scala3Options } from \"./language\";\nexport { Scala3Renderer } from \"./Scala3Renderer\";\nexp"
},
{
"path": "packages/quicktype-core/src/language/Scala3/language.ts",
"chars": 2149,
"preview": "import type { ConvenienceRenderer } from \"../../ConvenienceRenderer\";\nimport type { RenderContext } from \"../../Renderer"
},
{
"path": "packages/quicktype-core/src/language/Scala3/utils.ts",
"chars": 2165,
"preview": "import { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordStyle,\n allUpperWordStyle,\n combineWords,\n"
},
{
"path": "packages/quicktype-core/src/language/Smithy4s/Smithy4sRenderer.ts",
"chars": 14026,
"preview": "import {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n} from \"../../Annotation\";\nimport {\n ConvenienceRen"
},
{
"path": "packages/quicktype-core/src/language/Smithy4s/constants.ts",
"chars": 954,
"preview": "// Use backticks for param names with symbols\nexport const invalidSymbols = [\n \":\",\n \"-\",\n \"+\",\n \"!\",\n \"@"
},
{
"path": "packages/quicktype-core/src/language/Smithy4s/index.ts",
"chars": 121,
"preview": "export { SmithyTargetLanguage, smithyOptions } from \"./language\";\nexport { Smithy4sRenderer } from \"./Smithy4sRenderer\";"
},
{
"path": "packages/quicktype-core/src/language/Smithy4s/language.ts",
"chars": 1873,
"preview": "import type { ConvenienceRenderer } from \"../../ConvenienceRenderer\";\nimport type { RenderContext } from \"../../Renderer"
},
{
"path": "packages/quicktype-core/src/language/Smithy4s/utils.ts",
"chars": 1668,
"preview": "import { isDigit } from \"unicode-properties\";\n\nimport { funPrefixNamer } from \"../../Naming\";\nimport {\n allLowerWordS"
},
{
"path": "packages/quicktype-core/src/language/Swift/SwiftRenderer.ts",
"chars": 54734,
"preview": "import { arrayIntercalate } from \"collection-utils\";\n\nimport {\n anyTypeIssueAnnotation,\n nullTypeIssueAnnotation,\n"
}
]
// ... and 577 more files (download for full content)
About this extraction
This page contains the full source code of the glideapps/quicktype GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 777 files (13.8 MB), approximately 3.7M tokens, and a symbol index with 3001 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.