HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/design.system/node_modules/@rushstack/rig-package/lib/RigConfig.js.map
{"version":3,"file":"RigConfig.js","sourceRoot":"","sources":["../src/RigConfig.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport * as nodeResolve from 'resolve';\nimport stripJsonComments from 'strip-json-comments';\n\nimport { Helpers } from './Helpers';\n\n/**\n * Represents the literal contents of the `config/rig.json` file.\n *\n * @public\n */\nexport interface IRigConfigJson {\n  /**\n   * The name of the rig package to use.\n   *\n   * @remarks\n   * The name must be a valid NPM package name, and must end with the `-rig` suffix.\n   *\n   * Example: `example-rig`\n   */\n  rigPackageName: string;\n\n  /**\n   * Specify which rig profile to use from the rig package.\n   *\n   * @remarks\n   * The name must consist of lowercase alphanumeric words separated by hyphens, for example `\"sample-profile\"`.\n   * If the `\"rigProfile\"` is not specified, then the profile name `\"default\"` will be used.\n   *\n   * Example: `example-profile`\n   */\n  rigProfile?: string;\n}\n\ninterface IRigConfigOptions {\n  projectFolderPath: string;\n\n  rigFound: boolean;\n  filePath: string;\n  rigPackageName: string;\n  rigProfile?: string;\n}\n\n/**\n * Options for {@link RigConfig.loadForProjectFolder}.\n *\n * @public\n */\nexport interface ILoadForProjectFolderOptions {\n  /**\n   * The path to the folder of the project to be analyzed.  This folder should contain a `package.json` file.\n   */\n  projectFolderPath: string;\n\n  /**\n   * If specified, instead of loading the `config/rig.json` from disk, this object will be substituted instead.\n   */\n  overrideRigJsonObject?: IRigConfigJson;\n\n  /**\n   * If specified, force a fresh load instead of returning a cached entry, if one existed.\n   */\n  bypassCache?: boolean;\n}\n\n/**\n * This is the main API for loading the `config/rig.json` file format.\n *\n * @public\n */\nexport interface IRigConfig {\n  /**\n   * The project folder path that was passed to {@link RigConfig.loadForProjectFolder},\n   * which maybe an absolute or relative path.\n   *\n   * @remarks\n   * Example: `.`\n   */\n  readonly projectFolderOriginalPath: string;\n\n  /**\n   * The absolute path for the project folder path that was passed to {@link RigConfig.loadForProjectFolder}.\n   *\n   * @remarks\n   * Example: `/path/to/your-project`\n   */\n  readonly projectFolderPath: string;\n\n  /**\n   * Returns `true` if `config/rig.json` was found, or `false` otherwise.\n   */\n  readonly rigFound: boolean;\n\n  /**\n   * The full path to the `rig.json` file that was found, or `\"\"` if none was found.\n   *\n   * @remarks\n   * Example: `/path/to/your-project/config/rig.json`\n   */\n  readonly filePath: string;\n\n  /**\n   * The `\"rigPackageName\"` field from `rig.json`, or `\"\"` if the file was not found.\n   *\n   * @remarks\n   * The name must be a valid NPM package name, and must end with the `-rig` suffix.\n   *\n   * Example: `example-rig`\n   */\n  readonly rigPackageName: string;\n\n  /**\n   * The `\"rigProfile\"` value that was loaded from `rig.json`, or `\"\"` if the file was not found.\n   *\n   * @remarks\n   * The name must consist of lowercase alphanumeric words separated by hyphens, for example `\"sample-profile\"`.\n   * If the `rig.json` file exists, but the `\"rigProfile\"` is not specified, then the profile\n   * name will be `\"default\"`.\n   *\n   * Example: `example-profile`\n   */\n  readonly rigProfile: string;\n\n  /**\n   * The relative path to the rig profile specified by `rig.json`, or `\"\"` if the file was not found.\n   *\n   * @remarks\n   * Example: `profiles/example-profile`\n   */\n  readonly relativeProfileFolderPath: string;\n\n  /**\n   * Performs Node.js module resolution to locate the rig package folder, then returns the absolute path\n   * of the rig profile folder specified by `rig.json`.\n   *\n   * @remarks\n   * If no `rig.json` file was found, then this method throws an error.  The first time this method\n   * is called, the result is cached and will be returned by all subsequent calls.\n   *\n   * Example: `/path/to/your-project/node_modules/example-rig/profiles/example-profile`\n   */\n  getResolvedProfileFolder(): string;\n\n  /**\n   * An async variant of {@link IRigConfig.getResolvedProfileFolder}\n   */\n  getResolvedProfileFolderAsync(): Promise<string>;\n\n  /**\n   * This lookup first checks for the specified relative path under `projectFolderPath`; if it does\n   * not exist there, then it checks in the resolved rig profile folder.  If the file is found,\n   * its absolute path is returned. Otherwise, `undefined` is returned.\n   *\n   * @remarks\n   * For example, suppose the rig profile is:\n   *\n   * `/path/to/your-project/node_modules/example-rig/profiles/example-profile`\n   *\n   * And suppose `configFileRelativePath` is `folder/file.json`. Then the following locations will be checked:\n   *\n   * `/path/to/your-project/folder/file.json`\n   *\n   * `/path/to/your-project/node_modules/example-rig/profiles/example-profile/folder/file.json`\n   */\n  tryResolveConfigFilePath(configFileRelativePath: string): string | undefined;\n\n  /**\n   * An async variant of {@link IRigConfig.tryResolveConfigFilePath}\n   */\n  tryResolveConfigFilePathAsync(configFileRelativePath: string): Promise<string | undefined>;\n}\n\n/**\n * {@inheritdoc IRigConfig}\n *\n * @public\n */\nexport class RigConfig implements IRigConfig {\n  // For syntax details, see PackageNameParser from @rushstack/node-core-library\n  private static readonly _packageNameRegExp: RegExp = /^(@[A-Za-z0-9\\-_\\.]+\\/)?[A-Za-z0-9\\-_\\.]+$/;\n\n  // Rig package names must have the \"-rig\" suffix.\n  // Also silently accept \"-rig-test\" for our build test projects.\n  private static readonly _rigNameRegExp: RegExp = /-rig(-test)?$/;\n\n  // Profiles must be lowercase alphanumeric words separated by hyphens\n  private static readonly _profileNameRegExp: RegExp = /^[a-z0-9_\\.]+(\\-[a-z0-9_\\.]+)*$/;\n\n  /**\n   * Returns the absolute path of the `rig.schema.json` JSON schema file for `config/rig.json`,\n   * which is bundled with this NPM package.\n   *\n   * @remarks\n   * The `RigConfig` class already performs schema validation when loading `rig.json`; however\n   * this schema file may be useful for integration with other validation tools.\n   *\n   * @public\n   */\n  public static jsonSchemaPath: string = path.resolve(__dirname, './schemas/rig.schema.json');\n  private static _jsonSchemaObject: object | undefined = undefined;\n\n  private static readonly _configCache: Map<string, RigConfig> = new Map();\n\n  /**\n   * {@inheritdoc IRigConfig.projectFolderOriginalPath}\n   */\n  public readonly projectFolderOriginalPath: string;\n\n  /**\n   * {@inheritdoc IRigConfig.projectFolderPath}\n   */\n  public readonly projectFolderPath: string;\n\n  /**\n   * {@inheritdoc IRigConfig.rigFound}\n   */\n  public readonly rigFound: boolean;\n\n  /**\n   * {@inheritdoc IRigConfig.filePath}\n   */\n  public readonly filePath: string;\n\n  /**\n   * {@inheritdoc IRigConfig.rigPackageName}\n   */\n  public readonly rigPackageName: string;\n\n  /**\n   * {@inheritdoc IRigConfig.rigProfile}\n   */\n  public readonly rigProfile: string;\n\n  /**\n   * {@inheritdoc IRigConfig.relativeProfileFolderPath}\n   */\n  public readonly relativeProfileFolderPath: string;\n\n  // Example: /path/to/your-project/node_modules/example-rig/\n  // If the value is `undefined`, then getResolvedProfileFolder() has not calculated it yet\n  private _resolvedRigPackageFolder: string | undefined;\n\n  // Example: /path/to/your-project/node_modules/example-rig/profiles/example-profile\n  // If the value is `undefined`, then getResolvedProfileFolder() has not calculated it yet\n  private _resolvedProfileFolder: string | undefined;\n\n  private constructor(options: IRigConfigOptions) {\n    const { projectFolderPath, rigFound, filePath, rigPackageName, rigProfile = 'default' } = options;\n\n    this.projectFolderOriginalPath = projectFolderPath;\n    this.projectFolderPath = path.resolve(projectFolderPath);\n\n    this.rigFound = rigFound;\n    this.filePath = filePath;\n    this.rigPackageName = rigPackageName;\n    this.rigProfile = rigProfile;\n\n    if (this.rigFound) {\n      this.relativeProfileFolderPath = 'profiles/' + this.rigProfile;\n    } else {\n      this.relativeProfileFolderPath = '';\n    }\n  }\n\n  /**\n   * The JSON contents of the {@link RigConfig.jsonSchemaPath} file.\n   *\n   * @remarks\n   * The JSON object will be lazily loaded when this property getter is accessed, and the result\n   * will be cached.\n   * Accessing this property may make a synchronous filesystem call.\n   */\n  public static get jsonSchemaObject(): object {\n    if (RigConfig._jsonSchemaObject === undefined) {\n      const jsonSchemaContent: string = fs.readFileSync(RigConfig.jsonSchemaPath).toString();\n      RigConfig._jsonSchemaObject = JSON.parse(jsonSchemaContent);\n    }\n    return RigConfig._jsonSchemaObject!;\n  }\n\n  /**\n   * Use this method to load the `config/rig.json` file for a given project.\n   *\n   * @remarks\n   * If the file cannot be found, an empty `RigConfig` object will be returned with {@link RigConfig.rigFound}\n   * equal to `false`.\n   */\n  public static loadForProjectFolder(options: ILoadForProjectFolderOptions): RigConfig {\n    const { overrideRigJsonObject, projectFolderPath } = options;\n\n    const fromCache: RigConfig | undefined =\n      !options.bypassCache && !overrideRigJsonObject\n        ? RigConfig._configCache.get(projectFolderPath)\n        : undefined;\n\n    if (fromCache) {\n      return fromCache;\n    }\n\n    const rigConfigFilePath: string = path.join(projectFolderPath, 'config/rig.json');\n\n    let config: RigConfig | undefined;\n    let json: IRigConfigJson | undefined = overrideRigJsonObject;\n    try {\n      if (!json) {\n        const rigConfigFileContent: string = fs.readFileSync(rigConfigFilePath).toString();\n        json = JSON.parse(stripJsonComments(rigConfigFileContent)) as IRigConfigJson;\n      }\n      RigConfig._validateSchema(json);\n    } catch (error) {\n      config = RigConfig._handleConfigError(error as Error, projectFolderPath, rigConfigFilePath);\n    }\n\n    if (!config) {\n      config = new RigConfig({\n        projectFolderPath: projectFolderPath,\n\n        rigFound: true,\n        filePath: rigConfigFilePath,\n        rigPackageName: json!.rigPackageName,\n        rigProfile: json!.rigProfile\n      });\n    }\n\n    if (!overrideRigJsonObject) {\n      RigConfig._configCache.set(projectFolderPath, config);\n    }\n    return config;\n  }\n\n  /**\n   * An async variant of {@link RigConfig.loadForProjectFolder}\n   */\n  public static async loadForProjectFolderAsync(options: ILoadForProjectFolderOptions): Promise<RigConfig> {\n    const { overrideRigJsonObject, projectFolderPath } = options;\n\n    const fromCache: RigConfig | false | undefined =\n      !options.bypassCache && !overrideRigJsonObject && RigConfig._configCache.get(projectFolderPath);\n\n    if (fromCache) {\n      return fromCache;\n    }\n\n    const rigConfigFilePath: string = path.join(projectFolderPath, 'config/rig.json');\n\n    let config: RigConfig | undefined;\n    let json: IRigConfigJson | undefined = overrideRigJsonObject;\n    try {\n      if (!json) {\n        const rigConfigFileContent: string = (await fs.promises.readFile(rigConfigFilePath)).toString();\n        json = JSON.parse(stripJsonComments(rigConfigFileContent)) as IRigConfigJson;\n      }\n\n      RigConfig._validateSchema(json);\n    } catch (error) {\n      config = RigConfig._handleConfigError(error as Error, projectFolderPath, rigConfigFilePath);\n    }\n\n    if (!config) {\n      config = new RigConfig({\n        projectFolderPath: projectFolderPath,\n\n        rigFound: true,\n        filePath: rigConfigFilePath,\n        rigPackageName: json!.rigPackageName,\n        rigProfile: json!.rigProfile\n      });\n    }\n\n    if (!overrideRigJsonObject) {\n      RigConfig._configCache.set(projectFolderPath, config);\n    }\n    return config;\n  }\n\n  private static _handleConfigError(\n    error: NodeJS.ErrnoException,\n    projectFolderPath: string,\n    rigConfigFilePath: string\n  ): RigConfig {\n    if (error.code !== 'ENOENT' && error.code !== 'ENOTDIR') {\n      throw new Error(error.message + '\\nError loading config file: ' + rigConfigFilePath);\n    }\n\n    // File not found, i.e. no rig config\n    return new RigConfig({\n      projectFolderPath,\n\n      rigFound: false,\n      filePath: '',\n      rigPackageName: '',\n      rigProfile: ''\n    });\n  }\n\n  /**\n   * {@inheritdoc IRigConfig.getResolvedProfileFolder}\n   */\n  public getResolvedProfileFolder(): string {\n    if (this._resolvedRigPackageFolder === undefined) {\n      if (!this.rigFound) {\n        throw new Error('Cannot resolve the rig package because no rig was specified for this project');\n      }\n\n      const rigPackageJsonModuleSpecifier: string = `${this.rigPackageName}/package.json`;\n      const resolveOptions: nodeResolve.Opts = { basedir: this.projectFolderPath };\n      const resolvedRigPackageJsonPath: string = nodeResolve.sync(\n        rigPackageJsonModuleSpecifier,\n        resolveOptions\n      );\n\n      this._resolvedRigPackageFolder = path.dirname(resolvedRigPackageJsonPath);\n    }\n\n    if (this._resolvedProfileFolder === undefined) {\n      this._resolvedProfileFolder = path.join(this._resolvedRigPackageFolder, this.relativeProfileFolderPath);\n\n      if (!fs.existsSync(this._resolvedProfileFolder)) {\n        throw new Error(\n          `The rig profile \"${this.rigProfile}\" is not defined` +\n            ` by the rig package \"${this.rigPackageName}\"`\n        );\n      }\n    }\n\n    return this._resolvedProfileFolder;\n  }\n\n  /**\n   * {@inheritdoc IRigConfig.getResolvedProfileFolderAsync}\n   */\n  public async getResolvedProfileFolderAsync(): Promise<string> {\n    if (this._resolvedRigPackageFolder === undefined) {\n      if (!this.rigFound) {\n        throw new Error('Cannot resolve the rig package because no rig was specified for this project');\n      }\n\n      const rigPackageJsonModuleSpecifier: string = `${this.rigPackageName}/package.json`;\n      const resolveOptions: nodeResolve.Opts = { basedir: this.projectFolderPath };\n      const resolvedRigPackageJsonPath: string = await Helpers.nodeResolveAsync(\n        rigPackageJsonModuleSpecifier,\n        resolveOptions\n      );\n\n      this._resolvedRigPackageFolder = path.dirname(resolvedRigPackageJsonPath);\n    }\n\n    if (this._resolvedProfileFolder === undefined) {\n      this._resolvedProfileFolder = path.join(this._resolvedRigPackageFolder, this.relativeProfileFolderPath);\n\n      if (!(await Helpers.fsExistsAsync(this._resolvedProfileFolder))) {\n        throw new Error(\n          `The rig profile \"${this.rigProfile}\" is not defined` +\n            ` by the rig package \"${this.rigPackageName}\"`\n        );\n      }\n    }\n\n    return this._resolvedProfileFolder;\n  }\n\n  /**\n   * {@inheritdoc IRigConfig.tryResolveConfigFilePath}\n   */\n  public tryResolveConfigFilePath(configFileRelativePath: string): string | undefined {\n    if (!Helpers.isDownwardRelative(configFileRelativePath)) {\n      throw new Error('The configFileRelativePath is not a relative path: ' + configFileRelativePath);\n    }\n\n    const localPath: string = path.join(this.projectFolderPath, configFileRelativePath);\n    if (fs.existsSync(localPath)) {\n      return localPath;\n    }\n    if (this.rigFound) {\n      const riggedPath: string = path.join(this.getResolvedProfileFolder(), configFileRelativePath);\n      if (fs.existsSync(riggedPath)) {\n        return riggedPath;\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * {@inheritdoc IRigConfig.tryResolveConfigFilePathAsync}\n   */\n  public async tryResolveConfigFilePathAsync(configFileRelativePath: string): Promise<string | undefined> {\n    if (!Helpers.isDownwardRelative(configFileRelativePath)) {\n      throw new Error('The configFileRelativePath is not a relative path: ' + configFileRelativePath);\n    }\n\n    const localPath: string = path.join(this.projectFolderPath, configFileRelativePath);\n    if (await Helpers.fsExistsAsync(localPath)) {\n      return localPath;\n    }\n    if (this.rigFound) {\n      const riggedPath: string = path.join(\n        await this.getResolvedProfileFolderAsync(),\n        configFileRelativePath\n      );\n      if (await Helpers.fsExistsAsync(riggedPath)) {\n        return riggedPath;\n      }\n    }\n    return undefined;\n  }\n\n  private static _validateSchema(json: IRigConfigJson): void {\n    for (const key of Object.getOwnPropertyNames(json)) {\n      switch (key) {\n        case '$schema':\n        case 'rigPackageName':\n        case 'rigProfile':\n          break;\n        default:\n          throw new Error(`Unsupported field ${JSON.stringify(key)}`);\n      }\n    }\n    if (!json.rigPackageName) {\n      throw new Error('Missing required field \"rigPackageName\"');\n    }\n\n    if (!RigConfig._packageNameRegExp.test(json.rigPackageName)) {\n      throw new Error(\n        `The \"rigPackageName\" value is not a valid NPM package name: ${JSON.stringify(json.rigPackageName)}`\n      );\n    }\n\n    if (!RigConfig._rigNameRegExp.test(json.rigPackageName)) {\n      throw new Error(\n        `The \"rigPackageName\" value is missing the \"-rig\" suffix: ` + JSON.stringify(json.rigProfile)\n      );\n    }\n\n    if (json.rigProfile !== undefined) {\n      if (!RigConfig._profileNameRegExp.test(json.rigProfile)) {\n        throw new Error(\n          `The profile name must consist of lowercase alphanumeric words separated by hyphens: ` +\n            JSON.stringify(json.rigProfile)\n        );\n      }\n    }\n  }\n}\n"]}