node-llama-cpp 3.8.1 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/bindings/AddonTypes.d.ts +4 -0
  2. package/dist/bindings/Llama.d.ts +2 -2
  3. package/dist/bindings/Llama.js.map +1 -1
  4. package/dist/bindings/getLlama.js +1 -0
  5. package/dist/bindings/getLlama.js.map +1 -1
  6. package/dist/chatWrappers/QwenChatWrapper.js +5 -3
  7. package/dist/chatWrappers/QwenChatWrapper.js.map +1 -1
  8. package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
  9. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js +80 -5
  10. package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js.map +1 -1
  11. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js +27 -1
  12. package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js.map +1 -1
  13. package/dist/cli/commands/ChatCommand.d.ts +2 -0
  14. package/dist/cli/commands/ChatCommand.js +29 -7
  15. package/dist/cli/commands/ChatCommand.js.map +1 -1
  16. package/dist/cli/commands/CompleteCommand.d.ts +1 -0
  17. package/dist/cli/commands/CompleteCommand.js +13 -3
  18. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  19. package/dist/cli/commands/DebugCommand.js +1 -0
  20. package/dist/cli/commands/DebugCommand.js.map +1 -1
  21. package/dist/cli/commands/InfillCommand.d.ts +1 -0
  22. package/dist/cli/commands/InfillCommand.js +13 -3
  23. package/dist/cli/commands/InfillCommand.js.map +1 -1
  24. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.d.ts +1 -0
  25. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js +9 -2
  26. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js.map +1 -1
  27. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +23 -3
  28. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -1
  29. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +1 -0
  30. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +19 -6
  31. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -1
  32. package/dist/cli/utils/interactivelyAskForModel.d.ts +2 -1
  33. package/dist/cli/utils/interactivelyAskForModel.js +7 -4
  34. package/dist/cli/utils/interactivelyAskForModel.js.map +1 -1
  35. package/dist/cli/utils/resolveCommandGgufPath.d.ts +2 -1
  36. package/dist/cli/utils/resolveCommandGgufPath.js +2 -1
  37. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -1
  38. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +17 -0
  39. package/dist/evaluator/LlamaChat/LlamaChat.js +111 -33
  40. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  41. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js +1 -1
  42. package/dist/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.js.map +1 -1
  43. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +12 -1
  44. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +7 -3
  45. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  46. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.d.ts +2 -0
  47. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js +7 -2
  48. package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js.map +1 -1
  49. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +5 -5
  50. package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -1
  51. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +22 -4
  52. package/dist/evaluator/LlamaContext/LlamaContext.js +53 -10
  53. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  54. package/dist/evaluator/LlamaContext/types.d.ts +15 -0
  55. package/dist/evaluator/LlamaJsonSchemaGrammar.d.ts +3 -3
  56. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  57. package/dist/evaluator/LlamaModel/LlamaModel.d.ts +11 -0
  58. package/dist/evaluator/LlamaModel/LlamaModel.js +11 -2
  59. package/dist/evaluator/LlamaModel/LlamaModel.js.map +1 -1
  60. package/dist/gguf/insights/GgufInsights.d.ts +8 -1
  61. package/dist/gguf/insights/GgufInsights.js +118 -77
  62. package/dist/gguf/insights/GgufInsights.js.map +1 -1
  63. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +8 -4
  64. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +12 -6
  65. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -1
  66. package/dist/gguf/insights/utils/resolveContextContextSizeOption.d.ts +2 -1
  67. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js +4 -1
  68. package/dist/gguf/insights/utils/resolveContextContextSizeOption.js.map +1 -1
  69. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +2 -1
  70. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js +13 -7
  71. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -1
  72. package/dist/gguf/types/GgufMetadataTypes.d.ts +2 -1
  73. package/dist/gguf/types/GgufMetadataTypes.js +1 -1
  74. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  75. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +11 -1
  76. package/dist/gguf/types/GgufTensorInfoTypes.js +10 -0
  77. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -1
  78. package/dist/tsconfig.tsbuildinfo +1 -1
  79. package/dist/types.d.ts +2 -2
  80. package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +9 -1
  81. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +18 -0
  82. package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
  83. package/dist/utils/gbnfJson/GbnfTerminal.d.ts +2 -1
  84. package/dist/utils/gbnfJson/GbnfTerminal.js +17 -2
  85. package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
  86. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js +1 -1
  87. package/dist/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
  88. package/dist/utils/gbnfJson/terminals/GbnfGrammar.d.ts +1 -1
  89. package/dist/utils/gbnfJson/terminals/GbnfGrammar.js +2 -2
  90. package/dist/utils/gbnfJson/terminals/GbnfGrammar.js.map +1 -1
  91. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.d.ts +1 -1
  92. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.js +2 -2
  93. package/dist/utils/gbnfJson/terminals/GbnfNumberValue.js.map +1 -1
  94. package/dist/utils/gbnfJson/terminals/GbnfOr.d.ts +1 -1
  95. package/dist/utils/gbnfJson/terminals/GbnfOr.js +2 -2
  96. package/dist/utils/gbnfJson/terminals/GbnfOr.js.map +1 -1
  97. package/dist/utils/gbnfJson/terminals/GbnfRef.d.ts +15 -0
  98. package/dist/utils/gbnfJson/terminals/GbnfRef.js +34 -0
  99. package/dist/utils/gbnfJson/terminals/GbnfRef.js.map +1 -0
  100. package/dist/utils/gbnfJson/types.d.ts +51 -29
  101. package/dist/utils/gbnfJson/types.js +3 -0
  102. package/dist/utils/gbnfJson/types.js.map +1 -1
  103. package/dist/utils/gbnfJson/utils/defsScope.d.ts +7 -0
  104. package/dist/utils/gbnfJson/utils/defsScope.js +17 -0
  105. package/dist/utils/gbnfJson/utils/defsScope.js.map +1 -0
  106. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.d.ts +1 -1
  107. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js +48 -8
  108. package/dist/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.js.map +1 -1
  109. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js +43 -14
  110. package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
  111. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +51 -8
  112. package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -1
  113. package/llama/addon/AddonContext.cpp +36 -3
  114. package/llama/addon/AddonContext.h +2 -0
  115. package/llama/addon/addon.cpp +14 -0
  116. package/llama/binariesGithubRelease.json +1 -1
  117. package/llama/gitRelease.bundle +0 -0
  118. package/llama/llama.cpp.info.json +1 -1
  119. package/package.json +15 -14
