@mpeggroup/mpeg-sdl-parser 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +337 -0
- package/bun.lock +65 -0
- package/dist/index.js +11829 -0
- package/grammar/sdl.ebnf.grammar +399 -0
- package/grammar/sdl.lezer.grammar +629 -0
- package/index.ts +83 -0
- package/package.json +61 -0
- package/src/analyser/checks/check-array-definition.ts +90 -0
- package/src/analyser/checks/check-array-element-access.ts +31 -0
- package/src/analyser/checks/check-class-declaration.ts +417 -0
- package/src/analyser/checks/check-computed-array-definition.ts +44 -0
- package/src/analyser/checks/check-computed-elementary-type-definition.ts +45 -0
- package/src/analyser/checks/check-elementary-type-definition.ts +167 -0
- package/src/analyser/checks/check-expression-binary.ts +242 -0
- package/src/analyser/checks/check-expression-lengthof.ts +34 -0
- package/src/analyser/checks/check-expression-unary.ts +166 -0
- package/src/analyser/checks/check-identifier.ts +71 -0
- package/src/analyser/checks/check-if-statement.ts +164 -0
- package/src/analyser/checks/check-map-declaration.ts +180 -0
- package/src/analyser/checks/check-map-definition.ts +118 -0
- package/src/analyser/checks/check-number-literal-float.ts +28 -0
- package/src/analyser/checks/check-parameter-list.ts +42 -0
- package/src/analyser/checks/check-specification.ts +53 -0
- package/src/analyser/checks/check-switch-statement.ts +206 -0
- package/src/analyser/checks/check.ts +20 -0
- package/src/analyser/create-sdl-analyser.ts +85 -0
- package/src/analyser/node-handler/abstract-analysis-node-handler.ts +626 -0
- package/src/analyser/node-handler/build-symbol-table-node-handler.ts +649 -0
- package/src/analyser/node-handler/specific-check-node-handler.ts +46 -0
- package/src/analyser/node-handler/validate-scope-node-handler.ts +290 -0
- package/src/analyser/node-handler/validate-type-node-handler.ts +497 -0
- package/src/analyser/sdl-analyser.ts +119 -0
- package/src/analyser/symbol-table.ts +388 -0
- package/src/analyser/util/symbol-table-utils.ts +458 -0
- package/src/analyser/util/type-utils.ts +238 -0
- package/src/ast/build/consume/consume-abstract-node.ts +199 -0
- package/src/ast/build/consume/consume-ast-node.ts +400 -0
- package/src/ast/build/consume/consume-primitive.ts +59 -0
- package/src/ast/build/consume/consume-trivia.ts +96 -0
- package/src/ast/build/consume/consume-white-space-and-missing-errors.ts +27 -0
- package/src/ast/build/node/build-aggregate-output-value.ts +57 -0
- package/src/ast/build/node/build-aligned-modifier.ts +99 -0
- package/src/ast/build/node/build-array-definition.ts +131 -0
- package/src/ast/build/node/build-array-element-access.ts +45 -0
- package/src/ast/build/node/build-base64-string-literal.ts +41 -0
- package/src/ast/build/node/build-binary-expression.ts +113 -0
- package/src/ast/build/node/build-binary-literal.ts +37 -0
- package/src/ast/build/node/build-bit-modifier.ts +86 -0
- package/src/ast/build/node/build-case-clause.ts +101 -0
- package/src/ast/build/node/build-class-declaration.ts +124 -0
- package/src/ast/build/node/build-class-definition.ts +56 -0
- package/src/ast/build/node/build-class-id-range.ts +32 -0
- package/src/ast/build/node/build-class-id.ts +19 -0
- package/src/ast/build/node/build-class-member-access.ts +27 -0
- package/src/ast/build/node/build-compound-statement.ts +33 -0
- package/src/ast/build/node/build-computed-array-definition.ts +53 -0
- package/src/ast/build/node/build-computed-elementary-type-definition.ts +100 -0
- package/src/ast/build/node/build-decimal-literal.ts +15 -0
- package/src/ast/build/node/build-default-clause.ts +76 -0
- package/src/ast/build/node/build-do-statement.ts +71 -0
- package/src/ast/build/node/build-elementary-type-definition.ts +164 -0
- package/src/ast/build/node/build-elementary-type-output-value.ts +25 -0
- package/src/ast/build/node/build-elementary-type.ts +36 -0
- package/src/ast/build/node/build-expandable-modifier.ts +68 -0
- package/src/ast/build/node/build-explicit-array-dimension.ts +37 -0
- package/src/ast/build/node/build-expression-statement.ts +31 -0
- package/src/ast/build/node/build-extended-class-id-range.ts +27 -0
- package/src/ast/build/node/build-extends-modifier.ts +41 -0
- package/src/ast/build/node/build-floating-point-literal.ts +15 -0
- package/src/ast/build/node/build-for-statement.ts +117 -0
- package/src/ast/build/node/build-hexadecimal-literal.ts +38 -0
- package/src/ast/build/node/build-identifier.ts +8 -0
- package/src/ast/build/node/build-if-statement.ts +82 -0
- package/src/ast/build/node/build-implicit-array-dimension.ts +78 -0
- package/src/ast/build/node/build-integer-literal.ts +15 -0
- package/src/ast/build/node/build-length-attribute.ts +48 -0
- package/src/ast/build/node/build-lengthof-expression.ts +45 -0
- package/src/ast/build/node/build-map-declaration.ts +110 -0
- package/src/ast/build/node/build-map-definition.ts +103 -0
- package/src/ast/build/node/build-map-entry.ts +33 -0
- package/src/ast/build/node/build-missing-error.ts +10 -0
- package/src/ast/build/node/build-multiple-character-literal.ts +65 -0
- package/src/ast/build/node/build-parameter-list.ts +50 -0
- package/src/ast/build/node/build-parameter-value-list.ts +54 -0
- package/src/ast/build/node/build-parameter.ts +47 -0
- package/src/ast/build/node/build-partial-array-dimension.ts +55 -0
- package/src/ast/build/node/build-specification.ts +24 -0
- package/src/ast/build/node/build-string-definition.ts +106 -0
- package/src/ast/build/node/build-switch-statement.ts +84 -0
- package/src/ast/build/node/build-token.ts +26 -0
- package/src/ast/build/node/build-unary-expression.ts +109 -0
- package/src/ast/build/node/build-unexpected-error.ts +14 -0
- package/src/ast/build/node/build-utf-string-literal.ts +110 -0
- package/src/ast/build/node/build-while-statement.ts +55 -0
- package/src/ast/build/util/array-dimension-kind-by-token-type-id-map.ts +167 -0
- package/src/ast/build/util/binary-operator-kind-by-token-type-id-map.ts +152 -0
- package/src/ast/build/util/build-context.ts +36 -0
- package/src/ast/build/util/class-id-kind-by-token-type-id-map.ts +160 -0
- package/src/ast/build/util/expression-kind-by-token-type-id-map.ts +168 -0
- package/src/ast/build/util/fetch-node.ts +433 -0
- package/src/ast/build/util/node-kind-by-token-type-id-map.ts +202 -0
- package/src/ast/build/util/statement-kind-by-token-type-id-map.ts +210 -0
- package/src/ast/build/util/string-literal-kind-by-token-type-id-map.ts +162 -0
- package/src/ast/build/util/token-kind-by-token-type-id-map.ts +337 -0
- package/src/ast/build-ast.ts +114 -0
- package/src/ast/node/abstract-array-definition.ts +17 -0
- package/src/ast/node/abstract-array-dimension.ts +20 -0
- package/src/ast/node/abstract-class-id.ts +13 -0
- package/src/ast/node/abstract-composite-node.ts +58 -0
- package/src/ast/node/abstract-elementary-type-definition.ts +29 -0
- package/src/ast/node/abstract-expression.ts +13 -0
- package/src/ast/node/abstract-leaf-node.ts +10 -0
- package/src/ast/node/abstract-node.ts +16 -0
- package/src/ast/node/abstract-statement.ts +13 -0
- package/src/ast/node/aggregate-output-value.ts +28 -0
- package/src/ast/node/aligned-modifier.ts +21 -0
- package/src/ast/node/array-definition.ts +44 -0
- package/src/ast/node/array-element-access.ts +24 -0
- package/src/ast/node/binary-expression.ts +28 -0
- package/src/ast/node/bit-modifier.ts +24 -0
- package/src/ast/node/case-clause.ts +30 -0
- package/src/ast/node/class-declaration.ts +39 -0
- package/src/ast/node/class-definition.ts +23 -0
- package/src/ast/node/class-id-range.ts +17 -0
- package/src/ast/node/class-id.ts +14 -0
- package/src/ast/node/class-member-access.ts +19 -0
- package/src/ast/node/compound-statement.ts +19 -0
- package/src/ast/node/computed-array-definition.ts +26 -0
- package/src/ast/node/computed-elementary-type-definition.ts +34 -0
- package/src/ast/node/default-clause.ts +26 -0
- package/src/ast/node/do-statement.ts +28 -0
- package/src/ast/node/elementary-type-definition.ts +49 -0
- package/src/ast/node/elementary-type-output-value.ts +19 -0
- package/src/ast/node/elementary-type.ts +18 -0
- package/src/ast/node/enum/array-dimension-kind.ts +11 -0
- package/src/ast/node/enum/binary-operator-kind.ts +41 -0
- package/src/ast/node/enum/class-id-kind.ts +12 -0
- package/src/ast/node/enum/elementary-type-kind.ts +13 -0
- package/src/ast/node/enum/expression-kind.ts +11 -0
- package/src/ast/node/enum/node-kind.ts +57 -0
- package/src/ast/node/enum/number-literal-kind.ts +17 -0
- package/src/ast/node/enum/statement-kind.ts +37 -0
- package/src/ast/node/enum/string-literal-kind.ts +13 -0
- package/src/ast/node/enum/string-variable-kind.ts +25 -0
- package/src/ast/node/enum/token-kind.ts +87 -0
- package/src/ast/node/expandable-modifier.ts +21 -0
- package/src/ast/node/explicit-array-dimension.ts +26 -0
- package/src/ast/node/expression-statement.ts +23 -0
- package/src/ast/node/extended-class-id-range.ts +20 -0
- package/src/ast/node/extends-modifier.ts +21 -0
- package/src/ast/node/for-statement.ts +29 -0
- package/src/ast/node/identifier.ts +12 -0
- package/src/ast/node/if-statement.ts +28 -0
- package/src/ast/node/implicit-array-dimension.ts +34 -0
- package/src/ast/node/length-attribute.ts +24 -0
- package/src/ast/node/length-of-expression.ts +21 -0
- package/src/ast/node/map-declaration.ts +34 -0
- package/src/ast/node/map-definition.ts +27 -0
- package/src/ast/node/map-entry.ts +18 -0
- package/src/ast/node/missing-error.ts +9 -0
- package/src/ast/node/number-literal.ts +18 -0
- package/src/ast/node/parameter-list.ts +25 -0
- package/src/ast/node/parameter-value-list.ts +29 -0
- package/src/ast/node/parameter.ts +20 -0
- package/src/ast/node/partial-array-dimension.ts +28 -0
- package/src/ast/node/specification.ts +21 -0
- package/src/ast/node/string-definition.ts +28 -0
- package/src/ast/node/string-literal.ts +21 -0
- package/src/ast/node/switch-statement.ts +32 -0
- package/src/ast/node/token.ts +20 -0
- package/src/ast/node/trivia.ts +13 -0
- package/src/ast/node/unary-expression.ts +31 -0
- package/src/ast/node/unexpected-error.ts +12 -0
- package/src/ast/node/while-statement.ts +26 -0
- package/src/ast/util/types.ts +138 -0
- package/src/ast/visitor/node-handler.ts +15 -0
- package/src/ast/visitor/node-visitor.ts +13 -0
- package/src/ast/visitor/traversing-visitor.ts +69 -0
- package/src/completion/completion-rules.ts +447 -0
- package/src/completion/get-potential-syntactic-tokens.ts +54 -0
- package/src/completion/get-potential-token-type-ids.ts +116 -0
- package/src/completion/hierarchical-map.ts +43 -0
- package/src/completion/rules/abstract-types.ts +174 -0
- package/src/completion/rules/aggregate-output-value-rules.ts +48 -0
- package/src/completion/rules/aligned-modifier-rules.ts +45 -0
- package/src/completion/rules/array-definition-rules.ts +87 -0
- package/src/completion/rules/array-element-access-rules.ts +22 -0
- package/src/completion/rules/assignment-expression-rules.ts +19 -0
- package/src/completion/rules/binary-expression-rules.ts +23 -0
- package/src/completion/rules/bit-modifier-rules.ts +25 -0
- package/src/completion/rules/case-clause-rules.ts +39 -0
- package/src/completion/rules/class-declaration-rules.ts +81 -0
- package/src/completion/rules/class-definition-rules.ts +28 -0
- package/src/completion/rules/class-id-range-rules.ts +17 -0
- package/src/completion/rules/class-id-rules.ts +9 -0
- package/src/completion/rules/class-member-access-rules.ts +7 -0
- package/src/completion/rules/compound-statement-rules.ts +25 -0
- package/src/completion/rules/computed-array-definition-rules.ts +25 -0
- package/src/completion/rules/computed-elementary-type-rules.ts +44 -0
- package/src/completion/rules/default-clause-rules.ts +23 -0
- package/src/completion/rules/do-statement-rules.ts +38 -0
- package/src/completion/rules/elementary-type-definition-rules.ts +62 -0
- package/src/completion/rules/elementary-type-output-value-rules.ts +13 -0
- package/src/completion/rules/elementary-type-rules.ts +18 -0
- package/src/completion/rules/expandable-modifier-rules.ts +21 -0
- package/src/completion/rules/explicit-array-dimension-rules.ts +22 -0
- package/src/completion/rules/expression-statement-rules.ts +22 -0
- package/src/completion/rules/extended-class-id-range-rules.ts +17 -0
- package/src/completion/rules/extends-modifier-rules.ts +17 -0
- package/src/completion/rules/for-statement-rules.ts +51 -0
- package/src/completion/rules/if-statement-rules.ts +42 -0
- package/src/completion/rules/implicit-array-dimension-rules.ts +21 -0
- package/src/completion/rules/length-attribute-rules.ts +19 -0
- package/src/completion/rules/lengthof-expression-rules.ts +23 -0
- package/src/completion/rules/map-declaration-rules.ts +45 -0
- package/src/completion/rules/map-definition-rules.ts +46 -0
- package/src/completion/rules/map-entry-rules.ts +17 -0
- package/src/completion/rules/parameter-list-rules.ts +21 -0
- package/src/completion/rules/parameter-rules.ts +17 -0
- package/src/completion/rules/parameter-value-list-rules.ts +27 -0
- package/src/completion/rules/partial-array-dimension-rules.ts +33 -0
- package/src/completion/rules/specification-rules.ts +37 -0
- package/src/completion/rules/string-definition-rules.ts +103 -0
- package/src/completion/rules/switch-statement-rules.ts +50 -0
- package/src/completion/rules/unary-expression-rules.ts +41 -0
- package/src/completion/rules/utf-string-literal-rules.ts +17 -0
- package/src/completion/rules/while-statement-rules.ts +38 -0
- package/src/lezer/context-tracker.ts +45 -0
- package/src/lezer/create-sdl-parser.ts +88 -0
- package/src/lezer/create-syntax-error-from-text-and-cursor.ts +110 -0
- package/src/lezer/create-syntax-error-from-text-and-position.ts +36 -0
- package/src/lezer/parser.terms.ts +129 -0
- package/src/lezer/parser.ts +63 -0
- package/src/lezer/props/fold-node-prop-source.ts +27 -0
- package/src/lezer/props/primitive-node-prop-source.ts +19 -0
- package/src/lezer/props/style-tags-node-prop-source.ts +188 -0
- package/src/lezer/props/syntactic-token-node-prop-source.ts +298 -0
- package/src/lezer/sdl-string-input.ts +46 -0
- package/src/location.ts +13 -0
- package/src/parse-helper.ts +93 -0
- package/src/prettier/prettier-plugin-sdl.ts +89 -0
- package/src/prettier/print-abstract-array-dimension.ts +84 -0
- package/src/prettier/print-abstract-class-id.ts +53 -0
- package/src/prettier/print-abstract-expression.ts +168 -0
- package/src/prettier/print-abstract-node.ts +224 -0
- package/src/prettier/print-abstract-statement.ts +124 -0
- package/src/prettier/print-aggregate-output-value.ts +35 -0
- package/src/prettier/print-aligned-modifier.ts +50 -0
- package/src/prettier/print-array-definition.ts +95 -0
- package/src/prettier/print-array-element-access.ts +14 -0
- package/src/prettier/print-bit-modifier.ts +48 -0
- package/src/prettier/print-case-clause.ts +58 -0
- package/src/prettier/print-class-declaration.ts +99 -0
- package/src/prettier/print-class-definition.ts +44 -0
- package/src/prettier/print-class-member-access.ts +13 -0
- package/src/prettier/print-computed-array-definition.ts +33 -0
- package/src/prettier/print-computed-elementary-type-definition.ts +60 -0
- package/src/prettier/print-default-clause.ts +39 -0
- package/src/prettier/print-do-statement.ts +31 -0
- package/src/prettier/print-elementary-type-definition.ts +108 -0
- package/src/prettier/print-elementary-type-output-value.ts +13 -0
- package/src/prettier/print-elementary-type.ts +28 -0
- package/src/prettier/print-expandable-modifier.ts +41 -0
- package/src/prettier/print-extends-modifier.ts +29 -0
- package/src/prettier/print-for-statement.ts +64 -0
- package/src/prettier/print-identifier.ts +10 -0
- package/src/prettier/print-if-statement.ts +76 -0
- package/src/prettier/print-length-attribute.ts +14 -0
- package/src/prettier/print-map-declaration.ts +75 -0
- package/src/prettier/print-map-definition.ts +67 -0
- package/src/prettier/print-map-entry.ts +22 -0
- package/src/prettier/print-number-literal.ts +84 -0
- package/src/prettier/print-parameter-list.ts +20 -0
- package/src/prettier/print-parameter-value-list.ts +20 -0
- package/src/prettier/print-parameter.ts +34 -0
- package/src/prettier/print-specification.ts +51 -0
- package/src/prettier/print-string-definition.ts +114 -0
- package/src/prettier/print-string-literal.ts +57 -0
- package/src/prettier/print-switch-statement.ts +46 -0
- package/src/prettier/print-token.ts +7 -0
- package/src/prettier/print-unexpected-error.ts +10 -0
- package/src/prettier/print-while-statement.ts +26 -0
- package/src/prettier/util/print-utils.ts +607 -0
- package/src/prettier/util/types.ts +40 -0
- package/src/scanner-error.ts +65 -0
- package/src/util/location-utils.ts +16 -0
- package/src/util/logger.ts +165 -0
- package/tests/analyser/create-sdl-analyser.test.ts +54 -0
- package/tests/analyser/get-sdl-analyser-test-scenarios.ts +80 -0
- package/tests/analyser/sdl-analyser-scenarios.test.ts +67 -0
- package/tests/analyser/semantic-error-scenarios.test.ts +40 -0
- package/tests/analyser/symbol-table.test.ts +188 -0
- package/tests/analyser/test-cases/array_definition.txt +50 -0
- package/tests/analyser/test-cases/class_declaration.txt +112 -0
- package/tests/analyser/test-cases/class_definition.txt +60 -0
- package/tests/analyser/test-cases/compound_statement.txt +63 -0
- package/tests/analyser/test-cases/computed_array_definition.txt +12 -0
- package/tests/analyser/test-cases/computed_elementary_type_definition.txt +39 -0
- package/tests/analyser/test-cases/do_statement.txt +16 -0
- package/tests/analyser/test-cases/elementary_type_definition.txt +58 -0
- package/tests/analyser/test-cases/expression.txt +159 -0
- package/tests/analyser/test-cases/for_statement.txt +55 -0
- package/tests/analyser/test-cases/if_statement.txt +57 -0
- package/tests/analyser/test-cases/map_declaration.txt +89 -0
- package/tests/analyser/test-cases/map_definition.txt +35 -0
- package/tests/analyser/test-cases/number_literal.txt +31 -0
- package/tests/analyser/test-cases/parameter_list.txt +16 -0
- package/tests/analyser/test-cases/scopes.txt +239 -0
- package/tests/analyser/test-cases/specification.txt +28 -0
- package/tests/analyser/test-cases/string_definition.txt +40 -0
- package/tests/analyser/test-cases/switch_statement.txt +96 -0
- package/tests/analyser/test-cases/while_statement.txt +16 -0
- package/tests/analyser/util/symbol-table-utils.test.ts +65 -0
- package/tests/ast/__snapshots__/build-ast.test.ts.snap +38897 -0
- package/tests/ast/build-ast.test.ts +463 -0
- package/tests/ast/visitor/traversing-visitor.test.ts +36 -0
- package/tests/completion/get-potential-syntactic-tokens.test.ts +89 -0
- package/tests/completion/get-potential-token-type-ids.test.ts +76 -0
- package/tests/completion/test-potential-syntactic-tokens-scenario.ts +24 -0
- package/tests/completion/test-potential-token-type-ids-scenario.ts +33 -0
- package/tests/fixtures/history-recording-node-handler.ts +232 -0
- package/tests/lezer/create-parse-error-from-text-and-position.test.ts +129 -0
- package/tests/lezer/create-sdl-parser.test.ts +15 -0
- package/tests/lezer/sdl-parser-scenarios.test.ts +24 -0
- package/tests/lezer/sdl-string-input.test.ts +12 -0
- package/tests/lezer/syntax-error-scenarios.test.ts +114 -0
- package/tests/lezer/test-cases/array_definition.txt +109 -0
- package/tests/lezer/test-cases/class_declaration.txt +141 -0
- package/tests/lezer/test-cases/class_definition.txt +89 -0
- package/tests/lezer/test-cases/comment.txt +335 -0
- package/tests/lezer/test-cases/compound_statement.txt +109 -0
- package/tests/lezer/test-cases/computed_array_definition.txt +33 -0
- package/tests/lezer/test-cases/computed_elementary_type_definition.txt +59 -0
- package/tests/lezer/test-cases/do_statement.txt +48 -0
- package/tests/lezer/test-cases/elementary_type_definition.txt +158 -0
- package/tests/lezer/test-cases/expression.txt +1203 -0
- package/tests/lezer/test-cases/for_statement.txt +183 -0
- package/tests/lezer/test-cases/if_statement.txt +183 -0
- package/tests/lezer/test-cases/invalid.txt +97 -0
- package/tests/lezer/test-cases/map_declaration.txt +152 -0
- package/tests/lezer/test-cases/map_definition.txt +59 -0
- package/tests/lezer/test-cases/number_literal.txt +273 -0
- package/tests/lezer/test-cases/specification.txt +38 -0
- package/tests/lezer/test-cases/string_definition.txt +263 -0
- package/tests/lezer/test-cases/string_literal.txt +303 -0
- package/tests/lezer/test-cases/switch_statement.txt +407 -0
- package/tests/lezer/test-cases/while_statement.txt +45 -0
- package/tests/parse-helper.test.ts +361 -0
- package/tests/prettier/__snapshots__/prettier-plugin-sdl.test.ts.snap +127 -0
- package/tests/prettier/prettier-plugin-sdl.test.ts +58 -0
- package/tests/prettier/print-array.test.ts +29 -0
- package/tests/prettier/print-class.test.ts +15 -0
- package/tests/prettier/print-do.test.ts +25 -0
- package/tests/prettier/print-elementary-type.test.ts +62 -0
- package/tests/prettier/print-error.test.ts +40 -0
- package/tests/prettier/print-expression.test.ts +17 -0
- package/tests/prettier/print-for.test.ts +23 -0
- package/tests/prettier/print-if.test.ts +71 -0
- package/tests/prettier/print-number-literal.test.ts +28 -0
- package/tests/prettier/print-specification.test.ts +54 -0
- package/tests/prettier/print-string.test.ts +36 -0
- package/tests/prettier/print-switch.test.ts +69 -0
- package/tests/prettier/print-while.test.ts +23 -0
- package/tests/prettier/test-prettier-scenario.ts +41 -0
- package/tests/prettier/util/print-utils.test.ts +665 -0
- package/tests/prettier/util/types.test.ts +38 -0
- package/tests/sample-specifications/invalid.sdl +24 -0
- package/tests/sample-specifications/prettified-invalid.sdl +28 -0
- package/tests/sample-specifications/prettified-various-elements-narrow.sdl +97 -0
- package/tests/sample-specifications/prettified-various-elements.sdl +90 -0
- package/tests/sample-specifications/sample.sdl +24 -0
- package/tests/sample-specifications/various-elements.sdl +88 -0
- package/tests/util/logger.test.ts +36 -0
- package/tsconfig.json +29 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Flowscripter
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# mpeg-sdl-parser
|
|
2
|
+
|
|
3
|
+
> ISO/IEC 14496-34 Syntactic Description Language (MPEG SDL) parser implemented
|
|
4
|
+
> in TypeScript
|
|
5
|
+
|
|
6
|
+
[](https://github.com/mpeggroup/mpeg-sdl-parser/releases)
|
|
7
|
+
[](https://github.com/mpeggroup/mpeg-sdl-parser/actions/workflows/release-bun-library.yml)
|
|
8
|
+
[](https://mpeggroup.github.io/mpeg-sdl-parser/index.html)
|
|
9
|
+
[](https://github.com/mpeggroup/mpeg-sdl-parser/blob/main/LICENSE)
|
|
10
|
+
|
|
11
|
+
## Web Editor
|
|
12
|
+
|
|
13
|
+
A browser based web editor using this module is available at
|
|
14
|
+
https://github.com/MPEGGroup/mpeg-sdl-editor
|
|
15
|
+
|
|
16
|
+
## Module Usage
|
|
17
|
+
|
|
18
|
+
### Installation
|
|
19
|
+
|
|
20
|
+
**NPM**
|
|
21
|
+
|
|
22
|
+
Add the module to your project:
|
|
23
|
+
|
|
24
|
+
`npm install @mpeggroup/mpeg-sdl-parser`
|
|
25
|
+
|
|
26
|
+
**BUN**
|
|
27
|
+
|
|
28
|
+
Add the module to your project:
|
|
29
|
+
|
|
30
|
+
`bun add @mpeggroup/mpeg-sdl-parser`
|
|
31
|
+
|
|
32
|
+
### Example Code
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
import {
|
|
36
|
+
SdlStringInput,
|
|
37
|
+
createLenientSdlParser,
|
|
38
|
+
collateSyntaxErrors,
|
|
39
|
+
buildAst,
|
|
40
|
+
dispatchNodeHandler,
|
|
41
|
+
prettyPrint
|
|
42
|
+
} from "@mpeggroup/mpeg-sdl-parser";
|
|
43
|
+
|
|
44
|
+
// Create a Lezer based SDL concrete syntax parser.
|
|
45
|
+
// This will create a lenient parser which recovers from parse errors and places error nodes in the parse tree.
|
|
46
|
+
// A strict parser which will throw a `SyntaxError` can be created with `createStrictSdlParser()`.
|
|
47
|
+
const parser = await createLenientSdlParser();
|
|
48
|
+
|
|
49
|
+
// Prepare the SDL input
|
|
50
|
+
const sdlStringInput = new SdlStringInput("class A{}");
|
|
51
|
+
|
|
52
|
+
// Parse SDL input and produce a parse tree
|
|
53
|
+
const sdlParseTree = sdlParser.parse(sdlStringInput);
|
|
54
|
+
|
|
55
|
+
// Traverse and print the parse tree
|
|
56
|
+
const cursor = sdlParseTree.cursor();
|
|
57
|
+
do {
|
|
58
|
+
console.log(`Node ${cursor.name} from ${cursor.from} to ${cursor.to}`)
|
|
59
|
+
} while (cursor.next());
|
|
60
|
+
|
|
61
|
+
// Print any syntax errors by collating any error nodes in the parse tree
|
|
62
|
+
const syntaxErrors = collateSyntaxErrors(sdlParseTree, sdlStringInput);
|
|
63
|
+
|
|
64
|
+
console.log(JSON.stringify(syntaxErrors);
|
|
65
|
+
|
|
66
|
+
// Build an Abstract Syntax Tree (AST) of the SDL specification from the concrete parse tree
|
|
67
|
+
// The third argument sets `lenient = true`. If this is not set or is `false`
|
|
68
|
+
// a `SyntaxError` will be thrown if the sdlParseTree contains parsing errors.
|
|
69
|
+
const specification = buildAst(sdlParseTree, sdlStringInput, true);
|
|
70
|
+
|
|
71
|
+
// Define a simple AST Node handler
|
|
72
|
+
class MyNodeHandler implements NodeHandler {
|
|
73
|
+
beforeVisit(node: AbstractCompositeNode) {
|
|
74
|
+
console.log("About to visit child nodes");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
visit(node: AbstractLeafNode) {
|
|
78
|
+
console.log("Visiting leaf node");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
afterVisit(node: AbstractCompositeNode) {
|
|
82
|
+
console.log("Finished visiting child nodes");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Dispatch the handler to visit all nodes in the AST
|
|
87
|
+
dispatchNodeHandler(specification, new MyNodeHandler());
|
|
88
|
+
|
|
89
|
+
// Create an SDL semantic analyser
|
|
90
|
+
// This will create a lenient analyser which recovers from semantic errors and stores them in the analysis results.
|
|
91
|
+
// A strict analyser which will throw a `SemanticError` can be created with `createStrictSdlAnalyser()`.
|
|
92
|
+
const analyser = createLenientSdlAnalyser();
|
|
93
|
+
|
|
94
|
+
// Analyse the AST
|
|
95
|
+
const analysisResult = analyser.analyse(specification);
|
|
96
|
+
|
|
97
|
+
// Print any semantic errors from the AST analysis
|
|
98
|
+
console.log(JSON.stringify(analysisResult.semanticErrors));
|
|
99
|
+
|
|
100
|
+
// Print any semantic warnings from the AST analysis
|
|
101
|
+
console.log(JSON.stringify(analysisResult.semanticWarnings));
|
|
102
|
+
|
|
103
|
+
// Pretty print the specification (retaining comments and handling parse errors)
|
|
104
|
+
let prettifiedSpecification = await prettyPrint(specification, sdlStringInput)
|
|
105
|
+
|
|
106
|
+
console.log(prettifiedSpecification);
|
|
107
|
+
|
|
108
|
+
// A Prettier (prettier.io) plugin for SDL is also available:
|
|
109
|
+
import * as prettier from "prettier/standalone.js";
|
|
110
|
+
import { prettierPluginSdl } from "@mpeggroup/mpeg-sdl-parser";
|
|
111
|
+
|
|
112
|
+
prettifiedSpecification = await prettier.format("class A{}", {
|
|
113
|
+
parser: "sdl",
|
|
114
|
+
plugins: [prettierPluginSdl],
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
console.log(prettifiedSpecification);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Development
|
|
121
|
+
|
|
122
|
+
Install dependencies:
|
|
123
|
+
|
|
124
|
+
`bun install`
|
|
125
|
+
|
|
126
|
+
Generate parser from grammar:
|
|
127
|
+
|
|
128
|
+
`bun run generate`
|
|
129
|
+
|
|
130
|
+
Test:
|
|
131
|
+
|
|
132
|
+
`bun test`
|
|
133
|
+
|
|
134
|
+
**NOTE**: The following tasks use Deno as it excels at these and Bun does not
|
|
135
|
+
currently provide such functionality:
|
|
136
|
+
|
|
137
|
+
Format:
|
|
138
|
+
|
|
139
|
+
`deno fmt`
|
|
140
|
+
|
|
141
|
+
Lint:
|
|
142
|
+
|
|
143
|
+
`deno lint index.ts src/ tests/`
|
|
144
|
+
|
|
145
|
+
Generate HTML API Documentation:
|
|
146
|
+
|
|
147
|
+
`deno doc --html --name=mpeg-sdl-parser index.ts`
|
|
148
|
+
|
|
149
|
+
## Documentation
|
|
150
|
+
|
|
151
|
+
### Overview
|
|
152
|
+
|
|
153
|
+
The concrete syntax parser is implemented using
|
|
154
|
+
[Lezer](https://lezer.codemirror.net) and the Lezer grammar defined in
|
|
155
|
+
[sdl.lezer.grammar](grammar/sdl.lezer.grammar). This framework was chosen as it:
|
|
156
|
+
|
|
157
|
+
- Provides robust error recovery whilst parsing.
|
|
158
|
+
- Integrates well with the web based code editor framework
|
|
159
|
+
[Codemirror](https://codemirror.net) which is used in the
|
|
160
|
+
[MPEG SDL Editor](https://github.com/MPEGGroup/mpeg-sdl-editor).
|
|
161
|
+
|
|
162
|
+
For reference purposes an SDL EBNF grammar is also provided in
|
|
163
|
+
[sdl.ebnf.grammar](grammar/sdl.ebnf.grammar)
|
|
164
|
+
|
|
165
|
+
The concrete syntax tree is then converted to an Abstract Syntax Tree (AST)
|
|
166
|
+
which is not tied to any underlying framework. The AST representation is used
|
|
167
|
+
for pretty printing and as such retains a "full fidelity" represenation of the
|
|
168
|
+
source i.e. including text location and trivia items (comments and blank lines).
|
|
169
|
+
|
|
170
|
+
### Abstract Syntax Tree Model
|
|
171
|
+
|
|
172
|
+
```mermaid
|
|
173
|
+
classDiagram
|
|
174
|
+
|
|
175
|
+
class Trivia {
|
|
176
|
+
<<interface>>
|
|
177
|
+
text: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
class Location {
|
|
181
|
+
<<interface>>
|
|
182
|
+
row: number
|
|
183
|
+
column: number
|
|
184
|
+
position: number
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
class AbstractNode {
|
|
188
|
+
<<Abstract>>
|
|
189
|
+
nodeKind: NodeKind
|
|
190
|
+
isCompositeNode: boolean
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
class AbstractLeafNode {
|
|
194
|
+
<<Abstract>>
|
|
195
|
+
isCompositeNode = false
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
class AbstractCompositeNode {
|
|
199
|
+
<<Abstract>>
|
|
200
|
+
isCompositeNode = true
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
class Token {
|
|
204
|
+
text: string;
|
|
205
|
+
tokenKind: TokenKind;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
class TraversingVisitor {
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
class NodeVisitor {
|
|
212
|
+
<<interface>>
|
|
213
|
+
visit(node: AbstractNode)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
class NodeHandler {
|
|
217
|
+
<<interface>>
|
|
218
|
+
beforeVisit(node: AbstractCompositeNode)
|
|
219
|
+
visit(node: AbstractLeafNode)
|
|
220
|
+
afterVisit(node: AbstractCompositeNode)
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
Trivia --> Location : location
|
|
224
|
+
|
|
225
|
+
NodeHandler ..> AbstractCompositeNode : afterVisit
|
|
226
|
+
NodeHandler ..> AbstractCompositeNode : beforeVisit
|
|
227
|
+
NodeHandler ..> AbstractLeafNode : visit
|
|
228
|
+
|
|
229
|
+
AbstractNode --> "*" Trivia : leadingTrivia
|
|
230
|
+
AbstractNode --> "*" Trivia : trailingTrivia
|
|
231
|
+
|
|
232
|
+
AbstractLeafNode --|> AbstractNode
|
|
233
|
+
|
|
234
|
+
AbstractCompositeNode --|> AbstractNode
|
|
235
|
+
AbstractCompositeNode --> "*" AbstractNode : children
|
|
236
|
+
AbstractCompositeNode --> "0..1" Token : startToken
|
|
237
|
+
AbstractCompositeNode --> "0..1" Token : endToken
|
|
238
|
+
|
|
239
|
+
Token --|> AbstractLeafNode
|
|
240
|
+
Token --> Location
|
|
241
|
+
|
|
242
|
+
NodeVisitor ..> AbstractNode : visit
|
|
243
|
+
TraversingVisitor --|> NodeVisitor
|
|
244
|
+
TraversingVisitor --> NodeHandler
|
|
245
|
+
|
|
246
|
+
CompositeNodeXYZ "*" --|> AbstractCompositeNode
|
|
247
|
+
Specification --|> AbstractCompositeNode
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Semantic Analyser Model
|
|
251
|
+
|
|
252
|
+
```mermaid
|
|
253
|
+
classDiagram
|
|
254
|
+
class SdlAnalyser {
|
|
255
|
+
configure(options) SdlAnalyser
|
|
256
|
+
analyse(specification) SdlAnalysisResult
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
class SdlAnalysisResult {
|
|
260
|
+
<<interface>>
|
|
261
|
+
SemanticError[] semanticErrors
|
|
262
|
+
SemanticWarning[] semanticWarnings
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
class SymbolTable {
|
|
266
|
+
addSymbol()
|
|
267
|
+
lookupVariable()
|
|
268
|
+
lookupClass()
|
|
269
|
+
lookupMap()
|
|
270
|
+
enterClassScope()
|
|
271
|
+
enterBlockScope()
|
|
272
|
+
exitScope()
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
class AbstractAnalysisNodeHandler {
|
|
276
|
+
<<abstract>>
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
class BuildSymbolTableNodeHandler {
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
class ValidateScopeNodeHandler {
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
class ValidateTypeNodeHandler {
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
class SpecificCheckNodeHandler {
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
class Check {
|
|
292
|
+
<<interface>>
|
|
293
|
+
string nodeKind
|
|
294
|
+
string subKind
|
|
295
|
+
checkFunc()
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
class Specification {
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
SdlAnalyser --> SdlAnalysisResult : produces
|
|
302
|
+
SdlAnalyser --> Specification : analyses
|
|
303
|
+
SdlAnalysisResult --> SymbolTable
|
|
304
|
+
SdlAnalysisResult --> Specification
|
|
305
|
+
AbstractAnalysisNodeHandler --> SymbolTable
|
|
306
|
+
BuildSymbolTableNodeHandler --|> AbstractAnalysisNodeHandler
|
|
307
|
+
ValidateScopeNodeHandler --|> AbstractAnalysisNodeHandler
|
|
308
|
+
ValidateTypeNodeHandler --|> AbstractAnalysisNodeHandler
|
|
309
|
+
SpecificCheckNodeHandler --|> AbstractAnalysisNodeHandler
|
|
310
|
+
SpecificCheckNodeHandler --> Check
|
|
311
|
+
SdlAnalyser ..> BuildSymbolTableNodeHandler : pass 1
|
|
312
|
+
SdlAnalyser ..> ValidateScopeNodeHandler : pass 2
|
|
313
|
+
SdlAnalyser ..> ValidateTypeNodeHandler : pass 3
|
|
314
|
+
SdlAnalyser ..> SpecificCheckNodeHandler : pass 4
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### API
|
|
318
|
+
|
|
319
|
+
Link to auto-generated API docs:
|
|
320
|
+
|
|
321
|
+
[API Documentation](https://mpeggroup.github.io/mpeg-sdl-parser)
|
|
322
|
+
|
|
323
|
+
### Debug Logging
|
|
324
|
+
|
|
325
|
+
Internal framework logging can be enabled by setting the `MPEG_SDL_PARSER_DEBUG`
|
|
326
|
+
environment variable. If running in a browser open the developer console and
|
|
327
|
+
run:
|
|
328
|
+
|
|
329
|
+
`localStorage.setItem("MPEG_SDL_PARSER_DEBUG", "true")`
|
|
330
|
+
|
|
331
|
+
The logging implementation will look for an object conforming to the `Logger`
|
|
332
|
+
interface and use it if found. If not found, a simple logging implementation
|
|
333
|
+
using the `console` object will be used.
|
|
334
|
+
|
|
335
|
+
## License
|
|
336
|
+
|
|
337
|
+
MIT © Flowscripter
|
package/bun.lock
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 0,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "@mpeggroup/mpeg-sdl-parser",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@codemirror/language": "latest",
|
|
9
|
+
"@codemirror/state": "latest",
|
|
10
|
+
"@lezer/common": "latest",
|
|
11
|
+
"@lezer/generator": "latest",
|
|
12
|
+
"@lezer/highlight": "latest",
|
|
13
|
+
"@lezer/lr": "latest",
|
|
14
|
+
"prettier": "latest",
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/bun": "latest",
|
|
18
|
+
"@types/node": "latest",
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"typescript": "latest",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
"overrides": {
|
|
26
|
+
"@codemirror/state": "6.5.4",
|
|
27
|
+
"@lezer/common": "1.5.0",
|
|
28
|
+
"@lezer/lr": "1.4.7",
|
|
29
|
+
},
|
|
30
|
+
"packages": {
|
|
31
|
+
"@codemirror/language": ["@codemirror/language@6.12.3", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA=="],
|
|
32
|
+
|
|
33
|
+
"@codemirror/state": ["@codemirror/state@6.5.4", "", { "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw=="],
|
|
34
|
+
|
|
35
|
+
"@codemirror/view": ["@codemirror/view@6.39.9", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-miGSIfBOKC1s2oHoa80dp+BjtsL8sXsrgGlQnQuOcfvaedcQUtqddTmKbJSDkLl4mkgPvZyXuKic2HDNYcJLYA=="],
|
|
36
|
+
|
|
37
|
+
"@lezer/common": ["@lezer/common@1.5.0", "", {}, "sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA=="],
|
|
38
|
+
|
|
39
|
+
"@lezer/generator": ["@lezer/generator@1.8.0", "", { "dependencies": { "@lezer/common": "^1.1.0", "@lezer/lr": "^1.3.0" }, "bin": { "lezer-generator": "src/lezer-generator.cjs" } }, "sha512-/SF4EDWowPqV1jOgoGSGTIFsE7Ezdr7ZYxyihl5eMKVO5tlnpIhFcDavgm1hHY5GEonoOAEnJ0CU0x+tvuAuUg=="],
|
|
40
|
+
|
|
41
|
+
"@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="],
|
|
42
|
+
|
|
43
|
+
"@lezer/lr": ["@lezer/lr@1.4.7", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-wNIFWdSUfX9Jc6ePMzxSPVgTVB4EOfDIwLQLWASyiUdHKaMsiilj9bYiGkGQCKVodd0x6bgQCV207PILGFCF9Q=="],
|
|
44
|
+
|
|
45
|
+
"@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="],
|
|
46
|
+
|
|
47
|
+
"@types/bun": ["@types/bun@1.3.13", "", { "dependencies": { "bun-types": "1.3.13" } }, "sha512-9fqXWk5YIHGGnUau9TEi+qdlTYDAnOj+xLCmSTwXfAIqXr2x4tytJb43E9uCvt09zJURKXwAtkoH4nLQfzeTXw=="],
|
|
48
|
+
|
|
49
|
+
"@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="],
|
|
50
|
+
|
|
51
|
+
"bun-types": ["bun-types@1.3.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA=="],
|
|
52
|
+
|
|
53
|
+
"crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="],
|
|
54
|
+
|
|
55
|
+
"prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="],
|
|
56
|
+
|
|
57
|
+
"style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="],
|
|
58
|
+
|
|
59
|
+
"typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
|
|
60
|
+
|
|
61
|
+
"undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
|
|
62
|
+
|
|
63
|
+
"w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="],
|
|
64
|
+
}
|
|
65
|
+
}
|