@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,280 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
-
const node_test_1 = require("node:test");
|
|
8
|
-
const errors_1 = require("../../src/errors/index.js");
|
|
9
|
-
const utils_1 = require("./utils.js");
|
|
10
|
-
(0, node_test_1.describe)("errors module", () => {
|
|
11
|
-
(0, node_test_1.describe)("UniSpecValidationError", () => {
|
|
12
|
-
(0, node_test_1.it)("should create basic validation error", () => {
|
|
13
|
-
const error = new errors_1.UniSpecValidationError("Test error message", "test_code", "/test/path", "error", { detail: "test detail" });
|
|
14
|
-
node_assert_1.default.strictEqual(error.message, "Test error message");
|
|
15
|
-
node_assert_1.default.strictEqual(error.code, "test_code");
|
|
16
|
-
node_assert_1.default.strictEqual(error.path, "/test/path");
|
|
17
|
-
node_assert_1.default.strictEqual(error.severity, "error");
|
|
18
|
-
node_assert_1.default.deepStrictEqual(error.details, { detail: "test detail" });
|
|
19
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecValidationError");
|
|
20
|
-
});
|
|
21
|
-
(0, node_test_1.it)("should create error with default values", () => {
|
|
22
|
-
const error = new errors_1.UniSpecValidationError("Test message", "test_code");
|
|
23
|
-
node_assert_1.default.strictEqual(error.message, "Test message");
|
|
24
|
-
node_assert_1.default.strictEqual(error.code, "test_code");
|
|
25
|
-
node_assert_1.default.strictEqual(error.path, "");
|
|
26
|
-
node_assert_1.default.strictEqual(error.severity, "error");
|
|
27
|
-
node_assert_1.default.strictEqual(error.details, undefined);
|
|
28
|
-
});
|
|
29
|
-
(0, node_test_1.it)("should serialize to JSON correctly", () => {
|
|
30
|
-
const error = new errors_1.UniSpecValidationError("Test message", "test_code", "/path", "warning", { test: "value" });
|
|
31
|
-
const json = error.toJSON();
|
|
32
|
-
node_assert_1.default.strictEqual(json.name, "UniSpecValidationError");
|
|
33
|
-
node_assert_1.default.strictEqual(json.message, "Test message");
|
|
34
|
-
node_assert_1.default.strictEqual(json.code, "test_code");
|
|
35
|
-
node_assert_1.default.strictEqual(json.path, "/path");
|
|
36
|
-
node_assert_1.default.strictEqual(json.severity, "warning");
|
|
37
|
-
node_assert_1.default.deepStrictEqual(json.details, { test: "value" });
|
|
38
|
-
node_assert_1.default.ok(json.stack);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
(0, node_test_1.describe)("Specific error types", () => {
|
|
42
|
-
(0, node_test_1.it)("should create UniSpecConfigError", () => {
|
|
43
|
-
const error = new errors_1.UniSpecConfigError("Configuration error", "/config/path", { configKey: "test" });
|
|
44
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecConfigError");
|
|
45
|
-
node_assert_1.default.strictEqual(error.code, "config_error");
|
|
46
|
-
node_assert_1.default.strictEqual(error.message, "Configuration error");
|
|
47
|
-
node_assert_1.default.strictEqual(error.path, "/config/path");
|
|
48
|
-
node_assert_1.default.deepStrictEqual(error.details, { configKey: "test" });
|
|
49
|
-
});
|
|
50
|
-
(0, node_test_1.it)("should create UniSpecLoaderError", () => {
|
|
51
|
-
const error = new errors_1.UniSpecLoaderError("Loader error", "/loader/path", {
|
|
52
|
-
fileType: "yaml",
|
|
53
|
-
});
|
|
54
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecLoaderError");
|
|
55
|
-
node_assert_1.default.strictEqual(error.code, "loader_error");
|
|
56
|
-
node_assert_1.default.strictEqual(error.message, "Loader error");
|
|
57
|
-
node_assert_1.default.strictEqual(error.path, "/loader/path");
|
|
58
|
-
node_assert_1.default.deepStrictEqual(error.details, { fileType: "yaml" });
|
|
59
|
-
});
|
|
60
|
-
(0, node_test_1.it)("should create UniSpecReferenceError", () => {
|
|
61
|
-
const error = new errors_1.UniSpecReferenceError("Reference error", "/ref/path", {
|
|
62
|
-
reference: "invalid-ref",
|
|
63
|
-
});
|
|
64
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecReferenceError");
|
|
65
|
-
node_assert_1.default.strictEqual(error.code, "reference_error");
|
|
66
|
-
node_assert_1.default.strictEqual(error.message, "Reference error");
|
|
67
|
-
node_assert_1.default.strictEqual(error.path, "/ref/path");
|
|
68
|
-
node_assert_1.default.deepStrictEqual(error.details, { reference: "invalid-ref" });
|
|
69
|
-
});
|
|
70
|
-
(0, node_test_1.it)("should create UniSpecSchemaError", () => {
|
|
71
|
-
const error = new errors_1.UniSpecSchemaError("Schema validation error", "/schema/path", { schemaPath: "service.name" });
|
|
72
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecSchemaError");
|
|
73
|
-
node_assert_1.default.strictEqual(error.code, "schema_error");
|
|
74
|
-
node_assert_1.default.strictEqual(error.message, "Schema validation error");
|
|
75
|
-
node_assert_1.default.strictEqual(error.path, "/schema/path");
|
|
76
|
-
node_assert_1.default.deepStrictEqual(error.details, { schemaPath: "service.name" });
|
|
77
|
-
});
|
|
78
|
-
(0, node_test_1.it)("should create UniSpecSecurityError", () => {
|
|
79
|
-
const error = new errors_1.UniSpecSecurityError("Security violation", "/security/path", { violation: "insecure_protocol" });
|
|
80
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecSecurityError");
|
|
81
|
-
node_assert_1.default.strictEqual(error.code, "security_error");
|
|
82
|
-
node_assert_1.default.strictEqual(error.message, "Security violation");
|
|
83
|
-
node_assert_1.default.strictEqual(error.path, "/security/path");
|
|
84
|
-
node_assert_1.default.deepStrictEqual(error.details, { violation: "insecure_protocol" });
|
|
85
|
-
});
|
|
86
|
-
(0, node_test_1.it)("should create UniSpecSemanticError", () => {
|
|
87
|
-
const error = new errors_1.UniSpecSemanticError("Semantic error", "/semantic/path", { semanticIssue: "duplicate_name" });
|
|
88
|
-
node_assert_1.default.strictEqual(error.name, "UniSpecSemanticError");
|
|
89
|
-
node_assert_1.default.strictEqual(error.code, "semantic_error");
|
|
90
|
-
node_assert_1.default.strictEqual(error.message, "Semantic error");
|
|
91
|
-
node_assert_1.default.strictEqual(error.path, "/semantic/path");
|
|
92
|
-
node_assert_1.default.deepStrictEqual(error.details, {
|
|
93
|
-
semanticIssue: "duplicate_name",
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
(0, node_test_1.describe)("ErrorFactory", () => {
|
|
98
|
-
(0, node_test_1.it)("should create schema error via factory", () => {
|
|
99
|
-
const error = errors_1.ErrorFactory.createSchemaError("Schema error", "/path", {
|
|
100
|
-
detail: "test",
|
|
101
|
-
});
|
|
102
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSchemaError);
|
|
103
|
-
node_assert_1.default.strictEqual(error.message, "Schema error");
|
|
104
|
-
node_assert_1.default.strictEqual(error.path, "/path");
|
|
105
|
-
node_assert_1.default.deepStrictEqual(error.details, { detail: "test" });
|
|
106
|
-
});
|
|
107
|
-
(0, node_test_1.it)("should create semantic error via factory", () => {
|
|
108
|
-
const error = errors_1.ErrorFactory.createSemanticError("Semantic error", "/path", { detail: "test" });
|
|
109
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSemanticError);
|
|
110
|
-
node_assert_1.default.strictEqual(error.message, "Semantic error");
|
|
111
|
-
node_assert_1.default.strictEqual(error.path, "/path");
|
|
112
|
-
});
|
|
113
|
-
(0, node_test_1.it)("should create reference error via factory", () => {
|
|
114
|
-
const error = errors_1.ErrorFactory.createReferenceError("Reference error", "/path", { detail: "test" });
|
|
115
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecReferenceError);
|
|
116
|
-
node_assert_1.default.strictEqual(error.message, "Reference error");
|
|
117
|
-
node_assert_1.default.strictEqual(error.path, "/path");
|
|
118
|
-
});
|
|
119
|
-
(0, node_test_1.it)("should create config error via factory", () => {
|
|
120
|
-
const error = errors_1.ErrorFactory.createConfigError("Config error", "/path", {
|
|
121
|
-
detail: "test",
|
|
122
|
-
});
|
|
123
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecConfigError);
|
|
124
|
-
node_assert_1.default.strictEqual(error.message, "Config error");
|
|
125
|
-
node_assert_1.default.strictEqual(error.path, "/path");
|
|
126
|
-
});
|
|
127
|
-
(0, node_test_1.it)("should create security error via factory", () => {
|
|
128
|
-
const error = errors_1.ErrorFactory.createSecurityError("Security error", "/path", { detail: "test" });
|
|
129
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSecurityError);
|
|
130
|
-
node_assert_1.default.strictEqual(error.message, "Security error");
|
|
131
|
-
node_assert_1.default.strictEqual(error.path, "/path");
|
|
132
|
-
});
|
|
133
|
-
(0, node_test_1.it)("should create loader error via factory", () => {
|
|
134
|
-
const error = errors_1.ErrorFactory.createLoaderError("Loader error", "/path", {
|
|
135
|
-
detail: "test",
|
|
136
|
-
});
|
|
137
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecLoaderError);
|
|
138
|
-
node_assert_1.default.strictEqual(error.message, "Loader error");
|
|
139
|
-
node_assert_1.default.strictEqual(error.path, "/path");
|
|
140
|
-
});
|
|
141
|
-
(0, node_test_1.describe)("fromError method", () => {
|
|
142
|
-
(0, node_test_1.it)("should return UniSpecValidationError as-is", () => {
|
|
143
|
-
const originalError = new errors_1.UniSpecValidationError("Original error", "original_code");
|
|
144
|
-
const converted = errors_1.ErrorFactory.fromError(originalError);
|
|
145
|
-
node_assert_1.default.strictEqual(converted, originalError);
|
|
146
|
-
});
|
|
147
|
-
(0, node_test_1.it)("should convert Error to UniSpecValidationError", () => {
|
|
148
|
-
const originalError = new Error("Original error");
|
|
149
|
-
const converted = errors_1.ErrorFactory.fromError(originalError);
|
|
150
|
-
node_assert_1.default.ok(converted instanceof errors_1.UniSpecValidationError);
|
|
151
|
-
node_assert_1.default.strictEqual(converted.message, "Original error");
|
|
152
|
-
node_assert_1.default.strictEqual(converted.code, "validation_error");
|
|
153
|
-
node_assert_1.default.deepStrictEqual(converted.details, {
|
|
154
|
-
originalError: "Error",
|
|
155
|
-
stack: originalError.stack,
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
(0, node_test_1.it)("should convert string to UniSpecValidationError", () => {
|
|
159
|
-
const originalError = "String error";
|
|
160
|
-
const converted = errors_1.ErrorFactory.fromError(originalError);
|
|
161
|
-
node_assert_1.default.ok(converted instanceof errors_1.UniSpecValidationError);
|
|
162
|
-
node_assert_1.default.strictEqual(converted.message, "String error");
|
|
163
|
-
node_assert_1.default.strictEqual(converted.code, "validation_error");
|
|
164
|
-
});
|
|
165
|
-
(0, node_test_1.it)("should convert unknown object to UniSpecValidationError", () => {
|
|
166
|
-
const originalError = { some: "object" };
|
|
167
|
-
const converted = errors_1.ErrorFactory.fromError(originalError);
|
|
168
|
-
node_assert_1.default.ok(converted instanceof errors_1.UniSpecValidationError);
|
|
169
|
-
node_assert_1.default.strictEqual(converted.message, "Unknown validation error: [object Object]");
|
|
170
|
-
node_assert_1.default.strictEqual(converted.code, "validation_error");
|
|
171
|
-
node_assert_1.default.deepStrictEqual(converted.details, { originalError });
|
|
172
|
-
});
|
|
173
|
-
(0, node_test_1.it)("should use custom default code", () => {
|
|
174
|
-
const originalError = new Error("Custom error");
|
|
175
|
-
const converted = errors_1.ErrorFactory.fromError(originalError, "custom_code");
|
|
176
|
-
node_assert_1.default.strictEqual(converted.code, "custom_code");
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
(0, node_test_1.describe)("Error handling with schema examples", () => {
|
|
181
|
-
(0, node_test_1.it)("should handle valid examples without errors", () => {
|
|
182
|
-
const validDoc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "rest-simple.json"));
|
|
183
|
-
// This should not throw - valid document should load successfully
|
|
184
|
-
node_assert_1.default.ok(validDoc);
|
|
185
|
-
node_assert_1.default.ok(validDoc.unispecVersion);
|
|
186
|
-
node_assert_1.default.ok(validDoc.service);
|
|
187
|
-
});
|
|
188
|
-
(0, node_test_1.it)("should create appropriate errors for invalid examples", () => {
|
|
189
|
-
const invalidDoc = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "spec", "missing-service-name.json"));
|
|
190
|
-
// Invalid document should be missing required fields
|
|
191
|
-
node_assert_1.default.ok(invalidDoc);
|
|
192
|
-
node_assert_1.default.ok(!invalidDoc.service?.name);
|
|
193
|
-
// Test creating appropriate error for this case
|
|
194
|
-
const error = errors_1.ErrorFactory.createSchemaError("Missing required service name", "service.name", { required: true, found: undefined });
|
|
195
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSchemaError);
|
|
196
|
-
node_assert_1.default.strictEqual(error.path, "service.name");
|
|
197
|
-
node_assert_1.default.deepStrictEqual(error.details, {
|
|
198
|
-
required: true,
|
|
199
|
-
found: undefined,
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
(0, node_test_1.it)("should handle missing version errors", () => {
|
|
203
|
-
const invalidDoc = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "spec", "missing-unispec-version.json"));
|
|
204
|
-
node_assert_1.default.ok(invalidDoc);
|
|
205
|
-
node_assert_1.default.ok(!invalidDoc.unispecVersion);
|
|
206
|
-
const error = errors_1.ErrorFactory.createSchemaError("Missing required unispecVersion", "unispecVersion", { required: true, found: undefined });
|
|
207
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSchemaError);
|
|
208
|
-
node_assert_1.default.strictEqual(error.path, "unispecVersion");
|
|
209
|
-
});
|
|
210
|
-
(0, node_test_1.it)("should handle invalid REST method errors", () => {
|
|
211
|
-
const invalidDoc = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "spec", "invalid-rest-method.json"));
|
|
212
|
-
node_assert_1.default.ok(invalidDoc);
|
|
213
|
-
// Extract method value safely for testing
|
|
214
|
-
const doc = invalidDoc;
|
|
215
|
-
const service = doc.service;
|
|
216
|
-
const protocols = service?.protocols;
|
|
217
|
-
const rest = protocols?.rest;
|
|
218
|
-
const routes = rest?.routes;
|
|
219
|
-
const firstRoute = routes?.[0];
|
|
220
|
-
const error = errors_1.ErrorFactory.createSemanticError("Invalid HTTP method", "service.protocols.rest.routes[0].method", { method: firstRoute?.method });
|
|
221
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSemanticError);
|
|
222
|
-
node_assert_1.default.strictEqual(error.path, "service.protocols.rest.routes[0].method");
|
|
223
|
-
});
|
|
224
|
-
(0, node_test_1.it)("should handle config errors", () => {
|
|
225
|
-
const invalidConfig = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "config", "missing-version.json"));
|
|
226
|
-
node_assert_1.default.ok(invalidConfig);
|
|
227
|
-
node_assert_1.default.ok(!invalidConfig.version);
|
|
228
|
-
const error = errors_1.ErrorFactory.createConfigError("Missing required version in config", "version", { required: true });
|
|
229
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecConfigError);
|
|
230
|
-
node_assert_1.default.strictEqual(error.path, "version");
|
|
231
|
-
});
|
|
232
|
-
(0, node_test_1.it)("should handle loader errors for malformed examples", () => {
|
|
233
|
-
// Simulate a loader error
|
|
234
|
-
const error = errors_1.ErrorFactory.createLoaderError("Failed to parse YAML file", "/path/to/file.yaml", { line: 5, column: 10, reason: "invalid indentation" });
|
|
235
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecLoaderError);
|
|
236
|
-
node_assert_1.default.strictEqual(error.path, "/path/to/file.yaml");
|
|
237
|
-
node_assert_1.default.deepStrictEqual(error.details, {
|
|
238
|
-
line: 5,
|
|
239
|
-
column: 10,
|
|
240
|
-
reason: "invalid indentation",
|
|
241
|
-
});
|
|
242
|
-
});
|
|
243
|
-
(0, node_test_1.it)("should handle security errors", () => {
|
|
244
|
-
const error = errors_1.ErrorFactory.createSecurityError("Insecure protocol detected", "service.protocols.rest.routes[0].scheme", { protocol: "http", recommended: "https" });
|
|
245
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecSecurityError);
|
|
246
|
-
node_assert_1.default.strictEqual(error.path, "service.protocols.rest.routes[0].scheme");
|
|
247
|
-
node_assert_1.default.deepStrictEqual(error.details, {
|
|
248
|
-
protocol: "http",
|
|
249
|
-
recommended: "https",
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
(0, node_test_1.it)("should handle reference errors", () => {
|
|
253
|
-
const error = errors_1.ErrorFactory.createReferenceError("Undefined type reference", "service.protocols.rest.routes[0].responses[200].schema", { reference: "NonExistentType", availableTypes: ["User", "Post"] });
|
|
254
|
-
node_assert_1.default.ok(error instanceof errors_1.UniSpecReferenceError);
|
|
255
|
-
node_assert_1.default.strictEqual(error.path, "service.protocols.rest.routes[0].responses[200].schema");
|
|
256
|
-
node_assert_1.default.deepStrictEqual(error.details, {
|
|
257
|
-
reference: "NonExistentType",
|
|
258
|
-
availableTypes: ["User", "Post"],
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
(0, node_test_1.describe)("Error edge cases", () => {
|
|
263
|
-
(0, node_test_1.it)("should handle errors with empty paths", () => {
|
|
264
|
-
const error = new errors_1.UniSpecValidationError("Test", "test");
|
|
265
|
-
node_assert_1.default.strictEqual(error.path, "");
|
|
266
|
-
});
|
|
267
|
-
(0, node_test_1.it)("should handle errors with no details", () => {
|
|
268
|
-
const error = new errors_1.UniSpecValidationError("Test", "test", "/path");
|
|
269
|
-
node_assert_1.default.strictEqual(error.details, undefined);
|
|
270
|
-
});
|
|
271
|
-
(0, node_test_1.it)("should handle warning severity", () => {
|
|
272
|
-
const error = new errors_1.UniSpecValidationError("Warning message", "warning_code", "/path", "warning");
|
|
273
|
-
node_assert_1.default.strictEqual(error.severity, "warning");
|
|
274
|
-
});
|
|
275
|
-
(0, node_test_1.it)("should handle info severity", () => {
|
|
276
|
-
const error = new errors_1.UniSpecValidationError("Info message", "info_code", "/path", "info");
|
|
277
|
-
node_assert_1.default.strictEqual(error.severity, "info");
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
});
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadInvalidExample = exports.loadExample = exports.getExamplePath = void 0;
|
|
4
|
-
const utils_1 = require("../../tests/utils.js");
|
|
5
|
-
Object.defineProperty(exports, "getExamplePath", { enumerable: true, get: function () { return utils_1.getExamplePath; } });
|
|
6
|
-
Object.defineProperty(exports, "loadExample", { enumerable: true, get: function () { return utils_1.loadExample; } });
|
|
7
|
-
Object.defineProperty(exports, "loadInvalidExample", { enumerable: true, get: function () { return utils_1.loadInvalidExample; } });
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
-
const node_test_1 = require("node:test");
|
|
9
|
-
const loader_1 = require("../../src/loader/index.js");
|
|
10
|
-
const utils_1 = require("../diff/utils.js");
|
|
11
|
-
(0, node_test_1.describe)("loader integration tests", () => {
|
|
12
|
-
(0, node_test_1.describe)("real examples from @unispechq/unispec-schema", () => {
|
|
13
|
-
(0, node_test_1.it)("should load all valid spec examples", async () => {
|
|
14
|
-
const validExamples = [
|
|
15
|
-
"valid/spec/rest-simple.json",
|
|
16
|
-
"valid/spec/graphql-simple.json",
|
|
17
|
-
"valid/spec/websocket-simple.json",
|
|
18
|
-
"valid/spec/mixed-complete.json",
|
|
19
|
-
];
|
|
20
|
-
for (const example of validExamples) {
|
|
21
|
-
const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
|
|
22
|
-
const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
|
|
23
|
-
const result = await (0, loader_1.loadUniSpec)(content);
|
|
24
|
-
// Basic structure validation
|
|
25
|
-
node_assert_1.default.ok(result.unispecVersion, `Missing unispecVersion in ${example}`);
|
|
26
|
-
node_assert_1.default.ok(result.service, `Missing service in ${example}`);
|
|
27
|
-
node_assert_1.default.ok(result.service.name, `Missing service.name in ${example}`);
|
|
28
|
-
node_assert_1.default.ok(result.service.protocols, `Missing service.protocols in ${example}`);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
(0, node_test_1.it)("should parse invalid examples but not validate them", async () => {
|
|
32
|
-
const invalidExamples = [
|
|
33
|
-
"invalid/spec/missing-service-name.json",
|
|
34
|
-
"invalid/spec/missing-unispec-version.json",
|
|
35
|
-
"invalid/spec/invalid-identifier.json",
|
|
36
|
-
"invalid/spec/invalid-rest-method.json",
|
|
37
|
-
"invalid/spec/graphql-missing-arg-type.json",
|
|
38
|
-
"invalid/spec/graphql-missing-name.json",
|
|
39
|
-
];
|
|
40
|
-
for (const example of invalidExamples) {
|
|
41
|
-
const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
|
|
42
|
-
const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
|
|
43
|
-
// Should parse successfully (loader only handles parsing)
|
|
44
|
-
const result = await (0, loader_1.loadUniSpec)(content);
|
|
45
|
-
// Should be an object
|
|
46
|
-
node_assert_1.default.ok(typeof result === "object", `Failed to parse ${example}`);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
(0, node_test_1.it)("should handle config examples", async () => {
|
|
50
|
-
const configExamples = [
|
|
51
|
-
"valid/config/complete-enterprise.json",
|
|
52
|
-
"valid/config/registry-based.json",
|
|
53
|
-
"valid/config/simple-multi-service.json",
|
|
54
|
-
];
|
|
55
|
-
for (const example of configExamples) {
|
|
56
|
-
const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
|
|
57
|
-
const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
|
|
58
|
-
const result = await (0, loader_1.loadUniSpec)(content);
|
|
59
|
-
// Config examples should have version
|
|
60
|
-
node_assert_1.default.ok(result.version, `Missing version in config ${example}`);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
(0, node_test_1.it)("should handle invalid config examples", async () => {
|
|
64
|
-
const invalidConfigExamples = [
|
|
65
|
-
"invalid/config/empty-services-array.json",
|
|
66
|
-
"invalid/config/invalid-spec-reference.json",
|
|
67
|
-
"invalid/config/missing-service-name.json",
|
|
68
|
-
"invalid/config/missing-services.json",
|
|
69
|
-
"invalid/config/missing-version.json",
|
|
70
|
-
];
|
|
71
|
-
for (const example of invalidConfigExamples) {
|
|
72
|
-
const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
|
|
73
|
-
const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
|
|
74
|
-
// Should parse successfully
|
|
75
|
-
const result = await (0, loader_1.loadUniSpec)(content);
|
|
76
|
-
node_assert_1.default.ok(typeof result === "object", `Failed to parse ${example}`);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
(0, node_test_1.describe)("security validation with real examples", () => {
|
|
81
|
-
(0, node_test_1.it)("should validate security of complex examples", () => {
|
|
82
|
-
const complexExamplePath = (0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json");
|
|
83
|
-
const content = node_fs_1.default.readFileSync(complexExamplePath, "utf-8");
|
|
84
|
-
const parsed = JSON.parse(content);
|
|
85
|
-
// Should pass default security validation
|
|
86
|
-
(0, loader_1.validateDocumentSecurity)(parsed, {
|
|
87
|
-
maxDepth: 100,
|
|
88
|
-
maxKeys: 10000,
|
|
89
|
-
allowedTags: ["str", "int", "float", "bool", "null", "seq", "map"],
|
|
90
|
-
maxDocumentSize: 10 * 1024 * 1024,
|
|
91
|
-
strictYamlTags: false,
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
(0, node_test_1.it)("should detect depth violations in nested examples", () => {
|
|
95
|
-
// Create a deeply nested version of a valid example
|
|
96
|
-
const deepExample = {
|
|
97
|
-
unispecVersion: "1.0.0",
|
|
98
|
-
service: {
|
|
99
|
-
name: "test",
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
let current = deepExample;
|
|
103
|
-
for (let i = 0; i < 105; i++) {
|
|
104
|
-
current.nested = {};
|
|
105
|
-
current = current.nested;
|
|
106
|
-
}
|
|
107
|
-
try {
|
|
108
|
-
(0, loader_1.validateDocumentSecurity)(deepExample, {
|
|
109
|
-
maxDepth: 100,
|
|
110
|
-
maxKeys: 10000,
|
|
111
|
-
allowedTags: ["str", "int", "float", "bool", "null", "seq", "map"],
|
|
112
|
-
maxDocumentSize: 10 * 1024 * 1024,
|
|
113
|
-
strictYamlTags: false,
|
|
114
|
-
});
|
|
115
|
-
node_assert_1.default.fail("Should have thrown depth error");
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
node_assert_1.default.ok(error instanceof Error);
|
|
119
|
-
node_assert_1.default.ok(error.message.includes("depth"));
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
(0, node_test_1.describe)("yaml parsing edge cases", () => {
|
|
124
|
-
(0, node_test_1.it)("should handle YAML with special characters", async () => {
|
|
125
|
-
const yamlWithSpecialChars = `
|
|
126
|
-
unispecVersion: "1.0.0"
|
|
127
|
-
service:
|
|
128
|
-
name: "测试服务"
|
|
129
|
-
description: "Service with emojis 🚀 and special chars"
|
|
130
|
-
protocols:
|
|
131
|
-
rest:
|
|
132
|
-
routes:
|
|
133
|
-
- name: "getUser"
|
|
134
|
-
path: "/users/{id}"
|
|
135
|
-
method: "GET"
|
|
136
|
-
responses:
|
|
137
|
-
"200":
|
|
138
|
-
description: "Success ✅"
|
|
139
|
-
`;
|
|
140
|
-
const result = await (0, loader_1.loadUniSpec)(yamlWithSpecialChars);
|
|
141
|
-
node_assert_1.default.strictEqual(result.service.name, "测试服务");
|
|
142
|
-
node_assert_1.default.ok(result.service.description?.includes("🚀"));
|
|
143
|
-
});
|
|
144
|
-
(0, node_test_1.it)("should handle YAML with anchors and references", async () => {
|
|
145
|
-
const yamlWithAnchors = `
|
|
146
|
-
unispecVersion: "1.0.0"
|
|
147
|
-
service:
|
|
148
|
-
name: "test-service"
|
|
149
|
-
protocols:
|
|
150
|
-
rest:
|
|
151
|
-
routes:
|
|
152
|
-
- name: "route1"
|
|
153
|
-
method: "GET"
|
|
154
|
-
path: "/path1"
|
|
155
|
-
responses: &common-responses
|
|
156
|
-
"200":
|
|
157
|
-
description: "Success"
|
|
158
|
-
- name: "route2"
|
|
159
|
-
method: "POST"
|
|
160
|
-
path: "/path2"
|
|
161
|
-
responses: *common-responses
|
|
162
|
-
`;
|
|
163
|
-
const result = await (0, loader_1.loadUniSpec)(yamlWithAnchors);
|
|
164
|
-
node_assert_1.default.strictEqual(result.service.protocols?.rest?.routes?.length, 2);
|
|
165
|
-
});
|
|
166
|
-
(0, node_test_1.it)("should reject YAML with security issues", async () => {
|
|
167
|
-
const yamlWithSecurityIssue = `
|
|
168
|
-
unispecVersion: "1.0.0"
|
|
169
|
-
service:
|
|
170
|
-
name: "test"
|
|
171
|
-
protocols: !!js/function >
|
|
172
|
-
function() { return require('fs').readFileSync('/etc/passwd') }
|
|
173
|
-
`;
|
|
174
|
-
try {
|
|
175
|
-
await (0, loader_1.loadUniSpec)(yamlWithSecurityIssue);
|
|
176
|
-
// If it doesn't throw, that's actually fine - the FAILSAFE_SCHEMA should block this
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
// Should either parse safely or throw a security-related error
|
|
180
|
-
node_assert_1.default.ok(error instanceof Error);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
(0, node_test_1.describe)("performance with large examples", () => {
|
|
185
|
-
(0, node_test_1.it)("should handle large documents efficiently", async () => {
|
|
186
|
-
// Create a large UniSpec document
|
|
187
|
-
const largeDoc = {
|
|
188
|
-
unispecVersion: "1.0.0",
|
|
189
|
-
service: {
|
|
190
|
-
name: "large-service",
|
|
191
|
-
protocols: {
|
|
192
|
-
rest: {
|
|
193
|
-
routes: [],
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
},
|
|
197
|
-
};
|
|
198
|
-
// Add many routes
|
|
199
|
-
for (let i = 0; i < 1000; i++) {
|
|
200
|
-
largeDoc.service.protocols.rest.routes.push({
|
|
201
|
-
name: `route${i}`,
|
|
202
|
-
path: `/route${i}`,
|
|
203
|
-
method: "GET",
|
|
204
|
-
responses: {
|
|
205
|
-
"200": { description: `Response ${i}` },
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
const startTime = Date.now();
|
|
210
|
-
const result = await (0, loader_1.loadUniSpec)(largeDoc);
|
|
211
|
-
const endTime = Date.now();
|
|
212
|
-
node_assert_1.default.strictEqual(result.service.protocols?.rest?.routes?.length, 1000);
|
|
213
|
-
node_assert_1.default.ok(endTime - startTime < 1000, "Loading should complete within 1 second");
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
});
|