{
  "name": "amazon-route-53-dns-zone-file",
  "version": "0.1.0",
  "description": "Makes DNS Zone File easy. Parses and validates BIND zone files and can be extended for custom features. Functionality is modular. Features are made open for extension and closed for runtime mutation. Written in TypeScript.",
  "main": "dist/cjs/2015/index.js",
  "typings": "dist/index.d.ts",
  "target:rollup:iife": "dist/rollup/index.iife.js",
  "target:rollup:es": "dist/rollup/index.es.js",
  "target:rollup:cjs": "dist/rollup/index.cjs.js",
  "files": [
    "dist/**",
    "src/**",
    "__tests__/**",
    "example/**"
  ],
  "scripts": {
    "prepublishOnly": "npm run build",
    "release": "npm run test && npm run build",
    "start": "node dist/index.js",
    "build": "rm -rf dist && npm run build:targets && npm run build:main && npm run build:rollup",
    "build:rollup": "NODE_ENV=production rollup -c rollup.config.js",
    "build:targets": "npm run build:es:2020 && npm run build:es:2018 && npm run build:es:2015 && npm run build:cjs:2020 && npm run build:cjs:2018 && npm run build:cjs:2015",
    "build:main": "tsc --outDir dist --project tsconfig.build.json --declaration --declarationMap --extendedDiagnostics --inlineSourceMap --inlineSources --sourceMap false",
    "build:es:2020": "tsc --project tsconfig.build.json --target es2020 --module es2020 --outDir ./dist/es/2020",
    "build:es:2018": "tsc --project tsconfig.build.json --target es2018 --module es2020 --outDir ./dist/es/2018",
    "build:es:2015": "tsc --project tsconfig.build.json --target es2015 --module es2020 --outDir ./dist/es/2015",
    "build:cjs:2020": "tsc --project tsconfig.build.json --target es2020 --module commonjs --outDir ./dist/cjs/2020",
    "build:cjs:2018": "tsc --project tsconfig.build.json --target es2018 --module commonjs --outDir ./dist/cjs/2018",
    "build:cjs:2015": "tsc --project tsconfig.build.json --target es2015 --module commonjs --outDir ./dist/cjs/2015",
    "dev:strict": "STRICT_TYPING=true npx ts-node-dev --n src/index.ts",
    "dev:watch": "NODE_ENV=development ts-node-dev --respawn --transpileOnly src/index.ts",
    "dev": "NODE_ENV=development ts-node src/index.ts",
    "lint": "eslint './**/*.{js,ts,tsx}' --ignore-path .gitignore --quiet",
    "lint:fix": "npm run lint -- --fix",
    "prettier:write": "prettier --write './**/*.{js,ts,tsx,scss}' --ignore-path .gitignore",
    "prettier:check": "prettier --check './**/*.{js,ts,tsx,scss}' --ignore-path .gitignore",
    "fix": "npm run prettier:write && npm run lint:fix",
    "test": "npm run test:ci",
    "test:ci": "CI=true jest --coverage=true",
    "test:quick": "jest --coverage=false",
    "test:watch": "jest --coverage=false --watch",
    "clean": "npm run clean:dependencies && npm run clean:artifacts",
    "clean:dependencies": "rm -rf dist && rm -rf build",
    "clean:artifacts": "rm -rf dist && rm -rf build"
  },
  "devDependencies": {
    "@commitlint/cli": "^12.0.0",
    "@commitlint/config-conventional": "^12.0.1",
    "@types/eslint": "7.2.6",
    "@types/node": "14.14.31",
    "@types/jest": "26.0.20",
    "@typescript-eslint/eslint-plugin": "4.16.1",
    "@typescript-eslint/parser": "4.15.1",
    "eslint": "7.20.0",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-prettier": "3.3.1",
    "husky": "^5.1.3",
    "jest": "26.6.3",
    "jest-cli": "26.6.3",
    "jest-runner-eslint": "0.10.0",
    "jest-runner-tsc": "1.6.0",
    "lint-staged": "^10.5.4",
    "prettier": "2.2.1",
    "ts-jest": "26.5.2",
    "ts-node": "9.1.1",
    "ts-node-dev": "1.1.6",
    "typescript": "4.2.3",
    "rollup": "2.40.0",
    "@rollup/plugin-replace": "2.4.1",
    "@rollup/plugin-typescript": "8.2.0",
    "rollup-plugin-terser": "7.0.2",
    "tslib": "2.1.0"
  },
  "license": "Apache-2.0",
  "homepage": "https://github.com/aws/amazon-route-53-dns-zone-file",
  "author": {
    "name": "Amazon Web Services",
    "email": "",
    "url": "https://aws.amazon.com/"
  },
  "contributors": [
    "James Wiens <jwiens@amazon.com>"
  ],
  "repository": {
    "type": "git",
    "url": "git@github.com:aws/amazon-route-53-dns-zone-file.git"
  },
  "keywords": [
    "aws",
    "amazon",
    "route53",
    "route 53",
    "export zone file",
    "dns zone file",
    "validate zone file",
    "extend zone file",
    "custom zone file",
    "zonefile",
    "parse zonefile",
    "bind format",
    "import zone file",
    "zone file",
    "typescript",
    "js"
  ],
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
  "commitlint": {
    "extends": [
      "@commitlint/config-conventional"
    ]
  },
  "lint-staged": {
    "./**/*.{js,ts,tsx}": [
      "npm run lint"
    ],
    "./**/*.{js,ts,tsx,scss}": [
      "npm run prettier:write",
      "git add"
    ]
  },
  "prettier": {
    "jsxBracketSameLine": true,
    "proseWrap": "preserve",
    "printWidth": 80,
    "semi": true,
    "tabWidth": 2,
    "singleQuote": true,
    "useTabs": false,
    "parser": "typescript",
    "trailingComma": "es5",
    "arrowParens": "avoid"
  },
  "jest:projects": [
    {
      "displayName": "unit tests",
      "globals": {
        "ts-jest": {
          "tsconfig": "tsconfig.test.json",
          "isolatedModules": true
        }
      }
    },
    {
      "displayName": "lint",
      "runner": "jest-runner-eslint",
      "testMatch": [
        "<rootDir>/**/*.{js,jsx,ts,tsx}"
      ],
      "watchPlugins": [
        "jest-runner-eslint/watch-fix"
      ]
    },
    {
      "displayName": "tsc",
      "runner": "jest-runner-tsc",
      "testMatch": [
        "<rootDir>/**/*.{js,jsx,ts,tsx}"
      ],
      "globals": {
        "ts-jest": {
          "tsconfig": "tsconfig.test.json"
        }
      }
    }
  ],
  "jest": {
    "preset": "ts-jest",
    "globals": {
      "ts-jest": {
        "tsconfig": "tsconfig.test.json",
        "isolatedModules": true
      }
    },
    "clearMocks": true,
    "collectCoverage": true,
    "coverageReporters": [
      "text",
      "cobertura",
      "json",
      "clover",
      "lcov"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 95
      }
    },
    "collectCoverageFrom": [
      "src/**/*.{js,ts,tsx}",
      "!src/**/*.d.ts"
    ],
    "coverageDirectory": "<rootDir>/dist/coverage",
    "moduleFileExtensions": [
      "js",
      "json",
      "tsx",
      "ts"
    ],
    "transform": {
      "^.+\\.(ts|tsx|js)?$": "ts-jest"
    },
    "testMatch": [
      "<rootDir>/__tests__/**/*.test.(ts|tsx)"
    ],
    "verbose": true,
    "reporters": [
      "default"
    ]
  },
  "eslintConfig": {
    "plugins": [
      "import",
      "prettier",
      "@typescript-eslint"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
      "project": "./tsconfig.eslint.json",
      "ecmaVersion": 2021,
      "sourceType": "module",
      "ecmaFeatures": {
        "modules": true,
        "impliedStrict": true
      }
    },
    "extends": [
      "plugin:@typescript-eslint/recommended",
      "prettier/@typescript-eslint",
      "plugin:import/typescript"
    ],
    "rules": {
      "import/no-unresolved": "off",
      "eol-last": "error",
      "semi": [
        "error",
        "always"
      ],
      "no-multi-spaces": "off",
      "semi-spacing": "error",
      "key-spacing": [
        2
      ],
      "comma-dangle": [
        "error",
        {
          "arrays": "always-multiline",
          "objects": "always-multiline",
          "imports": "always-multiline",
          "exports": "always-multiline",
          "functions": "never"
        }
      ],
      "padded-blocks": [
        "error",
        "never"
      ],
      "keyword-spacing": [
        "error",
        {
          "before": true,
          "after": true
        }
      ],
      "max-len": [
        "warn",
        {
          "code": 80,
          "ignoreComments": true,
          "ignoreUrls": true,
          "ignoreTemplateLiterals": true,
          "ignoreRegExpLiterals": true,
          "ignoreStrings": true
        }
      ],
      "object-curly-spacing": [
        "error",
        "always"
      ],
      "array-bracket-spacing": [
        "error",
        "never"
      ],
      "quotes": [
        1,
        "single",
        {
          "allowTemplateLiterals": true,
          "avoidEscape": true
        }
      ],
      "indent": "off",
      "no-trailing-spaces": [
        "error",
        {
          "skipBlankLines": true
        }
      ],
      "space-infix-ops": "off",
      "space-before-blocks": [
        "error",
        {
          "functions": "always",
          "keywords": "always",
          "classes": "always"
        }
      ],
      "no-invalid-regexp": "warn",
      "no-fallthrough": "warn",
      "no-unreachable": "warn",
      "no-shadow-restricted-names": "error",
      "no-new-require": "error",
      "no-mixed-spaces-and-tabs": "error",
      "no-empty": "error",
      "no-undef": "off",
      "no-dupe-keys": "error",
      "no-empty-character-class": "error",
      "no-self-compare": "error",
      "no-plusplus": [
        "error",
        {
          "allowForLoopAfterthoughts": true
        }
      ],
      "valid-typeof": "error",
      "handle-callback-err": "error",
      "max-depth": [
        "warn",
        4
      ],
      "max-statements": [
        "error",
        50
      ],
      "function-paren-newline": "off",
      "brace-style": [
        "error",
        "1tbs",
        {
          "allowSingleLine": false
        }
      ],
      "curly": [
        "error",
        "all"
      ],
      "import/no-extraneous-dependencies": "off",
      "arrow-spacing": [
        "error",
        {
          "before": true,
          "after": true
        }
      ],
      "space-in-parens": [
        "error",
        "never"
      ],
      "space-before-function-paren": [
        "error",
        "never"
      ],
      "func-style": [
        "error",
        "declaration",
        {
          "allowArrowFunctions": true
        }
      ],
      "arrow-body-style": "off",
      "arrow-parens": [
        "error",
        "as-needed"
      ],
      "no-return-assign": [
        "error",
        "always"
      ],
      "func-names": "off",
      "template-tag-spacing": [
        "error",
        "never"
      ],
      "func-call-spacing": "error",
      "no-param-reassign": "warn",
      "prefer-rest-params": "warn",
      "import/extensions": "off",
      "import/no-named-as-default": "off",
      "import/export": "error",
      "no-continue": "off",
      "no-loop-func": "error",
      "camelcase": "error",
      "new-cap": "off",
      "id-length": [
        "warn",
        {
          "min": 2,
          "properties": "always",
          "exceptions": [
            "x",
            "i",
            "R",
            "_"
          ]
        }
      ],
      "id-denylist": [
        "error",
        "err",
        "e",
        "cb",
        "callback"
      ],
      "object-shorthand": [
        "warn",
        "always",
        {
          "avoidQuotes": true
        }
      ],
      "valid-jsdoc": [
        "off"
      ],
      "no-case-declarations": "off",
      "strict": "off",
      "no-underscore-dangle": "off",
      "no-mixed-requires": "off",
      "no-process-exit": "off",
      "no-warning-comments": "off",
      "no-confusing-arrow": "off",
      "require-jsdoc": "off",
      "class-methods-use-this": "off",
      "no-process-env": "off",
      "prefer-reflect": "off",
      "nonblock-statement-body-position": "off",
      "prefer-destructuring": "off",
      "prefer-template": "off",
      "global-require": "off",
      "no-invalid-this": "off",
      "prefer-const": "error",
      "no-undefined": "off",
      "prefer-spread": "off",
      "no-implicit-coercion": "off",
      "no-bitwise": "off",
      "no-use-before-define": "off",
      "import/no-duplicates": "off",
      "no-duplicate-imports": "off",
      "import/no-namespace": "off",
      "@typescript-eslint/no-namespace": "off",
      "@typescript-eslint/no-empty-function": "warn",
      "@typescript-eslint/no-unused-vars": "off",
      "@typescript-eslint/no-inferrable-types": "off",
      "@typescript-eslint/no-var-requires": "off",
      "@typescript-eslint/naming-convention": [
        "error",
        {
          "selector": "default",
          "filter": "(.*)namespace(.*)",
          "format": [
            "StrictPascalCase"
          ],
          "custom": {
            "regex": "[A-Z]Typings$",
            "match": false
          }
        },
        {
          "selector": "interface",
          "format": [
            "PascalCase"
          ],
          "custom": {
            "regex": "^I[A-Z]",
            "match": false
          }
        },
        {
          "selector": "typeAlias",
          "format": [
            "PascalCase"
          ]
        },
        {
          "selector": "variable",
          "format": [
            "strictCamelCase",
            "UPPER_CASE"
          ],
          "leadingUnderscore": "allow",
          "trailingUnderscore": "allow"
        },
        {
          "selector": [
            "enumMember"
          ],
          "format": [
            "PascalCase"
          ]
        },
        {
          "selector": [
            "enum"
          ],
          "format": [
            "PascalCase"
          ],
          "custom": {
            "regex": "[A-Z]Kind$",
            "match": false
          }
        },
        {
          "selector": [
            "function"
          ],
          "format": [
            "CamelCase"
          ],
          "leadingUnderscore": "allow"
        },
        {
          "selector": "variable",
          "types": [
            "boolean"
          ],
          "format": [
            "PascalCase"
          ],
          "prefix": [
            "is",
            "should",
            "has",
            "can",
            "did",
            "will"
          ]
        }
      ],
      "@typescript-eslint/ban-types": "warn",
      "@typescript-eslint/ban-ts-comment": "warn",
      "@typescript-eslint/prefer-as-const": "warn",
      "@typescript-eslint/no-explicit-any": "off",
      "@typescript-eslint/explicit-function-return-type": "off",
      "@typescript-eslint/no-parameter-properties": "off",
      "@typescript-eslint/prefer-interface": "off",
      "@typescript-eslint/explicit-member-accessibility": [
        "error",
        {
          "accessibility": "explicit",
          "overrides": {
            "accessors": "explicit",
            "constructors": "no-public",
            "methods": "explicit",
            "properties": "off",
            "parameterProperties": "explicit"
          }
        }
      ],
      "@typescript-eslint/no-shadow": [
        "error"
      ]
    },
    "env": {
      "es6": true,
      "node": true,
      "browser": true
    }
  }
}
