text: /**
   * @copyright Copyright 2019 Kevin Locke <kevin@kevinlocke.name>
   * @license MIT
   * @module "openapi-transformers/additional-properties-to-object.js"
   */
  
  import OpenApiTransformerBase from 'openapi-transformer-base';
  
  /**
   * Transformer to replace boolean additionalProperties with an object schema to
   * work around https://github.com/Azure/autorest/issues/3439.
   */
  export default class AdditionalPropertiesToObjectTransformer
    extends OpenApiTransformerBase {
    transformSchema(schema) {
      if (typeof schema !== 'object' || schema === null) {
        return schema;
      }
  
      const newSchema = super.transformSchema(schema);
      const { additionalProperties } = newSchema;
  
      if (typeof additionalProperties !== 'boolean') {
        return newSchema;
      }
  
      return {
        ...newSchema,
  
        // Use schema equivalents described by current spec author Henry Andrews
        // https://groups.google.com/d/msg/json-schema/Es0fEf3hj2Y/MxWmgercBAAJ
        additionalProperties: additionalProperties ? {} : { not: {} },
      };
    }
  }
  