@unispechq/unispec-core 0.3.2 → 0.3.4
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/dist/cache/cache-factory.d.ts +2 -2
- package/dist/cache/cache-factory.js +1 -1
- package/dist/cache/cache-manager.d.ts +2 -2
- package/dist/cache/cache-manager.js +9 -7
- package/dist/cache/hash-utils.d.ts +1 -11
- package/dist/cache/hash-utils.js +1 -21
- package/dist/cache/hashing.d.ts +15 -6
- package/dist/cache/hashing.js +8 -12
- package/dist/cache/index.d.ts +6 -6
- package/dist/cache/index.js +5 -5
- package/dist/cache/lru-cache.d.ts +1 -13
- package/dist/cache/lru-cache.js +3 -24
- package/dist/cjs/cache/cache-factory.js +1 -1
- package/dist/cjs/cache/cache-manager.js +9 -7
- package/dist/cjs/cache/hash-utils.js +1 -23
- package/dist/cjs/cache/hashing.js +7 -13
- package/dist/cjs/cache/index.js +6 -8
- package/dist/cjs/cache/lru-cache.js +3 -24
- package/dist/cjs/diff/annotators.js +3 -2
- package/dist/cjs/diff/core.js +2 -2
- package/dist/cjs/diff/enhanced-diff.js +7 -21
- package/dist/cjs/diff/index.js +8 -8
- package/dist/cjs/errors/config-error.js +1 -1
- package/dist/cjs/errors/error-factory.js +7 -7
- package/dist/cjs/errors/index.js +8 -8
- package/dist/cjs/errors/loader-error.js +1 -1
- package/dist/cjs/errors/reference-error.js +1 -1
- package/dist/cjs/errors/schema-error.js +1 -1
- package/dist/cjs/errors/security-error.js +1 -1
- package/dist/cjs/errors/semantic-error.js +1 -1
- package/dist/cjs/index.js +13 -13
- package/dist/cjs/loader/index.js +4 -4
- package/dist/cjs/loader/security-validator.js +1 -1
- package/dist/cjs/loader/unispec-loader.js +3 -3
- package/dist/cjs/loader/yaml-loader.js +1 -1
- package/dist/cjs/normalizer/core.js +11 -6
- package/dist/cjs/normalizer/index.js +1 -1
- package/dist/cjs/normalizer/utils.js +23 -7
- package/dist/cjs/optimizer/core.js +35 -10
- package/dist/cjs/optimizer/index.js +3 -3
- package/dist/cjs/optimizer/optimization-functions.js +2 -2
- package/dist/cjs/schemas/dedupe.js +27 -14
- package/dist/cjs/schemas/index.js +3 -3
- package/dist/cjs/schemas/resolver.js +3 -2
- package/dist/cjs/validator/ajv-validator.js +1 -1
- package/dist/cjs/validator/config-validator-main.js +4 -4
- package/dist/cjs/validator/config-validator.js +1 -1
- package/dist/cjs/validator/index.js +7 -7
- package/dist/cjs/validator/reference-validator.js +1 -1
- package/dist/cjs/validator/tests-validator.js +2 -2
- package/dist/cjs/validator/unispec-validator.js +7 -11
- package/dist/cjs/validator/validator-factory.js +1 -1
- package/dist/diff/annotators.d.ts +1 -1
- package/dist/diff/annotators.js +3 -2
- package/dist/diff/change-reports.d.ts +1 -1
- package/dist/diff/core.d.ts +2 -2
- package/dist/diff/core.js +2 -2
- package/dist/diff/enhanced-diff.d.ts +3 -3
- package/dist/diff/enhanced-diff.js +7 -21
- package/dist/diff/impact-strategies-refactored.d.ts +2 -2
- package/dist/diff/impact-strategies.d.ts +2 -2
- package/dist/diff/index.d.ts +8 -8
- package/dist/diff/index.js +8 -8
- package/dist/diff/metrics-calculator.d.ts +1 -1
- package/dist/diff/risk-calculator.d.ts +1 -1
- package/dist/diff/suggestion-generator.d.ts +2 -2
- package/dist/errors/config-error.d.ts +1 -1
- package/dist/errors/config-error.js +1 -1
- package/dist/errors/error-factory.d.ts +7 -7
- package/dist/errors/error-factory.js +7 -7
- package/dist/errors/index.d.ts +8 -8
- package/dist/errors/index.js +8 -8
- package/dist/errors/loader-error.d.ts +1 -1
- package/dist/errors/loader-error.js +1 -1
- package/dist/errors/reference-error.d.ts +1 -1
- package/dist/errors/reference-error.js +1 -1
- package/dist/errors/schema-error.d.ts +1 -1
- package/dist/errors/schema-error.js +1 -1
- package/dist/errors/security-error.d.ts +1 -1
- package/dist/errors/security-error.js +1 -1
- package/dist/errors/semantic-error.d.ts +1 -1
- package/dist/errors/semantic-error.js +1 -1
- package/dist/index.cjs +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +13 -13
- package/dist/loader/index.d.ts +5 -5
- package/dist/loader/index.js +4 -4
- package/dist/loader/security-validator.d.ts +1 -1
- package/dist/loader/security-validator.js +1 -1
- package/dist/loader/unispec-loader.d.ts +2 -2
- package/dist/loader/unispec-loader.js +3 -3
- package/dist/loader/yaml-loader.d.ts +1 -1
- package/dist/loader/yaml-loader.js +1 -1
- package/dist/normalizer/core.d.ts +2 -2
- package/dist/normalizer/core.js +11 -6
- package/dist/normalizer/graphql-normalizer.d.ts +1 -1
- package/dist/normalizer/index.d.ts +2 -2
- package/dist/normalizer/index.js +1 -1
- package/dist/normalizer/rest-normalizer.d.ts +1 -1
- package/dist/normalizer/types.d.ts +1 -1
- package/dist/normalizer/utils.d.ts +6 -3
- package/dist/normalizer/utils.js +23 -7
- package/dist/normalizer/websocket-normalizer.d.ts +1 -1
- package/dist/optimizer/core.d.ts +2 -2
- package/dist/optimizer/core.js +35 -10
- package/dist/optimizer/index.d.ts +4 -4
- package/dist/optimizer/index.js +3 -3
- package/dist/optimizer/optimization-functions.d.ts +2 -2
- package/dist/optimizer/optimization-functions.js +2 -2
- package/dist/optimizer/types.d.ts +1 -1
- package/dist/schemas/dedupe.d.ts +1 -1
- package/dist/schemas/dedupe.js +27 -14
- package/dist/schemas/index.d.ts +3 -3
- package/dist/schemas/index.js +3 -3
- package/dist/schemas/resolver.d.ts +1 -1
- package/dist/schemas/resolver.js +3 -2
- package/dist/types/index.d.ts +2 -1
- package/dist/validator/ajv-validator.d.ts +1 -1
- package/dist/validator/ajv-validator.js +1 -1
- package/dist/validator/config-validator-main.d.ts +2 -2
- package/dist/validator/config-validator-main.js +4 -4
- package/dist/validator/config-validator.d.ts +1 -1
- package/dist/validator/config-validator.js +1 -1
- package/dist/validator/index.d.ts +10 -10
- package/dist/validator/index.js +7 -7
- package/dist/validator/reference-validator.d.ts +1 -1
- package/dist/validator/reference-validator.js +1 -1
- package/dist/validator/schema-references.d.ts +1 -1
- package/dist/validator/semantic-validator.d.ts +1 -1
- package/dist/validator/tests-validator.d.ts +2 -2
- package/dist/validator/tests-validator.js +2 -2
- package/dist/validator/types.d.ts +3 -3
- package/dist/validator/unispec-validator.d.ts +2 -2
- package/dist/validator/unispec-validator.js +7 -11
- package/dist/validator/validator-factory.d.ts +3 -3
- package/dist/validator/validator-factory.js +1 -1
- package/package.json +3 -3
- package/dist/cjs/src/cache/cache-factory.js +0 -72
- package/dist/cjs/src/cache/cache-manager.js +0 -128
- package/dist/cjs/src/cache/constants.js +0 -25
- package/dist/cjs/src/cache/hash-utils.js +0 -19
- package/dist/cjs/src/cache/hashing.js +0 -230
- package/dist/cjs/src/cache/index.js +0 -24
- package/dist/cjs/src/cache/lru-cache.js +0 -144
- package/dist/cjs/src/cache/types.js +0 -5
- package/dist/cjs/src/diff/annotators.js +0 -160
- package/dist/cjs/src/diff/change-reports.js +0 -369
- package/dist/cjs/src/diff/core.js +0 -158
- package/dist/cjs/src/diff/enhanced-diff.js +0 -65
- package/dist/cjs/src/diff/impact-strategies-refactored.js +0 -230
- package/dist/cjs/src/diff/impact-strategies.js +0 -219
- package/dist/cjs/src/diff/index.js +0 -27
- package/dist/cjs/src/diff/metrics-calculator.js +0 -69
- package/dist/cjs/src/diff/risk-calculator.js +0 -58
- package/dist/cjs/src/diff/suggestion-generator.js +0 -78
- package/dist/cjs/src/diff/types.js +0 -11
- package/dist/cjs/src/errors/base-error.js +0 -33
- package/dist/cjs/src/errors/config-error.js +0 -11
- package/dist/cjs/src/errors/error-factory.js +0 -48
- package/dist/cjs/src/errors/index.js +0 -19
- package/dist/cjs/src/errors/loader-error.js +0 -11
- package/dist/cjs/src/errors/reference-error.js +0 -11
- package/dist/cjs/src/errors/schema-error.js +0 -11
- package/dist/cjs/src/errors/security-error.js +0 -11
- package/dist/cjs/src/errors/semantic-error.js +0 -11
- package/dist/cjs/src/generated-schemas.js +0 -2100
- package/dist/cjs/src/index.js +0 -59
- package/dist/cjs/src/loader/index.js +0 -13
- package/dist/cjs/src/loader/security-validator.js +0 -53
- package/dist/cjs/src/loader/types.js +0 -11
- package/dist/cjs/src/loader/unispec-loader.js +0 -84
- package/dist/cjs/src/loader/yaml-loader.js +0 -76
- package/dist/cjs/src/normalizer/core.js +0 -37
- package/dist/cjs/src/normalizer/graphql-normalizer.js +0 -67
- package/dist/cjs/src/normalizer/index.js +0 -7
- package/dist/cjs/src/normalizer/rest-normalizer.js +0 -51
- package/dist/cjs/src/normalizer/types.js +0 -2
- package/dist/cjs/src/normalizer/utils.js +0 -49
- package/dist/cjs/src/normalizer/websocket-normalizer.js +0 -81
- package/dist/cjs/src/optimizer/core.js +0 -140
- package/dist/cjs/src/optimizer/index.js +0 -17
- package/dist/cjs/src/optimizer/optimization-functions.js +0 -185
- package/dist/cjs/src/optimizer/types.js +0 -2
- package/dist/cjs/src/optimizer/utils.js +0 -32
- package/dist/cjs/src/schemas/dedupe.js +0 -113
- package/dist/cjs/src/schemas/index.js +0 -14
- package/dist/cjs/src/schemas/resolver.js +0 -42
- package/dist/cjs/src/schemas/utils.js +0 -53
- package/dist/cjs/src/types/index.js +0 -2
- package/dist/cjs/src/validator/ajv-validator.js +0 -82
- package/dist/cjs/src/validator/config-validator-main.js +0 -34
- package/dist/cjs/src/validator/config-validator.js +0 -17
- package/dist/cjs/src/validator/index.js +0 -23
- package/dist/cjs/src/validator/object-traversal.js +0 -112
- package/dist/cjs/src/validator/reference-validator.js +0 -233
- package/dist/cjs/src/validator/schema-references.js +0 -116
- package/dist/cjs/src/validator/semantic-validator.js +0 -328
- package/dist/cjs/src/validator/tests-validator.js +0 -16
- package/dist/cjs/src/validator/types.js +0 -2
- package/dist/cjs/src/validator/unispec-validator.js +0 -80
- package/dist/cjs/src/validator/validator-factory.js +0 -77
- package/dist/cjs/src/versions.js +0 -147
- package/dist/cjs/tests/cache/cache.test.js +0 -274
- package/dist/cjs/tests/cache/utils.js +0 -32
- package/dist/cjs/tests/concurrency-normalizer-optimizer.test.js +0 -1
- package/dist/cjs/tests/diff/diff-annotators.test.js +0 -280
- package/dist/cjs/tests/diff/diff-comprehensive.test.js +0 -262
- package/dist/cjs/tests/diff/diff-extended.test.js +0 -235
- package/dist/cjs/tests/diff/diff.test.js +0 -189
- package/dist/cjs/tests/diff/utils.js +0 -8
- package/dist/cjs/tests/errors/errors-integration.test.js +0 -173
- package/dist/cjs/tests/errors/errors.test.js +0 -280
- package/dist/cjs/tests/errors/utils.js +0 -7
- package/dist/cjs/tests/loader/integration.test.js +0 -216
- package/dist/cjs/tests/loader/loader.test.js +0 -341
- package/dist/cjs/tests/normalizer/normalizer-comprehensive.test.js +0 -648
- package/dist/cjs/tests/normalizer/normalizer-invalid.test.js +0 -258
- package/dist/cjs/tests/normalizer/normalizer-valid.test.js +0 -238
- package/dist/cjs/tests/normalizer/utils.js +0 -47
- package/dist/cjs/tests/optimizer/compress-references.test.js +0 -304
- package/dist/cjs/tests/optimizer/deduplication.test.js +0 -132
- package/dist/cjs/tests/optimizer/integration.test.js +0 -131
- package/dist/cjs/tests/optimizer/optimization-report.test.js +0 -222
- package/dist/cjs/tests/optimizer/optimize-document.test.js +0 -187
- package/dist/cjs/tests/optimizer/orphaned-schemas.test.js +0 -194
- package/dist/cjs/tests/optimizer/sort-schemas.test.js +0 -131
- package/dist/cjs/tests/optimizer/utils.js +0 -209
- package/dist/cjs/tests/schemas/schemas-edge-cases.test.js +0 -223
- package/dist/cjs/tests/schemas/schemas.test.js +0 -400
- package/dist/cjs/tests/schemas/utils.js +0 -7
- package/dist/cjs/tests/utils.js +0 -131
- package/dist/cjs/tests/validator/config-validator.test.js +0 -78
- package/dist/cjs/tests/validator/debug-config.js +0 -1
- package/dist/cjs/tests/validator/debug-missing-service.js +0 -1
- package/dist/cjs/tests/validator/debug-other-configs.js +0 -1
- package/dist/cjs/tests/validator/debug-references.js +0 -1
- package/dist/cjs/tests/validator/unispec-validator.test.js +0 -103
- package/dist/cjs/tests/validator/utils.js +0 -25
- package/dist/src/cache/cache-factory.d.ts +0 -31
- package/dist/src/cache/cache-factory.js +0 -65
- package/dist/src/cache/cache-manager.d.ts +0 -62
- package/dist/src/cache/cache-manager.js +0 -124
- package/dist/src/cache/constants.d.ts +0 -21
- package/dist/src/cache/constants.js +0 -22
- package/dist/src/cache/hash-utils.d.ts +0 -11
- package/dist/src/cache/hash-utils.js +0 -15
- package/dist/src/cache/hashing.d.ts +0 -28
- package/dist/src/cache/hashing.js +0 -193
- package/dist/src/cache/index.d.ts +0 -6
- package/dist/src/cache/index.js +0 -10
- package/dist/src/cache/lru-cache.d.ts +0 -44
- package/dist/src/cache/lru-cache.js +0 -140
- package/dist/src/cache/types.d.ts +0 -24
- package/dist/src/cache/types.js +0 -4
- package/dist/src/diff/annotators.d.ts +0 -4
- package/dist/src/diff/annotators.js +0 -155
- package/dist/src/diff/change-reports.d.ts +0 -37
- package/dist/src/diff/change-reports.js +0 -366
- package/dist/src/diff/core.d.ts +0 -26
- package/dist/src/diff/core.js +0 -155
- package/dist/src/diff/enhanced-diff.d.ts +0 -51
- package/dist/src/diff/enhanced-diff.js +0 -62
- package/dist/src/diff/impact-strategies-refactored.d.ts +0 -69
- package/dist/src/diff/impact-strategies-refactored.js +0 -223
- package/dist/src/diff/impact-strategies.d.ts +0 -41
- package/dist/src/diff/impact-strategies.js +0 -212
- package/dist/src/diff/index.d.ts +0 -8
- package/dist/src/diff/index.js +0 -11
- package/dist/src/diff/metrics-calculator.d.ts +0 -23
- package/dist/src/diff/metrics-calculator.js +0 -65
- package/dist/src/diff/risk-calculator.d.ts +0 -23
- package/dist/src/diff/risk-calculator.js +0 -55
- package/dist/src/diff/suggestion-generator.d.ts +0 -18
- package/dist/src/diff/suggestion-generator.js +0 -74
- package/dist/src/diff/types.d.ts +0 -24
- package/dist/src/diff/types.js +0 -8
- package/dist/src/errors/base-error.d.ts +0 -20
- package/dist/src/errors/base-error.js +0 -29
- package/dist/src/errors/config-error.d.ts +0 -4
- package/dist/src/errors/config-error.js +0 -7
- package/dist/src/errors/error-factory.d.ts +0 -22
- package/dist/src/errors/error-factory.js +0 -45
- package/dist/src/errors/index.d.ts +0 -8
- package/dist/src/errors/index.js +0 -8
- package/dist/src/errors/loader-error.d.ts +0 -4
- package/dist/src/errors/loader-error.js +0 -7
- package/dist/src/errors/reference-error.d.ts +0 -4
- package/dist/src/errors/reference-error.js +0 -7
- package/dist/src/errors/schema-error.d.ts +0 -4
- package/dist/src/errors/schema-error.js +0 -7
- package/dist/src/errors/security-error.d.ts +0 -4
- package/dist/src/errors/security-error.js +0 -7
- package/dist/src/errors/semantic-error.d.ts +0 -4
- package/dist/src/errors/semantic-error.js +0 -7
- package/dist/src/generated-schemas.d.ts +0 -2073
- package/dist/src/generated-schemas.js +0 -2097
- package/dist/src/index.d.ts +0 -13
- package/dist/src/index.js +0 -43
- package/dist/src/loader/index.d.ts +0 -5
- package/dist/src/loader/index.js +0 -5
- package/dist/src/loader/security-validator.d.ts +0 -5
- package/dist/src/loader/security-validator.js +0 -50
- package/dist/src/loader/types.d.ts +0 -30
- package/dist/src/loader/types.js +0 -8
- package/dist/src/loader/unispec-loader.d.ts +0 -10
- package/dist/src/loader/unispec-loader.js +0 -81
- package/dist/src/loader/yaml-loader.d.ts +0 -10
- package/dist/src/loader/yaml-loader.js +0 -39
- package/dist/src/normalizer/core.d.ts +0 -24
- package/dist/src/normalizer/core.js +0 -34
- package/dist/src/normalizer/graphql-normalizer.d.ts +0 -8
- package/dist/src/normalizer/graphql-normalizer.js +0 -64
- package/dist/src/normalizer/index.d.ts +0 -2
- package/dist/src/normalizer/index.js +0 -3
- package/dist/src/normalizer/rest-normalizer.d.ts +0 -8
- package/dist/src/normalizer/rest-normalizer.js +0 -48
- package/dist/src/normalizer/types.d.ts +0 -7
- package/dist/src/normalizer/types.js +0 -1
- package/dist/src/normalizer/utils.d.ts +0 -17
- package/dist/src/normalizer/utils.js +0 -45
- package/dist/src/normalizer/websocket-normalizer.d.ts +0 -8
- package/dist/src/normalizer/websocket-normalizer.js +0 -78
- package/dist/src/optimizer/core.d.ts +0 -17
- package/dist/src/optimizer/core.js +0 -136
- package/dist/src/optimizer/index.d.ts +0 -4
- package/dist/src/optimizer/index.js +0 -7
- package/dist/src/optimizer/optimization-functions.d.ts +0 -32
- package/dist/src/optimizer/optimization-functions.js +0 -179
- package/dist/src/optimizer/types.d.ts +0 -28
- package/dist/src/optimizer/types.js +0 -1
- package/dist/src/optimizer/utils.d.ts +0 -7
- package/dist/src/optimizer/utils.js +0 -29
- package/dist/src/schemas/dedupe.d.ts +0 -9
- package/dist/src/schemas/dedupe.js +0 -110
- package/dist/src/schemas/index.d.ts +0 -3
- package/dist/src/schemas/index.js +0 -6
- package/dist/src/schemas/resolver.d.ts +0 -19
- package/dist/src/schemas/resolver.js +0 -38
- package/dist/src/schemas/utils.d.ts +0 -20
- package/dist/src/schemas/utils.js +0 -49
- package/dist/src/types/index.d.ts +0 -434
- package/dist/src/types/index.js +0 -1
- package/dist/src/validator/ajv-validator.d.ts +0 -15
- package/dist/src/validator/ajv-validator.js +0 -75
- package/dist/src/validator/config-validator-main.d.ts +0 -10
- package/dist/src/validator/config-validator-main.js +0 -31
- package/dist/src/validator/config-validator.d.ts +0 -5
- package/dist/src/validator/config-validator.js +0 -14
- package/dist/src/validator/index.d.ts +0 -10
- package/dist/src/validator/index.js +0 -11
- package/dist/src/validator/object-traversal.d.ts +0 -52
- package/dist/src/validator/object-traversal.js +0 -104
- package/dist/src/validator/reference-validator.d.ts +0 -31
- package/dist/src/validator/reference-validator.js +0 -230
- package/dist/src/validator/schema-references.d.ts +0 -23
- package/dist/src/validator/schema-references.js +0 -111
- package/dist/src/validator/semantic-validator.d.ts +0 -26
- package/dist/src/validator/semantic-validator.js +0 -325
- package/dist/src/validator/tests-validator.d.ts +0 -9
- package/dist/src/validator/tests-validator.js +0 -13
- package/dist/src/validator/types.d.ts +0 -29
- package/dist/src/validator/types.js +0 -1
- package/dist/src/validator/unispec-validator.d.ts +0 -15
- package/dist/src/validator/unispec-validator.js +0 -77
- package/dist/src/validator/validator-factory.d.ts +0 -10
- package/dist/src/validator/validator-factory.js +0 -73
- package/dist/src/versions.d.ts +0 -10
- package/dist/src/versions.js +0 -143
- package/dist/tests/cache/cache.test.d.ts +0 -1
- package/dist/tests/cache/cache.test.js +0 -269
- package/dist/tests/cache/utils.d.ts +0 -4
- package/dist/tests/cache/utils.js +0 -24
- package/dist/tests/concurrency-normalizer-optimizer.test.d.ts +0 -0
- package/dist/tests/concurrency-normalizer-optimizer.test.js +0 -1
- package/dist/tests/diff/diff-annotators.test.d.ts +0 -1
- package/dist/tests/diff/diff-annotators.test.js +0 -275
- package/dist/tests/diff/diff-comprehensive.test.d.ts +0 -1
- package/dist/tests/diff/diff-comprehensive.test.js +0 -257
- package/dist/tests/diff/diff-extended.test.d.ts +0 -1
- package/dist/tests/diff/diff-extended.test.js +0 -230
- package/dist/tests/diff/diff.test.d.ts +0 -1
- package/dist/tests/diff/diff.test.js +0 -184
- package/dist/tests/diff/utils.d.ts +0 -2
- package/dist/tests/diff/utils.js +0 -3
- package/dist/tests/errors/errors-integration.test.d.ts +0 -1
- package/dist/tests/errors/errors-integration.test.js +0 -168
- package/dist/tests/errors/errors.test.d.ts +0 -1
- package/dist/tests/errors/errors.test.js +0 -275
- package/dist/tests/errors/utils.d.ts +0 -2
- package/dist/tests/errors/utils.js +0 -3
- package/dist/tests/loader/integration.test.d.ts +0 -1
- package/dist/tests/loader/integration.test.js +0 -211
- package/dist/tests/loader/loader.test.d.ts +0 -1
- package/dist/tests/loader/loader.test.js +0 -336
- package/dist/tests/normalizer/normalizer-comprehensive.test.d.ts +0 -1
- package/dist/tests/normalizer/normalizer-comprehensive.test.js +0 -643
- package/dist/tests/normalizer/normalizer-invalid.test.d.ts +0 -1
- package/dist/tests/normalizer/normalizer-invalid.test.js +0 -253
- package/dist/tests/normalizer/normalizer-valid.test.d.ts +0 -1
- package/dist/tests/normalizer/normalizer-valid.test.js +0 -233
- package/dist/tests/normalizer/utils.d.ts +0 -18
- package/dist/tests/normalizer/utils.js +0 -36
- package/dist/tests/optimizer/compress-references.test.d.ts +0 -1
- package/dist/tests/optimizer/compress-references.test.js +0 -299
- package/dist/tests/optimizer/deduplication.test.d.ts +0 -1
- package/dist/tests/optimizer/deduplication.test.js +0 -127
- package/dist/tests/optimizer/integration.test.d.ts +0 -1
- package/dist/tests/optimizer/integration.test.js +0 -126
- package/dist/tests/optimizer/optimization-report.test.d.ts +0 -1
- package/dist/tests/optimizer/optimization-report.test.js +0 -217
- package/dist/tests/optimizer/optimize-document.test.d.ts +0 -1
- package/dist/tests/optimizer/optimize-document.test.js +0 -182
- package/dist/tests/optimizer/orphaned-schemas.test.d.ts +0 -1
- package/dist/tests/optimizer/orphaned-schemas.test.js +0 -189
- package/dist/tests/optimizer/sort-schemas.test.d.ts +0 -1
- package/dist/tests/optimizer/sort-schemas.test.js +0 -126
- package/dist/tests/optimizer/utils.d.ts +0 -8
- package/dist/tests/optimizer/utils.js +0 -199
- package/dist/tests/schemas/schemas-edge-cases.test.d.ts +0 -1
- package/dist/tests/schemas/schemas-edge-cases.test.js +0 -218
- package/dist/tests/schemas/schemas.test.d.ts +0 -1
- package/dist/tests/schemas/schemas.test.js +0 -395
- package/dist/tests/schemas/utils.d.ts +0 -2
- package/dist/tests/schemas/utils.js +0 -3
- package/dist/tests/utils.d.ts +0 -10
- package/dist/tests/utils.js +0 -118
- package/dist/tests/validator/config-validator.test.d.ts +0 -1
- package/dist/tests/validator/config-validator.test.js +0 -73
- package/dist/tests/validator/debug-config.d.ts +0 -0
- package/dist/tests/validator/debug-config.js +0 -1
- package/dist/tests/validator/debug-missing-service.d.ts +0 -0
- package/dist/tests/validator/debug-missing-service.js +0 -1
- package/dist/tests/validator/debug-other-configs.d.ts +0 -0
- package/dist/tests/validator/debug-other-configs.js +0 -1
- package/dist/tests/validator/debug-references.d.ts +0 -0
- package/dist/tests/validator/debug-references.js +0 -1
- package/dist/tests/validator/unispec-validator.test.d.ts +0 -1
- package/dist/tests/validator/unispec-validator.test.js +0 -98
- package/dist/tests/validator/utils.d.ts +0 -6
- package/dist/tests/validator/utils.js +0 -20
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
-
const node_test_1 = require("node:test");
|
|
8
|
-
const cache_factory_1 = require("../../src/cache/cache-factory.js");
|
|
9
|
-
const cache_manager_1 = require("../../src/cache/cache-manager.js");
|
|
10
|
-
const hash_utils_1 = require("../../src/cache/hash-utils.js");
|
|
11
|
-
const lru_cache_1 = require("../../src/cache/lru-cache.js");
|
|
12
|
-
const createTestDoc = (name) => ({
|
|
13
|
-
unispecVersion: "1.0.0",
|
|
14
|
-
service: {
|
|
15
|
-
name,
|
|
16
|
-
description: `Test service ${name}`,
|
|
17
|
-
protocols: {
|
|
18
|
-
rest: {
|
|
19
|
-
routes: [
|
|
20
|
-
{
|
|
21
|
-
name: "test",
|
|
22
|
-
method: "GET",
|
|
23
|
-
path: "/test",
|
|
24
|
-
responses: { "200": { description: "Success" } },
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
(0, node_test_1.describe)("cache module", () => {
|
|
32
|
-
(0, node_test_1.describe)("LRUCache", () => {
|
|
33
|
-
(0, node_test_1.it)("should store and retrieve values", async () => {
|
|
34
|
-
const cache = new lru_cache_1.LRUCache();
|
|
35
|
-
await cache.set("key", "value");
|
|
36
|
-
node_assert_1.default.strictEqual(await cache.get("key"), "value");
|
|
37
|
-
});
|
|
38
|
-
(0, node_test_1.it)("should handle LRU eviction", async () => {
|
|
39
|
-
const cache = new lru_cache_1.LRUCache({ maxSize: 2 });
|
|
40
|
-
await cache.set("a", "1");
|
|
41
|
-
await cache.set("b", "2");
|
|
42
|
-
await cache.set("c", "3"); // evicts a
|
|
43
|
-
node_assert_1.default.strictEqual(await cache.get("a"), undefined);
|
|
44
|
-
node_assert_1.default.strictEqual(await cache.get("b"), "2");
|
|
45
|
-
node_assert_1.default.strictEqual(await cache.get("c"), "3");
|
|
46
|
-
});
|
|
47
|
-
(0, node_test_1.it)("should track statistics", async () => {
|
|
48
|
-
const cache = new lru_cache_1.LRUCache({ enableStats: true });
|
|
49
|
-
await cache.set("key", "value");
|
|
50
|
-
await cache.get("key"); // hit
|
|
51
|
-
await cache.get("missing"); // miss
|
|
52
|
-
const stats = cache.getStats();
|
|
53
|
-
node_assert_1.default.strictEqual(stats.hits, 1);
|
|
54
|
-
node_assert_1.default.strictEqual(stats.misses, 1);
|
|
55
|
-
node_assert_1.default.strictEqual(stats.hitRate, 0.5);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
(0, node_test_1.describe)("CacheManager", () => {
|
|
59
|
-
(0, node_test_1.it)("should handle validation caching", async () => {
|
|
60
|
-
const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
|
|
61
|
-
const doc = createTestDoc("test");
|
|
62
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
63
|
-
const result = { valid: true, errors: [] };
|
|
64
|
-
await manager.setValidationResult(hash, result);
|
|
65
|
-
const cached = await manager.getValidationResult(hash);
|
|
66
|
-
node_assert_1.default.deepStrictEqual(cached, result);
|
|
67
|
-
node_assert_1.default.strictEqual(manager.getStats().validation.size, 1);
|
|
68
|
-
manager.destroy();
|
|
69
|
-
});
|
|
70
|
-
(0, node_test_1.it)("should handle normalization caching", async () => {
|
|
71
|
-
const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
|
|
72
|
-
const doc = createTestDoc("test");
|
|
73
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
74
|
-
const normalized = { ...doc, normalized: true };
|
|
75
|
-
await manager.setNormalizationResult(hash, normalized);
|
|
76
|
-
const cached = await manager.getNormalizationResult(hash);
|
|
77
|
-
node_assert_1.default.deepStrictEqual(cached, normalized);
|
|
78
|
-
node_assert_1.default.strictEqual(manager.getStats().normalization.size, 1);
|
|
79
|
-
manager.destroy();
|
|
80
|
-
});
|
|
81
|
-
(0, node_test_1.it)("should handle diff caching", async () => {
|
|
82
|
-
const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
|
|
83
|
-
const doc1 = createTestDoc("test1");
|
|
84
|
-
const doc2 = createTestDoc("test2");
|
|
85
|
-
const hash = await (0, hash_utils_1.generateDiffHash)(doc1, doc2);
|
|
86
|
-
const diffResult = { changes: [] };
|
|
87
|
-
await manager.setDiffResult(hash, diffResult);
|
|
88
|
-
const cached = await manager.getDiffResult(hash);
|
|
89
|
-
node_assert_1.default.deepStrictEqual(cached, diffResult);
|
|
90
|
-
node_assert_1.default.strictEqual(manager.getStats().diff.size, 1);
|
|
91
|
-
manager.destroy();
|
|
92
|
-
});
|
|
93
|
-
(0, node_test_1.it)("should provide comprehensive statistics", async () => {
|
|
94
|
-
const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
|
|
95
|
-
const doc = createTestDoc("test");
|
|
96
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
97
|
-
await manager.setValidationResult(hash, { valid: true, errors: [] });
|
|
98
|
-
await manager.setNormalizationResult(hash, { normalized: true });
|
|
99
|
-
await manager.setDiffResult(hash, { changes: [] });
|
|
100
|
-
const stats = manager.getStats();
|
|
101
|
-
node_assert_1.default.strictEqual(stats.total.size, 3);
|
|
102
|
-
node_assert_1.default.strictEqual(stats.validation.size, 1);
|
|
103
|
-
node_assert_1.default.strictEqual(stats.normalization.size, 1);
|
|
104
|
-
node_assert_1.default.strictEqual(stats.diff.size, 1);
|
|
105
|
-
manager.destroy();
|
|
106
|
-
});
|
|
107
|
-
(0, node_test_1.it)("should clear all caches", async () => {
|
|
108
|
-
const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
|
|
109
|
-
const doc = createTestDoc("test");
|
|
110
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
111
|
-
await manager.setValidationResult(hash, { valid: true, errors: [] });
|
|
112
|
-
await manager.setNormalizationResult(hash, { normalized: true });
|
|
113
|
-
await manager.setDiffResult(hash, { changes: [] });
|
|
114
|
-
manager.clearAll();
|
|
115
|
-
const stats = manager.getStats();
|
|
116
|
-
node_assert_1.default.strictEqual(stats.total.size, 0);
|
|
117
|
-
manager.destroy();
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
(0, node_test_1.describe)("CacheFactory", () => {
|
|
121
|
-
(0, node_test_1.it)("should create isolated instances", () => {
|
|
122
|
-
const manager1 = (0, cache_factory_1.createCacheManager)();
|
|
123
|
-
const manager2 = (0, cache_factory_1.createCacheManager)();
|
|
124
|
-
node_assert_1.default.notStrictEqual(manager1, manager2);
|
|
125
|
-
manager1.destroy();
|
|
126
|
-
manager2.destroy();
|
|
127
|
-
});
|
|
128
|
-
(0, node_test_1.it)("should create named managers with cleanup", () => {
|
|
129
|
-
const manager1 = (0, cache_factory_1.createNamedCacheManager)("test");
|
|
130
|
-
const manager2 = (0, cache_factory_1.createNamedCacheManager)("test"); // replaces first
|
|
131
|
-
node_assert_1.default.notStrictEqual(manager1, manager2);
|
|
132
|
-
manager1.destroy();
|
|
133
|
-
manager2.destroy();
|
|
134
|
-
});
|
|
135
|
-
(0, node_test_1.it)("should provide statistics for multiple managers", () => {
|
|
136
|
-
const manager1 = (0, cache_factory_1.createNamedCacheManager)("stats1", { enableStats: true });
|
|
137
|
-
const manager2 = (0, cache_factory_1.createNamedCacheManager)("stats2", { enableStats: true });
|
|
138
|
-
const stats = (0, cache_factory_1.getManagersStats)([manager1, manager2]);
|
|
139
|
-
node_assert_1.default.ok(stats.stats1);
|
|
140
|
-
node_assert_1.default.ok(stats.stats2);
|
|
141
|
-
node_assert_1.default.strictEqual(Object.keys(stats).length, 2);
|
|
142
|
-
manager1.destroy();
|
|
143
|
-
manager2.destroy();
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
(0, node_test_1.describe)("HashUtils", () => {
|
|
147
|
-
(0, node_test_1.it)("should generate consistent hashes", async () => {
|
|
148
|
-
const doc = createTestDoc("test");
|
|
149
|
-
const hash1 = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
150
|
-
const hash2 = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
151
|
-
node_assert_1.default.strictEqual(hash1, hash2);
|
|
152
|
-
node_assert_1.default.strictEqual(hash1.length, 20);
|
|
153
|
-
});
|
|
154
|
-
(0, node_test_1.it)("should generate different hashes for different documents", async () => {
|
|
155
|
-
const doc1 = createTestDoc("test1");
|
|
156
|
-
const doc2 = createTestDoc("test2");
|
|
157
|
-
const hash1 = await (0, hash_utils_1.generateDocumentHash)(doc1);
|
|
158
|
-
const hash2 = await (0, hash_utils_1.generateDocumentHash)(doc2);
|
|
159
|
-
node_assert_1.default.notStrictEqual(hash1, hash2);
|
|
160
|
-
});
|
|
161
|
-
(0, node_test_1.it)("should handle deep copies consistently", async () => {
|
|
162
|
-
const doc = createTestDoc("test");
|
|
163
|
-
const copy = JSON.parse(JSON.stringify(doc));
|
|
164
|
-
const hash1 = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
165
|
-
const hash2 = await (0, hash_utils_1.generateDocumentHash)(copy);
|
|
166
|
-
node_assert_1.default.strictEqual(hash1, hash2);
|
|
167
|
-
});
|
|
168
|
-
(0, node_test_1.it)("should generate diff hashes", async () => {
|
|
169
|
-
const doc1 = createTestDoc("test1");
|
|
170
|
-
const doc2 = createTestDoc("test2");
|
|
171
|
-
const hash = await (0, hash_utils_1.generateDiffHash)(doc1, doc2);
|
|
172
|
-
node_assert_1.default.strictEqual(typeof hash, "string");
|
|
173
|
-
node_assert_1.default.strictEqual(hash.length, 22);
|
|
174
|
-
});
|
|
175
|
-
(0, node_test_1.it)("should generate different diff hashes for different pairs", async () => {
|
|
176
|
-
const doc1 = createTestDoc("test1");
|
|
177
|
-
const doc2 = createTestDoc("test2");
|
|
178
|
-
const doc3 = createTestDoc("test3");
|
|
179
|
-
const hash1 = await (0, hash_utils_1.generateDiffHash)(doc1, doc2);
|
|
180
|
-
const hash2 = await (0, hash_utils_1.generateDiffHash)(doc2, doc3);
|
|
181
|
-
node_assert_1.default.notStrictEqual(hash1, hash2);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
(0, node_test_1.describe)("Integration", () => {
|
|
185
|
-
(0, node_test_1.it)("should handle complete workflow", async () => {
|
|
186
|
-
const manager = (0, cache_factory_1.createCacheManager)({ enableStats: true });
|
|
187
|
-
const validDoc = createTestDoc("valid");
|
|
188
|
-
const invalidDoc = { unispecVersion: "1.0.0" };
|
|
189
|
-
// Process valid document
|
|
190
|
-
const validHash = await (0, hash_utils_1.generateDocumentHash)(validDoc);
|
|
191
|
-
await manager.setValidationResult(validHash, { valid: true, errors: [] });
|
|
192
|
-
await manager.setNormalizationResult(validHash, {
|
|
193
|
-
...validDoc,
|
|
194
|
-
normalized: true,
|
|
195
|
-
});
|
|
196
|
-
// Process invalid document
|
|
197
|
-
const invalidHash = await (0, hash_utils_1.generateDocumentHash)(invalidDoc);
|
|
198
|
-
await manager.setValidationResult(invalidHash, {
|
|
199
|
-
valid: false,
|
|
200
|
-
errors: [{ path: "/", message: "Invalid", code: "INVALID" }],
|
|
201
|
-
});
|
|
202
|
-
// Process diff
|
|
203
|
-
const diffHash = await (0, hash_utils_1.generateDiffHash)(validDoc, invalidDoc);
|
|
204
|
-
await manager.setDiffResult(diffHash, { changes: [] });
|
|
205
|
-
// Verify results
|
|
206
|
-
const validResult = await manager.getValidationResult(validHash);
|
|
207
|
-
const invalidResult = await manager.getValidationResult(invalidHash);
|
|
208
|
-
const normResult = await manager.getNormalizationResult(validHash);
|
|
209
|
-
const diffResult = await manager.getDiffResult(diffHash);
|
|
210
|
-
node_assert_1.default.strictEqual(validResult?.valid, true);
|
|
211
|
-
node_assert_1.default.strictEqual(invalidResult?.valid, false);
|
|
212
|
-
node_assert_1.default.notStrictEqual(normResult, undefined);
|
|
213
|
-
node_assert_1.default.notStrictEqual(diffResult, undefined);
|
|
214
|
-
// Verify statistics
|
|
215
|
-
const stats = manager.getStats();
|
|
216
|
-
node_assert_1.default.strictEqual(stats.total.size, 4);
|
|
217
|
-
manager.destroy();
|
|
218
|
-
});
|
|
219
|
-
(0, node_test_1.it)("should handle concurrent operations", async () => {
|
|
220
|
-
const manager = (0, cache_factory_1.createCacheManager)({ enableStats: true });
|
|
221
|
-
const promises = [];
|
|
222
|
-
// Create concurrent operations
|
|
223
|
-
for (let i = 0; i < 10; i++) {
|
|
224
|
-
const doc = createTestDoc(`test${i}`);
|
|
225
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
226
|
-
promises.push(manager.setValidationResult(hash, { valid: true, errors: [] }));
|
|
227
|
-
promises.push(manager
|
|
228
|
-
.getValidationResult(hash)
|
|
229
|
-
.then(() => { })
|
|
230
|
-
.catch(() => { }));
|
|
231
|
-
}
|
|
232
|
-
await Promise.all(promises);
|
|
233
|
-
// Verify integrity
|
|
234
|
-
const stats = manager.getStats();
|
|
235
|
-
node_assert_1.default.ok(stats.validation.size >= 0);
|
|
236
|
-
manager.destroy();
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
(0, node_test_1.describe)("Error handling", () => {
|
|
240
|
-
(0, node_test_1.it)("should handle malformed documents", async () => {
|
|
241
|
-
const manager = (0, cache_factory_1.createCacheManager)();
|
|
242
|
-
const malformedDocs = [
|
|
243
|
-
{ unispecVersion: "1.0.0" },
|
|
244
|
-
{ service: { name: "test" } },
|
|
245
|
-
];
|
|
246
|
-
for (const doc of malformedDocs) {
|
|
247
|
-
try {
|
|
248
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
249
|
-
await manager.setValidationResult(hash, { valid: false, errors: [] });
|
|
250
|
-
const result = await manager.getValidationResult(hash);
|
|
251
|
-
node_assert_1.default.strictEqual(result?.valid, false);
|
|
252
|
-
}
|
|
253
|
-
catch (error) {
|
|
254
|
-
// Expected for some malformed docs
|
|
255
|
-
node_assert_1.default.ok(error instanceof Error);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
manager.destroy();
|
|
259
|
-
});
|
|
260
|
-
(0, node_test_1.it)("should handle cache overflow gracefully", async () => {
|
|
261
|
-
const manager = (0, cache_factory_1.createCacheManager)({ enableStats: true, maxSize: 5 });
|
|
262
|
-
// Fill beyond capacity
|
|
263
|
-
for (let i = 0; i < 10; i++) {
|
|
264
|
-
const doc = createTestDoc(`test${i}`);
|
|
265
|
-
const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
|
|
266
|
-
await manager.setValidationResult(hash, { valid: true, errors: [] });
|
|
267
|
-
}
|
|
268
|
-
const stats = manager.getStats();
|
|
269
|
-
node_assert_1.default.strictEqual(stats.validation.size, 5); // Should respect max size
|
|
270
|
-
node_assert_1.default.ok(stats.validation.evictions >= 0); // May have evictions
|
|
271
|
-
manager.destroy();
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getExamplePath = exports.loadExample = void 0;
|
|
7
|
-
exports.getValidExamplePaths = getValidExamplePaths;
|
|
8
|
-
exports.getInvalidExamplePaths = getInvalidExamplePaths;
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const utils_1 = require("../../tests/utils.js");
|
|
11
|
-
Object.defineProperty(exports, "getExamplePath", { enumerable: true, get: function () { return utils_1.getExamplePath; } });
|
|
12
|
-
Object.defineProperty(exports, "loadExample", { enumerable: true, get: function () { return utils_1.loadExample; } });
|
|
13
|
-
// Cache-specific utilities
|
|
14
|
-
function getValidExamplePaths() {
|
|
15
|
-
const validSpecDir = node_path_1.default.join(utils_1.examplesDir, "valid", "spec");
|
|
16
|
-
return [
|
|
17
|
-
node_path_1.default.join(validSpecDir, "rest-simple.json"),
|
|
18
|
-
node_path_1.default.join(validSpecDir, "graphql-simple.json"),
|
|
19
|
-
node_path_1.default.join(validSpecDir, "websocket-simple.json"),
|
|
20
|
-
node_path_1.default.join(validSpecDir, "mixed-complete.json"),
|
|
21
|
-
];
|
|
22
|
-
}
|
|
23
|
-
function getInvalidExamplePaths() {
|
|
24
|
-
const invalidSpecDir = node_path_1.default.join(utils_1.examplesDir, "invalid", "spec");
|
|
25
|
-
return [
|
|
26
|
-
node_path_1.default.join(invalidSpecDir, "missing-unispec-version.json"),
|
|
27
|
-
node_path_1.default.join(invalidSpecDir, "missing-service-name.json"),
|
|
28
|
-
node_path_1.default.join(invalidSpecDir, "invalid-rest-method.json"),
|
|
29
|
-
node_path_1.default.join(invalidSpecDir, "graphql-missing-name.json"),
|
|
30
|
-
node_path_1.default.join(invalidSpecDir, "invalid-identifier.json"),
|
|
31
|
-
];
|
|
32
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
-
const node_test_1 = require("node:test");
|
|
8
|
-
const utils_1 = require("../../tests/utils.js");
|
|
9
|
-
const annotators_1 = require("../../src/diff/annotators.js");
|
|
10
|
-
(0, node_test_1.describe)("diff annotators", () => {
|
|
11
|
-
(0, node_test_1.describe)("annotateRestChange", () => {
|
|
12
|
-
(0, node_test_1.it)("should annotate REST route additions as non-breaking", () => {
|
|
13
|
-
const change = (0, utils_1.createTestChange)({
|
|
14
|
-
path: "/service/protocols/rest/routes/newRoute",
|
|
15
|
-
description: "Item added",
|
|
16
|
-
});
|
|
17
|
-
const result = (0, annotators_1.annotateRestChange)(change);
|
|
18
|
-
node_assert_1.default.strictEqual(result.protocol, "rest");
|
|
19
|
-
node_assert_1.default.strictEqual(result.kind, "rest.route.added");
|
|
20
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
21
|
-
});
|
|
22
|
-
(0, node_test_1.it)("should annotate REST route removals as breaking", () => {
|
|
23
|
-
const change = (0, utils_1.createTestChange)({
|
|
24
|
-
path: "/service/protocols/rest/routes/removedRoute",
|
|
25
|
-
description: "Item removed",
|
|
26
|
-
});
|
|
27
|
-
const result = (0, annotators_1.annotateRestChange)(change);
|
|
28
|
-
node_assert_1.default.strictEqual(result.protocol, "rest");
|
|
29
|
-
node_assert_1.default.strictEqual(result.kind, "rest.route.removed");
|
|
30
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
31
|
-
});
|
|
32
|
-
(0, node_test_1.it)("should annotate required field changes as breaking", () => {
|
|
33
|
-
const change = (0, utils_1.createTestChange)({
|
|
34
|
-
path: "/service/protocols/rest/routes/myRoute/requestBody/required",
|
|
35
|
-
description: "Value changed",
|
|
36
|
-
});
|
|
37
|
-
const result = (0, annotators_1.annotateRestChange)(change);
|
|
38
|
-
node_assert_1.default.strictEqual(result.protocol, "rest");
|
|
39
|
-
node_assert_1.default.strictEqual(result.kind, "rest.parameter.required_changed");
|
|
40
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
41
|
-
});
|
|
42
|
-
(0, node_test_1.it)("should not annotate non-REST changes", () => {
|
|
43
|
-
const change = (0, utils_1.createTestChange)({
|
|
44
|
-
path: "/service/protocols/graphql/queries/myQuery",
|
|
45
|
-
description: "Item added",
|
|
46
|
-
});
|
|
47
|
-
const result = (0, annotators_1.annotateRestChange)(change);
|
|
48
|
-
node_assert_1.default.strictEqual(result.protocol, undefined);
|
|
49
|
-
node_assert_1.default.strictEqual(result.kind, undefined);
|
|
50
|
-
node_assert_1.default.strictEqual(result.severity, "unknown");
|
|
51
|
-
});
|
|
52
|
-
(0, node_test_1.it)("should handle malformed REST paths gracefully", () => {
|
|
53
|
-
const change = (0, utils_1.createTestChange)({
|
|
54
|
-
path: "/service/protocols/rest", // Missing routes segment
|
|
55
|
-
description: "Item added",
|
|
56
|
-
});
|
|
57
|
-
const result = (0, annotators_1.annotateRestChange)(change);
|
|
58
|
-
node_assert_1.default.strictEqual(result.protocol, undefined);
|
|
59
|
-
node_assert_1.default.strictEqual(result.kind, undefined);
|
|
60
|
-
node_assert_1.default.strictEqual(result.severity, "unknown");
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
(0, node_test_1.describe)("annotateGraphQLChange", () => {
|
|
64
|
-
(0, node_test_1.it)("should annotate GraphQL query additions as non-breaking", () => {
|
|
65
|
-
const change = (0, utils_1.createTestChange)({
|
|
66
|
-
path: "/service/protocols/graphql/queries/newQuery",
|
|
67
|
-
description: "Item added",
|
|
68
|
-
});
|
|
69
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
70
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
71
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.query.added");
|
|
72
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
73
|
-
});
|
|
74
|
-
(0, node_test_1.it)("should annotate GraphQL query removals as breaking", () => {
|
|
75
|
-
const change = (0, utils_1.createTestChange)({
|
|
76
|
-
path: "/service/protocols/graphql/queries/removedQuery",
|
|
77
|
-
description: "Item removed",
|
|
78
|
-
});
|
|
79
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
80
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
81
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.query.removed");
|
|
82
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
83
|
-
});
|
|
84
|
-
(0, node_test_1.it)("should annotate GraphQL mutation additions as non-breaking", () => {
|
|
85
|
-
const change = (0, utils_1.createTestChange)({
|
|
86
|
-
path: "/service/protocols/graphql/mutations/newMutation",
|
|
87
|
-
description: "Item added",
|
|
88
|
-
});
|
|
89
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
90
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
91
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.mutation.added");
|
|
92
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
93
|
-
});
|
|
94
|
-
(0, node_test_1.it)("should annotate GraphQL mutation removals as breaking", () => {
|
|
95
|
-
const change = (0, utils_1.createTestChange)({
|
|
96
|
-
path: "/service/protocols/graphql/mutations/removedMutation",
|
|
97
|
-
description: "Item removed",
|
|
98
|
-
});
|
|
99
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
100
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
101
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.mutation.removed");
|
|
102
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
103
|
-
});
|
|
104
|
-
(0, node_test_1.it)("should annotate GraphQL subscription additions as non-breaking", () => {
|
|
105
|
-
const change = (0, utils_1.createTestChange)({
|
|
106
|
-
path: "/service/protocols/graphql/subscriptions/newSubscription",
|
|
107
|
-
description: "Item added",
|
|
108
|
-
});
|
|
109
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
110
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
111
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.subscription.added");
|
|
112
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
113
|
-
});
|
|
114
|
-
(0, node_test_1.it)("should annotate GraphQL subscription removals as breaking", () => {
|
|
115
|
-
const change = (0, utils_1.createTestChange)({
|
|
116
|
-
path: "/service/protocols/graphql/subscriptions/removedSubscription",
|
|
117
|
-
description: "Item removed",
|
|
118
|
-
});
|
|
119
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
120
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
121
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.subscription.removed");
|
|
122
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
123
|
-
});
|
|
124
|
-
(0, node_test_1.it)("should not annotate non-GraphQL changes", () => {
|
|
125
|
-
const change = (0, utils_1.createTestChange)({
|
|
126
|
-
path: "/service/protocols/rest/routes/myRoute",
|
|
127
|
-
description: "Item added",
|
|
128
|
-
});
|
|
129
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
130
|
-
node_assert_1.default.strictEqual(result.protocol, undefined);
|
|
131
|
-
node_assert_1.default.strictEqual(result.kind, undefined);
|
|
132
|
-
node_assert_1.default.strictEqual(result.severity, "unknown");
|
|
133
|
-
});
|
|
134
|
-
(0, node_test_1.it)("should annotate GraphQL argument additions as non-breaking", () => {
|
|
135
|
-
const change = (0, utils_1.createTestChange)({
|
|
136
|
-
path: "/service/protocols/graphql/queries/myQuery/args/newArg",
|
|
137
|
-
description: "Item added",
|
|
138
|
-
});
|
|
139
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
140
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
141
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.query.argument_added");
|
|
142
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
143
|
-
});
|
|
144
|
-
(0, node_test_1.it)("should annotate GraphQL argument removals as breaking", () => {
|
|
145
|
-
const change = (0, utils_1.createTestChange)({
|
|
146
|
-
path: "/service/protocols/graphql/mutations/myMutation/args/oldArg",
|
|
147
|
-
description: "Item removed",
|
|
148
|
-
});
|
|
149
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
150
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
151
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.mutation.argument_removed");
|
|
152
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
153
|
-
});
|
|
154
|
-
(0, node_test_1.it)("should annotate GraphQL return type changes as breaking", () => {
|
|
155
|
-
const change = (0, utils_1.createTestChange)({
|
|
156
|
-
path: "/service/protocols/graphql/subscriptions/mySubscription/returnType",
|
|
157
|
-
description: "Value changed",
|
|
158
|
-
});
|
|
159
|
-
const result = (0, annotators_1.annotateGraphQLChange)(change);
|
|
160
|
-
node_assert_1.default.strictEqual(result.protocol, "graphql");
|
|
161
|
-
node_assert_1.default.strictEqual(result.kind, "graphql.subscription.return_type_changed");
|
|
162
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
(0, node_test_1.describe)("annotateWebSocketChange", () => {
|
|
166
|
-
(0, node_test_1.it)("should annotate WebSocket channel additions as non-breaking", () => {
|
|
167
|
-
const change = (0, utils_1.createTestChange)({
|
|
168
|
-
path: "/service/protocols/websocket/channels/newChannel",
|
|
169
|
-
description: "Item added",
|
|
170
|
-
});
|
|
171
|
-
const result = (0, annotators_1.annotateWebSocketChange)(change);
|
|
172
|
-
node_assert_1.default.strictEqual(result.protocol, "websocket");
|
|
173
|
-
node_assert_1.default.strictEqual(result.kind, "websocket.channel.added");
|
|
174
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
175
|
-
});
|
|
176
|
-
(0, node_test_1.it)("should annotate WebSocket channel removals as breaking", () => {
|
|
177
|
-
const change = (0, utils_1.createTestChange)({
|
|
178
|
-
path: "/service/protocols/websocket/channels/removedChannel",
|
|
179
|
-
description: "Item removed",
|
|
180
|
-
});
|
|
181
|
-
const result = (0, annotators_1.annotateWebSocketChange)(change);
|
|
182
|
-
node_assert_1.default.strictEqual(result.protocol, "websocket");
|
|
183
|
-
node_assert_1.default.strictEqual(result.kind, "websocket.channel.removed");
|
|
184
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
185
|
-
});
|
|
186
|
-
(0, node_test_1.it)("should annotate WebSocket message additions as non-breaking", () => {
|
|
187
|
-
const change = (0, utils_1.createTestChange)({
|
|
188
|
-
path: "/service/protocols/websocket/channels/myChannel/messages/newMessage",
|
|
189
|
-
description: "Item added",
|
|
190
|
-
});
|
|
191
|
-
const result = (0, annotators_1.annotateWebSocketChange)(change);
|
|
192
|
-
node_assert_1.default.strictEqual(result.protocol, "websocket");
|
|
193
|
-
node_assert_1.default.strictEqual(result.kind, "websocket.message.added");
|
|
194
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
195
|
-
});
|
|
196
|
-
(0, node_test_1.it)("should annotate WebSocket message removals as breaking", () => {
|
|
197
|
-
const change = (0, utils_1.createTestChange)({
|
|
198
|
-
path: "/service/protocols/websocket/channels/myChannel/messages/removedMessage",
|
|
199
|
-
description: "Item removed",
|
|
200
|
-
});
|
|
201
|
-
const result = (0, annotators_1.annotateWebSocketChange)(change);
|
|
202
|
-
node_assert_1.default.strictEqual(result.protocol, "websocket");
|
|
203
|
-
node_assert_1.default.strictEqual(result.kind, "websocket.message.removed");
|
|
204
|
-
node_assert_1.default.strictEqual(result.severity, "breaking");
|
|
205
|
-
});
|
|
206
|
-
(0, node_test_1.it)("should not annotate non-WebSocket changes", () => {
|
|
207
|
-
const change = (0, utils_1.createTestChange)({
|
|
208
|
-
path: "/service/protocols/rest/routes/myRoute",
|
|
209
|
-
description: "Item added",
|
|
210
|
-
});
|
|
211
|
-
const result = (0, annotators_1.annotateWebSocketChange)(change);
|
|
212
|
-
node_assert_1.default.strictEqual(result.protocol, undefined);
|
|
213
|
-
node_assert_1.default.strictEqual(result.kind, undefined);
|
|
214
|
-
node_assert_1.default.strictEqual(result.severity, "unknown");
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
(0, node_test_1.describe)("annotation chaining", () => {
|
|
218
|
-
(0, node_test_1.it)("should handle multiple annotations correctly", () => {
|
|
219
|
-
// This simulates what happens in diffUniSpec where changes are chained through all annotators
|
|
220
|
-
const restChange = (0, utils_1.createTestChange)({
|
|
221
|
-
path: "/service/protocols/rest/routes/myRoute",
|
|
222
|
-
description: "Item added",
|
|
223
|
-
});
|
|
224
|
-
const result = (0, annotators_1.annotateWebSocketChange)((0, annotators_1.annotateGraphQLChange)((0, annotators_1.annotateRestChange)(restChange)));
|
|
225
|
-
// Should only have REST annotations since it's a REST path
|
|
226
|
-
node_assert_1.default.strictEqual(result.protocol, "rest");
|
|
227
|
-
node_assert_1.default.strictEqual(result.kind, "rest.route.added");
|
|
228
|
-
node_assert_1.default.strictEqual(result.severity, "non-breaking");
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
(0, node_test_1.describe)("edge cases", () => {
|
|
232
|
-
(0, node_test_1.it)("should handle empty paths", () => {
|
|
233
|
-
const change = (0, utils_1.createTestChange)({
|
|
234
|
-
path: "",
|
|
235
|
-
description: "Item added",
|
|
236
|
-
});
|
|
237
|
-
const restResult = (0, annotators_1.annotateRestChange)(change);
|
|
238
|
-
const graphqlResult = (0, annotators_1.annotateGraphQLChange)(change);
|
|
239
|
-
const wsResult = (0, annotators_1.annotateWebSocketChange)(change);
|
|
240
|
-
// None should annotate empty path
|
|
241
|
-
node_assert_1.default.strictEqual(restResult.protocol, undefined);
|
|
242
|
-
node_assert_1.default.strictEqual(graphqlResult.protocol, undefined);
|
|
243
|
-
node_assert_1.default.strictEqual(wsResult.protocol, undefined);
|
|
244
|
-
});
|
|
245
|
-
(0, node_test_1.it)("should handle undefined paths gracefully", () => {
|
|
246
|
-
const changeWithUndefined = (0, utils_1.createTestChange)({
|
|
247
|
-
path: undefined,
|
|
248
|
-
description: "Item added",
|
|
249
|
-
});
|
|
250
|
-
const restResultUndef = (0, annotators_1.annotateRestChange)(changeWithUndefined);
|
|
251
|
-
const graphqlResultUndef = (0, annotators_1.annotateGraphQLChange)(changeWithUndefined);
|
|
252
|
-
const wsResultUndef = (0, annotators_1.annotateWebSocketChange)(changeWithUndefined);
|
|
253
|
-
node_assert_1.default.strictEqual(restResultUndef.protocol, undefined);
|
|
254
|
-
node_assert_1.default.strictEqual(graphqlResultUndef.protocol, undefined);
|
|
255
|
-
node_assert_1.default.strictEqual(wsResultUndef.protocol, undefined);
|
|
256
|
-
});
|
|
257
|
-
(0, node_test_1.it)("should handle malformed paths gracefully", () => {
|
|
258
|
-
const malformedPaths = [
|
|
259
|
-
"/service/protocols", // Incomplete
|
|
260
|
-
"/service/protocols/rest/routes", // Missing route name
|
|
261
|
-
"/service/protocols/graphql", // Missing operation type
|
|
262
|
-
"invalid/path/format",
|
|
263
|
-
"service/protocols/rest/routes/route", // Missing leading slash
|
|
264
|
-
];
|
|
265
|
-
for (const path of malformedPaths) {
|
|
266
|
-
const change = (0, utils_1.createTestChange)({
|
|
267
|
-
path,
|
|
268
|
-
description: "Item added",
|
|
269
|
-
});
|
|
270
|
-
const restResult = (0, annotators_1.annotateRestChange)(change);
|
|
271
|
-
const graphqlResult = (0, annotators_1.annotateGraphQLChange)(change);
|
|
272
|
-
const wsResult = (0, annotators_1.annotateWebSocketChange)(change);
|
|
273
|
-
// Should not crash and should not annotate malformed paths
|
|
274
|
-
node_assert_1.default.strictEqual(restResult.protocol, undefined);
|
|
275
|
-
node_assert_1.default.strictEqual(graphqlResult.protocol, undefined);
|
|
276
|
-
node_assert_1.default.strictEqual(wsResult.protocol, undefined);
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
});
|