{"version":3,"file":"NugetProjectProperties.mjs","names":[],"sources":["../../src/dotnet/NugetProjectProperties.ts"],"sourcesContent":["import { type } from 'arktype';\nimport { CaseInsensitiveMap } from '../CaseInsensitiveMap.ts';\nimport {\n  tBooleanString,\n  tEmptyOrBooleanString,\n  type BooleanString,\n  type EmptyOrBooleanString,\n} from '../utils/miscTypes.ts';\nimport {\n  getPrototypesChainOf,\n  listOwnGetters,\n  type ClassLike,\n  type ProtoChainOfClass as PrototypeChainOfClass,\n  type WithProto as WithPrototype,\n} from '../utils/reflection.ts';\nimport { MSBuildProjectProperties, type Class_MSBPP } from './MSBuildProjectProperties.ts';\n\n/**\n * A readonly record of a .csproj or .fsproj with NuGet configuration properties in\n * addition to those specified by {@link MSBuildProjectProperties}. This record\n * should be considered immutable. A new instance should be constructed from MSBuild's evaluation output.\n * @see https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#pack-target-inputs\n */\nexport class NugetProjectProperties extends MSBuildProjectProperties {\n  // #region private\n  private _isPackable: BooleanString | undefined;\n  private _suppressDependenciesWhenPacking: BooleanString | undefined;\n  private _generatePackageOnBuild: BooleanString | undefined;\n  private _packageVersion: string | undefined;\n  private _packageId: string | undefined;\n  private _packageDescription: string | undefined;\n  private _authors: string | undefined;\n  private _copyright: string | undefined;\n  private _packageRequireLicenseAcceptance: BooleanString | undefined;\n  private _developmentDependency: EmptyOrBooleanString | undefined;\n  private _packageLicenseExpression: string | undefined;\n  private _packageLicenseFile: string | undefined;\n  private _packageProjectUrl: string | undefined;\n  private _packageIcon: string | undefined;\n  private _packageReleaseNotes: string | undefined;\n  private _packageReadmeFile: string | undefined;\n  private _packageTags: string | undefined;\n  private _packageOutputPath: string | undefined;\n  private _includeSymbols: EmptyOrBooleanString | undefined;\n  private _includeSource: EmptyOrBooleanString | undefined;\n  private _packageType: string | undefined;\n  private _isTool: EmptyOrBooleanString | undefined;\n  private _repositoryUrl: string | undefined;\n  private _repositoryType: '' | 'git' | 'tfs' | undefined;\n  private _repositoryCommit: string | undefined;\n  private _symbolPackageFormat: 'symbols.nupkg' | 'snupkg' | undefined;\n  private _noPackageAnalysis: EmptyOrBooleanString | undefined;\n  private _minClientVersion: string | undefined;\n  private _includeBuiltOutput: BooleanString | undefined;\n  private _includeContentInPack: BooleanString | undefined;\n  private _buildOutputTargetFolder: string | undefined;\n  private _contentTargetFolders: string | undefined;\n  private _nuspecFile: string | undefined;\n  private _nuspecBasePath: string | undefined;\n  private _nuspecProperties: string | undefined;\n  private _title: string | undefined;\n  private _company: string | undefined;\n  private _product: string | undefined;\n  // #endregion private\n\n  /**\n   * Initialize a readonly record of an MSBuild project's properties, including those related to NuGet.\n   * @param msbuildProjectFullPath See {@link NugetProjectProperties.MSBuildProjectFullPath}\n   * @param properties The dictionary returned by MSBuild's `-getProperty:propname,...` argument\n   */\n  constructor(\n    msbuildProjectFullPath: string,\n    properties: CaseInsensitiveMap<string, string>,\n  ) {\n    /**\n     * names of properties to consume in this constructor instead of its super.\n     * These are the names of getters, lowercased.\n     */\n    const keysToMoveOut = NPPGetterNames.InstanceGetters;\n    /** Entries to remove from {@link properties} and apply to `this` after calling `super` */\n    const consumables = new CaseInsensitiveMap<string, string>();\n    // move property by key from `properties` to `consumables`. The types of keys and values in `properties` do not matter here.\n    for (const key of keysToMoveOut) {\n      const value = NugetProjectProperties.getAndForget(properties, key);\n      if (value !== undefined)\n        consumables.set(key, value);\n    }\n\n    // Pass the remainder to super\n    super(msbuildProjectFullPath, properties);\n\n    const _getAndForget = (key: string) => NugetProjectProperties.getAndForget(consumables, key);\n    let data;\n    this._authors = _getAndForget('Authors');\n    this._buildOutputTargetFolder = _getAndForget('BuildOutputTargetFolder');\n    this._company = _getAndForget('Company');\n    this._contentTargetFolders = _getAndForget('ContentTargetFolders');\n    this._copyright = _getAndForget('Copyright');\n    if (tEmptyOrBooleanString.allows(data = _getAndForget('DevelopmentDependency')))\n      this._developmentDependency = data;\n    if (tBooleanString.allows(data = _getAndForget('IncludeBuiltOutput')))\n      this._includeBuiltOutput = data;\n    if (tBooleanString.allows(data = _getAndForget('IncludeContentInPack')))\n      this._includeContentInPack = data;\n    if (tEmptyOrBooleanString.allows(data = _getAndForget('IncludeSource')))\n      this._includeSource = data;\n    if (tEmptyOrBooleanString.allows(data = _getAndForget('IncludeSymbols')))\n      this._includeSymbols = data;\n    if (tBooleanString.allows(data = _getAndForget('IsPackable')))\n      this._isPackable = data;\n    if (tEmptyOrBooleanString.allows(data = _getAndForget('IsTool')))\n      this._isTool = data;\n    this._minClientVersion = _getAndForget('MinClientVersion');\n    if (tEmptyOrBooleanString.allows(data = _getAndForget('NoPackageAnalysis')))\n      this._noPackageAnalysis = data;\n    this._nuspecBasePath = _getAndForget('NuspecBasePath');\n    this._nuspecFile = _getAndForget('NuspecFile');\n    this._nuspecProperties = _getAndForget('NuspecProperties');\n    this._packageDescription = _getAndForget('PackageDescription');\n    this._packageIcon = _getAndForget('PackageIcon');\n    this._packageId = _getAndForget('PackageId');\n    this._packageLicenseExpression = _getAndForget('PackageLicenseExpression');\n    this._packageLicenseFile = _getAndForget('PackageLicenseFile');\n    this._packageOutputPath = _getAndForget('PackageOutputPath');\n    this._packageProjectUrl = _getAndForget('PackageProjectUrl');\n    this._packageReadmeFile = _getAndForget('PackageReadmeFile');\n    this._packageReleaseNotes = _getAndForget('PackageReleaseNotes');\n    if (tBooleanString.allows(data = _getAndForget('PackageRequireLicenseAcceptance')))\n      this._packageRequireLicenseAcceptance = data;\n    this._packageTags = _getAndForget('PackageTags');\n    this._packageType = _getAndForget('PackageType');\n    this._packageVersion = _getAndForget('PackageVersion');\n    this._product = _getAndForget('Product');\n    this._repositoryCommit = _getAndForget('RepositoryCommit');\n    if (Type_RepoType.allows(data = _getAndForget('RepositoryType')))\n      this._repositoryType = data;\n    this._repositoryUrl = _getAndForget('RepositoryUrl');\n    if (tBooleanString.allows(data = _getAndForget('SuppressDependenciesWhenPacking')))\n      this._suppressDependenciesWhenPacking = data;\n    if (Type_SymbolPackageFormat.allows(data = _getAndForget('SymbolPackageFormat')))\n      this._symbolPackageFormat = data;\n    this._title = _getAndForget('Title');\n  }\n\n  /**\n   * @returns A string-formatted boolean. If 'false', the project's `Pack`\n   * Target (if available) will no-op.\n   *\n   * Default: `\"true\"`\n   */\n  get IsPackable(): BooleanString {\n    return this._isPackable ??= 'true';\n  }\n\n  /**\n   * @returns `\"true\"` or `\"false\"`. If \"true\", the package's dependencies are\n   * excluded from the generated NuGet package.\n   *\n   * Default: `\"false\"`\n   */\n  get SuppressDependenciesWhenPacking(): BooleanString {\n    return this._suppressDependenciesWhenPacking ??= 'false';\n  }\n\n  /**\n   * @returns \"true\" or \"false\". If \"true\", Pack will run after every Build. To\n   * prevent recursion, Build will no longer auto-run before Pack.\n   *\n   * WARNING: Pack may fail if there are no Build artifacts!\n   *\n   * Default: \"false\"\n   */\n  get GeneratePackageOnBuild(): BooleanString {\n    return this._generatePackageOnBuild ??= 'false';\n  }\n\n  /**\n   * @returns A semver-compatible version number in the form\n   * Major.Minor.Patch[-Suffix], where -Suffix identifies prerelease versions.\n   *\n   * Default: {@link Version}\n   * @example \"1.0.0\", \"1.0.0-beta\", \"1.0.0-beta-00345\"\n   */\n  get PackageVersion(): string {\n    return this._packageVersion ??= this.Version;\n  }\n\n  /**\n   * @returns The ID of the resulting NuGet package.\n   *\n   * Default: {@link AssemblyName}\n   */\n  get PackageId(): string {\n    return this._packageId ??= this.AssemblyName;\n  }\n\n  /**\n   * @returns A long description of the package for UI display.\n   *\n   * Default: {@link Description}\n   */\n  get PackageDescription(): string {\n    return this._packageDescription ??= this.Description;\n  }\n\n  /**\n   * @returns A semicolon-separated list of the package's authors, matching the\n   * profile names on nuget.org. These are displayed in the NuGet Gallery on\n   * nuget.org and are used to cross-reference packages by the same authors.\n   *\n   * Default: {@link AssemblyName `AssemblyName`}\n   */\n  get Authors(): string {\n    return this._authors ??= this.AssemblyName;\n  }\n\n  /**\n   * @returns Copyright details for the package.\n   *\n   * Default: `''`\n   */\n  get Copyright(): string {\n    return this._copyright ??= '';\n  }\n\n  /**\n   * @returns A string-formatted boolean. If `\"true\"`, the client must prompt the\n   * consumer to accept the package license before installing the package.\n   *\n   * Default: `\"false\"`\n   */\n  get PackageRequireLicenseAcceptance(): BooleanString {\n    return this._packageRequireLicenseAcceptance ??= 'false';\n  }\n\n  /**\n   * This boolean only affects the package created from the project.\n   * @see\n   * {@link https://github.com/NuGet/Home/wiki/DevelopmentDependency-support-for-PackageReference DevelopmentDependency support for PackageReference}\n   * @returns A string-formatted boolean. If `\"true\"`, the package is marked as\n   * a development-only dependency and is prevented from being included as a\n   * dependency in other packages. With PackageReference (NuGet 4.8+), this flag\n   * also means that compile-time assets are excluded from compilation.\n   *\n   * Default: `''` (`false`-y)\n   */\n  get DevelopmentDependency(): EmptyOrBooleanString {\n    return this._developmentDependency ??= '';\n  }\n\n  /**\n   * @returns The {@link https://spdx.org/licenses/ SPDX license identifier} or\n   * expression.\n   *\n   * Default: `''`\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#packing-a-license-expression-or-a-license-file Packing a license expression or a license file}\n   * @example \"Apache-2.0\"\n   */\n  get PackageLicenseExpression(): string {\n    return this._packageLicenseExpression ??= '';\n  }\n\n  /**\n   * @returns The path to a license file within the package if you're using a\n   * custom license or a license that hasn't been assigned an SPDX identifier.\n   *\n   * Default: `''`\n   */\n  get PackageLicenseFile(): string {\n    return this._packageLicenseFile ??= '';\n  }\n\n  /**\n   * @returns The package's project URL.\n   *\n   * Default: `''`\n   */\n  get PackageProjectUrl(): string {\n    return this._packageProjectUrl ??= '';\n  }\n\n  /**\n   * @returns The package icon path, relative to the root of the package.\n   *\n   * Default: `''`\n   * @description You must pack the referenced icon image file. By default, it\n   * is not packed.\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#packing-an-icon-image-file Packing an icon image file},\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/nuspec#icon icon metadata}\n   */\n  get PackageIcon(): string {\n    return this._packageIcon ??= '';\n  }\n\n  /**\n   * @returns Release notes for the package.\n   *\n   * Default: `''`\n   */\n  get PackageReleaseNotes(): string {\n    return this._packageReleaseNotes ??= '';\n  }\n\n  /**\n   * @returns The path of the package's README file relative to the package's\n   * root.\n   *\n   * Default: `''`\n   * @description You must pack the referenced readme file. By default, it is\n   * not packed.\n   */\n  get PackageReadmeFile(): string {\n    return this._packageReadmeFile ??= '';\n  }\n\n  /**\n   * @returns A semicolon-delimited list of tags that designates the package.\n   *\n   * Default : `''`\n   */\n  get PackageTags(): string {\n    return this._packageTags ??= '';\n  }\n\n  /**\n   * @returns A relative or absolute path determining the where the packed\n   * package will be dropped.\n   *\n   * Default: {@link OutputPath}\n   */\n  get PackageOutputPath(): string {\n    return this._packageOutputPath ??= this.OutputPath;\n  }\n\n  /**\n   * @returns A string-formatted boolean indicating whether the package should\n   * create an additional symbols package when the project is packed. The\n   * symbols package's format is controlled by the `SymbolPackageFormat`\n   * property.\n   *\n   * Default: `''` (false-y)\n   * @description When using `dotnet msbuild my.csproj -restore -t:pack\n   * -p:IncludeSymbols=true`, the corresponding .pdb files are copied along with\n   * other output files (.dll, .exe, .winmd, .xml, .json, .pri). Note that\n   * setting `IncludeSymbols=true` creates a regular package and a symbols\n   * package.\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#includesymbols IncludeSymbols}\n   */\n  get IncludeSymbols(): EmptyOrBooleanString {\n    return this._includeSymbols ??= '';\n  }\n\n  /**\n   * @returns A string-formatted boolean indicating whether the pack process\n   * should create a source package. The source package contains the library's\n   * source code as well as PDB files. Source files are put under the\n   * `src/ProjectName` directory in the resulting package file.\n   *\n   * Default: `''` (false-y)\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#includesource IncludeSource}\n   */\n  get IncludeSource(): EmptyOrBooleanString {\n    return this._includeSource ??= '';\n  }\n\n  /**\n   * @returns A semicolon-separated list of tags indicating the package's\n   * intended use. Custom types are allowed, but cannot be installed via Visual\n   * Studio nor nuget.exe. See https://github.com/NuGet/Home/issues/10468.\n   *\n   * Package types can be version e.g. `PackageType1, 1.0.0.0;PackageType2`\n   *\n   * Default: `''`\n   * @example \"Dependency \", \"DotnetTool\", \"MSBuildSdk\", \"Template\"\n   * @see {@link https://learn.microsoft.com/en-us/nuget/create-packages/set-package-type?tabs=dotnet Set a NuGet package type}\n   */\n  get PackageType(): string {\n    return this._packageType ??= '';\n  }\n\n  /**\n   * @returns A string-formatted boolean specifying whether all output files are\n   * copied to the *tools* folder instead of the *lib* folder.\n   *\n   * Default: `''` (false-y)\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#istool IsTool}\n   */\n  get IsTool(): EmptyOrBooleanString {\n    return this._isTool ??= '';\n  }\n\n  /**\n   * @returns The repository URL used to clone or retrieve source code.\n   *\n   * Default: `''`\n   * @example \"https://github.com/NuGet/NuGet.Client.git\".\n   */\n  get RepositoryUrl(): string {\n    return this._repositoryUrl ??= '';\n  }\n\n  /**\n   * @returns The repository type.\n   *\n   * Default: `''`\n   * @example \"git\", \"fts\"\n   */\n  get RepositoryType(): typeof Type_RepoType.inferOut {\n    return this._repositoryType ??= '';\n  }\n\n  /**\n   * @returns The (optional) repository commit or changeset to indicate which\n   * source the package was built against. {@link RepositoryUrl} must also be\n   * specified for this property to be included.\n   *\n   * Default: `''`\n   * @description This is evaluated only during the \"Pack\" and \"Publish\"\n   * Targets. If using nuget.exe or Visual Studio, NuGet 4.7.0 or later is\n   * required.\n   * @example \"0e4d1b598f350b3dc675018d539114d1328189ef\"\n   */\n  get RepositoryCommit(): string {\n    return this._repositoryCommit ??= '';\n  }\n\n  /**\n   * @returns A string specifying the format of the symbols package. If\n   * \"symbols.nupkg\", a legacy symbols package is created with a .symbols.nupkg\n   * extension containing PDBs, DLLs, and other output files. If \"snupkg\", a\n   * snupkg symbol package is created containing the portable PDBs. The default\n   * is \"symbols.nupkg\".\n   *\n   * Default: \"symbols.nupkg\"\n   * @example \"symbols.nupkg\", \"snupkg\"\n   */\n  get SymbolPackageFormat(): typeof Type_SymbolPackageFormat.inferOut {\n    return this._symbolPackageFormat ??= 'symbols.nupkg';\n  }\n\n  /**\n   * @returns A string-formatted boolean specifying that `pack` should not run\n   * package analysis after building the package.\n   *\n   * Default: `''` (false-y)\n   */\n  get NoPackageAnalysis(): EmptyOrBooleanString {\n    return this._noPackageAnalysis ??= '';\n  }\n\n  /**\n   * @returns A string specifying the minimum version of the NuGet client that\n   * can install this package, enforced by nuget.exe and the Visual Studio\n   * Package Manager.\n   *\n   * Default: `''`\n   */\n  get MinClientVersion(): string {\n    return this._minClientVersion ??= '';\n  }\n\n  /**\n   * @returns A string-formatted boolean value specifying whether the build\n   * output assemblies should be packed into the .nupkg file or not.\n   *\n   * Default: `\"true\"`\n   */\n  get IncludeBuildOutput(): BooleanString {\n    return this._includeBuiltOutput ??= 'true';\n  }\n\n  /**\n   * @returns A string-formatted boolean specifying whether any items that have\n   * a type of Content are included in the resulting package automatically.\n   *\n   * Default: `\"true\"`\n   */\n  get IncludeContentInPack(): BooleanString {\n    return this._includeContentInPack ??= 'true';\n  }\n\n  /**\n   * @returns The output directory of the output assemblies relative to the root\n   * of the package. The output assemblies (and other output files) are copied\n   * into their respective framework folders.\n   *\n   * Default: `''`\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#output-assemblies Output assemblies}\n   */\n  get BuildOutputTargetFolder(): string {\n    return this._buildOutputTargetFolder ??= '';\n  }\n\n  /**\n   * @returns A semicolon-separated list of default locations of where all the\n   * content files should go if `PackagePath` is not specified for them.\n   *\n   * Default: `\"content;contentFiles\"`\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#including-content-in-a-package Including content in a package}\n   */\n  get ContentTargetFolders(): string {\n    return this._contentTargetFolders ??= 'content;contentFiles';\n  }\n\n  /**\n   * @returns The relative or absolute path to the `*.nuspec` file being used\n   * for packing. If specified, it's used **exclusively** for packaging\n   * information, and any information in the projects is not used.\n   *\n   * Default: `''`\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#packing-using-a-nuspec-file Packing using a .nuspec}\n   */\n  get NuspecFile(): string {\n    return this._nuspecFile ??= '';\n  }\n\n  /**\n   * @returns The base path for the *.nuspec* file.\n   *\n   * Default: `''`\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#packing-using-a-nuspec-file Packing using a .nuspec}\n   */\n  get NuspecBasePath(): string {\n    return this._nuspecBasePath ??= '';\n  }\n\n  /**\n   * @returns A semicolon-separated list of key=value pairs.\n   *\n   * Default: `''`\n   * @see\n   * {@link https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#packing-using-a-nuspec-file Packing using a .nuspec}\n   */\n  get NuspecProperties(): string {\n    return this._nuspecProperties ??= '';\n  }\n\n  /**\n   * @returns A human-friendly title of the package, typically used in UI displays as\n   * on nuget.org and the Package Manager in Visual Studio.\n   * Default: {@link PackageId}\n   */\n  get Title(): string {\n    return this._title ??= this.PackageId;\n  }\n\n  /**\n   * @returns Company name or information.\n   *\n   * Default: {@link Authors}\n   */\n  get Company(): string {\n    return this._company ??= this.Authors;\n  }\n\n  /**\n   * @returns Product name or information.\n   *\n   * Default: {@link AssemblyName}\n   */\n  get Product(): string {\n    return this._product ??= this.AssemblyName;\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class NPPGetterNames {\n  private static _prototypeChain: PrototypeChainOfClass<Class_NPP> | undefined;\n\n  private static _instanceGetters: Exclude<keyof NugetProjectProperties, keyof MSBuildProjectProperties>[] | undefined;\n  private static _instanceGettersRecursive: (keyof NugetProjectProperties)[] | undefined;\n  private static _StaticGetters: never[] | undefined;\n  private static _StaticGettersRecursive: (keyof typeof NugetProjectProperties)[] | undefined;\n\n  private static get PrototypeChain(): [Class_NPP, Class_MSBPP] {\n    return this._prototypeChain ??= getPrototypesChainOf(NugetProjectProperties as Class_NPP, 'classes');\n  }\n\n  public static get InstanceGetters(): Exclude<keyof NugetProjectProperties, keyof MSBuildProjectProperties>[] {\n    return this._instanceGetters ??= listOwnGetters(NugetProjectProperties as Class_NPP, 'Instance');\n  }\n\n  public static get InstanceGettersRecursive(): (keyof NugetProjectProperties)[] {\n    return this._instanceGettersRecursive ??= this.PrototypeChain.flatMap(\n      prototype => listOwnGetters<typeof prototype, 'Instance'>(prototype, 'Instance'),\n    );\n  }\n\n  public static get StaticGetters(): never[] {\n    return this._StaticGetters ??= listOwnGetters(NugetProjectProperties as Class_NPP, 'Static');\n  };\n\n  public static get StaticGettersRecursive(): ('prototype' | 'GetFullPath')[] {\n    return this._StaticGettersRecursive ??= this.PrototypeChain.flatMap(\n      prototype => listOwnGetters(prototype, 'Static'),\n    );\n  }\n}\n\nexport type Class_NPP = ClassLike<\n  typeof NugetProjectProperties\n  & WithPrototype<Class_MSBPP>\n>;\nconst Type_RepoType: type<'' | 'git' | 'tfs'> = type('\"\"|\"git\"|\"tfs\"');\nconst Type_SymbolPackageFormat: type<'symbols.nupkg' | 'snupkg'> = type('\"symbols.nupkg\" | \"snupkg\"');\n\n/** @module NugetProjectProperties */\n"],"mappings":"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"}