{"version":3,"sources":["../src/ConfigKey.ts","../src/expressions/JSONSchema.ts","../src/Cfgu.ts","../src/expressions/Assertion.ts","../src/ConfigExpression.ts","../src/ConfigValue.ts","../src/ConfigSchema.ts","../src/ConfigSet.ts","../src/ConfigStore.ts","../src/stores/Noop.ts","../src/stores/InMemory.ts","../package.json","../src/ConfigCommand.ts","../src/commands/EvalCommand.ts","../src/commands/UpsertCommand.ts","../src/commands/ExportCommand.ts"],"names":["_","addFormats","Ajv","AggregateAjvError","chai","JestExtend","JestChaiExpect","Subset","JestAsymmetricMatchers","matchers","validator","z","assert","expect","should","acorn","walk","EvaluatedConfigOrigin","ConfigDiffAction"],"mappings":"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","file":"index.cjs","sourcesContent":["import _ from 'lodash';\n\nexport class ConfigKey {\n  static readonly pattern = '^[A-Za-z0-9_-]+$';\n  static readonly reserved = [\n    '_',\n    '-',\n    '$',\n    'this',\n    'Cfgu',\n    'ConfigStore',\n    'ConfigSet',\n    'ConfigKey',\n    'Key',\n    'ConfigValue',\n    'Value',\n    'ConfigSchema',\n    'Configu',\n  ];\n\n  private static readonly normalizedReserved = ConfigKey.reserved.map(ConfigKey.normalize);\n\n  static normalize(key: string) {\n    // flatCase - flatten and lowercase\n    return _.camelCase(key).toLowerCase();\n    // return _.chain(key).camelCase().kebabCase().value();\n  }\n\n  static validate({ key, errorPrefix = 'ConfigKey' }: { key: string; errorPrefix?: string }) {\n    try {\n      const isValid =\n        RegExp(ConfigKey.pattern).test(key) && !ConfigKey.normalizedReserved.includes(ConfigKey.normalize(key));\n      if (!isValid) {\n        throw new Error();\n      }\n    } catch (error) {\n      throw new Error(\n        `${errorPrefix} \"${key}\" must match ${ConfigKey.pattern} and not be one of ${ConfigKey.reserved.join(', ')}`,\n      );\n    }\n  }\n}\n","import _ from 'lodash';\nimport Ajv, { ErrorObject } from 'ajv';\nimport addFormats from 'ajv-formats';\n// https://npmtrends.com/@apideck/better-ajv-errors-vs-@readme/better-ajv-errors-vs-@segment/ajv-human-errors-vs-@stoplight/better-ajv-errors-vs-ajv-error-messages-vs-ajv-errors-vs-better-ajv-errors\nimport { AggregateAjvError } from '@segment/ajv-human-errors';\nimport type { FromSchema, JSONSchema as JSONSchemaObject } from 'json-schema-to-ts';\n\nexport { JSONSchemaObject, FromSchema };\n\nexport class JSONSchema {\n  private static ajv = addFormats(\n    new Ajv({ allErrors: true, verbose: true, allowUnionTypes: true, useDefaults: 'empty' }),\n  );\n\n  static validate(schema: JSONSchemaObject, data: unknown) {\n    const isValid = JSONSchema.ajv.validate(schema, data);\n    if (!isValid) {\n      const errors = new AggregateAjvError(JSONSchema.ajv.errors as ErrorObject[]);\n      throw new Error(errors.message);\n    }\n  }\n\n  static AnyPropertySchema = {\n    type: ['string', 'number', 'boolean', 'object', 'array'],\n    oneOf: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }, { type: 'object' }, { type: 'array' }],\n  } as const satisfies JSONSchemaObject;\n\n  static AnyArrayPropertySchema = {\n    type: 'array',\n    uniqueItems: true,\n    items: JSONSchema.AnyPropertySchema,\n  } as const satisfies JSONSchemaObject;\n\n  static createPropertyExclusiveSchema({\n    property,\n    exclusive,\n  }: {\n    property: string;\n    exclusive: string[];\n  }): JSONSchemaObject {\n    return {\n      if: {\n        required: [property],\n      },\n      then: {\n        properties: {\n          ..._.chain(exclusive)\n            .keyBy()\n            .mapValues(() => false)\n            .value(),\n        },\n      },\n    };\n  }\n}\n","import { type ExpressionString } from './ConfigExpression';\nimport { JSONSchema, JSONSchemaObject, FromSchema } from './expressions/JSONSchema';\n\n// todo: migrate descriptions to new Cfgu type\n/**\n * A generic declaration of a `Config`, using constraints and metadata.\n * @see {@link https://configu.com/docs/cfgu/}\n */\nexport interface ICfgu {\n  /**\n   * @default ''\n   * @usage export - display\n   * A human-readable description of a `Config`.\n   * @example `The number of items to display per page.`\n   */\n  description?: string;\n\n  /**\n   * @default []\n   * @usage export - filter | group | sort | display\n   * A human-readable label of a `Config`.\n   */\n  label?: string | string[];\n\n  /**\n   * @default false\n   * @usage export - filter\n   */\n  hidden?: boolean;\n\n  /**\n   * @default false\n   * @usage upsert - validate, eval - override\n   * @exclusive const, default\n   */\n  lazy?: boolean;\n\n  /**\n   * @default undefined\n   * @replaces template\n   * @usage upsert - validate, eval - const\n   * @exclusive lazy, default, required\n   * @resolves string\n   */\n  const?: ExpressionString;\n\n  /**\n   * @default undefined\n   * @usage eval - default\n   * @exclusive lazy, const, required\n   */\n  default?: any;\n\n  // todo: add ticket to support expression in required\n  /**\n   * @default false\n   * @usage eval - validate\n   * @exclusive const, default\n   */\n  required?: boolean; // | ExpressionString;\n\n  // todo: add ticket to remake the depends property\n  // depends: ExpressionString | ExpressionString[];\n\n  // todo:? add ticket for type cfgu property\n  // /**\n  //  * @default 'string'\n  //  * @usage upsert - validate, eval - parse & validate, export - parse\n  //  * @exclusive\n  //  */\n  // type?: CfguType;\n\n  /**\n   * @default undefined\n   * @usage upsert - validate, eval - validate\n   */\n  pattern?: string;\n\n  /**\n   * @default undefined\n   * @replaces options\n   * @usage upsert - validate, eval - validate\n   */\n  enum?: any[];\n\n  /**\n   * @default undefined\n   * @usage upsert - validate, eval - validate\n   */\n  schema?: JSONSchemaObject;\n\n  /**\n   * @default undefined\n   * @usage upsert - validate, eval - validate\n   * Use this property to validate a `ConfigValue`.\n   * This property receives a string or an array of strings representing an expression that evaluates to a boolean.\n   * If an array is provided, all expressions must evaluate to `true` for the value to be considered valid.\n   * @example `isEmail` or `['isNumeric', 'isDivisibleBy(10)']`\n   * @resolves boolean\n   */\n  test?: ExpressionString | ExpressionString[];\n}\n\n// build-time validation\nconst CfguStringProperty = {\n  type: 'string',\n  minLength: 1,\n} as const satisfies JSONSchemaObject;\nconst CfguBooleanProperty = {\n  type: 'boolean',\n} as const satisfies JSONSchemaObject;\nconst CfguStringOrBooleanProperty = {\n  type: ['string', 'boolean'],\n  oneOf: [CfguStringProperty, CfguBooleanProperty],\n};\nconst CfguObjectProperty = {\n  type: 'object',\n  minProperties: 1,\n} as const satisfies JSONSchemaObject;\nconst CfguStringArrayProperty = {\n  type: 'array',\n  minItems: 1,\n  uniqueItems: true,\n  items: CfguStringProperty,\n} as const satisfies JSONSchemaObject;\nconst CfguStringOrStringArrayProperty = {\n  type: ['string', 'array'],\n  oneOf: [CfguStringProperty, CfguStringArrayProperty],\n} as const satisfies JSONSchemaObject;\n\nexport const CfguSchema = {\n  type: 'object',\n  required: [],\n  additionalProperties: false,\n  nullable: true,\n  properties: {\n    description: CfguStringProperty,\n    label: CfguStringOrStringArrayProperty,\n    hidden: CfguBooleanProperty,\n    lazy: CfguBooleanProperty,\n    const: CfguStringProperty,\n    default: JSONSchema.AnyPropertySchema,\n    required: CfguBooleanProperty,\n    pattern: CfguStringProperty,\n    enum: JSONSchema.AnyArrayPropertySchema,\n    schema: CfguObjectProperty,\n    test: CfguStringOrStringArrayProperty,\n  },\n  allOf: [\n    JSONSchema.createPropertyExclusiveSchema({\n      property: 'lazy',\n      exclusive: ['const', 'default'],\n    }),\n    JSONSchema.createPropertyExclusiveSchema({\n      property: 'const',\n      // todo: consider if its a stupid but valid pair with required\n      // exclusive: ['lazy', 'default']\n      exclusive: ['lazy', 'default', 'required'],\n    }),\n    JSONSchema.createPropertyExclusiveSchema({\n      property: 'default',\n      exclusive: ['lazy', 'const', 'required'],\n    }),\n    JSONSchema.createPropertyExclusiveSchema({\n      property: 'required',\n      exclusive: ['const', 'default'],\n    }),\n  ],\n} as const satisfies JSONSchemaObject;\n\nexport type Cfgu = FromSchema<typeof CfguSchema>;\n","// Vitest Source:\n// https://github.com/vitest-dev/vitest/tree/main/packages/expect\n// https://github.com/vitest-dev/vitest/blob/main/packages/vitest/src/integrations/chai/setup.ts\n// https://github.com/vitest-dev/vitest/blob/main/packages/vitest/src/integrations/chai/index.ts\nimport * as chai from 'chai';\nimport Subset from 'chai-subset';\nimport { JestAsymmetricMatchers, JestChaiExpect, JestExtend } from '@vitest/expect';\nimport * as matchers from 'jest-extended';\n\nchai.use(JestExtend);\nchai.use(JestChaiExpect);\nchai.use(Subset);\nchai.use(JestAsymmetricMatchers);\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error untyped\nchai.expect.extend(chai.expect, matchers);\n\n// API:\n// https://vitest.dev/guide/features.html#chai-and-jest-expect-compatibility\n// https://www.chaijs.com/api/\n// https://jestjs.io/docs/expect\n// https://jest-extended.jestcommunity.dev/docs/matchers\nexport { assert } from 'chai'; // tdd\nexport { expect, should } from 'chai'; // bdd\n","import * as acorn from 'acorn';\nimport * as walk from 'acorn-walk';\nimport 'ses';\n\nimport { _ } from './expressions/Utils';\nimport { validator, JSONSchema, z } from './expressions/Validators';\nimport { assert, expect, should } from './expressions/Assertion';\n\nexport type ExpressionString = string;\n\nexport class ConfigExpression {\n  private static globals = new Map<string, unknown>();\n  private static suffix = 'Expression';\n  private static marker = { start: '${', end: '}' };\n  private static delimiters = [\n    { start: '{{', end: '}}' },\n    { start: '<%', end: '%>' },\n  ];\n\n  static {\n    // todo: finalize lockdown call with proper error handling\n    // lockdown({ consoleTaming: 'unsafe', errorTaming: 'unsafe', errorTrapping: 'none', stackFiltering: 'verbose' });\n\n    // register built-in globals\n    ConfigExpression.register('_', _);\n    ConfigExpression.register('validator', validator);\n    ConfigExpression.register('JSONSchema', JSONSchema);\n    ConfigExpression.register('jsonschema', JSONSchema);\n    ConfigExpression.register('z', z);\n    ConfigExpression.register('assert', assert);\n    ConfigExpression.register('expect', expect);\n    ConfigExpression.register('should', should);\n  }\n\n  private static escapeRegex(string: string) {\n    return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n  }\n\n  public static pattern = new RegExp(\n    ConfigExpression.delimiters\n      .map(({ start, end }) => `${ConfigExpression.escapeRegex(start)}(.*?)${ConfigExpression.escapeRegex(end)}`)\n      .join('|'),\n    'g',\n  );\n\n  static register(key: string, registeree: unknown) {\n    if (key.endsWith(ConfigExpression.suffix)) {\n      ConfigExpression.globals.set(key.slice(0, -ConfigExpression.suffix.length), registeree);\n    } else {\n      ConfigExpression.globals.set(key, registeree);\n    }\n  }\n\n  private static parse(raw: ExpressionString) {\n    try {\n      const expression = raw.replace(ConfigExpression.pattern, (match, group) => {\n        return `${ConfigExpression.marker.start}${group}${ConfigExpression.marker.end}`;\n      });\n      const ast = acorn.parse(expression, { ecmaVersion: 'latest' });\n\n      return {\n        raw,\n        expression,\n        ast,\n      };\n    } catch (error) {\n      throw new Error(`Failed to parse expression \"${raw}\"\\n${error}`);\n    }\n  }\n\n  static evaluate(expression: ExpressionString, context: Record<string, unknown> = {}): any {\n    try {\n      const parsed = ConfigExpression.parse(expression);\n      const compartment = new Compartment({ ...context, ...Object.fromEntries(ConfigExpression.globals) });\n      return compartment.evaluate(parsed.expression);\n    } catch (error) {\n      throw new Error(`Failed to evaluate expression \"${expression}\"\\n${error.message}`);\n    }\n  }\n\n  static evaluateBoolean(expression: ExpressionString, context: Record<string, unknown>): boolean {\n    return ConfigExpression.evaluate(`Boolean(${expression})`, context);\n  }\n\n  static evaluateTemplateString(expression: ExpressionString, context: Record<string, unknown>): string {\n    return ConfigExpression.evaluate(`\\`${expression}\\``, context);\n  }\n\n  static references(expression: ExpressionString): string[] {\n    const parsed = ConfigExpression.parse(expression);\n    const references: Set<string> = new Set();\n    walk.simple(parsed.ast, {\n      Identifier(node: acorn.Identifier) {\n        references.add(node.name);\n      },\n    });\n    return Array.from(references);\n  }\n\n  static sort(expressionsDict: Record<string, string>): string[] {\n    // Initialize templates to references graph\n    const graph: Record<string, string[]> = _.chain(expressionsDict)\n      .mapValues((expression) => ConfigExpression.references(expression))\n      .value();\n\n    const sorted: string[] = [];\n    const visited = new Set<string>();\n    const visiting = new Set<string>();\n\n    // Helper function for DFS\n    const visit = (node: string, ancestors: string[] = []) => {\n      if (visiting.has(node)) {\n        throw new Error(`Cyclic dependency detected: ${ancestors.join(' -> ')} -> ${node}`);\n      }\n\n      if (!visited.has(node)) {\n        visiting.add(node);\n\n        (graph[node] || []).forEach((neighbor) => {\n          visit(neighbor, [...ancestors, node]);\n        });\n\n        visiting.delete(node);\n        visited.add(node);\n        sorted.push(node);\n      }\n    };\n\n    // Perform DFS for each node\n    _.forEach(graph, (referances, key) => {\n      if (!visited.has(key)) {\n        visit(key);\n      }\n    });\n\n    // Filter sorted to include only the initial template keys\n    return sorted.filter((key) => Object.prototype.hasOwnProperty.call(expressionsDict, key));\n  }\n}\n","import _ from 'lodash';\nimport { Jsonify, Merge } from 'type-fest';\n\nimport { type Cfgu } from './Cfgu';\nimport { type Config } from './Config';\nimport { type ConfigStore } from './ConfigStore';\nimport { type ConfigSet } from './ConfigSet';\nimport { type ConfigSchema } from './ConfigSchema';\nimport { ConfigExpression, ExpressionString } from './ConfigExpression';\nimport { JSONSchema, FromSchema } from './expressions/JSONSchema';\n\nexport type ConfigValueAny = FromSchema<typeof JSONSchema.AnyPropertySchema>;\n\nexport type ConfigValueString = Config['value'];\n\nexport type ConfigWithCfgu = Config & { cfgu: Cfgu };\n\ntype ConfigExpressionContext = {\n  store?: ConfigStore;\n  set?: ConfigSet;\n  schema?: ConfigSchema;\n  current?: string;\n  configs: {\n    [key: string]: ConfigWithCfgu;\n  };\n};\n\ntype ConfigContext = Merge<\n  ConfigWithCfgu,\n  {\n    labels: string[];\n    value: ConfigValueAny;\n    storedValue: string;\n  }\n>;\n\nexport type ConfigEvaluationContext = {\n  $: Partial<ConfigContext> & {\n    input?: {\n      store: Jsonify<ConfigStore>;\n      set: Jsonify<ConfigSet>;\n      schema: Jsonify<ConfigSchema>;\n    };\n    configs: {\n      [key: string]: ConfigContext;\n    };\n  };\n};\n\nexport class ConfigValue {\n  static parse(value: ConfigValueString): ConfigValueAny {\n    try {\n      // numeric, boolean, object, array\n      return JSON.parse(value);\n    } catch (error) {\n      // string\n      return value;\n    }\n  }\n\n  static stringify(value: ConfigValueAny): ConfigValueString {\n    if (_.isString(value)) {\n      return value;\n    }\n    return JSON.stringify(value);\n  }\n\n  static createEvaluationContext(context: ConfigExpressionContext): ConfigEvaluationContext {\n    const configs = _.mapValues(context.configs, (current) => ({\n      ...current,\n      storedValue: current.value,\n      value: ConfigValue.parse(current.value),\n      labels: Array.isArray(current.cfgu?.label) ? current.cfgu.label : _.compact([current.cfgu?.label]),\n    }));\n\n    let $ = {\n      configs,\n    } as ConfigEvaluationContext['$'];\n\n    if (context.store && context.set && context.schema) {\n      $ = {\n        input: {\n          store: { ...context.store },\n          set: { ...context.set },\n          schema: { ...context.schema },\n        },\n        ...$,\n      };\n    }\n\n    if (context.current) {\n      const currentConfig = configs[context.current];\n      if (!currentConfig) {\n        throw new Error(`Failed to create evaluation context for key \"${context.current}\"`);\n      }\n      $ = { ...currentConfig, ...$ };\n    }\n\n    return { $ };\n  }\n\n  static test({\n    test,\n    errorSuffix = `test \"${test}\"`,\n    context,\n  }: {\n    test: ExpressionString;\n    errorSuffix?: string;\n    context: Required<ConfigExpressionContext>;\n  }) {\n    try {\n      const isValid = ConfigExpression.evaluateBoolean(test, ConfigValue.createEvaluationContext(context));\n      if (!isValid) {\n        throw new Error();\n      }\n    } catch (error) {\n      throw new Error(`ConfigValue failed ${errorSuffix}\\n${error.message}`);\n    }\n  }\n\n  static validate(context: Required<ConfigExpressionContext>) {\n    // todo: consider optimizing this code by creating a concatenated test string and evaluating it once\n\n    const currentConfig = context.configs[context.current];\n    if (!currentConfig) {\n      throw new Error(`Failed to create evaluation context for key \"${context.current}\"`);\n    }\n\n    const { cfgu } = currentConfig;\n\n    if (cfgu?.pattern) {\n      ConfigValue.test({\n        test: `JSONSchema.validate({ \"type\": \"string\", \"pattern\": $.cfgu.pattern }, $.storedValue) || true`,\n        errorSuffix: 'Cfgu.pattern test',\n        context,\n      });\n    }\n\n    if (cfgu?.enum) {\n      ConfigValue.test({\n        test: `JSONSchema.validate({ \"enum\": $.cfgu.enum }, $.value) || true`,\n        errorSuffix: 'Cfgu.enum test',\n        context,\n      });\n    }\n\n    if (cfgu?.schema) {\n      ConfigValue.test({\n        test: `JSONSchema.validate($.cfgu.schema, $.value) || true`,\n        errorSuffix: 'Cfgu.schema test',\n        context,\n      });\n    }\n\n    if (cfgu?.test) {\n      const tests = Array.isArray(cfgu.test) ? cfgu.test : [cfgu.test];\n      tests.forEach((test, idx) => {\n        ConfigValue.test({\n          test,\n          errorSuffix: `Cfgu.test[${idx}] \"${test}\"`,\n          context,\n        });\n      });\n    }\n  }\n}\n","import _ from 'lodash';\nimport { CfguSchema } from './Cfgu';\nimport { ConfigKey } from './ConfigKey';\nimport { JSONSchema, JSONSchemaObject, FromSchema } from './expressions/JSONSchema';\nimport { ConfigValue } from './ConfigValue';\nimport { ConfigExpression } from './ConfigExpression';\n\nconst LEGACY_CFGU_VALUE_TYPE_VALIDATORS: Record<string, string> = {\n  Boolean: 'validator.isBoolean($.storedValue, { loose: true })',\n  Number: 'validator.isNumeric($.storedValue)',\n  String: 'true',\n  RegEx: 'expect($.cfgu.pattern).to.exist',\n  UUID: 'validator.isUUID($.storedValue)',\n  SemVer: 'validator.isSemVer($.storedValue)',\n  Email: 'validator.isEmail($.storedValue)',\n  MobilePhone: 'validator.isMobilePhone($.storedValue)',\n  Locale: 'validator.isLocale($.storedValue)',\n  LatLong: 'validator.isLatLong($.storedValue)',\n  Color: 'validator.isHexColor($.storedValue) || validator.isHSL($.storedValue) || validator.isRgbColor($.storedValue)',\n  IPv4: 'validator.isIP($.storedValue, 4)',\n  IPv6: 'validator.isIP($.storedValue, 6)',\n  Domain: 'validator.isFQDN($.storedValue)',\n  URL: 'validator.isURL($.storedValue)',\n  Hex: 'validator.isHexadecimal($.storedValue)',\n  Base64: 'validator.isBase64($.storedValue)',\n  MD5: 'validator.isHash($.storedValue, \"md5\")',\n  SHA: 'validator.isHash($.storedValue, \"sha1\") || validator.isHash($.storedValue, \"sha256\") || validator.isHash($.storedValue, \"sha384\") || validator.isHash($.storedValue, \"sha512\")',\n  Country: 'validator.isISO31661Alpha2($.storedValue) || validator.isISO31661Alpha3($.storedValue)',\n  Currency: 'validator.isISO4217($.storedValue)',\n  DockerImage:\n    '/^((?:[a-z0-9]([-a-z0-9]*[a-z0-9])?.)+[a-z]{2,6}(?::d{1,5})?/)?[a-z0-9]+(?:[._-/:][a-z0-9]+)*$/gm.test($.storedValue)',\n  ARN: '/^arn:([^:\\n]+):([^:\\n]+):(?:[^:\\n]*):(?:([^:\\n]*)):([^:/\\n]+)(?:(:[^\\n]+)|(/[^:\\n]+))?$/gm.test($.storedValue)',\n  MACAddress: 'validator.isMACAddress($.storedValue)',\n  MIMEType: 'validator.isMimeType($.storedValue)',\n  MongoId: 'validator.isMongoId($.storedValue)',\n  AWSRegion:\n    'new Set([\"af-south-1\",\"ap-east-1\",\"ap-northeast-1\",\"ap-northeast-2\",\"ap-northeast-3\",\"ap-south-1\",\"ap-southeast-1\",\"ap-southeast-2\",\"ca-central-1\",\"cn-north-1\",\"cn-northwest-1\",\"eu-central-1\",\"eu-north-1\",\"eu-south-1\",\"eu-west-1\",\"eu-west-2\",\"eu-west-3\",\"me-south-1\",\"sa-east-1\",\"us-east-1\",\"us-east-2\",\"us-gov-east-1\",\"us-gov-west-1\",\"us-west-1\",\"us-west-2\"]).has($.storedValue)',\n  AZRegion:\n    'new Set([\"eastus\",\"eastus2\",\"centralus\",\"northcentralus\",\"southcentralus\",\"westcentralus\",\"westus\",\"westus2\",\"canadacentral\",\"canadaeast\",\"brazilsouth\",\"brazilsoutheast\",\"northeurope\",\"westeurope\",\"uksouth\",\"ukwest\",\"francecentral\",\"francesouth\",\"switzerlandnorth\",\"switzerlandwest\",\"germanywestcentral\",\"norwayeast\",\"norwaywest\",\"eastasia\",\"southeastasia\",\"australiaeast\",\"australiasoutheast\",\"australiacentral\",\"australiacentral2\",\"japaneast\",\"japanwest\",\"koreacentral\",\"koreasouth\",\"southafricanorth\",\"southafricawest\",\"uaenorth\",\"uaecentral\",\"usgovarizona\",\"usgovtexas\",\"usdodeast\",\"usdodcentral\",\"usgovvirginia\",\"usgoviowa\",\"usgovcalifornia\",\"ussecwest\",\"usseceast\"]).has($.storedValue)',\n  GCPRegion:\n    'new Set([\"us-east1\",\"us-east4\",\"us-west1\",\"us-west2\",\"us-west3\",\"us-central1\",\"northamerica-northeast1\",\"southamerica-east1\",\"europe-north1\",\"europe-west1\",\"europe-west2\",\"europe-west3\",\"europe-west4\",\"europe-west6\",\"asia-east1\",\"asia-east2\",\"asia-northeast1\",\"asia-northeast2\",\"asia-northeast3\",\"asia-south1\",\"asia-southeast1\",\"australia-southeast1\",\"australia-southeast2\",\"southasia-east1\",\"northamerica-northeast2\",\"europe-central2\",\"asia-southeast2\",\"asia-east3\",\"europe-west7\",\"us-west4\",\"europe-west8\",\"asia-northeast4\",\"asia-southeast3\",\"us-west5\",\"us-central2\",\"us-east5\",\"us-north1\",\"northamerica-northeast3\",\"us-west6\"]).has($.storedValue)',\n  OracleRegion:\n    'new Set([\"us-ashburn-1\",\"us-phoenix-1\",\"ca-toronto-1\",\"sa-saopaulo-1\",\"uk-london-1\",\"uk-gov-london-1\",\"eu-frankfurt-1\",\"eu-zurich-1\",\"eu-amsterdam-1\",\"me-jeddah-1\",\"ap-mumbai-1\",\"ap-osaka-1\",\"ap-seoul-1\",\"ap-sydney-1\",\"ap-tokyo-1\",\"ap-chuncheon-1\",\"ap-melbourne-1\",\"ap-hyderabad-1\",\"ca-montreal-1\",\"us-sanjose-1\",\"us-luke-1\",\"me-dubai-1\",\"us-gov-ashburn-1\",\"us-gov-chicago-1\",\"us-gov-phoenix-1\",\"us-gov-orlando-1\",\"us-gov-sanjose-1\",\"us-gov-ashburn-2\"]).has($.storedValue)',\n  IBMRegion:\n    'new Set([\"us-south\",\"us-east\",\"us-north\",\"us-west\",\"eu-gb\",\"eu-de\",\"eu-nl\",\"eu-fr\",\"eu-it\",\"ap-north\",\"ap-south\",\"ap-east\",\"ap-jp\",\"ap-au\",\"ca-toronto\",\"ca-central\",\"sa-saopaulo\",\"sa-mexico\",\"sa-buenosaires\",\"sa-lima\",\"sa-santiago\",\"af-za\",\"af-eg\",\"af-dz\",\"af-ma\"]).has($.storedValue)',\n  AlibabaRegion:\n    'new Set([\"cn-hangzhou\",\"cn-shanghai\",\"cn-beijing\",\"cn-shenzhen\",\"cn-zhangjiakou\",\"cn-huhehaote\",\"cn-wulanchabu\",\"ap-southeast-1\",\"ap-southeast-2\",\"ap-southeast-3\",\"ap-southeast-5\",\"ap-northeast-1\",\"ap-south-1\",\"ap-south-2\",\"us-west-1\",\"us-east-1\",\"eu-west-1\",\"eu-central-1\",\"me-east-1\",\"ap-southwest-1\"]).has($.storedValue)',\n  Language: 'validator.isISO6391($.storedValue)',\n  DateTime:\n    'validator.isDate($.storedValue) || validator.isTime($.storedValue) || !Number.isNaN(new Date($.storedValue).getTime())',\n  JSONSchema: 'expect($.cfgu.schema).to.exist',\n};\n\nexport const ConfigSchemaKeysSchema = {\n  type: 'object',\n  required: [],\n  minProperties: 1,\n  // todo: patternProperties is not supported by OpenAPI and has limited error resolution support. Thats why we currently use additionalProperties and check key Naming separately.\n  // additionalProperties: false,\n  // patternProperties: {\n  //   [Naming.pattern]: CfguSchema,\n  // },\n  additionalProperties: CfguSchema,\n} as const satisfies JSONSchemaObject;\n\nexport type ConfigSchemaKeys = FromSchema<typeof ConfigSchemaKeysSchema>;\n\nexport type V0ConfigSchemaKeys = { [x: string]: any };\n\n/**\n * A file containing binding records linking each unique `ConfigKey` to its corresponding `Cfgu` declaration.\n * https://configu.com/docs/config-schema/\n */\nexport class ConfigSchema {\n  constructor(public readonly keys: ConfigSchemaKeys = {}) {\n    if (_.isEmpty(this.keys)) {\n      throw new Error('ConfigSchema.keys is required');\n    }\n\n    _.chain(this.keys)\n      .entries()\n      .forEach(([key, cfgu]) => {\n        ConfigKey.validate({ key, errorPrefix: 'ConfigSchema.keys' });\n        // todo: consider if validate per key is not better here to provide more detailed error messages\n        // if (!JsonSchema.validate({ schema: CfguSchema, data: cfgu })) {\n        //   throw new Error(`ConfigSchema.keys \"${key}\" is invalid\\n${JsonSchema.getLastValidationError()}`);\n        // }\n      });\n\n    try {\n      JSONSchema.validate(ConfigSchemaKeysSchema, this.keys);\n    } catch (error) {\n      throw new Error(`ConfigSchema.keys are invalid\\n${error.message}`);\n    }\n  }\n\n  static fromLegacyConfigSchema(contents: V0ConfigSchemaKeys) {\n    const migratedContents: ConfigSchemaKeys = _(contents)\n      .mapValues((value, key) => {\n        const { type, options, depends, labels, template, ...restCfguProps } = value;\n        const migratedCfgu = { ...restCfguProps, test: [] };\n        if (type) {\n          migratedCfgu.test.push(LEGACY_CFGU_VALUE_TYPE_VALIDATORS[type]);\n        }\n        if (options) {\n          migratedCfgu.enum = options.map((option: string) => ConfigValue.parse(option));\n        }\n        if (labels) {\n          migratedCfgu.label = labels;\n        }\n        if (depends) {\n          depends.forEach((dependencyKey: string) => {\n            migratedCfgu.test.push(\n              `expect($.configs.${dependencyKey}.storedValue, 'Dependency ${dependencyKey} is missing for ${key}').to.not.be.empty`,\n            );\n          });\n        }\n        if (template) {\n          migratedCfgu.const = template.replace(ConfigExpression.pattern, (match: string, group: string) => {\n            if (contents[group]) {\n              return `{{$.configs.${group}.storedValue}}`;\n            }\n            if (group === 'CONFIGU_STORE.type') {\n              return `{{$.input.store.type}}`;\n            }\n            if (group === 'CONFIGU_SET.path') {\n              return `{{$.input.set.path}}`;\n            }\n            if (group === 'CONFIGU_SET.hierarchy') {\n              return `{{$.input.set.hierarchy}}`;\n            }\n            if (group === 'CONFIGU_SET.first') {\n              return `{{_.first($.input.set.hierarchy)}}`;\n            }\n            if (group === 'CONFIGU_SET.last') {\n              return `{{_.last($.input.set.hierarchy)}}`;\n            }\n            return match;\n          });\n        }\n        return migratedCfgu;\n      })\n      .value();\n\n    return new ConfigSchema(migratedContents);\n  }\n}\n","import _ from 'lodash';\nimport { ConfigKey } from './ConfigKey';\n\n/**\n * A unique, case-sensitive path within a tree-like data structure that groups `Config`s contextually.\n * https://configu.com/docs/config-set/\n */\nexport class ConfigSet {\n  static readonly separator = '/';\n  static readonly root = '';\n  static readonly rootLabel = '/';\n\n  public readonly hierarchy: string[] = [];\n\n  constructor(public readonly path: string = ConfigSet.root) {\n    this.path = this.path.trim();\n\n    if (this.path.startsWith(ConfigSet.rootLabel)) {\n      this.path = this.path.slice(1);\n    }\n\n    if (this.path.endsWith(ConfigSet.separator)) {\n      this.path = this.path.slice(0, -1);\n    }\n\n    if (this.path === ConfigSet.root) {\n      this.hierarchy = [ConfigSet.root];\n      return;\n    }\n\n    this.hierarchy = this.path.split(ConfigSet.separator).map((cur, idx, sets) => {\n      ConfigKey.validate({ key: cur, errorPrefix: 'ConfigSet.path' });\n\n      return _.take(sets, idx + 1).join(ConfigSet.separator);\n    });\n    this.hierarchy.unshift(ConfigSet.root);\n  }\n}\n","import { Config } from './Config';\nimport { ConfigKey } from './ConfigKey';\n\nexport type ConfigQuery = Pick<Config, 'set' | 'key'>;\n\nexport interface ConfigStoreConstructor {\n  // eslint-disable-next-line no-use-before-define\n  new (configuration: any): ConfigStore;\n  type: string;\n}\n\n/**\n * A storage engine interface for `Config`s records.\n * https://configu.com/docs/config-store/\n */\nexport abstract class ConfigStore {\n  private static stores = new Map<string, ConfigStoreConstructor>();\n\n  // todo: verify if this is needed except for jsonify\n  public readonly type: string = this.constructor.name;\n\n  static get type() {\n    if (!this.name.endsWith(ConfigStore.name)) {\n      throw new Error(`ConfigStore class name must end with \"${ConfigStore.name}\". (${this.name})`);\n    }\n    const nameWithoutSuffix = this.name.slice(0, -ConfigStore.name.length);\n    const type = ConfigKey.normalize(nameWithoutSuffix);\n    return type;\n  }\n\n  static register(store: ConfigStoreConstructor) {\n    ConfigStore.stores.set(store.type, store);\n  }\n\n  static has(type: string) {\n    const normalizedType = ConfigKey.normalize(type);\n    return ConfigStore.stores.has(normalizedType);\n  }\n\n  static construct(type: string, configuration = {}): ConfigStore {\n    const normalizedType = ConfigKey.normalize(type);\n    const StoreCtor = ConfigStore.stores.get(normalizedType);\n    if (!StoreCtor) {\n      throw new Error(`unknown store type ${type}`);\n    }\n    return new StoreCtor(configuration);\n  }\n\n  async init() {}\n  abstract get(queries: ConfigQuery[]): Promise<Config[]>;\n  abstract set(configs: Config[]): Promise<void>;\n}\n","import { Config } from '../Config';\nimport { ConfigStore, ConfigQuery } from '../ConfigStore';\n\nexport class NoopConfigStore extends ConfigStore {\n  override get(queries: ConfigQuery[]): Promise<Config[]> {\n    return Promise.resolve([]);\n  }\n\n  override set(configs: Config[]): Promise<void> {\n    return Promise.resolve();\n  }\n}\n","import _ from 'lodash';\nimport { Config } from '../Config';\nimport { ConfigStore, ConfigQuery } from '../ConfigStore';\n\nexport class InMemoryConfigStore extends ConfigStore {\n  private data: { [ConfigSet: string]: { [ConfigKey: string]: Config } } = {};\n\n  async get(queries: ConfigQuery[]): Promise<Config[]> {\n    return _.chain(queries)\n      .map(({ set, key }) => _.get(this.data, [set, key], { set, key, value: '' }))\n      .filter('value')\n      .value();\n  }\n\n  async set(configs: Config[]): Promise<void> {\n    configs.forEach((config) => {\n      if (!config.value) {\n        _.unset(this.data, [config.set, config.key]);\n      }\n      _.set(this.data, [config.set, config.key], config);\n    });\n  }\n}\n","{\n  \"name\": \"@configu/sdk\",\n  \"version\": \"1.1.0\",\n  \"description\": \"Configu TypeScript SDK\",\n  \"keywords\": [\n    \"configu-sdk\",\n    \"configu-ts\",\n    \"configu-typescript\",\n    \"sdk\",\n    \"typescript\",\n    \"typescript-sdk\"\n  ],\n  \"homepage\": \"https://configu.com\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/configu/configu\",\n    \"directory\": \"packages/sdk\"\n  },\n  \"bugs\": \"https://github.com/configu/configu/issues\",\n  \"license\": \"Apache-2.0\",\n  \"author\": {\n    \"name\": \"@configu/dev\",\n    \"email\": \"dev@configu.com\",\n    \"url\": \"https://configu.com\"\n  },\n  \"type\": \"module\",\n  \"types\": \"./dist/index.d.ts\",\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.mjs\",\n  \"exports\": {\n    \"./package.json\": \"./package.json\",\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/index.d.ts\",\n        \"default\": \"./dist/index.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/index.d.cts\",\n        \"default\": \"./dist/index.cjs\"\n      }\n    }\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"config\": {\n    \"entry\": \"./src/index.ts\"\n  },\n  \"scripts\": {\n    \"clean\": \"shx rm -rf dist\",\n    \"build\": \"tsup $npm_package_config_entry\"\n  },\n  \"dependencies\": {\n    \"@segment/ajv-human-errors\": \"^2.14.1\",\n    \"@vitest/expect\": \"^2.1.8\",\n    \"acorn\": \"^8.14.0\",\n    \"acorn-walk\": \"^8.3.4\",\n    \"ajv\": \"^8.17.1\",\n    \"ajv-formats\": \"^3.0.1\",\n    \"chai\": \"^5.1.2\",\n    \"chai-subset\": \"^1.6.0\",\n    \"jest-extended\": \"^4.0.2\",\n    \"json-schema-to-ts\": \"^3.1.1\",\n    \"lodash\": \"^4.17.21\",\n    \"ses\": \"^1.10.0\",\n    \"validator\": \"^13.12.0\",\n    \"zod\": \"^3.24.1\"\n  },\n  \"devDependencies\": {\n    \"@types/chai\": \"^5.0.1\",\n    \"@types/chai-subset\": \"^1.3.5\",\n    \"@types/validator\": \"^13.12.2\",\n    \"type-fest\": \"^4.30.2\"\n  }\n}\n","import packageJson from '../package.json' with { type: 'json' };\n\nexport type ConfigCommandInput<I extends object> = I;\n\nexport type ConfigCommandOutput<O> = {\n  result: O;\n  metadata: { version: string; start: number; end: number; duration: number };\n};\n\nexport abstract class ConfigCommand<I extends object, O> {\n  constructor(public input: I) {}\n  abstract execute(): Promise<O>;\n\n  async run(): Promise<ConfigCommandOutput<O>> {\n    const start = performance.now();\n    const result = await this.execute();\n    const end = performance.now();\n    const duration = end - start;\n\n    return {\n      metadata: { version: packageJson.version, start, end, duration },\n      result,\n    };\n  }\n}\n","import _ from 'lodash';\nimport { ConfigCommand } from '../ConfigCommand';\nimport { ConfigValue, ConfigValueAny, ConfigWithCfgu } from '../ConfigValue';\nimport { ConfigStore, ConfigQuery } from '../ConfigStore';\nimport { ConfigSet } from '../ConfigSet';\nimport { ConfigSchema } from '../ConfigSchema';\nimport { ConfigExpression } from '../ConfigExpression';\n\nexport enum EvaluatedConfigOrigin {\n  Const = 'const',\n  Override = 'override',\n  Store = 'store',\n  Default = 'default',\n  Empty = 'empty',\n}\n\nexport type EvaluatedConfig = ConfigWithCfgu & {\n  origin: EvaluatedConfigOrigin;\n};\n\nexport type EvalCommandOutput = {\n  [key: string]: EvaluatedConfig;\n};\n\nexport type EvalCommandInput = {\n  store: ConfigStore;\n  set: ConfigSet;\n  schema: ConfigSchema;\n  configs?: { [key: string]: ConfigValueAny };\n  pipe?: EvalCommandOutput;\n  validate?: boolean;\n};\n\nexport class EvalCommand extends ConfigCommand<EvalCommandInput, EvalCommandOutput> {\n  async execute() {\n    const { store } = this.input;\n\n    await store.init();\n\n    let result: EvalCommandOutput = { ...this.evalEmpty() };\n    result = { ...result, ...this.evalOverride(result) };\n    result = { ...result, ...(await this.evalStore(result)) };\n    result = { ...result, ...this.evalDefault(result) };\n    result = { ...result, ...this.evalPipe(result) };\n    result = { ...result, ...this.evalConst(result) };\n\n    this.validateResult(result);\n\n    return result;\n  }\n\n  private evalEmpty(): EvalCommandOutput {\n    const { schema } = this.input;\n\n    return _.mapValues<ConfigSchema['keys'], EvaluatedConfig>(schema.keys, (cfgu, key) => {\n      let origin = EvaluatedConfigOrigin.Empty;\n      if (cfgu?.const) {\n        origin = EvaluatedConfigOrigin.Const;\n      }\n\n      return {\n        set: this.input.set.path,\n        key,\n        value: '',\n        cfgu,\n        origin,\n      };\n    });\n  }\n\n  private evalOverride(result: EvalCommandOutput): EvalCommandOutput {\n    const { configs = {} } = this.input;\n\n    return _.mapValues(result, (current) => {\n      if (current.origin !== EvaluatedConfigOrigin.Empty) {\n        return current;\n      }\n\n      const isOverridden = Object.prototype.hasOwnProperty.call(configs, current.key);\n      const isLazy = Boolean(current.cfgu?.lazy);\n\n      if (!isOverridden && !isLazy) {\n        return current;\n      }\n\n      const overrideValue = configs?.[current.key] ?? '';\n      return {\n        ...current,\n        value: ConfigValue.stringify(overrideValue),\n        origin: EvaluatedConfigOrigin.Override,\n      };\n    });\n  }\n\n  private async evalStore(result: EvalCommandOutput): Promise<EvalCommandOutput> {\n    const { store, set } = this.input;\n\n    const storeQueries = _.chain(result)\n      .values()\n      .filter((current) => current.origin === EvaluatedConfigOrigin.Empty)\n      .flatMap((current) => set.hierarchy.map((node) => ({ set: node, key: current.key })))\n      .value() satisfies ConfigQuery[];\n    const storeConfigsArray = await store.get(storeQueries);\n    const storeConfigsDict = _.chain(storeConfigsArray)\n      .orderBy([(config) => set.hierarchy.indexOf(config.set)], ['asc']) // \"asc\" because _.keyBy will keep the last element for each key\n      .keyBy((config) => config.key) // https://lodash.com/docs#keyBy\n      .value();\n\n    return _.mapValues(result, (current) => {\n      if (current.origin !== EvaluatedConfigOrigin.Empty) {\n        return current;\n      }\n\n      const storeConfig = storeConfigsDict?.[current.key];\n      if (!storeConfig || !storeConfig.value) {\n        return current;\n      }\n\n      return _.merge(current, storeConfig, {\n        origin: EvaluatedConfigOrigin.Store,\n      });\n    });\n  }\n\n  private evalDefault(result: EvalCommandOutput): EvalCommandOutput {\n    return _.mapValues(result, (current) => {\n      if (current.origin !== EvaluatedConfigOrigin.Empty) {\n        return current;\n      }\n\n      if (current.cfgu?.default) {\n        return {\n          ...current,\n          value: ConfigValue.stringify(current.cfgu.default),\n          origin: EvaluatedConfigOrigin.Default,\n        };\n      }\n\n      return current;\n    });\n  }\n\n  private evalPipe(result: EvalCommandOutput): EvalCommandOutput {\n    const { pipe } = this.input;\n\n    if (!pipe) {\n      return result;\n    }\n\n    const mergedResults = _.assignWith(result, pipe, (current, piped) => {\n      if (piped.origin === EvaluatedConfigOrigin.Empty) {\n        return current;\n      }\n\n      if (current.origin === EvaluatedConfigOrigin.Empty) {\n        return piped;\n      }\n\n      const isCurrentDefault = current.origin === EvaluatedConfigOrigin.Default;\n      const isPipedDefault = piped.origin === EvaluatedConfigOrigin.Default;\n\n      if (isCurrentDefault && !isPipedDefault) {\n        return piped;\n      }\n\n      return current;\n    });\n\n    return mergedResults;\n  }\n\n  private evalConst(result: EvalCommandOutput): EvalCommandOutput {\n    const { store, set, schema } = this.input;\n\n    const resultWithConstExpressions = { ...result };\n\n    const constExpressionsDict = _.chain(result)\n      .pickBy((current) => current.origin === EvaluatedConfigOrigin.Const)\n      .mapValues((current) => (current.cfgu?.const ? `\\`${current.cfgu.const}\\`` : ''))\n      .value();\n\n    ConfigExpression.sort(constExpressionsDict).forEach((key) => {\n      const expression = constExpressionsDict[key] as string;\n      const value =\n        ConfigExpression.evaluate(\n          expression,\n          ConfigValue.createEvaluationContext({\n            store,\n            set,\n            schema,\n            current: key,\n            configs: resultWithConstExpressions,\n          }),\n        ) ?? '';\n      (resultWithConstExpressions[key] as EvaluatedConfig).value = value;\n    });\n    return resultWithConstExpressions;\n  }\n\n  private validateResult(result: EvalCommandOutput): void {\n    const { store, set, schema, validate = true } = this.input;\n\n    if (!validate) {\n      return;\n    }\n\n    // const evaluatedConfigsDict = _.mapValues(result, (current) => current.value);\n\n    // * validate the eval result against the provided schema\n    _.chain(result)\n      .values()\n      .forEach((current) => {\n        const { cfgu, origin, key } = current;\n        // const evaluatedValue = current.value;\n\n        try {\n          if (cfgu?.required && origin === EvaluatedConfigOrigin.Empty) {\n            throw new Error('ConfigValue is required');\n          }\n\n          // todo: think about when should we run the tests\n          ConfigValue.validate({\n            store,\n            set,\n            schema,\n            current: key,\n            configs: result,\n          });\n\n          // todo: think about reviving depends on cfgu\n          // if (origin !== EvaluatedConfigOrigin.Empty) {\n          // if (cfgu.depends && cfgu.depends.some((depend) => !evaluatedConfigsDict[depend])) {\n          //   throw new Error(`ConfigValue is missing for depends`);\n          // }\n          // } else if (cfgu?.required) {\n          //   throw new Error('ConfigValue is required');\n          // }\n        } catch (error) {\n          throw new Error(`Validation failed for Config: \"${current.key}\"\\n${error.message}`);\n        }\n      })\n      .value();\n  }\n}\n","import _ from 'lodash';\nimport { ConfigCommand } from '../ConfigCommand';\nimport { Config } from '../Config';\nimport { ConfigValue, ConfigValueAny, ConfigWithCfgu } from '../ConfigValue';\nimport { ConfigStore, ConfigQuery } from '../ConfigStore';\nimport { ConfigSet } from '../ConfigSet';\nimport { ConfigSchema } from '../ConfigSchema';\nimport { EvalCommandOutput, EvaluatedConfigOrigin } from './EvalCommand';\nimport { Cfgu } from '../Cfgu';\n\nexport enum ConfigDiffAction {\n  Add = 'add',\n  Update = 'update',\n  Delete = 'delete',\n}\n\nexport type ConfigDiff = {\n  prev: string;\n  next: string;\n  action: ConfigDiffAction;\n};\n\nexport type UpsertedConfig = ConfigWithCfgu & ConfigDiff;\n\nexport type UpsertCommandOutput = {\n  [key: string]: UpsertedConfig;\n};\n\nexport type UpsertCommandInput = {\n  store: ConfigStore;\n  set: ConfigSet;\n  schema: ConfigSchema;\n  configs?: { [key: string]: ConfigValueAny };\n  pipe?: EvalCommandOutput;\n  dry?: boolean;\n};\n\nexport class UpsertCommand extends ConfigCommand<UpsertCommandInput, UpsertCommandOutput> {\n  async execute() {\n    const { store, set, schema, configs = {}, pipe = {} } = this.input;\n\n    await store.init();\n\n    const keys = Object.keys(schema.keys);\n\n    const storeQueries = _.chain(keys)\n      .map((key) => ({ set: set.path, key }))\n      .value() satisfies ConfigQuery[];\n    const storeConfigsArray = await store.get(storeQueries);\n    const storeConfigsDict = _.chain(storeConfigsArray)\n      .keyBy((config) => config.key)\n      .mapValues((config) => config.value)\n      .value();\n\n    const currentConfigs = _.chain(keys)\n      .keyBy()\n      .mapValues((key) => ({ set: set.path, key, value: storeConfigsDict[key] ?? '', cfgu: schema.keys[key] as Cfgu }))\n      .value() satisfies { [key: string]: ConfigWithCfgu };\n\n    let result: UpsertCommandOutput = {};\n\n    // delete all configs if input is empty\n    if (_.isEmpty(configs) && _.isEmpty(pipe)) {\n      result = _.chain(schema.keys)\n        .mapValues<UpsertedConfig>((cfgu, key) => ({\n          set: set.path,\n          key,\n          value: '',\n          cfgu,\n          prev: currentConfigs[key]?.value ?? '',\n          next: '',\n          action: ConfigDiffAction.Delete,\n        }))\n        .pickBy((diff) => diff.prev !== diff.next)\n        .value();\n    } else {\n      // prepare input configs\n      const kvConfigs = _.mapValues(configs, (value) => ConfigValue.stringify(value));\n\n      // prepare pipe configs\n      const pipeConfigs = _.chain(pipe)\n        .pickBy((value, key) => {\n          const cfgu = schema.keys[key];\n          return (\n            cfgu && // key exists in current schema\n            !cfgu.const && // key is not a const in current schema\n            !cfgu.lazy && // key is not lazy in current schema\n            value.origin === EvaluatedConfigOrigin.Store // key is not empty and comes from store\n          );\n        })\n        .mapValues((value) => value.value)\n        .value();\n\n      // merge pipe and configs, configs will override pipe\n      const upsertConfigsDict = { ...pipeConfigs, ...kvConfigs };\n      result = _.chain(upsertConfigsDict)\n        .mapValues<UpsertedConfig>((value, key) => {\n          try {\n            const cfgu = schema.keys[key];\n\n            if (!cfgu) {\n              throw new Error(`Key is not declared on schema`);\n            }\n\n            const prev = currentConfigs[key]?.value ?? '';\n            const next = value;\n\n            const context = {\n              set: set.path,\n              key,\n              value,\n              cfgu,\n              prev,\n              next,\n              action: ConfigDiffAction.Update,\n            };\n\n            if (prev === next) {\n              // no change will be omitted by the pickBy\n              return context;\n            }\n            if (next === '') {\n              return { ...context, action: ConfigDiffAction.Delete };\n            }\n            if (prev) {\n              return { ...context, action: ConfigDiffAction.Update };\n            }\n            return { ...context, action: ConfigDiffAction.Add };\n          } catch (error) {\n            throw new Error(`Validation failed for Config: \"${key}\"\\n${error.message}`);\n          }\n        })\n        .pickBy((diff) => diff.prev !== diff.next)\n        .value();\n    }\n\n    // validate result\n    _.chain(result)\n      .entries()\n      .forEach(([key, current]) => {\n        try {\n          if (current.value) {\n            if (current.cfgu?.lazy) {\n              throw new Error(`Key declared as \"lazy\" cannot be assigned a value`);\n            }\n            if (current.cfgu?.const) {\n              throw new Error(`Key declared as \"const\" cannot be assigned a value`);\n            }\n\n            ConfigValue.validate({\n              store,\n              set,\n              schema,\n              current: key,\n              configs: result,\n            });\n          }\n        } catch (error) {\n          throw new Error(`Validation failed for Config: \"${key}\"\\n${error.message}`);\n        }\n      })\n      .value();\n\n    if (!this.input.dry) {\n      const upsertConfigsArray = _.chain(result)\n        .entries()\n        .map<Config>(([key, diff]) => ({ set: set.path, key, value: diff.next }))\n        .value();\n      await store.set(upsertConfigsArray);\n    }\n\n    return result;\n  }\n}\n","import _ from 'lodash';\nimport { ConfigCommand } from '../ConfigCommand';\nimport { EvalCommandOutput } from './EvalCommand';\nimport { ConfigKey } from '../ConfigKey';\nimport { ConfigValue, ConfigValueAny } from '../ConfigValue';\n\nexport type ExportCommandOutput<T> = T;\n\nexport type ExportCommandInput = {\n  pipe: EvalCommandOutput;\n  coerce?: boolean;\n};\n\nexport class ExportCommand extends ConfigCommand<\n  ExportCommandInput,\n  ExportCommandOutput<{\n    [key: string]: ConfigValueAny;\n  }>\n> {\n  async execute() {\n    const { pipe } = this.input;\n\n    const filteredPipe = _.pickBy(pipe, (config) => !config.cfgu?.hidden);\n    this.validatePipe(filteredPipe);\n    const mappedPipe = this.kv(filteredPipe);\n\n    return mappedPipe;\n  }\n\n  protected validatePipe(pipe: EvalCommandOutput): void {\n    _.chain(pipe)\n      .values()\n      .forEach((current) => {\n        ConfigKey.validate({ key: current.key });\n      });\n  }\n\n  protected kv(pipe: EvalCommandOutput) {\n    const { coerce = true } = this.input;\n\n    if (!coerce) {\n      return _.chain(pipe).keyBy('key').mapValues('value').value();\n    }\n\n    return _.chain(pipe)\n      .keyBy('key')\n      .mapValues(({ value }) => ConfigValue.parse(value))\n      .value();\n  }\n}\n"]}