@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,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ErrorFactory = void 0;
|
|
4
|
-
const base_error_1 = require("./base-error
|
|
5
|
-
const config_error_1 = require("./config-error
|
|
6
|
-
const loader_error_1 = require("./loader-error
|
|
7
|
-
const reference_error_1 = require("./reference-error
|
|
8
|
-
const schema_error_1 = require("./schema-error
|
|
9
|
-
const security_error_1 = require("./security-error
|
|
10
|
-
const semantic_error_1 = require("./semantic-error
|
|
4
|
+
const base_error_1 = require("./base-error");
|
|
5
|
+
const config_error_1 = require("./config-error");
|
|
6
|
+
const loader_error_1 = require("./loader-error");
|
|
7
|
+
const reference_error_1 = require("./reference-error");
|
|
8
|
+
const schema_error_1 = require("./schema-error");
|
|
9
|
+
const security_error_1 = require("./security-error");
|
|
10
|
+
const semantic_error_1 = require("./semantic-error");
|
|
11
11
|
/**
|
|
12
12
|
* Error factory for creating specific error types.
|
|
13
13
|
*/
|
package/dist/cjs/errors/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniSpecSemanticError = exports.UniSpecSecurityError = exports.UniSpecSchemaError = exports.UniSpecReferenceError = exports.UniSpecLoaderError = exports.ErrorFactory = exports.UniSpecConfigError = exports.UniSpecValidationError = void 0;
|
|
4
|
-
var base_error_1 = require("./base-error
|
|
4
|
+
var base_error_1 = require("./base-error");
|
|
5
5
|
Object.defineProperty(exports, "UniSpecValidationError", { enumerable: true, get: function () { return base_error_1.UniSpecValidationError; } });
|
|
6
|
-
var config_error_1 = require("./config-error
|
|
6
|
+
var config_error_1 = require("./config-error");
|
|
7
7
|
Object.defineProperty(exports, "UniSpecConfigError", { enumerable: true, get: function () { return config_error_1.UniSpecConfigError; } });
|
|
8
|
-
var error_factory_1 = require("./error-factory
|
|
8
|
+
var error_factory_1 = require("./error-factory");
|
|
9
9
|
Object.defineProperty(exports, "ErrorFactory", { enumerable: true, get: function () { return error_factory_1.ErrorFactory; } });
|
|
10
|
-
var loader_error_1 = require("./loader-error
|
|
10
|
+
var loader_error_1 = require("./loader-error");
|
|
11
11
|
Object.defineProperty(exports, "UniSpecLoaderError", { enumerable: true, get: function () { return loader_error_1.UniSpecLoaderError; } });
|
|
12
|
-
var reference_error_1 = require("./reference-error
|
|
12
|
+
var reference_error_1 = require("./reference-error");
|
|
13
13
|
Object.defineProperty(exports, "UniSpecReferenceError", { enumerable: true, get: function () { return reference_error_1.UniSpecReferenceError; } });
|
|
14
|
-
var schema_error_1 = require("./schema-error
|
|
14
|
+
var schema_error_1 = require("./schema-error");
|
|
15
15
|
Object.defineProperty(exports, "UniSpecSchemaError", { enumerable: true, get: function () { return schema_error_1.UniSpecSchemaError; } });
|
|
16
|
-
var security_error_1 = require("./security-error
|
|
16
|
+
var security_error_1 = require("./security-error");
|
|
17
17
|
Object.defineProperty(exports, "UniSpecSecurityError", { enumerable: true, get: function () { return security_error_1.UniSpecSecurityError; } });
|
|
18
|
-
var semantic_error_1 = require("./semantic-error
|
|
18
|
+
var semantic_error_1 = require("./semantic-error");
|
|
19
19
|
Object.defineProperty(exports, "UniSpecSemanticError", { enumerable: true, get: function () { return semantic_error_1.UniSpecSemanticError; } });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniSpecLoaderError = void 0;
|
|
4
|
-
const base_error_1 = require("./base-error
|
|
4
|
+
const base_error_1 = require("./base-error");
|
|
5
5
|
class UniSpecLoaderError extends base_error_1.UniSpecValidationError {
|
|
6
6
|
constructor(message, path = "", details) {
|
|
7
7
|
super(message, "loader_error", path, "error", details);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniSpecReferenceError = void 0;
|
|
4
|
-
const base_error_1 = require("./base-error
|
|
4
|
+
const base_error_1 = require("./base-error");
|
|
5
5
|
class UniSpecReferenceError extends base_error_1.UniSpecValidationError {
|
|
6
6
|
constructor(message, path = "", details) {
|
|
7
7
|
super(message, "reference_error", path, "error", details);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniSpecSchemaError = void 0;
|
|
4
|
-
const base_error_1 = require("./base-error
|
|
4
|
+
const base_error_1 = require("./base-error");
|
|
5
5
|
class UniSpecSchemaError extends base_error_1.UniSpecValidationError {
|
|
6
6
|
constructor(message, path = "", details) {
|
|
7
7
|
super(message, "schema_error", path, "error", details);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniSpecSecurityError = void 0;
|
|
4
|
-
const base_error_1 = require("./base-error
|
|
4
|
+
const base_error_1 = require("./base-error");
|
|
5
5
|
class UniSpecSecurityError extends base_error_1.UniSpecValidationError {
|
|
6
6
|
constructor(message, path = "", details) {
|
|
7
7
|
super(message, "security_error", path, "error", details);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniSpecSemanticError = void 0;
|
|
4
|
-
const base_error_1 = require("./base-error
|
|
4
|
+
const base_error_1 = require("./base-error");
|
|
5
5
|
class UniSpecSemanticError extends base_error_1.UniSpecValidationError {
|
|
6
6
|
constructor(message, path = "", details) {
|
|
7
7
|
super(message, "semantic_error", path, "error", details);
|
package/dist/cjs/index.js
CHANGED
|
@@ -20,40 +20,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
// ============================================================================
|
|
21
21
|
// CACHING SYSTEM
|
|
22
22
|
// ============================================================================
|
|
23
|
-
__exportStar(require("./cache
|
|
23
|
+
__exportStar(require("./cache"), exports);
|
|
24
24
|
// ============================================================================
|
|
25
25
|
// DIFF AND CHANGE ANALYSIS
|
|
26
26
|
// ============================================================================
|
|
27
|
-
__exportStar(require("./diff
|
|
27
|
+
__exportStar(require("./diff"), exports);
|
|
28
28
|
// ============================================================================
|
|
29
29
|
// DOCUMENT LOADING AND PARSING
|
|
30
30
|
// ============================================================================
|
|
31
|
-
__exportStar(require("./loader
|
|
31
|
+
__exportStar(require("./loader"), exports);
|
|
32
32
|
// ============================================================================
|
|
33
33
|
// DOCUMENT NORMALIZATION
|
|
34
34
|
// ============================================================================
|
|
35
|
-
__exportStar(require("./normalizer
|
|
35
|
+
__exportStar(require("./normalizer"), exports);
|
|
36
36
|
// ============================================================================
|
|
37
37
|
// DOCUMENT OPTIMIZATION
|
|
38
38
|
// ============================================================================
|
|
39
|
-
__exportStar(require("./optimizer
|
|
39
|
+
__exportStar(require("./optimizer"), exports);
|
|
40
40
|
// ============================================================================
|
|
41
41
|
// SCHEMA MANAGEMENT
|
|
42
42
|
// ============================================================================
|
|
43
|
-
__exportStar(require("./schemas
|
|
44
|
-
__exportStar(require("./types
|
|
43
|
+
__exportStar(require("./schemas"), exports);
|
|
44
|
+
__exportStar(require("./types"), exports);
|
|
45
45
|
// ============================================================================
|
|
46
46
|
// VALIDATION SYSTEM
|
|
47
47
|
// ============================================================================
|
|
48
|
-
__exportStar(require("./validator
|
|
48
|
+
__exportStar(require("./validator"), exports);
|
|
49
49
|
// ============================================================================
|
|
50
50
|
// UTILITY FUNCTIONS
|
|
51
51
|
// ============================================================================
|
|
52
|
-
__exportStar(require("./validator/object-traversal
|
|
53
|
-
__exportStar(require("./validator/reference-validator
|
|
54
|
-
__exportStar(require("./validator/schema-references
|
|
55
|
-
__exportStar(require("./validator/semantic-validator
|
|
52
|
+
__exportStar(require("./validator/object-traversal"), exports);
|
|
53
|
+
__exportStar(require("./validator/reference-validator"), exports);
|
|
54
|
+
__exportStar(require("./validator/schema-references"), exports);
|
|
55
|
+
__exportStar(require("./validator/semantic-validator"), exports);
|
|
56
56
|
// ============================================================================
|
|
57
57
|
// VERSION INFORMATION
|
|
58
58
|
// ============================================================================
|
|
59
|
-
__exportStar(require("./versions
|
|
59
|
+
__exportStar(require("./versions"), exports);
|
package/dist/cjs/loader/index.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
// Export all loader functionality
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.validateYamlModule = exports.getYamlModule = exports.loadUniSpec = exports.ALLOWED_YAML_MODULES = exports.validateDocumentSecurity = void 0;
|
|
5
|
-
var security_validator_1 = require("./security-validator
|
|
5
|
+
var security_validator_1 = require("./security-validator");
|
|
6
6
|
Object.defineProperty(exports, "validateDocumentSecurity", { enumerable: true, get: function () { return security_validator_1.validateDocumentSecurity; } });
|
|
7
|
-
var types_1 = require("./types
|
|
7
|
+
var types_1 = require("./types");
|
|
8
8
|
Object.defineProperty(exports, "ALLOWED_YAML_MODULES", { enumerable: true, get: function () { return types_1.ALLOWED_YAML_MODULES; } });
|
|
9
|
-
var unispec_loader_1 = require("./unispec-loader
|
|
9
|
+
var unispec_loader_1 = require("./unispec-loader");
|
|
10
10
|
Object.defineProperty(exports, "loadUniSpec", { enumerable: true, get: function () { return unispec_loader_1.loadUniSpec; } });
|
|
11
|
-
var yaml_loader_1 = require("./yaml-loader
|
|
11
|
+
var yaml_loader_1 = require("./yaml-loader");
|
|
12
12
|
Object.defineProperty(exports, "getYamlModule", { enumerable: true, get: function () { return yaml_loader_1.getYamlModule; } });
|
|
13
13
|
Object.defineProperty(exports, "validateYamlModule", { enumerable: true, get: function () { return yaml_loader_1.validateYamlModule; } });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateDocumentSecurity = validateDocumentSecurity;
|
|
4
|
-
const errors_1 = require("
|
|
4
|
+
const errors_1 = require("@/errors");
|
|
5
5
|
/**
|
|
6
6
|
* Validate document security constraints using iterative approach to prevent stack overflow.
|
|
7
7
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadUniSpec = loadUniSpec;
|
|
4
|
-
const index_1 = require("
|
|
5
|
-
const security_validator_1 = require("./security-validator
|
|
6
|
-
const yaml_loader_1 = require("./yaml-loader
|
|
4
|
+
const index_1 = require("@/errors/index");
|
|
5
|
+
const security_validator_1 = require("./security-validator");
|
|
6
|
+
const yaml_loader_1 = require("./yaml-loader");
|
|
7
7
|
/**
|
|
8
8
|
* Load a UniSpec document from a raw input value.
|
|
9
9
|
* Supports:
|
|
@@ -35,7 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.getYamlModule = getYamlModule;
|
|
37
37
|
exports.validateYamlModule = validateYamlModule;
|
|
38
|
-
const index_1 = require("
|
|
38
|
+
const index_1 = require("@/errors/index");
|
|
39
39
|
// Static import with security validation
|
|
40
40
|
let yamlModule = null;
|
|
41
41
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeUniSpec = normalizeUniSpec;
|
|
4
|
-
const graphql_normalizer_1 = require("./graphql-normalizer
|
|
5
|
-
const rest_normalizer_1 = require("./rest-normalizer
|
|
6
|
-
const utils_1 = require("./utils
|
|
7
|
-
const websocket_normalizer_1 = require("./websocket-normalizer
|
|
4
|
+
const graphql_normalizer_1 = require("./graphql-normalizer");
|
|
5
|
+
const rest_normalizer_1 = require("./rest-normalizer");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const websocket_normalizer_1 = require("./websocket-normalizer");
|
|
8
8
|
/**
|
|
9
9
|
* Normalize a UniSpec document into a canonical, deterministic form.
|
|
10
10
|
*
|
|
@@ -27,6 +27,11 @@ const websocket_normalizer_1 = require("./websocket-normalizer.js");
|
|
|
27
27
|
* @returns The normalized UniSpec document
|
|
28
28
|
*/
|
|
29
29
|
function normalizeUniSpec(doc, _options = {}) {
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
// Apply protocol-specific normalizations first
|
|
31
|
+
const restNormalized = (0, rest_normalizer_1.normalizeRestRoutes)(doc);
|
|
32
|
+
const graphqlNormalized = (0, graphql_normalizer_1.normalizeGraphqlOperations)(restNormalized);
|
|
33
|
+
const finalNormalized = (0, websocket_normalizer_1.normalizeWebSocket)(graphqlNormalized);
|
|
34
|
+
// Always apply structural normalization to ensure immutability
|
|
35
|
+
// and consistent key sorting, even if no protocol changes were made
|
|
36
|
+
return (0, utils_1.normalizeValue)(finalNormalized);
|
|
32
37
|
}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.normalizeUniSpec = void 0;
|
|
5
5
|
// Re-export core function
|
|
6
|
-
var core_1 = require("./core
|
|
6
|
+
var core_1 = require("./core");
|
|
7
7
|
Object.defineProperty(exports, "normalizeUniSpec", { enumerable: true, get: function () { return core_1.normalizeUniSpec; } });
|
|
@@ -12,20 +12,36 @@ function isPlainObject(value) {
|
|
|
12
12
|
return Object.prototype.toString.call(value) === "[object Object]";
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Normalize a value by sorting object keys lexicographically (recursive).
|
|
16
|
+
* Always creates new objects to ensure immutability.
|
|
17
|
+
* Handles circular references gracefully.
|
|
16
18
|
*
|
|
17
19
|
* @param value - The value to normalize
|
|
18
|
-
* @
|
|
20
|
+
* @param seen - WeakSet of already seen objects for circular reference detection
|
|
21
|
+
* @returns The normalized value (always a new object for objects/arrays)
|
|
19
22
|
*/
|
|
20
|
-
function normalizeValue(value) {
|
|
23
|
+
function normalizeValue(value, seen = new WeakSet()) {
|
|
24
|
+
// Handle primitives and null/undefined
|
|
25
|
+
if (value === null || typeof value !== "object") {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
21
28
|
if (Array.isArray(value)) {
|
|
22
|
-
|
|
29
|
+
// Always create new array with recursively normalized items
|
|
30
|
+
return value.map((item) => normalizeValue(item, seen));
|
|
23
31
|
}
|
|
24
32
|
if (isPlainObject(value)) {
|
|
25
|
-
|
|
33
|
+
// Check for circular references
|
|
34
|
+
if (seen.has(value)) {
|
|
35
|
+
// Return a placeholder for circular references to avoid infinite recursion
|
|
36
|
+
return "[Circular]";
|
|
37
|
+
}
|
|
38
|
+
seen.add(value);
|
|
39
|
+
const entries = Object.entries(value);
|
|
40
|
+
// Always create new object with sorted keys and recursively normalized values
|
|
41
|
+
const sortedEntries = entries.sort(([a], [b]) => a.localeCompare(b));
|
|
26
42
|
const normalized = {};
|
|
27
|
-
for (const [key, val] of
|
|
28
|
-
normalized[key] = normalizeValue(val);
|
|
43
|
+
for (const [key, val] of sortedEntries) {
|
|
44
|
+
normalized[key] = normalizeValue(val, seen);
|
|
29
45
|
}
|
|
30
46
|
return normalized;
|
|
31
47
|
}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.optimizeDocument = optimizeDocument;
|
|
4
4
|
exports.generateOptimizationReport = generateOptimizationReport;
|
|
5
|
-
const
|
|
5
|
+
const schemas_1 = require("@/schemas");
|
|
6
|
+
const optimization_functions_1 = require("./optimization-functions");
|
|
6
7
|
/**
|
|
7
8
|
* Optimize a UniSpec document with various optimization strategies.
|
|
8
9
|
*
|
|
@@ -24,12 +25,6 @@ function optimizeDocument(doc, options = {}) {
|
|
|
24
25
|
}
|
|
25
26
|
let deduplicatedCount = 0;
|
|
26
27
|
// Apply optimizations in order
|
|
27
|
-
if (options.removeUnusedSchemas === true) {
|
|
28
|
-
const removed = (0, optimization_functions_1.removeOrphanedSchemas)(optimizedDoc);
|
|
29
|
-
if (removed.length > 0) {
|
|
30
|
-
changes.push(`Removed ${removed.length} orphaned schemas: ${removed.join(", ")}`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
28
|
if (options.dedupeSchemas !== false) {
|
|
34
29
|
const dedupResult = (0, optimization_functions_1.deduplicateSchemas)(optimizedDoc);
|
|
35
30
|
if (dedupResult.removedSchemas.length > 0) {
|
|
@@ -38,6 +33,12 @@ function optimizeDocument(doc, options = {}) {
|
|
|
38
33
|
deduplicatedCount = dedupResult.removedSchemas.length;
|
|
39
34
|
}
|
|
40
35
|
}
|
|
36
|
+
if (options.removeUnusedSchemas === true) {
|
|
37
|
+
const removed = (0, optimization_functions_1.removeOrphanedSchemas)(optimizedDoc);
|
|
38
|
+
if (removed.length > 0) {
|
|
39
|
+
changes.push(`Removed ${removed.length} orphaned schemas: ${removed.join(", ")}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
41
42
|
if (options.sortSchemas !== false) {
|
|
42
43
|
const sortedCount = (0, optimization_functions_1.sortSchemas)(optimizedDoc);
|
|
43
44
|
if (sortedCount > 0) {
|
|
@@ -85,7 +86,7 @@ function generateOptimizationReport(doc) {
|
|
|
85
86
|
return;
|
|
86
87
|
for (const [key, value] of Object.entries(obj)) {
|
|
87
88
|
if (key === "schemaRef" && typeof value === "string") {
|
|
88
|
-
const schemaName =
|
|
89
|
+
const schemaName = (0, schemas_1.normalizeSchemaRef)(value);
|
|
89
90
|
if (schemaName)
|
|
90
91
|
referencedSchemas.add(schemaName);
|
|
91
92
|
}
|
|
@@ -105,11 +106,35 @@ function generateOptimizationReport(doc) {
|
|
|
105
106
|
}
|
|
106
107
|
const totalSchemas = Object.keys(doc.service?.schemas || {}).length;
|
|
107
108
|
const potentialReduction = orphaned.length + dedupResult.removedSchemas.length;
|
|
108
|
-
|
|
109
|
+
// Calculate reference compression savings only if there are schema references
|
|
110
|
+
let referenceCompression = 0;
|
|
111
|
+
if (totalSchemas > 0) {
|
|
112
|
+
// Count actual schema references to estimate compression savings
|
|
113
|
+
let referenceCount = 0;
|
|
114
|
+
function countReferences(obj) {
|
|
115
|
+
if (!obj || typeof obj !== "object")
|
|
116
|
+
return;
|
|
117
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
118
|
+
if (key === "schemaRef" && typeof value === "string") {
|
|
119
|
+
referenceCount++;
|
|
120
|
+
}
|
|
121
|
+
else if (typeof value === "object" && value !== null) {
|
|
122
|
+
countReferences(value);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
countReferences(doc);
|
|
127
|
+
// Only estimate compression if there are references to compress
|
|
128
|
+
if (referenceCount > 1) {
|
|
129
|
+
referenceCompression = Math.min(referenceCount * 0.1, totalSchemas * 0.1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const result = {
|
|
109
133
|
recommendations,
|
|
110
134
|
potentialSavings: {
|
|
111
135
|
schemaReduction: potentialReduction,
|
|
112
|
-
referenceCompression
|
|
136
|
+
referenceCompression,
|
|
113
137
|
},
|
|
114
138
|
};
|
|
139
|
+
return result;
|
|
115
140
|
}
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.compressReference = exports.sortSchemas = exports.removeOrphanedSchemas = exports.deduplicateSchemas = exports.compressSchemaReferences = exports.optimizeDocument = exports.generateOptimizationReport = void 0;
|
|
5
5
|
// Export core functions
|
|
6
|
-
var core_1 = require("./core
|
|
6
|
+
var core_1 = require("./core");
|
|
7
7
|
Object.defineProperty(exports, "generateOptimizationReport", { enumerable: true, get: function () { return core_1.generateOptimizationReport; } });
|
|
8
8
|
Object.defineProperty(exports, "optimizeDocument", { enumerable: true, get: function () { return core_1.optimizeDocument; } });
|
|
9
9
|
// Export optimization functions
|
|
10
|
-
var optimization_functions_1 = require("./optimization-functions
|
|
10
|
+
var optimization_functions_1 = require("./optimization-functions");
|
|
11
11
|
Object.defineProperty(exports, "compressSchemaReferences", { enumerable: true, get: function () { return optimization_functions_1.compressSchemaReferences; } });
|
|
12
12
|
Object.defineProperty(exports, "deduplicateSchemas", { enumerable: true, get: function () { return optimization_functions_1.deduplicateSchemas; } });
|
|
13
13
|
Object.defineProperty(exports, "removeOrphanedSchemas", { enumerable: true, get: function () { return optimization_functions_1.removeOrphanedSchemas; } });
|
|
14
14
|
Object.defineProperty(exports, "sortSchemas", { enumerable: true, get: function () { return optimization_functions_1.sortSchemas; } });
|
|
15
15
|
// Export utilities
|
|
16
|
-
var utils_1 = require("./utils
|
|
16
|
+
var utils_1 = require("./utils");
|
|
17
17
|
Object.defineProperty(exports, "compressReference", { enumerable: true, get: function () { return utils_1.compressReference; } });
|
|
@@ -4,8 +4,8 @@ exports.deduplicateSchemas = deduplicateSchemas;
|
|
|
4
4
|
exports.removeOrphanedSchemas = removeOrphanedSchemas;
|
|
5
5
|
exports.sortSchemas = sortSchemas;
|
|
6
6
|
exports.compressSchemaReferences = compressSchemaReferences;
|
|
7
|
-
const schemas_1 = require("
|
|
8
|
-
const utils_1 = require("./utils
|
|
7
|
+
const schemas_1 = require("@/schemas");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
9
|
/**
|
|
10
10
|
* Remove duplicate schemas from a UniSpec document.
|
|
11
11
|
* Duplicates are identified by identical JSON Schema content.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.dedupeSchemas = dedupeSchemas;
|
|
4
|
-
const utils_1 = require("./utils
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
5
|
function updateSchemaRefs(doc, mapping) {
|
|
6
6
|
const rest = doc.service?.protocols?.rest;
|
|
7
7
|
const websocket = doc.service?.protocols?.websocket;
|
|
@@ -75,26 +75,39 @@ function updateSchemaRefs(doc, mapping) {
|
|
|
75
75
|
* @param doc - The UniSpec document to deduplicate
|
|
76
76
|
*/
|
|
77
77
|
function dedupeSchemas(doc) {
|
|
78
|
-
if (!doc
|
|
78
|
+
if (!doc?.service?.schemas || typeof doc.service.schemas !== "object")
|
|
79
79
|
return;
|
|
80
|
-
const
|
|
80
|
+
const schemas = doc.service.schemas;
|
|
81
81
|
const hashToName = new Map();
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
const toDelete = [];
|
|
83
|
+
// Find duplicates
|
|
84
|
+
for (const name of Object.keys(schemas)) {
|
|
85
|
+
const schema = schemas[name];
|
|
85
86
|
const hash = (0, utils_1.stableStringify)(schema?.jsonSchema ?? null);
|
|
86
87
|
const existing = hashToName.get(hash);
|
|
87
88
|
if (!existing) {
|
|
88
89
|
hashToName.set(hash, name);
|
|
89
|
-
continue;
|
|
90
90
|
}
|
|
91
|
-
|
|
91
|
+
else {
|
|
92
|
+
// Mark for deletion - keep the first one encountered
|
|
93
|
+
toDelete.push(name);
|
|
94
|
+
}
|
|
92
95
|
}
|
|
93
|
-
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
// Update references before deleting
|
|
97
|
+
if (toDelete.length > 0) {
|
|
98
|
+
const renameMap = {};
|
|
99
|
+
for (const dup of toDelete) {
|
|
100
|
+
const schema = schemas[dup];
|
|
101
|
+
const hash = (0, utils_1.stableStringify)(schema?.jsonSchema ?? null);
|
|
102
|
+
const existing = hashToName.get(hash);
|
|
103
|
+
if (existing) {
|
|
104
|
+
renameMap[dup] = existing;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
updateSchemaRefs(doc, renameMap);
|
|
108
|
+
// Delete duplicates
|
|
109
|
+
for (const dup of toDelete) {
|
|
110
|
+
delete schemas[dup];
|
|
111
|
+
}
|
|
99
112
|
}
|
|
100
113
|
}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.stableStringify = exports.normalizeSchemaRef = exports.resolveSchemaRef = exports.registerSchema = exports.dedupeSchemas = void 0;
|
|
5
5
|
// Export deduplication functions
|
|
6
|
-
var dedupe_1 = require("./dedupe
|
|
6
|
+
var dedupe_1 = require("./dedupe");
|
|
7
7
|
Object.defineProperty(exports, "dedupeSchemas", { enumerable: true, get: function () { return dedupe_1.dedupeSchemas; } });
|
|
8
8
|
// Export resolver functions
|
|
9
|
-
var resolver_1 = require("./resolver
|
|
9
|
+
var resolver_1 = require("./resolver");
|
|
10
10
|
Object.defineProperty(exports, "registerSchema", { enumerable: true, get: function () { return resolver_1.registerSchema; } });
|
|
11
11
|
Object.defineProperty(exports, "resolveSchemaRef", { enumerable: true, get: function () { return resolver_1.resolveSchemaRef; } });
|
|
12
|
-
var utils_1 = require("./utils
|
|
12
|
+
var utils_1 = require("./utils");
|
|
13
13
|
Object.defineProperty(exports, "normalizeSchemaRef", { enumerable: true, get: function () { return utils_1.normalizeSchemaRef; } });
|
|
14
14
|
Object.defineProperty(exports, "stableStringify", { enumerable: true, get: function () { return utils_1.stableStringify; } });
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveSchemaRef = resolveSchemaRef;
|
|
4
4
|
exports.registerSchema = registerSchema;
|
|
5
|
-
const utils_1 = require("./utils
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
6
|
/**
|
|
7
7
|
* Resolve a schema reference to its definition in a UniSpec document.
|
|
8
8
|
*
|
|
@@ -11,6 +11,8 @@ const utils_1 = require("./utils.js");
|
|
|
11
11
|
* @returns The schema definition or undefined if not found
|
|
12
12
|
*/
|
|
13
13
|
function resolveSchemaRef(doc, ref) {
|
|
14
|
+
if (!doc)
|
|
15
|
+
return undefined;
|
|
14
16
|
const name = (0, utils_1.normalizeSchemaRef)(ref);
|
|
15
17
|
if (!name)
|
|
16
18
|
return undefined;
|
|
@@ -33,7 +35,6 @@ function registerSchema(doc, name, jsonSchema) {
|
|
|
33
35
|
doc.service.schemas = {};
|
|
34
36
|
}
|
|
35
37
|
const definition = {
|
|
36
|
-
name,
|
|
37
38
|
jsonSchema,
|
|
38
39
|
};
|
|
39
40
|
doc.service.schemas[name] = definition;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getValidator = getValidator;
|
|
7
7
|
exports.clearValidatorCache = clearValidatorCache;
|
|
8
8
|
const _2020_js_1 = __importDefault(require("ajv/dist/2020.js"));
|
|
9
|
-
const generated_schemas_1 = require("
|
|
9
|
+
const generated_schemas_1 = require("@/generated-schemas");
|
|
10
10
|
let cached = null;
|
|
11
11
|
/**
|
|
12
12
|
* Load default schemas from generated schemas.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateUniSpecConfig = validateUniSpecConfig;
|
|
4
|
-
const errors_1 = require("
|
|
5
|
-
const ajv_validator_1 = require("./ajv-validator
|
|
6
|
-
const config_validator_1 = require("./config-validator
|
|
7
|
-
const validator_factory_1 = require("./validator-factory
|
|
4
|
+
const errors_1 = require("@/errors");
|
|
5
|
+
const ajv_validator_1 = require("./ajv-validator");
|
|
6
|
+
const config_validator_1 = require("./config-validator");
|
|
7
|
+
const validator_factory_1 = require("./validator-factory");
|
|
8
8
|
/**
|
|
9
9
|
* Validate a UniSpec Config document against the UniSpec Config JSON Schema.
|
|
10
10
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateConfigCustomRules = validateConfigCustomRules;
|
|
4
|
-
const errors_1 = require("
|
|
4
|
+
const errors_1 = require("@/errors");
|
|
5
5
|
/**
|
|
6
6
|
* Custom validation for UniSpec Config documents.
|
|
7
7
|
*/
|
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.mapAjvErrors = exports.createValidator = exports.validateUniSpec = exports.validateUniSpecTests = exports.validateSemantic = exports.validateReferences = exports.validateUniSpecConfig = exports.getValidator = exports.clearValidatorCache = void 0;
|
|
5
5
|
// Export AJV utilities
|
|
6
|
-
var ajv_validator_1 = require("./ajv-validator
|
|
6
|
+
var ajv_validator_1 = require("./ajv-validator");
|
|
7
7
|
Object.defineProperty(exports, "clearValidatorCache", { enumerable: true, get: function () { return ajv_validator_1.clearValidatorCache; } });
|
|
8
8
|
Object.defineProperty(exports, "getValidator", { enumerable: true, get: function () { return ajv_validator_1.getValidator; } });
|
|
9
|
-
var config_validator_main_1 = require("./config-validator-main
|
|
9
|
+
var config_validator_main_1 = require("./config-validator-main");
|
|
10
10
|
Object.defineProperty(exports, "validateUniSpecConfig", { enumerable: true, get: function () { return config_validator_main_1.validateUniSpecConfig; } });
|
|
11
|
-
var reference_validator_1 = require("./reference-validator
|
|
11
|
+
var reference_validator_1 = require("./reference-validator");
|
|
12
12
|
Object.defineProperty(exports, "validateReferences", { enumerable: true, get: function () { return reference_validator_1.validateReferences; } });
|
|
13
13
|
// Re-export semantic and reference validators
|
|
14
|
-
var semantic_validator_1 = require("./semantic-validator
|
|
14
|
+
var semantic_validator_1 = require("./semantic-validator");
|
|
15
15
|
Object.defineProperty(exports, "validateSemantic", { enumerable: true, get: function () { return semantic_validator_1.validateSemantic; } });
|
|
16
|
-
var tests_validator_1 = require("./tests-validator
|
|
16
|
+
var tests_validator_1 = require("./tests-validator");
|
|
17
17
|
Object.defineProperty(exports, "validateUniSpecTests", { enumerable: true, get: function () { return tests_validator_1.validateUniSpecTests; } });
|
|
18
|
-
var unispec_validator_1 = require("./unispec-validator
|
|
18
|
+
var unispec_validator_1 = require("./unispec-validator");
|
|
19
19
|
Object.defineProperty(exports, "validateUniSpec", { enumerable: true, get: function () { return unispec_validator_1.validateUniSpec; } });
|
|
20
20
|
// Export validator factory for advanced usage
|
|
21
|
-
var validator_factory_1 = require("./validator-factory
|
|
21
|
+
var validator_factory_1 = require("./validator-factory");
|
|
22
22
|
Object.defineProperty(exports, "createValidator", { enumerable: true, get: function () { return validator_factory_1.createValidator; } });
|
|
23
23
|
Object.defineProperty(exports, "mapAjvErrors", { enumerable: true, get: function () { return validator_factory_1.mapAjvErrors; } });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateReferences = validateReferences;
|
|
4
|
-
const object_traversal_1 = require("./object-traversal
|
|
4
|
+
const object_traversal_1 = require("./object-traversal");
|
|
5
5
|
/**
|
|
6
6
|
* Extract all schema references from a UniSpec document.
|
|
7
7
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateUniSpecTests = void 0;
|
|
4
|
-
const ajv_validator_1 = require("./ajv-validator
|
|
5
|
-
const validator_factory_1 = require("./validator-factory
|
|
4
|
+
const ajv_validator_1 = require("./ajv-validator");
|
|
5
|
+
const validator_factory_1 = require("./validator-factory");
|
|
6
6
|
/**
|
|
7
7
|
* Validate a UniSpec Tests document against the UniSpec Tests JSON Schema.
|
|
8
8
|
*
|