@@ -1 +1 @@
1
- {"root":["../src/index.ts","../src/ChatWrapper.ts","../src/apiDocsIndex.ts","../src/commands.ts","../src/config.ts","../src/consts.ts","../src/state.ts","../src/types.ts","../src/bindings/AddonTypes.ts","../src/bindings/Llama.ts","../src/bindings/consts.ts","../src/bindings/getLlama.ts","../src/bindings/types.ts","../src/bindings/utils/MemoryOrchestrator.ts","../src/bindings/utils/NoBinaryFoundError.ts","../src/bindings/utils/asyncEvery.ts","../src/bindings/utils/asyncSome.ts","../src/bindings/utils/binariesGithubRelease.ts","../src/bindings/utils/clearAllLocalBuilds.ts","../src/bindings/utils/cloneLlamaCppRepo.ts","../src/bindings/utils/compileLLamaCpp.ts","../src/bindings/utils/detectAvailableComputeLayers.ts","../src/bindings/utils/detectBuildTools.ts","../src/bindings/utils/detectGlibc.ts","../src/bindings/utils/getBestComputeLayersAvailable.ts","../src/bindings/utils/getBuildFolderNameForBuildOptions.ts","../src/bindings/utils/getCanUsePrebuiltBinaries.ts","../src/bindings/utils/getExampleUsageCodeOfGetLlama.ts","../src/bindings/utils/getGpuTypesToUseForOption.ts","../src/bindings/utils/getLinuxDistroInfo.ts","../src/bindings/utils/getLlamaGpuTypes.ts","../src/bindings/utils/getLlamaWithoutBackend.ts","../src/bindings/utils/getPlatform.ts","../src/bindings/utils/getPlatformInfo.ts","../src/bindings/utils/hasBuildingFromSourceDependenciesInstalled.ts","../src/bindings/utils/hasFileInPath.ts","../src/bindings/utils/lastBuildInfo.ts","../src/bindings/utils/logBinaryUsageExampleToConsole.ts","../src/bindings/utils/logDistroInstallInstruction.ts","../src/bindings/utils/resolveActualBindingBinaryPath.ts","../src/bindings/utils/resolveCustomCmakeOptions.ts","../src/bindings/utils/testBindingBinary.ts","../src/bindings/utils/testCmakeBinary.ts","../src/chatWrappers/AlpacaChatWrapper.ts","../src/chatWrappers/ChatMLChatWrapper.ts","../src/chatWrappers/DeepSeekChatWrapper.ts","../src/chatWrappers/EmptyChatWrapper.ts","../src/chatWrappers/FalconChatWrapper.ts","../src/chatWrappers/FunctionaryChatWrapper.ts","../src/chatWrappers/GemmaChatWrapper.ts","../src/chatWrappers/GeneralChatWrapper.ts","../src/chatWrappers/Llama2ChatWrapper.ts","../src/chatWrappers/Llama3ChatWrapper.ts","../src/chatWrappers/Llama3_1ChatWrapper.ts","../src/chatWrappers/Llama3_2LightweightChatWrapper.ts","../src/chatWrappers/MistralChatWrapper.ts","../src/chatWrappers/QwenChatWrapper.ts","../src/chatWrappers/generic/JinjaTemplateChatWrapper.ts","../src/chatWrappers/generic/TemplateChatWrapper.ts","../src/chatWrappers/generic/utils/UniqueIdGenerator.ts","../src/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.ts","../src/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.ts","../src/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.ts","../src/chatWrappers/generic/utils/getFirstValidResult.ts","../src/chatWrappers/generic/utils/squashChatHistoryItems.ts","../src/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.ts","../src/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.ts","../src/chatWrappers/utils/chunkChatItems.ts","../src/chatWrappers/utils/getModelLinageNames.ts","../src/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.ts","../src/chatWrappers/utils/isLlama3_2LightweightModel.ts","../src/chatWrappers/utils/jsonDumps.ts","../src/chatWrappers/utils/resolveChatWrapper.ts","../src/cli/cli.ts","../src/cli/projectTemplates.ts","../src/cli/recommendedModels.ts","../src/cli/startCreateCli.ts","../src/cli/commands/ChatCommand.ts","../src/cli/commands/CompleteCommand.ts","../src/cli/commands/DebugCommand.ts","../src/cli/commands/InfillCommand.ts","../src/cli/commands/InitCommand.ts","../src/cli/commands/OnPostInstallCommand.ts","../src/cli/commands/PullCommand.ts","../src/cli/commands/inspect/InspectCommand.ts","../src/cli/commands/inspect/commands/InspectEstimateCommand.ts","../src/cli/commands/inspect/commands/InspectGgufCommand.ts","../src/cli/commands/inspect/commands/InspectGpuCommand.ts","../src/cli/commands/inspect/commands/InspectMeasureCommand.ts","../src/cli/commands/source/SourceCommand.ts","../src/cli/commands/source/commands/BuildCommand.ts","../src/cli/commands/source/commands/ClearCommand.ts","../src/cli/commands/source/commands/DownloadCommand.ts","../src/cli/utils/ConsoleInteraction.ts","../src/cli/utils/ConsoleTable.ts","../src/cli/utils/basicChooseFromListConsoleInteraction.ts","../src/cli/utils/consolePromptQuestion.ts","../src/cli/utils/getReadablePath.ts","../src/cli/utils/interactivelyAskForModel.ts","../src/cli/utils/isRunningUnderRosetta.ts","../src/cli/utils/logUsedGpuTypeOption.ts","../src/cli/utils/printCommonInfoLines.ts","../src/cli/utils/printInfoLine.ts","../src/cli/utils/printModelDestination.ts","../src/cli/utils/projectTemplates.ts","../src/cli/utils/renderModelCompatibilityPercentageWithColors.ts","../src/cli/utils/resolveCommandGgufPath.ts","../src/cli/utils/resolveHeaderFlag.ts","../src/cli/utils/resolveModelRecommendationFileOptions.ts","../src/cli/utils/splitAnsiToLines.ts","../src/cli/utils/toBytes.ts","../src/cli/utils/withCliCommandDescriptionDocsUrl.ts","../src/evaluator/LlamaCompletion.ts","../src/evaluator/LlamaEmbedding.ts","../src/evaluator/LlamaEmbeddingContext.ts","../src/evaluator/LlamaGrammar.ts","../src/evaluator/LlamaGrammarEvaluationState.ts","../src/evaluator/LlamaJsonSchemaGrammar.ts","../src/evaluator/LlamaRankingContext.ts","../src/evaluator/TokenBias.ts","../src/evaluator/TokenMeter.ts","../src/evaluator/LlamaChat/LlamaChat.ts","../src/evaluator/LlamaChat/utils/FunctionCallNameGrammar.ts","../src/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.ts","../src/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.ts","../src/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.ts","../src/evaluator/LlamaChatSession/LlamaChatSession.ts","../src/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.ts","../src/evaluator/LlamaChatSession/utils/defineChatSessionFunction.ts","../src/evaluator/LlamaContext/LlamaContext.ts","../src/evaluator/LlamaContext/LlamaSampler.ts","../src/evaluator/LlamaContext/TokenPredictor.ts","../src/evaluator/LlamaContext/types.ts","../src/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.ts","../src/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.ts","../src/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.ts","../src/evaluator/LlamaModel/LlamaModel.ts","../src/evaluator/LlamaModel/utils/TokenAttributes.ts","../src/evaluator/utils/chunkDocument.ts","../src/gguf/consts.ts","../src/gguf/readGgufFileInfo.ts","../src/gguf/errors/InvalidGgufMagicError.ts","../src/gguf/errors/UnsupportedGgufValueTypeError.ts","../src/gguf/fileReaders/GgufFileReader.ts","../src/gguf/fileReaders/GgufFsFileReader.ts","../src/gguf/fileReaders/GgufNetworkFetchFileReader.ts","../src/gguf/insights/GgufInsights.ts","../src/gguf/insights/GgufInsightsConfigurationResolver.ts","../src/gguf/insights/utils/getRamUsageFromUnifiedVram.ts","../src/gguf/insights/utils/resolveContextContextSizeOption.ts","../src/gguf/insights/utils/resolveModelGpuLayersOption.ts","../src/gguf/insights/utils/scoreLevels.ts","../src/gguf/parser/GgufV2Parser.ts","../src/gguf/parser/GgufV3Parser.ts","../src/gguf/parser/parseGguf.ts","../src/gguf/types/GgufFileInfoTypes.ts","../src/gguf/types/GgufMetadataTypes.ts","../src/gguf/types/GgufTensorInfoTypes.ts","../src/gguf/utils/GgufReadOffset.ts","../src/gguf/utils/convertMetadataKeyValueRecordToNestedObject.ts","../src/gguf/utils/getGgufFileTypeName.ts","../src/gguf/utils/getGgufMetadataArchitectureData.ts","../src/gguf/utils/getGgufMetadataKeyValue.ts","../src/gguf/utils/ggufQuantNames.ts","../src/gguf/utils/normalizeGgufDownloadUrl.ts","../src/gguf/utils/resolveBinarySplitGgufPartUrls.ts","../src/gguf/utils/resolveSplitGgufParts.ts","../src/utils/DisposeGuard.ts","../src/utils/InsufficientMemoryError.ts","../src/utils/LlamaText.ts","../src/utils/LruCache.ts","../src/utils/OpenAIFormat.ts","../src/utils/OverridesObject.ts","../src/utils/ReplHistory.ts","../src/utils/StopGenerationDetector.ts","../src/utils/ThreadsSplitter.ts","../src/utils/TokenStreamRegulator.ts","../src/utils/UnsupportedError.ts","../src/utils/appendUserMessageToChatHistory.ts","../src/utils/clearTempFolder.ts","../src/utils/cmake.ts","../src/utils/compareTokens.ts","../src/utils/createModelDownloader.ts","../src/utils/findBestOption.ts","../src/utils/findCharacterRemovalCountToFitChatHistoryInContext.ts","../src/utils/getBuildDefaults.ts","../src/utils/getChatWrapperSegmentDefinition.ts","../src/utils/getConsoleLogPrefix.ts","../src/utils/getGrammarsFolder.ts","../src/utils/getLlamaClasses.ts","../src/utils/getModuleVersion.ts","../src/utils/getQueuedTokensBeforeStopTrigger.ts","../src/utils/getReadableContextSize.ts","../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts","../src/utils/gitReleaseBundles.ts","../src/utils/hashString.ts","../src/utils/includesText.ts","../src/utils/isLockfileActive.ts","../src/utils/isToken.ts","../src/utils/isUrl.ts","../src/utils/mergeUnionTypes.ts","../src/utils/modelDownloadEndpoints.ts","../src/utils/modelFileAccessTokens.ts","../src/utils/optionsMatrix.ts","../src/utils/parseModelFileName.ts","../src/utils/parseModelUri.ts","../src/utils/parseTextTemplate.ts","../src/utils/prettyPrintObject.ts","../src/utils/pushAll.ts","../src/utils/removeNullFields.ts","../src/utils/resolveGithubRelease.ts","../src/utils/resolveLastTokens.ts","../src/utils/resolveModelDestination.ts","../src/utils/resolveModelFile.ts","../src/utils/runtime.ts","../src/utils/safeEventCallback.ts","../src/utils/spawnCommand.ts","../src/utils/tokenizeInput.ts","../src/utils/tokenizerUtils.ts","../src/utils/transformPromisable.ts","../src/utils/truncateTextAndRoundToWords.ts","../src/utils/utilTypes.ts","../src/utils/waitForLockfileRelease.ts","../src/utils/withLockfile.ts","../src/utils/withOra.ts","../src/utils/withProgressLog.ts","../src/utils/withStatusLogs.ts","../src/utils/wrapAbortSignal.ts","../src/utils/gbnfJson/GbnfGrammarGenerator.ts","../src/utils/gbnfJson/GbnfTerminal.ts","../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts","../src/utils/gbnfJson/types.ts","../src/utils/gbnfJson/terminals/GbnfAnyJson.ts","../src/utils/gbnfJson/terminals/GbnfArray.ts","../src/utils/gbnfJson/terminals/GbnfBoolean.ts","../src/utils/gbnfJson/terminals/GbnfBooleanValue.ts","../src/utils/gbnfJson/terminals/GbnfCommaWhitespace.ts","../src/utils/gbnfJson/terminals/GbnfFormatString.ts","../src/utils/gbnfJson/terminals/GbnfGrammar.ts","../src/utils/gbnfJson/terminals/GbnfInsideStringChar.ts","../src/utils/gbnfJson/terminals/GbnfNull.ts","../src/utils/gbnfJson/terminals/GbnfNumber.ts","../src/utils/gbnfJson/terminals/GbnfNumberValue.ts","../src/utils/gbnfJson/terminals/GbnfObjectMap.ts","../src/utils/gbnfJson/terminals/GbnfOr.ts","../src/utils/gbnfJson/terminals/GbnfRepetition.ts","../src/utils/gbnfJson/terminals/GbnfString.ts","../src/utils/gbnfJson/terminals/GbnfStringValue.ts","../src/utils/gbnfJson/terminals/GbnfVerbatimText.ts","../src/utils/gbnfJson/terminals/GbnfWhitespace.ts","../src/utils/gbnfJson/terminals/gbnfConsts.ts","../src/utils/gbnfJson/utils/GbnfJsonScopeState.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForLiteral.ts","../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"version":"5.8.3"}
1
+ {"root":["../src/index.ts","../src/ChatWrapper.ts","../src/apiDocsIndex.ts","../src/commands.ts","../src/config.ts","../src/consts.ts","../src/state.ts","../src/types.ts","../src/bindings/AddonTypes.ts","../src/bindings/Llama.ts","../src/bindings/consts.ts","../src/bindings/getLlama.ts","../src/bindings/types.ts","../src/bindings/utils/MemoryOrchestrator.ts","../src/bindings/utils/NoBinaryFoundError.ts","../src/bindings/utils/asyncEvery.ts","../src/bindings/utils/asyncSome.ts","../src/bindings/utils/binariesGithubRelease.ts","../src/bindings/utils/clearAllLocalBuilds.ts","../src/bindings/utils/cloneLlamaCppRepo.ts","../src/bindings/utils/compileLLamaCpp.ts","../src/bindings/utils/detectAvailableComputeLayers.ts","../src/bindings/utils/detectBuildTools.ts","../src/bindings/utils/detectGlibc.ts","../src/bindings/utils/getBestComputeLayersAvailable.ts","../src/bindings/utils/getBuildFolderNameForBuildOptions.ts","../src/bindings/utils/getCanUsePrebuiltBinaries.ts","../src/bindings/utils/getExampleUsageCodeOfGetLlama.ts","../src/bindings/utils/getGpuTypesToUseForOption.ts","../src/bindings/utils/getLinuxDistroInfo.ts","../src/bindings/utils/getLlamaGpuTypes.ts","../src/bindings/utils/getLlamaWithoutBackend.ts","../src/bindings/utils/getPlatform.ts","../src/bindings/utils/getPlatformInfo.ts","../src/bindings/utils/hasBuildingFromSourceDependenciesInstalled.ts","../src/bindings/utils/hasFileInPath.ts","../src/bindings/utils/lastBuildInfo.ts","../src/bindings/utils/logBinaryUsageExampleToConsole.ts","../src/bindings/utils/logDistroInstallInstruction.ts","../src/bindings/utils/resolveActualBindingBinaryPath.ts","../src/bindings/utils/resolveCustomCmakeOptions.ts","../src/bindings/utils/testBindingBinary.ts","../src/bindings/utils/testCmakeBinary.ts","../src/chatWrappers/AlpacaChatWrapper.ts","../src/chatWrappers/ChatMLChatWrapper.ts","../src/chatWrappers/DeepSeekChatWrapper.ts","../src/chatWrappers/EmptyChatWrapper.ts","../src/chatWrappers/FalconChatWrapper.ts","../src/chatWrappers/FunctionaryChatWrapper.ts","../src/chatWrappers/GemmaChatWrapper.ts","../src/chatWrappers/GeneralChatWrapper.ts","../src/chatWrappers/Llama2ChatWrapper.ts","../src/chatWrappers/Llama3ChatWrapper.ts","../src/chatWrappers/Llama3_1ChatWrapper.ts","../src/chatWrappers/Llama3_2LightweightChatWrapper.ts","../src/chatWrappers/MistralChatWrapper.ts","../src/chatWrappers/QwenChatWrapper.ts","../src/chatWrappers/generic/JinjaTemplateChatWrapper.ts","../src/chatWrappers/generic/TemplateChatWrapper.ts","../src/chatWrappers/generic/utils/UniqueIdGenerator.ts","../src/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.ts","../src/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.ts","../src/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.ts","../src/chatWrappers/generic/utils/getFirstValidResult.ts","../src/chatWrappers/generic/utils/squashChatHistoryItems.ts","../src/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.ts","../src/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.ts","../src/chatWrappers/utils/chunkChatItems.ts","../src/chatWrappers/utils/getModelLinageNames.ts","../src/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.ts","../src/chatWrappers/utils/isLlama3_2LightweightModel.ts","../src/chatWrappers/utils/jsonDumps.ts","../src/chatWrappers/utils/resolveChatWrapper.ts","../src/cli/cli.ts","../src/cli/projectTemplates.ts","../src/cli/recommendedModels.ts","../src/cli/startCreateCli.ts","../src/cli/commands/ChatCommand.ts","../src/cli/commands/CompleteCommand.ts","../src/cli/commands/DebugCommand.ts","../src/cli/commands/InfillCommand.ts","../src/cli/commands/InitCommand.ts","../src/cli/commands/OnPostInstallCommand.ts","../src/cli/commands/PullCommand.ts","../src/cli/commands/inspect/InspectCommand.ts","../src/cli/commands/inspect/commands/InspectEstimateCommand.ts","../src/cli/commands/inspect/commands/InspectGgufCommand.ts","../src/cli/commands/inspect/commands/InspectGpuCommand.ts","../src/cli/commands/inspect/commands/InspectMeasureCommand.ts","../src/cli/commands/source/SourceCommand.ts","../src/cli/commands/source/commands/BuildCommand.ts","../src/cli/commands/source/commands/ClearCommand.ts","../src/cli/commands/source/commands/DownloadCommand.ts","../src/cli/utils/ConsoleInteraction.ts","../src/cli/utils/ConsoleTable.ts","../src/cli/utils/basicChooseFromListConsoleInteraction.ts","../src/cli/utils/consolePromptQuestion.ts","../src/cli/utils/getReadablePath.ts","../src/cli/utils/interactivelyAskForModel.ts","../src/cli/utils/isRunningUnderRosetta.ts","../src/cli/utils/logUsedGpuTypeOption.ts","../src/cli/utils/printCommonInfoLines.ts","../src/cli/utils/printInfoLine.ts","../src/cli/utils/printModelDestination.ts","../src/cli/utils/projectTemplates.ts","../src/cli/utils/renderModelCompatibilityPercentageWithColors.ts","../src/cli/utils/resolveCommandGgufPath.ts","../src/cli/utils/resolveHeaderFlag.ts","../src/cli/utils/resolveModelRecommendationFileOptions.ts","../src/cli/utils/splitAnsiToLines.ts","../src/cli/utils/toBytes.ts","../src/cli/utils/withCliCommandDescriptionDocsUrl.ts","../src/evaluator/LlamaCompletion.ts","../src/evaluator/LlamaEmbedding.ts","../src/evaluator/LlamaEmbeddingContext.ts","../src/evaluator/LlamaGrammar.ts","../src/evaluator/LlamaGrammarEvaluationState.ts","../src/evaluator/LlamaJsonSchemaGrammar.ts","../src/evaluator/LlamaRankingContext.ts","../src/evaluator/TokenBias.ts","../src/evaluator/TokenMeter.ts","../src/evaluator/LlamaChat/LlamaChat.ts","../src/evaluator/LlamaChat/utils/FunctionCallNameGrammar.ts","../src/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.ts","../src/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.ts","../src/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.ts","../src/evaluator/LlamaChatSession/LlamaChatSession.ts","../src/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.ts","../src/evaluator/LlamaChatSession/utils/defineChatSessionFunction.ts","../src/evaluator/LlamaContext/LlamaContext.ts","../src/evaluator/LlamaContext/LlamaSampler.ts","../src/evaluator/LlamaContext/TokenPredictor.ts","../src/evaluator/LlamaContext/types.ts","../src/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.ts","../src/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.ts","../src/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.ts","../src/evaluator/LlamaModel/LlamaModel.ts","../src/evaluator/LlamaModel/utils/TokenAttributes.ts","../src/evaluator/utils/chunkDocument.ts","../src/gguf/consts.ts","../src/gguf/readGgufFileInfo.ts","../src/gguf/errors/InvalidGgufMagicError.ts","../src/gguf/errors/UnsupportedGgufValueTypeError.ts","../src/gguf/fileReaders/GgufFileReader.ts","../src/gguf/fileReaders/GgufFsFileReader.ts","../src/gguf/fileReaders/GgufNetworkFetchFileReader.ts","../src/gguf/insights/GgufInsights.ts","../src/gguf/insights/GgufInsightsConfigurationResolver.ts","../src/gguf/insights/utils/getRamUsageFromUnifiedVram.ts","../src/gguf/insights/utils/resolveContextContextSizeOption.ts","../src/gguf/insights/utils/resolveModelGpuLayersOption.ts","../src/gguf/insights/utils/scoreLevels.ts","../src/gguf/parser/GgufV2Parser.ts","../src/gguf/parser/GgufV3Parser.ts","../src/gguf/parser/parseGguf.ts","../src/gguf/types/GgufFileInfoTypes.ts","../src/gguf/types/GgufMetadataTypes.ts","../src/gguf/types/GgufTensorInfoTypes.ts","../src/gguf/utils/GgufReadOffset.ts","../src/gguf/utils/convertMetadataKeyValueRecordToNestedObject.ts","../src/gguf/utils/getGgufFileTypeName.ts","../src/gguf/utils/getGgufMetadataArchitectureData.ts","../src/gguf/utils/getGgufMetadataKeyValue.ts","../src/gguf/utils/ggufQuantNames.ts","../src/gguf/utils/normalizeGgufDownloadUrl.ts","../src/gguf/utils/resolveBinarySplitGgufPartUrls.ts","../src/gguf/utils/resolveSplitGgufParts.ts","../src/utils/DisposeGuard.ts","../src/utils/InsufficientMemoryError.ts","../src/utils/LlamaText.ts","../src/utils/LruCache.ts","../src/utils/OpenAIFormat.ts","../src/utils/OverridesObject.ts","../src/utils/ReplHistory.ts","../src/utils/StopGenerationDetector.ts","../src/utils/ThreadsSplitter.ts","../src/utils/TokenStreamRegulator.ts","../src/utils/UnsupportedError.ts","../src/utils/appendUserMessageToChatHistory.ts","../src/utils/clearTempFolder.ts","../src/utils/cmake.ts","../src/utils/compareTokens.ts","../src/utils/createModelDownloader.ts","../src/utils/findBestOption.ts","../src/utils/findCharacterRemovalCountToFitChatHistoryInContext.ts","../src/utils/getBuildDefaults.ts","../src/utils/getChatWrapperSegmentDefinition.ts","../src/utils/getConsoleLogPrefix.ts","../src/utils/getGrammarsFolder.ts","../src/utils/getLlamaClasses.ts","../src/utils/getModuleVersion.ts","../src/utils/getQueuedTokensBeforeStopTrigger.ts","../src/utils/getReadableContextSize.ts","../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts","../src/utils/gitReleaseBundles.ts","../src/utils/hashString.ts","../src/utils/includesText.ts","../src/utils/isLockfileActive.ts","../src/utils/isToken.ts","../src/utils/isUrl.ts","../src/utils/mergeUnionTypes.ts","../src/utils/modelDownloadEndpoints.ts","../src/utils/modelFileAccessTokens.ts","../src/utils/optionsMatrix.ts","../src/utils/parseModelFileName.ts","../src/utils/parseModelUri.ts","../src/utils/parseTextTemplate.ts","../src/utils/prettyPrintObject.ts","../src/utils/pushAll.ts","../src/utils/removeNullFields.ts","../src/utils/resolveGithubRelease.ts","../src/utils/resolveLastTokens.ts","../src/utils/resolveModelDestination.ts","../src/utils/resolveModelFile.ts","../src/utils/runtime.ts","../src/utils/safeEventCallback.ts","../src/utils/spawnCommand.ts","../src/utils/tokenizeInput.ts","../src/utils/tokenizerUtils.ts","../src/utils/transformPromisable.ts","../src/utils/truncateTextAndRoundToWords.ts","../src/utils/utilTypes.ts","../src/utils/waitForLockfileRelease.ts","../src/utils/withLockfile.ts","../src/utils/withOra.ts","../src/utils/withProgressLog.ts","../src/utils/withStatusLogs.ts","../src/utils/wrapAbortSignal.ts","../src/utils/gbnfJson/GbnfGrammarGenerator.ts","../src/utils/gbnfJson/GbnfTerminal.ts","../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts","../src/utils/gbnfJson/types.ts","../src/utils/gbnfJson/terminals/GbnfAnyJson.ts","../src/utils/gbnfJson/terminals/GbnfArray.ts","../src/utils/gbnfJson/terminals/GbnfBoolean.ts","../src/utils/gbnfJson/terminals/GbnfBooleanValue.ts","../src/utils/gbnfJson/terminals/GbnfCommaWhitespace.ts","../src/utils/gbnfJson/terminals/GbnfFormatString.ts","../src/utils/gbnfJson/terminals/GbnfGrammar.ts","../src/utils/gbnfJson/terminals/GbnfInsideStringChar.ts","../src/utils/gbnfJson/terminals/GbnfNull.ts","../src/utils/gbnfJson/terminals/GbnfNumber.ts","../src/utils/gbnfJson/terminals/GbnfNumberValue.ts","../src/utils/gbnfJson/terminals/GbnfObjectMap.ts","../src/utils/gbnfJson/terminals/GbnfOr.ts","../src/utils/gbnfJson/terminals/GbnfRef.ts","../src/utils/gbnfJson/terminals/GbnfRepetition.ts","../src/utils/gbnfJson/terminals/GbnfString.ts","../src/utils/gbnfJson/terminals/GbnfStringValue.ts","../src/utils/gbnfJson/terminals/GbnfVerbatimText.ts","../src/utils/gbnfJson/terminals/GbnfWhitespace.ts","../src/utils/gbnfJson/terminals/gbnfConsts.ts","../src/utils/gbnfJson/utils/GbnfJsonScopeState.ts","../src/utils/gbnfJson/utils/defsScope.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForLiteral.ts","../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"version":"5.8.3"}
package/dist/types.d.ts CHANGED
@@ -171,8 +171,8 @@ export type ChatSessionModelFunctions = {
171
171
  };
172
172
  export type ChatSessionModelFunction<Params extends GbnfJsonSchema | undefined = GbnfJsonSchema | undefined> = {
173
173
  readonly description?: string;
174
- readonly params?: Readonly<Params>;
175
- readonly handler: (params: GbnfJsonSchemaToType<Params>) => any;
174
+ readonly params?: Params;
175
+ readonly handler: (params: GbnfJsonSchemaToType<NoInfer<Params>>) => any;
176
176
  };
177
177
  export declare function isChatModelResponseFunctionCall(item: ChatModelResponse["response"][number] | undefined): item is ChatModelFunctionCall;
178
178
  export declare function isChatModelResponseSegment(item: ChatModelResponse["response"][number] | undefined): item is ChatModelSegment;
@@ -1,11 +1,19 @@
1
+ import { MultiKeyMap } from "lifecycle-utils";
2
+ import { GbnfJsonSchema } from "./types.js";
1
3
  export declare class GbnfGrammarGenerator {
2
- rules: Map<string, string | null>;
4
+ rules: Map<string, string>;
3
5
  ruleContentToRuleName: Map<string, string>;
4
6
  literalValueRuleNames: Map<string | number, string>;
7
+ defRuleNames: MultiKeyMap<[string, GbnfJsonSchema], string | null>;
8
+ defScopeDefs: MultiKeyMap<[string, GbnfJsonSchema], Record<string, GbnfJsonSchema>>;
9
+ usedRootRuleName: boolean;
5
10
  private ruleId;
6
11
  private valueRuleId;
12
+ private defRuleId;
7
13
  generateRuleName(): string;
8
14
  generateRuleNameForLiteralValue(value: string | number): string;
15
+ generateRuleNameForDef(defName: string, def: GbnfJsonSchema): string;
16
+ registerDefs(scopeDefs: Record<string, GbnfJsonSchema>): void;
9
17
  generateGbnfFile(rootGrammar: string): string;
10
18
  getProposedLiteralValueRuleNameLength(): number;
11
19
  }
@@ -1,9 +1,14 @@
1
+ import { MultiKeyMap } from "lifecycle-utils";
1
2
  export class GbnfGrammarGenerator {
2
3
  rules = new Map();
3
4
  ruleContentToRuleName = new Map();
4
5
  literalValueRuleNames = new Map();
6
+ defRuleNames = new MultiKeyMap();
7
+ defScopeDefs = new MultiKeyMap();
8
+ usedRootRuleName = false;
5
9
  ruleId = 0;
6
10
  valueRuleId = 0;
11
+ defRuleId = 0;
7
12
  generateRuleName() {
8
13
  const ruleId = this.ruleId;
9
14
  this.ruleId++;
@@ -18,6 +23,19 @@ export class GbnfGrammarGenerator {
18
23
  this.literalValueRuleNames.set(value, ruleName);
19
24
  return ruleName;
20
25
  }
26
+ generateRuleNameForDef(defName, def) {
27
+ const existingRuleName = this.defRuleNames.get([defName, def]);
28
+ if (existingRuleName != null)
29
+ return existingRuleName;
30
+ const ruleName = `def${this.defRuleId}`;
31
+ this.defRuleId++;
32
+ this.defRuleNames.set([defName, def], ruleName);
33
+ return ruleName;
34
+ }
35
+ registerDefs(scopeDefs) {
36
+ for (const [defName, def] of Object.entries(scopeDefs))
37
+ this.defScopeDefs.set([defName, def], scopeDefs);
38
+ }
21
39
  generateGbnfFile(rootGrammar) {
22
40
  const rules = [{
23
41
  name: "root",
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfGrammarGenerator.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfGrammarGenerator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IACtB,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IACzC,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,qBAAqB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC1D,MAAM,GAAW,CAAC,CAAC;IACnB,WAAW,GAAW,CAAC,CAAC;IAEzB,gBAAgB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,OAAO,OAAO,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,+BAA+B,CAAC,KAAsB;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,gBAAgB,IAAI,IAAI;YACxB,OAAO,gBAAgB,CAAC;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEhD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,gBAAgB,CAAC,WAAmB;QACvC,MAAM,KAAK,GAAsC,CAAC;gBAC9C,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACvB,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,IAAI,OAAO,IAAI,IAAI;gBACf,SAAS;YAEb,KAAK,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,QAAQ;gBACd,OAAO;aACV,CAAC,CAAC;QACP,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,qCAAqC;QACxC,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IAC3C,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfGrammarGenerator.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfGrammarGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAG5C,MAAM,OAAO,oBAAoB;IACtB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClC,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,qBAAqB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC3D,YAAY,GAAG,IAAI,WAAW,EAA2C,CAAC;IAC1E,YAAY,GAAG,IAAI,WAAW,EAA4D,CAAC;IAC3F,gBAAgB,GAAY,KAAK,CAAC;IACjC,MAAM,GAAW,CAAC,CAAC;IACnB,WAAW,GAAW,CAAC,CAAC;IACxB,SAAS,GAAW,CAAC,CAAC;IAEvB,gBAAgB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,OAAO,OAAO,MAAM,EAAE,CAAC;IAC3B,CAAC;IAEM,+BAA+B,CAAC,KAAsB;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,gBAAgB,IAAI,IAAI;YACxB,OAAO,gBAAgB,CAAC;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEhD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,sBAAsB,CAAC,OAAe,EAAE,GAAmB;QAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,gBAAgB,IAAI,IAAI;YACxB,OAAO,gBAAgB,CAAC;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEhD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,YAAY,CAAC,SAAyC;QACzD,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAEM,gBAAgB,CAAC,WAAmB;QACvC,MAAM,KAAK,GAAsC,CAAC;gBAC9C,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACvB,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,IAAI,OAAO,IAAI,IAAI;gBACf,SAAS;YAEb,KAAK,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,QAAQ;gBACd,OAAO;aACV,CAAC,CAAC;QACP,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,qCAAqC;QACxC,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IAC3C,CAAC;CACJ"}
@@ -6,5 +6,6 @@ export declare abstract class GbnfTerminal {
6
6
  protected getRuleName(grammarGenerator: GbnfGrammarGenerator): string;
7
7
  abstract getGrammar(grammarGenerator: GbnfGrammarGenerator): string;
8
8
  protected getGrammarFromResolve(grammarGenerator: GbnfGrammarGenerator): string;
9
- resolve(grammarGenerator: GbnfGrammarGenerator): string;
9
+ private _getRootRuleName;
10
+ resolve(grammarGenerator: GbnfGrammarGenerator, resolveAsRootGrammar?: boolean): string;
10
11
  }
@@ -14,7 +14,18 @@ export class GbnfTerminal {
14
14
  getGrammarFromResolve(grammarGenerator) {
15
15
  return this.getGrammar(grammarGenerator);
16
16
  }
17
- resolve(grammarGenerator) {
17
+ _getRootRuleName(grammarGenerator) {
18
+ if (this._ruleName != null)
19
+ return this._ruleName;
20
+ const ruleName = grammarGenerator.usedRootRuleName
21
+ ? this.getRuleName(grammarGenerator)
22
+ : "root";
23
+ this._ruleName = ruleName;
24
+ if (ruleName === "root")
25
+ grammarGenerator.usedRootRuleName = true;
26
+ return ruleName;
27
+ }
28
+ resolve(grammarGenerator, resolveAsRootGrammar = false) {
18
29
  if (this._ruleName != null)
19
30
  return this._ruleName;
20
31
  const grammar = this.getGrammarFromResolve(grammarGenerator);
@@ -23,7 +34,11 @@ export class GbnfTerminal {
23
34
  this._ruleName = existingRuleName;
24
35
  return existingRuleName;
25
36
  }
26
- const ruleName = this.getRuleName(grammarGenerator);
37
+ const ruleName = resolveAsRootGrammar
38
+ ? this._getRootRuleName(grammarGenerator)
39
+ : this.getRuleName(grammarGenerator);
40
+ if (resolveAsRootGrammar)
41
+ return grammar;
27
42
  if (grammar === ruleName) {
28
43
  this._ruleName = ruleName;
29
44
  return ruleName;
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfTerminal.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfTerminal.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IACtB,SAAS,GAAkB,IAAI,CAAC;IAExC,uCAAuC;IAC7B,gBAAgB,CAAC,gBAAsC;QAC7D,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC;IAES,WAAW,CAAC,gBAAsC;QACxD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAIS,qBAAqB,CAAC,gBAAsC;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IAEM,OAAO,CAAC,gBAAsC;QACjD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAE7D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAClC,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEpD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfTerminal.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/GbnfTerminal.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IACtB,SAAS,GAAkB,IAAI,CAAC;IAExC,uCAAuC;IAC7B,gBAAgB,CAAC,gBAAsC;QAC7D,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC;IAES,WAAW,CAAC,gBAAsC;QACxD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAIS,qBAAqB,CAAC,gBAAsC;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IAEO,gBAAgB,CAAC,gBAAsC;QAC3D,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB;YAC9C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,QAAQ,KAAK,MAAM;YACnB,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,OAAO,CAAC,gBAAsC,EAAE,uBAAgC,KAAK;QACxF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAE7D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAClC,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAG,oBAAoB;YACjC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEzC,IAAI,oBAAoB;YACpB,OAAO,OAAO,CAAC;QAEnB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ"}
@@ -5,7 +5,7 @@ export function getGbnfGrammarForGbnfJsonSchema(schema, { allowNewLines = true,
5
5
  const grammarGenerator = new GbnfGrammarGenerator();
6
6
  const scopeState = new GbnfJsonScopeState({ allowNewLines, scopePadSpaces });
7
7
  const rootTerminal = getGbnfJsonTerminalForGbnfJsonSchema(schema, grammarGenerator, scopeState);
8
- const rootGrammar = rootTerminal.getGrammar(grammarGenerator);
8
+ const rootGrammar = rootTerminal.resolve(grammarGenerator, true);
9
9
  return grammarGenerator.generateGbnfFile(rootGrammar + ` "${"\\n".repeat(4)}"` + " [\\n]*");
10
10
  }
11
11
  //# sourceMappingURL=getGbnfGrammarForGbnfJsonSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getGbnfGrammarForGbnfJsonSchema.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oCAAoC,EAAC,MAAM,iDAAiD,CAAC;AACrG,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAGjE,MAAM,UAAU,+BAA+B,CAAC,MAAgC,EAAE,EAC9E,aAAa,GAAG,IAAI,EACpB,cAAc,GAAG,CAAC,KAIlB,EAAE;IACF,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,EAAC,aAAa,EAAE,cAAc,EAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,oCAAoC,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAChG,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE9D,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"getGbnfGrammarForGbnfJsonSchema.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oCAAoC,EAAC,MAAM,iDAAiD,CAAC;AACrG,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAGjE,MAAM,UAAU,+BAA+B,CAAC,MAAgC,EAAE,EAC9E,aAAa,GAAG,IAAI,EACpB,cAAc,GAAG,CAAC,KAIlB,EAAE;IACF,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,EAAC,aAAa,EAAE,cAAc,EAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,oCAAoC,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAChG,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAEjE,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAChG,CAAC"}
@@ -5,5 +5,5 @@ export declare class GbnfGrammar extends GbnfTerminal {
5
5
  readonly resolveToRawGrammar: boolean;
6
6
  constructor(grammar: string | string[], resolveToRawGrammar?: boolean);
7
7
  getGrammar(): string;
8
- resolve(grammarGenerator: GbnfGrammarGenerator): string;
8
+ resolve(grammarGenerator: GbnfGrammarGenerator, resolveAsRootGrammar?: boolean): string;
9
9
  }
@@ -14,10 +14,10 @@ export class GbnfGrammar extends GbnfTerminal {
14
14
  .join(" ");
15
15
  return this.grammar;
16
16
  }
17
- resolve(grammarGenerator) {
17
+ resolve(grammarGenerator, resolveAsRootGrammar = false) {
18
18
  if (this.resolveToRawGrammar)
19
19
  return this.getGrammar();
20
- return super.resolve(grammarGenerator);
20
+ return super.resolve(grammarGenerator, resolveAsRootGrammar);
21
21
  }
22
22
  }
23
23
  //# sourceMappingURL=GbnfGrammar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfGrammar.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAIhD,MAAM,OAAO,WAAY,SAAQ,YAAY;IACzB,OAAO,CAAoB;IAC3B,mBAAmB,CAAU;IAE7C,YAAmB,OAA0B,EAAE,sBAA+B,KAAK;QAC/E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACnD,CAAC;IAEM,UAAU;QACb,IAAI,IAAI,CAAC,OAAO,YAAY,KAAK;YAC7B,OAAO,IAAI,CAAC,OAAO;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;iBAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEe,OAAO,CAAC,gBAAsC;QAC1D,IAAI,IAAI,CAAC,mBAAmB;YACxB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QAE7B,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfGrammar.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAIhD,MAAM,OAAO,WAAY,SAAQ,YAAY;IACzB,OAAO,CAAoB;IAC3B,mBAAmB,CAAU;IAE7C,YAAmB,OAA0B,EAAE,sBAA+B,KAAK;QAC/E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACnD,CAAC;IAEM,UAAU;QACb,IAAI,IAAI,CAAC,OAAO,YAAY,KAAK;YAC7B,OAAO,IAAI,CAAC,OAAO;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;iBAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEe,OAAO,CAAC,gBAAsC,EAAE,uBAAgC,KAAK;QACjG,IAAI,IAAI,CAAC,mBAAmB;YACxB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QAE7B,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IACjE,CAAC;CACJ"}
@@ -4,6 +4,6 @@ export declare class GbnfNumberValue extends GbnfTerminal {
4
4
  readonly value: number;
5
5
  constructor(value: number);
6
6
  getGrammar(): string;
7
- resolve(grammarGenerator: GbnfGrammarGenerator): string;
7
+ resolve(grammarGenerator: GbnfGrammarGenerator, resolveAsRootGrammar?: boolean): string;
8
8
  protected generateRuleName(grammarGenerator: GbnfGrammarGenerator): string;
9
9
  }
@@ -8,11 +8,11 @@ export class GbnfNumberValue extends GbnfTerminal {
8
8
  getGrammar() {
9
9
  return '"' + JSON.stringify(this.value) + '"';
10
10
  }
11
- resolve(grammarGenerator) {
11
+ resolve(grammarGenerator, resolveAsRootGrammar = false) {
12
12
  const grammar = this.getGrammar();
13
13
  if (grammar.length <= grammarGenerator.getProposedLiteralValueRuleNameLength())
14
14
  return grammar;
15
- return super.resolve(grammarGenerator);
15
+ return super.resolve(grammarGenerator, resolveAsRootGrammar);
16
16
  }
17
17
  generateRuleName(grammarGenerator) {
18
18
  return grammarGenerator.generateRuleNameForLiteralValue(this.value);
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfNumberValue.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfNumberValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAIhD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7B,KAAK,CAAS;IAE9B,YAAmB,KAAa;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEe,UAAU;QACtB,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IAClD,CAAC;IAEe,OAAO,CAAC,gBAAsC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,EAAE;YAC1E,OAAO,OAAO,CAAC;QAEnB,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAEkB,gBAAgB,CAAC,gBAAsC;QACtE,OAAO,gBAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfNumberValue.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfNumberValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAIhD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7B,KAAK,CAAS;IAE9B,YAAmB,KAAa;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEe,UAAU;QACtB,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IAClD,CAAC;IAEe,OAAO,CAAC,gBAAsC,EAAE,uBAAgC,KAAK;QACjG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,EAAE;YAC1E,OAAO,OAAO,CAAC;QAEnB,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IACjE,CAAC;IAEkB,gBAAgB,CAAC,gBAAsC;QACtE,OAAO,gBAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;CACJ"}
@@ -5,5 +5,5 @@ export declare class GbnfOr extends GbnfTerminal {
5
5
  readonly useRawGrammar: boolean;
6
6
  constructor(values: readonly GbnfTerminal[], useRawGrammar?: boolean);
7
7
  getGrammar(grammarGenerator: GbnfGrammarGenerator): string;
8
- resolve(grammarGenerator: GbnfGrammarGenerator): string;
8
+ resolve(grammarGenerator: GbnfGrammarGenerator, resolveAsRootGrammar?: boolean): string;
9
9
  }
@@ -20,7 +20,7 @@ export class GbnfOr extends GbnfTerminal {
20
20
  return mappedValues[0];
21
21
  return "( " + mappedValues.join(" | ") + " )";
22
22
  }
23
- resolve(grammarGenerator) {
23
+ resolve(grammarGenerator, resolveAsRootGrammar = false) {
24
24
  const mappedValues = this.values
25
25
  .map((v) => v.resolve(grammarGenerator))
26
26
  .filter((value) => value !== "" && value !== grammarNoValue);
@@ -28,7 +28,7 @@ export class GbnfOr extends GbnfTerminal {
28
28
  return grammarNoValue;
29
29
  else if (mappedValues.length === 1)
30
30
  return mappedValues[0];
31
- return super.resolve(grammarGenerator);
31
+ return super.resolve(grammarGenerator, resolveAsRootGrammar);
32
32
  }
33
33
  }
34
34
  //# sourceMappingURL=GbnfOr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GbnfOr.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfOr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAG/C,MAAM,OAAO,MAAO,SAAQ,YAAY;IACpB,MAAM,CAA0B;IAChC,aAAa,CAAU;IAEvC,YAAmB,MAA+B,EAAE,gBAAyB,KAAK;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,gBAAsC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACR,IAAI,CAAC,aAAa;YACd,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CACpC,CAAC;aACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,cAAc,CAAC,CAAC;QAEjE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YACzB,OAAO,cAAc,CAAC;aACrB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9B,OAAO,YAAY,CAAC,CAAC,CAAE,CAAC;QAE5B,OAAO,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAClD,CAAC;IAEe,OAAO,CAAC,gBAAsC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,cAAc,CAAC,CAAC;QAEjE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YACzB,OAAO,cAAc,CAAC;aACrB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9B,OAAO,YAAY,CAAC,CAAC,CAAE,CAAC;QAE5B,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;CACJ"}
1
+ {"version":3,"file":"GbnfOr.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfOr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAG/C,MAAM,OAAO,MAAO,SAAQ,YAAY;IACpB,MAAM,CAA0B;IAChC,aAAa,CAAU;IAEvC,YAAmB,MAA+B,EAAE,gBAAyB,KAAK;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,gBAAsC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACR,IAAI,CAAC,aAAa;YACd,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CACpC,CAAC;aACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,cAAc,CAAC,CAAC;QAEjE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YACzB,OAAO,cAAc,CAAC;aACrB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9B,OAAO,YAAY,CAAC,CAAC,CAAE,CAAC;QAE5B,OAAO,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAClD,CAAC;IAEe,OAAO,CAAC,gBAAsC,EAAE,uBAAgC,KAAK;QACjG,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,cAAc,CAAC,CAAC;QAEjE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YACzB,OAAO,cAAc,CAAC;aACrB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9B,OAAO,YAAY,CAAC,CAAC,CAAE,CAAC;QAE5B,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IACjE,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ import { GbnfTerminal } from "../GbnfTerminal.js";
2
+ import { GbnfGrammarGenerator } from "../GbnfGrammarGenerator.js";
3
+ import { GbnfJsonSchema } from "../types.js";
4
+ export declare class GbnfRef extends GbnfTerminal {
5
+ readonly getValueTerminal: () => GbnfTerminal;
6
+ readonly defName: string;
7
+ readonly def: GbnfJsonSchema;
8
+ constructor({ getValueTerminal, defName, def }: {
9
+ getValueTerminal: () => GbnfTerminal;
10
+ defName: string;
11
+ def: GbnfJsonSchema;
12
+ });
13
+ getGrammar(grammarGenerator: GbnfGrammarGenerator): string;
14
+ protected generateRuleName(grammarGenerator: GbnfGrammarGenerator): string;
15
+ }
@@ -0,0 +1,34 @@
1
+ import { GbnfTerminal } from "../GbnfTerminal.js";
2
+ export class GbnfRef extends GbnfTerminal {
3
+ getValueTerminal;
4
+ defName;
5
+ def;
6
+ constructor({ getValueTerminal, defName, def }) {
7
+ super();
8
+ this.getValueTerminal = getValueTerminal;
9
+ this.defName = defName;
10
+ this.def = def;
11
+ }
12
+ getGrammar(grammarGenerator) {
13
+ return this.generateRuleName(grammarGenerator);
14
+ }
15
+ generateRuleName(grammarGenerator) {
16
+ if (!grammarGenerator.defRuleNames.has([this.defName, this.def])) {
17
+ const alreadyGeneratingGrammarForThisRef = grammarGenerator.defRuleNames.get([this.defName, this.def]) === null;
18
+ if (alreadyGeneratingGrammarForThisRef)
19
+ return grammarGenerator.generateRuleNameForDef(this.defName, this.def);
20
+ grammarGenerator.defRuleNames.set([this.defName, this.def], null);
21
+ const grammar = this.getValueTerminal().resolve(grammarGenerator);
22
+ if (grammarGenerator.rules.has(grammar) && grammarGenerator.defRuleNames.get([this.defName, this.def]) === null) {
23
+ grammarGenerator.defRuleNames.set([this.defName, this.def], grammar);
24
+ return grammar;
25
+ }
26
+ const ruleName = grammarGenerator.generateRuleNameForDef(this.defName, this.def);
27
+ grammarGenerator.rules.set(ruleName, grammar);
28
+ grammarGenerator.ruleContentToRuleName.set(grammar, ruleName);
29
+ return ruleName;
30
+ }
31
+ return grammarGenerator.generateRuleNameForDef(this.defName, this.def);
32
+ }
33
+ }
34
+ //# sourceMappingURL=GbnfRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GbnfRef.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKhD,MAAM,OAAO,OAAQ,SAAQ,YAAY;IACrB,gBAAgB,CAAqB;IACrC,OAAO,CAAS;IAChB,GAAG,CAAiB;IAEpC,YAAmB,EACf,gBAAgB,EAChB,OAAO,EACP,GAAG,EAKN;QACG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEe,UAAU,CAAC,gBAAsC;QAC7D,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAEkB,gBAAgB,CAAC,gBAAsC;QACtE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,kCAAkC,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;YAChH,IAAI,kCAAkC;gBAClC,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAE3E,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAElE,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9G,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrE,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE9D,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;CACJ"}
@@ -1,5 +1,8 @@
1
1
  export type GbnfJsonSchemaImmutableType = "string" | "number" | "integer" | "boolean" | "null";
2
- export type GbnfJsonSchema = GbnfJsonBasicSchema | GbnfJsonConstSchema | GbnfJsonEnumSchema | GbnfJsonOneOfSchema | GbnfJsonStringSchema | GbnfJsonObjectSchema | GbnfJsonArraySchema;
2
+ export type GbnfJsonSchema<Defs extends GbnfJsonDefList<Defs> = Record<any, any>> = GbnfJsonBasicSchema | GbnfJsonConstSchema | GbnfJsonEnumSchema | GbnfJsonOneOfSchema<Defs> | GbnfJsonStringSchema | GbnfJsonObjectSchema<string, Defs> | GbnfJsonArraySchema<Defs> | (keyof Defs extends string ? keyof NoInfer<Defs> extends never ? never : GbnfJsonRefSchema<Defs> : never);
3
+ export type GbnfJsonDefList<Defs extends GbnfJsonDefList<NoInfer<Defs>> = {}> = {
4
+ readonly [key: string]: GbnfJsonSchema<NoInfer<Defs>>;
5
+ };
3
6
  export type GbnfJsonBasicSchema = {
4
7
  readonly type: GbnfJsonSchemaImmutableType | readonly GbnfJsonSchemaImmutableType[];
5
8
  /**
@@ -27,14 +30,15 @@ export type GbnfJsonEnumSchema = {
27
30
  */
28
31
  readonly description?: string;
29
32
  };
30
- export type GbnfJsonOneOfSchema = {
31
- readonly oneOf: readonly GbnfJsonSchema[];
33
+ export type GbnfJsonOneOfSchema<Defs extends GbnfJsonDefList<NoInfer<Defs>> = {}> = {
34
+ readonly oneOf: readonly GbnfJsonSchema<NoInfer<Defs>>[];
32
35
  /**
33
36
  * A description of what you expect the model to set this value to.
34
37
  *
35
38
  * Only passed to the model when using function calling, and has no effect when using JSON Schema grammar directly.
36
39
  */
37
40
  readonly description?: string;
41
+ readonly $defs?: Defs;
38
42
  };
39
43
  export type GbnfJsonStringSchema = GbnfJsonBasicStringSchema | GbnfJsonFormatStringSchema;
40
44
  export type GbnfJsonBasicStringSchema = {
@@ -68,15 +72,15 @@ export type GbnfJsonFormatStringSchema = {
68
72
  */
69
73
  readonly description?: string;
70
74
  };
71
- export type GbnfJsonObjectSchema<Keys extends string = string> = {
75
+ export type GbnfJsonObjectSchema<Keys extends string = string, Defs extends GbnfJsonDefList<NoInfer<Defs>> = {}> = {
72
76
  readonly type: "object";
73
77
  readonly properties?: {
74
- readonly [key in Keys]: GbnfJsonSchema;
78
+ readonly [key in Keys]: GbnfJsonSchema<NoInfer<Defs>>;
75
79
  };
76
80
  /**
77
81
  * Unlike the JSON Schema spec, `additionalProperties` defaults to `false` to avoid breaking existing code.
78
82
  */
79
- readonly additionalProperties?: boolean | GbnfJsonSchema;
83
+ readonly additionalProperties?: boolean | GbnfJsonSchema<NoInfer<Defs>>;
80
84
  /**
81
85
  * Make sure you define `additionalProperties` for this to have any effect.
82
86
  *
@@ -109,11 +113,12 @@ export type GbnfJsonObjectSchema<Keys extends string = string> = {
109
113
  * Only passed to the model when using function calling, and has no effect when using JSON Schema grammar directly.
110
114
  */
111
115
  readonly description?: string;
116
+ readonly $defs?: Defs;
112
117
  };
113
- export type GbnfJsonArraySchema = {
118
+ export type GbnfJsonArraySchema<Defs extends GbnfJsonDefList<NoInfer<Defs>> = {}> = {
114
119
  readonly type: "array";
115
- readonly items?: GbnfJsonSchema;
116
- readonly prefixItems?: readonly GbnfJsonSchema[];
120
+ readonly items?: GbnfJsonSchema<NoInfer<Defs>>;
121
+ readonly prefixItems?: readonly GbnfJsonSchema<NoInfer<Defs>>[];
117
122
  /**
118
123
  * When using `minItems` and/or `maxItems`,
119
124
  * ensure to inform the model as part of the prompt what your expectations are regarding the length of the array.
@@ -132,42 +137,54 @@ export type GbnfJsonArraySchema = {
132
137
  * Only passed to the model when using function calling, and has no effect when using JSON Schema grammar directly.
133
138
  */
134
139
  readonly description?: string;
140
+ readonly $defs?: Defs;
141
+ };
142
+ export type GbnfJsonRefSchema<Defs extends GbnfJsonDefList<NoInfer<Defs>> = {}> = {
143
+ readonly $ref: keyof NoInfer<Defs> extends never ? never : `#/$defs/${OnlyStringKeys<NoInfer<Defs>>}`;
144
+ /**
145
+ * A description of what you expect the model to set this value to.
146
+ *
147
+ * Only passed to the model when using function calling, and has no effect when using JSON Schema grammar directly.
148
+ */
149
+ readonly description?: string;
150
+ readonly $defs?: Defs;
135
151
  };
136
152
  /**
137
153
  * Converts a GBNF JSON schema to a TypeScript type
138
154
  */
139
155
  export type GbnfJsonSchemaToType<T> = GbnfJsonSchemaToTSType<T>;
140
- export type GbnfJsonSchemaToTSType<T> = Readonly<GbnfJsonBasicSchema> extends T ? undefined : undefined extends T ? undefined : T extends GbnfJsonBasicStringSchema ? GbnfJsonBasicStringSchemaToType<T> : T extends GbnfJsonFormatStringSchema ? string : T extends GbnfJsonBasicSchema ? GbnfJsonBasicSchemaToType<T["type"]> : T extends GbnfJsonConstSchema ? T["const"] : T extends GbnfJsonEnumSchema ? T["enum"][number] : T extends GbnfJsonOneOfSchema ? GbnfJsonSchemaToType<T["oneOf"][number]> : T extends GbnfJsonObjectSchema ? GbnfJsonObjectSchemaToType<T> : T extends GbnfJsonArraySchema ? ArrayTypeToType<T> : undefined;
156
+ export type GbnfJsonSchemaToTSType<T, Defs extends GbnfJsonDefList<NoInfer<Defs>> = {}> = Readonly<GbnfJsonBasicSchema> extends T ? undefined : undefined extends T ? undefined : T extends GbnfJsonBasicStringSchema ? GbnfJsonBasicStringSchemaToType<T> : T extends GbnfJsonFormatStringSchema ? string : T extends GbnfJsonBasicSchema ? GbnfJsonBasicSchemaToType<T["type"]> : T extends GbnfJsonConstSchema ? T["const"] : T extends GbnfJsonEnumSchema ? T["enum"][number] : T extends GbnfJsonOneOfSchema<Record<any, any>> ? GbnfJsonSchemaToTSType<T["oneOf"][number], CombineDefs<NoInfer<Defs>, T["$defs"]>> : T extends GbnfJsonObjectSchema<string, Record<any, any>> ? GbnfJsonObjectSchemaToType<T, NoInfer<Defs>> : T extends GbnfJsonArraySchema<Record<any, any>> ? ArrayTypeToType<T, CombineDefs<NoInfer<Defs>, T["$defs"]>> : T extends GbnfJsonRefSchema<any> ? GbnfJsonRefSchemaToType<T, CombineDefs<NoInfer<Defs>, T["$defs"]>> : undefined;
141
157
  type GbnfJsonBasicStringSchemaToType<T extends GbnfJsonBasicStringSchema> = T["maxLength"] extends 0 ? "" : string;
142
- type GbnfJsonBasicSchemaToType<T extends GbnfJsonBasicSchema["type"]> = T extends GbnfJsonSchemaImmutableType ? ImmutableTypeToType<T> : T extends GbnfJsonSchemaImmutableType[] ? ImmutableTypeToType<T[number]> : never;
158
+ type GbnfJsonBasicSchemaToType<T extends GbnfJsonBasicSchema["type"]> = T extends GbnfJsonSchemaImmutableType ? ImmutableTypeToType<T> : T[number] extends GbnfJsonSchemaImmutableType ? ImmutableTypeToType<T[number]> : never;
143
159
  type ImmutableTypeToType<T extends GbnfJsonSchemaImmutableType> = T extends "string" ? string : T extends "number" ? number : T extends "integer" ? number : T extends "boolean" ? boolean : T extends "null" ? null : never;
144
- type ArrayTypeToType<T extends GbnfJsonArraySchema, MinItems extends number = T["minItems"] extends number ? T["prefixItems"] extends readonly GbnfJsonSchema[] ? keyof T["prefixItems"] extends T["minItems"] ? T["prefixItems"]["length"] : T["minItems"] : T["minItems"] : T["prefixItems"] extends readonly GbnfJsonSchema[] ? T["prefixItems"]["length"] : 0> = T["prefixItems"] extends readonly GbnfJsonSchema[] ? (MinItems extends T["prefixItems"]["length"] ? (T["maxItems"] extends MinItems ? [
145
- ...GbnfJsonOrderedArrayTypes<T["prefixItems"]>,
146
- ...IndexRangeWithSkip<MinItems, T["prefixItems"]["length"], T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToType<T["items"]> : GbnfJsonAnyValue>
160
+ type ArrayTypeToType<T extends GbnfJsonArraySchema<Record<any, any>>, Defs extends GbnfJsonDefList<Defs> = {}, MinItems extends number = T["minItems"] extends number ? T["prefixItems"] extends readonly GbnfJsonSchema[] ? keyof T["prefixItems"] extends T["minItems"] ? T["prefixItems"]["length"] : T["minItems"] : T["minItems"] : T["prefixItems"] extends readonly GbnfJsonSchema[] ? T["prefixItems"]["length"] : 0> = T["prefixItems"] extends readonly GbnfJsonSchema[] ? (MinItems extends T["prefixItems"]["length"] ? (T["maxItems"] extends MinItems ? [
161
+ ...GbnfJsonOrderedArrayTypes<T["prefixItems"], CombineDefs<Defs, T["$defs"]>>,
162
+ ...IndexRangeWithSkip<MinItems, T["prefixItems"]["length"], T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>> : GbnfJsonAnyValue>
147
163
  ] : [
148
- ...GbnfJsonOrderedArrayTypes<T["prefixItems"]>,
149
- ...(T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToType<T["items"]> : GbnfJsonAnyValue)[]
164
+ ...GbnfJsonOrderedArrayTypes<T["prefixItems"], CombineDefs<Defs, T["$defs"]>>,
165
+ ...(T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>> : GbnfJsonAnyValue)[]
150
166
  ]) : T["maxItems"] extends MinItems ? [
151
- ...GbnfJsonOrderedArrayTypes<T["prefixItems"]>,
152
- ...(T["items"] extends GbnfJsonSchema ? IndexRangeWithSkip<T["maxItems"], T["prefixItems"]["length"], GbnfJsonSchemaToType<T["items"]>> : IndexRangeWithSkip<T["maxItems"], T["prefixItems"]["length"], GbnfJsonAnyValue>)
167
+ ...GbnfJsonOrderedArrayTypes<T["prefixItems"], CombineDefs<Defs, T["$defs"]>>,
168
+ ...(T["items"] extends GbnfJsonSchema ? IndexRangeWithSkip<T["maxItems"], T["prefixItems"]["length"], GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>>> : IndexRangeWithSkip<T["maxItems"], T["prefixItems"]["length"], GbnfJsonAnyValue>)
153
169
  ] : [
154
- ...GbnfJsonOrderedArrayTypes<T["prefixItems"]>,
155
- ...IndexRangeWithSkip<MinItems, T["prefixItems"]["length"], T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToType<T["items"]> : GbnfJsonAnyValue>,
156
- ...(T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToType<T["items"]> : GbnfJsonAnyValue)[]
157
- ]) : T["items"] extends GbnfJsonSchema ? (MinItems extends 0 ? GbnfJsonSchemaToType<T["items"]>[] : T["maxItems"] extends MinItems ? IndexRange<T["maxItems"], GbnfJsonSchemaToType<T["items"]>> : [
158
- ...IndexRange<MinItems, GbnfJsonSchemaToType<T["items"]>>,
159
- ...GbnfJsonSchemaToType<T["items"]>[]
170
+ ...GbnfJsonOrderedArrayTypes<T["prefixItems"], CombineDefs<Defs, T["$defs"]>>,
171
+ ...IndexRangeWithSkip<MinItems, T["prefixItems"]["length"], T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>> : GbnfJsonAnyValue>,
172
+ ...(T["items"] extends GbnfJsonSchema ? GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>> : GbnfJsonAnyValue)[]
173
+ ]) : T["items"] extends GbnfJsonSchema ? (MinItems extends 0 ? GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>>[] : T["maxItems"] extends MinItems ? IndexRange<T["maxItems"], GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>>> : [
174
+ ...IndexRange<MinItems, GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>>>,
175
+ ...GbnfJsonSchemaToTSType<T["items"], CombineDefs<Defs, T["$defs"]>>[]
160
176
  ]) : (MinItems extends 0 ? GbnfJsonAnyValue[] : T["maxItems"] extends MinItems ? IndexRange<T["maxItems"], GbnfJsonAnyValue> : [
161
177
  ...IndexRange<MinItems, GbnfJsonAnyValue>,
162
178
  ...GbnfJsonAnyValue[]
163
179
  ]);
164
- type GbnfJsonObjectSchemaToType<T extends GbnfJsonObjectSchema, Props extends Readonly<Record<string, GbnfJsonSchema>> | undefined = T["properties"], AdditionalProps extends true | false | GbnfJsonSchema | undefined = T["additionalProperties"], PropsMap = Props extends undefined ? {} : {
165
- -readonly [P in keyof Props]: GbnfJsonSchemaToType<Props[P]>;
180
+ type GbnfJsonObjectSchemaToType<T extends GbnfJsonObjectSchema<string, Record<any, any>>, Defs extends GbnfJsonDefList<Defs> = {}, Props extends Readonly<Record<string, GbnfJsonSchema>> | undefined = T["properties"], AdditionalProps extends true | false | GbnfJsonSchema | undefined = T["additionalProperties"], PropsMap = Props extends undefined ? {} : {
181
+ -readonly [P in keyof Props]: GbnfJsonSchemaToTSType<Props[P], CombineDefs<Defs, T["$defs"]>>;
166
182
  }, Res = AdditionalProps extends undefined | false ? PropsMap : AdditionalProps extends true ? PropsMap & {
167
183
  [key: string]: GbnfJsonAnyValue;
168
184
  } : AdditionalProps extends GbnfJsonSchema ? PropsMap & {
169
- [key: string]: GbnfJsonSchemaToType<AdditionalProps>;
185
+ [key: string]: GbnfJsonSchemaToTSType<AdditionalProps, CombineDefs<Defs, T["$defs"]>>;
170
186
  } : PropsMap> = Res;
187
+ type GbnfJsonRefSchemaToType<T extends GbnfJsonRefSchema<Defs>, Defs extends GbnfJsonDefList<Defs> = {}> = T["$ref"] extends `#/$defs/${infer Key}` ? Key extends keyof Defs ? GbnfJsonSchemaToTSType<Defs[Key], Defs> : never : never;
171
188
  type GbnfJsonAnyValue = string | number | boolean | null | GbnfJsonAnyValue[] | {
172
189
  [key: string]: GbnfJsonAnyValue;
173
190
  };
@@ -178,14 +195,19 @@ export declare function isGbnfJsonBasicStringSchema(schema: GbnfJsonSchema): sch
178
195
  export declare function isGbnfJsonFormatStringSchema(schema: GbnfJsonSchema): schema is GbnfJsonFormatStringSchema;
179
196
  export declare function isGbnfJsonObjectSchema(schema: GbnfJsonSchema): schema is GbnfJsonObjectSchema;
180
197
  export declare function isGbnfJsonArraySchema(schema: GbnfJsonSchema): schema is GbnfJsonArraySchema;
198
+ export declare function isGbnfJsonRefSchema(schema: GbnfJsonSchema): schema is GbnfJsonRefSchema<Record<any, any>>;
181
199
  export declare function isGbnfJsonBasicSchemaIncludesType<T extends GbnfJsonSchemaImmutableType>(schema: GbnfJsonBasicSchema, type: T): schema is GbnfJsonBasicSchema & {
182
200
  type: T | (T | GbnfJsonSchemaImmutableType)[];
183
201
  };
202
+ type OnlyStringKeys<T extends object> = {
203
+ [K in keyof T]: K extends string ? K : never;
204
+ }[keyof T];
205
+ type CombineDefs<Defs1 extends GbnfJsonDefList<Defs1>, Param2 extends Defs1 | Defs2 | undefined, Defs2 extends GbnfJsonDefList<Defs2> = {}> = undefined extends NoInfer<Param2> ? Defs1 : Defs1 & Param2;
184
206
  type IndexRange<Length extends number, FillType = number, Res = _IndexRange<[], Length, FillType>> = Res;
185
207
  type _IndexRange<Value extends FillType[], MaxLength extends number, FillType = number> = Value["length"] extends MaxLength ? Value : _IndexRange<[...Value, FillType], MaxLength, FillType>;
186
208
  type IndexRangeWithSkip<Length extends number, SkipFirst extends number, FillType, Res = _IndexRangeWithSkip<[], IndexRange<SkipFirst>, Length, FillType>> = Res;
187
209
  type _IndexRangeWithSkip<Value extends FillType[], ConditionValue extends number[], MaxLength extends number, FillType> = ConditionValue["length"] extends MaxLength ? Value : _IndexRangeWithSkip<[...Value, FillType], [...ConditionValue, ConditionValue["length"]], MaxLength, FillType>;
188
- type GbnfJsonOrderedArrayTypes<T extends readonly GbnfJsonSchema[]> = {
189
- -readonly [P in keyof T]: GbnfJsonSchemaToType<T[P]>;
210
+ type GbnfJsonOrderedArrayTypes<T extends readonly GbnfJsonSchema[], Defs extends GbnfJsonDefList<Defs> = {}> = {
211
+ -readonly [P in keyof T]: GbnfJsonSchemaToTSType<T[P], Defs>;
190
212
  };
191
213
  export {};
@@ -19,6 +19,9 @@ export function isGbnfJsonObjectSchema(schema) {
19
19
  export function isGbnfJsonArraySchema(schema) {
20
20
  return schema.type === "array";
21
21
  }
22
+ export function isGbnfJsonRefSchema(schema) {
23
+ return typeof schema.$ref === "string";
24
+ }
22
25
  export function isGbnfJsonBasicSchemaIncludesType(schema, type) {
23
26
  if (schema.type instanceof Array)
24
27
  return schema.type.includes(type);
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/types.ts"],"names":[],"mappings":"AAoTA,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,OAAQ,MAA8B,CAAC,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACvD,OAAQ,MAA6B,CAAC,IAAI,IAAI,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,OAAQ,MAA8B,CAAC,KAAK,IAAI,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAC9D,OAAQ,MAAoC,CAAC,IAAI,KAAK,QAAQ,IAAK,MAAqC,CAAC,MAAM,IAAI,IAAI,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAsB;IAC/D,OAAQ,MAAqC,CAAC,IAAI,KAAK,QAAQ,IAAK,MAAqC,CAAC,MAAM,IAAI,IAAI,CAAC;AAC7H,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IACzD,OAAQ,MAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,OAAQ,MAA8B,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC7C,MAA2B,EAAE,IAAO;IAEpC,IAAI,MAAM,CAAC,IAAI,YAAY,KAAK;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/gbnfJson/types.ts"],"names":[],"mappings":"AA8WA,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,OAAQ,MAA8B,CAAC,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACvD,OAAQ,MAA6B,CAAC,IAAI,IAAI,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,OAAQ,MAA8B,CAAC,KAAK,IAAI,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAC9D,OAAQ,MAAoC,CAAC,IAAI,KAAK,QAAQ,IAAK,MAAqC,CAAC,MAAM,IAAI,IAAI,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAsB;IAC/D,OAAQ,MAAqC,CAAC,IAAI,KAAK,QAAQ,IAAK,MAAqC,CAAC,MAAM,IAAI,IAAI,CAAC;AAC7H,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IACzD,OAAQ,MAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,OAAQ,MAA8B,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACtD,OAAO,OAAQ,MAA4B,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC7C,MAA2B,EAAE,IAAO;IAEpC,IAAI,MAAM,CAAC,IAAI,YAAY,KAAK;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { MultiKeyMap } from "lifecycle-utils";
2
+ import { GbnfJsonSchema } from "../types.js";
3
+ export declare class DefScopeDefs {
4
+ defScopeDefs: MultiKeyMap<[string, GbnfJsonSchema], Record<string, GbnfJsonSchema>>;
5
+ registerDefs(scopeDefs: Record<string, GbnfJsonSchema>): void;
6
+ }
7
+ export declare function joinDefs(parent: Record<string, GbnfJsonSchema>, current?: Record<string, GbnfJsonSchema>): Record<string, GbnfJsonSchema>;