@qoretechnologies/reqraft 0.10.62 → 0.10.63-pr.142.g0b675cd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/dist/components/Description/describedControl.d.ts +48 -0
- package/dist/components/Description/describedControl.d.ts.map +1 -0
- package/dist/components/Description/describedControl.js +81 -0
- package/dist/components/Description/describedControl.js.map +1 -0
- package/dist/components/Description/index.d.ts.map +1 -1
- package/dist/components/Description/index.js +3 -2
- package/dist/components/Description/index.js.map +1 -1
- package/dist/components/colorValue/colorValue.d.ts +59 -0
- package/dist/components/colorValue/colorValue.d.ts.map +1 -0
- package/dist/components/colorValue/colorValue.js +245 -0
- package/dist/components/colorValue/colorValue.js.map +1 -0
- package/dist/components/colorValue/index.d.ts +34 -0
- package/dist/components/colorValue/index.d.ts.map +1 -0
- package/dist/components/colorValue/index.js +136 -0
- package/dist/components/colorValue/index.js.map +1 -0
- package/dist/components/colorValue/labels.d.ts +12 -0
- package/dist/components/colorValue/labels.d.ts.map +1 -0
- package/dist/components/colorValue/labels.js +11 -0
- package/dist/components/colorValue/labels.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +1 -1
- package/dist/components/composer/Composer.d.ts.map +1 -1
- package/dist/components/composer/Composer.js +2 -2
- package/dist/components/composer/Composer.js.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +10 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +30 -13
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +11 -6
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +47 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +151 -83
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +29 -3
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +34 -1
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +487 -87
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
- package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
- package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
- package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +24 -3
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +19 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/compactRowStyles.d.ts +0 -1
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +12 -20
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
- package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
- package/dist/components/form/engine/compactToolbarColors.js +21 -0
- package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +24 -8
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +77 -109
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/readFirstColors.d.ts +30 -0
- package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
- package/dist/components/form/engine/readFirstColors.js +51 -0
- package/dist/components/form/engine/readFirstColors.js.map +1 -0
- package/dist/components/form/engine/rowFocus.d.ts +2 -0
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +26 -3
- package/dist/components/form/engine/rowFocus.js.map +1 -1
- package/dist/components/form/engine/typeChoices.d.ts +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.js +2 -1
- package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
- package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
- package/dist/components/form/engine/variants/variantParts.js +25 -17
- package/dist/components/form/engine/variants/variantParts.js.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.js +3 -3
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +41 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +396 -99
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js +4 -2
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +24 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +121 -77
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/item.d.ts +6 -2
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/item.js +19 -5
- package/dist/components/form/expressions/builder/item.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +22 -5
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +35 -9
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
- package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/textOfExpression.js +37 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
- package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressionType.js +181 -0
- package/dist/components/form/expressions/useExpressionType.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +7 -7
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +20 -7
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.js +24 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
- package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +81 -36
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
- package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
- package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
- package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
- package/dist/components/form/fields/binary/Binary.js +23 -3
- package/dist/components/form/fields/binary/Binary.js.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
- package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.js +9 -1
- package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
- package/dist/components/form/fields/color/Color.d.ts +103 -16
- package/dist/components/form/fields/color/Color.d.ts.map +1 -1
- package/dist/components/form/fields/color/Color.js +611 -16
- package/dist/components/form/fields/color/Color.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +34 -3
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
- package/dist/components/form/fields/emittedValues.js +24 -1
- package/dist/components/form/fields/emittedValues.js.map +1 -1
- package/dist/components/form/fields/file/File.d.ts +1 -1
- package/dist/components/form/fields/file/File.d.ts.map +1 -1
- package/dist/components/form/fields/file/File.js +4 -2
- package/dist/components/form/fields/file/File.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +17 -3
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +6 -0
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +41 -6
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/object/Object.d.ts +1 -1
- package/dist/components/form/fields/object/Object.d.ts.map +1 -1
- package/dist/components/form/fields/object/Object.js +4 -2
- package/dist/components/form/fields/object/Object.js.map +1 -1
- package/dist/components/form/fields/pendingEdit.d.ts +52 -0
- package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
- package/dist/components/form/fields/pendingEdit.js +79 -0
- package/dist/components/form/fields/pendingEdit.js.map +1 -0
- package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +190 -81
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
- package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/index.js +8 -4
- package/dist/components/form/fields/schema-definition/index.js.map +1 -1
- package/dist/components/form/fields/select/Select.d.ts +2 -0
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +19 -10
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +8 -2
- package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
- package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
- package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
- package/dist/components/form/fields/select/unavailableRow.js +55 -0
- package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +5 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +11 -4
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +83 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +535 -85
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
- package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateText.js +8 -4
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/writtenAsText.d.ts +55 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +188 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +10 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +23 -1
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -7
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
- package/dist/components/log/Log.d.ts.map +1 -1
- package/dist/components/log/Log.js +15 -7
- package/dist/components/log/Log.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +19 -10
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +196 -0
- package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +51 -136
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +27 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +66 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +5 -1
- package/dist/components/smartEditor/index.d.ts.map +1 -1
- package/dist/components/smartEditor/index.js +19 -1
- package/dist/components/smartEditor/index.js.map +1 -1
- package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +94 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +12 -1
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +22 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +86 -17
- package/dist/components/smartEditor/useLspHover.js.map +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.js +15 -5
- package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +27 -6
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketHeader.js +20 -2
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +9 -4
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +36 -11
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +43 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +70 -0
- package/dist/helpers/descriptionTooltip.js.map +1 -0
- package/dist/helpers/domProps.d.ts +5 -0
- package/dist/helpers/domProps.d.ts.map +1 -0
- package/dist/helpers/domProps.js +47 -0
- package/dist/helpers/domProps.js.map +1 -0
- package/dist/helpers/expressions.d.ts +107 -2
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +223 -8
- package/dist/helpers/expressions.js.map +1 -1
- package/dist/helpers/hoveringPointer.d.ts +26 -0
- package/dist/helpers/hoveringPointer.d.ts.map +1 -0
- package/dist/helpers/hoveringPointer.js +29 -0
- package/dist/helpers/hoveringPointer.js.map +1 -0
- package/dist/helpers/markdownText.d.ts +14 -0
- package/dist/helpers/markdownText.d.ts.map +1 -0
- package/dist/helpers/markdownText.js +160 -0
- package/dist/helpers/markdownText.js.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +262 -0
- package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
- package/dist/helpers/readableColors.d.ts +36 -0
- package/dist/helpers/readableColors.d.ts.map +1 -0
- package/dist/helpers/readableColors.js +116 -0
- package/dist/helpers/readableColors.js.map +1 -0
- package/dist/helpers/templateItems.d.ts +2 -2
- package/dist/helpers/templateItems.d.ts.map +1 -1
- package/dist/helpers/templateItems.js +6 -4
- package/dist/helpers/templateItems.js.map +1 -1
- package/dist/helpers/templates.d.ts +26 -1
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +41 -6
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +9 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +139 -33
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useQorusTypes.d.ts +7 -15
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +25 -166
- package/dist/hooks/useQorusTypes.js.map +1 -1
- package/dist/hooks/useReadableIntentShade.d.ts +9 -0
- package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
- package/dist/hooks/useReadableIntentShade.js +23 -0
- package/dist/hooks/useReadableIntentShade.js.map +1 -0
- package/dist/hooks/useReadableOpacity.d.ts +6 -0
- package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
- package/dist/hooks/useReadableOpacity.js +17 -0
- package/dist/hooks/useReadableOpacity.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
- package/dist/tracking/ui/ExperimentCard.js +26 -10
- package/dist/tracking/ui/ExperimentCard.js.map +1 -1
- package/dist/tracking/ui/card.d.ts +2 -2
- package/dist/tracking/ui/card.d.ts.map +1 -1
- package/dist/tracking/ui/card.js +2 -2
- package/dist/tracking/ui/card.js.map +1 -1
- package/dist/tracking/ui/readable.d.ts +14 -0
- package/dist/tracking/ui/readable.d.ts.map +1 -0
- package/dist/tracking/ui/readable.js +60 -0
- package/dist/tracking/ui/readable.js.map +1 -0
- package/package.json +14 -5
- package/.claude/CLAUDE.md +0 -317
- package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
- package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
- package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
- package/.tasks/FIELD_STACK_REPORT.md +0 -234
- package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
- package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
- package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
- package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
- package/.tasks/INDEX.md +0 -111
- package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
- package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
- package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
- package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
- package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
- package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
- package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
- package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
- package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
- package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
- package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
- package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
- package/CODE_OF_CONDUCT.md +0 -105
- package/CONTRIBUTING.MD +0 -78
- package/SECURITY.md +0 -3
- package/chromatic.config.json +0 -5
- package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
- package/design/COMPACT_INFO_DISPLAY.md +0 -87
- package/design/COMPACT_PARITY.md +0 -85
- package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
- package/design/FORM_ENGINE_COMPACT.md +0 -300
- package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
- package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
- package/design/IDE_INTEGRATION.md +0 -64
- package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
- package/design/SELECT_DIALOG_FLOOR.md +0 -86
- package/design/SMART_EDITOR_UX.md +0 -438
- package/design/TRACKING.md +0 -290
- package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
- package/src/components/Description/index.tsx +0 -254
- package/src/components/Description/markdownRendererContext.tsx +0 -29
- package/src/components/FocusedEditing/index.tsx +0 -50
- package/src/components/codeSize/index.tsx +0 -79
- package/src/components/composer/Composer.stories.tsx +0 -238
- package/src/components/composer/Composer.tsx +0 -554
- package/src/components/composer/helpers.ts +0 -74
- package/src/components/composer/index.ts +0 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
- package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
- package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
- package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
- package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
- package/src/components/dpqlEditor/dpqlTags.ts +0 -114
- package/src/components/dpqlEditor/index.ts +0 -41
- package/src/components/dpqlEditor/types.ts +0 -203
- package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
- package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
- package/src/components/form/engine/CompactRow.tsx +0 -2620
- package/src/components/form/engine/CompactToolbar.tsx +0 -330
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
- package/src/components/form/engine/FormEngine.tsx +0 -4569
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
- package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
- package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
- package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
- package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
- package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
- package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
- package/src/components/form/engine/compactRowContext.ts +0 -148
- package/src/components/form/engine/compactRowStyles.ts +0 -898
- package/src/components/form/engine/compactToolbarContext.ts +0 -69
- package/src/components/form/engine/optionActions.ts +0 -128
- package/src/components/form/engine/optionsContext.ts +0 -24
- package/src/components/form/engine/readFirst.ts +0 -1077
- package/src/components/form/engine/rendererTypes.ts +0 -107
- package/src/components/form/engine/revealRow.ts +0 -123
- package/src/components/form/engine/rowFocus.ts +0 -101
- package/src/components/form/engine/rowMenuContext.ts +0 -159
- package/src/components/form/engine/rowOpenPicker.ts +0 -27
- package/src/components/form/engine/typeChoices.ts +0 -63
- package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
- package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
- package/src/components/form/engine/variants/VariantCards.tsx +0 -212
- package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
- package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
- package/src/components/form/engine/variants/focusDemo.ts +0 -145
- package/src/components/form/engine/variants/variantModel.ts +0 -223
- package/src/components/form/engine/variants/variantParts.tsx +0 -313
- package/src/components/form/expressions/DpqlRendering.tsx +0 -85
- package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
- package/src/components/form/expressions/ExpressionField.tsx +0 -503
- package/src/components/form/expressions/argumentPresence.ts +0 -213
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
- package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
- package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
- package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
- package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
- package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
- package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
- package/src/components/form/expressions/builder/index.tsx +0 -1545
- package/src/components/form/expressions/builder/item.tsx +0 -89
- package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
- package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
- package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
- package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
- package/src/components/form/expressions/mockExpressions.ts +0 -317
- package/src/components/form/expressions/renderExpressionToText.ts +0 -137
- package/src/components/form/expressions/types.ts +0 -110
- package/src/components/form/expressions/useExpressions.ts +0 -101
- package/src/components/form/expressions/useRenderExpression.ts +0 -165
- package/src/components/form/fields/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -732
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
- package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
- package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
- package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
- package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
- package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
- package/src/components/form/fields/binary/Binary.tsx +0 -91
- package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
- package/src/components/form/fields/boolean/Boolean.tsx +0 -34
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
- package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
- package/src/components/form/fields/color/Color.stories.tsx +0 -99
- package/src/components/form/fields/color/Color.tsx +0 -46
- package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
- package/src/components/form/fields/cron/Cron.tsx +0 -80
- package/src/components/form/fields/date/Date.stories.tsx +0 -77
- package/src/components/form/fields/date/Date.tsx +0 -55
- package/src/components/form/fields/emittedValues.ts +0 -70
- package/src/components/form/fields/file/File.stories.tsx +0 -161
- package/src/components/form/fields/file/File.tsx +0 -227
- package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
- package/src/components/form/fields/long-string/LongString.tsx +0 -130
- package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
- package/src/components/form/fields/markdown/Markdown.tsx +0 -81
- package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -160
- package/src/components/form/fields/object/Object.stories.tsx +0 -398
- package/src/components/form/fields/object/Object.tsx +0 -255
- package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
- package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
- package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
- package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
- package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
- package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
- package/src/components/form/fields/rich-text/RichText.tsx +0 -537
- package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
- package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
- package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
- package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
- package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
- package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
- package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
- package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
- package/src/components/form/fields/schema-definition/catalog.ts +0 -237
- package/src/components/form/fields/schema-definition/helpers.ts +0 -90
- package/src/components/form/fields/schema-definition/index.tsx +0 -418
- package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
- package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
- package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
- package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
- package/src/components/form/fields/schema-definition/types.ts +0 -185
- package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
- package/src/components/form/fields/select/Select.stories.tsx +0 -872
- package/src/components/form/fields/select/Select.tsx +0 -624
- package/src/components/form/fields/select/SelectCollection.tsx +0 -594
- package/src/components/form/fields/string/String.stories.tsx +0 -86
- package/src/components/form/fields/string/String.tsx +0 -43
- package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
- package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
- package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
- package/src/components/form/fields/template/TemplateField.tsx +0 -1717
- package/src/components/form/fields/template/TemplateText.tsx +0 -115
- package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
- package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
- package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
- package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
- package/src/components/form/fields/timeout/Timeout.tsx +0 -87
- package/src/components/form/fields/url/Url.stories.tsx +0 -94
- package/src/components/form/fields/url/Url.tsx +0 -85
- package/src/components/form/index.tsx +0 -47
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
- package/src/components/imageLightbox/index.ts +0 -1
- package/src/components/log/Log.stories.tsx +0 -333
- package/src/components/log/Log.tsx +0 -285
- package/src/components/menu/Menu.stories.tsx +0 -155
- package/src/components/menu/Menu.tsx +0 -312
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
- package/src/components/qonsoleSmartInput/index.ts +0 -16
- package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
- package/src/components/qonsoleSmartInput/types.ts +0 -133
- package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
- package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
- package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
- package/src/components/searchFilterBar/index.ts +0 -1
- package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
- package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
- package/src/components/smartEditor/SmartEditor.tsx +0 -808
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
- package/src/components/smartEditor/helpers.ts +0 -217
- package/src/components/smartEditor/index.ts +0 -35
- package/src/components/smartEditor/styling.ts +0 -45
- package/src/components/smartEditor/types.ts +0 -211
- package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
- package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
- package/src/components/smartEditor/useLspHover.ts +0 -230
- package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
- package/src/components/smartEditor/useLspSession.ts +0 -231
- package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
- package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
- package/src/components/supportTicket/AttachmentChips.tsx +0 -147
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
- package/src/components/supportTicket/ReferencePicker.tsx +0 -563
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -247
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
- package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
- package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
- package/src/components/supportTicket/attachmentAccess.ts +0 -97
- package/src/components/supportTicket/fileToAttachment.ts +0 -24
- package/src/components/supportTicket/index.ts +0 -10
- package/src/components/supportTicket/meta.ts +0 -206
- package/src/components/supportTicket/ticketModel.ts +0 -131
- package/src/components/supportTicket/useLoadedImages.ts +0 -73
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
- package/src/components/ticketReferences/TicketReferences.tsx +0 -906
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
- package/src/components/ticketThread/TicketThread.tsx +0 -719
- package/src/components/ticketThread/index.ts +0 -6
- package/src/contexts/FetchContext.tsx +0 -25
- package/src/contexts/ReqraftContext.tsx +0 -9
- package/src/contexts/StorageContext.tsx +0 -33
- package/src/global.d.ts +0 -4
- package/src/helpers/allowedValues.ts +0 -249
- package/src/helpers/choiceChip.ts +0 -227
- package/src/helpers/common.ts +0 -326
- package/src/helpers/dpqlDetection.ts +0 -209
- package/src/helpers/expressions.ts +0 -140
- package/src/helpers/optionUiTypes.ts +0 -199
- package/src/helpers/options.ts +0 -150
- package/src/helpers/providerValue.ts +0 -125
- package/src/helpers/scrollbar.ts +0 -32
- package/src/helpers/singleLineString.ts +0 -61
- package/src/helpers/templateItems.ts +0 -81
- package/src/helpers/templateText.ts +0 -350
- package/src/helpers/templates.ts +0 -602
- package/src/helpers/validations.ts +0 -2085
- package/src/hooks/useArgSchema.ts +0 -37
- package/src/hooks/useCoarsePointer.ts +0 -30
- package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
- package/src/hooks/useFetch/useFetch.tsx +0 -154
- package/src/hooks/usePhoneViewport.ts +0 -34
- package/src/hooks/useQorusTypes.ts +0 -233
- package/src/hooks/useReqraftProperty.ts +0 -16
- package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
- package/src/hooks/useStorage/useStorage.ts +0 -35
- package/src/hooks/useTemplates.ts +0 -123
- package/src/hooks/useValidation.ts +0 -9
- package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
- package/src/hooks/useWhyDidYouUpdate.ts +0 -38
- package/src/index.tsx +0 -86
- package/src/providers/FetchProvider.tsx +0 -40
- package/src/providers/ReqraftProvider.tsx +0 -52
- package/src/providers/StorageProvider.tsx +0 -131
- package/src/stores/currentUser/currentUser.stories.tsx +0 -100
- package/src/stores/currentUser/currentUser.tsx +0 -94
- package/src/stories/Data/fileFieldArgSchema.json +0 -86
- package/src/stories/Tests/utils.ts +0 -320
- package/src/stories/storyNetwork.ts +0 -92
- package/src/stories/tracking.tsx +0 -206
- package/src/tracking/browser/attach.ts +0 -186
- package/src/tracking/browser/env.ts +0 -78
- package/src/tracking/core/consent.ts +0 -37
- package/src/tracking/core/engagement.ts +0 -47
- package/src/tracking/core/experiments.ts +0 -258
- package/src/tracking/core/hash.ts +0 -26
- package/src/tracking/core/ids.ts +0 -25
- package/src/tracking/core/observable.ts +0 -23
- package/src/tracking/core/queue.ts +0 -131
- package/src/tracking/core/sections.ts +0 -166
- package/src/tracking/core/storage.ts +0 -69
- package/src/tracking/core/tracker.ts +0 -417
- package/src/tracking/core/types.ts +0 -162
- package/src/tracking/core/utm.ts +0 -23
- package/src/tracking/index.ts +0 -72
- package/src/tracking/markup.ts +0 -17
- package/src/tracking/react/Experiment.tsx +0 -44
- package/src/tracking/react/TrackingProvider.tsx +0 -56
- package/src/tracking/react/hooks.ts +0 -106
- package/src/tracking/react/index.ts +0 -13
- package/src/tracking/testing.ts +0 -108
- package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
- package/src/tracking/ui/ExperimentCard.tsx +0 -667
- package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
- package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
- package/src/tracking/ui/anchor.ts +0 -180
- package/src/tracking/ui/card.ts +0 -464
- package/src/tracking/ui/client.ts +0 -117
- package/src/tracking/ui/index.ts +0 -77
- package/src/tracking/ui/types.ts +0 -110
- package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
- package/src/types/Form.ts +0 -29
- package/src/types.ts +0 -14
- package/src/utils/datetime.ts +0 -10
- package/src/utils/fetch.ts +0 -457
- package/src/utils/lspClient.ts +0 -711
- package/src/utils/lspClient.types.ts +0 -211
- package/src/utils/queryUnlessCancelled.ts +0 -28
- package/src/utils/websocket.ts +0 -293
- package/vite.config.ts +0 -58
- package/vitest.config.ts +0 -69
package/src/utils/lspClient.ts
DELETED
|
@@ -1,711 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 Qore Technologies, s.r.o.
|
|
2
|
-
|
|
3
|
-
import { ReqraftWebSocket } from './websocket';
|
|
4
|
-
import {
|
|
5
|
-
ILspCompletionItem,
|
|
6
|
-
ILspDiagnostic,
|
|
7
|
-
ILspMarkupContent,
|
|
8
|
-
ILspSemanticTokensLegend,
|
|
9
|
-
ILspServerCapabilities,
|
|
10
|
-
ILspSignatureHelp,
|
|
11
|
-
ILspTextEdit,
|
|
12
|
-
TLspDocumentText,
|
|
13
|
-
} from './lspClient.types';
|
|
14
|
-
|
|
15
|
-
const DEFAULT_REQUEST_TIMEOUT_MS = 15000;
|
|
16
|
-
const DEFAULT_URL = 'lsp';
|
|
17
|
-
const DEFAULT_MAX_RECONNECT_TRIES = 10;
|
|
18
|
-
const DEFAULT_RECONNECT_INTERVAL_MS = 5000;
|
|
19
|
-
const DEFAULT_TAB_SIZE = 4;
|
|
20
|
-
|
|
21
|
-
export interface IReqraftLspClientOptions {
|
|
22
|
-
/**
|
|
23
|
-
* LSP `languageId` — routes the document on a multi-language `/lsp`
|
|
24
|
-
* endpoint. Must match a server-side language handler (e.g. `'dpql'`,
|
|
25
|
-
* `'qonsole'`, `'qore'`).
|
|
26
|
-
*/
|
|
27
|
-
languageId: string;
|
|
28
|
-
/**
|
|
29
|
-
* Document URI. Should be client-generated and opaque. Per the
|
|
30
|
-
* server-side Qonsole LSP contract, must NOT contain session tokens,
|
|
31
|
-
* usernames, sandbox namespace IDs, or command-derived secrets — any
|
|
32
|
-
* value that ends up in server logs. Use random / nanoid suffixes.
|
|
33
|
-
*/
|
|
34
|
-
uri: string;
|
|
35
|
-
/** WebSocket path on the configured Reqraft instance. Default: `'lsp'`. */
|
|
36
|
-
url?: string;
|
|
37
|
-
/** Request timeout in milliseconds. Default: 15000. */
|
|
38
|
-
requestTimeoutMs?: number;
|
|
39
|
-
/** Max reconnect attempts before giving up. Default: 10. */
|
|
40
|
-
maxReconnectTries?: number;
|
|
41
|
-
/** Delay between reconnect attempts, in milliseconds. Default: 5000. */
|
|
42
|
-
reconnectIntervalMs?: number;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
interface IPendingRequest {
|
|
46
|
-
resolve: (value: unknown) => void;
|
|
47
|
-
reject: (err: Error) => void;
|
|
48
|
-
timer: ReturnType<typeof setTimeout>;
|
|
49
|
-
method: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
interface IJsonRpcMessage {
|
|
53
|
-
jsonrpc: '2.0';
|
|
54
|
-
id?: number;
|
|
55
|
-
method: string;
|
|
56
|
-
params?: unknown;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* One shared WebSocket + JSON-RPC session per LSP endpoint URL, multiplexing
|
|
61
|
-
* any number of `ReqraftLspClient` documents. The Qorus `/lsp` handler keys language
|
|
62
|
-
* sessions by document URI (`uriToDpqlSession` server-side), so a single
|
|
63
|
-
* connection serves N editors — the standard LSP architecture (one connection
|
|
64
|
-
* per language server, all documents on it). Responses route by JSON-RPC id;
|
|
65
|
-
* `publishDiagnostics` routes by `params.uri`; other notifications are
|
|
66
|
-
* delivered to every client that registered a handler for the method. The
|
|
67
|
-
* connection closes when its last client releases it.
|
|
68
|
-
*/
|
|
69
|
-
class LspSharedConnection {
|
|
70
|
-
private static registry = new Map<string, LspSharedConnection>();
|
|
71
|
-
|
|
72
|
-
/** Get-or-create the connection for `url` and register `client` on it. */
|
|
73
|
-
static acquire(
|
|
74
|
-
url: string,
|
|
75
|
-
config: { maxReconnectTries: number; reconnectIntervalMs: number },
|
|
76
|
-
client: ReqraftLspClient
|
|
77
|
-
): LspSharedConnection {
|
|
78
|
-
let conn = LspSharedConnection.registry.get(url);
|
|
79
|
-
if (!conn) {
|
|
80
|
-
// The first acquirer's reconnect config wins for the shared socket.
|
|
81
|
-
conn = new LspSharedConnection(url, config);
|
|
82
|
-
LspSharedConnection.registry.set(url, conn);
|
|
83
|
-
}
|
|
84
|
-
conn.clients.add(client);
|
|
85
|
-
return conn;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
private rws: ReqraftWebSocket | null = null;
|
|
89
|
-
private nextId = 1;
|
|
90
|
-
private pending = new Map<number, IPendingRequest>();
|
|
91
|
-
private readonly clients = new Set<ReqraftLspClient>();
|
|
92
|
-
private initPromise: Promise<void> | null = null;
|
|
93
|
-
/**
|
|
94
|
-
* Fails the handshake in flight, if there is one. Every way this connection
|
|
95
|
-
* stops — released, reset, or given up by its socket — goes through it, so
|
|
96
|
-
* no `connect()` caller is ever left waiting on a socket that is gone.
|
|
97
|
-
*/
|
|
98
|
-
private failHandshake: ((err: Error) => void) | null = null;
|
|
99
|
-
|
|
100
|
-
connected = false;
|
|
101
|
-
capabilities: ILspServerCapabilities | null = null;
|
|
102
|
-
semanticTokensLegend: ILspSemanticTokensLegend | null = null;
|
|
103
|
-
|
|
104
|
-
private constructor(
|
|
105
|
-
private readonly url: string,
|
|
106
|
-
private readonly config: { maxReconnectTries: number; reconnectIntervalMs: number }
|
|
107
|
-
) {}
|
|
108
|
-
|
|
109
|
-
/** Open the socket and `initialize` once; re-entrant for every client. */
|
|
110
|
-
connect(): Promise<void> {
|
|
111
|
-
if (this.initPromise) {
|
|
112
|
-
return this.initPromise;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const attempt = new Promise<void>((resolve, reject) => {
|
|
116
|
-
let initialConnect = true;
|
|
117
|
-
|
|
118
|
-
this.failHandshake = (err) => {
|
|
119
|
-
if (initialConnect) {
|
|
120
|
-
initialConnect = false;
|
|
121
|
-
reject(err);
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
this.rws = new ReqraftWebSocket({
|
|
126
|
-
url: this.url,
|
|
127
|
-
pooled: false,
|
|
128
|
-
reconnect: true,
|
|
129
|
-
maxReconnectTries: this.config.maxReconnectTries,
|
|
130
|
-
reconnectInterval: this.config.reconnectIntervalMs,
|
|
131
|
-
useHeartbeat: true,
|
|
132
|
-
onOpen: () => {
|
|
133
|
-
this.connected = true;
|
|
134
|
-
|
|
135
|
-
this.sendRequest('initialize', { capabilities: {} }, DEFAULT_REQUEST_TIMEOUT_MS)
|
|
136
|
-
.then((initResult: any) => {
|
|
137
|
-
// Capture the full capabilities block. Consumers gate
|
|
138
|
-
// optional features (signatureHelp, semantic tokens, …)
|
|
139
|
-
// on the presence of the relevant provider so we degrade
|
|
140
|
-
// gracefully against servers that don't support them.
|
|
141
|
-
const caps = initResult?.capabilities;
|
|
142
|
-
this.capabilities =
|
|
143
|
-
caps && typeof caps === 'object' ? (caps as ILspServerCapabilities) : null;
|
|
144
|
-
|
|
145
|
-
const legend = caps?.semanticTokensProvider?.legend;
|
|
146
|
-
if (
|
|
147
|
-
legend &&
|
|
148
|
-
Array.isArray(legend.tokenTypes) &&
|
|
149
|
-
Array.isArray(legend.tokenModifiers)
|
|
150
|
-
) {
|
|
151
|
-
this.semanticTokensLegend = {
|
|
152
|
-
tokenTypes: legend.tokenTypes.slice(),
|
|
153
|
-
tokenModifiers: legend.tokenModifiers.slice(),
|
|
154
|
-
};
|
|
155
|
-
} else {
|
|
156
|
-
this.semanticTokensLegend = null;
|
|
157
|
-
}
|
|
158
|
-
if (initialConnect) {
|
|
159
|
-
initialConnect = false;
|
|
160
|
-
this.failHandshake = null;
|
|
161
|
-
// Awaiting clients self-notify ready in their connect().
|
|
162
|
-
resolve();
|
|
163
|
-
} else {
|
|
164
|
-
// Reconnect: every registered document re-opens itself.
|
|
165
|
-
this.clients.forEach((c) => c._resyncAfterReconnect());
|
|
166
|
-
this.clients.forEach((c) => c._notifyReady(true));
|
|
167
|
-
}
|
|
168
|
-
})
|
|
169
|
-
.catch((err) => {
|
|
170
|
-
if (initialConnect) {
|
|
171
|
-
initialConnect = false;
|
|
172
|
-
reject(err);
|
|
173
|
-
} else {
|
|
174
|
-
this.clients.forEach((c) => c._notifyReady(false));
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
},
|
|
178
|
-
onMessage: (event: MessageEvent) => {
|
|
179
|
-
// pong is already filtered out by ReqraftWebSocket's heartbeat.
|
|
180
|
-
let msg: any;
|
|
181
|
-
try {
|
|
182
|
-
msg = JSON.parse(event.data as string);
|
|
183
|
-
} catch {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Response (has id + result/error)
|
|
188
|
-
if (
|
|
189
|
-
msg.id !== undefined &&
|
|
190
|
-
msg.id !== null &&
|
|
191
|
-
(msg.result !== undefined || msg.error !== undefined)
|
|
192
|
-
) {
|
|
193
|
-
const pending = this.pending.get(msg.id);
|
|
194
|
-
if (pending) {
|
|
195
|
-
clearTimeout(pending.timer);
|
|
196
|
-
this.pending.delete(msg.id);
|
|
197
|
-
if (msg.error) {
|
|
198
|
-
pending.reject(new Error(`${msg.error.code}: ${msg.error.message}`));
|
|
199
|
-
} else {
|
|
200
|
-
pending.resolve(msg.result);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Notification (has method, no id)
|
|
207
|
-
if (msg.method) {
|
|
208
|
-
if (msg.method === 'textDocument/publishDiagnostics' && msg.params?.uri) {
|
|
209
|
-
// Diagnostics belong to exactly one document — route by uri.
|
|
210
|
-
this.clients.forEach((c) => {
|
|
211
|
-
if (c.documentUri === msg.params.uri) {
|
|
212
|
-
c._deliverNotification(msg.method, msg.params);
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
this.clients.forEach((c) => c._deliverNotification(msg.method, msg.params));
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
onClose: () => {
|
|
221
|
-
this.connected = false;
|
|
222
|
-
// Reject all pending requests.
|
|
223
|
-
this.pending.forEach((p) => {
|
|
224
|
-
clearTimeout(p.timer);
|
|
225
|
-
p.reject(new Error('WebSocket closed'));
|
|
226
|
-
});
|
|
227
|
-
this.pending.clear();
|
|
228
|
-
this.clients.forEach((c) => {
|
|
229
|
-
c._notifyReady(false);
|
|
230
|
-
c._notifyDisconnect();
|
|
231
|
-
});
|
|
232
|
-
},
|
|
233
|
-
onError: () => {
|
|
234
|
-
// onClose fires after onError; rejection happens there.
|
|
235
|
-
},
|
|
236
|
-
onReconnectFailed: () => {
|
|
237
|
-
this.giveUp();
|
|
238
|
-
},
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
this.initPromise = attempt;
|
|
242
|
-
|
|
243
|
-
// Reset on failure so connect() can be retried with a clean slate —
|
|
244
|
-
// close() also drops the dead socket, which would otherwise leak when
|
|
245
|
-
// a retry stacks a fresh ReqraftWebSocket on top of it. Only for THIS
|
|
246
|
-
// attempt: by the time the rejection lands a client may already have
|
|
247
|
-
// started the next one, and closing that would kill a live socket.
|
|
248
|
-
attempt.catch(() => {
|
|
249
|
-
if (this.initPromise === attempt) {
|
|
250
|
-
this.close();
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
return attempt;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* The socket has stopped reconnecting. Without this the connection would
|
|
259
|
-
* stay registered around a dead socket for as long as any client holds it —
|
|
260
|
-
* which, for the page-lifetime render client, is forever: a first handshake
|
|
261
|
-
* that never completed kept every later `connect()` waiting on it, and one
|
|
262
|
-
* that had completed kept reporting the dead socket as ready. Fail whatever
|
|
263
|
-
* is waiting and forget the socket, so the next `connect()` dials afresh.
|
|
264
|
-
*/
|
|
265
|
-
private giveUp(): void {
|
|
266
|
-
this.clients.forEach((c) => c._forgetConnect());
|
|
267
|
-
this.close(
|
|
268
|
-
new Error(
|
|
269
|
-
`LSP connection to ${this.url} gave up after ${this.config.maxReconnectTries} reconnect attempts`
|
|
270
|
-
)
|
|
271
|
-
);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/** @internal Test hook — close and forget every shared connection. */
|
|
275
|
-
static _resetForTests(): void {
|
|
276
|
-
LspSharedConnection.registry.forEach((conn) => conn.close());
|
|
277
|
-
LspSharedConnection.registry.clear();
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/** Deregister a client; the last one out closes the socket. */
|
|
281
|
-
release(client: ReqraftLspClient): void {
|
|
282
|
-
this.clients.delete(client);
|
|
283
|
-
if (this.clients.size === 0) {
|
|
284
|
-
// A reset may already have replaced this connection for the url.
|
|
285
|
-
if (LspSharedConnection.registry.get(this.url) === this) {
|
|
286
|
-
LspSharedConnection.registry.delete(this.url);
|
|
287
|
-
}
|
|
288
|
-
this.close();
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
private close(reason: Error = new Error('Client disconnected')): void {
|
|
293
|
-
this.initPromise = null;
|
|
294
|
-
const failHandshake = this.failHandshake;
|
|
295
|
-
this.failHandshake = null;
|
|
296
|
-
failHandshake?.(reason);
|
|
297
|
-
if (this.rws) {
|
|
298
|
-
// Disable reconnect before cleanup to prevent zombie reconnect timers.
|
|
299
|
-
this.rws.options.reconnect = false;
|
|
300
|
-
this.rws.remove();
|
|
301
|
-
this.rws = null;
|
|
302
|
-
}
|
|
303
|
-
this.connected = false;
|
|
304
|
-
this.pending.forEach((p) => {
|
|
305
|
-
clearTimeout(p.timer);
|
|
306
|
-
p.reject(new Error('Client disconnected'));
|
|
307
|
-
});
|
|
308
|
-
this.pending.clear();
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
sendRequest(method: string, params: any, timeoutMs: number): Promise<any> {
|
|
312
|
-
return new Promise((resolve, reject) => {
|
|
313
|
-
if (!this.rws?.socket || this.rws.socket.readyState !== WebSocket.OPEN) {
|
|
314
|
-
reject(new Error('WebSocket not connected'));
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
const id = this.nextId++;
|
|
319
|
-
|
|
320
|
-
const timer = setTimeout(() => {
|
|
321
|
-
if (this.pending.has(id)) {
|
|
322
|
-
this.pending.delete(id);
|
|
323
|
-
reject(new Error(`Request ${method} timed out`));
|
|
324
|
-
}
|
|
325
|
-
}, timeoutMs);
|
|
326
|
-
|
|
327
|
-
this.pending.set(id, { resolve, reject, timer, method });
|
|
328
|
-
|
|
329
|
-
const msg: IJsonRpcMessage = { jsonrpc: '2.0', id, method };
|
|
330
|
-
if (params !== undefined) {
|
|
331
|
-
msg.params = params;
|
|
332
|
-
}
|
|
333
|
-
this.rws.socket.send(JSON.stringify(msg));
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
sendNotification(method: string, params?: any): void {
|
|
338
|
-
if (!this.rws?.socket || this.rws.socket.readyState !== WebSocket.OPEN) {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
const msg: IJsonRpcMessage = { jsonrpc: '2.0', method };
|
|
342
|
-
if (params !== undefined) {
|
|
343
|
-
msg.params = params;
|
|
344
|
-
}
|
|
345
|
-
this.rws.socket.send(JSON.stringify(msg));
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* JSON-RPC 2.0 client speaking LSP for ONE document URI. Transport is the
|
|
351
|
-
* shared per-endpoint connection (`LspSharedConnection`) — creating more
|
|
352
|
-
* clients does not open more sockets.
|
|
353
|
-
*/
|
|
354
|
-
export class ReqraftLspClient {
|
|
355
|
-
private conn: LspSharedConnection | null = null;
|
|
356
|
-
private connectPromise: Promise<void> | null = null;
|
|
357
|
-
private readonly languageId: string;
|
|
358
|
-
private readonly uri: string;
|
|
359
|
-
private readonly url: string;
|
|
360
|
-
private readonly requestTimeoutMs: number;
|
|
361
|
-
private readonly maxReconnectTries: number;
|
|
362
|
-
private readonly reconnectIntervalMs: number;
|
|
363
|
-
|
|
364
|
-
private notificationHandlers = new Map<string, (params: any) => void>();
|
|
365
|
-
|
|
366
|
-
private diagnosticCallback: ((uri: string, diags: ILspDiagnostic[]) => void) | null = null;
|
|
367
|
-
private disconnectCallback: (() => void) | null = null;
|
|
368
|
-
private readyCallback: ((ready: boolean) => void) | null = null;
|
|
369
|
-
|
|
370
|
-
// Stored so we can re-send didOpen on reconnect.
|
|
371
|
-
private lastText: TLspDocumentText | null = null;
|
|
372
|
-
private lastMetadata: Record<string, unknown> | undefined = undefined;
|
|
373
|
-
|
|
374
|
-
/**
|
|
375
|
-
* Captured from `initialize → capabilities.semanticTokensProvider.legend`
|
|
376
|
-
* on the shared connection. `null` until the initialize response arrives,
|
|
377
|
-
* and stays `null` if the server doesn't advertise semantic-token support.
|
|
378
|
-
* Consumers (`useLspSemanticTokens`) need this legend to resolve the
|
|
379
|
-
* `tokenType` / `tokenModifiers` int indices into names.
|
|
380
|
-
*/
|
|
381
|
-
get semanticTokensLegend(): ILspSemanticTokensLegend | null {
|
|
382
|
-
return this.conn?.semanticTokensLegend ?? null;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Full `capabilities` block from the server's `initialize` response on the
|
|
387
|
-
* shared connection. `null` until the handshake completes. Consumers gate
|
|
388
|
-
* optional features on the presence of the relevant provider.
|
|
389
|
-
*/
|
|
390
|
-
get capabilities(): ILspServerCapabilities | null {
|
|
391
|
-
return this.conn?.capabilities ?? null;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
constructor(options: IReqraftLspClientOptions) {
|
|
395
|
-
this.languageId = options.languageId;
|
|
396
|
-
this.uri = options.uri;
|
|
397
|
-
this.url = options.url ?? DEFAULT_URL;
|
|
398
|
-
this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
399
|
-
this.maxReconnectTries = options.maxReconnectTries ?? DEFAULT_MAX_RECONNECT_TRIES;
|
|
400
|
-
this.reconnectIntervalMs = options.reconnectIntervalMs ?? DEFAULT_RECONNECT_INTERVAL_MS;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
/**
|
|
404
|
-
* Acquire the shared connection for this endpoint — opening the socket and
|
|
405
|
-
* sending `initialize` only if this is the first client on it — and
|
|
406
|
-
* resolve when the handshake is done. Re-entrant.
|
|
407
|
-
*/
|
|
408
|
-
connect(): Promise<void> {
|
|
409
|
-
if (this.connectPromise) {
|
|
410
|
-
return this.connectPromise;
|
|
411
|
-
}
|
|
412
|
-
if (!this.conn) {
|
|
413
|
-
this.conn = LspSharedConnection.acquire(
|
|
414
|
-
this.url,
|
|
415
|
-
{
|
|
416
|
-
maxReconnectTries: this.maxReconnectTries,
|
|
417
|
-
reconnectIntervalMs: this.reconnectIntervalMs,
|
|
418
|
-
},
|
|
419
|
-
this
|
|
420
|
-
);
|
|
421
|
-
}
|
|
422
|
-
const attempt: Promise<void> = this.conn
|
|
423
|
-
.connect()
|
|
424
|
-
.then(() => {
|
|
425
|
-
this.readyCallback?.(true);
|
|
426
|
-
})
|
|
427
|
-
.catch((err) => {
|
|
428
|
-
// Allow a retry after failure — unless one has already started.
|
|
429
|
-
if (this.connectPromise === attempt) {
|
|
430
|
-
this.connectPromise = null;
|
|
431
|
-
}
|
|
432
|
-
this.readyCallback?.(false);
|
|
433
|
-
throw err;
|
|
434
|
-
});
|
|
435
|
-
this.connectPromise = attempt;
|
|
436
|
-
return attempt;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* @internal The shared connection gave up on its socket. Drop the cached
|
|
441
|
-
* handshake so the next `connect()` dials again instead of resolving from
|
|
442
|
-
* a socket that no longer exists.
|
|
443
|
-
*/
|
|
444
|
-
_forgetConnect(): void {
|
|
445
|
-
this.connectPromise = null;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
/**
|
|
449
|
-
* Release the shared connection. Sends `textDocument/didClose` first; the
|
|
450
|
-
* socket itself only closes when the last client releases it. In-flight
|
|
451
|
-
* requests from this client are left to their timeouts (their results are
|
|
452
|
-
* ignored once the consumer has unmounted).
|
|
453
|
-
*/
|
|
454
|
-
disconnect(): void {
|
|
455
|
-
this.connectPromise = null;
|
|
456
|
-
if (this.conn) {
|
|
457
|
-
if (this.conn.connected) {
|
|
458
|
-
try {
|
|
459
|
-
this.sendNotification('textDocument/didClose', {
|
|
460
|
-
textDocument: { uri: this.uri },
|
|
461
|
-
});
|
|
462
|
-
} catch {
|
|
463
|
-
// best-effort
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
this.conn.release(this);
|
|
467
|
-
this.conn = null;
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
/**
|
|
473
|
-
* Send `textDocument/didOpen`. The optional `metadata` field is a
|
|
474
|
-
* Qorus-specific extension that carries per-language context (e.g. DPQL
|
|
475
|
-
* provider/recordType, Qonsole `/use` context). The standard LSP
|
|
476
|
-
* `TextDocumentItem` does not include `metadata`, but the Qorus
|
|
477
|
-
* `/lsp` handler reads it on open to bind context to the URI.
|
|
478
|
-
*/
|
|
479
|
-
didOpen(text: TLspDocumentText, metadata?: Record<string, unknown>): void {
|
|
480
|
-
this.lastText = text;
|
|
481
|
-
this.lastMetadata = metadata;
|
|
482
|
-
this.sendNotification('textDocument/didOpen', {
|
|
483
|
-
textDocument: {
|
|
484
|
-
uri: this.uri,
|
|
485
|
-
languageId: this.languageId,
|
|
486
|
-
version: 1,
|
|
487
|
-
text,
|
|
488
|
-
metadata,
|
|
489
|
-
},
|
|
490
|
-
});
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
didChange(text: TLspDocumentText, version = 1): void {
|
|
494
|
-
this.lastText = text;
|
|
495
|
-
this.sendNotification('textDocument/didChange', {
|
|
496
|
-
textDocument: { uri: this.uri, version },
|
|
497
|
-
contentChanges: [{ text }],
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
didClose(): void {
|
|
502
|
-
this.sendNotification('textDocument/didClose', {
|
|
503
|
-
textDocument: { uri: this.uri },
|
|
504
|
-
});
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
/** Request completions at a cursor position. */
|
|
509
|
-
async getCompletions(line: number, character: number): Promise<ILspCompletionItem[]> {
|
|
510
|
-
const result = await this.sendRequest('textDocument/completion', {
|
|
511
|
-
textDocument: { uri: this.uri },
|
|
512
|
-
position: { line, character },
|
|
513
|
-
});
|
|
514
|
-
if (Array.isArray(result)) {
|
|
515
|
-
return result;
|
|
516
|
-
}
|
|
517
|
-
return result?.items ?? [];
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
/** Request semantic-token data (the flat encoded array LSP defines). */
|
|
521
|
-
async getSemanticTokens(): Promise<number[]> {
|
|
522
|
-
const result = await this.sendRequest('textDocument/semanticTokens/full', {
|
|
523
|
-
textDocument: { uri: this.uri },
|
|
524
|
-
});
|
|
525
|
-
return result?.data ?? [];
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
/**
|
|
529
|
-
* Request `textDocument/formatting`. Returns the replacement text from the
|
|
530
|
-
* first edit (LSP servers typically return a single full-document edit
|
|
531
|
-
* for formatting), or `null` if the server returned no edits.
|
|
532
|
-
*/
|
|
533
|
-
async format(options?: { tabSize?: number; insertSpaces?: boolean }): Promise<string | null> {
|
|
534
|
-
const result = (await this.sendRequest('textDocument/formatting', {
|
|
535
|
-
textDocument: { uri: this.uri },
|
|
536
|
-
options: {
|
|
537
|
-
tabSize: options?.tabSize ?? DEFAULT_TAB_SIZE,
|
|
538
|
-
insertSpaces: options?.insertSpaces ?? true,
|
|
539
|
-
},
|
|
540
|
-
})) as ILspTextEdit[] | null | undefined;
|
|
541
|
-
if (Array.isArray(result) && result.length > 0) {
|
|
542
|
-
return result[0].newText ?? null;
|
|
543
|
-
}
|
|
544
|
-
return null;
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
/** Request hover info at a cursor position. */
|
|
548
|
-
async getHover(
|
|
549
|
-
line: number,
|
|
550
|
-
character: number
|
|
551
|
-
): Promise<ILspMarkupContent | null> {
|
|
552
|
-
const result = await this.sendRequest('textDocument/hover', {
|
|
553
|
-
textDocument: { uri: this.uri },
|
|
554
|
-
position: { line, character },
|
|
555
|
-
});
|
|
556
|
-
if (result?.contents) {
|
|
557
|
-
// LSP allows MarkedString | MarkedString[] | MarkupContent. We only
|
|
558
|
-
// surface MarkupContent here; consumers who need the legacy forms
|
|
559
|
-
// can call customRequest('textDocument/hover', …) directly.
|
|
560
|
-
if (
|
|
561
|
-
typeof result.contents === 'object' &&
|
|
562
|
-
'kind' in result.contents &&
|
|
563
|
-
'value' in result.contents
|
|
564
|
-
) {
|
|
565
|
-
return result.contents as ILspMarkupContent;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
return null;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Request signature help at a cursor position — `textDocument/signatureHelp`.
|
|
573
|
-
* Returns `null` when the server reports no signatures available
|
|
574
|
-
* (LSP allows either an empty `signatures: []` response or `null`;
|
|
575
|
-
* we normalise to `null` in both cases so consumers have one
|
|
576
|
-
* "nothing here" condition to check).
|
|
577
|
-
*/
|
|
578
|
-
async getSignatureHelp(
|
|
579
|
-
line: number,
|
|
580
|
-
character: number
|
|
581
|
-
): Promise<ILspSignatureHelp | null> {
|
|
582
|
-
const result = await this.sendRequest('textDocument/signatureHelp', {
|
|
583
|
-
textDocument: { uri: this.uri },
|
|
584
|
-
position: { line, character },
|
|
585
|
-
});
|
|
586
|
-
if (!result || !Array.isArray(result.signatures) || result.signatures.length === 0) {
|
|
587
|
-
return null;
|
|
588
|
-
}
|
|
589
|
-
return result as ILspSignatureHelp;
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
/**
|
|
594
|
-
* Send a request with an arbitrary method name. Used by language-specific
|
|
595
|
-
* wrappers for namespaced custom methods like `dpql/setContext` or
|
|
596
|
-
* `qonsole/assist`. Returns the typed `result` field of the JSON-RPC
|
|
597
|
-
* response; rejects on `error`.
|
|
598
|
-
*/
|
|
599
|
-
customRequest<TResult = any>(method: string, params?: any): Promise<TResult> {
|
|
600
|
-
return this.sendRequest(method, params) as Promise<TResult>;
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
/** Send a notification with an arbitrary method name (no response). */
|
|
604
|
-
customNotification(method: string, params?: any): void {
|
|
605
|
-
this.sendNotification(method, params);
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
/** Register a callback for `textDocument/publishDiagnostics` notifications. */
|
|
610
|
-
onDiagnostics(
|
|
611
|
-
callback: (uri: string, diags: ILspDiagnostic[]) => void
|
|
612
|
-
): void {
|
|
613
|
-
this.diagnosticCallback = callback;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
/** Register a callback for socket disconnection. */
|
|
617
|
-
onDisconnect(callback: () => void): void {
|
|
618
|
-
this.disconnectCallback = callback;
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
/** Register a callback for ready-state changes (connected + initialized). */
|
|
622
|
-
onReady(callback: (ready: boolean) => void): void {
|
|
623
|
-
this.readyCallback = callback;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
/**
|
|
627
|
-
* Register a callback for an arbitrary server-to-client notification
|
|
628
|
-
* method. Useful for language-specific notifications beyond
|
|
629
|
-
* `publishDiagnostics`. Replaces any previously registered handler for
|
|
630
|
-
* the same method.
|
|
631
|
-
*/
|
|
632
|
-
onNotification(
|
|
633
|
-
method: string,
|
|
634
|
-
callback: (params: any) => void
|
|
635
|
-
): void {
|
|
636
|
-
this.notificationHandlers.set(method, callback);
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
offNotification(method: string): void {
|
|
640
|
-
this.notificationHandlers.delete(method);
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
get isConnected(): boolean {
|
|
645
|
-
return this.conn?.connected ?? false;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
get documentUri(): string {
|
|
649
|
-
return this.uri;
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
get documentLanguageId(): string {
|
|
653
|
-
return this.languageId;
|
|
654
|
-
}
|
|
655
|
-
|
|
656
|
-
// The `_`-prefixed methods are called by `LspSharedConnection` to route
|
|
657
|
-
// connection-level events to the right document client. Not public API.
|
|
658
|
-
|
|
659
|
-
/** @internal Re-send `didOpen` after the shared socket reconnects. */
|
|
660
|
-
_resyncAfterReconnect(): void {
|
|
661
|
-
if (this.lastText !== null) {
|
|
662
|
-
this.didOpen(this.lastText, this.lastMetadata);
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
/** @internal */
|
|
667
|
-
_notifyReady(ready: boolean): void {
|
|
668
|
-
this.readyCallback?.(ready);
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
/** @internal */
|
|
672
|
-
_notifyDisconnect(): void {
|
|
673
|
-
this.disconnectCallback?.();
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
/** @internal Notification delivery from the shared connection. */
|
|
677
|
-
_deliverNotification(method: string, params: any): void {
|
|
678
|
-
this.handleNotification(method, params);
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
private handleNotification(method: string, params: any): void {
|
|
682
|
-
if (method === 'textDocument/publishDiagnostics' && this.diagnosticCallback) {
|
|
683
|
-
this.diagnosticCallback(params?.uri, params?.diagnostics ?? []);
|
|
684
|
-
return;
|
|
685
|
-
}
|
|
686
|
-
const handler = this.notificationHandlers.get(method);
|
|
687
|
-
if (handler) {
|
|
688
|
-
handler(params);
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
private sendRequest(method: string, params?: any): Promise<any> {
|
|
693
|
-
if (!this.conn) {
|
|
694
|
-
return Promise.reject(new Error('WebSocket not connected'));
|
|
695
|
-
}
|
|
696
|
-
return this.conn.sendRequest(method, params, this.requestTimeoutMs);
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
private sendNotification(method: string, params?: any): void {
|
|
700
|
-
this.conn?.sendNotification(method, params);
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
/**
|
|
705
|
-
* @internal Test hook: close and drop every shared LSP connection so each
|
|
706
|
-
* jest test starts with a clean registry (mirrors
|
|
707
|
-
* `ReqraftWebSocketsManager.connections = {}` in the websocket tests).
|
|
708
|
-
*/
|
|
709
|
-
export const _resetSharedLspConnectionsForTests = (): void => {
|
|
710
|
-
LspSharedConnection._resetForTests();
|
|
711
|
-
};
|