Commit 873712e8 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Merge branch 'dev' into 'master'

Dev

See merge request redmic-project/client/templates!22
parents cf27d52e 2a0e1819
Loading
Loading
Loading
Loading
+2 −386
Original line number Diff line number Diff line
[![Build Status](https://travis-ci.org/csnover/dojo2-core.png?branch=master)](https://travis-ci.org/csnover/dojo2-core)
# Templates

# The Dojo Toolkit

The Dojo Toolkit is a non-prescriptive collection of JavaScript modules
designed to work together to help you build well-architected, high-performance
Web applications.


## This repository

This repository is an experimental repository for the next major version of the
Dojo Toolkit.


## Code conventions

1. All code names and comments MUST be written in English.

### Naming

The following naming conventions MUST be used:

<table>
  <tr>
    <th>Construct</th><th>Convention</th>
  </tr>
  <tr>
    <td>package</td><td>lowerCamelCase</td>
  </tr>
  <tr>
    <td>module returning constructor (“class”)</td><td>UpperCamelCase</td>
  </tr>
  <tr>
    <td>all other modules</td><td>lowerCamelCase</td>
  </tr>
  <tr>
    <td>constants</td><td>UPPER_CASE_WITH_UNDERSCORES</td>
  </tr>
  <tr>
    <td>variables</td><td>lowerCamelCase or _lowerCamelCase</td>
  </tr>
  <tr>
    <td>parameters</td><td>lowerCamelCase or _lowerCamelCase</td>
  </tr>
  <tr>
    <td>public properties</td><td>lowerCamelCase</td>
  </tr>
  <tr>
    <td>protected/private properties</td><td>_lowerCamelCase</td>
  </tr>
</table>

<table>
  <tr>
    <th>Variable type</th><th>Convention</th>
  </tr>
  <tr>
    <td>Deferred</td><td>dfd</td>
  </tr>
  <tr>
    <td>Promise</td><td>promise</td>
  </tr>
  <tr>
    <td>Identifier</td><td>id</td>
  </tr>
  <tr>
    <td>Numeric iterator</td><td>i, j, k, l</td>
  </tr>
  <tr>
    <td>String iterator (for-in)</td><td>k, key</td>
  </tr>
  <tr>
    <td>Event</td><td>event</td>
  </tr>
  <tr>
    <td>Remover handle</td><td>handle</td>
  </tr>
  <tr>
    <td>Error object</td><td>error</td>
  </tr>
  <tr>
    <td>Keyword arguments object</td><td>kwArgs</td>
  </tr>
  <tr>
    <td>All others</td><td>Do not abbreviate</td>
  </tr>
</table>

1. All names SHOULD be as clear as necessary, SHOULD NOT be contracted just for
   the sake of less typing, and MUST avoid unclear shortenings and
   contractions (e.g. `MouseEventHandler`, not `MseEvtHdlr` or `hdl` or
   `h`).
1. Abbreviations and acronyms MUST NOT be uppercase when used as a name (i.e.
   `getXml` not `getXML`).
1. Collections MUST be named using a plural form.
1. Names representing boolean states SHOULD start with `is`, `has`, `can`, or
   `should`.
1. Names representing boolean states MUST NOT be negative (i.e. `isNotFoo` is
   unacceptable).
1. Names representing a count of a number of objects SHOULD start with `num`.
1. Names representing methods SHOULD be verbs or verb phrases (i.e.
   `getValue()`, not `value()`).
1. Non-constructor methods that generate new objects SHOULD use the verb
   “create”.
1. Magic numbers MUST either be represented using a constant or be prefixed
   with a comment representing the literal value of the number (e.g.
   `if (event.keyCode === Keys.KEY_A)` or
   `if (event.keyCode === /* "a" */ 97)`).

### Style

Most style convention matters are addressed by the mandated jshint options.
Those that are not are listed here:

1. Opening bracket of a code block MUST be written on the same line as its
   statement:

   ```javascript
   // right
   if (foo) {

   }

   // wrong
   if (foo)
   {

   }
   ```

1. Blocks with a single statement MUST NOT be written on the same line as the
   opening bracket.

   ```javascript
   // right
   if (foo) {
       bar;
   }

   // wrong
   if (foo) { bar; }
   ```

1. The opening and closing brackets on objects and arrays MUST be surrounded by
   whitespace on the inside of the object literal:

   ```javascript
   // right
   var obj = { foo: 'foo' },
       arr = [ obj, 'foo' ];

   // wrong
   var obj = {foo: 'foo'},
       arr = [obj, 'foo'];
   ```

1. `case` statements inside switches that are intended to fall through to the
   next statement MUST end with a line containing a single comment
   `// fall through`.
1. `else` and `while` keywords must be on their own line, not cuddled with the
   closing bracket of the previous `if`/`do` block. This is consistent with the
   use of all other block statements.
1. `var` declarations that declare multiple variables at once must always put
   each variable identifier on its own line. This prevents variable
   declarations being lost inside long lists that may also include immediate
   assignments.
1. The most appropriate data types SHOULD be used in all cases (i.e. boolean for
   booleans, not number).
1. Files MUST NOT end with an empty line.


## Documentation

1. All public APIs MUST be commented using
   [jsdoc](https://code.google.com/p/jsdoc-toolkit/wiki/TagReference), following the
   [Closure Compiler type expressions syntax](https://developers.google.com/closure/compiler/docs/js-for-compiler)
   for type definitions.
1. Comments MUST be added when intentionally making a change to code that
   appears wrong or inefficient.
1. Code SHOULD be written to be as self-documenting as possible. Comments
   SHOULD be used to explain *why* a particular piece of code was written (or
   why it was written the way it was), not *what* the code does. If code is so
   confusing that it is not clear on its own, it SHOULD be rewritten to be
   clearer.
1. Shorthand reference to a property of a module MUST use dot notation.
   e.g. `foo/module/id.fooFunction`.
2. Shorthand reference to a property of a prototype MUST use hash notation.
   e.g. `foo/module/Constructor#fooFunction`.


## Linting

Code committed to this repository should follow the jshint rules given in the
`.jshintrc` file. Unless otherwise noted, these options MUST NOT be overridden
using `/*jshint*/`.

### Rationales

* `asi`: Relying on ASI is sloppy and leads to inadvertent code breakage in
  edge cases. Using semicolons only in these edge cases requires all authors
  to be aware of them and means semicolons are used inconsistently.
* `bitwise`: Bitwise operators are useful in a wide variety of code and should
  not generally be restricted. Code reviews ensure bitwise operators are not
  accidentally used instead of logical operators.
* `boss`: Intentional assignment within conditionals should be done by wrapping
  the assignment in an extra set of parens.
* `browser`: Most Dojo Toolkit code is designed to run within browser
  environments, so predefining browser globals is desirable. Code that should
  never run within a browser environment should use
  `/*jshint browser:false */`.
* `camelcase`: This option is enabled to ensure consistent variable naming
  conventions that match those defined by the language.
* `couch`: Dojo Toolkit code is not usually designed to run within CouchDB
  environments. This may be set true with a `/*jshint*/` comment for files
  designed to run within CouchDB.
* `curly`: This options is enabled to ensure codebase consistency.
* `debug`: This option is disabled because no code should be committed to the
  repository with debugger statements.
* `devel`: This option is enabled because all platforms supported by the
  toolkit have the global `console` object, and the build system can strip
  console calls for production deployments. `console` methods are used to
  inform developers that they may not be using the toolkit properly.
* `dojo`: This option is disabled because it defines global `dojo`, `dijit`,
  and `dojox` objects, but these objects should never be used by new code.
  The two globals used by the toolkit, `define` and `require`, are defined
  in the `predef` array.
* `eqeqeq`: Even extremely experienced JavaScript programmers do not understand
  all the type coercion rules of JavaScript, which leads to subtle programming
  errors in edge cases. Additionally, non-strict equality can sometimes lead to
  confusion as to what types of input are intended to be accepted by a given
  statement. If type coercion is desired when performing a direct equality
  check, it should be done manually (e.g. `"" + foo === "" + bar`).
* `eqnull`: Non-strict equality to `null` may still be performed as this is the
  cleanest way to check whether a value is either `null` or `undefined`.
* `es5`: All code in version 2 of the toolkit runs only in EcmaScript 5
  environments.
* `esnext`: Code in version 2 of the toolkit should not use ES6 syntaxes.
* `evil`: In order to discourage the incorrect use of `eval` in codebases that
  follow the Dojo code conventions, this option is false by default. However,
  there are situations where the use of `eval` is necessary. In these cases,
  this option may be set to true using `/*jshint*/`.
* `expr`: The use of an expression statement to conditionally evaluate code is
  often clearer than wrapping the code inside a true conditional.
* `forin`: The toolkit requires an ES5 environment, which means users may
  augment `Object.prototype` with non-enumerable properties without breaking
  for-in loops. Therefore, there is no reason to filter these loops.
* `funcscope`: When authoring code, declaring variables as close to the point
  where they are first used is preferred as it helps to cluster groups of code
  together instead of spreading them throughout a function.
* `globalstrict`: Global `"use strict"` breaks third-party code. Since Dojo
  code is never executed in global scope, this should not matter, but is
  provided for completeness.
* `immed`: Immediately invoked function expressions should be wrapped in parens
  for consistency and to ensure that readers of the code understand that the
  value being assigned is the output of the function and not the function
  itself.
* `iterator`: The use of non-standard JavaScript engine properties violates
  cross-platform compatibility and future-proofness, so is forbidden.
* `jquery`: Dojo Toolkit does not access global objects of other libraries.
* `lastsemic`: For consistency, semicolons are required at the end of all
  statements.
* `latedef`: Define after use is a very common pattern that occurs when
  two functions defined within a scope reference one-another through closure.
* `laxbreak`: This has caused enough false positives in the past that it is
  currently disabled.
* `laxcomma`: Comma-first coding style is forbidden by the Dojo style
  guidelines.
* `loopfunc`: XXX rationale
* `mootools`: Dojo Toolkit does not access global objects of other libraries.
* `multistr`: The use of multi-line string syntax virtually always results in
  incorrect code indentation, so is disallowed.
* `newcap`: An uppercase first letter is the only way to notate an object as
  being a constructor that requires the `new` keyword, so this convention is
  enforced.
* `noarg`: In order to discourage the incorrect use of `arguments` in codebases
  that follow the Dojo code conventions, this option is false by default.
  However, there are situations where the use of `arguments.callee` is
  necessary. In these cases, this option may be set to false using
  `/*jshint*/`.
* `node`: The majority of toolkit code is designed to run in the browser, so
  this option is false by default to avoid accidental use of Node.js globals
  in the most common cases. Files that are designed to run in Node.js and
  access its global objects may set this to true using `/*jshint*/`.
* `noempty`: Empty blocks are occasionally useful when iterating using `while`
  or when writing complex conditionals to be easier to understand, so are
  allowed. In the case of conditionals, it is recommended that a comment
  `// do nothing` be added to the empty block to make clear it is intended to
  do nothing.
* `nonew`: XXX rationale
* `nonstandard`: The only two non-standard globals are `escape` and `unescape`;
  the standard `encodeURIComponent` and `decodeURIComponent` should be used
  instead.
* `nomen`: For consistency, dangling underscores at the ends of variables are
  disallowed.
* `onecase`: A switch with one case should be written as an if or if/else
  statement for consistency. *n.b. This option is obsolete in jshint.*
* `onevar`: Same rationale as `funcscope`.
* `passfail`: Stopping at one error simply obfuscates other errors.
* `plusplus`: Unary increment/decrement operators are extremely useful,
  widely used, and widely understood.
* `proto`: The `__proto__` object is not available on all supported platforms,
  so may not be used.
* `prototypejs`: Dojo Toolkit does not access global objects of other
  libraries.
* `regexdash`: Unescaped dash at the end of a character group is common and
  harmless. *n.b. This option is obsolete in jshint.*
* `regexp`: Dot in regular expressions is common and harmless. *n.b. This
  option is obsolete in jshint.*
* `rhino`: Dojo Toolkit code is not usually designed to run within Rhino
  environments. This may be set true with a `/*jshint*/` comment for files
  designed to run within Rhino.
* `undef`: This option prevents the accidental creation or use of global
  variables.
* `unused`: This option prevents the accidental creation of unused variables.
* `scripturl`: XXX rationale
* `shadow`: Variable shadowing is common and is preferable to generating new
  verbose identifier names just to avoid shadowing, especially in cases where
  variables from the closure are not used.
* `smarttabs`: While the toolkit uses hard tabs for indentation, it is
  still important to be able to sometimes align sections of indented code
  precisely using spaces to improve readability. Additionally, jshint has
  historically triggered on code comments that mix spaces and tabs, which is
  not desirable in any scenario.
* `strict`: Strict mode is not supported across all platforms supported by the
  toolkit, which means that code will execute differently on different
  platforms if `"use strict"` is enabled. Furthermore, certain frameworks like
  .NET walk call chains using `arguments.callee` and will break if any function
  within the call chain uses `"use strict"`. Since strict mode provides no
  substantial benefit when code is already being passed through a linter, its
  use within the toolkit is forbidden.
* `sub`: Rarely, array notation is used instead of dot notation to prevent
  build tools from processing or mangling certain sections of code. This should
  be extremely uncommon in new toolkit code, however, so the more efficient dot
  notation is preferred for the sake of consistency. In a situation where array
  notation is necessary, this option may be set to true using `/*jshint*/`.
* `supernew`: As the toolkit uses AMD modules, the creation of singletons
  will generally never require the use of `new function` syntax. However, if
  a situation arises where this is necessary, this option may be set to true
  using `/*jshint*/`.
* `trailing`: Trailing whitespace makes the code look unprofessional.
* `validthis`: Since strict mode is verboten, the value of this setting does
  not matter, so it defaults to `true` (the default for jshint).
* `withstmt`: The `with` statement prevents minification of code blocks and
  ruins JIT performance and so is verboten.
* `white`: Because the toolkit is written by a wide variety of contributors, a
  mechanism for programmatically ensuring whitespace consistency is strongly
  needed in order to ensure that the codebase looks and feels cohesive. This is
  the only mechanism for ensuring whitespace consistency that is available, and
  its rules are not unreasonable. Therefore, it is enabled.
* `worker`: Dojo Toolkit code is not usually designed to run within Web Worker
  environments. This may be set true with a `/*jshint*/` comment for files
  designed to run within Web Workers.
* `wsh`: Dojo Toolkit code is not usually designed to run within WSH
  environments. This may be set true with a `/*jshint*/` comment for files
  designed to run within WSH.
* `yui`: Dojo Toolkit does not access global objects of other libraries.
* `indent`: Same rationale as `white`. An indent value of 4 is enforced because
  it is the most commonly used indent size. Since the toolkit uses hard tabs,
  you may set your editor to whatever indent size you prefer, but jshint will
  always assume that one tab equals four spaces for the purposes of code
  validation.
* `predef`: The only global variables that toolkit code should use are
  `require` and `define`.
* `quotmark`: Same rationale as `white`. A single quote is enforced because it
  requires one fewer keystroke on standard QWERTY keyboards.
* `maxcomplexity`: In order to avoid creating massive, unmaintainable
  functions, a default cyclomatic complexity limit of 10 is enforced on all
  toolkit code. If an individual function can justify an increased complexity
  limit, `/*jshint*/` may be used within the function to increase the limit as
  long as a comment justifying the increase is also provided. Refactoring code
  that violates the complexity limit is preferred.


## Testing

Test cases MUST be written using
[dojo2-teststack](https://github.com/csnover/dojo2-teststack).

XXX% line coverage and XXX% branch coverage MUST be provided for all code
submitted to this repository, as reported by istanbul’s combined coverage
results.


## License

Licensed under the terms of the [New BSD license](LICENSE).
 No newline at end of file
Handlebars templates for REDMIC
+3 −3
Original line number Diff line number Diff line
{
  "name": "@redmic-project/templates",
  "version": "0.25.0",
  "version": "0.26.0",
  "author": "REDMIC",
  "homepage": "https://gitlab.com/redmic-project/client/templates/blob/master/README.md",
  "description": "Plantillas de Handlebars para REDMIC",
  "description": "Handlebars templates for REDMIC",
  "contributors": [
    {
      "name": "Pedro E. Trujillo Brito",
@@ -19,7 +19,7 @@
    "url": "https://gitlab.com/redmic-project/client/templates.git"
  },
  "devDependencies": {
    "glob": "10.3.10",
    "glob": "10.4.1",
    "grunt": "1.6.1",
    "grunt-contrib-clean": "2.0.1",
    "grunt-contrib-copy": "1.0.0",
+48 −29
Original line number Diff line number Diff line
@@ -322,16 +322,16 @@ getobject@~1.0.0:
  resolved "https://registry.yarnpkg.com/getobject/-/getobject-1.0.2.tgz#25ec87a50370f6dcc3c6ba7ef43c4c16215c4c89"
  integrity sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==

glob@10.3.10:
  version "10.3.10"
  resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
  integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
glob@10.4.1:
  version "10.4.1"
  resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2"
  integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==
  dependencies:
    foreground-child "^3.1.0"
    jackspeak "^2.3.5"
    minimatch "^9.0.1"
    minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
    path-scurry "^1.10.1"
    jackspeak "^3.1.2"
    minimatch "^9.0.4"
    minipass "^7.1.2"
    path-scurry "^1.11.1"

glob@^7.1.3:
  version "7.2.0"
@@ -614,10 +614,10 @@ isobject@^3.0.0, isobject@^3.0.1:
  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=

jackspeak@^2.3.5:
  version "2.3.6"
  resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8"
  integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
jackspeak@^3.1.2:
  version "3.4.0"
  resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a"
  integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==
  dependencies:
    "@isaacs/cliui" "^8.0.2"
  optionalDependencies:
@@ -673,10 +673,10 @@ lodash@~4.17.19, lodash@~4.17.21:
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==

"lru-cache@^9.1.1 || ^10.0.0":
  version "10.1.0"
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484"
  integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==
lru-cache@^10.2.0:
  version "10.2.2"
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
  integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==

make-iterator@^1.0.0:
  version "1.0.1"
@@ -705,10 +705,10 @@ minimatch@^3.0.4:
  dependencies:
    brace-expansion "^1.1.7"

minimatch@^9.0.1:
  version "9.0.3"
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
  integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
minimatch@^9.0.4:
  version "9.0.4"
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
  integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
  dependencies:
    brace-expansion "^2.0.1"

@@ -729,6 +729,11 @@ minimist@^1.2.5:
  resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
  integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==

minipass@^7.1.2:
  version "7.1.2"
  resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
  integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==

multimatch@^4.0.0:
  version "4.0.0"
  resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3"
@@ -880,12 +885,12 @@ path-root@^0.1.1:
  dependencies:
    path-root-regex "^0.1.0"

path-scurry@^1.10.1:
  version "1.10.1"
  resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
  integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
path-scurry@^1.11.1:
  version "1.11.1"
  resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
  integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
  dependencies:
    lru-cache "^9.1.1 || ^10.0.0"
    lru-cache "^10.2.0"
    minipass "^5.0.0 || ^6.0.2 || ^7.0.0"

picomatch@^2.3.1:
@@ -980,8 +985,16 @@ sprintf-js@~1.0.2:
  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=

"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
  name string-width-cjs
"string-width-cjs@npm:string-width@^4.2.0":
  version "4.2.3"
  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
  dependencies:
    emoji-regex "^8.0.0"
    is-fullwidth-code-point "^3.0.0"
    strip-ansi "^6.0.1"

string-width@^4.1.0:
  version "4.2.3"
  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -999,8 +1012,7 @@ string-width@^5.0.1, string-width@^5.1.2:
    emoji-regex "^9.2.2"
    strip-ansi "^7.0.1"

"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
  name strip-ansi-cjs
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
  version "6.0.1"
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -1014,6 +1026,13 @@ strip-ansi@^3.0.0:
  dependencies:
    ansi-regex "^2.0.0"

strip-ansi@^6.0.0, strip-ansi@^6.0.1:
  version "6.0.1"
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
  dependencies:
    ansi-regex "^5.0.1"

strip-ansi@^7.0.1:
  version "7.1.0"
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"