@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,193 +0,0 @@
|
|
|
1
|
-
import { CACHE_CONSTANTS } from "../cache/constants.js";
|
|
2
|
-
/**
|
|
3
|
-
* Secure document hashing utilities using Web Crypto API.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Secure hash using Web Crypto API (SHA-256) or Node.js crypto.
|
|
7
|
-
* Fallback to FNV-1a only if both crypto APIs are unavailable.
|
|
8
|
-
*/
|
|
9
|
-
async function secureHash(str) {
|
|
10
|
-
// Try Web Crypto API first (browser environments)
|
|
11
|
-
if (typeof crypto !== "undefined" && crypto.subtle) {
|
|
12
|
-
try {
|
|
13
|
-
const encoder = new TextEncoder();
|
|
14
|
-
const data = encoder.encode(str);
|
|
15
|
-
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
16
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
17
|
-
return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
console.warn("Web Crypto API failed, trying Node.js crypto:", error);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
// Try Node.js crypto API (server environments)
|
|
24
|
-
try {
|
|
25
|
-
// Dynamic import for Node.js crypto to avoid browser compatibility issues
|
|
26
|
-
const crypto = await import("node:crypto");
|
|
27
|
-
const hash = crypto.createHash("sha256");
|
|
28
|
-
hash.update(str, "utf8");
|
|
29
|
-
return hash.digest("hex");
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
console.warn("Node.js crypto API failed, falling back to FNV-1a:", error);
|
|
33
|
-
}
|
|
34
|
-
// Last resort: FNV-1a algorithm (non-cryptographic, for compatibility only)
|
|
35
|
-
console.warn("Using FNV-1a fallback hash - consider installing crypto support");
|
|
36
|
-
return fnv1aHashFallback(str).toString();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* FNV-1a fallback hash function (non-cryptographic, for compatibility).
|
|
40
|
-
*/
|
|
41
|
-
function fnv1aHashFallback(str) {
|
|
42
|
-
let hash = 2166136261; // FNV offset basis
|
|
43
|
-
for (let i = 0; i < str.length; i++) {
|
|
44
|
-
hash ^= str.charCodeAt(i);
|
|
45
|
-
hash = (hash * 16777619) & CACHE_CONSTANTS.HASH_MASK; // FNV prime
|
|
46
|
-
}
|
|
47
|
-
return hash;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Generate a secure hash for a document using optimized sorting and Web Crypto API.
|
|
51
|
-
*/
|
|
52
|
-
export async function generateOptimizedDocumentHash(document) {
|
|
53
|
-
// Use optimized stable stringification
|
|
54
|
-
const str = stableStringify(document);
|
|
55
|
-
// Use secure hash for better distribution and collision resistance
|
|
56
|
-
const hash = await secureHash(str);
|
|
57
|
-
// Add length and type prefix for additional collision resistance
|
|
58
|
-
const typePrefix = getDocumentTypePrefix(document);
|
|
59
|
-
const combined = `${hash}_${str.length}_${typePrefix}`;
|
|
60
|
-
// Create final hash with combined string
|
|
61
|
-
const finalHash = await secureHash(combined);
|
|
62
|
-
return `${finalHash.slice(0, 16)}_${str.length}`;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Default configuration for stable stringification.
|
|
66
|
-
*/
|
|
67
|
-
const DEFAULT_STRINGIFY_CONFIG = {
|
|
68
|
-
maxDepth: 100,
|
|
69
|
-
maxKeys: 10000,
|
|
70
|
-
handleCircular: true,
|
|
71
|
-
handleDeepObjects: true,
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Optimized stable stringification that avoids recursion depth issues.
|
|
75
|
-
*/
|
|
76
|
-
function stableStringify(obj, config = {}, depth = 0, visited = new WeakSet()) {
|
|
77
|
-
const finalConfig = { ...DEFAULT_STRINGIFY_CONFIG, ...config };
|
|
78
|
-
// Prevent infinite recursion
|
|
79
|
-
if (depth > finalConfig.maxDepth) {
|
|
80
|
-
return `"[MAX_DEPTH_REACHED:${depth}]"`;
|
|
81
|
-
}
|
|
82
|
-
// Handle circular references
|
|
83
|
-
if (finalConfig.handleCircular && obj && typeof obj === "object") {
|
|
84
|
-
if (visited.has(obj)) {
|
|
85
|
-
return `"[CIRCULAR_REFERENCE:${obj.constructor?.name || "Object"}]"`;
|
|
86
|
-
}
|
|
87
|
-
visited.add(obj);
|
|
88
|
-
}
|
|
89
|
-
// Handle primitives
|
|
90
|
-
if (obj === null || typeof obj !== "object") {
|
|
91
|
-
return JSON.stringify(obj);
|
|
92
|
-
}
|
|
93
|
-
// Handle special object types
|
|
94
|
-
if (obj instanceof Date) {
|
|
95
|
-
return obj.toISOString();
|
|
96
|
-
}
|
|
97
|
-
if (obj instanceof RegExp) {
|
|
98
|
-
return `"[REGEX:${obj.toString()}]"`;
|
|
99
|
-
}
|
|
100
|
-
if (obj instanceof Error) {
|
|
101
|
-
return `"[ERROR:${obj.name}:${obj.message}]"`;
|
|
102
|
-
}
|
|
103
|
-
if (typeof Buffer !== "undefined" && Buffer.isBuffer(obj)) {
|
|
104
|
-
return `"[BUFFER:${obj.toString("base64")}]"`;
|
|
105
|
-
}
|
|
106
|
-
// Handle Array
|
|
107
|
-
if (Array.isArray(obj)) {
|
|
108
|
-
if (obj.length > finalConfig.maxKeys) {
|
|
109
|
-
return `"[ARRAY_TOO_LARGE:${obj.length}]"`;
|
|
110
|
-
}
|
|
111
|
-
const elements = obj.map((item, index) => {
|
|
112
|
-
try {
|
|
113
|
-
return stableStringify(item, finalConfig, depth + 1, visited);
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
return `"[ERROR_AT_INDEX_${index}:${error instanceof Error ? error.message : String(error)}]"`;
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
return `[${elements.join(",")}]`;
|
|
120
|
-
}
|
|
121
|
-
// Handle Object
|
|
122
|
-
if (typeof obj === "object") {
|
|
123
|
-
const objRecord = obj;
|
|
124
|
-
const keys = Object.keys(objRecord);
|
|
125
|
-
if (keys.length > finalConfig.maxKeys) {
|
|
126
|
-
return `"[OBJECT_TOO_LARGE:${keys.length}]"`;
|
|
127
|
-
}
|
|
128
|
-
const sortedKeys = keys.sort();
|
|
129
|
-
const pairs = [];
|
|
130
|
-
for (const key of sortedKeys) {
|
|
131
|
-
try {
|
|
132
|
-
const value = stableStringify(objRecord[key], finalConfig, depth + 1, visited);
|
|
133
|
-
pairs.push(`"${key}":${value}`);
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
pairs.push(`"${key}":"[ERROR:${error instanceof Error ? error.message : String(error)}]"`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return `{${pairs.join(",")}}`;
|
|
140
|
-
}
|
|
141
|
-
return "{}";
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get a numeric prefix based on document type to reduce collisions.
|
|
145
|
-
*/
|
|
146
|
-
function getDocumentTypePrefix(document) {
|
|
147
|
-
if (!document || typeof document !== "object")
|
|
148
|
-
return 0;
|
|
149
|
-
const doc = document;
|
|
150
|
-
// Check for UniSpec document
|
|
151
|
-
if (doc.unispecVersion)
|
|
152
|
-
return 1;
|
|
153
|
-
if (doc.uniSpecTestsVersion)
|
|
154
|
-
return 2;
|
|
155
|
-
if (doc.version && doc.services)
|
|
156
|
-
return 3;
|
|
157
|
-
// Check for common patterns
|
|
158
|
-
if (Array.isArray(document))
|
|
159
|
-
return 4;
|
|
160
|
-
if (doc.$schema)
|
|
161
|
-
return 5;
|
|
162
|
-
if (doc.type)
|
|
163
|
-
return typeof doc.type === "string" ? doc.type.charCodeAt(0) || 6 : 6;
|
|
164
|
-
return 7;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Generate a secure hash for two documents (for diff caching) with optimized collision resistance.
|
|
168
|
-
*/
|
|
169
|
-
export async function generateOptimizedDiffHash(oldDoc, newDoc) {
|
|
170
|
-
const oldHash = await generateOptimizedDocumentHash(oldDoc);
|
|
171
|
-
const newHash = await generateOptimizedDocumentHash(newDoc);
|
|
172
|
-
// Combine hashes using order-sensitive operation
|
|
173
|
-
const combined = `${oldHash}:${newHash}`;
|
|
174
|
-
// Hash the combined string to get final result
|
|
175
|
-
const finalHash = await secureHash(combined);
|
|
176
|
-
return `${finalHash.slice(0, 16)}_${oldHash.length}_${newHash.length}`;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Simple hash for small objects (keys, strings) using built-in hash.
|
|
180
|
-
* Kept for backward compatibility but consider using secureHash for new code.
|
|
181
|
-
*/
|
|
182
|
-
export function simpleHash(str) {
|
|
183
|
-
let hash = 5381; // DJB2 hash initial value
|
|
184
|
-
for (let i = 0; i < str.length; i++) {
|
|
185
|
-
const char = str.charCodeAt(i);
|
|
186
|
-
hash = ((hash << 5) + hash + char) & CACHE_CONSTANTS.HASH_MASK;
|
|
187
|
-
}
|
|
188
|
-
// Convert to hex and pad to 8 characters
|
|
189
|
-
const hex = hash.toString(16);
|
|
190
|
-
return hex.padStart(8, "0").slice(-8);
|
|
191
|
-
}
|
|
192
|
-
// Export stableStringify for use in hash-utils
|
|
193
|
-
export { stableStringify };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { clearTestRegistry, createCacheManager, createNamedCacheManager, destroyManagers, getManagersStats, } from "./cache-factory.js";
|
|
2
|
-
export { UniSpecCacheManager } from "./cache-manager.js";
|
|
3
|
-
export { CACHE_CONSTANTS, CACHE_MESSAGES } from "./constants.js";
|
|
4
|
-
export { generateDiffHash, generateDocumentHash, } from "./hash-utils.js";
|
|
5
|
-
export { LRUCache } from "./lru-cache.js";
|
|
6
|
-
export type { CacheEntry, CacheOptions, CacheSize, CacheStats, TTL, } from "./types.js";
|
package/dist/src/cache/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Constants and messages
|
|
2
|
-
// Cache factory
|
|
3
|
-
export { clearTestRegistry, createCacheManager, createNamedCacheManager, destroyManagers, getManagersStats, } from "./cache-factory.js";
|
|
4
|
-
// Cache manager
|
|
5
|
-
export { UniSpecCacheManager } from "./cache-manager.js";
|
|
6
|
-
export { CACHE_CONSTANTS, CACHE_MESSAGES } from "./constants.js";
|
|
7
|
-
// Hash utilities
|
|
8
|
-
export { generateDiffHash, generateDocumentHash, } from "./hash-utils.js";
|
|
9
|
-
// Core cache implementation
|
|
10
|
-
export { LRUCache } from "./lru-cache.js";
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { CacheOptions, CacheStats } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Simple LRU (Least Recently Used) cache implementation.
|
|
4
|
-
*/
|
|
5
|
-
export declare class LRUCache<T> {
|
|
6
|
-
private cache;
|
|
7
|
-
private maxSize;
|
|
8
|
-
private ttl;
|
|
9
|
-
private enableStats;
|
|
10
|
-
private stats;
|
|
11
|
-
constructor(options?: CacheOptions);
|
|
12
|
-
/**
|
|
13
|
-
* Get a value from the cache asynchronously.
|
|
14
|
-
*/
|
|
15
|
-
get(key: string): Promise<T | undefined>;
|
|
16
|
-
/**
|
|
17
|
-
* Set a value in the cache asynchronously.
|
|
18
|
-
*/
|
|
19
|
-
set(key: string, value: T): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Delete a value from the cache.
|
|
22
|
-
*/
|
|
23
|
-
delete(key: string): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Clear all entries from the cache.
|
|
26
|
-
*/
|
|
27
|
-
clear(): void;
|
|
28
|
-
/**
|
|
29
|
-
* Get cache statistics.
|
|
30
|
-
*/
|
|
31
|
-
getStats(): CacheStats;
|
|
32
|
-
/**
|
|
33
|
-
* Check if an entry is expired.
|
|
34
|
-
*/
|
|
35
|
-
private isExpired;
|
|
36
|
-
/**
|
|
37
|
-
* Update hit rate statistics.
|
|
38
|
-
*/
|
|
39
|
-
private updateHitRate;
|
|
40
|
-
/**
|
|
41
|
-
* Clean up expired entries.
|
|
42
|
-
*/
|
|
43
|
-
cleanup(): number;
|
|
44
|
-
}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { CACHE_CONSTANTS } from "./constants.js";
|
|
2
|
-
/**
|
|
3
|
-
* Simple LRU (Least Recently Used) cache implementation.
|
|
4
|
-
*/
|
|
5
|
-
export class LRUCache {
|
|
6
|
-
constructor(options = {}) {
|
|
7
|
-
this.cache = new Map();
|
|
8
|
-
this.maxSize = options.maxSize || CACHE_CONSTANTS.DEFAULT_MAX_SIZE;
|
|
9
|
-
this.ttl = options.ttl || CACHE_CONSTANTS.DEFAULT_TTL;
|
|
10
|
-
this.enableStats = options.enableStats || false;
|
|
11
|
-
this.stats = {
|
|
12
|
-
hits: 0,
|
|
13
|
-
misses: 0,
|
|
14
|
-
size: 0,
|
|
15
|
-
hitRate: 0,
|
|
16
|
-
evictions: 0,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get a value from the cache asynchronously.
|
|
21
|
-
*/
|
|
22
|
-
async get(key) {
|
|
23
|
-
const entry = this.cache.get(key);
|
|
24
|
-
if (!entry) {
|
|
25
|
-
if (this.enableStats) {
|
|
26
|
-
this.stats.misses++;
|
|
27
|
-
this.updateHitRate();
|
|
28
|
-
}
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
// Check TTL
|
|
32
|
-
if (this.isExpired(entry)) {
|
|
33
|
-
this.cache.delete(key);
|
|
34
|
-
if (this.enableStats) {
|
|
35
|
-
this.stats.misses++;
|
|
36
|
-
this.stats.size--;
|
|
37
|
-
this.updateHitRate();
|
|
38
|
-
}
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
// Update access info
|
|
42
|
-
entry.accessCount++;
|
|
43
|
-
entry.lastAccessed = Date.now();
|
|
44
|
-
// Move to end (most recently used)
|
|
45
|
-
this.cache.delete(key);
|
|
46
|
-
this.cache.set(key, entry);
|
|
47
|
-
if (this.enableStats) {
|
|
48
|
-
this.stats.hits++;
|
|
49
|
-
this.updateHitRate();
|
|
50
|
-
}
|
|
51
|
-
return entry.value;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Set a value in the cache asynchronously.
|
|
55
|
-
*/
|
|
56
|
-
async set(key, value) {
|
|
57
|
-
// Remove existing entry if present
|
|
58
|
-
if (this.cache.has(key)) {
|
|
59
|
-
this.cache.delete(key);
|
|
60
|
-
}
|
|
61
|
-
// Evict oldest entries if cache is full
|
|
62
|
-
while (this.cache.size >= this.maxSize) {
|
|
63
|
-
const oldestKey = this.cache.keys().next().value;
|
|
64
|
-
if (oldestKey) {
|
|
65
|
-
this.cache.delete(oldestKey);
|
|
66
|
-
if (this.enableStats) {
|
|
67
|
-
this.stats.evictions++;
|
|
68
|
-
this.stats.size--;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const entry = {
|
|
76
|
-
value,
|
|
77
|
-
timestamp: Date.now(),
|
|
78
|
-
accessCount: 1,
|
|
79
|
-
lastAccessed: Date.now(),
|
|
80
|
-
};
|
|
81
|
-
this.cache.set(key, entry);
|
|
82
|
-
if (this.enableStats) {
|
|
83
|
-
this.stats.size++;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Delete a value from the cache.
|
|
88
|
-
*/
|
|
89
|
-
delete(key) {
|
|
90
|
-
const deleted = this.cache.delete(key);
|
|
91
|
-
if (deleted && this.enableStats) {
|
|
92
|
-
this.stats.size--;
|
|
93
|
-
}
|
|
94
|
-
return deleted;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Clear all entries from the cache.
|
|
98
|
-
*/
|
|
99
|
-
clear() {
|
|
100
|
-
this.cache.clear();
|
|
101
|
-
if (this.enableStats) {
|
|
102
|
-
this.stats.size = 0;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Get cache statistics.
|
|
107
|
-
*/
|
|
108
|
-
getStats() {
|
|
109
|
-
return { ...this.stats };
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Check if an entry is expired.
|
|
113
|
-
*/
|
|
114
|
-
isExpired(entry) {
|
|
115
|
-
return Date.now() - entry.timestamp > this.ttl;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Update hit rate statistics.
|
|
119
|
-
*/
|
|
120
|
-
updateHitRate() {
|
|
121
|
-
const total = this.stats.hits + this.stats.misses;
|
|
122
|
-
this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Clean up expired entries.
|
|
126
|
-
*/
|
|
127
|
-
cleanup() {
|
|
128
|
-
let cleaned = 0;
|
|
129
|
-
for (const [key, entry] of this.cache.entries()) {
|
|
130
|
-
if (this.isExpired(entry)) {
|
|
131
|
-
this.cache.delete(key);
|
|
132
|
-
cleaned++;
|
|
133
|
-
if (this.enableStats) {
|
|
134
|
-
this.stats.size--;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return cleaned;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cache interfaces and types.
|
|
3
|
-
*/
|
|
4
|
-
export interface CacheOptions {
|
|
5
|
-
maxSize?: number;
|
|
6
|
-
ttl?: number;
|
|
7
|
-
enableStats?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface CacheEntry<T> {
|
|
10
|
-
value: T;
|
|
11
|
-
timestamp: number;
|
|
12
|
-
accessCount: number;
|
|
13
|
-
lastAccessed: number;
|
|
14
|
-
}
|
|
15
|
-
export interface CacheStats {
|
|
16
|
-
hits: number;
|
|
17
|
-
misses: number;
|
|
18
|
-
size: number;
|
|
19
|
-
hitRate: number;
|
|
20
|
-
evictions: number;
|
|
21
|
-
}
|
|
22
|
-
export type CacheSize = typeof CACHE_CONSTANTS.DEFAULT_MAX_SIZE | typeof CACHE_CONSTANTS.VALIDATION_MAX_SIZE | typeof CACHE_CONSTANTS.NORMALIZATION_MAX_SIZE | typeof CACHE_CONSTANTS.DIFF_MAX_SIZE;
|
|
23
|
-
export type TTL = typeof CACHE_CONSTANTS.DEFAULT_TTL | typeof CACHE_CONSTANTS.CLEANUP_INTERVAL;
|
|
24
|
-
import type { CACHE_CONSTANTS } from "./constants.js";
|
package/dist/src/cache/types.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { UniSpecChange } from "./types.js";
|
|
2
|
-
export declare function annotateRestChange(change: UniSpecChange): UniSpecChange;
|
|
3
|
-
export declare function annotateWebSocketChange(change: UniSpecChange): UniSpecChange;
|
|
4
|
-
export declare function annotateGraphQLChange(change: UniSpecChange): UniSpecChange;
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
export function annotateRestChange(change) {
|
|
2
|
-
// Add defensive check for null/undefined path
|
|
3
|
-
if (!change.path || typeof change.path !== "string") {
|
|
4
|
-
return change;
|
|
5
|
-
}
|
|
6
|
-
if (!change.path.startsWith("/service/protocols/rest/routes/")) {
|
|
7
|
-
return change;
|
|
8
|
-
}
|
|
9
|
-
const segments = change.path.split("/").filter(Boolean);
|
|
10
|
-
// Expected shape: ["service", "protocols", "rest", "routes", routeName, ...]
|
|
11
|
-
if (segments[0] !== "service" ||
|
|
12
|
-
segments[1] !== "protocols" ||
|
|
13
|
-
segments[2] !== "rest" ||
|
|
14
|
-
segments[3] !== "routes") {
|
|
15
|
-
return change;
|
|
16
|
-
}
|
|
17
|
-
const routeName = segments[4];
|
|
18
|
-
if (typeof routeName === "undefined") {
|
|
19
|
-
return change;
|
|
20
|
-
}
|
|
21
|
-
const annotated = {
|
|
22
|
-
...change,
|
|
23
|
-
protocol: "rest",
|
|
24
|
-
};
|
|
25
|
-
if (change.description === "Item removed") {
|
|
26
|
-
annotated.kind = "rest.route.removed";
|
|
27
|
-
annotated.severity = "breaking";
|
|
28
|
-
}
|
|
29
|
-
else if (change.description === "Item added") {
|
|
30
|
-
annotated.kind = "rest.route.added";
|
|
31
|
-
annotated.severity = "non-breaking";
|
|
32
|
-
}
|
|
33
|
-
else if (change.path.includes("/required") &&
|
|
34
|
-
change.description === "Value changed") {
|
|
35
|
-
// Changing required field from false to true is breaking
|
|
36
|
-
annotated.kind = "rest.parameter.required_changed";
|
|
37
|
-
annotated.severity = "breaking";
|
|
38
|
-
}
|
|
39
|
-
return annotated;
|
|
40
|
-
}
|
|
41
|
-
export function annotateWebSocketChange(change) {
|
|
42
|
-
// Add defensive check for null/undefined path
|
|
43
|
-
if (!change.path || typeof change.path !== "string") {
|
|
44
|
-
return change;
|
|
45
|
-
}
|
|
46
|
-
if (!change.path.startsWith("/service/protocols/websocket/channels/")) {
|
|
47
|
-
return change;
|
|
48
|
-
}
|
|
49
|
-
const segments = change.path.split("/").filter(Boolean);
|
|
50
|
-
// Expected base: ["service","protocols","websocket","channels", channelName, ...]
|
|
51
|
-
if (segments[0] !== "service" ||
|
|
52
|
-
segments[1] !== "protocols" ||
|
|
53
|
-
segments[2] !== "websocket" ||
|
|
54
|
-
segments[3] !== "channels") {
|
|
55
|
-
return change;
|
|
56
|
-
}
|
|
57
|
-
const channelName = segments[4];
|
|
58
|
-
const next = segments[5];
|
|
59
|
-
const annotated = {
|
|
60
|
-
...change,
|
|
61
|
-
protocol: "websocket",
|
|
62
|
-
};
|
|
63
|
-
if (typeof channelName === "undefined") {
|
|
64
|
-
return annotated;
|
|
65
|
-
}
|
|
66
|
-
// Channel-level changes: /service/protocols/websocket/channels/{channelName}
|
|
67
|
-
if (!next) {
|
|
68
|
-
if (change.description === "Item removed") {
|
|
69
|
-
annotated.kind = "websocket.channel.removed";
|
|
70
|
-
annotated.severity = "breaking";
|
|
71
|
-
}
|
|
72
|
-
else if (change.description === "Item added") {
|
|
73
|
-
annotated.kind = "websocket.channel.added";
|
|
74
|
-
annotated.severity = "non-breaking";
|
|
75
|
-
}
|
|
76
|
-
return annotated;
|
|
77
|
-
}
|
|
78
|
-
// Message-level changes: /service/protocols/websocket/channels/{channelName}/messages/{messageName}
|
|
79
|
-
if (next === "messages") {
|
|
80
|
-
const messageName = segments[6];
|
|
81
|
-
if (typeof messageName === "undefined") {
|
|
82
|
-
return annotated;
|
|
83
|
-
}
|
|
84
|
-
if (change.description === "Item removed") {
|
|
85
|
-
annotated.kind = "websocket.message.removed";
|
|
86
|
-
annotated.severity = "breaking";
|
|
87
|
-
}
|
|
88
|
-
else if (change.description === "Item added") {
|
|
89
|
-
annotated.kind = "websocket.message.added";
|
|
90
|
-
annotated.severity = "non-breaking";
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return annotated;
|
|
94
|
-
}
|
|
95
|
-
export function annotateGraphQLChange(change) {
|
|
96
|
-
// Add defensive check for null/undefined path
|
|
97
|
-
if (!change.path || typeof change.path !== "string") {
|
|
98
|
-
return change;
|
|
99
|
-
}
|
|
100
|
-
if (!change.path.startsWith("/service/protocols/graphql/")) {
|
|
101
|
-
return change;
|
|
102
|
-
}
|
|
103
|
-
const segments = change.path.split("/").filter(Boolean);
|
|
104
|
-
// Expected: ["service","protocols","graphql", operationType, operationName, ...]
|
|
105
|
-
if (segments[0] !== "service" ||
|
|
106
|
-
segments[1] !== "protocols" ||
|
|
107
|
-
segments[2] !== "graphql") {
|
|
108
|
-
return change;
|
|
109
|
-
}
|
|
110
|
-
const operationType = segments[3];
|
|
111
|
-
const operationName = segments[4];
|
|
112
|
-
if (!operationType || typeof operationName === "undefined") {
|
|
113
|
-
return change;
|
|
114
|
-
}
|
|
115
|
-
if (operationType !== "queries" &&
|
|
116
|
-
operationType !== "mutations" &&
|
|
117
|
-
operationType !== "subscriptions") {
|
|
118
|
-
return change;
|
|
119
|
-
}
|
|
120
|
-
const annotated = {
|
|
121
|
-
...change,
|
|
122
|
-
protocol: "graphql",
|
|
123
|
-
};
|
|
124
|
-
// Create operation-specific annotations
|
|
125
|
-
const singularMap = {
|
|
126
|
-
queries: "query",
|
|
127
|
-
mutations: "mutation",
|
|
128
|
-
subscriptions: "subscription",
|
|
129
|
-
};
|
|
130
|
-
const operationKind = `graphql.${singularMap[operationType]}`;
|
|
131
|
-
// Check for specific changes first, then general ones
|
|
132
|
-
if (change.path.includes("/returnType") &&
|
|
133
|
-
change.description === "Value changed") {
|
|
134
|
-
// Changing return type is breaking
|
|
135
|
-
annotated.kind = `${operationKind}.return_type_changed`;
|
|
136
|
-
annotated.severity = "breaking";
|
|
137
|
-
}
|
|
138
|
-
else if (change.path.includes("/args") &&
|
|
139
|
-
(change.description === "Item added" ||
|
|
140
|
-
change.description === "Item removed")) {
|
|
141
|
-
// Argument changes
|
|
142
|
-
const action = change.description === "Item added" ? "added" : "removed";
|
|
143
|
-
annotated.kind = `${operationKind}.argument_${action}`;
|
|
144
|
-
annotated.severity = action === "added" ? "non-breaking" : "breaking";
|
|
145
|
-
}
|
|
146
|
-
else if (change.description === "Item removed") {
|
|
147
|
-
annotated.kind = `${operationKind}.removed`;
|
|
148
|
-
annotated.severity = "breaking";
|
|
149
|
-
}
|
|
150
|
-
else if (change.description === "Item added") {
|
|
151
|
-
annotated.kind = `${operationKind}.added`;
|
|
152
|
-
annotated.severity = "non-breaking";
|
|
153
|
-
}
|
|
154
|
-
return annotated;
|
|
155
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { EnhancedDiffResult, EnhancedUniSpecChange } from "./enhanced-diff.js";
|
|
2
|
-
export interface ReportOptions {
|
|
3
|
-
format: "markdown" | "html" | "json";
|
|
4
|
-
includeSuggestions?: boolean;
|
|
5
|
-
includeExamples?: boolean;
|
|
6
|
-
groupByRisk?: boolean;
|
|
7
|
-
groupByProtocol?: boolean;
|
|
8
|
-
title?: string;
|
|
9
|
-
versionInfo?: {
|
|
10
|
-
oldVersion?: string;
|
|
11
|
-
newVersion?: string;
|
|
12
|
-
comparisonDate?: string;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
export interface ChangeReport {
|
|
16
|
-
title: string;
|
|
17
|
-
summary: {
|
|
18
|
-
totalChanges: number;
|
|
19
|
-
breakingChanges: number;
|
|
20
|
-
compatibilityScore: number;
|
|
21
|
-
migrationEffort: string;
|
|
22
|
-
};
|
|
23
|
-
sections: ReportSection[];
|
|
24
|
-
}
|
|
25
|
-
export interface ReportSection {
|
|
26
|
-
title: string;
|
|
27
|
-
changes: EnhancedUniSpecChange[];
|
|
28
|
-
summary: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Generate a comprehensive change report.
|
|
32
|
-
*
|
|
33
|
-
* @param diff - Enhanced diff result
|
|
34
|
-
* @param options - Report generation options
|
|
35
|
-
* @returns Formatted report in the specified format
|
|
36
|
-
*/
|
|
37
|
-
export declare function generateChangeReport(diff: EnhancedDiffResult, options: ReportOptions): string;
|