From 5321e12512dc29bde87159ae82775ba8b5f91142 Mon Sep 17 00:00:00 2001 From: mrcjhicks Date: Tue, 27 Aug 2024 11:10:16 -0700 Subject: [PATCH] feat: s2 foundations (#135) * feat: s2 foundations w/ corner radius * fix: corner-radius-1000 type was incorrect * fix: icon token for foundation * fix: component-pill-edge-to-visual-only tokens for foundation * fix: component-pill-edge-to-visual-only tokens for foundation on mobile * chore: added s2 foundations workflow action support * chore: testing git actions stuff * chore: testing git actions * chore: testing git action stuff * chore: updating with latest git action definitions * chore: removed renamed workflow script --------- Co-authored-by: Frank Karstens Co-authored-by: Garth Braithwaite --- .github/workflows/_diff-trigger-sync.yml | 4 +- .github/workflows/_diff-trigger-test.yml | 4 +- .github/workflows/diff.js | 5592 ------------- .github/workflows/sync-foundations.yml | 17 + .github/workflows/sync.js | 6914 +++++++++++++++++ .github/workflows/test-foundations.yml | 23 + .../foundations/spectrum/alias/dark.json | 554 +- .../foundations/spectrum/alias/light.json | 398 +- .../foundations/spectrum/alias/wireframe.json | 390 +- .../foundations/spectrum/component/dark.json | 2 +- .../foundations/spectrum/icon/dark.json | 8 +- .../foundations/spectrum/icon/desktop.json | 8 +- .../foundations/spectrum/icon/mobile.json | 12 +- .../spectrum/layout.component/desktop.json | 4 +- .../spectrum/layout.component/mobile.json | 4 +- .../foundations/spectrum/layout/desktop.json | 292 +- .../foundations/spectrum/layout/mobile.json | 314 +- .../foundations/spectrum/palette/dark.json | 2058 +++-- .../foundations/spectrum/palette/light.json | 1672 +++- .../spectrum/palette/wireframe.json | 1672 +++- 20 files changed, 13118 insertions(+), 6824 deletions(-) delete mode 100644 .github/workflows/diff.js create mode 100644 .github/workflows/sync-foundations.yml create mode 100644 .github/workflows/sync.js create mode 100644 .github/workflows/test-foundations.yml diff --git a/.github/workflows/_diff-trigger-sync.yml b/.github/workflows/_diff-trigger-sync.yml index 2f7d11b2..076a2c83 100644 --- a/.github/workflows/_diff-trigger-sync.yml +++ b/.github/workflows/_diff-trigger-sync.yml @@ -1,4 +1,4 @@ -name: (trigger diff sync) +name: (trigger a sync) on: workflow_call: @@ -40,7 +40,7 @@ jobs: node-version: '20.11.1' - name: Sync the token data run: | - node spectrum-tokens-studio-data/.github/workflows/diff.js -action -source=./spectrum-tokens-studio-data/src/tokens-studio/${{ inputs.source }} -destination=./spectrum-tokens/packages/tokens/src/ + node spectrum-tokens-studio-data/.github/workflows/sync.js -action -source=./spectrum-tokens-studio-data/src/tokens-studio/${{ inputs.source }} -destination=./spectrum-tokens/packages/tokens/src/ echo -e "**[SYNCING ${{ inputs.source }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})**\n\n$(cat ./logs/cout.log)" > ./logs/cout.log - name: Create PR Body Message run: | diff --git a/.github/workflows/_diff-trigger-test.yml b/.github/workflows/_diff-trigger-test.yml index 67ab404f..96dee465 100644 --- a/.github/workflows/_diff-trigger-test.yml +++ b/.github/workflows/_diff-trigger-test.yml @@ -1,4 +1,4 @@ -name: (trigger diff test) +name: (trigger a test) on: workflow_call: @@ -36,7 +36,7 @@ jobs: node-version: '20.11.1' - name: Test the token data run: | - node spectrum-tokens-studio-data/.github/workflows/diff.js -action -test -source=./spectrum-tokens-studio-data/src/tokens-studio/${{ inputs.source }} -destination=./spectrum-tokens/packages/tokens/src/ + node spectrum-tokens-studio-data/.github/workflows/sync.js -action -test -source=./spectrum-tokens-studio-data/src/tokens-studio/${{ inputs.source }} -destination=./spectrum-tokens/packages/tokens/src/ echo -e "**[TESTING ${{ inputs.source }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})**\n\n$(cat ./logs/cout.log)" > ./logs/cout.log - name: Append script summary to PR if: ${{ github.event_name == 'pull_request' }} diff --git a/.github/workflows/diff.js b/.github/workflows/diff.js deleted file mode 100644 index 58b7f627..00000000 --- a/.github/workflows/diff.js +++ /dev/null @@ -1,5592 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "./config.ts": -/*!*******************!*\ - !*** ./config.ts ***! - \*******************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _src_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/constants */ "./src/constants.ts"); - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - // TOKENS_STUDIO: path to the tokens studio json file - // override with command line option -source= - TOKENS_STUDIO: '../spectrum-tokens-studio-data/src/tokens-studio/spectrum2', - // TOKENS_STUDIO_DATA_SETS: the data sets we're loading and what is in them, more or less - // the color/layout is what we'll use to differentiate how the data should be handled in terms - // of target files and schemas in spectrum-tokens and some token name handling conventions - TOKENS_STUDIO_DATA_SETS: { [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COLOR]: '-colors', [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].LAYOUT]: '-non-colors' }, - // TOKENS_SPECTRUM: path to the spectrum-tokens source json directory - // override with command line option -destination= - TOKENS_SPECTRUM: '../spectrum-tokens/packages/tokens/src/', - // TESTING: whether changes are written to the repo data - // override with command line option -test - TESTING: false, - // AUTOMATION: whether this is running as a github action, - // in which case we may curtail the cout messages - AUTOMATION: false, - /////////////////////////////////////////////////////////////////////////////////////// - // directory to store the log files - OUTPUT_LOGS: './logs/', - // OUTPUT: when testing, this will write out the cout log so we can append to a pr - COUT_LOG: 'cout.log', - // OUTPUT: file to write new token definitions too: [path | undefined] - TOKENS_OUT_NEW: 'newTokens.json', - // OUTPUT: file to write changed token definitions too: [path | undefined] - TOKENS_OUT_CHANGED: 'changedTokens.json', - // OUTPUT: file to write changed token definitions too: [path | undefined] - TOKENS_OUT_RENAMED: 'renamedTokens.json', - // OUTPUT: file to write deleted token definitions too: [path | undefined] - TOKENS_OUT_DEPRECATED: 'deprecatedTokens.json', - /////////////////////////////////////////////////////////////////////////////////////// - // CONSOLE LOGGING - can suppress this (on for jest tests, and git actions) - SUPPRESS_COUT: false, - // REPORTING: dumps change details to the console - REPORT_VERBOSE: false, - // AUTO-UPDATE: adds uuids to to token studio entries that do not have them - CREATE_UUIDS_FOR_TOKENS_STUDIO: true, - // whether or not we say a spectrum definition that doesn't exist - // in tokens studio implies that the spectrum token should be deprecated - CHECK_FOR_DELETED_TOKENS: true, - // whether or not to write the duplicated token metadata - DISABLE_TOKEN_DUPLICATION_METADATA: true, - /////////////////////////////////////////////////////////////////////////////////////// - // when adding tokens we need to have some specific mapping to the destination files - SPECTRUM_FILES: { - COLOR_PALETTE: 'color-palette.json', - COLOR_SEMANTIC: 'semantic-color-palette.json', - COLOR_ALIASES: 'color-aliases.json', - COLOR_COMPONENT: 'color-component.json', - ICONS: 'icons.json', - LAYOUT: 'layout.json', - LAYOUT_COMPONENT: 'layout-component.json', - TYPOGRAPHY: 'typography.json', - }, - // limits the scope of this script to the specified system ex. 'spectrum', 'express', undefined - SYSTEM: 'spectrum', - // whether or not token value checks should be case sensitive - CASE_SENSITIVE: true, - // whether em values are equivalent to percentage values - EM_IS_PERCENT: true, - // value equivalency map - used to whitelist differences when comparing token values - EQUIVALENT_VALUES: new Map([ - ["bold", "Bold"], - ["regular", "Regular"], - ["italic", "Italic"], - ["extra-bold", "ExtraBold"], - ["medium", "Medium"], - ["normal", "Normal"], - ["light", "Light"], - ["extra-light", "ExtraLight"], - ["black", "Black"], - ]), - // we use this stuff during value type verification and/or when creating new token entries - SCHEMA_TYPES: { - // native - tokens studio has these types - "color": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/color.json", - "opacity": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/opacity.json", - "spacing": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", - "borderwidth": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", - "borderradius": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", - "sizing": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", - "letterspacing": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", - "fontsizes": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-size.json", - "fontweights": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-weight.json", - "lineheights": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/multiplier.json", - "fontfamilies": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-family.json", - "boxshadow": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/drop-shadow.json", - // derived - not native to tokens studio by we can figure them out - // - alias is easy to detect, we just check the value references another tokens - "alias": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/alias.json", - // - all the rest here are marked by tokens studio as being of type "other" and - // we should follow-up and make sure they aren't mis-typed and if there is a valid - // tokens studio type that accurately captures proper usage - // (the tokens are mix of drop-shadow and typography, fyi) - "multiplier": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/multiplier.json", - "dimension": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", - "font-style": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-style.json", - "text-transform": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/text-transform.json", - // set schemas - we don't detect/compare/test these, but we use them when changing/adding to spectrum-tokens - "color-set": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/color-set.json", - "scale-set": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/scale-set.json", - "system-set": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/system-set.json" - } -}); - - -/***/ }), - -/***/ "./src/constants.ts": -/*!**************************!*\ - !*** ./src/constants.ts ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - UUID: 'UUID', - SPECTRUM: 'spectrum', - STYLE: 'style', - SYSTEM: 'SYSTEM', - THEME: 'THEME', - VALUE: 'value', - TYPE: 'type', - COLOR: 'color', - LAYOUT: 'layout', - SYSTEMS: ['spectrum', 'express'], - THEMES: ['light', 'dark', 'darkest', 'wireframe'], - SCALES: ['desktop', 'mobile'], - SCHEMA: '$schema', - SETS: 'sets', - COMPONENT: 'component', - DEPRECATED: 'deprecated', - DEPRECATED_COMMENT: 'deprecated_comment', - BUSTER: '🚫', - // these get used as object keys in type definitions - EXTENSIONS: '$extensions', - EXTENSIONS_STUDIO: 'studio.tokens', - EXTENSIONS_SPECTRUM: 'spectrum-tokens', - EXTENSIONS_SPECTRUM_NAME: 'name', - EXTENSIONS_SPECTRUM_UUID: 'uuid', - EXTENSIONS_SPECTRUM_DUPLICATE: 'constant-token-duplicate', - EXTENSIONS_SPECTRUM_DEPRECATED: 'deprecated-uuids' -}); - - -/***/ }), - -/***/ "./src/core/fileCaching.ts": -/*!*********************************!*\ - !*** ./src/core/fileCaching.ts ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ getFile: () => (/* binding */ getFile), -/* harmony export */ getFileUncached: () => (/* binding */ getFileUncached), -/* harmony export */ storeFile: () => (/* binding */ storeFile), -/* harmony export */ writeFiles: () => (/* binding */ writeFiles) -/* harmony export */ }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -/* istanbul ignore file */ - - -let FILECHANGED = {}; -let FILECACHE = {}; -function getFile(name) { - if (!FILECACHE[name]) { - FILECACHE[name] = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(name, { encoding: 'utf8', flag: 'r' })); - } - return FILECACHE[name]; -} -function getFileUncached(name) { - return JSON.parse(fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(name, { encoding: 'utf8', flag: 'r' })); -} -function storeFile(name, data) { - if (!FILECACHE[name]) - throw new Error('ERROR - FILE NOT LOADED INTO CACHE'); - FILECACHE[name] = data; - FILECHANGED[name] = true; -} -function writeFiles() { - for (const file of Object.keys(FILECHANGED)) { - fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(file, JSON.stringify(FILECACHE[file], null, 2)); - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WROTE: ' + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.trimPath)(file)); - } - FILECACHE = {}; - FILECHANGED = {}; -} - - - -/***/ }), - -/***/ "./src/core/findBranchByUUID.ts": -/*!**************************************!*\ - !*** ./src/core/findBranchByUUID.ts ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function findBranchByUUID(branch, uuid, path) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isObject)(branch)) { - if (branch.uuid === uuid) { - return true; - } - for (const key of Object.keys(branch)) { - path.push(key); - if (findBranchByUUID(branch[key], uuid, path)) { - return true; - } - else { - path.pop(); - } - } - } - return false; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (findBranchByUUID); - - -/***/ }), - -/***/ "./src/core/getEquivalentSpectrumReferences.ts": -/*!*****************************************************!*\ - !*** ./src/core/getEquivalentSpectrumReferences.ts ***! - \*****************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/core/helpers.ts"); -/* harmony import */ var _tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function equivalentReferenceUUID(path, value, studioTokens) { - if (value[0] === '{') { - for (const entry of Object.values(studioTokens)) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filterPath)(path.join('/').split('/'), entry.path.join('/').split('/')) && entry.path.slice().splice(1).join('.') === value.replace('{', '').replace('}', '')) { - return (0,_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(entry); - } - } - } -} -function equivalentStringReference(source, value, studioTokens) { - const uuid = equivalentReferenceUUID(source, value, studioTokens); - if (uuid) { - return '{' + (0,_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(studioTokens[uuid]) + '}'; - } - return value; -} -function getEquivalentSpectrumReferences(source, value, studioTokens) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isString)(value)) { - return equivalentStringReference(source, value, studioTokens); - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isArray)(value)) { - const result = []; - for (const input of value) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isObject)(input)); - result.push(getEquivalentSpectrumReferences(source, input, studioTokens)); - } - return result; - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isObject)(value)) { - const result = {}; - for (const key in value) { - const input = value[key]; - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isString)(input)); - result[key] = getEquivalentSpectrumReferences(source, input, studioTokens); - } - return result; - } - else { - throw new Error('getEquivalentSpectrumReferences - UNHANDLED VALUE TYPE FOR: ' + source.join('.')); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getEquivalentSpectrumReferences); - - -/***/ }), - -/***/ "./src/core/getEquivalentSpectrumValue.ts": -/*!************************************************!*\ - !*** ./src/core/getEquivalentSpectrumValue.ts ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function toRGB(value) { - if (!value.length || value[0] !== '#') { - return value; - } - const r = Number('0x' + value.slice(1, 3)); - const g = Number('0x' + value.slice(3, 5)); - const b = Number('0x' + value.slice(5, 7)); - let a = value.length === 9 ? (Number('0x' + value.slice(7, 9)) / 255).toFixed(2) : undefined; - // dealing with alpha number formatting - if (a && a === '0.00') { - a = '0'; - } - if (a && a !== '0' && a[a.length - 1] === '0') { - a = a.substring(0, a.length - 1); - } - if (a !== undefined) { - value = 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')'; - } - else { - value = 'rgb(' + r + ', ' + g + ', ' + b + ')'; - } - return value; -} -function trimZeros(value) { - const decimal = value.indexOf('.'); - if (decimal >= 0) { - while (value[value.length - 1] === '0' && value.length > decimal + 1) { - value = value.slice(0, -1); - } - } - return value; -} -function equivalentStringSpectrumValue(source, value) { - // convert some random property values to their spectrum equivalent - for (const [c1, c2] of _config__WEBPACK_IMPORTED_MODULE_0__["default"].EQUIVALENT_VALUES) { - if (c2 === value || (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].CASE_SENSITIVE && c2.toLowerCase() === value.toLowerCase())) { - return c1; - } - } - // convert percent to em - if (value[value.length - 1] === '%') { - if (source.join('.').toLowerCase().indexOf('opacity') >= 0) { - return trimZeros((parseInt(value) / 100).toFixed(2)); - } - else { - return (parseInt(value) / 100).toFixed(2) + 'em'; - } - } - // convert hex to rgb - if (value.length && value[0] === '#') { - return toRGB(value); - } - return value; -} -function sortValueKeys(keys) { - const ORDER = ['x', 'y', 'blur', 'color']; - const IGNORE = ['spread', 'type']; - const result = []; - keys.sort((a, b) => { - if (a === b) { - return 0; - } - if (ORDER.indexOf(a) >= 0 && ORDER.indexOf(b) >= 0) { - return ORDER.indexOf(a) < ORDER.indexOf(b) ? -1 : 1; - } - if (ORDER.indexOf(a) >= 0 && ORDER.indexOf(b) === -1) { - return -1; - } - if (ORDER.indexOf(b) >= 0 && ORDER.indexOf(a) === -1) { - return 1; - } - return a < b ? -1 : 1; - }); - for (const key of keys) { - if (!IGNORE.includes(key)) { - result.push(key); - } - } - return result; -} -function getEquivalentSpectrumValue(source, value) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value)) { - return equivalentStringSpectrumValue(source, value); - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(value)) { - const result = []; - for (const input of value) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(input)); - result.push(getEquivalentSpectrumValue(source, input)); - } - return result; - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(value)) { - const result = {}; - for (const key of sortValueKeys(Object.keys(value))) { - const input = value[key]; - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(input)); - result[key] = getEquivalentSpectrumValue(source, input); - } - return result; - } - else { - throw new Error('getEquivalentSpectrumValue - UNHANDLED VALUE TYPE FOR: ' + source.join('.')); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getEquivalentSpectrumValue); - - -/***/ }), - -/***/ "./src/core/getSpectrumValue.ts": -/*!**************************************!*\ - !*** ./src/core/getSpectrumValue.ts ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _getEquivalentSpectrumValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getEquivalentSpectrumValue */ "./src/core/getEquivalentSpectrumValue.ts"); -/* harmony import */ var _getEquivalentSpectrumReferences__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getEquivalentSpectrumReferences */ "./src/core/getEquivalentSpectrumReferences.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2024 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function getSpectrumValue(uuid, studioTokens) { - const studioPath = studioTokens[uuid].path; - const spectrumValue = (0,_getEquivalentSpectrumValue__WEBPACK_IMPORTED_MODULE_0__["default"])(studioPath, studioTokens[uuid].value); - return (0,_getEquivalentSpectrumReferences__WEBPACK_IMPORTED_MODULE_1__["default"])(studioPath, spectrumValue, studioTokens); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getSpectrumValue); - - -/***/ }), - -/***/ "./src/core/helpers.ts": -/*!*****************************!*\ - !*** ./src/core/helpers.ts ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ filterPath: () => (/* binding */ filterPath), -/* harmony export */ isDeprecated: () => (/* binding */ isDeprecated), -/* harmony export */ toHex: () => (/* binding */ toHex) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function filterPath(source, check) { - // ??? rename function - let system; - _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SYSTEMS.forEach((sys) => { - if (source.includes(sys)) { - system = sys; - } - }); - let theme; - _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES.forEach((them) => { - if (source.includes(them)) { - theme = them; - } - }); - let scale; - _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES.forEach((scal) => { - if (source.includes(scal)) { - scale = scal; - } - }); - if (system) { - for (const sys of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SYSTEMS) { - if (check.includes(sys)) { - if (sys !== system) { - return false; - } - else { - break; - } - } - } - } - if (theme) { - for (const them of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { - if (check.includes(them)) { - if (them !== theme) { - return false; - } - else { - break; - } - } - } - } - if (scale) { - for (const scal of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { - if (check.includes(scal)) { - if (scal !== scale) { - return false; - } - else { - break; - } - } - } - } - return true; -} -function toHex(color) { - const r = Number(color.r).toString(16).toUpperCase().padStart(2, '0'); - const g = Number(color.g).toString(16).toUpperCase().padStart(2, '0'); - const b = Number(color.b).toString(16).toUpperCase().padStart(2, '0'); - const a = (Number(color.a) / 255).toFixed(2); - return '#' + r + g + b + (Number(color.a) === 255 ? '' : ' ' + a.replace('0.', '') + '%'); -} -function isDeprecated(path) { - return path.join('.').indexOf(_constants__WEBPACK_IMPORTED_MODULE_0__["default"].BUSTER) >= 0 ? true : false; -} - - - -/***/ }), - -/***/ "./src/core/printableSetName.ts": -/*!**************************************!*\ - !*** ./src/core/printableSetName.ts ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -function printableSetName(spectrumToken) { - if (spectrumToken.sets.length) { - return '/' + spectrumToken.sets.join('/'); - } - return ''; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (printableSetName); - - -/***/ }), - -/***/ "./src/core/schemaStuff.ts": -/*!*********************************!*\ - !*** ./src/core/schemaStuff.ts ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ getSchemaFromType: () => (/* binding */ getSchemaFromType), -/* harmony export */ getSchemaType: () => (/* binding */ getSchemaType) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -const MULTIPLIER = 'multiplier'; -const RATIO = 'ratio'; -const DIMENSION = 'dimension'; -const TYPOGRAPHY = 'typography'; -const FONT_STYLE = 'font-style'; -const TEXT_TRANSFORM = 'text-transform'; -function getSchemaType(studioToken) { - let type = studioToken.type.toLowerCase(); - const tokenName = (0,_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(studioToken).toLowerCase(); - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value) && studioToken.value[0] === '{') { - type = 'alias'; - } - if (tokenName.indexOf('-' + MULTIPLIER) > 0 && (tokenName.indexOf('-' + MULTIPLIER + '-') > 0 || tokenName.indexOf('-' + MULTIPLIER) === tokenName.length - MULTIPLIER.length - 1)) { - type = MULTIPLIER; - } - if (tokenName.indexOf('-' + RATIO) > 0 && (tokenName.indexOf('-' + RATIO + '-') > 0 || tokenName.indexOf('-' + RATIO) === tokenName.length - RATIO.length - 1)) { - type = MULTIPLIER; - } - if (type === 'number' && (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value)) { - const valueAsNumber = parseFloat(studioToken.value); - if (!isNaN(valueAsNumber) && valueAsNumber <= 1 && valueAsNumber >= 0) { - type = MULTIPLIER; - } - } - if (type === 'other' && (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value)) { - const value = studioToken.value; - if (!(0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value) || ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value) && !isNaN(parseInt(value)))) { - type = DIMENSION; - } - else if (studioToken.path.join('.').toLowerCase().includes(TYPOGRAPHY)) { - switch (value.toLowerCase()) { - case 'normal': - case 'italic': - type = FONT_STYLE; - break; - case 'uppercase': - type = TEXT_TRANSFORM; - break; - default: - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - TYPE IS UNHANDLED OTHER: ' + tokenName + ' = ' + studioToken.value); - } - } - } - return type; -} -function getSchemaFromType(type) { - if (Object.keys(_config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES).includes(type)) { - return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES[type]; - } - return undefined; -} - - - -/***/ }), - -/***/ "./src/core/tokenStuff.ts": -/*!********************************!*\ - !*** ./src/core/tokenStuff.ts ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ combineTokenEntries: () => (/* binding */ combineTokenEntries), -/* harmony export */ getCleanedPath: () => (/* binding */ getCleanedPath), -/* harmony export */ getSpectrumTokenSetName: () => (/* binding */ getSpectrumTokenSetName), -/* harmony export */ getTokenDeprecations: () => (/* binding */ getTokenDeprecations), -/* harmony export */ getTokenDuplicated: () => (/* binding */ getTokenDuplicated), -/* harmony export */ getTokenName: () => (/* binding */ getTokenName), -/* harmony export */ getTokenSpectrumName: () => (/* binding */ getTokenSpectrumName), -/* harmony export */ getTokenStyles: () => (/* binding */ getTokenStyles), -/* harmony export */ getTokenUUID: () => (/* binding */ getTokenUUID), -/* harmony export */ getValidSpectrumTokenSets: () => (/* binding */ getValidSpectrumTokenSets), -/* harmony export */ setTokenDeprecations: () => (/* binding */ setTokenDeprecations), -/* harmony export */ setTokenDuplicated: () => (/* binding */ setTokenDuplicated), -/* harmony export */ setTokenSpectrumName: () => (/* binding */ setTokenSpectrumName), -/* harmony export */ setTokenUUID: () => (/* binding */ setTokenUUID) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function filterName(allowed, name, filter) { - const bits = name.split('/'); - for (const bit of bits) { - for (const check of filter) { - if (bit.toLowerCase() === check.toLowerCase() && check.toLowerCase() !== allowed.toLowerCase()) { - return false; - } - } - } - return true; -} -function filterTheme(theme, name) { - return theme ? filterName(theme, name, _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) : true; -} -function getTokenStyles(dataSet, file, startPath, data, studioTokens, studioProblems, theme = undefined, type = undefined) { - // depth first... - function traverseTokenStyles(root, path) { - if (root[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].VALUE]) { - const uuid = getTokenUUID(root); - const extensions = root[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]; - const tokenEntry = { value: root.value, type: root.type, files: [file], path: path, [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]: extensions, dataSet: dataSet }; - // check metadata for unhandled tokens studio data - if (extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_STUDIO]) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - UNHANDLED MODIFIER: ' + path.join('.') + '\n' + JSON.stringify(extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_STUDIO])); - studioProblems.metadata.push(tokenEntry); - } - // check metadata for unhandled spectrum tokens data - if (extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]) { - const spectrumExtensionData = extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]; - if (spectrumExtensionData) { - for (const key of Object.keys(spectrumExtensionData)) { - if (![_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_NAME, _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_UUID, _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DUPLICATE, _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DEPRECATED].includes(key.toLowerCase())) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - UNHANDLED SPECTRUM METADATA: ' + path.join('.') + ' => ' + key); - studioProblems.metadata.push(tokenEntry); - } - } - } - } - // check for unhandled extension metadata entries - if (extensions) { - for (const key of Object.keys(extensions)) { - if (![_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM, _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_STUDIO].includes(key.toLowerCase())) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - UNHANDLED EXTENSION METADATA: ' + path.join('.') + ' => ' + key); - studioProblems.metadata.push(tokenEntry); - } - } - } - // entry is missing a uuid - if (!uuid) { - studioProblems.uuids.push(tokenEntry); - return; - } - if (studioTokens[uuid]) { - // we're going to have a collision, so get prepared - studioProblems.collisions[uuid] = []; - studioProblems.collisions[uuid].push(studioTokens[uuid]); - delete studioTokens[uuid]; - } - if (studioProblems.collisions[uuid]) { - studioProblems.collisions[uuid].push(tokenEntry); - return; - } - if (!type || (tokenEntry.type && tokenEntry.type === type)) { - studioTokens[uuid] = tokenEntry; - } - } - else { - Object.keys(root).forEach((child) => { - if (child[0] !== '$') { - if (filterTheme(theme, child)) { - traverseTokenStyles(root[child], path.concat([child])); - } - } - }); - } - } - traverseTokenStyles(data, startPath); -} -function initializeExtensions(entry) { - let result = entry[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]; - if (!result) { - result = { - [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_STUDIO]: undefined, - [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]: { [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_NAME]: undefined, [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_UUID]: undefined, [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined } - }; - entry[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS] = result; - } - if (result) { - if (!result[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]) { - result[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] = { - [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_NAME]: undefined, - [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_UUID]: undefined, - [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, - [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined - }; - } - return result; - } - throw new Error(); -} -function getTokenDuplicated(entry) { - const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]; - const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] : undefined; - return extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DUPLICATE] !== undefined ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DUPLICATE] : undefined; -} -function setTokenDuplicated(entry, duplicate) { - const extensions = initializeExtensions(entry); - const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]; - if (extensions_spectrum) { - extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DUPLICATE] = duplicate; - } -} -function getTokenUUID(entry) { - const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]; - const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] : undefined; - return extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_UUID] !== undefined ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_UUID] : undefined; -} -function setTokenUUID(entry, uuid) { - const extensions = initializeExtensions(entry); - const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]; - if (extensions_spectrum) { - extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_UUID] = uuid; - } -} -function getTokenSpectrumName(entry) { - const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]; - const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] : undefined; - const extensions_spectrum_name = extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_NAME] ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_NAME] : undefined; - return extensions_spectrum_name && extensions_spectrum_name.length ? extensions_spectrum_name : undefined; -} -function setTokenSpectrumName(entry, name) { - const extensions = initializeExtensions(entry); - const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]; - if (extensions_spectrum) { - extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_NAME] = name; - } -} -function getTokenDeprecations(entry) { - const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]; - const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM] : undefined; - return extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DEPRECATED] !== undefined ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DEPRECATED] : undefined; -} -function setTokenDeprecations(entry, deprecations) { - const extensions = initializeExtensions(entry); - const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM]; - if (extensions_spectrum) { - extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS_SPECTRUM_DEPRECATED] = deprecations; - } -} -function getTokenName(token) { - return token.path.slice().splice(1).join('/'); -} -function getSpectrumTokenSetName(entry) { - const result = []; - for (let bit of entry.path[0].split('/')) { - bit = bit.toLowerCase(); - if (_constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES.includes(bit) || _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES.includes(bit)) { - result.push(bit); - } - } - if (result.length >= 2) { - throw new Error('ERROR - unsupported set within set definition in spectrum tokens data'); - } - return result.length ? result[0] : ''; -} -function getValidSpectrumTokenSets(entry) { - // these should match the sets filtered in getSpectrumTokenSetName() - // and should be used whenever we are comparing the set information - // from the two data sources - const spectrumSets = []; - for (let set of entry.sets) { - set = set.toLowerCase(); - if (_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES.includes(set) || _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES.includes(set)) { - spectrumSets.push(set); - } - } - return spectrumSets; -} -// !!! we would be better off creating a new entry object, -// not recycling the one from the merge list, right? -// otherwise the .merge object contains invalid object data -function combineTokenEntries(entries) { - let files = []; - for (const entry of entries) { - files = files.concat(entry.files); - } - const entry = entries[0]; - entry.path = getCleanedPath(entry.path); - entry.files = files; - setTokenDuplicated(entry, true); - return entry; -} -function getCleanedPath(path) { - // path name w/out set information really - const pathHead = path[0].split('/').slice(0, -1).join('/'); - return [pathHead].concat(path.slice(1)); -} - - - -/***/ }), - -/***/ "./src/diff.ts": -/*!*********************!*\ - !*** ./src/diff.ts ***! - \*********************/ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ "./config.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts"); -/* harmony import */ var _operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operations/readStudioTokens */ "./src/operations/readStudioTokens.ts"); -/* harmony import */ var _operations_readSpectrumTokens__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./operations/readSpectrumTokens */ "./src/operations/readSpectrumTokens.ts"); -/* harmony import */ var _reports_reportTokenCounts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./reports/reportTokenCounts */ "./src/reports/reportTokenCounts.ts"); -/* harmony import */ var _reports_reportUUIDCollisions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./reports/reportUUIDCollisions */ "./src/reports/reportUUIDCollisions.ts"); -/* harmony import */ var _reports_reportMissingStudioUUIDs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./reports/reportMissingStudioUUIDs */ "./src/reports/reportMissingStudioUUIDs.ts"); -/* harmony import */ var _reports_reportMissingSpectrumUUIDs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reports/reportMissingSpectrumUUIDs */ "./src/reports/reportMissingSpectrumUUIDs.ts"); -/* harmony import */ var _reports_reportValueChanges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reports/reportValueChanges */ "./src/reports/reportValueChanges.ts"); -/* harmony import */ var _reports_reportNameChanges__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./reports/reportNameChanges */ "./src/reports/reportNameChanges.ts"); -/* harmony import */ var _reports_reportMissingStudioTokenNames__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./reports/reportMissingStudioTokenNames */ "./src/reports/reportMissingStudioTokenNames.ts"); -/* harmony import */ var _reports_reportNewTokens__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./reports/reportNewTokens */ "./src/reports/reportNewTokens.ts"); -/* harmony import */ var _operations_formatNewSpectrumTokens__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./operations/formatNewSpectrumTokens */ "./src/operations/formatNewSpectrumTokens.ts"); -/* harmony import */ var _operations_formatChangedSpectrumTokens__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./operations/formatChangedSpectrumTokens */ "./src/operations/formatChangedSpectrumTokens.ts"); -/* harmony import */ var _operations_addUUIDs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./operations/addUUIDs */ "./src/operations/addUUIDs.ts"); -/* harmony import */ var _operations_checkValueChanges__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./operations/checkValueChanges */ "./src/operations/checkValueChanges.ts"); -/* harmony import */ var _operations_checkNameChanges__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./operations/checkNameChanges */ "./src/operations/checkNameChanges.ts"); -/* harmony import */ var _operations_checkForDeprecatedTokens__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./operations/checkForDeprecatedTokens */ "./src/operations/checkForDeprecatedTokens.ts"); -/* harmony import */ var _reports_reportDeletedTokens__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./reports/reportDeletedTokens */ "./src/reports/reportDeletedTokens.ts"); -/* harmony import */ var _reports_reportMissingSpectrumSets__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./reports/reportMissingSpectrumSets */ "./src/reports/reportMissingSpectrumSets.ts"); -/* harmony import */ var _reports_reportMissingStudioModes__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./reports/reportMissingStudioModes */ "./src/reports/reportMissingStudioModes.ts"); -/* harmony import */ var _operations_deprecateSpectrumTokens__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./operations/deprecateSpectrumTokens */ "./src/operations/deprecateSpectrumTokens.ts"); -/* harmony import */ var _operations_renameSpectrumTokens__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./operations/renameSpectrumTokens */ "./src/operations/renameSpectrumTokens.ts"); -/* harmony import */ var _operations_changeSpectrumTokens__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./operations/changeSpectrumTokens */ "./src/operations/changeSpectrumTokens.ts"); -/* harmony import */ var _operations_addSpectrumTokens__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./operations/addSpectrumTokens */ "./src/operations/addSpectrumTokens.ts"); -/* harmony import */ var _reports_reportDeprecatedTokenUsage__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./reports/reportDeprecatedTokenUsage */ "./src/reports/reportDeprecatedTokenUsage.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _operations_updateTokenNameMetadata__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./operations/updateTokenNameMetadata */ "./src/operations/updateTokenNameMetadata.ts"); -/* harmony import */ var _operations_resolveSplitTokens__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./operations/resolveSplitTokens */ "./src/operations/resolveSplitTokens.ts"); -/* harmony import */ var _operations_writeStudioTokens__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./operations/writeStudioTokens */ "./src/operations/writeStudioTokens.ts"); -/* harmony import */ var _operations_getModifiedTokens__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./operations/getModifiedTokens */ "./src/operations/getModifiedTokens.ts"); -/* harmony import */ var _operations_checkSchemaChanges__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./operations/checkSchemaChanges */ "./src/operations/checkSchemaChanges.ts"); -/* harmony import */ var _reports_reportSchemaChanges__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./reports/reportSchemaChanges */ "./src/reports/reportSchemaChanges.ts"); -/* harmony import */ var _operations_verifyBranchSchemas__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./operations/verifyBranchSchemas */ "./src/operations/verifyBranchSchemas.ts"); -/* harmony import */ var _operations_checkForRecycledUUIDs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./operations/checkForRecycledUUIDs */ "./src/operations/checkForRecycledUUIDs.ts"); -/* harmony import */ var _reports_reportSetConflicts__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./reports/reportSetConflicts */ "./src/reports/reportSetConflicts.ts"); -/* harmony import */ var _operations_checkModes__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./operations/checkModes */ "./src/operations/checkModes.ts"); -/* harmony import */ var _operations_resolveMergeTokens__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./operations/resolveMergeTokens */ "./src/operations/resolveMergeTokens.ts"); -/* harmony import */ var _operations_checkSets__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./operations/checkSets */ "./src/operations/checkSets.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -let TOKENS_SPECTRUM_SANITIZED; -const TOKENS_STUDIO_SANITIZED = {}; -function syncToSpectrum() { - // sanitize the source/destination paths - these will be used in various read/write operations - TOKENS_SPECTRUM_SANITIZED = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_SPECTRUM); - for (const dataset in _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO_DATA_SETS) { - TOKENS_STUDIO_SANITIZED[dataset] = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO_DATA_SETS[dataset] + (path__WEBPACK_IMPORTED_MODULE_1___default().sep)); - } - // make sure the output log directory exists - if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS))) { - fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS)); - } - // load token data from the data sets - const { spectrumTokens, spectrumProblems } = (0,_operations_readSpectrumTokens__WEBPACK_IMPORTED_MODULE_5__["default"])(TOKENS_SPECTRUM_SANITIZED, _config__WEBPACK_IMPORTED_MODULE_2__["default"].SYSTEM); - const { studioTokens, studioProblems } = (0,_operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_4__.readStudioTokens)(TOKENS_STUDIO_SANITIZED); - // ensure that the token metadata has the proper spectrum token name - // ... this will only check tokens from the non-color set, the color set - // needs to be explicitly defined since those differ, currently - const tokenMetadataNameChanges = (0,_operations_updateTokenNameMetadata__WEBPACK_IMPORTED_MODULE_29__["default"])(studioTokens, studioProblems); - // ??? we do this before doing any further processing of the token data just - // in case there are dependencies on the spectrum token name in any of the - // following operations, but this end up being cumbersome, as we need to check - // a bunch of entries in studioProblems :/ - // we'll need to keep track of these... - let addedUUIDs = []; - // fix missing uuids: if a token marked as new in tokens studio already has an entry in spectrum-tokens - // then we should be using the uuids from spectrum-tokens, and *not* treating this token as new - addedUUIDs = addedUUIDs.concat((0,_operations_checkForRecycledUUIDs__WEBPACK_IMPORTED_MODULE_36__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); - // resolve splitting a single token definition into a set of token definitions - if (Object.keys(studioProblems.split).length) { - addedUUIDs = addedUUIDs.concat((0,_operations_resolveSplitTokens__WEBPACK_IMPORTED_MODULE_30__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); - } - // resolve merging multiple token definitions into a single token definition - if (Object.keys(studioProblems.merge).length) { - addedUUIDs = addedUUIDs.concat((0,_operations_resolveMergeTokens__WEBPACK_IMPORTED_MODULE_39__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); - } - // collect token name changes (from the tokens studio extension metadata) - // ... this operation can identify and register tokens that need new uuids - // because of name changes, so ensure this happens before addUUIDs is called - const renamedTokens = (0,_operations_checkNameChanges__WEBPACK_IMPORTED_MODULE_18__["default"])(spectrumTokens, studioTokens, studioProblems); - // deal with missing uuids in token studio data: create them or report them - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].CREATE_UUIDS_FOR_TOKENS_STUDIO) { - addedUUIDs = addedUUIDs.concat((0,_operations_addUUIDs__WEBPACK_IMPORTED_MODULE_16__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); - } - else { - (0,_reports_reportMissingStudioUUIDs__WEBPACK_IMPORTED_MODULE_8__["default"])(studioProblems); - } - // need to check that token definitions not already captured by split/merge - // need to also have a split merge done to them, too - (0,_operations_checkSets__WEBPACK_IMPORTED_MODULE_40__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems); - // check mode/set usage in studio tokens now that all our token juggling is complete - (0,_operations_checkModes__WEBPACK_IMPORTED_MODULE_38__["default"])(studioTokens, studioProblems); - // report uuid collisions (there are multiple entries in a data set for a single uuid) - (0,_reports_reportUUIDCollisions__WEBPACK_IMPORTED_MODULE_7__["default"])(studioProblems, spectrumProblems); - // report missing uuids in the spectrum-tokens data - (0,_reports_reportMissingSpectrumUUIDs__WEBPACK_IMPORTED_MODULE_9__["default"])(spectrumProblems); - // report missing tokens studio mode entries - (0,_reports_reportMissingStudioModes__WEBPACK_IMPORTED_MODULE_22__["default"])(studioProblems); - // we should be checking that tokens are in the same sets between tokens studio and spectrum-tokens - (0,_reports_reportSetConflicts__WEBPACK_IMPORTED_MODULE_37__["default"])(studioTokens, spectrumTokens); - // report missing spectrum-tokens set entries - (0,_reports_reportMissingSpectrumSets__WEBPACK_IMPORTED_MODULE_21__["default"])(spectrumTokens, spectrumProblems, studioProblems.usedModes); - // report deprecated token usage in tokens studio data - (0,_reports_reportDeprecatedTokenUsage__WEBPACK_IMPORTED_MODULE_27__["default"])(studioTokens, spectrumTokens, spectrumProblems); - // report missing token name in metadata - (0,_reports_reportMissingStudioTokenNames__WEBPACK_IMPORTED_MODULE_12__["default"])(studioTokens); - // report token counts - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].REPORT_VERBOSE) { - (0,_reports_reportTokenCounts__WEBPACK_IMPORTED_MODULE_6__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems); - } - // we want to gather all the tokens that will - // need to be added/re-added to spectrum - const newTokens = []; - // collect actual new uuids - Object.keys(studioTokens).forEach((uuid) => { - if (!Object.keys(spectrumTokens).includes(uuid) && !Object.keys(spectrumProblems.collisions).includes(uuid) && !Object.keys(spectrumProblems.deprecated).includes(uuid)) { - newTokens.push(studioTokens[uuid]); - } - }); - // collect uuids involved in replacement, that we know about - Object.keys(studioProblems.split).forEach((uuid) => { - if (!Object.keys(spectrumProblems.collisions).includes(uuid) && !Object.keys(spectrumProblems.deprecated).includes(uuid)) { - newTokens.push(studioTokens[uuid]); - } - }); - Object.keys(studioProblems.merged).forEach((uuid) => { - if (!Object.keys(spectrumProblems.collisions).includes(uuid) && !Object.keys(spectrumProblems.deprecated).includes(uuid)) { - newTokens.push(studioTokens[uuid]); - } - }); - // this searches for tokens that are considered new from the - // tokens studio data perspective but have pre-existing definitions - // in spectrum-tokens; likely as a result of running a sync - // operation multiple times on the same spectrum-tokens branch - // (which could happen if we created a branch for engineers to test) - (0,_operations_getModifiedTokens__WEBPACK_IMPORTED_MODULE_32__["default"])(studioTokens, spectrumTokens, newTokens); - // collect deleted tokens - let deprecatedTokens = []; - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].CHECK_FOR_DELETED_TOKENS) { - deprecatedTokens = (0,_operations_checkForDeprecatedTokens__WEBPACK_IMPORTED_MODULE_19__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems); - } - // collect value changes - const outdatedValues = (0,_operations_checkValueChanges__WEBPACK_IMPORTED_MODULE_17__["default"])(studioTokens, spectrumTokens); - // collect schema changes - const outdatedSchemas = (0,_operations_checkSchemaChanges__WEBPACK_IMPORTED_MODULE_33__["default"])(studioTokens, spectrumTokens); - // report studio change summaries - if (addedUUIDs.length || Object.keys(tokenMetadataNameChanges).length) { - if (!_config__WEBPACK_IMPORTED_MODULE_2__["default"].AUTOMATION) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('\nSTUDIO SYNC SUMMARY'); - } - else { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('\n
STUDIO SYNC SUMMARY

\n\n```'); - } - for (const addedUUID of addedUUIDs) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('UPDATED METADATA - SPECTRUM UUID: ' + addedUUID); - } - for (const tokenName of Object.keys(tokenMetadataNameChanges)) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('UPDATED METADATA - SPECTRUM NAME: ' + tokenName + ' => ' + tokenMetadataNameChanges[tokenName]); - } - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].AUTOMATION) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('```\n

'); - } - } - // report spectrum change summaries - if (newTokens.length || Object.keys(renamedTokens).length || deprecatedTokens.length || Object.keys(outdatedValues).length || Object.keys(outdatedSchemas).length) { - if (!_config__WEBPACK_IMPORTED_MODULE_2__["default"].AUTOMATION) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('\nSPECTRUM SYNC SUMMARY'); - } - else { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('\n
SPECTRUM SYNC SUMMARY

\n\n```'); - } - if (newTokens.length) { - (0,_reports_reportNewTokens__WEBPACK_IMPORTED_MODULE_13__["default"])(newTokens, spectrumTokens); - } - if (Object.keys(renamedTokens).length) { - (0,_reports_reportNameChanges__WEBPACK_IMPORTED_MODULE_11__["default"])(renamedTokens); - } - if (deprecatedTokens.length) { - (0,_reports_reportDeletedTokens__WEBPACK_IMPORTED_MODULE_20__["default"])(deprecatedTokens); - } - if (Object.keys(outdatedValues).length) { - (0,_reports_reportValueChanges__WEBPACK_IMPORTED_MODULE_10__["default"])(studioTokens, spectrumTokens, outdatedValues); - } - if (Object.keys(outdatedSchemas).length) { - (0,_reports_reportSchemaChanges__WEBPACK_IMPORTED_MODULE_34__["default"])(studioTokens, spectrumTokens, outdatedSchemas); - } - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].AUTOMATION) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('```\n

'); - } - } - // store studio token changes - (0,_operations_writeStudioTokens__WEBPACK_IMPORTED_MODULE_31__["default"])(studioTokens); - // output deprecated tokens object - if (deprecatedTokens.length) { - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_DEPRECATED) { - fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_DEPRECATED), JSON.stringify(deprecatedTokens, null, 2), { encoding: 'utf8', flag: 'w' }); - } - } - else if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_DEPRECATED) { - if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_DEPRECATED))) { - fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_DEPRECATED)); - } - } - // output renamed tokens object - if (Object.keys(renamedTokens).length) { - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_RENAMED) { - fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_RENAMED), JSON.stringify(renamedTokens, null, 2), { encoding: 'utf8', flag: 'w' }); - } - } - else if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_RENAMED) { - if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_RENAMED))) { - fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_RENAMED)); - } - } - // collect & output new tokens data object - let newTokenData = {}; - if (newTokens.length) { - newTokenData = (0,_operations_formatNewSpectrumTokens__WEBPACK_IMPORTED_MODULE_14__["default"])(newTokens, studioTokens); - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_NEW) { - fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_NEW), JSON.stringify(newTokenData, null, 2), { encoding: 'utf8', flag: 'w' }); - } - } - else if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_NEW) { - if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_NEW))) { - fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_NEW)); - } - } - // collect & output changed token data object - let changedTokenData = {}; - if (Object.keys(outdatedValues).length || Object.keys(outdatedSchemas).length) { - changedTokenData = (0,_operations_formatChangedSpectrumTokens__WEBPACK_IMPORTED_MODULE_15__["default"])(outdatedValues, outdatedSchemas, studioTokens, studioProblems, spectrumTokens, spectrumProblems); - if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_CHANGED) { - fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_CHANGED), JSON.stringify(changedTokenData, null, 2), { encoding: 'utf8', flag: 'w' }); - } - } - else if (_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_CHANGED) { - if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_CHANGED))) { - fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_OUT_CHANGED)); - } - } - // RENAME - // If a spectrum token was renamed, we will deprecate the original definition in spectrum-tokens - // and forward the value of that definition to the new token definition via an alias. - // And alias reference to the old token will be changed to reference the new token definition. - (0,_operations_renameSpectrumTokens__WEBPACK_IMPORTED_MODULE_24__["default"])(TOKENS_SPECTRUM_SANITIZED, renamedTokens); - // ADD - // New token definitions will be added to spectrum-tokens. - // Also, tokens that were renamed will get their new token definition added here. - // Also, tokens whose sets were merged will have their definition replaced here. - // Also, Tokens whose value was split into sets will have their definition replaced here. - // (The rename data is used to target the location for new tokens created as part of a rename operation.) - (0,_operations_addSpectrumTokens__WEBPACK_IMPORTED_MODULE_26__["default"])(TOKENS_SPECTRUM_SANITIZED, studioTokens, studioProblems, spectrumTokens, spectrumProblems, newTokenData, renamedTokens); - // CHANGE - // This will update the value and/or schema of existing tokens. - // I think there is some likelihood of references both being changed as part of a rename and here, though. - (0,_operations_changeSpectrumTokens__WEBPACK_IMPORTED_MODULE_25__["default"])(spectrumTokens, changedTokenData); - // DEPRECATE - // There's a couple group of tokens here: ones that aren't found in tokens studio, - // and ones that have the buster symbol in their path name. Those will be marked - // as deprecated if they aren't already. - (0,_operations_deprecateSpectrumTokens__WEBPACK_IMPORTED_MODULE_23__["default"])(spectrumTokens, spectrumProblems, deprecatedTokens); - // SCHEMAS - // This is a check that runs through all the definitions in tokens studio and specifically - // looks to make sure the schema in spectrum-tokens for a set is correct. The value schemas - // will be checked above, but this just verifies the theme/scale set if needed. - (0,_operations_verifyBranchSchemas__WEBPACK_IMPORTED_MODULE_35__["default"])(studioTokens, spectrumTokens); - // all done! - if (!_config__WEBPACK_IMPORTED_MODULE_2__["default"].TESTING) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)(''); - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_28__.writeFiles)(); - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('\nSYNC COMPLETE'); - } - else { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('\nTEST COMPLETE'); - } -} -function parseArgs() { - const source = '-source='; // path to the tokens-studio-data repo - const destination = '-destination='; // path to the spectrum-tokens repo - const test = '-test'; // whether this is a test run, and changes will not be written to the repos - const action = '-action'; // whether this is running as an action - const args = {}; - process.argv.forEach((arg) => { - if (arg.indexOf(source) === 0) { - args.source = arg.slice(source.length); - } - if (arg.indexOf(destination) === 0) { - args.destination = arg.slice(destination.length); - } - if (arg.indexOf(test) === 0) { - args.test = true; - } - if (arg.indexOf(action) === 0) { - args.action = true; - } - }); - for (const arg of Object.keys(args)) { - switch (arg) { - case 'source': - _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO = args[arg]; - break; - case 'destination': - _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_SPECTRUM = args[arg]; - break; - case 'test': - _config__WEBPACK_IMPORTED_MODULE_2__["default"].TESTING = args[arg]; - break; - case 'action': - _config__WEBPACK_IMPORTED_MODULE_2__["default"].SUPPRESS_COUT = true; // console log will be written to the action summary, instead - _config__WEBPACK_IMPORTED_MODULE_2__["default"].AUTOMATION = true; // in case we want to format output for github - break; - } - } -} -function writeCoutLog() { - fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].COUT_LOG), (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getcout)().join('\n') + '\n', { encoding: 'utf8', flag: 'w' }); -} -async function main() { - try { - syncToSpectrum(); - } - finally { - writeCoutLog(); - } -} -parseArgs(); -await main(); - -__webpack_async_result__(); -} catch(e) { __webpack_async_result__(e); } }, 1); - -/***/ }), - -/***/ "./src/helpers.ts": -/*!************************!*\ - !*** ./src/helpers.ts ***! - \************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assert: () => (/* binding */ assert), -/* harmony export */ cout: () => (/* binding */ cout), -/* harmony export */ getcout: () => (/* binding */ getcout), -/* harmony export */ isArray: () => (/* binding */ isArray), -/* harmony export */ isObject: () => (/* binding */ isObject), -/* harmony export */ isString: () => (/* binding */ isString), -/* harmony export */ sanitizePath: () => (/* binding */ sanitizePath), -/* harmony export */ timeout: () => (/* binding */ timeout), -/* harmony export */ trimPath: () => (/* binding */ trimPath) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config */ "./config.ts"); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! chalk */ "./node_modules/chalk/source/index.js"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:process */ "node:process"); -/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_process__WEBPACK_IMPORTED_MODULE_2__); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -/* istanbul ignore file */ // jest coverage ignore, fyi - - - - -const ISSUEMARK = ' > '; -const WARNING = 'WARNING - '; -const ERROR = 'ERROR - '; -const LOG = []; -function cout(msg) { - // eslint-disable-next-line no-prototype-builtins - if (msg && msg.hasOwnProperty && msg.hasOwnProperty('stack') && msg.stack.length) { - msg = msg.stack; - } - if (isString(msg)) { - const previousLineWasIssue = LOG.length && (LOG[LOG.length - 1].indexOf(ISSUEMARK) === 0 || LOG[LOG.length - 1].indexOf(ISSUEMARK) === 1) ? true : false; - if (msg.indexOf(ERROR) === 0) { - msg = ISSUEMARK + msg.split('\n').join('\n' + ISSUEMARK + ' '.repeat(ERROR.length)); - msg = previousLineWasIssue ? msg : '\n' + msg; - } - else if (msg.indexOf(WARNING) === 0) { - msg = ISSUEMARK + msg.split('\n').join('\n' + ISSUEMARK + ' '.repeat(WARNING.length)); - msg = previousLineWasIssue ? msg : '\n' + msg; - } - else { - msg = previousLineWasIssue ? '\n' + msg : msg; - } - LOG.push(msg); - if (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].SUPPRESS_COUT) { - if (msg.indexOf(ERROR) >= 0) { - // eslint-disable-next-line no-console - console.log(chalk__WEBPACK_IMPORTED_MODULE_3__["default"].red(msg)); - } - else if (msg.indexOf(WARNING) >= 0) { - // eslint-disable-next-line no-console - console.log(chalk__WEBPACK_IMPORTED_MODULE_3__["default"].yellow(msg)); - } - else { - // eslint-disable-next-line no-console - console.log(msg); - } - } - } - else { - try { - if (isObject(msg) || (isArray(msg) && msg.length && (isObject(msg[0]) || isArray(msg[0])))) { - // for objects and arrays of objects and arrays of arrays - msg = JSON.stringify(msg, null, 2); - } - else if (isArray(msg)) { - // for simple arrays - msg = JSON.stringify(msg); - } - LOG.push(msg); - } - catch (error) { - // the json.stringify failed, so just output something lame into the log - // could happen if there's a circular reference or something - LOG.push(typeof msg); - } - if (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].SUPPRESS_COUT) { - // eslint-disable-next-line no-console - console.log(msg); - } - } -} -function getcout() { - return LOG; -} -// used to force a delay -function timeout(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} -function isObject(a) { - return !!a && a.constructor && (a.constructor === Object || a.constructor.name === 'Object'); -} -function isArray(a) { - return !!a && a.constructor && (a.constructor === Array || a.constructor.name === 'Array'); -} -function isString(a) { - return typeof a === 'string' || a instanceof String; -} -function assert(condition, message) { - if (!condition) - throw new Error(message ? message : undefined); -} -function sanitizePath(filePath) { - if (filePath.indexOf('\0') !== -1) { - throw new Error('ACCESS DENIED'); - } - let result = path__WEBPACK_IMPORTED_MODULE_1___default().normalize(filePath).replace(/^(\.\.(\/|\\|$))+/, ''); - if (filePath.indexOf('../') === 0) { - const dir = (0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)().split((path__WEBPACK_IMPORTED_MODULE_1___default().sep)).slice(0, -1).join((path__WEBPACK_IMPORTED_MODULE_1___default().sep)); - if (dir) { - // going to allow a bump up to the parent directory for local runs - // ... but that's as far as we'll allow - result = path__WEBPACK_IMPORTED_MODULE_1___default().join(dir, result); - if (result.indexOf(dir) !== 0) { - throw new Error('ACCESS DENIED'); - } - } - else { - throw new Error('ACCESS DENIED'); - } - } - else { - // otherwise requires paths from the command line to be relative to the current working directory - // this should always be true when running as a git action - result = path__WEBPACK_IMPORTED_MODULE_1___default().join((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)(), result); - if (result.indexOf((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)()) !== 0) { - throw new Error('ACCESS DENIED'); - } - } - return result; -} -function trimPath(path) { - let result = path; - if (_config__WEBPACK_IMPORTED_MODULE_0__["default"].AUTOMATION) { - if (result.indexOf((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)()) === 0) { - result = '`' + result.slice((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)().length) + '`'; - } - } - return result; -} - - - -/***/ }), - -/***/ "./src/operations/addSpectrumTokens.ts": -/*!*********************************************!*\ - !*** ./src/operations/addSpectrumTokens.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - -const PERSIST = ['private', 'deprecated', 'deprecated_comment']; -function presistMetadata(source, destination) { - for (const metadata of PERSIST) { - if (source[metadata] !== undefined) { - destination[metadata] = source[metadata]; - } - } -} -function sortTokens(data, renamedTokens) { - const result = {}; - const allTokens = Object.keys(data).reverse(); - function getSortedTokens(token) { - const head = token.split('-').slice(0, -1).join('-'); - const tokens = [token]; - for (const t of allTokens) { - const tokenBits = t.split('-'); - if (!isNaN(Number(tokenBits[tokenBits.length - 1]))) { - if (t.split('-').slice(0, -1).join('-') === head) { - tokens.push(t); - } - } - } - tokens.sort((a, b) => { - const aValue = Number(a.split('-').pop()); - const bValue = Number(b.split('-').pop()); - if (aValue < bValue) { - return -1; - } - if (aValue > bValue) { - return 1; - } - return 0; - }); - return tokens; - } - do { - const token = allTokens.pop(); - if (token && !result[token]) { - const tokenBits = token.split('-'); - if (!isNaN(Number(tokenBits[tokenBits.length - 1]))) { - const sorted = getSortedTokens(token); - for (const sortedToken of sorted) { - result[sortedToken] = data[sortedToken]; - } - } - else if (Object.keys(renamedTokens).includes(token) && data[renamedTokens[token]]) { - result[token] = data[token]; - result[renamedTokens[token]] = data[renamedTokens[token]]; - } - else { - result[token] = data[token]; - } - } - } while (allTokens.length); - return result; -} -function addTokens(tokens, path, renamedTokens) { - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(path); - // !!! deal with onloaded set information not in the tokens data, but just in the file - // --- S2 wireframe (keep existing if there are sets in the new data) - // --- S1 express (always keep, should be able to keep top level system set) - for (const tokenName of Object.keys(tokens)) { - let merged; - if (!data[tokenName]) { - // it is a new token entry, don't need to worry about existing data - data[tokenName] = tokens[tokenName]; - merged = true; - } - else if (data[tokenName] && data[tokenName].sets && tokens[tokenName].sets) { - // both exist and have sets, we merge by overwriting existing set data - // ??? this won't remove sets that are uncaptured by the tokens studio data - // like pre-existing wireframe entries in S2 - let root = data[tokenName]; - if (data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM]) { - root = data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM]; - } - for (const set of Object.keys(tokens[tokenName].sets)) { - root.sets[set] = tokens[tokenName].sets[set]; - } - merged = true; - } - else if (data[tokenName] && !data[tokenName].sets && tokens[tokenName].sets) { - // a token is transitioning from being without sets to being one with sets, - // so we'll replace the whole thing, don't need to worry about existing data - if (data[tokenName].component) { - tokens[tokenName] = Object.assign({ component: data[tokenName].component }, tokens[tokenName]); - } - presistMetadata(data[tokenName], tokens[tokenName]); - data[tokenName] = tokens[tokenName]; - merged = true; - } - else if (data[tokenName] && data[tokenName].sets && !tokens[tokenName].sets) { - // we're wiping out the original set information since our new data doesn't have any - // but we need to worry about uncaptured system set data - const tokenDefinition = {}; - const hasSpectrumSet = data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM] ? true : false; - // if we're updating the root, make sure we preserve component information - if (!hasSpectrumSet && data[tokenName].component) { - tokenDefinition.component = data[tokenName].component; - } - // store all the token stuff in the new token definition - for (const key of Object.keys(tokens[tokenName])) { - tokenDefinition[key] = tokens[tokenName][key]; - } - // place the new token definition in the appropriate place - if (!hasSpectrumSet) { - presistMetadata(data[tokenName], tokenDefinition); - data[tokenName] = tokenDefinition; - } - else { - data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM] = tokenDefinition; - } - merged = true; - } - if (!merged) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('ERROR - could not merge new token definition: ' + tokenName); - } - } - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.storeFile)(path, sortTokens(data, renamedTokens)); -} -function findUUID(data) { - if (data.uuid) { - return data.uuid; - } - for (const key of Object.keys(data)) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isObject)(data[key])) { - const uuid = findUUID(data[key]); - if (uuid) { - return uuid; - } - } - } - return undefined; -} -function filterKeys(keys, bit) { - const result = []; - for (const key of keys) { - const bits = key.split('-'); - if (bits[0] === bit) { - result.push(bits.slice(1).join('-')); - } - } - return result; -} -function isLayoutToken(path, name) { - // we're going to make a guess regarding the name whether it is layout token or a layout-component token - const layoutData = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(path + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT); - const componentData = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(path + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT_COMPONENT); - let layoutKeys = Object.keys(layoutData); - let componentKeys = Object.keys(componentData); - const bits = name.split('-').reverse(); - while (bits.length && layoutKeys.length && componentKeys.length) { - const bit = bits.pop(); - if (bit) { - layoutKeys = filterKeys(layoutKeys, bit); - componentKeys = filterKeys(componentKeys, bit); - } - } - if (layoutKeys.length && !componentKeys.length) { - return true; - } - return false; -} -function addSpectrumTokens(tokensPath, studioTokens, studioProblems, spectrumTokens, spectrumProblems, newTokens, renamedTokens) { - if (Object.keys(newTokens).length) { - const colorPalette = {}; - const colorAlias = {}; - const colorSemantic = {}; - const colorComponent = {}; - const icons = {}; - const layout = {}; - const layoutComponent = {}; - const typography = {}; - for (const tokenName of Object.keys(newTokens)) { - const tokenEntry = newTokens[tokenName]; - const uuid = findUUID(tokenEntry); - if (!uuid) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('ERROR - missing uuid: ' + tokenName); - continue; - } - // look for existing reference to the token name in the - // spectrum files, likely a deprecated reference - // ... or look for the renamed reference - let oldTokenName = undefined; - for (const name of Object.keys(renamedTokens)) { - if (renamedTokens[name] === tokenName) { - oldTokenName = name; - } - } - let found = false; - for (const file of Object.keys(_config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES)) { - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES[file]); - if (data && (data[tokenName] || (oldTokenName && data[oldTokenName]))) { - switch (_config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES[file]) { - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_PALETTE: - colorPalette[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_SEMANTIC: - colorSemantic[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_ALIASES: - colorAlias[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_COMPONENT: - colorComponent[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.ICONS: - icons[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT: - layout[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT_COMPONENT: - layoutComponent[tokenName] = tokenEntry; - break; - case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.TYPOGRAPHY: - typography[tokenName] = tokenEntry; - break; - } - found = true; - break; - } - } - if (found) { - // the token already exist in a file, so we'll add this - // where we found it, already - continue; - } - const studioToken = studioTokens[uuid]; - const path = []; - studioToken.path.forEach((p) => { - path.push(p.toLowerCase()); - }); - if (studioToken.dataSet === _constants__WEBPACK_IMPORTED_MODULE_1__["default"].COLOR) { - // everything color related - if (path.includes('palette')) { - colorPalette[tokenName] = tokenEntry; - } - else if (path.includes('semantic')) { - colorSemantic[tokenName] = tokenEntry; - } - else if (path.includes('icon')) { - icons[tokenName] = tokenEntry; - } - else if (path.includes('component')) { - colorComponent[tokenName] = tokenEntry; - } - else { - colorAlias[tokenName] = tokenEntry; - } - } - else { - // everything not color related - if (path.includes('icon')) { - icons[tokenName] = tokenEntry; - } - else if (path.includes('typography')) { - typography[tokenName] = tokenEntry; - } - else if (isLayoutToken(tokensPath, tokenName)) { - layout[tokenName] = tokenEntry; - } - else { - layoutComponent[tokenName] = tokenEntry; - } - } - } - if (Object.keys(colorPalette).length) { - addTokens(colorPalette, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_PALETTE, renamedTokens); - } - if (Object.keys(colorSemantic).length) { - addTokens(colorSemantic, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_SEMANTIC, renamedTokens); - } - if (Object.keys(colorAlias).length) { - addTokens(colorAlias, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_ALIASES, renamedTokens); - } - if (Object.keys(colorComponent).length) { - addTokens(colorComponent, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_COMPONENT, renamedTokens); - } - if (Object.keys(icons).length) { - addTokens(icons, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.ICONS, renamedTokens); - } - if (Object.keys(typography).length) { - addTokens(typography, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.TYPOGRAPHY, renamedTokens); - } - if (Object.keys(layout).length) { - addTokens(layout, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT, renamedTokens); - } - if (Object.keys(layoutComponent).length) { - addTokens(layoutComponent, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT_COMPONENT, renamedTokens); - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (addSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/addUUIDs.ts": -/*!************************************!*\ - !*** ./src/operations/addUUIDs.ts ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _getUniqueId__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getUniqueId */ "./src/operations/getUniqueId.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function addUUIDs(studioTokens, studioProblems, spectrumTokens, spectrumProblems, ignored = []) { - const results = []; - for (const entry of Object.values(studioProblems.uuids)) { - const uuid = (0,_getUniqueId__WEBPACK_IMPORTED_MODULE_1__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems, entry); - const currentUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(entry); - if (currentUUID && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(entry) !== uuid) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenDeprecations)(entry, currentUUID); - } - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, uuid); - studioTokens[uuid] = entry; - studioProblems.uuids.splice(studioProblems.uuids.indexOf(entry), 1); - results.push(entry.path.join('.')); - } - return results; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (addUUIDs); - - -/***/ }), - -/***/ "./src/operations/changeSpectrumTokens.ts": -/*!************************************************!*\ - !*** ./src/operations/changeSpectrumTokens.ts ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/findBranchByUUID */ "./src/core/findBranchByUUID.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - -function changeToken(data, uuid, value, schema) { - const path = []; - if ((0,_core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__["default"])(data, uuid, path)) { - let root = data; - for (let i = 0; i < path.length - 1; ++i) { - root = root[path[i]]; - } - // we want to preserve the key order, - // so we make a new object and construct - // it in the order we want the value to - // be in the token definition - makes things - // more complicated, but whatever - const key = path[path.length - 1]; - const newObject = {}; - if (root[key][_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COMPONENT]) { - newObject[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COMPONENT] = root[key][_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COMPONENT]; - } - newObject[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA] = schema; - newObject.value = value; - newObject.uuid = uuid; - for (const bit of Object.keys(root[key])) { - if (!newObject[bit]) { - newObject[bit] = root[key][bit]; - } - } - root[key] = newObject; - } - else { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('ERROR - could not find entry in spectrum tokens: ' + uuid); - } -} -function getChanges(data) { - let results = []; - if (data.value && data.uuid && data.schema) { - results.push({ value: data.value, uuid: data.uuid, schema: data.schema }); - } - for (const key of Object.keys(data)) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(data[key])) { - results = results.concat(getChanges(data[key])); - } - } - return results; -} -function changeSpectrumTokens(spectrumTokens, changedTokens) { - const changes = getChanges(changedTokens); - for (const change of changes) { - const file = spectrumTokens[change.uuid].file; - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.getFile)(file); - changeToken(data, change.uuid, change.value, change.schema); - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.storeFile)(file, data); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (changeSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/checkForDeprecatedTokens.ts": -/*!****************************************************!*\ - !*** ./src/operations/checkForDeprecatedTokens.ts ***! - \****************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); -/* harmony import */ var _core_printableSetName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/printableSetName */ "./src/core/printableSetName.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function validToken(spectrumToken, validScales, validThemes) { - if (!spectrumToken.sets.length) { - return true; - } - for (const set of spectrumToken.sets) { - if (validScales.includes(set) || validThemes.includes(set)) { - return true; - } - } - return false; -} -function checkForDeprecatedTokens(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - const result = []; - // only deprecate tokens in themes/scales found in the studio token data - const validScales = []; - const validThemes = []; - for (const uuid of Object.keys(studioTokens)) { - let set = studioTokens[uuid].path[0].split('/').pop(); - if (set) { - set = set.toLowerCase(); - for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { - if (scale === set && !validScales.includes(scale)) { - validScales.push(scale); - } - } - for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { - if (theme === set && !validThemes.includes(theme)) { - validThemes.push(theme); - } - } - } - } - for (const uuid of Object.keys(spectrumTokens)) { - if (validToken(spectrumTokens[uuid], validScales, validThemes)) { - if (!Object.keys(studioTokens).includes(uuid) && !Object.keys(studioProblems.collisions).includes(uuid)) { - result.push({ uuid: uuid, token: spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]) }); - } - else if (Object.keys(studioTokens).includes(uuid) && (0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.isDeprecated)(studioTokens[uuid].path)) { - result.push({ uuid: uuid, token: spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]) }); - } - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkForDeprecatedTokens); - - -/***/ }), - -/***/ "./src/operations/checkForRecycledUUIDs.ts": -/*!*************************************************!*\ - !*** ./src/operations/checkForRecycledUUIDs.ts ***! - \*************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function checkForRecycledUUIDs(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - const result = []; - for (const entry of Object.values(studioProblems.uuids)) { - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); - const tokenSetName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(entry); - let found; - const uuids = Object.keys(spectrumTokens); - while (uuids.length && !found) { - const uuid = uuids.pop(); - if (uuid && spectrumTokens[uuid].name === tokenName) { - const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getValidSpectrumTokenSets)(spectrumTokens[uuid]); - if (tokenSetName.length && spectrumSets.length === 1 && tokenSetName === spectrumSets[0]) { - found = uuid; - } - else if (!tokenSetName.length && !spectrumSets.length) { - found = uuid; - } - } - } - if (found) { - if (!studioTokens[found]) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, found); - studioProblems.uuids.splice(studioProblems.uuids.indexOf(entry), 1); - studioTokens[found] = entry; - result.push(entry.path.join('.')); - } - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkForRecycledUUIDs); - - -/***/ }), - -/***/ "./src/operations/checkModes.ts": -/*!**************************************!*\ - !*** ./src/operations/checkModes.ts ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function checkMissingModes(name, sets, allScales, allThemes) { - let result = []; - const missingScales = []; - const missingThemes = []; - for (const scale of allScales) { - if (!sets.includes(scale)) { - missingScales.push(scale); - } - } - for (const theme of allThemes) { - if (!sets.includes(theme)) { - missingThemes.push(theme); - } - } - if (missingScales.length && missingScales.length !== allScales.length) { - result = result.concat(missingScales); - } - if (missingThemes.length && missingThemes.length !== allThemes.length) { - result = result.concat(missingThemes); - } - return result; -} -function checkMode(entry, collection, allScales, allThemes) { - let name = entry.path.join('/'); - for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { - const check = '/' + scale + '/'; - if (name.indexOf(check) !== -1) { - name = name.substring(0, name.indexOf(check)) + name.substring(name.indexOf(check) + check.length - 1); - } - } - for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { - const check = '/' + theme + '/'; - if (name.indexOf(check) !== -1) { - name = name.substring(0, name.indexOf(check)) + name.substring(name.indexOf(check) + check.length - 1); - } - } - let path = []; - for (const i in entry.path) { - path = path.concat(entry.path[i].toLowerCase().split('/')); - } - if (!collection[name]) { - collection[name] = []; - } - for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { - if (path.includes(scale)) { - collection[name].push(scale); - if (!allScales.includes(scale)) { - allScales.push(scale); - } - } - } - for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { - if (path.includes(theme)) { - collection[name].push(theme); - if (!allThemes.includes(theme)) { - allThemes.push(theme); - } - } - } -} -function checkModes(studioTokens, studioProblems) { - const collection = {}; - const allScales = []; - const allThemes = []; - for (const uuid of Object.keys(studioTokens)) { - checkMode(studioTokens[uuid], collection, allScales, allThemes); - } - for (const uuid of Object.keys(studioProblems.split)) { - for (const entry of studioProblems.split[uuid]) { - checkMode(entry, collection, allScales, allThemes); - } - } - for (const uuid in studioProblems.merged) { - const entry = studioProblems.merged[uuid]; - checkMode(entry, collection, allScales, allThemes); - } - for (const entry of studioProblems.uuids) { - checkMode(entry, collection, allScales, allThemes); - } - for (const name of Object.keys(collection)) { - if (collection[name].length) { - collection[name] = checkMissingModes(name, collection[name], allScales, allThemes); - } - if (!collection[name].length) { - delete collection[name]; - } - } - studioProblems.usedModes = allScales.concat(allThemes); - studioProblems.modes = collection; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkModes); - - -/***/ }), - -/***/ "./src/operations/checkNameChanges.ts": -/*!********************************************!*\ - !*** ./src/operations/checkNameChanges.ts ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function checkNameChanges(spectrumTokens, studioTokens, studioProblems) { - const result = {}; - // the most common case: the metadata was changed to reflect a new token name - for (const uuid of Object.keys(studioTokens)) { - const entry = studioTokens[uuid]; - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); - if (tokenName && spectrumTokens[uuid] && spectrumTokens[uuid].name !== tokenName) { - result[spectrumTokens[uuid].name] = tokenName; - studioProblems.uuids.push(entry); - delete studioTokens[uuid]; - } - else if (!tokenName) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('ERROR - could not find for spectrum token name for: ' + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenName)(entry)); - } - } - // check if there's a new entry already defined in tokens studio that will replace an existing spectrum token - // --- this only happens if the sync operation is re-run on the same tokens studio changes - for (const uuid of Object.keys(studioTokens)) { - if (!spectrumTokens[uuid]) { - const entry = studioTokens[uuid]; - const deprecations = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenDeprecations)(entry); - if (deprecations) { - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); - if (tokenName) { - if (spectrumTokens[deprecations]) { - // we found a non-deprecated spectrum-token entry that will - // be replaced by a studio token entry - adding it the results - // will ensure the spectrum token is properly deprecated due - // to a name change - result[spectrumTokens[deprecations].name] = tokenName; - } - } - } - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkNameChanges); - - -/***/ }), - -/***/ "./src/operations/checkSchemaChanges.ts": -/*!**********************************************!*\ - !*** ./src/operations/checkSchemaChanges.ts ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_schemaStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/schemaStuff */ "./src/core/schemaStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function getChangedSchema(studioToken, spectrumToken, unsupportedTypes) { - const studioType = (0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_1__.getSchemaType)(studioToken); - const schema = (0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_1__.getSchemaFromType)(studioType); - if (!schema) { - if (studioType && !unsupportedTypes.includes(studioType)) { - unsupportedTypes.push(studioType); - } - return; - } - if (schema && (!spectrumToken.schema || schema !== spectrumToken.schema)) { - return schema; - } -} -function checkSchemaChanges(studioTokens, spectrumTokens) { - const changes = {}; - const unsupportedTypes = []; - for (const uuid of Object.keys(studioTokens)) { - if (spectrumTokens[uuid]) { - const schema = getChangedSchema(studioTokens[uuid], spectrumTokens[uuid], unsupportedTypes); - if (schema) { - changes[uuid] = schema; - } - } - } - if (unsupportedTypes.length) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - checkSchemaChanges - UNSUPPORTED STUDIO TYPES: ' + unsupportedTypes.join(', ')); - } - return changes; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkSchemaChanges); - - -/***/ }), - -/***/ "./src/operations/checkSets.ts": -/*!*************************************!*\ - !*** ./src/operations/checkSets.ts ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2024 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function checkSets(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - for (const uuid of Object.keys(studioTokens)) { - if (spectrumTokens[uuid]) { - const studioEntry = studioTokens[uuid]; - const spectrumEntry = spectrumTokens[uuid]; - const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getValidSpectrumTokenSets)(spectrumEntry); - const studioSetName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(studioEntry); - // if (studioSetName.length && spectrumSets.length === 1 && studioSetName !== spectrumSets[0]) { - // !!! same number of sets but they differ... huh - // } else - if (studioSetName.length && !spectrumSets.length) { - // ??? this seems to work already, because a split will trigger - // a full rewrite of the original token in spectrum-tokens - } - else if (!studioSetName.length && spectrumSets.length) { - studioProblems.merged[uuid] = studioEntry; - } - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkSets); - - -/***/ }), - -/***/ "./src/operations/checkValueChanges.ts": -/*!*********************************************!*\ - !*** ./src/operations/checkValueChanges.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/getSpectrumValue */ "./src/core/getSpectrumValue.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function checkValueChanges(studioTokens, spectrumTokens) { - const changes = {}; - for (const uuid in studioTokens) { - if (!spectrumTokens[uuid]) { - continue; - } - const tokenValue = (0,_core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_0__["default"])(uuid, studioTokens); - const spectrumValue = spectrumTokens[uuid].value; - if (JSON.stringify(tokenValue) !== JSON.stringify(spectrumValue)) { - changes[uuid] = tokenValue; - } - } - return changes; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkValueChanges); - - -/***/ }), - -/***/ "./src/operations/deprecateSpectrumTokens.ts": -/*!***************************************************!*\ - !*** ./src/operations/deprecateSpectrumTokens.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/findBranchByUUID */ "./src/core/findBranchByUUID.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function deprecate(data, path) { - let root = data; - let alreadyDeprecated = false; - for (let i = 0; i < path.length; ++i) { - if (root.deprecated && root.value === undefined) { - alreadyDeprecated = true; - } - root = root[path[i]]; - } - if (!alreadyDeprecated) { - root.deprecated = true; - } -} -function deprecateToken(data, token, uuid) { - const result = []; - const tokenName = token.split('/')[0]; - if (data[tokenName]) { - result.push(tokenName); - const branch = data[tokenName]; - if (!branch.uuid || branch.uuid !== uuid) { - if ((0,_core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__["default"])(branch, uuid, result)) { - deprecate(data, result); - } - } - else if (branch.uuid && branch.uuid === uuid) { - deprecate(data, result); - } - } -} -function deprecateSpectrumTokens(spectrumTokens, spectrumProblems, deprecatedTokens) { - for (const entry of deprecatedTokens) { - const file = spectrumTokens[entry.uuid].file; - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.getFile)(file); - deprecateToken(data, entry.token, entry.uuid); - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.storeFile)(file, data); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (deprecateSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/formatChangedSpectrumTokens.ts": -/*!*******************************************************!*\ - !*** ./src/operations/formatChangedSpectrumTokens.ts ***! - \*******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -function formatChangedSpectrumTokens(valueChanges, schemaChanges, studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - const result = {}; - const changed = Object.keys(valueChanges).concat(Object.keys(schemaChanges)); - for (const uuid of changed) { - const value = valueChanges[uuid] ? valueChanges[uuid] : spectrumTokens[uuid].value; - const schema = schemaChanges[uuid] ? schemaChanges[uuid] : spectrumTokens[uuid].schema; - const name = spectrumTokens[uuid].name; - const sets = spectrumTokens[uuid].sets; - if (!result[name]) { - result[name] = {}; - } - if (!sets.length) { - result[name].schema = schema; - result[name].value = value; - result[name].uuid = uuid; - } - else { - let root = result[name]; - for (let i = 0; i < sets.length; ++i) { - const set = sets[i]; - if (!root.sets) { - root.sets = {}; - } - if (!root.sets[set]) { - root.sets[set] = {}; - } - root = root.sets[set]; - } - const leaf = root; - leaf.schema = schema; - leaf.value = value; - leaf.uuid = uuid; - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (formatChangedSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/formatNewSpectrumTokens.ts": -/*!***************************************************!*\ - !*** ./src/operations/formatNewSpectrumTokens.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_schemaStuff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/schemaStuff */ "./src/core/schemaStuff.ts"); -/* harmony import */ var _core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/getSpectrumValue */ "./src/core/getSpectrumValue.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - - - -const COLOR_SET = 'color-set'; -const SCALE_SET = 'scale-set'; -function createSpectrumTokensEntry(uuid, studioTokens) { - const schema = (0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_4__.getSchemaFromType)((0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_4__.getSchemaType)(studioTokens[uuid])); - const value = (0,_core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_5__["default"])(uuid, studioTokens); - return { $schema: schema, value: value, uuid: uuid }; -} -function sortSets(input) { - const output = {}; - for (const theme of _constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES) { - if (input[theme]) { - output[theme] = input[theme]; - } - } - for (const scale of _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES) { - if (input[scale]) { - output[scale] = input[scale]; - } - } - for (const set of Object.keys(input)) { - if (!_constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES.includes(set) && !_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES.includes(set)) { - output[set] = input[set]; - } - } - return output; -} -function getSpectrumTokenSet(entries, studioTokens) { - let sets = {}; - const types = []; - let schema = undefined; - for (const entry of entries) { - const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(entry); - if (!uuid) - throw new Error('ERROR - MISSING UUID FOR: ' + entry.path.join('.')); - sets[(0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getSpectrumTokenSetName)(entry)] = createSpectrumTokensEntry(uuid, studioTokens); - if (!types.includes(entry.type)) { - types.push(entry.type); - } - } - sets = sortSets(sets); - { - // jump through some hoops to assign the appriopriate set schema - const setNames = []; - for (const entry of entries) { - const setName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getSpectrumTokenSetName)(entry); - if (!setNames.includes(setName)) { - setNames.push(setName); - } - } - let scaleNames = 0; - let themeNames = 0; - for (const setName of setNames) { - if (_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES.includes(setName)) { - scaleNames++; - } - if (_constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES.includes(setName)) { - themeNames++; - } - } - if (scaleNames && !themeNames) { - schema = _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES[SCALE_SET]; - } - else if (!scaleNames && themeNames) { - schema = _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES[COLOR_SET]; - } - if (!schema) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - could not determine schema for set with set names of: ' + setNames); - } - } - return { $schema: schema, sets: sets }; -} -function isPartOfSet(entry, studioTokens) { - // we have an extra check in case we are adding a new token to an existing set - const path = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(entry); - for (const compare of Object.values(studioTokens)) { - if (entry !== compare && path === (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(compare)) { - return true; - } - } - return false; -} -function formatNewSpectrumTokens(exports, studioTokens) { - const collection = {}; - const result = {}; - for (const entry of exports) { - const name = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(entry); - if (name) { - if (!collection[name]) { - collection[name] = []; - } - collection[name].push(entry); - } - else { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('ERROR - studio token definition missing spectrum token name: ' + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(entry)); - } - } - for (const name of Object.keys(collection)) { - const tokenData = collection[name]; - if (tokenData.length === 1 && !isPartOfSet(tokenData[0], studioTokens)) { - const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(tokenData[0]); - if (!uuid) - throw new Error('ERROR - MISSING UUID FOR: ' + tokenData[0].path.join('.')); - result[name] = createSpectrumTokensEntry(uuid, studioTokens); - } - else { - result[name] = getSpectrumTokenSet(tokenData, studioTokens); - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (formatNewSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/getModifiedTokens.ts": -/*!*********************************************!*\ - !*** ./src/operations/getModifiedTokens.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function getModifiedTokens(studioTokens, spectrumTokens, newTokens) { - for (const entry of Object.values(newTokens)) { - const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(entry); - if (!uuid) { - throw new Error('ERROR - missing uuid: ' + JSON.stringify(entry)); - } - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(entry); - if (tokenName) { - let spectrumFile; - for (const spectrum of Object.values(spectrumTokens)) { - if (spectrum.name === tokenName) { - spectrumFile = spectrum.file; - break; - } - } - if (spectrumFile) { - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.getFile)(spectrumFile); - if (data[tokenName]) { - if (data[tokenName].uuid && studioTokens[data[tokenName].uuid]) { - newTokens.push(studioTokens[data[tokenName].uuid]); - } - } - } - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getModifiedTokens); - - -/***/ }), - -/***/ "./src/operations/getUniqueId.ts": -/*!***************************************!*\ - !*** ./src/operations/getUniqueId.ts ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! crypto */ "crypto"); -/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function getUniqueId(studioTokens, studioProblems, spectrumTokens, spectrumProblems, studioEntry) { - let uuid; - // !!! I don't think this actually exists in spectrum-tokens (it was for putting uuids on branch nodes and not just leaves) - for (const spectrumEntry of spectrumProblems.empty) { - if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenDuplicated)(studioEntry) && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(studioEntry) === spectrumEntry.name) { - uuid = spectrumEntry.uuid; - break; - } - } - // ??? retrieve a deprecated uuid... I'm not sure we should care about this either - for (const spectrumEntry of Object.values(spectrumProblems.deprecated)) { - if (!(0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenDuplicated)(studioEntry) && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(studioEntry) === spectrumEntry.name) { - const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getValidSpectrumTokenSets)(spectrumEntry); - if (spectrumSets.length === 1 && spectrumSets[0] === (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getSpectrumTokenSetName)(studioEntry)) { - uuid = spectrumEntry.uuid; - break; - } - else if (spectrumSets.length > 1) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('WARNING - COULD NOT COMPARE SET NAMES BECAUSE WE HAVE NOT SUPPORTED SETS WITHIN SETS: ' + spectrumEntry.name); // !!! haha - } - } - } - if (!uuid) { - do { - uuid = crypto__WEBPACK_IMPORTED_MODULE_0___default().randomUUID(); - } while (!uuid || studioTokens[uuid] || studioProblems.collisions[uuid] || spectrumTokens[uuid] || spectrumProblems.collisions[uuid]); - } - return uuid; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getUniqueId); - - -/***/ }), - -/***/ "./src/operations/processStudioTokenData.ts": -/*!**************************************************!*\ - !*** ./src/operations/processStudioTokenData.ts ***! - \**************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function stringifyObject(value) { - const result = {}; - const keys = Object.keys(value).sort(); - for (const k of keys) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value[k])); - result[k.toLowerCase()] = value[k].toLowerCase(); - } - return JSON.stringify(result); -} -function stringifyValue(value) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value)) { - return value; - } - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(value)) { - return stringifyObject(value); - } - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(value)) { - const result = []; - for (const v of value) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(v)); - result.push(stringifyObject(v)); - } - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(result.length); - return JSON.stringify(result); - } - return undefined; -} -function verifyEntries(entries, checkUUIDs, checkValues) { - let value; - let type; - let path; - let token; - let uuid; - for (let i = 0; i < entries.length; ++i) { - const entry = entries[i]; - if (checkValues) { - const entryValue = stringifyValue(entry.value); - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(entryValue, 'failed to read value of tokens studio entry: ' + JSON.stringify(entry.path)); - if (i === 0 || value === entryValue) { - value = entryValue; - } - else { - return false; - } - } - if (i === 0 || type === entry.type) { - type = entry.type; - } - else { - return false; - } - if (checkUUIDs) { - const u = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(entry); - if (i === 0 || uuid === u) { - uuid = u; - } - else { - return false; - } - } - const p = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getCleanedPath)(entry.path).join('.'); - if (i === 0 || path === p) { - path = p; - } - else { - return false; - } - const t = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); - if (i === 0 || token === t) { - token = t; - } - else { - return false; - } - } - return true; -} -function processStudioTokenData(studioTokens, studioProblems) { - // intentionally duplicated token definitions will start off - // being listed as uuid collisions: check for and move them - for (const uuid of Object.keys(studioProblems.collisions)) { - const entries = studioProblems.collisions[uuid]; - // they have the same uuid and value - if (verifyEntries(entries, true, true)) { - studioTokens[uuid] = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.combineTokenEntries)(entries); - delete studioProblems.collisions[uuid]; - } - } - for (const uuid of Object.keys(studioProblems.collisions)) { - const entries = studioProblems.collisions[uuid]; - // they are the same but have different values - // (otherwise they would have been removed in the step above) - if (verifyEntries(entries, true, false)) { - studioProblems.split[uuid] = entries; - delete studioProblems.collisions[uuid]; - } - } - // we'll also want to check tokens without a uuid TEST - if (studioProblems.uuids.length) { - const needUUIDs = []; - const tokenGroups = {}; - for (const entry of studioProblems.uuids) { - const name = entry.path.slice(1).join('.'); - if (!tokenGroups[name]) { - tokenGroups[name] = []; - } - tokenGroups[name].push(entry); - } - for (const name of Object.keys(tokenGroups)) { - if (tokenGroups[name].length > 1 && verifyEntries(tokenGroups[name], true, true)) { - needUUIDs.push((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.combineTokenEntries)(tokenGroups[name])); - } - else { - for (const entry of tokenGroups[name]) { - needUUIDs.push(entry); - } - } - } - studioProblems.uuids = needUUIDs; - } - const tokenTable = {}; - for (const uuid of Object.keys(studioTokens)) { - const name = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioTokens[uuid]); - if (name && !tokenTable[name]) { - tokenTable[name] = []; - } - if (name) { - tokenTable[name].push(studioTokens[uuid]); - } - } - for (const token of Object.keys(tokenTable)) { - const entries = tokenTable[token]; - if (entries.length > 1 && verifyEntries(entries, false, true)) { - // entries are duplicates but have unique ids, add them to the problem pile - studioProblems.merge.push(entries); - // ... and remove the token entries from the okay pile - for (const originalEntry of entries) { - const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(originalEntry); - if (uuid) - delete studioTokens[uuid]; - } - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (processStudioTokenData); - - -/***/ }), - -/***/ "./src/operations/readSpectrumTokens.ts": -/*!**********************************************!*\ - !*** ./src/operations/readSpectrumTokens.ts ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - - -function getSetNames(tokenDefinition, uuid) { - function findUUID(branch, uuid, path) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(branch)) { - if (branch.uuid === uuid) { - return true; - } - for (const key of Object.keys(branch)) { - path.push(key); - if (findUUID(branch[key], uuid, path)) { - return true; - } - else { - path.pop(); - } - } - } - return false; - } - let path = []; - if (tokenDefinition.uuid !== uuid) { - findUUID(tokenDefinition, uuid, path); - } - path = path.filter((set) => set !== _constants__WEBPACK_IMPORTED_MODULE_2__["default"].SETS); - return path; -} -function parseTokenData(file, tokens, problems, entry, system, name, tokenDefinition, deprecated = false) { - const uuid = entry.uuid; - const value = entry.value; - const isDeprecated = deprecated || entry.deprecated === true; - const passDeprecation = value === undefined ? isDeprecated : false; // ??? deprecation setting is implied on children - const problemEntry = Object.assign({ file: file, name: name }, entry); - if (uuid && value) { - if (tokens[uuid] || problems.collisions[uuid]) { - if (!problems.collisions[uuid]) { - problems.collisions[uuid] = []; - problems.collisions[uuid].push({ file: tokens[uuid].file, name: tokens[uuid].name, uuid: tokens[uuid].uuid, value: tokens[uuid].value, sets: getSetNames(tokenDefinition, uuid), schema: entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA] }); - delete tokens[uuid]; - } - problems.collisions[uuid].push(problemEntry); - } - else if (isDeprecated) { - problems.deprecated[uuid] = { file: file, uuid: uuid, value: value, name: name, sets: getSetNames(tokenDefinition, uuid), schema: entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA] }; - } - else { - tokens[uuid] = { file: file, uuid: uuid, value: value, name: name, sets: getSetNames(tokenDefinition, uuid), schema: entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA] }; - } - } - else if ((uuid && !value) || (!uuid && value)) { - if (!uuid) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - missing uuid => ' + name); - problems.uuids.push(problemEntry); - } - if (!value) { - problems.empty.push(problemEntry); - } - } - for (const key of Object.keys(entry)) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(entry[key])) { - if (system && _constants__WEBPACK_IMPORTED_MODULE_2__["default"].SYSTEMS.includes(key) && key !== system) - continue; - parseTokenData(file, tokens, problems, entry[key], system, name, tokenDefinition, passDeprecation); - } - } -} -function parseSpectrumTokens(file, tokens, problems, data, system) { - for (const tokenName of Object.keys(data)) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(data[tokenName])) { - parseTokenData(file, tokens, problems, data[tokenName], system, tokenName, data[tokenName]); - } - } -} -function readSpectrumTokens(source, system) { - const spectrumTokens = {}; - const spectrumProblems = { collisions: {}, uuids: [], empty: [], deprecated: {} }; - (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('READING spectrum-tokens: ' + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.trimPath)(source)); - fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(source).forEach((file) => { - if (path__WEBPACK_IMPORTED_MODULE_1___default().extname(file).toLowerCase() === '.json') { - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_4__.getFile)(source + file); - parseSpectrumTokens(source + file, spectrumTokens, spectrumProblems, data, system); - } - }); - return { spectrumTokens, spectrumProblems }; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (readSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/readStudioTokens.ts": -/*!********************************************!*\ - !*** ./src/operations/readStudioTokens.ts ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ getSourceFiles: () => (/* binding */ getSourceFiles), -/* harmony export */ getStartPath: () => (/* binding */ getStartPath), -/* harmony export */ readStudioTokens: () => (/* binding */ readStudioTokens) -/* harmony export */ }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _processStudioTokenData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./processStudioTokenData */ "./src/operations/processStudioTokenData.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - - - -function getSourceFiles(source, result = []) { - // set recursive: false, to fix tests in NodeJS 20. With NodeJS 16, the `recursive` had no effect. - // we could simply this function, by just remove the inner recursion and use the {recursive: true} - fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(source, { recursive: false }).forEach((file) => { - if (fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(source + file).isDirectory()) { - getSourceFiles(source + file + (path__WEBPACK_IMPORTED_MODULE_1___default().sep), result); - } - else if (path__WEBPACK_IMPORTED_MODULE_1___default().extname(source + file).toLowerCase() === '.json' && path__WEBPACK_IMPORTED_MODULE_1___default().basename(source + file)[0] !== '$') { - result.push(source + file); - } - }); - return result; -} -function getStartPath(source, file) { - const startPath = file.slice(source.length).split((path__WEBPACK_IMPORTED_MODULE_1___default().sep)).slice(0, -1); - startPath.push(path__WEBPACK_IMPORTED_MODULE_1___default().basename(file, '.json')); - return startPath.join('/'); -} -function readStudioTokens(sources) { - const studioTokens = {}; - const studioProblems = { collisions: {}, merge: [], merged: {}, split: {}, removed: [], uuids: [], values: [], metadata: [], usedModes: [], modes: {} }; - for (const dataSet in sources) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('READING tokens studio: ' + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.trimPath)(sources[dataSet])); - getSourceFiles(sources[dataSet]).forEach((file) => { - const startPath = file.slice(sources[dataSet].length).split((path__WEBPACK_IMPORTED_MODULE_1___default().sep)).slice(0, -1); - startPath.push(path__WEBPACK_IMPORTED_MODULE_1___default().basename(file, '.json')); - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_4__.getFileUncached)(file); // ??? don't use a cached version since we're directly re-using the data objects as token data :/ - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenStyles)(dataSet, file, [getStartPath(sources[dataSet], file)], data, studioTokens, studioProblems); - }); - } - (0,_processStudioTokenData__WEBPACK_IMPORTED_MODULE_5__["default"])(studioTokens, studioProblems); // resolve token duplication and a bunch of other stuff - return { studioTokens, studioProblems }; -} - - - -/***/ }), - -/***/ "./src/operations/renameSpectrumTokens.ts": -/*!************************************************!*\ - !*** ./src/operations/renameSpectrumTokens.ts ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - - - -function redirectAllValues(data, reference) { - // this should skip redirecting within arrays and objects, - // but still update string values and values in sets - for (const key of Object.keys(data)) { - if (key === _constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE && (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { - data[key] = '{' + reference + '}'; - data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].SCHEMA] = _config__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA_TYPES.alias; - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data[key])) { - redirectAllValues(data[key], reference); - } - } -} -function updateReferences(data, originalToken, updatedToken) { - let changed = false; - // we're looking for references to the token name in the value, and swapping it to the new one - if (data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE]) { - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { - if (data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE] === '{' + originalToken + '}') { - data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE] = '{' + updatedToken + '}'; - changed = true; - } - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isArray)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { - for (const entry of data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE]) { - changed = updateReferences(entry, originalToken, updatedToken) || changed; - } - } - else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { - changed = updateReferences(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE], originalToken, updatedToken) || changed; - } - } - return changed; -} -function changeTokenName(data, originalToken, updatedToken, root = true) { - let changed = false; - for (const token of Object.keys(data)) { - if (token === originalToken) { - // we found the defininition for the renamed tokens - const definition = data[token]; - // ... mark it is deprecated - definition[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].DEPRECATED] = true; - definition[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].DEPRECATED_COMMENT] = 'This token has been deprecated, use ' + updatedToken + ' instead.'; - // ... and if possible we'll redirect the value or set values to the new token definition - redirectAllValues(definition, updatedToken); - changed = true; - } - else { - // any other token in the definition, we'll update any reference to the old token name to the new token name - changed = updateReferences(data[token], originalToken, updatedToken) || changed; - } - } - return changed; -} -function renameSpectrumTokens(tokensPath, renamedTokens) { - fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(tokensPath).forEach((file) => { - if (path__WEBPACK_IMPORTED_MODULE_1___default().extname(file).toLowerCase() === '.json') { - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_5__.getFile)(tokensPath + file); - let changed = false; - for (const originalToken of Object.keys(renamedTokens)) { - // we check each file for the definition and references to the renamed token - changed = changeTokenName(data, originalToken, renamedTokens[originalToken]) || changed; - } - if (changed) { - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_5__.storeFile)(tokensPath + file, data); - } - } - }); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (renameSpectrumTokens); - - -/***/ }), - -/***/ "./src/operations/resolveMergeTokens.ts": -/*!**********************************************!*\ - !*** ./src/operations/resolveMergeTokens.ts ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function resolveMergeTokens(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - const result = []; - for (const entries of studioProblems.merge) { - let baseEntry; - for (const entry of entries) { - if (!baseEntry && entry.path.join('.').indexOf('light') > 0) { - baseEntry = entry; - } - if (!baseEntry && entry.path.join('.').indexOf('desktop') > 0) { - baseEntry = entry; - } - } - if (!baseEntry) { - baseEntry = entries[0]; - } - const targetUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(baseEntry); - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)(targetUUID); - const newEntry = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.combineTokenEntries)(entries); - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenUUID)(newEntry, targetUUID); - studioTokens[targetUUID] = newEntry; - studioProblems.merged[targetUUID] = newEntry; - result.push(newEntry.path.join('.')); - for (const entry of entries) { - if (entry !== baseEntry) { - const removedUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(entry); - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)(removedUUID); - if (removedUUID !== targetUUID) { - studioProblems.removed.push(removedUUID); - } - } - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (resolveMergeTokens); - - -/***/ }), - -/***/ "./src/operations/resolveSplitTokens.ts": -/*!**********************************************!*\ - !*** ./src/operations/resolveSplitTokens.ts ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _getUniqueId__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getUniqueId */ "./src/operations/getUniqueId.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function resolveSplitTokens(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - const result = []; - for (const uuid of Object.keys(studioProblems.split)) { - let baseEntry; - for (const entry of studioProblems.split[uuid]) { - // !!! bad string checks - if (!baseEntry && entry.path.join('.').indexOf('light') > 0) { - baseEntry = entry; - } - if (!baseEntry && entry.path.join('.').indexOf('desktop') > 0) { - baseEntry = entry; - } - } - if (!baseEntry) { - baseEntry = studioProblems.split[uuid][0]; - } - for (const entry of studioProblems.split[uuid]) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenDuplicated)(entry, false); - if (entry === baseEntry) { - studioTokens[uuid] = entry; - } - else { - const newUUID = (0,_getUniqueId__WEBPACK_IMPORTED_MODULE_1__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems, entry); - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, newUUID); - studioTokens[newUUID] = entry; - result.push(entry.path.join('.')); - } - } - } - return result; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (resolveSplitTokens); - - -/***/ }), - -/***/ "./src/operations/updateTokenNameMetadata.ts": -/*!***************************************************!*\ - !*** ./src/operations/updateTokenNameMetadata.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function cleanName(name) { - return name.replaceAll(_constants__WEBPACK_IMPORTED_MODULE_0__["default"].BUSTER, '').replaceAll(' ', ''); -} -function checkName(entry, results) { - if (entry.dataSet === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].LAYOUT) { - const name = cleanName(entry.path[entry.path.length - 1]); - const tokenSpectrumName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(entry); - if (name !== tokenSpectrumName) { - if (name && tokenSpectrumName) { - results[name] = tokenSpectrumName; - } - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenSpectrumName)(entry, name); - } - } - else if (entry.dataSet === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].COLOR && !(0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(entry.value)) { - // this should be a composite token, and we're just going to guess about the name if it isn't set - const tokenSpectrumName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(entry); - if (!tokenSpectrumName) { - const name = entry.path.slice(1).join('-').replaceAll(' ', '-').toLowerCase(); - if (name !== tokenSpectrumName) { - if (name && tokenSpectrumName) { - results[name] = tokenSpectrumName; - } - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenSpectrumName)(entry, name); - } - } - } -} -function updateTokenNameMetadata(studioTokens, studioProblems) { - const results = {}; - // get name changes for existing entries - for (const uuid of Object.keys(studioTokens)) { - checkName(studioTokens[uuid], results); - } - // check the entries being added - for (const entry of studioProblems.uuids) { - checkName(entry, results); - } - // check the entries being merged - for (const entries of studioProblems.merge) { - for (const entry of entries) { - checkName(entry, results); - } - } - // check the entries being splt - for (const uuid of Object.keys(studioProblems.split)) { - for (const entry of studioProblems.split[uuid]) { - checkName(entry, results); - } - } - return results; -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (updateTokenNameMetadata); - - -/***/ }), - -/***/ "./src/operations/verifyBranchSchemas.ts": -/*!***********************************************!*\ - !*** ./src/operations/verifyBranchSchemas.ts ***! - \***********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/findBranchByUUID */ "./src/core/findBranchByUUID.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - - - -function getTargetSetSchema(k, data) { - const sets = Object.keys(data); - let systems = 0; - let themes = 0; - let scales = 0; - for (const set of sets) { - _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SYSTEMS.includes(set) && ++systems; - _constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES.includes(set) && ++themes; - _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES.includes(set) && ++scales; - } - if (systems && !themes && !scales) { - return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['system-set']; - } - else if (!systems && themes && !scales) { - return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['color-set']; - } - else if (!systems && !themes && scales) { - return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['scale-set']; - } - else { - throw new Error('UNHANDLED SET DATA: ' + k); - } -} -function setBranchSchema(k, data) { - let changes = 0; - if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data)) { - if (data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SETS] && (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SETS])) { - const schema = getTargetSetSchema(k, data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SETS]); - if (!data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] || (data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] !== schema && data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] !== _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['system-set'])) { - const newObject = {}; - if (data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].COMPONENT]) { - newObject[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].COMPONENT] = data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].COMPONENT]; - } - newObject[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] = schema; - for (const key of Object.keys(data)) { - if (key !== _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA) { - newObject[key] = data[key]; - } - delete data[key]; - } - for (const key of Object.keys(newObject)) { - data[key] = newObject[key]; - } - changes++; - } - } - for (const key of Object.keys(data)) { - changes += setBranchSchema(key, data[key]); - } - } - return changes; -} -function verifyBranchSchemas(studioTokens, spectrumTokens) { - let totalSetSchemaChanges = 0; - for (const uuid of Object.keys(studioTokens)) { - if (spectrumTokens[uuid]) { - // only update pre-existing entries - const file = spectrumTokens[uuid].file; - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.getFile)(file); - const path = []; - if ((0,_core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_3__["default"])(data, uuid, path)) { - const changes = setBranchSchema(path[0], data[path[0]]); - if (changes) { - totalSetSchemaChanges += changes; - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.storeFile)(file, data); - } - } - } - } - if (totalSetSchemaChanges) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.cout)('\nUPDATED SET SCHEMAS: ' + totalSetSchemaChanges); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (verifyBranchSchemas); - - -/***/ }), - -/***/ "./src/operations/writeStudioTokens.ts": -/*!*********************************************!*\ - !*** ./src/operations/writeStudioTokens.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); -/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function writeStudioTokens(studioTokens) { - for (const uuid of Object.keys(studioTokens)) { - const entry = studioTokens[uuid]; - for (const file of entry.files) { - // read file - const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_1__.getFile)(file); - let changed = false; - // check... stuff - { - const path = entry.path.slice(1); - let definition = data; - while (path.length) { - const p = path.shift(); - if (p) { - definition = definition[p]; - } - } - if (!definition) { - throw new Error('ERROR - failed to find definition for ' + entry.path.join('.')); - } - const duplicated = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenDuplicated)(entry) ? true : false; - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(entry); - if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(definition) !== uuid) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenUUID)(definition, uuid); - changed = true; - } - if (tokenName && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(definition) !== tokenName) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenSpectrumName)(definition, tokenName); - changed = true; - } - if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenDeprecations)(definition) !== (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenDeprecations)(entry)) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenDeprecations)(definition, (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenDeprecations)(entry)); - changed = true; - } - if (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].DISABLE_TOKEN_DUPLICATION_METADATA) { - if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenDuplicated)(definition) !== duplicated) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenDuplicated)(definition, duplicated); - changed = true; - } - } - else if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenDuplicated)(definition) !== undefined) { - (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenDuplicated)(definition, undefined); - changed = true; - } - } - // store file - if (changed) { - (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_1__.storeFile)(file, data); - } - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (writeStudioTokens); - - -/***/ }), - -/***/ "./src/reports/reportDeletedTokens.ts": -/*!********************************************!*\ - !*** ./src/reports/reportDeletedTokens.ts ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function reportDeprecatedTokens(changes) { - const output = []; - for (const deprecated of changes) { - output.push(deprecated.token); - } - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('DEPRECATED TOKENS: (' + output.length + ') ' + output.join(', ')); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportDeprecatedTokens); - - -/***/ }), - -/***/ "./src/reports/reportDeprecatedTokenUsage.ts": -/*!***************************************************!*\ - !*** ./src/reports/reportDeprecatedTokenUsage.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_printableSetName__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/printableSetName */ "./src/core/printableSetName.ts"); -/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function reportDeprecatedTokenUsage(studioTokens, spectrumTokens, spectrumProblems) { - const deprecated = Object.keys(spectrumProblems.deprecated); - if (deprecated.length) { - for (const uuid of Object.keys(studioTokens)) { - if (deprecated.includes(uuid) && !(0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.isDeprecated)(studioTokens[uuid].path)) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('WARNING - STUDIO INCLUDES DEPRECATED TOKEN: ' + spectrumProblems.deprecated[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_0__["default"])(spectrumProblems.deprecated[uuid]) + ' [' + uuid + ']'); - spectrumTokens[uuid] = spectrumProblems.deprecated[uuid]; - delete spectrumProblems.deprecated[uuid]; - } - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportDeprecatedTokenUsage); - - -/***/ }), - -/***/ "./src/reports/reportMissingSpectrumSets.ts": -/*!**************************************************!*\ - !*** ./src/reports/reportMissingSpectrumSets.ts ***! - \**************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function reportMissingScales(name, scales, allScales, SETS) { - const missingScales = []; - for (const scale of allScales) { - if (!scales.includes(scale) && (!SETS.length || SETS.includes(scale))) { - missingScales.push(scale); - } - } - if (missingScales.length) - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - SPECTRUM-TOKENS MISSING SCALE DEFINITION FOR ' + name + ': ' + JSON.stringify(missingScales)); -} -function reportMissingThemes(name, themes, allThemes, SETS) { - const missingThemes = []; - for (const theme of allThemes) { - if (!themes.includes(theme) && (!SETS.length || SETS.includes(theme))) { - missingThemes.push(theme); - } - } - if (missingThemes.length) - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - SPECTRUM-TOKENS MISSING THEME DEFINITION FOR ' + name + ': ' + JSON.stringify(missingThemes)); -} -function reportMissingSpectrumSets(spectrumTokens, spectrumProblems, SETS = []) { - const collection = {}; - for (const token of Object.values(spectrumTokens)) { - if (token.sets.length) { - if (!collection[token.name]) { - collection[token.name] = []; - } - for (const set of token.sets) { - if (!collection[token.name].includes(set)) { - collection[token.name].push(set); - } - } - } - } - const allScales = []; - const allThemes = []; - for (const tokenName of Object.keys(collection)) { - for (const sets of collection[tokenName]) { - for (const set of sets) { - for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { - if (set === scale && !allScales.includes(scale)) { - allScales.push(scale); - } - } - for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { - if (set === theme && !allThemes.includes(theme)) { - allThemes.push(theme); - } - } - } - } - } - for (const tokenName of Object.keys(collection)) { - const foundScales = []; - const foundThemes = []; - for (const sets of collection[tokenName]) { - for (const set of sets) { - for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { - if (set === scale) { - foundScales.push(scale); - } - } - for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { - if (set === theme) { - foundThemes.push(theme); - } - } - } - } - if (foundScales.length && allScales.length !== foundScales.length) { - reportMissingScales(tokenName, foundScales, allScales, SETS); - } - if (foundThemes.length && allThemes.length !== foundThemes.length) { - reportMissingThemes(tokenName, foundThemes, allThemes, SETS); - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingSpectrumSets); - - -/***/ }), - -/***/ "./src/reports/reportMissingSpectrumUUIDs.ts": -/*!***************************************************!*\ - !*** ./src/reports/reportMissingSpectrumUUIDs.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -/* istanbul ignore file */ - -function reportMissingSpectrumUUIDs(spectrumProblems) { - for (const nouuid of spectrumProblems.uuids) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - spectrum definition missing uuid: ' + nouuid.name + ' in ' + nouuid.file); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingSpectrumUUIDs); - - -/***/ }), - -/***/ "./src/reports/reportMissingStudioModes.ts": -/*!*************************************************!*\ - !*** ./src/reports/reportMissingStudioModes.ts ***! - \*************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function reportMissingStudioModes(studioProblems) { - for (const name of Object.keys(studioProblems.modes)) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - STUDIO MISSING MODE DEFINITION FOR ' + name + ': ' + JSON.stringify(studioProblems.modes[name])); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingStudioModes); - - -/***/ }), - -/***/ "./src/reports/reportMissingStudioTokenNames.ts": -/*!******************************************************!*\ - !*** ./src/reports/reportMissingStudioTokenNames.ts ***! - \******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function reportMissingStudioTokenNames(studioTokens) { - for (const uuid of Object.keys(studioTokens)) { - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioTokens[uuid]); - if (!tokenName) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - studio definition metadata missing spectrum token name: ' + studioTokens[uuid].path.join(',')); - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingStudioTokenNames); - - -/***/ }), - -/***/ "./src/reports/reportMissingStudioUUIDs.ts": -/*!*************************************************!*\ - !*** ./src/reports/reportMissingStudioUUIDs.ts ***! - \*************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function reportMissingStudioUUIDs(studioProblems) { - for (const nouuid of studioProblems.uuids) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - studio definition missing uuid: ' + nouuid.path.join(',')); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingStudioUUIDs); - - -/***/ }), - -/***/ "./src/reports/reportNameChanges.ts": -/*!******************************************!*\ - !*** ./src/reports/reportNameChanges.ts ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function reportNameChanges(changes) { - const output = []; - for (const token of Object.keys(changes)) { - output.push(token); - } - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('RENAMED TOKENS: (' + output.length + ') ' + output.join(', ')); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportNameChanges); - - -/***/ }), - -/***/ "./src/reports/reportNewTokens.ts": -/*!****************************************!*\ - !*** ./src/reports/reportNewTokens.ts ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function reportNewTokens(tokens, spectrumTokens) { - const newOnes = []; - const changedOnes = []; - for (const token of tokens) { - const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(token); - if (uuid) { - const setName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(token); - const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(token) + (setName.length ? '/' + setName : ''); - if (tokenName) { - if (!spectrumTokens[uuid] && !newOnes.includes(tokenName)) { - newOnes.push(tokenName); - } - else if (spectrumTokens[uuid] && !changedOnes.includes(tokenName)) { - changedOnes.push(tokenName); - } - } - } - } - if (newOnes.length) - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('NEW TOKENS: (' + newOnes.length + ') ' + newOnes.join(', ')); - if (changedOnes.length) - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('MODIFIED TOKENS: (' + changedOnes.length + ') ' + changedOnes.join(', ')); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportNewTokens); - - -/***/ }), - -/***/ "./src/reports/reportSchemaChanges.ts": -/*!********************************************!*\ - !*** ./src/reports/reportSchemaChanges.ts ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function reportSchemaChanges(studioTokens, spectrumTokens, changes) { - const tokensChanged = []; - for (const uuid of Object.keys(changes)) { - const token = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioTokens[uuid]); - if (token && !tokensChanged.includes(token)) { - tokensChanged.push(token); - } - } - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('CHANGED SCHEMAS: (' + tokensChanged.length + ') ' + tokensChanged.join(', ')); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportSchemaChanges); - - -/***/ }), - -/***/ "./src/reports/reportSetConflicts.ts": -/*!*******************************************!*\ - !*** ./src/reports/reportSetConflicts.ts ***! - \*******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - -function reportSetConflicts(studioTokens, spectrumTokens) { - for (const uuid of Object.keys(studioTokens)) { - if (spectrumTokens[uuid]) { - const studioEntry = studioTokens[uuid]; - const spectrumEntry = spectrumTokens[uuid]; - const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getValidSpectrumTokenSets)(spectrumEntry); - const studioSetName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(studioEntry); - const warning = 'WARNING - MISMATCHED SET INFORMATION: ' + studioEntry.path + ' => ' + spectrumSets; - // if (studioSetName.length && spectrumSets.length === 1 && studioSetName !== spectrumSets[0]) { - // cout(warning); // same number of sets but they differ - // } else if (studioSetName.length && !spectrumSets.length) { - // cout(warning); // studio has a set but spectrum does not - // } else if (!studioSetName.length && spectrumSets.length) { - // cout(warning); // no studio set but spectrum does - // } else - if (studioSetName.length && spectrumSets.length > 1) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)(warning); // spectrum has sets in sets - } - } - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportSetConflicts); - - -/***/ }), - -/***/ "./src/reports/reportTokenCounts.ts": -/*!******************************************!*\ - !*** ./src/reports/reportTokenCounts.ts ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - -function getTokenCount(tokens, problems) { - let result = Object.keys(tokens).length; - for (const entries of Object.values(problems.collisions)) { - result += entries.length; - } - return result; -} -function reportTokenCounts(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('LOADED SPECTRUM TOKENS: ' + getTokenCount(spectrumTokens, spectrumProblems)); - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('LOADED STUDIO TOKENS: ' + getTokenCount(studioTokens, studioProblems)); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportTokenCounts); - - -/***/ }), - -/***/ "./src/reports/reportUUIDCollisions.ts": -/*!*********************************************!*\ - !*** ./src/reports/reportUUIDCollisions.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ -/* istanbul ignore file */ - -function formatStudioCollisionMessage(uuid, entries) { - let msg = ''; - entries.forEach((entry) => { - msg += '\n' + entry.path; - }); - return msg; -} -function formatSpectrumCollisionMessage(uuid, entries) { - let msg = ''; - entries.forEach((entry) => { - msg += '\n' + entry.name + ' in ' + entry.file; - }); - return msg; -} -function reportUUIDCollisions(studioProblems, spectrumProblems) { - Object.keys(studioProblems.collisions).forEach((collision) => { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - studio token uuid collision: (' + collision + ')' + formatStudioCollisionMessage(collision, studioProblems.collisions[collision])); - }); - Object.keys(spectrumProblems.collisions).forEach((collision) => { - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - spectrum token uuid collision: (' + collision + ')' + formatSpectrumCollisionMessage(collision, spectrumProblems.collisions[collision])); - }); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportUUIDCollisions); - - -/***/ }), - -/***/ "./src/reports/reportValueChanges.ts": -/*!*******************************************!*\ - !*** ./src/reports/reportValueChanges.ts ***! - \*******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); -/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); -/* harmony import */ var _core_printableSetName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/printableSetName */ "./src/core/printableSetName.ts"); -/************************************************************************* - * ADOBE CONFIDENTIAL - * ___________________ - * - * Copyright 2023 Adobe - * All Rights Reserved. - * - * NOTICE: All information contained herein is, and remains - * the property of Adobe and its suppliers, if any. The intellectual - * and technical concepts contained herein are proprietary to Adobe - * and its suppliers and are protected by all applicable intellectual - * property laws, including trade secret and copyright laws. - * Dissemination of this information or reproduction of this material - * is strictly forbidden unless prior written permission is obtained - * from Adobe. - **************************************************************************/ - - - -function findTokensWithReference(spectrumTokens, uuid, filter = []) { - const results = {}; - const referenceName = '{' + spectrumTokens[uuid].name + '}'; - const updatedFilter = filter.concat(spectrumTokens[uuid].sets); - Object.values(spectrumTokens).forEach((entry) => { - if ((0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.filterPath)(updatedFilter, spectrumTokens[entry.uuid].sets) && entry.value === referenceName) { - results[entry.uuid] = findTokensWithReference(spectrumTokens, entry.uuid, updatedFilter); - } - }); - return results; -} -function reportReferences(spectrumTokens, references, result = {}) { - Object.keys(references).forEach((uuid) => { - result[uuid] = spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]); - reportReferences(spectrumTokens, references[uuid], result); - }); - return result; -} -function reportValueChanges(studioTokens, spectrumTokens, changes) { - const report = []; - const allChangedTokens = {}; - Object.keys(changes).forEach((uuid) => { - const changelog = {}; - changelog.uuid = uuid; - changelog.nameSource = studioTokens[uuid].path.join('.'); - changelog.nameSpectrum = spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]); - changelog.valueFrom = spectrumTokens[uuid].value; - changelog.valueTo = changes[uuid]; - allChangedTokens[spectrumTokens[uuid].name] = true; - const referenced = reportReferences(spectrumTokens, findTokensWithReference(spectrumTokens, uuid)); - if (Object.keys(referenced).length) { - changelog.referenced = referenced; - for (const spectrumName of Object.values(referenced)) { - allChangedTokens[spectrumName.split('/')[0]] = true; - } - } - report.push(changelog); - }); - const tokensChanged = []; - for (const change of report) { - tokensChanged.push(change.nameSpectrum); - } - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('CHANGED VALUES: (' + Object.keys(changes).length + ') ' + tokensChanged.join(', ') + (tokensChanged.length !== Object.keys(allChangedTokens).length ? ' impacting ' + Object.keys(allChangedTokens).length + ' tokens' : '')); -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportValueChanges); - - -/***/ }), - -/***/ "crypto": -/*!*************************!*\ - !*** external "crypto" ***! - \*************************/ -/***/ ((module) => { - -module.exports = require("crypto"); - -/***/ }), - -/***/ "fs": -/*!*********************!*\ - !*** external "fs" ***! - \*********************/ -/***/ ((module) => { - -module.exports = require("fs"); - -/***/ }), - -/***/ "node:os": -/*!**************************!*\ - !*** external "node:os" ***! - \**************************/ -/***/ ((module) => { - -module.exports = require("node:os"); - -/***/ }), - -/***/ "node:process": -/*!*******************************!*\ - !*** external "node:process" ***! - \*******************************/ -/***/ ((module) => { - -module.exports = require("node:process"); - -/***/ }), - -/***/ "node:tty": -/*!***************************!*\ - !*** external "node:tty" ***! - \***************************/ -/***/ ((module) => { - -module.exports = require("node:tty"); - -/***/ }), - -/***/ "path": -/*!***********************!*\ - !*** external "path" ***! - \***********************/ -/***/ ((module) => { - -module.exports = require("path"); - -/***/ }), - -/***/ "./node_modules/chalk/source/index.js": -/*!********************************************!*\ - !*** ./node_modules/chalk/source/index.js ***! - \********************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Chalk: () => (/* binding */ Chalk), -/* harmony export */ backgroundColorNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.backgroundColorNames), -/* harmony export */ backgroundColors: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.backgroundColorNames), -/* harmony export */ chalkStderr: () => (/* binding */ chalkStderr), -/* harmony export */ colorNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.colorNames), -/* harmony export */ colors: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.colorNames), -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), -/* harmony export */ foregroundColorNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.foregroundColorNames), -/* harmony export */ foregroundColors: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.foregroundColorNames), -/* harmony export */ modifierNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.modifierNames), -/* harmony export */ modifiers: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.modifierNames), -/* harmony export */ supportsColor: () => (/* binding */ stdoutColor), -/* harmony export */ supportsColorStderr: () => (/* binding */ stderrColor) -/* harmony export */ }); -/* harmony import */ var _ansi_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vendor/ansi-styles/index.js */ "./node_modules/chalk/source/vendor/ansi-styles/index.js"); -/* harmony import */ var _supports_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! #supports-color */ "./node_modules/chalk/source/vendor/supports-color/index.js"); -/* harmony import */ var _utilities_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities.js */ "./node_modules/chalk/source/utilities.js"); - - - - -const {stdout: stdoutColor, stderr: stderrColor} = _supports_color__WEBPACK_IMPORTED_MODULE_0__["default"]; - -const GENERATOR = Symbol('GENERATOR'); -const STYLER = Symbol('STYLER'); -const IS_EMPTY = Symbol('IS_EMPTY'); - -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = [ - 'ansi', - 'ansi', - 'ansi256', - 'ansi16m', -]; - -const styles = Object.create(null); - -const applyOptions = (object, options = {}) => { - if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) { - throw new Error('The `level` option should be an integer from 0 to 3'); - } - - // Detect level if not set manually - const colorLevel = stdoutColor ? stdoutColor.level : 0; - object.level = options.level === undefined ? colorLevel : options.level; -}; - -class Chalk { - constructor(options) { - // eslint-disable-next-line no-constructor-return - return chalkFactory(options); - } -} - -const chalkFactory = options => { - const chalk = (...strings) => strings.join(' '); - applyOptions(chalk, options); - - Object.setPrototypeOf(chalk, createChalk.prototype); - - return chalk; -}; - -function createChalk(options) { - return chalkFactory(options); -} - -Object.setPrototypeOf(createChalk.prototype, Function.prototype); - -for (const [styleName, style] of Object.entries(_ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"])) { - styles[styleName] = { - get() { - const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]); - Object.defineProperty(this, styleName, {value: builder}); - return builder; - }, - }; -} - -styles.visible = { - get() { - const builder = createBuilder(this, this[STYLER], true); - Object.defineProperty(this, 'visible', {value: builder}); - return builder; - }, -}; - -const getModelAnsi = (model, level, type, ...arguments_) => { - if (model === 'rgb') { - if (level === 'ansi16m') { - return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type].ansi16m(...arguments_); - } - - if (level === 'ansi256') { - return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type].ansi256(_ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].rgbToAnsi256(...arguments_)); - } - - return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type].ansi(_ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].rgbToAnsi(...arguments_)); - } - - if (model === 'hex') { - return getModelAnsi('rgb', level, type, ..._ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].hexToRgb(...arguments_)); - } - - return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type][model](...arguments_); -}; - -const usedModels = ['rgb', 'hex', 'ansi256']; - -for (const model of usedModels) { - styles[model] = { - get() { - const {level} = this; - return function (...arguments_) { - const styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].color.close, this[STYLER]); - return createBuilder(this, styler, this[IS_EMPTY]); - }; - }, - }; - - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const {level} = this; - return function (...arguments_) { - const styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].bgColor.close, this[STYLER]); - return createBuilder(this, styler, this[IS_EMPTY]); - }; - }, - }; -} - -const proto = Object.defineProperties(() => {}, { - ...styles, - level: { - enumerable: true, - get() { - return this[GENERATOR].level; - }, - set(level) { - this[GENERATOR].level = level; - }, - }, -}); - -const createStyler = (open, close, parent) => { - let openAll; - let closeAll; - if (parent === undefined) { - openAll = open; - closeAll = close; - } else { - openAll = parent.openAll + open; - closeAll = close + parent.closeAll; - } - - return { - open, - close, - openAll, - closeAll, - parent, - }; -}; - -const createBuilder = (self, _styler, _isEmpty) => { - // Single argument is hot path, implicit coercion is faster than anything - // eslint-disable-next-line no-implicit-coercion - const builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' ')); - - // We alter the prototype because we must return a function, but there is - // no way to create a function with a different prototype - Object.setPrototypeOf(builder, proto); - - builder[GENERATOR] = self; - builder[STYLER] = _styler; - builder[IS_EMPTY] = _isEmpty; - - return builder; -}; - -const applyStyle = (self, string) => { - if (self.level <= 0 || !string) { - return self[IS_EMPTY] ? '' : string; - } - - let styler = self[STYLER]; - - if (styler === undefined) { - return string; - } - - const {openAll, closeAll} = styler; - if (string.includes('\u001B')) { - while (styler !== undefined) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - string = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_2__.stringReplaceAll)(string, styler.close, styler.open); - - styler = styler.parent; - } - } - - // We can move both next actions out of loop, because remaining actions in loop won't have - // any/visible effect on parts we add here. Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92 - const lfIndex = string.indexOf('\n'); - if (lfIndex !== -1) { - string = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_2__.stringEncaseCRLFWithFirstIndex)(string, closeAll, openAll, lfIndex); - } - - return openAll + string + closeAll; -}; - -Object.defineProperties(createChalk.prototype, styles); - -const chalk = createChalk(); -const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0}); - - - - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (chalk); - - -/***/ }), - -/***/ "./node_modules/chalk/source/utilities.js": -/*!************************************************!*\ - !*** ./node_modules/chalk/source/utilities.js ***! - \************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ stringEncaseCRLFWithFirstIndex: () => (/* binding */ stringEncaseCRLFWithFirstIndex), -/* harmony export */ stringReplaceAll: () => (/* binding */ stringReplaceAll) -/* harmony export */ }); -// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`. -function stringReplaceAll(string, substring, replacer) { - let index = string.indexOf(substring); - if (index === -1) { - return string; - } - - const substringLength = substring.length; - let endIndex = 0; - let returnValue = ''; - do { - returnValue += string.slice(endIndex, index) + substring + replacer; - endIndex = index + substringLength; - index = string.indexOf(substring, endIndex); - } while (index !== -1); - - returnValue += string.slice(endIndex); - return returnValue; -} - -function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) { - let endIndex = 0; - let returnValue = ''; - do { - const gotCR = string[index - 1] === '\r'; - returnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\r\n' : '\n') + postfix; - endIndex = index + 1; - index = string.indexOf('\n', endIndex); - } while (index !== -1); - - returnValue += string.slice(endIndex); - return returnValue; -} - - -/***/ }), - -/***/ "./node_modules/chalk/source/vendor/ansi-styles/index.js": -/*!***************************************************************!*\ - !*** ./node_modules/chalk/source/vendor/ansi-styles/index.js ***! - \***************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ backgroundColorNames: () => (/* binding */ backgroundColorNames), -/* harmony export */ colorNames: () => (/* binding */ colorNames), -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), -/* harmony export */ foregroundColorNames: () => (/* binding */ foregroundColorNames), -/* harmony export */ modifierNames: () => (/* binding */ modifierNames) -/* harmony export */ }); -const ANSI_BACKGROUND_OFFSET = 10; - -const wrapAnsi16 = (offset = 0) => code => `\u001B[${code + offset}m`; - -const wrapAnsi256 = (offset = 0) => code => `\u001B[${38 + offset};5;${code}m`; - -const wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`; - -const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - overline: [53, 55], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29], - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - - // Bright color - blackBright: [90, 39], - gray: [90, 39], // Alias of `blackBright` - grey: [90, 39], // Alias of `blackBright` - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39], - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], - - // Bright color - bgBlackBright: [100, 49], - bgGray: [100, 49], // Alias of `bgBlackBright` - bgGrey: [100, 49], // Alias of `bgBlackBright` - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49], - }, -}; - -const modifierNames = Object.keys(styles.modifier); -const foregroundColorNames = Object.keys(styles.color); -const backgroundColorNames = Object.keys(styles.bgColor); -const colorNames = [...foregroundColorNames, ...backgroundColorNames]; - -function assembleStyles() { - const codes = new Map(); - - for (const [groupName, group] of Object.entries(styles)) { - for (const [styleName, style] of Object.entries(group)) { - styles[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m`, - }; - - group[styleName] = styles[styleName]; - - codes.set(style[0], style[1]); - } - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false, - }); - } - - Object.defineProperty(styles, 'codes', { - value: codes, - enumerable: false, - }); - - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; - - styles.color.ansi = wrapAnsi16(); - styles.color.ansi256 = wrapAnsi256(); - styles.color.ansi16m = wrapAnsi16m(); - styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET); - styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET); - styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET); - - // From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js - Object.defineProperties(styles, { - rgbToAnsi256: { - value(red, green, blue) { - // We use the extended greyscale palette here, with the exception of - // black and white. normal palette only has 4 greyscale shades. - if (red === green && green === blue) { - if (red < 8) { - return 16; - } - - if (red > 248) { - return 231; - } - - return Math.round(((red - 8) / 247) * 24) + 232; - } - - return 16 - + (36 * Math.round(red / 255 * 5)) - + (6 * Math.round(green / 255 * 5)) - + Math.round(blue / 255 * 5); - }, - enumerable: false, - }, - hexToRgb: { - value(hex) { - const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16)); - if (!matches) { - return [0, 0, 0]; - } - - let [colorString] = matches; - - if (colorString.length === 3) { - colorString = [...colorString].map(character => character + character).join(''); - } - - const integer = Number.parseInt(colorString, 16); - - return [ - /* eslint-disable no-bitwise */ - (integer >> 16) & 0xFF, - (integer >> 8) & 0xFF, - integer & 0xFF, - /* eslint-enable no-bitwise */ - ]; - }, - enumerable: false, - }, - hexToAnsi256: { - value: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)), - enumerable: false, - }, - ansi256ToAnsi: { - value(code) { - if (code < 8) { - return 30 + code; - } - - if (code < 16) { - return 90 + (code - 8); - } - - let red; - let green; - let blue; - - if (code >= 232) { - red = (((code - 232) * 10) + 8) / 255; - green = red; - blue = red; - } else { - code -= 16; - - const remainder = code % 36; - - red = Math.floor(code / 36) / 5; - green = Math.floor(remainder / 6) / 5; - blue = (remainder % 6) / 5; - } - - const value = Math.max(red, green, blue) * 2; - - if (value === 0) { - return 30; - } - - // eslint-disable-next-line no-bitwise - let result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red)); - - if (value === 2) { - result += 60; - } - - return result; - }, - enumerable: false, - }, - rgbToAnsi: { - value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)), - enumerable: false, - }, - hexToAnsi: { - value: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)), - enumerable: false, - }, - }); - - return styles; -} - -const ansiStyles = assembleStyles(); - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ansiStyles); - - -/***/ }), - -/***/ "./node_modules/chalk/source/vendor/supports-color/index.js": -/*!******************************************************************!*\ - !*** ./node_modules/chalk/source/vendor/supports-color/index.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ createSupportsColor: () => (/* binding */ createSupportsColor), -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:process */ "node:process"); -/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:os */ "node:os"); -/* harmony import */ var node_tty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:tty */ "node:tty"); - - - - -// From: https://github.com/sindresorhus/has-flag/blob/main/index.js -/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) { -function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : node_process__WEBPACK_IMPORTED_MODULE_0__.argv) { - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const position = argv.indexOf(prefix + flag); - const terminatorPosition = argv.indexOf('--'); - return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); -} - -const {env} = node_process__WEBPACK_IMPORTED_MODULE_0__; - -let flagForceColor; -if ( - hasFlag('no-color') - || hasFlag('no-colors') - || hasFlag('color=false') - || hasFlag('color=never') -) { - flagForceColor = 0; -} else if ( - hasFlag('color') - || hasFlag('colors') - || hasFlag('color=true') - || hasFlag('color=always') -) { - flagForceColor = 1; -} - -function envForceColor() { - if ('FORCE_COLOR' in env) { - if (env.FORCE_COLOR === 'true') { - return 1; - } - - if (env.FORCE_COLOR === 'false') { - return 0; - } - - return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); - } -} - -function translateLevel(level) { - if (level === 0) { - return false; - } - - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3, - }; -} - -function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { - const noFlagForceColor = envForceColor(); - if (noFlagForceColor !== undefined) { - flagForceColor = noFlagForceColor; - } - - const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; - - if (forceColor === 0) { - return 0; - } - - if (sniffFlags) { - if (hasFlag('color=16m') - || hasFlag('color=full') - || hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } - } - - // Check for Azure DevOps pipelines. - // Has to be above the `!streamIsTTY` check. - if ('TF_BUILD' in env && 'AGENT_NAME' in env) { - return 1; - } - - if (haveStream && !streamIsTTY && forceColor === undefined) { - return 0; - } - - const min = forceColor || 0; - - if (env.TERM === 'dumb') { - return min; - } - - if (node_process__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32') { - // Windows 10 build 10586 is the first Windows release that supports 256 colors. - // Windows 10 build 14931 is the first release that supports 16m/TrueColor. - const osRelease = node_os__WEBPACK_IMPORTED_MODULE_1__.release().split('.'); - if ( - Number(osRelease[0]) >= 10 - && Number(osRelease[2]) >= 10_586 - ) { - return Number(osRelease[2]) >= 14_931 ? 3 : 2; - } - - return 1; - } - - if ('CI' in env) { - if ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) { - return 3; - } - - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } - - return min; - } - - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } - - if (env.COLORTERM === 'truecolor') { - return 3; - } - - if (env.TERM === 'xterm-kitty') { - return 3; - } - - if ('TERM_PROGRAM' in env) { - const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - - switch (env.TERM_PROGRAM) { - case 'iTerm.app': { - return version >= 3 ? 3 : 2; - } - - case 'Apple_Terminal': { - return 2; - } - // No default - } - } - - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } - - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } - - if ('COLORTERM' in env) { - return 1; - } - - return min; -} - -function createSupportsColor(stream, options = {}) { - const level = _supportsColor(stream, { - streamIsTTY: stream && stream.isTTY, - ...options, - }); - - return translateLevel(level); -} - -const supportsColor = { - stdout: createSupportsColor({isTTY: node_tty__WEBPACK_IMPORTED_MODULE_2__.isatty(1)}), - stderr: createSupportsColor({isTTY: node_tty__WEBPACK_IMPORTED_MODULE_2__.isatty(2)}), -}; - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (supportsColor); - - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/async module */ -/******/ (() => { -/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__"; -/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; -/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__"; -/******/ var resolveQueue = (queue) => { -/******/ if(queue && queue.d < 1) { -/******/ queue.d = 1; -/******/ queue.forEach((fn) => (fn.r--)); -/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); -/******/ } -/******/ } -/******/ var wrapDeps = (deps) => (deps.map((dep) => { -/******/ if(dep !== null && typeof dep === "object") { -/******/ if(dep[webpackQueues]) return dep; -/******/ if(dep.then) { -/******/ var queue = []; -/******/ queue.d = 0; -/******/ dep.then((r) => { -/******/ obj[webpackExports] = r; -/******/ resolveQueue(queue); -/******/ }, (e) => { -/******/ obj[webpackError] = e; -/******/ resolveQueue(queue); -/******/ }); -/******/ var obj = {}; -/******/ obj[webpackQueues] = (fn) => (fn(queue)); -/******/ return obj; -/******/ } -/******/ } -/******/ var ret = {}; -/******/ ret[webpackQueues] = x => {}; -/******/ ret[webpackExports] = dep; -/******/ return ret; -/******/ })); -/******/ __webpack_require__.a = (module, body, hasAwait) => { -/******/ var queue; -/******/ hasAwait && ((queue = []).d = -1); -/******/ var depQueues = new Set(); -/******/ var exports = module.exports; -/******/ var currentDeps; -/******/ var outerResolve; -/******/ var reject; -/******/ var promise = new Promise((resolve, rej) => { -/******/ reject = rej; -/******/ outerResolve = resolve; -/******/ }); -/******/ promise[webpackExports] = exports; -/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {})); -/******/ module.exports = promise; -/******/ body((deps) => { -/******/ currentDeps = wrapDeps(deps); -/******/ var fn; -/******/ var getResult = () => (currentDeps.map((d) => { -/******/ if(d[webpackError]) throw d[webpackError]; -/******/ return d[webpackExports]; -/******/ })) -/******/ var promise = new Promise((resolve) => { -/******/ fn = () => (resolve(getResult)); -/******/ fn.r = 0; -/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))); -/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue))); -/******/ }); -/******/ return fn.r ? promise : getResult(); -/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))); -/******/ queue && queue.d < 0 && (queue.d = 0); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module used 'module' so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__("./src/diff.ts"); -/******/ -/******/ })() -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLEdBQXVCLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUVqSCx1Q0FBdUM7SUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtRQUNuQixDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ1g7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUMzQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNwQztJQUVELElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtRQUNqQixLQUFLLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDOUQ7U0FBTTtRQUNILEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMs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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFTztBQUNBO0FBQ0E7QUFDQTs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCLHFCQUFxQixTQUFTO0FBQzlCOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDZCQUE2QixFQUFFLFNBQVMsRUFBRTtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRztB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ZGlmZi8uL2NvbmZpZy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9jb3JlL2ZpbGVDYWNoaW5nLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9jb3JlL2ZpbmRCcmFuY2hCeVVVSUQudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL2NvcmUvZ2V0RXF1aXZhbGVudFNwZWN0cnVtUmVmZXJlbmNlcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvY29yZS9nZXRFcXVpdmFsZW50U3BlY3RydW1WYWx1ZS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvY29yZS9nZXRTcGVjdHJ1bVZhbHVlLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9jb3JlL2hlbHBlcnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL2NvcmUvcHJpbnRhYmxlU2V0TmFtZS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvY29yZS9zY2hlbWFTdHVmZi50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvY29yZS90b2tlblN0dWZmLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9kaWZmLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9oZWxwZXJzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2FkZFNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2FkZFVVSURzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2NoYW5nZVNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2NoZWNrRm9yRGVwcmVjYXRlZFRva2Vucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvb3BlcmF0aW9ucy9jaGVja0ZvclJlY3ljbGVkVVVJRHMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvY2hlY2tNb2Rlcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvb3BlcmF0aW9ucy9jaGVja05hbWVDaGFuZ2VzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2NoZWNrU2NoZW1hQ2hhbmdlcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvb3BlcmF0aW9ucy9jaGVja1NldHMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvY2hlY2tWYWx1ZUNoYW5nZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvZGVwcmVjYXRlU3BlY3RydW1Ub2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvZm9ybWF0Q2hhbmdlZFNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2Zvcm1hdE5ld1NwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2dldE1vZGlmaWVkVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL2dldFVuaXF1ZUlkLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL3Byb2Nlc3NTdHVkaW9Ub2tlbkRhdGEudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvcmVhZFNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL3JlYWRTdHVkaW9Ub2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvcmVuYW1lU3BlY3RydW1Ub2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL29wZXJhdGlvbnMvcmVzb2x2ZU1lcmdlVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL3Jlc29sdmVTcGxpdFRva2Vucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvb3BlcmF0aW9ucy91cGRhdGVUb2tlbk5hbWVNZXRhZGF0YS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvb3BlcmF0aW9ucy92ZXJpZnlCcmFuY2hTY2hlbWFzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9vcGVyYXRpb25zL3dyaXRlU3R1ZGlvVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9yZXBvcnRzL3JlcG9ydERlbGV0ZWRUb2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL3JlcG9ydHMvcmVwb3J0RGVwcmVjYXRlZFRva2VuVXNhZ2UudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL3JlcG9ydHMvcmVwb3J0TWlzc2luZ1NwZWN0cnVtU2V0cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvcmVwb3J0cy9yZXBvcnRNaXNzaW5nU3BlY3RydW1VVUlEcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvcmVwb3J0cy9yZXBvcnRNaXNzaW5nU3R1ZGlvTW9kZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL3JlcG9ydHMvcmVwb3J0TWlzc2luZ1N0dWRpb1Rva2VuTmFtZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vc3JjL3JlcG9ydHMvcmVwb3J0TWlzc2luZ1N0dWRpb1VVSURzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9yZXBvcnRzL3JlcG9ydE5hbWVDaGFuZ2VzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9yZXBvcnRzL3JlcG9ydE5ld1Rva2Vucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvcmVwb3J0cy9yZXBvcnRTY2hlbWFDaGFuZ2VzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi8uL3NyYy9yZXBvcnRzL3JlcG9ydFNldENvbmZsaWN0cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvcmVwb3J0cy9yZXBvcnRUb2tlbkNvdW50cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvcmVwb3J0cy9yZXBvcnRVVUlEQ29sbGlzaW9ucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9zcmMvcmVwb3J0cy9yZXBvcnRWYWx1ZUNoYW5nZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJjcnlwdG9cIiIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImZzXCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJub2RlOm9zXCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJub2RlOnByb2Nlc3NcIiIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcIm5vZGU6dHR5XCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmLy4vbm9kZV9tb2R1bGVzL2NoYWxrL3NvdXJjZS9pbmRleC5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3V0aWxpdGllcy5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3ZlbmRvci9hbnNpLXN0eWxlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3ZlbmRvci9zdXBwb3J0cy1jb2xvci9pbmRleC5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL3dlYnBhY2svcnVudGltZS9hc3luYyBtb2R1bGUiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tZGlmZi93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL3dlYnBhY2svYmVmb3JlLXN0YXJ0dXAiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1kaWZmL3dlYnBhY2svc3RhcnR1cCIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLWRpZmYvd2VicGFjay9hZnRlci1zdGFydHVwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/.github/workflows/sync-foundations.yml b/.github/workflows/sync-foundations.yml new file mode 100644 index 00000000..14319fff --- /dev/null +++ b/.github/workflows/sync-foundations.yml @@ -0,0 +1,17 @@ +name: SYNC FOUNDATIONS + +on: + workflow_dispatch + +jobs: + check_should_run: + uses: ./.github/workflows/_diff-should-run.yml + secrets: inherit + diff_do: + needs: [check_should_run] + if: ${{ needs.check_should_run.outputs.condition == 'true' && (github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch')}} + uses: ./.github/workflows/_diff-trigger-sync.yml + with: + source: foundations # the tokens-studio data we want to compare (folder prefix in the repo) + branch: snapshot-s2-foundations # the spectrum-tokens data we want to compare (branch of the repo) + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/sync.js b/.github/workflows/sync.js new file mode 100644 index 00000000..9bdc3f72 --- /dev/null +++ b/.github/workflows/sync.js @@ -0,0 +1,6914 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./config.ts": +/*!*******************!*\ + !*** ./config.ts ***! + \*******************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _src_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/constants */ "./src/constants.ts"); + +const SPECTRUM1 = '../spectrum-tokens-studio-data/src/tokens-studio/spectrum'; +const SPECTRUM2 = '../spectrum-tokens-studio-data/src/tokens-studio/spectrum2'; +const FOUNDATION = '../spectrum-tokens-studio-data/src/tokens-studio/foundations'; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + // TOKENS_STUDIO: path to the tokens studio json file + // override with command line option -source= + TOKENS_STUDIO: FOUNDATION, + SPECTRUM: { + [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].S1]: SPECTRUM1, + [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].S2]: SPECTRUM2, + [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FOUNDATION]: FOUNDATION + }, + // TOKENS_STUDIO_DATA_SETS: the data sets we're loading and what is in them, more or less + // the color/layout is what we'll use to differentiate how the data should be handled in terms + // of target files and schemas in spectrum-tokens and some token name handling conventions + TOKENS_STUDIO_DATA_SETS: { [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COLOR]: '-colors', [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].LAYOUT]: '-non-colors', [_src_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EVERYTHING]: '' }, + // TOKENS_SPECTRUM: path to the spectrum-tokens source json directory + // override with command line option -destination= + TOKENS_SPECTRUM: '../spectrum-tokens/packages/tokens/src/', + // TESTING: whether changes are written to the repo data + // override with command line option -test + TESTING: false, + // AUTOMATION: whether this is running as a github action, + // in which case we may curtail the cout messages + AUTOMATION: false, + // REVERSE: try flowing the data the opposite direction + REVERSE: false, + /////////////////////////////////////////////////////////////////////////////////////// + // directory to store the log files + OUTPUT_LOGS: './logs/', + // OUTPUT: when testing, this will write out the cout log so we can append to a pr + COUT_LOG: 'cout.log', + // OUTPUT: file to write new token definitions too: [path | undefined] + TOKENS_OUT_NEW: 'newTokens.json', + // OUTPUT: file to write changed token definitions too: [path | undefined] + TOKENS_OUT_CHANGED: 'changedTokens.json', + // OUTPUT: file to write changed token definitions too: [path | undefined] + TOKENS_OUT_RENAMED: 'renamedTokens.json', + // OUTPUT: file to write deleted token definitions too: [path | undefined] + TOKENS_OUT_DEPRECATED: 'deprecatedTokens.json', + /////////////////////////////////////////////////////////////////////////////////////// + // CONSOLE LOGGING - can suppress this (on for jest tests, and git actions) + SUPPRESS_COUT: false, + // REPORTING: dumps change details to the console + REPORT_VERBOSE: false, + // AUTO-UPDATE: adds uuids to to token studio entries that do not have them + CREATE_UUIDS_FOR_TOKENS_STUDIO: true, + // whether or not we say a spectrum definition that doesn't exist + // in tokens studio implies that the spectrum token should be deprecated + CHECK_FOR_DELETED_TOKENS: true, + // whether or not to write the duplicated token metadata + DISABLE_TOKEN_DUPLICATION_METADATA: true, + /////////////////////////////////////////////////////////////////////////////////////// + // when checking names, we treat color mode set as having their spectrum token name + // in metadata (otherwise it is the tokens studio entry name), with the exception of + // these specific token studio groups + TREAT_AS_TOKENNAMES: ['opacity.alias', 'opacity.component'], + // when adding tokens we need to have some specific mapping to the destination files + SPECTRUM_FILES: { + COLOR_PALETTE: 'color-palette.json', + COLOR_SEMANTIC: 'semantic-color-palette.json', + COLOR_ALIASES: 'color-aliases.json', + COLOR_COMPONENT: 'color-component.json', + ICONS: 'icons.json', + LAYOUT: 'layout.json', + LAYOUT_COMPONENT: 'layout-component.json', + TYPOGRAPHY: 'typography.json', + }, + // limits the scope of this script to the specified system ex. 'spectrum', 'express', undefined + SYSTEM: 'spectrum', + // whether or not token value checks should be case sensitive + CASE_SENSITIVE: true, + // whether em values are equivalent to percentage values + EM_IS_PERCENT: true, + // value equivalency map - used to whitelist differences when comparing token values + EQUIVALENT_VALUES: new Map([ + ["bold", "Bold"], + ["regular", "Regular"], + ["italic", "Italic"], + ["extra-bold", "ExtraBold"], + ["medium", "Medium"], + ["normal", "Normal"], + ["light", "Light"], + ["extra-light", "ExtraLight"], + ["black", "Black"], + ]), + // we use this stuff during value type verification and/or when creating new token entries + SCHEMA_TYPES: { + // native - tokens studio has these types + "color": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/color.json", + "opacity": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/opacity.json", + "spacing": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", + "borderwidth": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", + "borderradius": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", + "sizing": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", + "letterspacing": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", + "fontsizes": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-size.json", + "fontweights": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-weight.json", + "lineheights": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/multiplier.json", + "fontfamilies": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-family.json", + "boxshadow": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/drop-shadow.json", + // derived - not native to tokens studio by we can figure them out + // - alias is easy to detect, we just check the value references another tokens + "alias": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/alias.json", + // - all the rest here are marked by tokens studio as being of type "other" and + // we should follow-up and make sure they aren't mis-typed and if there is a valid + // tokens studio type that accurately captures proper usage + // (the tokens are mix of drop-shadow and typography, fyi) + "multiplier": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/multiplier.json", + "dimension": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/dimension.json", + "font-style": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/font-style.json", + "text-transform": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/text-transform.json", + // set schemas - we don't detect/compare/test these, but we use them when changing/adding to spectrum-tokens + "color-set": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/color-set.json", + "scale-set": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/scale-set.json", + "system-set": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/system-set.json" + } +}); + + +/***/ }), + +/***/ "./src/constants.ts": +/*!**************************!*\ + !*** ./src/constants.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + UUID: 'UUID', + SPECTRUM: 'spectrum', + STYLE: 'style', + SYSTEM: 'SYSTEM', + THEME: 'THEME', + VALUE: 'value', + TYPE: 'type', + COLOR: 'color', + LAYOUT: 'layout', + EVERYTHING: 'everything', + SYSTEMS: ['spectrum', 'express'], + THEMES: ['light', 'dark', 'darkest', 'wireframe'], + SCALES: ['desktop', 'mobile'], + SCHEMA: '$schema', + SETS: 'sets', + COMPONENT: 'component', + DEPRECATED: 'deprecated', + DEPRECATED_COMMENT: 'deprecated_comment', + BUSTER: '🚫', + S1: 'spectrum', + S2: 'spectrum2', + FOUNDATION: 'foundations', + // these get used as object keys in type definitions + EXTENSIONS: '$extensions', + EXTENSIONS_STUDIO: 'studio.tokens', + EXTENSIONS_SPECTRUM: 'spectrum-tokens', + EXTENSIONS_SPECTRUM_NAME: 'name', + EXTENSIONS_SPECTRUM_UUID: 'uuid', + EXTENSIONS_SPECTRUM_DUPLICATE: 'constant-token-duplicate', + EXTENSIONS_SPECTRUM_DEPRECATED: 'deprecated-uuids' +}); + + +/***/ }), + +/***/ "./src/core/fileCaching.ts": +/*!*********************************!*\ + !*** ./src/core/fileCaching.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getFile: () => (/* binding */ getFile), +/* harmony export */ getFileUncached: () => (/* binding */ getFileUncached), +/* harmony export */ storeFile: () => (/* binding */ storeFile), +/* harmony export */ writeFiles: () => (/* binding */ writeFiles) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +/* istanbul ignore file */ + + +let FILECHANGED = {}; +let FILECACHE = {}; +function getFile(name) { + if (!FILECACHE[name]) { + FILECACHE[name] = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(name, { encoding: 'utf8', flag: 'r' })); + } + return FILECACHE[name]; +} +function getFileUncached(name) { + return JSON.parse(fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(name, { encoding: 'utf8', flag: 'r' })); +} +function storeFile(name, data) { + if (!FILECACHE[name]) + throw new Error('ERROR - FILE NOT LOADED INTO CACHE'); + FILECACHE[name] = data; + FILECHANGED[name] = true; +} +function writeFiles() { + for (const file of Object.keys(FILECHANGED)) { + fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(file, JSON.stringify(FILECACHE[file], null, 2)); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WROTE: ' + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.trimPath)(file)); + } + FILECACHE = {}; + FILECHANGED = {}; +} + + + +/***/ }), + +/***/ "./src/core/findBranchByUUID.ts": +/*!**************************************!*\ + !*** ./src/core/findBranchByUUID.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function findBranchByUUID(branch, uuid, path) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isObject)(branch)) { + if (branch.uuid === uuid) { + return true; + } + for (const key of Object.keys(branch)) { + path.push(key); + if (findBranchByUUID(branch[key], uuid, path)) { + return true; + } + else { + path.pop(); + } + } + } + return false; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (findBranchByUUID); + + +/***/ }), + +/***/ "./src/core/getBranchUUID.ts": +/*!***********************************!*\ + !*** ./src/core/getBranchUUID.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function getBranchUUID(spectrumProblems, uuid) { + for (const branchUUID in spectrumProblems.branches) { + const branch = spectrumProblems.branches[branchUUID]; + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)(branch.sets); + // does this branch have the studio token in it's child sets? + for (const set in branch.sets) { + const setToken = branch.sets[set]; + if (setToken.uuid === uuid) { + return branchUUID; + } + } + } + return undefined; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getBranchUUID); + + +/***/ }), + +/***/ "./src/core/getEquivalentSpectrumReferences.ts": +/*!*****************************************************!*\ + !*** ./src/core/getEquivalentSpectrumReferences.ts ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/core/helpers.ts"); +/* harmony import */ var _tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function equivalentReferenceUUID(path, value, studioTokens) { + if (value[0] === '{') { + for (const entry of Object.values(studioTokens)) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filterPath)(path.join('/').split('/'), entry.path.join('/').split('/')) && entry.path.slice().splice(1).join('.') === value.replace('{', '').replace('}', '')) { + return (0,_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(entry); + } + } + } +} +function equivalentStringReference(source, value, studioTokens) { + const uuid = equivalentReferenceUUID(source, value, studioTokens); + if (uuid) { + return '{' + (0,_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(studioTokens[uuid]) + '}'; + } + return value; +} +function getEquivalentSpectrumReferences(source, value, studioTokens) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isString)(value)) { + return equivalentStringReference(source, value, studioTokens); + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isArray)(value)) { + const result = []; + for (const input of value) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isObject)(input)); + result.push(getEquivalentSpectrumReferences(source, input, studioTokens)); + } + return result; + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isObject)(value)) { + const result = {}; + for (const key in value) { + const input = value[key]; + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isString)(input)); + result[key] = getEquivalentSpectrumReferences(source, input, studioTokens); + } + return result; + } + else { + throw new Error('getEquivalentSpectrumReferences - UNHANDLED VALUE TYPE FOR: ' + source.join('.')); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getEquivalentSpectrumReferences); + + +/***/ }), + +/***/ "./src/core/getEquivalentSpectrumValue.ts": +/*!************************************************!*\ + !*** ./src/core/getEquivalentSpectrumValue.ts ***! + \************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function toRGB(value) { + if (!value.length || value[0] !== '#') { + return value; + } + const r = Number('0x' + value.slice(1, 3)); + const g = Number('0x' + value.slice(3, 5)); + const b = Number('0x' + value.slice(5, 7)); + let a = value.length === 9 ? (Number('0x' + value.slice(7, 9)) / 255).toFixed(2) : undefined; + // dealing with alpha number formatting + if (a && a === '0.00') { + a = '0'; + } + if (a && a !== '0' && a[a.length - 1] === '0') { + a = a.substring(0, a.length - 1); + } + if (a !== undefined) { + value = 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')'; + } + else { + value = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } + return value; +} +function trimZeros(value) { + const decimal = value.indexOf('.'); + if (decimal >= 0) { + while (value[value.length - 1] === '0' && value.length > decimal + 1) { + value = value.slice(0, -1); + } + } + return value; +} +function equivalentStringSpectrumValue(source, value) { + // convert some random property values to their spectrum equivalent + for (const [c1, c2] of _config__WEBPACK_IMPORTED_MODULE_0__["default"].EQUIVALENT_VALUES) { + if (c2 === value || (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].CASE_SENSITIVE && c2.toLowerCase() === value.toLowerCase())) { + return c1; + } + } + // convert percent to em + if (value[value.length - 1] === '%') { + if (source.join('.').toLowerCase().indexOf('opacity') >= 0) { + return trimZeros((parseInt(value) / 100).toFixed(2)); + } + else { + return (parseInt(value) / 100).toFixed(2) + 'em'; + } + } + // convert hex to rgb + if (value.length && value[0] === '#') { + return toRGB(value); + } + return value; +} +function sortValueKeys(keys) { + const ORDER = ['x', 'y', 'blur', 'color']; + const IGNORE = ['spread', 'type']; + const result = []; + keys.sort((a, b) => { + if (a === b) { + return 0; + } + if (ORDER.indexOf(a) >= 0 && ORDER.indexOf(b) >= 0) { + return ORDER.indexOf(a) < ORDER.indexOf(b) ? -1 : 1; + } + if (ORDER.indexOf(a) >= 0 && ORDER.indexOf(b) === -1) { + return -1; + } + if (ORDER.indexOf(b) >= 0 && ORDER.indexOf(a) === -1) { + return 1; + } + return a < b ? -1 : 1; + }); + for (const key of keys) { + if (!IGNORE.includes(key)) { + result.push(key); + } + } + return result; +} +function getEquivalentSpectrumValue(source, value) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value)) { + return equivalentStringSpectrumValue(source, value); + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(value)) { + const result = []; + for (const input of value) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(input)); + result.push(getEquivalentSpectrumValue(source, input)); + } + return result; + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(value)) { + const result = {}; + for (const key of sortValueKeys(Object.keys(value))) { + const input = value[key]; + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(input)); + result[key] = getEquivalentSpectrumValue(source, input); + } + return result; + } + else { + throw new Error('getEquivalentSpectrumValue - UNHANDLED VALUE TYPE FOR: ' + source.join('.')); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getEquivalentSpectrumValue); + + +/***/ }), + +/***/ "./src/core/getSpectrumValue.ts": +/*!**************************************!*\ + !*** ./src/core/getSpectrumValue.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _getEquivalentSpectrumValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getEquivalentSpectrumValue */ "./src/core/getEquivalentSpectrumValue.ts"); +/* harmony import */ var _getEquivalentSpectrumReferences__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getEquivalentSpectrumReferences */ "./src/core/getEquivalentSpectrumReferences.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function getSpectrumValue(uuid, studioTokens) { + const studioPath = studioTokens[uuid].path; + const spectrumValue = (0,_getEquivalentSpectrumValue__WEBPACK_IMPORTED_MODULE_0__["default"])(studioPath, studioTokens[uuid].value); + return (0,_getEquivalentSpectrumReferences__WEBPACK_IMPORTED_MODULE_1__["default"])(studioPath, spectrumValue, studioTokens); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getSpectrumValue); + + +/***/ }), + +/***/ "./src/core/helpers.ts": +/*!*****************************!*\ + !*** ./src/core/helpers.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ filterPath: () => (/* binding */ filterPath), +/* harmony export */ isDeprecated: () => (/* binding */ isDeprecated), +/* harmony export */ toHex: () => (/* binding */ toHex) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function filterPath(source, check) { + // ??? rename function + let system; + _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SYSTEMS.forEach((sys) => { + if (source.includes(sys)) { + system = sys; + } + }); + let theme; + _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES.forEach((them) => { + if (source.includes(them)) { + theme = them; + } + }); + let scale; + _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES.forEach((scal) => { + if (source.includes(scal)) { + scale = scal; + } + }); + if (system) { + for (const sys of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SYSTEMS) { + if (check.includes(sys)) { + if (sys !== system) { + return false; + } + else { + break; + } + } + } + } + if (theme) { + for (const them of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { + if (check.includes(them)) { + if (them !== theme) { + return false; + } + else { + break; + } + } + } + } + if (scale) { + for (const scal of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { + if (check.includes(scal)) { + if (scal !== scale) { + return false; + } + else { + break; + } + } + } + } + return true; +} +function toHex(color) { + const r = Number(color.r).toString(16).toUpperCase().padStart(2, '0'); + const g = Number(color.g).toString(16).toUpperCase().padStart(2, '0'); + const b = Number(color.b).toString(16).toUpperCase().padStart(2, '0'); + const a = (Number(color.a) / 255).toFixed(2); + return '#' + r + g + b + (Number(color.a) === 255 ? '' : ' ' + a.replace('0.', '') + '%'); +} +function isDeprecated(path) { + return path.join('.').indexOf(_constants__WEBPACK_IMPORTED_MODULE_0__["default"].BUSTER) >= 0 ? true : false; +} + + + +/***/ }), + +/***/ "./src/core/printableSetName.ts": +/*!**************************************!*\ + !*** ./src/core/printableSetName.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +function printableSetName(spectrumToken) { + if (spectrumToken.sets.length) { + return '/' + spectrumToken.sets.join('/'); + } + return ''; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (printableSetName); + + +/***/ }), + +/***/ "./src/core/schemaStuff.ts": +/*!*********************************!*\ + !*** ./src/core/schemaStuff.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getSchemaFromType: () => (/* binding */ getSchemaFromType), +/* harmony export */ getSchemaType: () => (/* binding */ getSchemaType) +/* harmony export */ }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +const MULTIPLIER = 'multiplier'; +const RATIO = 'ratio'; +const DIMENSION = 'dimension'; +const TYPOGRAPHY = 'typography'; +const FONT_STYLE = 'font-style'; +const TEXT_TRANSFORM = 'text-transform'; +function getSchemaType(studioToken) { + let type = studioToken.type.toLowerCase(); + const tokenName = (0,_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(studioToken).toLowerCase(); + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value) && studioToken.value[0] === '{') { + type = 'alias'; + } + if (tokenName.indexOf('-' + MULTIPLIER) > 0 && (tokenName.indexOf('-' + MULTIPLIER + '-') > 0 || tokenName.indexOf('-' + MULTIPLIER) === tokenName.length - MULTIPLIER.length - 1)) { + type = MULTIPLIER; + } + if (tokenName.indexOf('-' + RATIO) > 0 && (tokenName.indexOf('-' + RATIO + '-') > 0 || tokenName.indexOf('-' + RATIO) === tokenName.length - RATIO.length - 1)) { + type = MULTIPLIER; + } + if (type === 'number' && (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value)) { + const valueAsNumber = parseFloat(studioToken.value); + if (!isNaN(valueAsNumber) && valueAsNumber <= 1 && valueAsNumber >= 0) { + type = MULTIPLIER; + } + } + if (type === 'other' && (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value)) { + const value = studioToken.value; + if (!(0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value) || ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value) && !isNaN(parseInt(value)))) { + type = DIMENSION; + } + else if (studioToken.path.join('.').toLowerCase().includes(TYPOGRAPHY)) { + switch (value.toLowerCase()) { + case 'normal': + case 'italic': + type = FONT_STYLE; + break; + case 'uppercase': + type = TEXT_TRANSFORM; + break; + default: + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - TYPE IS UNHANDLED OTHER: ' + tokenName + ' = ' + studioToken.value); + } + } + } + return type; +} +function getSchemaFromType(type) { + if (Object.keys(_config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES).includes(type)) { + return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES[type]; + } + return undefined; +} + + + +/***/ }), + +/***/ "./src/core/tokenStuff.ts": +/*!********************************!*\ + !*** ./src/core/tokenStuff.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ combineTokenEntries: () => (/* binding */ combineTokenEntries), +/* harmony export */ getCleanedPath: () => (/* binding */ getCleanedPath), +/* harmony export */ getSets: () => (/* binding */ getSets), +/* harmony export */ getSpectrumTokenSetName: () => (/* binding */ getSpectrumTokenSetName), +/* harmony export */ getTokenDeprecations: () => (/* binding */ getTokenDeprecations), +/* harmony export */ getTokenDuplicated: () => (/* binding */ getTokenDuplicated), +/* harmony export */ getTokenName: () => (/* binding */ getTokenName), +/* harmony export */ getTokenSpectrumName: () => (/* binding */ getTokenSpectrumName), +/* harmony export */ getTokenStyles: () => (/* binding */ getTokenStyles), +/* harmony export */ getTokenUUID: () => (/* binding */ getTokenUUID), +/* harmony export */ getValidSpectrumTokenSets: () => (/* binding */ getValidSpectrumTokenSets), +/* harmony export */ isColorSet: () => (/* binding */ isColorSet), +/* harmony export */ setTokenDeprecations: () => (/* binding */ setTokenDeprecations), +/* harmony export */ setTokenDuplicated: () => (/* binding */ setTokenDuplicated), +/* harmony export */ setTokenSpectrumName: () => (/* binding */ setTokenSpectrumName), +/* harmony export */ setTokenUUID: () => (/* binding */ setTokenUUID) +/* harmony export */ }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + +function filterName(allowed, name, filter) { + const bits = name.split('/'); + for (const bit of bits) { + for (const check of filter) { + if (bit.toLowerCase() === check.toLowerCase() && check.toLowerCase() !== allowed.toLowerCase()) { + return false; + } + } + } + return true; +} +function filterTheme(theme, name) { + return theme ? filterName(theme, name, _constants__WEBPACK_IMPORTED_MODULE_2__["default"].THEMES) : true; +} +function getTokenStyles(dataSet, file, startPath, data, studioTokens, studioProblems, theme = undefined, type = undefined) { + // depth first... + function traverseTokenStyles(root, path) { + if (root[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].VALUE]) { + const uuid = getTokenUUID(root); + const extensions = root[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + const tokenEntry = { value: root.value, type: root.type, files: [file], path: path, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]: extensions, dataSet: dataSet }; + // check metadata for unhandled tokens studio data + if (extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO]) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - UNHANDLED MODIFIER: ' + path.join('.') + '\n' + JSON.stringify(extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO])); + studioProblems.metadata.push(tokenEntry); + } + // check metadata for unhandled spectrum tokens data + if (extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]) { + const spectrumExtensionData = extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]; + if (spectrumExtensionData) { + for (const key of Object.keys(spectrumExtensionData)) { + if (![_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME, _constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID, _constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE, _constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED].includes(key.toLowerCase())) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - UNHANDLED SPECTRUM METADATA: ' + path.join('.') + ' => ' + key); + studioProblems.metadata.push(tokenEntry); + } + } + } + } + // check for unhandled extension metadata entries + if (extensions) { + for (const key of Object.keys(extensions)) { + if (![_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM, _constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO].includes(key.toLowerCase())) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - UNHANDLED EXTENSION METADATA: ' + path.join('.') + ' => ' + key); + studioProblems.metadata.push(tokenEntry); + } + } + } + // entry is missing a uuid + if (!uuid) { + studioProblems.uuids.push(tokenEntry); + return; + } + if (studioTokens[uuid]) { + // we're going to have a collision, so get prepared + studioProblems.collisions[uuid] = []; + studioProblems.collisions[uuid].push(studioTokens[uuid]); + delete studioTokens[uuid]; + } + if (studioProblems.collisions[uuid]) { + studioProblems.collisions[uuid].push(tokenEntry); + return; + } + if (!type || (tokenEntry.type && tokenEntry.type === type)) { + studioTokens[uuid] = tokenEntry; + } + } + else { + Object.keys(root).forEach((child) => { + if (child[0] !== '$') { + if (filterTheme(theme, child)) { + traverseTokenStyles(root[child], path.concat([child])); + } + } + }); + } + } + traverseTokenStyles(data, startPath); +} +function initializeExtensions(entry) { + let result = entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + if (!result) { + result = { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]: { [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME]: undefined, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID]: undefined, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined } + }; + entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS] = result; + } + if (result) { + if (!result[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]) { + result[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] = { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined + }; + } + return result; + } + throw new Error(); +} +function getTokenDuplicated(entry) { + const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] : undefined; + return extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE] !== undefined ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE] : undefined; +} +function setTokenDuplicated(entry, duplicate) { + const extensions = initializeExtensions(entry); + const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]; + if (extensions_spectrum) { + extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE] = duplicate; + } +} +function getTokenUUID(entry) { + const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] : undefined; + return extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID] !== undefined ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID] : undefined; +} +function setTokenUUID(entry, uuid) { + const extensions = initializeExtensions(entry); + const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]; + if (extensions_spectrum) { + extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID] = uuid; + } +} +function getTokenSpectrumName(entry) { + const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] : undefined; + const extensions_spectrum_name = extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME] ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME] : undefined; + return extensions_spectrum_name && extensions_spectrum_name.length ? extensions_spectrum_name : undefined; +} +function setTokenSpectrumName(entry, name) { + const extensions = initializeExtensions(entry); + const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]; + if (extensions_spectrum) { + extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME] = name; + } +} +function getTokenDeprecations(entry) { + const extensions = entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + const extensions_spectrum = extensions && extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] ? extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM] : undefined; + return extensions_spectrum && extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED] !== undefined ? extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED] : undefined; +} +function setTokenDeprecations(entry, deprecations) { + const extensions = initializeExtensions(entry); + const extensions_spectrum = extensions[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]; + if (extensions_spectrum) { + extensions_spectrum[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED] = deprecations; + } +} +function getTokenName(token) { + return token.path.slice().splice(1).join('/'); +} +function getSpectrumTokenSetName(entry) { + const result = []; + for (let bit of entry.path[0].split('/')) { + bit = bit.toLowerCase(); + if (_constants__WEBPACK_IMPORTED_MODULE_2__["default"].THEMES.includes(bit) || _constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCALES.includes(bit)) { + result.push(bit); + } + } + if (result.length >= 2) { + throw new Error('ERROR - unsupported set within set definition in spectrum tokens data'); + } + return result.length ? result[0] : ''; +} +function getValidSpectrumTokenSets(entry) { + // these should match the sets filtered in getSpectrumTokenSetName() + // and should be used whenever we are comparing the set information + // from the two data sources + const spectrumSets = []; + for (let set of entry.sets) { + set = set.toLowerCase(); + if (_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCALES.includes(set) || _constants__WEBPACK_IMPORTED_MODULE_2__["default"].THEMES.includes(set)) { + spectrumSets.push(set); + } + } + return spectrumSets; +} +// !!! we would be better off creating a new entry object, +// not recycling the one from the merge list, right? +// otherwise the .merge object contains invalid object data +function combineTokenEntries(entries) { + let files = []; + for (const entry of entries) { + files = files.concat(entry.files); + } + const entry = entries[0]; + entry.path = getCleanedPath(entry.path); + entry.files = files; + setTokenDuplicated(entry, true); + return entry; +} +function getCleanedPath(path) { + // path name w/out set information really + const pathHead = path[0].split('/').slice(0, -1).join('/'); + return [pathHead].concat(path.slice(1)); +} +function getSets(studioToken) { + const sets = []; + for (const file of studioToken.files) { + sets.push(path__WEBPACK_IMPORTED_MODULE_0___default().basename(file).split('.')[0]); + } + return sets; +} +function isColorSet(studioToken) { + const sets = getSets(studioToken); + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.assert)(sets.length); + let treatAsTokenNames = false; + for (const group of _config__WEBPACK_IMPORTED_MODULE_1__["default"].TREAT_AS_TOKENNAMES) { + if (studioToken.path.join('.').includes(group)) { + // !!! not the greatest check - should check for delimiters... + treatAsTokenNames = true; + } + } + if (_constants__WEBPACK_IMPORTED_MODULE_2__["default"].THEMES.includes(sets[0]) && !treatAsTokenNames) { + // the token is part of the color set, as far as we know + return true; + } + return false; +} + + + +/***/ }), + +/***/ "./src/helpers.ts": +/*!************************!*\ + !*** ./src/helpers.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assert: () => (/* binding */ assert), +/* harmony export */ cout: () => (/* binding */ cout), +/* harmony export */ getcout: () => (/* binding */ getcout), +/* harmony export */ isArray: () => (/* binding */ isArray), +/* harmony export */ isObject: () => (/* binding */ isObject), +/* harmony export */ isString: () => (/* binding */ isString), +/* harmony export */ sanitizePath: () => (/* binding */ sanitizePath), +/* harmony export */ timeout: () => (/* binding */ timeout), +/* harmony export */ trimPath: () => (/* binding */ trimPath) +/* harmony export */ }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config */ "./config.ts"); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! chalk */ "./node_modules/chalk/source/index.js"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:process */ "node:process"); +/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_process__WEBPACK_IMPORTED_MODULE_2__); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +/* istanbul ignore file */ // jest coverage ignore, fyi + + + + +const ISSUEMARK = ' > '; +const WARNING = 'WARNING - '; +const ERROR = 'ERROR - '; +const LOG = []; +function cout(msg) { + // eslint-disable-next-line no-prototype-builtins + if (msg && msg.hasOwnProperty && msg.hasOwnProperty('stack') && msg.stack.length) { + msg = msg.stack; + } + if (isString(msg)) { + const previousLineWasIssue = LOG.length && (LOG[LOG.length - 1].indexOf(ISSUEMARK) === 0 || LOG[LOG.length - 1].indexOf(ISSUEMARK) === 1) ? true : false; + if (msg.indexOf(ERROR) === 0) { + msg = ISSUEMARK + msg.split('\n').join('\n' + ISSUEMARK + ' '.repeat(ERROR.length)); + msg = previousLineWasIssue ? msg : '\n' + msg; + } + else if (msg.indexOf(WARNING) === 0) { + msg = ISSUEMARK + msg.split('\n').join('\n' + ISSUEMARK + ' '.repeat(WARNING.length)); + msg = previousLineWasIssue ? msg : '\n' + msg; + } + else { + msg = previousLineWasIssue ? '\n' + msg : msg; + } + LOG.push(msg); + if (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].SUPPRESS_COUT) { + if (msg.indexOf(ERROR) >= 0) { + // eslint-disable-next-line no-console + console.log(chalk__WEBPACK_IMPORTED_MODULE_3__["default"].red(msg)); + } + else if (msg.indexOf(WARNING) >= 0) { + // eslint-disable-next-line no-console + console.log(chalk__WEBPACK_IMPORTED_MODULE_3__["default"].yellow(msg)); + } + else { + // eslint-disable-next-line no-console + console.log(msg); + } + } + } + else { + try { + if (isObject(msg) || (isArray(msg) && msg.length && (isObject(msg[0]) || isArray(msg[0])))) { + // for objects and arrays of objects and arrays of arrays + msg = JSON.stringify(msg, null, 2); + } + else if (isArray(msg)) { + // for simple arrays + msg = JSON.stringify(msg); + } + LOG.push(msg); + } + catch (error) { + // the json.stringify failed, so just output something lame into the log + // could happen if there's a circular reference or something + LOG.push(typeof msg); + } + if (!_config__WEBPACK_IMPORTED_MODULE_0__["default"].SUPPRESS_COUT) { + // eslint-disable-next-line no-console + console.log(msg); + } + } +} +function getcout() { + return LOG; +} +// used to force a delay +function timeout(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} +function isObject(a) { + return !!a && a.constructor && (a.constructor === Object || a.constructor.name === 'Object'); +} +function isArray(a) { + return !!a && a.constructor && (a.constructor === Array || a.constructor.name === 'Array'); +} +function isString(a) { + return typeof a === 'string' || a instanceof String; +} +function assert(condition, message) { + if (!condition) + throw new Error(message ? message : undefined); +} +function sanitizePath(filePath) { + if (filePath.indexOf('\0') !== -1) { + throw new Error('ACCESS DENIED'); + } + let result = path__WEBPACK_IMPORTED_MODULE_1___default().normalize(filePath).replace(/^(\.\.(\/|\\|$))+/, ''); + if (filePath.indexOf('../') === 0) { + const dir = (0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)().split((path__WEBPACK_IMPORTED_MODULE_1___default().sep)).slice(0, -1).join((path__WEBPACK_IMPORTED_MODULE_1___default().sep)); + if (dir) { + // going to allow a bump up to the parent directory for local runs + // ... but that's as far as we'll allow + result = path__WEBPACK_IMPORTED_MODULE_1___default().join(dir, result); + if (result.indexOf(dir) !== 0) { + throw new Error('ACCESS DENIED'); + } + } + else { + throw new Error('ACCESS DENIED'); + } + } + else { + // otherwise requires paths from the command line to be relative to the current working directory + // this should always be true when running as a git action + result = path__WEBPACK_IMPORTED_MODULE_1___default().join((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)(), result); + if (result.indexOf((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)()) !== 0) { + throw new Error('ACCESS DENIED'); + } + } + return result; +} +function trimPath(path) { + let result = path; + if (_config__WEBPACK_IMPORTED_MODULE_0__["default"].AUTOMATION) { + if (result.indexOf((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)()) === 0) { + result = '`' + result.slice((0,node_process__WEBPACK_IMPORTED_MODULE_2__.cwd)().length) + '`'; + } + } + return result; +} + + + +/***/ }), + +/***/ "./src/operations/addSpectrumTokens.ts": +/*!*********************************************!*\ + !*** ./src/operations/addSpectrumTokens.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + +const PERSIST = ['private', 'deprecated', 'deprecated_comment']; +function presistMetadata(source, destination) { + for (const metadata of PERSIST) { + if (source[metadata] !== undefined) { + destination[metadata] = source[metadata]; + } + } +} +function sortTokens(data, renamedTokens) { + const result = {}; + const allTokens = Object.keys(data).reverse(); + function getSortedTokens(token) { + const head = token.split('-').slice(0, -1).join('-'); + const tokens = [token]; + for (const t of allTokens) { + const tokenBits = t.split('-'); + if (!isNaN(Number(tokenBits[tokenBits.length - 1]))) { + if (t.split('-').slice(0, -1).join('-') === head) { + tokens.push(t); + } + } + } + tokens.sort((a, b) => { + const aValue = Number(a.split('-').pop()); + const bValue = Number(b.split('-').pop()); + if (aValue < bValue) { + return -1; + } + if (aValue > bValue) { + return 1; + } + return 0; + }); + return tokens; + } + do { + const token = allTokens.pop(); + if (token && !result[token]) { + const tokenBits = token.split('-'); + if (!isNaN(Number(tokenBits[tokenBits.length - 1]))) { + const sorted = getSortedTokens(token); + for (const sortedToken of sorted) { + result[sortedToken] = data[sortedToken]; + } + } + else if (Object.keys(renamedTokens).includes(token) && data[renamedTokens[token]]) { + result[token] = data[token]; + result[renamedTokens[token]] = data[renamedTokens[token]]; + } + else { + result[token] = data[token]; + } + } + } while (allTokens.length); + return result; +} +function addTokens(tokens, path, renamedTokens) { + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(path); + // !!! deal with onloaded set information not in the tokens data, but just in the file + // --- S2 wireframe (keep existing if there are sets in the new data) + // --- S1 express (always keep, should be able to keep top level system set) + for (const tokenName of Object.keys(tokens)) { + let merged; + if (!data[tokenName]) { + // it is a new token entry, don't need to worry about existing data + data[tokenName] = tokens[tokenName]; + merged = true; + } + else if (data[tokenName] && data[tokenName].sets && tokens[tokenName].sets) { + // both exist and have sets, we merge by overwriting existing set data + // ??? this won't remove sets that are uncaptured by the tokens studio data + // like pre-existing wireframe entries in S2 + let root = data[tokenName]; + if (data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM]) { + root = data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM]; + } + for (const set of Object.keys(tokens[tokenName].sets)) { + root.sets[set] = tokens[tokenName].sets[set]; + } + merged = true; + } + else if (data[tokenName] && !data[tokenName].sets && tokens[tokenName].sets) { + // a token is transitioning from being without sets to being one with sets, + // so we'll replace the whole thing, don't need to worry about existing data + if (data[tokenName].component) { + tokens[tokenName] = Object.assign({ component: data[tokenName].component }, tokens[tokenName]); + } + presistMetadata(data[tokenName], tokens[tokenName]); + data[tokenName] = tokens[tokenName]; + merged = true; + } + else if (data[tokenName] && data[tokenName].sets && !tokens[tokenName].sets) { + // we're wiping out the original set information since our new data doesn't have any + // but we need to worry about uncaptured system set data + const tokenDefinition = {}; + const hasSpectrumSet = data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM] ? true : false; + // if we're updating the root, make sure we preserve component information + if (!hasSpectrumSet && data[tokenName].component) { + tokenDefinition.component = data[tokenName].component; + } + // store all the token stuff in the new token definition + for (const key of Object.keys(tokens[tokenName])) { + tokenDefinition[key] = tokens[tokenName][key]; + } + // place the new token definition in the appropriate place + if (!hasSpectrumSet) { + presistMetadata(data[tokenName], tokenDefinition); + data[tokenName] = tokenDefinition; + } + else { + data[tokenName].sets[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM] = tokenDefinition; + } + merged = true; + } + if (!merged) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('ERROR - could not merge new token definition: ' + tokenName); + } + } + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.storeFile)(path, sortTokens(data, renamedTokens)); +} +function findUUID(data) { + if (data.uuid) { + return data.uuid; + } + for (const key of Object.keys(data)) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isObject)(data[key])) { + const uuid = findUUID(data[key]); + if (uuid) { + return uuid; + } + } + } + return undefined; +} +function filterKeys(keys, bit) { + const result = []; + for (const key of keys) { + const bits = key.split('-'); + if (bits[0] === bit) { + result.push(bits.slice(1).join('-')); + } + } + return result; +} +function isLayoutToken(path, name) { + // we're going to make a guess regarding the name whether it is layout token or a layout-component token + const layoutData = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(path + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT); + const componentData = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(path + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT_COMPONENT); + let layoutKeys = Object.keys(layoutData); + let componentKeys = Object.keys(componentData); + const bits = name.split('-').reverse(); + while (bits.length && layoutKeys.length && componentKeys.length) { + const bit = bits.pop(); + if (bit) { + layoutKeys = filterKeys(layoutKeys, bit); + componentKeys = filterKeys(componentKeys, bit); + } + } + if (layoutKeys.length && !componentKeys.length) { + return true; + } + return false; +} +function addSpectrumTokens(tokensPath, studioTokens, studioProblems, spectrumTokens, spectrumProblems, newTokens, renamedTokens) { + if (Object.keys(newTokens).length) { + const colorPalette = {}; + const colorAlias = {}; + const colorSemantic = {}; + const colorComponent = {}; + const icons = {}; + const layout = {}; + const layoutComponent = {}; + const typography = {}; + for (const tokenName of Object.keys(newTokens)) { + const tokenEntry = newTokens[tokenName]; + const uuid = findUUID(tokenEntry); + if (!uuid) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('ERROR - missing uuid: ' + tokenName); + continue; + } + // look for existing reference to the token name in the + // spectrum files, likely a deprecated reference + // ... or look for the renamed reference + let oldTokenName = undefined; + for (const name of Object.keys(renamedTokens)) { + if (renamedTokens[name] === tokenName) { + oldTokenName = name; + } + } + let found = false; + for (const file of Object.keys(_config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES)) { + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES[file]); + if (data && (data[tokenName] || (oldTokenName && data[oldTokenName]))) { + switch (_config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES[file]) { + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_PALETTE: + colorPalette[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_SEMANTIC: + colorSemantic[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_ALIASES: + colorAlias[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_COMPONENT: + colorComponent[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.ICONS: + icons[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT: + layout[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT_COMPONENT: + layoutComponent[tokenName] = tokenEntry; + break; + case _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.TYPOGRAPHY: + typography[tokenName] = tokenEntry; + break; + } + found = true; + break; + } + } + if (found) { + // the token already exist in a file, so we'll add this + // where we found it, already + continue; + } + const studioToken = studioTokens[uuid]; + const path = []; + studioToken.path.forEach((p) => { + path.push(p.toLowerCase()); + }); + if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.isColorSet)(studioToken)) { + // everything color related + if (path.includes('palette')) { + colorPalette[tokenName] = tokenEntry; + } + else if (path.includes('semantic')) { + colorSemantic[tokenName] = tokenEntry; + } + else if (path.includes('icon')) { + icons[tokenName] = tokenEntry; + } + else if (path.includes('component')) { + colorComponent[tokenName] = tokenEntry; + } + else { + colorAlias[tokenName] = tokenEntry; + } + } + else { + // everything not color related + if (path.includes('icon')) { + icons[tokenName] = tokenEntry; + } + else if (path.includes('typography')) { + typography[tokenName] = tokenEntry; + } + else if (isLayoutToken(tokensPath, tokenName)) { + layout[tokenName] = tokenEntry; + } + else { + layoutComponent[tokenName] = tokenEntry; + } + } + } + if (Object.keys(colorPalette).length) { + addTokens(colorPalette, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_PALETTE, renamedTokens); + } + if (Object.keys(colorSemantic).length) { + addTokens(colorSemantic, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_SEMANTIC, renamedTokens); + } + if (Object.keys(colorAlias).length) { + addTokens(colorAlias, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_ALIASES, renamedTokens); + } + if (Object.keys(colorComponent).length) { + addTokens(colorComponent, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.COLOR_COMPONENT, renamedTokens); + } + if (Object.keys(icons).length) { + addTokens(icons, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.ICONS, renamedTokens); + } + if (Object.keys(typography).length) { + addTokens(typography, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.TYPOGRAPHY, renamedTokens); + } + if (Object.keys(layout).length) { + addTokens(layout, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT, renamedTokens); + } + if (Object.keys(layoutComponent).length) { + addTokens(layoutComponent, tokensPath + _config__WEBPACK_IMPORTED_MODULE_0__["default"].SPECTRUM_FILES.LAYOUT_COMPONENT, renamedTokens); + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (addSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/addUUIDs.ts": +/*!************************************!*\ + !*** ./src/operations/addUUIDs.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _getUniqueId__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getUniqueId */ "./src/operations/getUniqueId.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function addUUIDs(studioTokens, studioProblems, spectrumTokens, spectrumProblems, ignored = []) { + const results = []; + for (const entry of Object.values(studioProblems.uuids)) { + const uuid = (0,_getUniqueId__WEBPACK_IMPORTED_MODULE_1__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems, entry); + const currentUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(entry); + if (currentUUID && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(entry) !== uuid) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenDeprecations)(entry, currentUUID); + } + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, uuid); + studioTokens[uuid] = entry; + studioProblems.uuids.splice(studioProblems.uuids.indexOf(entry), 1); + results.push(entry.path.join('.')); + } + return results; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (addUUIDs); + + +/***/ }), + +/***/ "./src/operations/changeSpectrumTokens.ts": +/*!************************************************!*\ + !*** ./src/operations/changeSpectrumTokens.ts ***! + \************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/findBranchByUUID */ "./src/core/findBranchByUUID.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + +function changeToken(data, uuid, value, schema) { + const path = []; + if ((0,_core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__["default"])(data, uuid, path)) { + let root = data; + for (let i = 0; i < path.length - 1; ++i) { + root = root[path[i]]; + } + // we want to preserve the key order, + // so we make a new object and construct + // it in the order we want the value to + // be in the token definition - makes things + // more complicated, but whatever + const key = path[path.length - 1]; + const newObject = {}; + if (root[key][_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COMPONENT]) { + newObject[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COMPONENT] = root[key][_constants__WEBPACK_IMPORTED_MODULE_0__["default"].COMPONENT]; + } + newObject[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA] = schema; + newObject.value = value; + newObject.uuid = uuid; + for (const bit of Object.keys(root[key])) { + if (!newObject[bit]) { + newObject[bit] = root[key][bit]; + } + } + root[key] = newObject; + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('ERROR - could not find entry in spectrum tokens: ' + uuid); + } +} +function getChanges(data) { + let results = []; + if (data.value && data.uuid && data.schema) { + results.push({ value: data.value, uuid: data.uuid, schema: data.schema }); + } + for (const key of Object.keys(data)) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(data[key])) { + results = results.concat(getChanges(data[key])); + } + } + return results; +} +function changeSpectrumTokens(spectrumTokens, changedTokens) { + const changes = getChanges(changedTokens); + for (const change of changes) { + const file = spectrumTokens[change.uuid].file; + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.getFile)(file); + changeToken(data, change.uuid, change.value, change.schema); + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.storeFile)(file, data); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (changeSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/checkForDeprecatedTokens.ts": +/*!****************************************************!*\ + !*** ./src/operations/checkForDeprecatedTokens.ts ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); +/* harmony import */ var _core_printableSetName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/printableSetName */ "./src/core/printableSetName.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + +function validSpectrumToken(spectrumToken, validScales, validThemes) { + if (!spectrumToken.sets.length) { + return true; + } + for (const set of spectrumToken.sets) { + if (validScales.includes(set) || validThemes.includes(set)) { + return true; + } + } + return false; +} +function checkForDeprecatedTokens(studioTokens, studioProblems, spectrumTokens, spectrumProblems, newTokens) { + const result = []; + // only deprecate tokens in themes/scales found in the studio token data + const validScales = []; + const validThemes = []; + for (const uuid of Object.keys(studioTokens)) { + let set = studioTokens[uuid].path[0].split('/').pop(); + if (set) { + set = set.toLowerCase(); + for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { + if (scale === set && !validScales.includes(scale)) { + validScales.push(scale); + } + } + for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { + if (theme === set && !validThemes.includes(theme)) { + validThemes.push(theme); + } + } + } + } + for (const uuid of Object.keys(spectrumTokens)) { + if (validSpectrumToken(spectrumTokens[uuid], validScales, validThemes)) { + if (!Object.keys(studioTokens).includes(uuid) && !Object.keys(studioProblems.collisions).includes(uuid)) { + result.push({ uuid: uuid, token: spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]) }); + } + else if (Object.keys(studioTokens).includes(uuid) && (0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.isDeprecated)(studioTokens[uuid].path)) { + result.push({ uuid: uuid, token: spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]) }); + } + } + } + for (const uuid in studioTokens) { + // we need to check for deprecation on tokens that don't exist in spectrum + // but are being added or modified (set split/merge) in these changes + const studioToken = studioTokens[uuid]; + if ((0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.isDeprecated)(studioTokens[uuid].path) && newTokens.includes(studioToken)) { + const setName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getSpectrumTokenSetName)(studioToken); + result.push({ uuid: uuid, token: (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenSpectrumName)(studioToken) + (setName.length ? '/' + setName : '') }); + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkForDeprecatedTokens); + + +/***/ }), + +/***/ "./src/operations/checkForRecycledUUIDs.ts": +/*!*************************************************!*\ + !*** ./src/operations/checkForRecycledUUIDs.ts ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function checkForRecycledUUIDs(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { + const result = []; + for (const entry of Object.values(studioProblems.uuids)) { + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); + const tokenSetName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(entry); + let found; + const uuids = Object.keys(spectrumTokens); + while (uuids.length && !found) { + const uuid = uuids.pop(); + if (uuid && spectrumTokens[uuid].name === tokenName) { + const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getValidSpectrumTokenSets)(spectrumTokens[uuid]); + if (tokenSetName.length && spectrumSets.length === 1 && tokenSetName === spectrumSets[0]) { + found = uuid; + } + else if (!tokenSetName.length && !spectrumSets.length) { + found = uuid; + } + } + } + if (found) { + if (!studioTokens[found]) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, found); + studioProblems.uuids.splice(studioProblems.uuids.indexOf(entry), 1); + studioTokens[found] = entry; + result.push(entry.path.join('.')); + } + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkForRecycledUUIDs); + + +/***/ }), + +/***/ "./src/operations/checkModes.ts": +/*!**************************************!*\ + !*** ./src/operations/checkModes.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function checkMissingModes(name, sets, allScales, allThemes) { + let result = []; + const missingScales = []; + const missingThemes = []; + for (const scale of allScales) { + if (!sets.includes(scale)) { + missingScales.push(scale); + } + } + for (const theme of allThemes) { + if (!sets.includes(theme)) { + missingThemes.push(theme); + } + } + if (missingScales.length && missingScales.length !== allScales.length) { + result = result.concat(missingScales); + } + if (missingThemes.length && missingThemes.length !== allThemes.length) { + result = result.concat(missingThemes); + } + return result; +} +function checkMode(entry, collection, allScales, allThemes) { + let name = entry.path.join('/'); + for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { + const check = '/' + scale + '/'; + if (name.indexOf(check) !== -1) { + name = name.substring(0, name.indexOf(check)) + name.substring(name.indexOf(check) + check.length - 1); + } + } + for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { + const check = '/' + theme + '/'; + if (name.indexOf(check) !== -1) { + name = name.substring(0, name.indexOf(check)) + name.substring(name.indexOf(check) + check.length - 1); + } + } + let path = []; + for (const i in entry.path) { + path = path.concat(entry.path[i].toLowerCase().split('/')); + } + if (!collection[name]) { + collection[name] = []; + } + for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { + if (path.includes(scale)) { + collection[name].push(scale); + if (!allScales.includes(scale)) { + allScales.push(scale); + } + } + } + for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { + if (path.includes(theme)) { + collection[name].push(theme); + if (!allThemes.includes(theme)) { + allThemes.push(theme); + } + } + } +} +function checkModes(studioTokens, studioProblems) { + const collection = {}; + const allScales = []; + const allThemes = []; + for (const uuid of Object.keys(studioTokens)) { + checkMode(studioTokens[uuid], collection, allScales, allThemes); + } + for (const uuid of Object.keys(studioProblems.split)) { + for (const entry of studioProblems.split[uuid]) { + checkMode(entry, collection, allScales, allThemes); + } + } + for (const uuid in studioProblems.merged) { + const entry = studioProblems.merged[uuid]; + checkMode(entry, collection, allScales, allThemes); + } + for (const entry of studioProblems.uuids) { + checkMode(entry, collection, allScales, allThemes); + } + for (const name of Object.keys(collection)) { + if (collection[name].length) { + collection[name] = checkMissingModes(name, collection[name], allScales, allThemes); + } + if (!collection[name].length) { + delete collection[name]; + } + } + studioProblems.usedModes = allScales.concat(allThemes); + studioProblems.modes = collection; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkModes); + + +/***/ }), + +/***/ "./src/operations/checkNameChanges.ts": +/*!********************************************!*\ + !*** ./src/operations/checkNameChanges.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function checkNameChanges(spectrumTokens, studioTokens, studioProblems) { + const result = {}; + // the most common case: the metadata was changed to reflect a new token name + for (const uuid of Object.keys(studioTokens)) { + const entry = studioTokens[uuid]; + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); + if (tokenName && spectrumTokens[uuid] && spectrumTokens[uuid].name !== tokenName) { + result[spectrumTokens[uuid].name] = tokenName; + studioProblems.uuids.push(entry); + delete studioTokens[uuid]; + } + else if (!tokenName) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('ERROR - could not find for spectrum token name for: ' + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenName)(entry)); + } + } + // check if there's a new entry already defined in tokens studio that will replace an existing spectrum token + // --- this only happens if the sync operation is re-run on the same tokens studio changes + for (const uuid of Object.keys(studioTokens)) { + if (!spectrumTokens[uuid]) { + const entry = studioTokens[uuid]; + const deprecations = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenDeprecations)(entry); + if (deprecations) { + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); + if (tokenName) { + if (spectrumTokens[deprecations]) { + // we found a non-deprecated spectrum-token entry that will + // be replaced by a studio token entry - adding it the results + // will ensure the spectrum token is properly deprecated due + // to a name change + result[spectrumTokens[deprecations].name] = tokenName; + } + } + } + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkNameChanges); + + +/***/ }), + +/***/ "./src/operations/checkSchemaChanges.ts": +/*!**********************************************!*\ + !*** ./src/operations/checkSchemaChanges.ts ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_schemaStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/schemaStuff */ "./src/core/schemaStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function getChangedSchema(studioToken, spectrumToken, unsupportedTypes) { + const studioType = (0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_1__.getSchemaType)(studioToken); + const schema = (0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_1__.getSchemaFromType)(studioType); + if (!schema) { + if (studioType) { + if (!unsupportedTypes[studioType]) { + unsupportedTypes[studioType] = []; + } + unsupportedTypes[studioType].push(studioToken.path.join('.')); + } + return; + } + if (schema && (!spectrumToken.schema || schema !== spectrumToken.schema)) { + return schema; + } +} +function checkSchemaChanges(studioTokens, spectrumTokens) { + const changes = {}; + const unsupportedTypes = {}; + for (const uuid of Object.keys(studioTokens)) { + if (spectrumTokens[uuid]) { + const schema = getChangedSchema(studioTokens[uuid], spectrumTokens[uuid], unsupportedTypes); + if (schema) { + changes[uuid] = schema; + } + } + } + for (const unsupportedType in unsupportedTypes) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - checkSchemaChanges - UNSUPPORTED STUDIO TYPE: ' + unsupportedType + ' => ' + unsupportedTypes[unsupportedType].join(', ')); + } + return changes; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkSchemaChanges); + + +/***/ }), + +/***/ "./src/operations/checkSets.ts": +/*!*************************************!*\ + !*** ./src/operations/checkSets.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function checkSets(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { + for (const uuid of Object.keys(studioTokens)) { + if (spectrumTokens[uuid]) { + const studioEntry = studioTokens[uuid]; + const spectrumEntry = spectrumTokens[uuid]; + const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getValidSpectrumTokenSets)(spectrumEntry); + const studioSetName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(studioEntry); + // if (studioSetName.length && spectrumSets.length === 1 && studioSetName !== spectrumSets[0]) { + // !!! same number of sets but they differ... huh + // } else + if (studioSetName.length && !spectrumSets.length) { + // ??? this seems to work already, because a split will trigger + // a full rewrite of the original token in spectrum-tokens + } + else if (!studioSetName.length && spectrumSets.length) { + studioProblems.merged[uuid] = studioEntry; + } + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkSets); + + +/***/ }), + +/***/ "./src/operations/checkValueChanges.ts": +/*!*********************************************!*\ + !*** ./src/operations/checkValueChanges.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/getSpectrumValue */ "./src/core/getSpectrumValue.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function checkValueChanges(studioTokens, spectrumTokens) { + const changes = {}; + for (const uuid in studioTokens) { + if (!spectrumTokens[uuid]) { + continue; + } + const tokenValue = (0,_core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_0__["default"])(uuid, studioTokens); + const spectrumValue = spectrumTokens[uuid].value; + if (JSON.stringify(tokenValue) !== JSON.stringify(spectrumValue)) { + changes[uuid] = tokenValue; + } + } + return changes; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkValueChanges); + + +/***/ }), + +/***/ "./src/operations/deprecateSpectrumTokens.ts": +/*!***************************************************!*\ + !*** ./src/operations/deprecateSpectrumTokens.ts ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/findBranchByUUID */ "./src/core/findBranchByUUID.ts"); +/* harmony import */ var _core_getBranchUUID__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/getBranchUUID */ "./src/core/getBranchUUID.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + +function deprecate(data, path) { + let root = data; + let alreadyDeprecated = false; + for (let i = 0; i < path.length; ++i) { + if (root.deprecated && root.value === undefined) { + alreadyDeprecated = true; + } + root = root[path[i]]; + } + if (!alreadyDeprecated) { + root.deprecated = true; + } +} +function deprecateToken(data, token, uuid) { + const result = []; + const tokenName = token.split('/')[0]; + if (data[tokenName]) { + result.push(tokenName); + const branch = data[tokenName]; + if (!branch.uuid || branch.uuid !== uuid) { + if ((0,_core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_1__["default"])(branch, uuid, result)) { + deprecate(data, result); + } + } + else if (branch.uuid && branch.uuid === uuid) { + deprecate(data, result); + } + } +} +function deprecateSpectrumTokens(studioTokens, spectrumTokens, spectrumProblems, deprecatedTokens) { + let failedDeprecation = []; + for (const entry of deprecatedTokens) { + let uuid = entry.uuid; + if (uuid && !spectrumTokens[uuid]) { + uuid = (0,_core_getBranchUUID__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumProblems, uuid); + } + if (uuid) { + const file = spectrumTokens[uuid].file; + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.getFile)(file); + deprecateToken(data, entry.token, uuid); + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.storeFile)(file, data); + } + else { + failedDeprecation.push(entry); + } + } + // with the branch uuids, now, we'll double check some other stuff + if (failedDeprecation.length) { + const groups = {}; + // ... group unresolved deprecation tokens by name + for (const entry of failedDeprecation) { + const name = entry.token.split('/')[0]; + if (!groups[name]) + groups[name] = []; + groups[name].push(entry.uuid); + } + // ... look them up by token name in spectrumTokens / ??? deprecated (should probably look here, too) + for (const tokenName in groups) { + const matchingTokens = Object.values(spectrumTokens).filter((token) => token.name === tokenName); + if (matchingTokens.length === 1) { + const spectrumToken = matchingTokens[0]; + const file = spectrumToken.file; + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.getFile)(file); + deprecateToken(data, spectrumToken.name, spectrumToken.uuid); + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.storeFile)(file, data); + failedDeprecation = failedDeprecation.filter((entry) => !groups[tokenName].includes(entry.uuid)); + } + } + } + for (const entry of failedDeprecation) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('ERROR - FAILED TO DEPRECATE TOKEN: ' + entry.uuid + ' ' + entry.token); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (deprecateSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/formatChangedSpectrumTokens.ts": +/*!*******************************************************!*\ + !*** ./src/operations/formatChangedSpectrumTokens.ts ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +function formatChangedSpectrumTokens(valueChanges, schemaChanges, studioTokens, studioProblems, spectrumTokens, spectrumProblems) { + const result = {}; + const changed = Object.keys(valueChanges).concat(Object.keys(schemaChanges)); + for (const uuid of changed) { + const value = valueChanges[uuid] ? valueChanges[uuid] : spectrumTokens[uuid].value; + const schema = schemaChanges[uuid] ? schemaChanges[uuid] : spectrumTokens[uuid].schema; + const name = spectrumTokens[uuid].name; + const sets = spectrumTokens[uuid].sets; + if (!result[name]) { + result[name] = {}; + } + if (!sets.length) { + result[name].schema = schema; + result[name].value = value; + result[name].uuid = uuid; + } + else { + let root = result[name]; + for (let i = 0; i < sets.length; ++i) { + const set = sets[i]; + if (!root.sets) { + root.sets = {}; + } + if (!root.sets[set]) { + root.sets[set] = {}; + } + root = root.sets[set]; + } + const leaf = root; + leaf.schema = schema; + leaf.value = value; + leaf.uuid = uuid; + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (formatChangedSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/formatNewSpectrumTokens.ts": +/*!***************************************************!*\ + !*** ./src/operations/formatNewSpectrumTokens.ts ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_schemaStuff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/schemaStuff */ "./src/core/schemaStuff.ts"); +/* harmony import */ var _core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/getSpectrumValue */ "./src/core/getSpectrumValue.ts"); +/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + + +const COLOR_SET = 'color-set'; +const SCALE_SET = 'scale-set'; +function createSpectrumTokensEntry(uuid, studioTokens) { + const schema = (0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_4__.getSchemaFromType)((0,_core_schemaStuff__WEBPACK_IMPORTED_MODULE_4__.getSchemaType)(studioTokens[uuid])); + const value = (0,_core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_5__["default"])(uuid, studioTokens); + return { $schema: schema, value: value, uuid: uuid, deprecated: (0,_core_helpers__WEBPACK_IMPORTED_MODULE_6__.isDeprecated)(studioTokens[uuid].path) ? true : undefined }; +} +function sortSets(input) { + const output = {}; + for (const theme of _constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES) { + if (input[theme]) { + output[theme] = input[theme]; + } + } + for (const scale of _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES) { + if (input[scale]) { + output[scale] = input[scale]; + } + } + for (const set of Object.keys(input)) { + if (!_constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES.includes(set) && !_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES.includes(set)) { + output[set] = input[set]; + } + } + return output; +} +function getSpectrumTokenSet(entries, studioTokens) { + let sets = {}; + const types = []; + let schema = undefined; + for (const entry of entries) { + const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(entry); + if (!uuid) + throw new Error('ERROR - MISSING UUID FOR: ' + entry.path.join('.')); + sets[(0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getSpectrumTokenSetName)(entry)] = createSpectrumTokensEntry(uuid, studioTokens); + if (!types.includes(entry.type)) { + types.push(entry.type); + } + } + sets = sortSets(sets); + { + // jump through some hoops to assign the appriopriate set schema + const setNames = []; + for (const entry of entries) { + const setName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getSpectrumTokenSetName)(entry); + if (!setNames.includes(setName)) { + setNames.push(setName); + } + } + let scaleNames = 0; + let themeNames = 0; + for (const setName of setNames) { + if (_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES.includes(setName)) { + scaleNames++; + } + if (_constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES.includes(setName)) { + themeNames++; + } + } + if (scaleNames && !themeNames) { + schema = _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES[SCALE_SET]; + } + else if (!scaleNames && themeNames) { + schema = _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES[COLOR_SET]; + } + if (!schema) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - could not determine schema for set with set names of: ' + setNames); + } + } + return { $schema: schema, sets: sets }; +} +function isPartOfSet(entry, studioTokens) { + // we have an extra check in case we are adding a new token to an existing set + const path = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(entry); + for (const compare of Object.values(studioTokens)) { + if (entry !== compare && path === (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(compare)) { + return true; + } + } + return false; +} +function formatNewSpectrumTokens(exports, studioTokens) { + const collection = {}; + const result = {}; + for (const entry of exports) { + const name = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(entry); + if (name) { + if (!collection[name]) { + collection[name] = []; + } + collection[name].push(entry); + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('ERROR - studio token definition missing spectrum token name: ' + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenName)(entry)); + } + } + for (const name of Object.keys(collection)) { + const tokenData = collection[name]; + if (tokenData.length === 1 && !isPartOfSet(tokenData[0], studioTokens)) { + const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenUUID)(tokenData[0]); + if (!uuid) + throw new Error('ERROR - MISSING UUID FOR: ' + tokenData[0].path.join('.')); + result[name] = createSpectrumTokensEntry(uuid, studioTokens); + } + else { + result[name] = getSpectrumTokenSet(tokenData, studioTokens); + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (formatNewSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/getModifiedTokens.ts": +/*!*********************************************!*\ + !*** ./src/operations/getModifiedTokens.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function getModifiedTokens(studioTokens, spectrumTokens, newTokens) { + for (const entry of Object.values(newTokens)) { + const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(entry); + if (!uuid) { + throw new Error('ERROR - missing uuid: ' + JSON.stringify(entry)); + } + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(entry); + if (tokenName) { + let spectrumFile; + for (const spectrum of Object.values(spectrumTokens)) { + if (spectrum.name === tokenName) { + spectrumFile = spectrum.file; + break; + } + } + if (spectrumFile) { + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_0__.getFile)(spectrumFile); + if (data[tokenName]) { + if (data[tokenName].uuid && studioTokens[data[tokenName].uuid]) { + const addToken = studioTokens[data[tokenName].uuid]; + if (!newTokens.includes(addToken)) { + newTokens.push(studioTokens[data[tokenName].uuid]); + } + } + } + } + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getModifiedTokens); + + +/***/ }), + +/***/ "./src/operations/getUniqueId.ts": +/*!***************************************!*\ + !*** ./src/operations/getUniqueId.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! crypto */ "crypto"); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function getUniqueId(studioTokens, studioProblems, spectrumTokens, spectrumProblems, studioEntry) { + let uuid; + // !!! I don't think this actually exists in spectrum-tokens (it was for putting uuids on branch nodes and not just leaves) + for (const spectrumEntry of spectrumProblems.empty) { + if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenDuplicated)(studioEntry) && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(studioEntry) === spectrumEntry.name) { + uuid = spectrumEntry.uuid; + break; + } + } + // ??? retrieve a deprecated uuid... I'm not sure we should care about this either + for (const spectrumEntry of Object.values(spectrumProblems.deprecated)) { + if (!(0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenDuplicated)(studioEntry) && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenSpectrumName)(studioEntry) === spectrumEntry.name) { + const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getValidSpectrumTokenSets)(spectrumEntry); + if (spectrumSets.length === 1 && spectrumSets[0] === (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getSpectrumTokenSetName)(studioEntry)) { + uuid = spectrumEntry.uuid; + break; + } + else if (spectrumSets.length > 1) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('WARNING - COULD NOT COMPARE SET NAMES BECAUSE WE HAVE NOT SUPPORTED SETS WITHIN SETS: ' + spectrumEntry.name); // !!! haha + } + } + } + if (!uuid) { + do { + uuid = crypto__WEBPACK_IMPORTED_MODULE_0___default().randomUUID(); + } while (!uuid || studioTokens[uuid] || studioProblems.collisions[uuid] || spectrumTokens[uuid] || spectrumProblems.collisions[uuid]); + } + return uuid; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getUniqueId); + + +/***/ }), + +/***/ "./src/operations/processStudioTokenData.ts": +/*!**************************************************!*\ + !*** ./src/operations/processStudioTokenData.ts ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function stringifyObject(value) { + const result = {}; + const keys = Object.keys(value).sort(); + for (const k of keys) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value[k])); + result[k.toLowerCase()] = value[k].toLowerCase(); + } + return JSON.stringify(result); +} +function stringifyValue(value) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value)) { + return value; + } + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(value)) { + return stringifyObject(value); + } + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(value)) { + const result = []; + for (const v of value) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(v)); + result.push(stringifyObject(v)); + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(result.length); + return JSON.stringify(result); + } + return undefined; +} +function verifyEntries(entries, checkUUIDs, checkValues) { + let value; + let type; + let path; + let token; + let uuid; + for (let i = 0; i < entries.length; ++i) { + const entry = entries[i]; + if (checkValues) { + const entryValue = stringifyValue(entry.value); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(entryValue, 'failed to read value of tokens studio entry: ' + JSON.stringify(entry.path)); + if (i === 0 || value === entryValue) { + value = entryValue; + } + else { + return false; + } + } + if (i === 0 || type === entry.type) { + type = entry.type; + } + else { + return false; + } + if (checkUUIDs) { + const u = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(entry); + if (i === 0 || uuid === u) { + uuid = u; + } + else { + return false; + } + } + const p = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getCleanedPath)(entry.path).join('.'); + if (i === 0 || path === p) { + path = p; + } + else { + return false; + } + const t = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); + if (i === 0 || token === t) { + token = t; + } + else { + return false; + } + } + return true; +} +function processStudioTokenData(studioTokens, studioProblems) { + // intentionally duplicated token definitions will start off + // being listed as uuid collisions: check for and move them + for (const uuid of Object.keys(studioProblems.collisions)) { + const entries = studioProblems.collisions[uuid]; + // they have the same uuid and value + if (verifyEntries(entries, true, true)) { + studioTokens[uuid] = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.combineTokenEntries)(entries); + delete studioProblems.collisions[uuid]; + } + } + for (const uuid of Object.keys(studioProblems.collisions)) { + const entries = studioProblems.collisions[uuid]; + // they are the same but have different values + // (otherwise they would have been removed in the step above) + if (verifyEntries(entries, true, false)) { + studioProblems.split[uuid] = entries; + delete studioProblems.collisions[uuid]; + } + } + // we'll also want to check tokens without a uuid TEST + if (studioProblems.uuids.length) { + const needUUIDs = []; + const tokenGroups = {}; + for (const entry of studioProblems.uuids) { + const name = entry.path.slice(1).join('.'); + if (!tokenGroups[name]) { + tokenGroups[name] = []; + } + tokenGroups[name].push(entry); + } + for (const name of Object.keys(tokenGroups)) { + if (tokenGroups[name].length > 1 && verifyEntries(tokenGroups[name], true, true)) { + needUUIDs.push((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.combineTokenEntries)(tokenGroups[name])); + } + else { + for (const entry of tokenGroups[name]) { + needUUIDs.push(entry); + } + } + } + studioProblems.uuids = needUUIDs; + } + const tokenTable = {}; + for (const uuid of Object.keys(studioTokens)) { + const name = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioTokens[uuid]); + if (name && !tokenTable[name]) { + tokenTable[name] = []; + } + if (name) { + tokenTable[name].push(studioTokens[uuid]); + } + } + for (const token of Object.keys(tokenTable)) { + const entries = tokenTable[token]; + if (entries.length > 1 && verifyEntries(entries, false, true)) { + // entries are duplicates but have unique ids, add them to the problem pile + studioProblems.merge.push(entries); + // ... and remove the token entries from the okay pile + for (const originalEntry of entries) { + const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(originalEntry); + if (uuid) + delete studioTokens[uuid]; + } + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (processStudioTokenData); + + +/***/ }), + +/***/ "./src/operations/readSpectrumTokens.ts": +/*!**********************************************!*\ + !*** ./src/operations/readSpectrumTokens.ts ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + +function getSetNames(tokenDefinition, uuid) { + function findUUID(branch, uuid, path) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(branch)) { + if (branch.uuid === uuid) { + return true; + } + for (const key of Object.keys(branch)) { + path.push(key); + if (findUUID(branch[key], uuid, path)) { + return true; + } + else { + path.pop(); + } + } + } + return false; + } + let path = []; + if (tokenDefinition.uuid !== uuid) { + findUUID(tokenDefinition, uuid, path); + } + path = path.filter((set) => set !== _constants__WEBPACK_IMPORTED_MODULE_2__["default"].SETS); + return path; +} +function parseTokenData(file, tokens, problems, entry, system, name, tokenDefinition, deprecated = false) { + const uuid = entry.uuid; + const value = entry.value; + const isDeprecated = deprecated || entry.deprecated === true; + const passDeprecation = value === undefined ? isDeprecated : false; // ??? deprecation setting is implied on children + const problemEntry = Object.assign({ file: file, name: name }, entry); + if (uuid && value) { + if (tokens[uuid] || problems.collisions[uuid]) { + if (!problems.collisions[uuid]) { + problems.collisions[uuid] = []; + problems.collisions[uuid].push({ file: tokens[uuid].file, name: tokens[uuid].name, uuid: tokens[uuid].uuid, value: tokens[uuid].value, sets: getSetNames(tokenDefinition, uuid), schema: entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA] }); + delete tokens[uuid]; + } + problems.collisions[uuid].push(problemEntry); + } + else if (isDeprecated) { + problems.deprecated[uuid] = { file: file, uuid: uuid, value: value, name: name, sets: getSetNames(tokenDefinition, uuid), schema: entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA] }; + } + else { + tokens[uuid] = { file: file, uuid: uuid, value: value, name: name, sets: getSetNames(tokenDefinition, uuid), schema: entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA] }; + } + } + else if ((uuid && !value) || (!uuid && value)) { + if (!uuid) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - missing uuid => ' + name); + problems.uuids.push(problemEntry); + } + if (!value && (!problemEntry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SETS] || !Object.keys(problemEntry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SETS]).length)) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('WARNING - unhandled token entry => ' + name); + problems.empty.push(problemEntry); + } + if (!value && problemEntry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SETS] && Object.keys(problemEntry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].SETS]).length) { + problems.branches[uuid] = problemEntry; + } + } + for (const key of Object.keys(entry)) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(entry[key])) { + if (system && _constants__WEBPACK_IMPORTED_MODULE_2__["default"].SYSTEMS.includes(key) && key !== system) + continue; + parseTokenData(file, tokens, problems, entry[key], system, name, tokenDefinition, passDeprecation); + } + } +} +function parseSpectrumTokens(file, tokens, problems, data, system) { + for (const tokenName of Object.keys(data)) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.isObject)(data[tokenName])) { + parseTokenData(file, tokens, problems, data[tokenName], system, tokenName, data[tokenName]); + } + } +} +function readSpectrumTokens(source, system) { + const spectrumTokens = {}; + const spectrumProblems = { collisions: {}, uuids: [], empty: [], deprecated: {}, branches: {} }; + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.cout)('READING spectrum-tokens: ' + (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.trimPath)(source)); + fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(source).forEach((file) => { + if (path__WEBPACK_IMPORTED_MODULE_1___default().extname(file).toLowerCase() === '.json') { + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_4__.getFile)(source + file); + parseSpectrumTokens(source + file, spectrumTokens, spectrumProblems, data, system); + } + }); + return { spectrumTokens, spectrumProblems }; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (readSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/readStudioTokens.ts": +/*!********************************************!*\ + !*** ./src/operations/readStudioTokens.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ getSourceFiles: () => (/* binding */ getSourceFiles), +/* harmony export */ getStartPath: () => (/* binding */ getStartPath), +/* harmony export */ readStudioTokens: () => (/* binding */ readStudioTokens) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _processStudioTokenData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./processStudioTokenData */ "./src/operations/processStudioTokenData.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + +function getSourceFiles(source, result = []) { + // set recursive: false, to fix tests in NodeJS 20. With NodeJS 16, the `recursive` had no effect. + // we could simply this function, by just remove the inner recursion and use the {recursive: true} + fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(source, { recursive: false }).forEach((file) => { + if (fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(source + file).isDirectory()) { + getSourceFiles(source + file + (path__WEBPACK_IMPORTED_MODULE_1___default().sep), result); + } + else if (path__WEBPACK_IMPORTED_MODULE_1___default().extname(source + file).toLowerCase() === '.json' && path__WEBPACK_IMPORTED_MODULE_1___default().basename(source + file)[0] !== '$') { + result.push(source + file); + } + }); + return result; +} +function getStartPath(source, file) { + const startPath = file.slice(source.length).split((path__WEBPACK_IMPORTED_MODULE_1___default().sep)).slice(0, -1); + startPath.push(path__WEBPACK_IMPORTED_MODULE_1___default().basename(file, '.json')); + return startPath.join('/'); +} +function readStudioTokens(sources) { + const studioTokens = {}; + const studioProblems = { collisions: {}, merge: [], merged: {}, split: {}, uuids: [], values: [], metadata: [], usedModes: [], modes: {} }; + for (const dataSet in sources) { + if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(sources[dataSet]) && fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(sources[dataSet]).isDirectory()) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('READING tokens studio: ' + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.trimPath)(sources[dataSet])); + getSourceFiles(sources[dataSet]).forEach((file) => { + const startPath = file.slice(sources[dataSet].length).split((path__WEBPACK_IMPORTED_MODULE_1___default().sep)).slice(0, -1); + startPath.push(path__WEBPACK_IMPORTED_MODULE_1___default().basename(file, '.json')); + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_4__.getFileUncached)(file); // ??? don't use a cached version since we're directly re-using the data objects as token data :/ + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenStyles)(dataSet, file, [getStartPath(sources[dataSet], file)], data, studioTokens, studioProblems); + }); + } + } + (0,_processStudioTokenData__WEBPACK_IMPORTED_MODULE_5__["default"])(studioTokens, studioProblems); // resolve token duplication and a bunch of other stuff + return { studioTokens, studioProblems }; +} + + + +/***/ }), + +/***/ "./src/operations/renameSpectrumTokens.ts": +/*!************************************************!*\ + !*** ./src/operations/renameSpectrumTokens.ts ***! + \************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + +function redirectAllValues(data, reference) { + // this should skip redirecting within arrays and objects, + // but still update string values and values in sets + for (const key of Object.keys(data)) { + if (key === _constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE && (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { + data[key] = '{' + reference + '}'; + data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].SCHEMA] = _config__WEBPACK_IMPORTED_MODULE_2__["default"].SCHEMA_TYPES.alias; + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data[key])) { + redirectAllValues(data[key], reference); + } + } +} +function updateReferences(data, originalToken, updatedToken) { + let changed = false; + // we're looking for references to the token name in the value, and swapping it to the new one + if (data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE]) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { + if (data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE] === '{' + originalToken + '}') { + data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE] = '{' + updatedToken + '}'; + changed = true; + } + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isArray)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { + for (const entry of data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE]) { + changed = updateReferences(entry, originalToken, updatedToken) || changed; + } + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE])) { + changed = updateReferences(data[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].VALUE], originalToken, updatedToken) || changed; + } + } + return changed; +} +function changeTokenName(data, originalToken, updatedToken, root = true) { + let changed = false; + for (const token of Object.keys(data)) { + if (token === originalToken) { + // we found the defininition for the renamed tokens + const definition = data[token]; + // ... mark it is deprecated + definition[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].DEPRECATED] = true; + definition[_constants__WEBPACK_IMPORTED_MODULE_3__["default"].DEPRECATED_COMMENT] = 'This token has been deprecated, use ' + updatedToken + ' instead.'; + // ... and if possible we'll redirect the value or set values to the new token definition + redirectAllValues(definition, updatedToken); + changed = true; + } + else { + // any other token in the definition, we'll update any reference to the old token name to the new token name + changed = updateReferences(data[token], originalToken, updatedToken) || changed; + } + } + return changed; +} +function renameSpectrumTokens(tokensPath, renamedTokens) { + fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(tokensPath).forEach((file) => { + if (path__WEBPACK_IMPORTED_MODULE_1___default().extname(file).toLowerCase() === '.json') { + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_5__.getFile)(tokensPath + file); + let changed = false; + for (const originalToken of Object.keys(renamedTokens)) { + // we check each file for the definition and references to the renamed token + changed = changeTokenName(data, originalToken, renamedTokens[originalToken]) || changed; + } + if (changed) { + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_5__.storeFile)(tokensPath + file, data); + } + } + }); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (renameSpectrumTokens); + + +/***/ }), + +/***/ "./src/operations/resolveMergeTokens.ts": +/*!**********************************************!*\ + !*** ./src/operations/resolveMergeTokens.ts ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _core_getBranchUUID__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/getBranchUUID */ "./src/core/getBranchUUID.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function resolveMergeTokens(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { + const result = []; + for (const entries of studioProblems.merge) { + let baseEntry; + for (const entry of entries) { + if (!baseEntry && entry.path.join('.').indexOf('light') > 0) { + baseEntry = entry; + } + if (!baseEntry && entry.path.join('.').indexOf('desktop') > 0) { + baseEntry = entry; + } + } + if (!baseEntry) { + baseEntry = entries[0]; + } + let targetUUID; + if (Object.keys(spectrumProblems.branches).length) { + const findUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(baseEntry); + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)(findUUID); + targetUUID = (0,_core_getBranchUUID__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumProblems, findUUID); + } + else { + targetUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(baseEntry); + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.assert)(targetUUID); + const newEntry = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.combineTokenEntries)(entries); + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenUUID)(newEntry, targetUUID); + studioTokens[targetUUID] = newEntry; + studioProblems.merged[targetUUID] = newEntry; + result.push(newEntry.path.join('.')); + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (resolveMergeTokens); + + +/***/ }), + +/***/ "./src/operations/resolveSplitTokens.ts": +/*!**********************************************!*\ + !*** ./src/operations/resolveSplitTokens.ts ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _getUniqueId__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getUniqueId */ "./src/operations/getUniqueId.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function resolveSplitTokens(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { + const result = []; + for (const uuid of Object.keys(studioProblems.split)) { + if (Object.keys(spectrumProblems.branches).length) { + for (const entry of studioProblems.split[uuid]) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenDuplicated)(entry, false); + const newUUID = (0,_getUniqueId__WEBPACK_IMPORTED_MODULE_1__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems, entry); + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, newUUID); + studioTokens[newUUID] = entry; + result.push(entry.path.join('.')); + } + delete studioProblems.split[uuid]; + delete studioTokens[uuid]; + } + else { + let baseEntry; + for (const entry of studioProblems.split[uuid]) { + // !!! bad string checks + if (!baseEntry && entry.path.join('.').indexOf('light') > 0) { + baseEntry = entry; + } + if (!baseEntry && entry.path.join('.').indexOf('desktop') > 0) { + baseEntry = entry; + } + } + if (!baseEntry) { + baseEntry = studioProblems.split[uuid][0]; + } + for (const entry of studioProblems.split[uuid]) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenDuplicated)(entry, false); + if (entry === baseEntry) { + studioTokens[uuid] = entry; + } + else { + const newUUID = (0,_getUniqueId__WEBPACK_IMPORTED_MODULE_1__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems, entry); + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.setTokenUUID)(entry, newUUID); + studioTokens[newUUID] = entry; + result.push(entry.path.join('.')); + } + } + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (resolveSplitTokens); + + +/***/ }), + +/***/ "./src/operations/updateTokenNameMetadata.ts": +/*!***************************************************!*\ + !*** ./src/operations/updateTokenNameMetadata.ts ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function cleanName(name) { + return name.replaceAll(_constants__WEBPACK_IMPORTED_MODULE_0__["default"].BUSTER, '').replaceAll(' ', ''); +} +function checkName(entry, results) { + if (!(0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(entry.value)) { + // this should be a composite token, and we're just going to guess about the name if it isn't set + const tokenSpectrumName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(entry); + if (!tokenSpectrumName) { + const name = entry.path.slice(1).join('-').replaceAll(' ', '-').toLowerCase(); + if (name !== tokenSpectrumName) { + if (name && tokenSpectrumName) { + results[name] = tokenSpectrumName; + } + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenSpectrumName)(entry, name); + } + } + } + else if (!(0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.isColorSet)(entry)) { + const name = cleanName(entry.path[entry.path.length - 1]); + const tokenSpectrumName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.getTokenSpectrumName)(entry); + if (name !== tokenSpectrumName) { + if (name && tokenSpectrumName) { + results[name] = tokenSpectrumName; + } + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_2__.setTokenSpectrumName)(entry, name); + } + } +} +function updateTokenNameMetadata(studioTokens, studioProblems) { + const results = {}; + // get name changes for existing entries + for (const uuid of Object.keys(studioTokens)) { + checkName(studioTokens[uuid], results); + } + // check the entries being added + for (const entry of studioProblems.uuids) { + checkName(entry, results); + } + // check the entries being merged + for (const entries of studioProblems.merge) { + for (const entry of entries) { + checkName(entry, results); + } + } + // check the entries being splt + for (const uuid of Object.keys(studioProblems.split)) { + for (const entry of studioProblems.split[uuid]) { + checkName(entry, results); + } + } + return results; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (updateTokenNameMetadata); + + +/***/ }), + +/***/ "./src/operations/verifyBranchSchemas.ts": +/*!***********************************************!*\ + !*** ./src/operations/verifyBranchSchemas.ts ***! + \***********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/findBranchByUUID */ "./src/core/findBranchByUUID.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + +function getTargetSetSchema(k, data) { + const sets = Object.keys(data); + let systems = 0; + let themes = 0; + let scales = 0; + for (const set of sets) { + _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SYSTEMS.includes(set) && ++systems; + _constants__WEBPACK_IMPORTED_MODULE_1__["default"].THEMES.includes(set) && ++themes; + _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCALES.includes(set) && ++scales; + } + if (systems && !themes && !scales) { + return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['system-set']; + } + else if (!systems && themes && !scales) { + return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['color-set']; + } + else if (!systems && !themes && scales) { + return _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['scale-set']; + } + else { + throw new Error('UNHANDLED SET DATA: ' + k); + } +} +function setBranchSchema(k, data) { + let changes = 0; + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data)) { + if (data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SETS] && (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isObject)(data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SETS])) { + const schema = getTargetSetSchema(k, data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SETS]); + if (!data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] || (data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] !== schema && data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] !== _config__WEBPACK_IMPORTED_MODULE_0__["default"].SCHEMA_TYPES['system-set'])) { + const newObject = {}; + if (data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].COMPONENT]) { + newObject[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].COMPONENT] = data[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].COMPONENT]; + } + newObject[_constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA] = schema; + for (const key of Object.keys(data)) { + if (key !== _constants__WEBPACK_IMPORTED_MODULE_1__["default"].SCHEMA) { + newObject[key] = data[key]; + } + delete data[key]; + } + for (const key of Object.keys(newObject)) { + data[key] = newObject[key]; + } + changes++; + } + } + for (const key of Object.keys(data)) { + changes += setBranchSchema(key, data[key]); + } + } + return changes; +} +function verifyBranchSchemas(studioTokens, spectrumTokens) { + let totalSetSchemaChanges = 0; + for (const uuid of Object.keys(studioTokens)) { + if (spectrumTokens[uuid]) { + // only update pre-existing entries + const file = spectrumTokens[uuid].file; + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.getFile)(file); + const path = []; + if ((0,_core_findBranchByUUID__WEBPACK_IMPORTED_MODULE_3__["default"])(data, uuid, path)) { + const changes = setBranchSchema(path[0], data[path[0]]); + if (changes) { + totalSetSchemaChanges += changes; + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_2__.storeFile)(file, data); + } + } + } + } + if (totalSetSchemaChanges) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.cout)('\nUPDATED SET SCHEMAS: ' + totalSetSchemaChanges); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (verifyBranchSchemas); + + +/***/ }), + +/***/ "./src/operations/writeStudioTokens.ts": +/*!*********************************************!*\ + !*** ./src/operations/writeStudioTokens.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _reverse_sortTokenGroup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../reverse/sortTokenGroup */ "./src/reverse/sortTokenGroup.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + + +function writeStudioTokens(studioTokens) { + for (const uuid of Object.keys(studioTokens)) { + const entry = studioTokens[uuid]; + for (const file of entry.files) { + // read file + const data = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.getFile)(file); + let changed = false; + // check... stuff + { + const currentPath = []; + const filePath = entry.path.slice(1); + let definition = data; + while (filePath.length) { + const p = filePath.shift(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(p); + if (definition[p]) { + currentPath.push(p); + definition = definition[p]; + } + else { + filePath.unshift(p); + break; + } + } + if (!definition || filePath.length) { + if (!_config__WEBPACK_IMPORTED_MODULE_1__["default"].REVERSE) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('ERROR - failed to find definition for ' + entry.path.join('.') + ' in ' + path__WEBPACK_IMPORTED_MODULE_0___default().basename(file)); + continue; + } + else { + // we could be replacing a deprecated definition with a group, + // so... delete the definition data from the definition + if (definition.value !== undefined) { + for (const key of Object.keys(definition)) { + delete definition[key]; + } + } + let root = undefined; + while (filePath.length) { + if (root) { + currentPath.push(root); + definition = definition[root]; + } + root = filePath.shift(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(root); + definition[root] = {}; + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_5__.isObject)(definition)); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(root); + definition[root].value = entry.value; + definition[root].type = entry.type; + definition[root][_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS] = entry[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]; + (0,_reverse_sortTokenGroup__WEBPACK_IMPORTED_MODULE_6__["default"])(data, currentPath, file); + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.storeFile)(file, data); + continue; + } + } + else if (definition.value === undefined) { + // if there's a token definition that isn't new but isn't already defined, + // it was probably deprecated - we can just skip it + continue; + } + const duplicated = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenDuplicated)(entry) ? true : false; + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenSpectrumName)(entry); + if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenUUID)(definition) !== uuid) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.setTokenUUID)(definition, uuid); + changed = true; + } + if (tokenName && (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenSpectrumName)(definition) !== tokenName) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.setTokenSpectrumName)(definition, tokenName); + changed = true; + } + if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenDeprecations)(definition) !== (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenDeprecations)(entry)) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.setTokenDeprecations)(definition, (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenDeprecations)(entry)); + changed = true; + } + if (!_config__WEBPACK_IMPORTED_MODULE_1__["default"].DISABLE_TOKEN_DUPLICATION_METADATA) { + if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenDuplicated)(definition) !== duplicated) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.setTokenDuplicated)(definition, duplicated); + changed = true; + } + } + else if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.getTokenDuplicated)(definition) !== undefined) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_4__.setTokenDuplicated)(definition, undefined); + changed = true; + } + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].REVERSE) { + if (definition.value !== entry.value) { + definition.value = entry.value; + changed = true; + } + } + } + // store file + if (changed) { + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_3__.storeFile)(file, data); + } + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (writeStudioTokens); + + +/***/ }), + +/***/ "./src/reports/reportDeletedTokens.ts": +/*!********************************************!*\ + !*** ./src/reports/reportDeletedTokens.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function reportDeprecatedTokens(changes) { + const output = []; + for (const deprecated of changes) { + output.push(deprecated.token); + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('DEPRECATED TOKENS: (' + output.length + ') ' + output.join(', ')); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportDeprecatedTokens); + + +/***/ }), + +/***/ "./src/reports/reportDeprecatedTokenUsage.ts": +/*!***************************************************!*\ + !*** ./src/reports/reportDeprecatedTokenUsage.ts ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_printableSetName__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/printableSetName */ "./src/core/printableSetName.ts"); +/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function reportDeprecatedTokenUsage(studioTokens, spectrumTokens, spectrumProblems) { + const deprecated = Object.keys(spectrumProblems.deprecated); + if (deprecated.length) { + for (const uuid of Object.keys(studioTokens)) { + if (deprecated.includes(uuid) && !(0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.isDeprecated)(studioTokens[uuid].path)) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('WARNING - STUDIO INCLUDES DEPRECATED TOKEN: ' + spectrumProblems.deprecated[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_0__["default"])(spectrumProblems.deprecated[uuid]) + ' [' + uuid + ']'); + spectrumTokens[uuid] = spectrumProblems.deprecated[uuid]; + delete spectrumProblems.deprecated[uuid]; + } + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportDeprecatedTokenUsage); + + +/***/ }), + +/***/ "./src/reports/reportMissingSpectrumSets.ts": +/*!**************************************************!*\ + !*** ./src/reports/reportMissingSpectrumSets.ts ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function reportMissingScales(name, scales, allScales, SETS) { + const missingScales = []; + for (const scale of allScales) { + if (!scales.includes(scale) && (!SETS.length || SETS.includes(scale))) { + missingScales.push(scale); + } + } + if (missingScales.length) + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - SPECTRUM-TOKENS MISSING SCALE DEFINITION FOR ' + name + ': ' + JSON.stringify(missingScales)); +} +function reportMissingThemes(name, themes, allThemes, SETS) { + const missingThemes = []; + for (const theme of allThemes) { + if (!themes.includes(theme) && (!SETS.length || SETS.includes(theme))) { + missingThemes.push(theme); + } + } + if (missingThemes.length) + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - SPECTRUM-TOKENS MISSING THEME DEFINITION FOR ' + name + ': ' + JSON.stringify(missingThemes)); +} +function reportMissingSpectrumSets(spectrumTokens, spectrumProblems, SETS = []) { + const collection = {}; + for (const token of Object.values(spectrumTokens)) { + if (token.sets.length) { + if (!collection[token.name]) { + collection[token.name] = []; + } + for (const set of token.sets) { + if (!collection[token.name].includes(set)) { + collection[token.name].push(set); + } + } + } + } + const allScales = []; + const allThemes = []; + for (const tokenName of Object.keys(collection)) { + for (const sets of collection[tokenName]) { + for (const set of sets) { + for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { + if (set === scale && !allScales.includes(scale)) { + allScales.push(scale); + } + } + for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { + if (set === theme && !allThemes.includes(theme)) { + allThemes.push(theme); + } + } + } + } + } + for (const tokenName of Object.keys(collection)) { + const foundScales = []; + const foundThemes = []; + for (const sets of collection[tokenName]) { + for (const set of sets) { + for (const scale of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].SCALES) { + if (set === scale) { + foundScales.push(scale); + } + } + for (const theme of _constants__WEBPACK_IMPORTED_MODULE_0__["default"].THEMES) { + if (set === theme) { + foundThemes.push(theme); + } + } + } + } + if (foundScales.length && allScales.length !== foundScales.length) { + reportMissingScales(tokenName, foundScales, allScales, SETS); + } + if (foundThemes.length && allThemes.length !== foundThemes.length) { + reportMissingThemes(tokenName, foundThemes, allThemes, SETS); + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingSpectrumSets); + + +/***/ }), + +/***/ "./src/reports/reportMissingSpectrumUUIDs.ts": +/*!***************************************************!*\ + !*** ./src/reports/reportMissingSpectrumUUIDs.ts ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +/* istanbul ignore file */ + +function reportMissingSpectrumUUIDs(spectrumProblems) { + for (const nouuid of spectrumProblems.uuids) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - spectrum definition missing uuid: ' + nouuid.name + ' in ' + nouuid.file); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingSpectrumUUIDs); + + +/***/ }), + +/***/ "./src/reports/reportMissingStudioModes.ts": +/*!*************************************************!*\ + !*** ./src/reports/reportMissingStudioModes.ts ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function reportMissingStudioModes(studioProblems) { + for (const name of Object.keys(studioProblems.modes)) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - STUDIO MISSING MODE DEFINITION FOR ' + name + ': ' + JSON.stringify(studioProblems.modes[name])); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingStudioModes); + + +/***/ }), + +/***/ "./src/reports/reportMissingStudioTokenNames.ts": +/*!******************************************************!*\ + !*** ./src/reports/reportMissingStudioTokenNames.ts ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function reportMissingStudioTokenNames(studioTokens) { + for (const uuid of Object.keys(studioTokens)) { + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioTokens[uuid]); + if (!tokenName) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('WARNING - studio definition metadata missing spectrum token name: ' + studioTokens[uuid].path.join(',')); + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingStudioTokenNames); + + +/***/ }), + +/***/ "./src/reports/reportMissingStudioUUIDs.ts": +/*!*************************************************!*\ + !*** ./src/reports/reportMissingStudioUUIDs.ts ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function reportMissingStudioUUIDs(studioProblems) { + for (const nouuid of studioProblems.uuids) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - studio definition missing uuid: ' + nouuid.path.join(',')); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportMissingStudioUUIDs); + + +/***/ }), + +/***/ "./src/reports/reportNameChanges.ts": +/*!******************************************!*\ + !*** ./src/reports/reportNameChanges.ts ***! + \******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function reportNameChanges(changes) { + const output = []; + for (const token of Object.keys(changes)) { + output.push(token); + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('RENAMED TOKENS: (' + output.length + ') ' + output.join(', ')); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportNameChanges); + + +/***/ }), + +/***/ "./src/reports/reportNewTokens.ts": +/*!****************************************!*\ + !*** ./src/reports/reportNewTokens.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function reportNewTokens(tokens, spectrumTokens) { + const newOnes = []; + const changedOnes = []; + for (const token of tokens) { + const uuid = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenUUID)(token); + if (uuid) { + const setName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(token); + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(token) + (setName.length ? '/' + setName : ''); + if (tokenName) { + if (!spectrumTokens[uuid] && !newOnes.includes(tokenName)) { + newOnes.push(tokenName); + } + else if (spectrumTokens[uuid] && !changedOnes.includes(tokenName)) { + changedOnes.push(tokenName); + } + } + } + } + if (newOnes.length) + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('NEW TOKENS: (' + newOnes.length + ') ' + newOnes.join(', ')); + if (changedOnes.length) + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('MODIFIED TOKENS: (' + changedOnes.length + ') ' + changedOnes.join(', ')); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportNewTokens); + + +/***/ }), + +/***/ "./src/reports/reportSchemaChanges.ts": +/*!********************************************!*\ + !*** ./src/reports/reportSchemaChanges.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function reportSchemaChanges(studioTokens, spectrumTokens, changes) { + const tokensChanged = []; + for (const uuid of Object.keys(changes)) { + const token = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioTokens[uuid]); + if (token && !tokensChanged.includes(token)) { + tokensChanged.push(token); + } + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)('CHANGED SCHEMAS: (' + tokensChanged.length + ') ' + tokensChanged.join(', ')); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportSchemaChanges); + + +/***/ }), + +/***/ "./src/reports/reportSetConflicts.ts": +/*!*******************************************!*\ + !*** ./src/reports/reportSetConflicts.ts ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function reportSetConflicts(studioTokens, spectrumTokens) { + for (const uuid of Object.keys(studioTokens)) { + if (spectrumTokens[uuid]) { + const studioEntry = studioTokens[uuid]; + const spectrumEntry = spectrumTokens[uuid]; + const spectrumSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getValidSpectrumTokenSets)(spectrumEntry); + const studioSetName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSpectrumTokenSetName)(studioEntry); + const warning = 'WARNING - MISMATCHED SET INFORMATION: ' + studioEntry.path + ' => ' + spectrumSets; + // if (studioSetName.length && spectrumSets.length === 1 && studioSetName !== spectrumSets[0]) { + // cout(warning); // same number of sets but they differ + // } else if (studioSetName.length && !spectrumSets.length) { + // cout(warning); // studio has a set but spectrum does not + // } else if (!studioSetName.length && spectrumSets.length) { + // cout(warning); // no studio set but spectrum does + // } else + if (studioSetName.length && spectrumSets.length > 1) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.cout)(warning); // spectrum has sets in sets + } + } + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportSetConflicts); + + +/***/ }), + +/***/ "./src/reports/reportTokenCounts.ts": +/*!******************************************!*\ + !*** ./src/reports/reportTokenCounts.ts ***! + \******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function getTokenCount(tokens, problems) { + let result = Object.keys(tokens).length; + for (const entries of Object.values(problems.collisions)) { + result += entries.length; + } + return result; +} +function reportTokenCounts(studioTokens, studioProblems, spectrumTokens, spectrumProblems) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('LOADED SPECTRUM TOKENS: ' + getTokenCount(spectrumTokens, spectrumProblems)); + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('LOADED STUDIO TOKENS: ' + getTokenCount(studioTokens, studioProblems)); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportTokenCounts); + + +/***/ }), + +/***/ "./src/reports/reportUUIDCollisions.ts": +/*!*********************************************!*\ + !*** ./src/reports/reportUUIDCollisions.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +/* istanbul ignore file */ + +function formatStudioCollisionMessage(uuid, entries) { + let msg = ''; + entries.forEach((entry) => { + msg += '\n' + entry.path; + }); + return msg; +} +function formatSpectrumCollisionMessage(uuid, entries) { + let msg = ''; + entries.forEach((entry) => { + msg += '\n' + entry.name + ' in ' + entry.file; + }); + return msg; +} +function reportUUIDCollisions(studioProblems, spectrumProblems) { + Object.keys(studioProblems.collisions).forEach((collision) => { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - studio token uuid collision: (' + collision + ')' + formatStudioCollisionMessage(collision, studioProblems.collisions[collision])); + }); + Object.keys(spectrumProblems.collisions).forEach((collision) => { + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('WARNING - spectrum token uuid collision: (' + collision + ')' + formatSpectrumCollisionMessage(collision, spectrumProblems.collisions[collision])); + }); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportUUIDCollisions); + + +/***/ }), + +/***/ "./src/reports/reportValueChanges.ts": +/*!*******************************************!*\ + !*** ./src/reports/reportValueChanges.ts ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _core_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/helpers */ "./src/core/helpers.ts"); +/* harmony import */ var _core_printableSetName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/printableSetName */ "./src/core/printableSetName.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function findTokensWithReference(spectrumTokens, uuid, filter = []) { + const results = {}; + const referenceName = '{' + spectrumTokens[uuid].name + '}'; + const updatedFilter = filter.concat(spectrumTokens[uuid].sets); + Object.values(spectrumTokens).forEach((entry) => { + if ((0,_core_helpers__WEBPACK_IMPORTED_MODULE_1__.filterPath)(updatedFilter, spectrumTokens[entry.uuid].sets) && entry.value === referenceName) { + results[entry.uuid] = findTokensWithReference(spectrumTokens, entry.uuid, updatedFilter); + } + }); + return results; +} +function reportReferences(spectrumTokens, references, result = {}) { + Object.keys(references).forEach((uuid) => { + result[uuid] = spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]); + reportReferences(spectrumTokens, references[uuid], result); + }); + return result; +} +function reportValueChanges(studioTokens, spectrumTokens, changes) { + const report = []; + const allChangedTokens = {}; + Object.keys(changes).forEach((uuid) => { + const changelog = {}; + changelog.uuid = uuid; + changelog.nameSource = studioTokens[uuid].path.join('.'); + changelog.nameSpectrum = spectrumTokens[uuid].name + (0,_core_printableSetName__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens[uuid]); + changelog.valueFrom = spectrumTokens[uuid].value; + changelog.valueTo = changes[uuid]; + allChangedTokens[spectrumTokens[uuid].name] = true; + const referenced = reportReferences(spectrumTokens, findTokensWithReference(spectrumTokens, uuid)); + if (Object.keys(referenced).length) { + changelog.referenced = referenced; + for (const spectrumName of Object.values(referenced)) { + allChangedTokens[spectrumName.split('/')[0]] = true; + } + } + report.push(changelog); + }); + const tokensChanged = []; + for (const change of report) { + tokensChanged.push(change.nameSpectrum); + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.cout)('CHANGED VALUES: (' + Object.keys(changes).length + ') ' + tokensChanged.join(', ') + (tokensChanged.length !== Object.keys(allChangedTokens).length ? ' impacting ' + Object.keys(allChangedTokens).length + ' tokens' : '')); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportValueChanges); + + +/***/ }), + +/***/ "./src/reverse/checkTokens.ts": +/*!************************************!*\ + !*** ./src/reverse/checkTokens.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _getSpectrumEntries__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getSpectrumEntries */ "./src/reverse/getSpectrumEntries.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + +function checkTokens(studioTokens, spectrumTokens, spectrumProblems, checkCallback) { + let valuesChanged = 0; + // index our data by the token name + const studioTokensByTokenName = {}; + const spectrumTokensByTokenName = {}; + for (const uuid in studioTokens) { + const entry = studioTokens[uuid]; + const token = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(entry); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(token); + if (!spectrumTokensByTokenName[token]) { + const spectrumEntries = (0,_getSpectrumEntries__WEBPACK_IMPORTED_MODULE_2__["default"])(spectrumTokens, spectrumProblems, token); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(spectrumEntries.length); + spectrumTokensByTokenName[token] = spectrumEntries; + } + if (!studioTokensByTokenName[token]) { + studioTokensByTokenName[token] = []; + } + studioTokensByTokenName[token].push(entry); + } + for (const token in spectrumTokensByTokenName) { + // index studio tokens by set name + const studioTokenBySet = {}; + for (const studioToken of studioTokensByTokenName[token]) { + const sets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSets)(studioToken); + for (const set of sets) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(!studioTokenBySet[set]); + studioTokenBySet[set] = studioToken; + } + } + // index spectrum tokens by set name + const spectrumTokenBySet = {}; + for (const spectrumToken of spectrumTokensByTokenName[token]) { + if (!spectrumToken.sets.length) { + for (const set in studioTokenBySet) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(!spectrumTokenBySet[set]); + spectrumTokenBySet[set] = spectrumToken; + } + } + else { + for (const set of spectrumToken.sets) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(!spectrumTokenBySet[set]); + spectrumTokenBySet[set] = spectrumToken; + } + } + } + // !!! we dupe so much, that this whole thing should just be a callback, same as the uuid checks + // check if the tokens align or not per set + for (const set in studioTokenBySet) { + const studioToken = studioTokenBySet[set]; + const spectrumToken = spectrumTokenBySet[set]; + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(studioToken); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(spectrumToken); + valuesChanged += checkCallback(studioToken, spectrumToken, set, token) ? 1 : 0; + } + } + return valuesChanged; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkTokens); + + +/***/ }), + +/***/ "./src/reverse/checkUUID.ts": +/*!**********************************!*\ + !*** ./src/reverse/checkUUID.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _getDestinationFile__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getDestinationFile */ "./src/reverse/getDestinationFile.ts"); +/* harmony import */ var _copyStudioToken__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./copyStudioToken */ "./src/reverse/copyStudioToken.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + +function checkUUID(studioTokens, studioToken, spectrumToken, set, token) { + const studioTokenUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(studioToken); + const spectrumTokenUUID = spectrumToken.uuid; + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(studioTokenUUID); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(spectrumTokenUUID); + // update the uuid if necessary + if (studioTokenUUID !== spectrumTokenUUID) { + if (!studioTokens[spectrumTokenUUID]) { + // remove this set from the existing studio uuid entry + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(studioToken.files.length); + if (studioToken.files.length === 1) { + // REPLACE + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getSets)(studioToken)[0] === set); + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenUUID)(studioToken, spectrumTokenUUID); + studioTokens[spectrumTokenUUID] = studioToken; + delete studioTokens[studioTokenUUID]; + return true; + } + else if (studioToken.files.length > 1) { + // REMOVE FROM THE EXISTING TOKEN DEFINITION + // & CREATE A NEW TOKEN DEFINITION FOR IT + const files = studioToken.files.filter((f) => f.includes((path__WEBPACK_IMPORTED_MODULE_0___default().sep) + set + '.json')); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(files && files.length === 1); + const file = files[0]; + studioToken.files.splice(studioToken.files.indexOf(file), 1); + if (studioToken.files.length === 1) { + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenDuplicated)(studioToken, false); + } + const newStudioToken = (0,_copyStudioToken__WEBPACK_IMPORTED_MODULE_4__["default"])(studioToken); + newStudioToken.files = [file]; + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenUUID)(newStudioToken, spectrumTokenUUID); + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.setTokenDuplicated)(newStudioToken, false); + studioTokens[spectrumTokenUUID] = newStudioToken; + return true; + } + } + else { + const destStudioToken = studioTokens[spectrumTokenUUID]; + const destinationFile = (0,_getDestinationFile__WEBPACK_IMPORTED_MODULE_3__["default"])(studioToken, set); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(destinationFile); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(!destStudioToken.files.includes(destinationFile)); + destStudioToken.files.push(destinationFile); + if (studioToken.files.length === 1) { + delete studioTokens[studioTokenUUID]; + } + else { + throw new Error('REMOVE: UNSUPPORTED! => ' + set + ':' + token); + } + return true; + } + } + return false; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkUUID); + + +/***/ }), + +/***/ "./src/reverse/checkValue.ts": +/*!***********************************!*\ + !*** ./src/reverse/checkValue.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/getSpectrumValue */ "./src/core/getSpectrumValue.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/* harmony import */ var _getStudioValue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getStudioValue */ "./src/reverse/getStudioValue.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + +function checkValue(studioTokens, studioToken, spectrumToken, set, token) { + const studioTokenUUID = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_1__.getTokenUUID)(studioToken); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)(studioTokenUUID); + // update the value if necessary + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(spectrumToken.value)); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(studioToken.value)); + // ??? we always check references because they could be garbage values directly from spectrum-tokens + // and because we're using getSpectrumValue at the top level, these won't be caught correctly + // and I'm too lazy to update getStudioValue with all the same value transforms that the spectrum value has + // ??? and we're also using this to conver rgb() values to hex + if (studioToken.value.indexOf('rgb(') === 0 || spectrumToken.value[0] === '{' || (0,_core_getSpectrumValue__WEBPACK_IMPORTED_MODULE_0__["default"])(studioTokenUUID, studioTokens) !== spectrumToken.value) { + const studioValue = (0,_getStudioValue__WEBPACK_IMPORTED_MODULE_3__["default"])(spectrumToken.value, set, studioTokens); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isString)(studioValue)); + if (studioToken.value !== studioValue) { + studioToken.value = studioValue; + return true; + } + } + return false; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (checkValue); + + +/***/ }), + +/***/ "./src/reverse/copyStudioToken.ts": +/*!****************************************!*\ + !*** ./src/reverse/copyStudioToken.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function copyObject(obj) { + const result = {}; + for (const key in obj) { + if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(obj[key])) { + result[key] = copyObject(obj[key]); + } + else if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(obj[key])) { + result[key] = obj[key].slice(); + } + else { + result[key] = obj[key]; + } + } + return result; +} +function copyStudioToken(studioToken) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(studioToken.value)); + const extensionData = copyObject(studioToken[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]); + const result = { value: studioToken.value, type: studioToken.type, path: studioToken.path.slice(), files: studioToken.files.slice(), dataSet: studioToken.dataSet, [_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EXTENSIONS]: extensionData }; + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (copyStudioToken); + + +/***/ }), + +/***/ "./src/reverse/getDestinationFile.ts": +/*!*******************************************!*\ + !*** ./src/reverse/getDestinationFile.ts ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + +function getDestinationFile(studioToken, set) { + for (const file of studioToken.files) { + if (set === path__WEBPACK_IMPORTED_MODULE_0___default().basename(file).split('.')[0]) { + return file; + } + } + return undefined; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getDestinationFile); + + +/***/ }), + +/***/ "./src/reverse/getSpectrumEntries.ts": +/*!*******************************************!*\ + !*** ./src/reverse/getSpectrumEntries.ts ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ +function getSpectrumEntries(spectrumTokens, spectrumProblems, token) { + const result = []; + for (const uuid in spectrumTokens) { + if (spectrumTokens[uuid].name === token) { + result.push(spectrumTokens[uuid]); + } + } + for (const uuid in spectrumProblems.deprecated) { + if (spectrumProblems.deprecated[uuid].name === token) { + result.push(spectrumProblems.deprecated[uuid]); + } + } + return result; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getSpectrumEntries); + + +/***/ }), + +/***/ "./src/reverse/getStudioValue.ts": +/*!***************************************!*\ + !*** ./src/reverse/getStudioValue.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + +function getStudioReference(value, set, studioTokens) { + const token = value.replace('{', '').replace('}', ''); + let result = null; + for (const uuid in studioTokens) { + const studioToken = studioTokens[uuid]; + const sets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getSets)(studioToken); + if (sets.includes(set)) { + if ((0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_0__.getTokenSpectrumName)(studioToken) === token) { + result = '{' + studioToken.path.slice(1).join('.') + '}'; + break; + } + } + } + return result; +} +function toHex(color) { + const bits = color.replace('rgb', '').replace('(', '').replace(')', '').split(','); + const r = Math.round(Number(bits[0].trim())).toString(16).toUpperCase().padStart(2, '0'); + const g = Math.round(Number(bits[1].trim())).toString(16).toUpperCase().padStart(2, '0'); + const b = Math.round(Number(bits[2].trim())).toString(16).toUpperCase().padStart(2, '0'); + return '#' + r + g + b; +} +function getStudioValue(value, set, studioTokens) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(value)); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(value.length); + if (value[0] === '{') { + const reference = getStudioReference(value, set, studioTokens); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.assert)(reference); + value = reference ? reference : value; + } + else if (value.indexOf('rgb(') === 0) { + value = toHex(value); + } + else if (value.indexOf('rgba(') === 0) { + // rgba color + } + else if (value[0] === '#') { + // hex color + } + else if (value.toLowerCase().indexOf('px') === value.length - 2) { + // px value + } + else { + // ??? we would handle other value type conversion stuff here if we needed to, but we don't + throw new Error('VALUE IS NEITHER A COLOR OR REFERENCE: ' + value); + } + return value; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getStudioValue); + + +/***/ }), + +/***/ "./src/reverse/handleAddedTokens.ts": +/*!******************************************!*\ + !*** ./src/reverse/handleAddedTokens.ts ***! + \******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/tokenStuff */ "./src/core/tokenStuff.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + +function getCategoryFromFileName(file) { + const fileName = path__WEBPACK_IMPORTED_MODULE_0___default().basename(file); + let result = undefined; + for (const category in _config__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM_FILES) { + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM_FILES[category] === fileName) { + result = category; + break; + } + } + return result; +} +function getNumericIndex(token) { + const tokenBits = token.split('-'); + const lastBit = Number(tokenBits[tokenBits.length - 1]); + if (!isNaN(lastBit)) { + return lastBit.toString(); + } + return false; +} +function findSiblingToken(studioTokens, token) { + if (getNumericIndex(token) !== false) { + const baseName = token.split('-').slice(0, -1).join('-'); + for (const uuid in studioTokens) { + const studioToken = studioTokens[uuid]; + const tokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenSpectrumName)(studioToken); + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(tokenName); + if (getNumericIndex(tokenName) !== false) { + const baseTokenName = tokenName.split('-').slice(0, -1).join('-'); + if (baseTokenName === baseName) { + return studioToken; + } + } + } + } + return null; +} +function getTokenFromSpectrum2(studioTokensS2, token) { + for (const uuid in studioTokensS2) { + const studioToken = studioTokensS2[uuid]; + const studioTokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenSpectrumName)(studioToken); + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(studioTokenName); + if (token === studioTokenName) { + return studioToken; + } + } + return null; +} +function getTokenStudioTargets(token, category, tokenStudioFiles, studioTokensS2) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(Object.keys(_config__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM_FILES).includes(category)); + let targetPath = null; + let targetFile = null; + let targetType = null; + let targetDataSet = null; + // !!! lots of hard coding to spectrum version and path structure, fyi + const studioTokenS2 = getTokenFromSpectrum2(studioTokensS2, token); + targetPath = studioTokenS2 ? studioTokenS2.path : null; + if (targetPath) { + targetPath.shift(); + } + targetType = studioTokenS2 ? studioTokenS2.type : null; + targetDataSet = studioTokenS2 ? studioTokenS2.dataSet : null; + switch (category) { + case 'COLOR_PALETTE': + { + if (targetDataSet) { + targetFile = path__WEBPACK_IMPORTED_MODULE_0___default().join(tokenStudioFiles[targetDataSet], 'spectrum', 'palette'); + } + if (targetPath) { + targetPath.unshift('spectrum/palette'); + } + } + break; + case 'COLOR_ALIASES': + case 'COLOR_SEMANTIC': + { + if (targetDataSet) { + targetFile = path__WEBPACK_IMPORTED_MODULE_0___default().join(tokenStudioFiles[targetDataSet], 'spectrum', 'alias'); + } + if (targetPath) { + targetPath.unshift('spectrum/alias'); + } + } + break; + case 'LAYOUT': + { + if (targetDataSet) { + targetFile = path__WEBPACK_IMPORTED_MODULE_0___default().join(tokenStudioFiles[targetDataSet], 'spectrum', 'layout'); + } + if (targetPath) { + targetPath.unshift('spectrum/layout'); + } + } + break; + default: + throw new Error('getTokenStudioTargets: unhandled token type => ' + token + ' ' + category); + } + return { targetPath: targetPath, targetFile: targetFile, targetType: targetType, targetDataSet: targetDataSet, targetSets: studioTokenS2 ? (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getSets)(studioTokenS2) : [] }; +} +function handleAddedTokens(studioTokens, spectrumTokens, studioTokensS2, tokenStudioFiles) { + const missingSetTokens = {}; + const missingTokens = {}; + const COLOR_SETS = ['light', 'dark', 'wireframe']; + const LAYOUT_SETS = ['desktop', 'mobile']; + for (const uuid in spectrumTokens) { + if (!studioTokens[uuid]) { + const tokenName = spectrumTokens[uuid].name; + const sets = spectrumTokens[uuid].sets; + if (sets.length) { + for (const set of sets) { + if (!missingSetTokens[tokenName]) { + missingSetTokens[tokenName] = {}; + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(!missingSetTokens[tokenName][set]); + missingSetTokens[tokenName][set] = spectrumTokens[uuid]; + } + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(!missingTokens[tokenName]); + missingTokens[tokenName] = spectrumTokens[uuid]; + } + } + } + let handled = 0; + for (const token in missingSetTokens) { + const sibling = findSiblingToken(studioTokens, token); + if (sibling) { + const numericIndex = getNumericIndex(token); + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(numericIndex)); + const targetPath = sibling.path.slice(0, -1); + const siblingTokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenSpectrumName)(sibling); + if (siblingTokenName && sibling.path.includes(siblingTokenName)) { + targetPath.push(token); + } + else { + targetPath.push(numericIndex); + } + const siblingFile = sibling.files[0]; + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(siblingFile)); + const targetFile = siblingFile.slice(0, siblingFile.lastIndexOf((path__WEBPACK_IMPORTED_MODULE_0___default().sep)) + 1); + for (const set in missingSetTokens[token]) { + const spectrumToken = missingSetTokens[token][set]; + const targetFiles = []; + targetFiles.push(targetFile + set + '.json'); + const extensions = { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]: { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME]: spectrumToken.name, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID]: spectrumToken.uuid, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined + } + }; + const studioToken = { type: sibling.type, dataSet: sibling.dataSet, value: spectrumToken.value, files: targetFiles, path: targetPath, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]: extensions }; + studioTokens[spectrumToken.uuid] = studioToken; + } + handled++; + } + else { + const category = getCategoryFromFileName(missingSetTokens[token][Object.keys(missingSetTokens[token])[0]].file); + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(category); + const { targetPath, targetFile, targetType, targetDataSet } = getTokenStudioTargets(token, category, tokenStudioFiles, studioTokensS2); + if (targetPath && targetFile && targetType && targetDataSet) { + for (const set in missingSetTokens[token]) { + const spectrumToken = missingSetTokens[token][set]; + const targetFiles = []; + targetFiles.push(path__WEBPACK_IMPORTED_MODULE_0___default().join(targetFile, set + '.json')); + const extensions = { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]: { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME]: spectrumToken.name, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID]: spectrumToken.uuid, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined + } + }; + const studioToken = { type: targetType, dataSet: targetDataSet, value: spectrumToken.value, files: targetFiles, path: targetPath, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]: extensions }; + studioTokens[spectrumToken.uuid] = studioToken; + } + handled++; + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.cout)('WARNING - UNMERGED TOKEN: ' + token); + } + } + } + for (const token in missingTokens) { + const sibling = findSiblingToken(studioTokens, token); + if (sibling) { + const numericIndex = getNumericIndex(token); + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(numericIndex)); + const targetPath = sibling.path.slice(0, -1); + const siblingTokenName = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getTokenSpectrumName)(sibling); + if (siblingTokenName && sibling.path.includes(siblingTokenName)) { + targetPath.push(token); + } + else { + targetPath.push(numericIndex); + } + const siblingFile = sibling.files[0]; + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)((0,_helpers__WEBPACK_IMPORTED_MODULE_4__.isString)(siblingFile)); + const targetFile = siblingFile.slice(0, siblingFile.lastIndexOf((path__WEBPACK_IMPORTED_MODULE_0___default().sep)) + 1); + const targetFiles = []; + const siblingSets = (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_3__.getSets)(sibling); + const activeSets = COLOR_SETS.includes(siblingSets[0]) ? COLOR_SETS : LAYOUT_SETS; + for (const theme of activeSets) { + targetFiles.push(targetFile + theme + '.json'); + } + const spectrumToken = missingTokens[token]; + const extensions = { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]: { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME]: spectrumToken.name, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID]: spectrumToken.uuid, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined + } + }; + const studioToken = { type: sibling.type, dataSet: sibling.dataSet, value: spectrumToken.value, files: targetFiles, path: targetPath, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]: extensions }; + studioTokens[spectrumToken.uuid] = studioToken; + handled++; + } + else { + const category = getCategoryFromFileName(missingTokens[token].file); + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(category); + const { targetPath, targetFile, targetType, targetDataSet, targetSets } = getTokenStudioTargets(token, category, tokenStudioFiles, studioTokensS2); + if (targetPath && targetFile && targetType && targetDataSet) { + const targetFiles = []; + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.assert)(targetSets.length); + const activeSets = COLOR_SETS.includes(targetSets[0]) ? COLOR_SETS : LAYOUT_SETS; + for (const set of activeSets) { + targetFiles.push(path__WEBPACK_IMPORTED_MODULE_0___default().join(targetFile, set + '.json')); + } + const spectrumToken = missingTokens[token]; + const extensions = { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_STUDIO]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM]: { + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_NAME]: spectrumToken.name, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_UUID]: spectrumToken.uuid, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DUPLICATE]: undefined, + [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS_SPECTRUM_DEPRECATED]: undefined + } + }; + const studioToken = { type: targetType, dataSet: targetDataSet, value: spectrumToken.value, files: targetFiles, path: targetPath, [_constants__WEBPACK_IMPORTED_MODULE_2__["default"].EXTENSIONS]: extensions }; + studioTokens[spectrumToken.uuid] = studioToken; + handled++; + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.cout)('WARNING - FAILED TO ADD TOKEN: ' + token); + } + } + } + const totalKeys = Object.keys(missingTokens).length + Object.keys(missingSetTokens).length; + if (handled !== totalKeys) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.cout)('WARNING - FAILED TO ADD TOKENS: ' + (totalKeys - handled)); + } + return handled; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (handleAddedTokens); + + +/***/ }), + +/***/ "./src/reverse/sortTokenGroup.ts": +/*!***************************************!*\ + !*** ./src/reverse/sortTokenGroup.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "./src/constants.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../helpers */ "./src/helpers.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + +function sortTokenGroup(data, triggerPath, file) { + // get the file name in s2 + let s2File = file.replace(_constants__WEBPACK_IMPORTED_MODULE_3__["default"].FOUNDATION, _constants__WEBPACK_IMPORTED_MODULE_3__["default"].S2).replace((path__WEBPACK_IMPORTED_MODULE_1___default().sep) + 'spectrum' + (path__WEBPACK_IMPORTED_MODULE_1___default().sep), (path__WEBPACK_IMPORTED_MODULE_1___default().sep) + 'spectrum2' + (path__WEBPACK_IMPORTED_MODULE_1___default().sep)); + if (path__WEBPACK_IMPORTED_MODULE_1___default().basename(s2File) === 'wireframe.json') { + s2File = s2File.replace('wireframe.json', 'light.json'); + } + if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(s2File)) { + for (const dataSet in _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO_DATA_SETS) { + const s2FileDataSet = s2File.replace((path__WEBPACK_IMPORTED_MODULE_1___default().sep) + 'spectrum2' + (path__WEBPACK_IMPORTED_MODULE_1___default().sep), (path__WEBPACK_IMPORTED_MODULE_1___default().sep) + 'spectrum2' + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO_DATA_SETS[dataSet] + (path__WEBPACK_IMPORTED_MODULE_1___default().sep)); + if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(s2FileDataSet)) { + s2File = s2FileDataSet; + break; + } + } + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(s2File !== file); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(s2File), s2File); + // get the file data for s2 + const s2Tokens = (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_4__.getFile)(s2File); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(s2Tokens); + // figure out all the paths we need to sort + const allPaths = []; + for (let i = 1; i <= triggerPath.length; ++i) { + allPaths.push(triggerPath.slice(0, i)); + } + for (const currentPath of allPaths) { + // find the corresponding group in s2 + let s2Group = s2Tokens; + const s2Path = currentPath.slice(); + while (s2Group && s2Path.length) { + const p = s2Path.shift(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(p); + if (s2Group[p]) { + s2Group = s2Group[p]; + } + else { + break; + } + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(s2Group); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!s2Path.length); + // get the token order in s2 for the group + const tokenOrder = Object.keys(s2Group); + // find the corresponding group in foundations + let sortGroup = data; + const sortPath = currentPath.slice(); + while (sortGroup && sortPath.length) { + const p = sortPath.shift(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(p); + if (sortGroup[p]) { + sortGroup = sortGroup[p]; + } + else { + break; + } + } + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(sortGroup); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!sortPath.length); + // store the foundation tokens in a temp object + // and clear the foundation parent object + const temp = {}; + for (const key in sortGroup) { + temp[key] = sortGroup[key]; + delete sortGroup[key]; + } + // add back the foundation tokens in proper order + for (const key of Object.keys(temp).sort((a, b) => { + return tokenSort(a, b, tokenOrder); + })) { + sortGroup[key] = temp[key]; + } + } + // custom sorting function + function tokenSort(a, b, order) { + if (a === b) { + return 0; + } + if (!order.includes(a) && !order.includes(b)) { + return a < b ? -1 : 1; + } + else if (order.includes(a) && !order.includes(b)) { + return -1; + } + else if (!order.includes(a) && order.includes(b)) { + return 1; + } + if (order.indexOf(a) === order.indexOf(b)) { + return 0; + } + else if (order.indexOf(a) < order.indexOf(b)) { + return -1; + } + else if (order.indexOf(a) > order.indexOf(b)) { + return 1; + } + return a < b ? -1 : 1; + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sortTokenGroup); + + +/***/ }), + +/***/ "./src/sync.ts": +/*!*********************!*\ + !*** ./src/sync.ts ***! + \*********************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ "./config.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts"); +/* harmony import */ var _syncToSpectrum__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./syncToSpectrum */ "./src/syncToSpectrum.ts"); +/* harmony import */ var _syncToStudio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./syncToStudio */ "./src/syncToStudio.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2023 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + +function parseArgs() { + const source = '-source='; // path to the tokens-studio-data repo + const destination = '-destination='; // path to the spectrum-tokens repo + const test = '-test'; // whether this is a test run, and changes will not be written to the repos + const action = '-action'; // whether this is running as an action + const args = {}; + process.argv.forEach((arg) => { + if (arg.indexOf(source) === 0) { + args.source = arg.slice(source.length); + } + if (arg.indexOf(destination) === 0) { + args.destination = arg.slice(destination.length); + } + if (arg.indexOf(test) === 0) { + args.test = true; + } + if (arg.indexOf(action) === 0) { + args.action = true; + } + }); + for (const arg of Object.keys(args)) { + switch (arg) { + case 'source': + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO = args[arg]; + break; + case 'destination': + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_SPECTRUM = args[arg]; + break; + case 'test': + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TESTING = args[arg]; + break; + case 'action': + _config__WEBPACK_IMPORTED_MODULE_2__["default"].SUPPRESS_COUT = true; // console log will be written to the action summary, instead + _config__WEBPACK_IMPORTED_MODULE_2__["default"].AUTOMATION = true; // in case we want to format output for github + break; + } + } +} +function writeCoutLog() { + fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_2__["default"].COUT_LOG), (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getcout)().join('\n') + '\n', { encoding: 'utf8', flag: 'w' }); +} +async function main() { + try { + // sanitize the source/destination paths - these will be used in various read/write operations + const TOKENS_SPECTRUM_SANITIZED = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_SPECTRUM); + const TOKENS_STUDIO_SANITIZED = {}; + for (const dataset in _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO_DATA_SETS) { + TOKENS_STUDIO_SANITIZED[dataset] = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO + _config__WEBPACK_IMPORTED_MODULE_2__["default"].TOKENS_STUDIO_DATA_SETS[dataset] + (path__WEBPACK_IMPORTED_MODULE_1___default().sep)); + } + // make sure the output log directory exists + if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS))) { + fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync((0,_helpers__WEBPACK_IMPORTED_MODULE_3__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_2__["default"].OUTPUT_LOGS)); + } + if (!_config__WEBPACK_IMPORTED_MODULE_2__["default"].REVERSE) { + (0,_syncToSpectrum__WEBPACK_IMPORTED_MODULE_4__["default"])(TOKENS_SPECTRUM_SANITIZED, TOKENS_STUDIO_SANITIZED); + } + else { + (0,_syncToStudio__WEBPACK_IMPORTED_MODULE_5__["default"])(TOKENS_SPECTRUM_SANITIZED, TOKENS_STUDIO_SANITIZED); + } + } + finally { + writeCoutLog(); + } +} +parseArgs(); +await main(); + +__webpack_async_result__(); +} catch(e) { __webpack_async_result__(e); } }, 1); + +/***/ }), + +/***/ "./src/syncToSpectrum.ts": +/*!*******************************!*\ + !*** ./src/syncToSpectrum.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ "./config.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts"); +/* harmony import */ var _operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./operations/readStudioTokens */ "./src/operations/readStudioTokens.ts"); +/* harmony import */ var _operations_readSpectrumTokens__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operations/readSpectrumTokens */ "./src/operations/readSpectrumTokens.ts"); +/* harmony import */ var _reports_reportTokenCounts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reports/reportTokenCounts */ "./src/reports/reportTokenCounts.ts"); +/* harmony import */ var _reports_reportUUIDCollisions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./reports/reportUUIDCollisions */ "./src/reports/reportUUIDCollisions.ts"); +/* harmony import */ var _reports_reportMissingStudioUUIDs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./reports/reportMissingStudioUUIDs */ "./src/reports/reportMissingStudioUUIDs.ts"); +/* harmony import */ var _reports_reportMissingSpectrumUUIDs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./reports/reportMissingSpectrumUUIDs */ "./src/reports/reportMissingSpectrumUUIDs.ts"); +/* harmony import */ var _reports_reportValueChanges__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reports/reportValueChanges */ "./src/reports/reportValueChanges.ts"); +/* harmony import */ var _reports_reportNameChanges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reports/reportNameChanges */ "./src/reports/reportNameChanges.ts"); +/* harmony import */ var _reports_reportMissingStudioTokenNames__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./reports/reportMissingStudioTokenNames */ "./src/reports/reportMissingStudioTokenNames.ts"); +/* harmony import */ var _reports_reportNewTokens__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./reports/reportNewTokens */ "./src/reports/reportNewTokens.ts"); +/* harmony import */ var _operations_formatNewSpectrumTokens__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./operations/formatNewSpectrumTokens */ "./src/operations/formatNewSpectrumTokens.ts"); +/* harmony import */ var _operations_formatChangedSpectrumTokens__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./operations/formatChangedSpectrumTokens */ "./src/operations/formatChangedSpectrumTokens.ts"); +/* harmony import */ var _operations_addUUIDs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./operations/addUUIDs */ "./src/operations/addUUIDs.ts"); +/* harmony import */ var _operations_checkValueChanges__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./operations/checkValueChanges */ "./src/operations/checkValueChanges.ts"); +/* harmony import */ var _operations_checkNameChanges__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./operations/checkNameChanges */ "./src/operations/checkNameChanges.ts"); +/* harmony import */ var _operations_checkForDeprecatedTokens__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./operations/checkForDeprecatedTokens */ "./src/operations/checkForDeprecatedTokens.ts"); +/* harmony import */ var _reports_reportDeletedTokens__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./reports/reportDeletedTokens */ "./src/reports/reportDeletedTokens.ts"); +/* harmony import */ var _reports_reportMissingSpectrumSets__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./reports/reportMissingSpectrumSets */ "./src/reports/reportMissingSpectrumSets.ts"); +/* harmony import */ var _reports_reportMissingStudioModes__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./reports/reportMissingStudioModes */ "./src/reports/reportMissingStudioModes.ts"); +/* harmony import */ var _operations_deprecateSpectrumTokens__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./operations/deprecateSpectrumTokens */ "./src/operations/deprecateSpectrumTokens.ts"); +/* harmony import */ var _operations_renameSpectrumTokens__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./operations/renameSpectrumTokens */ "./src/operations/renameSpectrumTokens.ts"); +/* harmony import */ var _operations_changeSpectrumTokens__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./operations/changeSpectrumTokens */ "./src/operations/changeSpectrumTokens.ts"); +/* harmony import */ var _operations_addSpectrumTokens__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./operations/addSpectrumTokens */ "./src/operations/addSpectrumTokens.ts"); +/* harmony import */ var _reports_reportDeprecatedTokenUsage__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./reports/reportDeprecatedTokenUsage */ "./src/reports/reportDeprecatedTokenUsage.ts"); +/* harmony import */ var _operations_updateTokenNameMetadata__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./operations/updateTokenNameMetadata */ "./src/operations/updateTokenNameMetadata.ts"); +/* harmony import */ var _operations_resolveSplitTokens__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./operations/resolveSplitTokens */ "./src/operations/resolveSplitTokens.ts"); +/* harmony import */ var _operations_writeStudioTokens__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./operations/writeStudioTokens */ "./src/operations/writeStudioTokens.ts"); +/* harmony import */ var _operations_getModifiedTokens__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./operations/getModifiedTokens */ "./src/operations/getModifiedTokens.ts"); +/* harmony import */ var _operations_checkSchemaChanges__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./operations/checkSchemaChanges */ "./src/operations/checkSchemaChanges.ts"); +/* harmony import */ var _reports_reportSchemaChanges__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./reports/reportSchemaChanges */ "./src/reports/reportSchemaChanges.ts"); +/* harmony import */ var _operations_verifyBranchSchemas__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./operations/verifyBranchSchemas */ "./src/operations/verifyBranchSchemas.ts"); +/* harmony import */ var _operations_checkForRecycledUUIDs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./operations/checkForRecycledUUIDs */ "./src/operations/checkForRecycledUUIDs.ts"); +/* harmony import */ var _reports_reportSetConflicts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reports/reportSetConflicts */ "./src/reports/reportSetConflicts.ts"); +/* harmony import */ var _operations_checkModes__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./operations/checkModes */ "./src/operations/checkModes.ts"); +/* harmony import */ var _operations_resolveMergeTokens__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./operations/resolveMergeTokens */ "./src/operations/resolveMergeTokens.ts"); +/* harmony import */ var _operations_checkSets__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./operations/checkSets */ "./src/operations/checkSets.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./core/fileCaching */ "./src/core/fileCaching.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +function syncToSpectrum(TOKENS_SPECTRUM_SANITIZED, TOKENS_STUDIO_SANITIZED) { + // load token data from the data sets + const { spectrumTokens, spectrumProblems } = (0,_operations_readSpectrumTokens__WEBPACK_IMPORTED_MODULE_4__["default"])(TOKENS_SPECTRUM_SANITIZED, _config__WEBPACK_IMPORTED_MODULE_1__["default"].SYSTEM); + const { studioTokens, studioProblems } = (0,_operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_3__.readStudioTokens)(TOKENS_STUDIO_SANITIZED); + // ensure that the token metadata has the proper spectrum token name + // ... this will only check tokens from the non-color set, the color set + // needs to be explicitly defined since those differ, currently + const tokenMetadataNameChanges = (0,_operations_updateTokenNameMetadata__WEBPACK_IMPORTED_MODULE_27__["default"])(studioTokens, studioProblems); + // ??? we do this before doing any further processing of the token data just + // in case there are dependencies on the spectrum token name in any of the + // following operations, but this end up being cumbersome, as we need to check + // a bunch of entries in studioProblems :/ + // we'll need to keep track of these... + let addedUUIDs = []; + // fix missing uuids: if a token marked as new in tokens studio already has an entry in spectrum-tokens + // then we should be using the uuids from spectrum-tokens, and *not* treating this token as new + addedUUIDs = addedUUIDs.concat((0,_operations_checkForRecycledUUIDs__WEBPACK_IMPORTED_MODULE_34__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); + // resolve splitting a single token definition into a set of token definitions + if (Object.keys(studioProblems.split).length) { + addedUUIDs = addedUUIDs.concat((0,_operations_resolveSplitTokens__WEBPACK_IMPORTED_MODULE_28__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); + } + // resolve merging multiple token definitions into a single token definition + if (Object.keys(studioProblems.merge).length) { + addedUUIDs = addedUUIDs.concat((0,_operations_resolveMergeTokens__WEBPACK_IMPORTED_MODULE_37__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); + } + // collect token name changes (from the tokens studio extension metadata) + // ... this operation can identify and register tokens that need new uuids + // because of name changes, so ensure this happens before addUUIDs is called + const renamedTokens = (0,_operations_checkNameChanges__WEBPACK_IMPORTED_MODULE_17__["default"])(spectrumTokens, studioTokens, studioProblems); + // deal with missing uuids in token studio data: create them or report them + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].CREATE_UUIDS_FOR_TOKENS_STUDIO) { + addedUUIDs = addedUUIDs.concat((0,_operations_addUUIDs__WEBPACK_IMPORTED_MODULE_15__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems)); + } + else { + (0,_reports_reportMissingStudioUUIDs__WEBPACK_IMPORTED_MODULE_7__["default"])(studioProblems); + } + // make sure we actually have tokens studio data... + if (!Object.keys(studioTokens).length) { + throw new Error('MISSING TOKENS STUDIO DATA'); + } + // need to check that token definitions not already captured by split/merge + // need to also have a split merge done to them, too + (0,_operations_checkSets__WEBPACK_IMPORTED_MODULE_38__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems); + // check mode/set usage in studio tokens now that all our token juggling is complete + (0,_operations_checkModes__WEBPACK_IMPORTED_MODULE_36__["default"])(studioTokens, studioProblems); + // report uuid collisions (there are multiple entries in a data set for a single uuid) + (0,_reports_reportUUIDCollisions__WEBPACK_IMPORTED_MODULE_6__["default"])(studioProblems, spectrumProblems); + // report missing uuids in the spectrum-tokens data + (0,_reports_reportMissingSpectrumUUIDs__WEBPACK_IMPORTED_MODULE_8__["default"])(spectrumProblems); + // report missing tokens studio mode entries + (0,_reports_reportMissingStudioModes__WEBPACK_IMPORTED_MODULE_21__["default"])(studioProblems); + // we should be checking that tokens are in the same sets between tokens studio and spectrum-tokens + (0,_reports_reportSetConflicts__WEBPACK_IMPORTED_MODULE_35__["default"])(studioTokens, spectrumTokens); + // report missing spectrum-tokens set entries + (0,_reports_reportMissingSpectrumSets__WEBPACK_IMPORTED_MODULE_20__["default"])(spectrumTokens, spectrumProblems, studioProblems.usedModes); + // report deprecated token usage in tokens studio data + (0,_reports_reportDeprecatedTokenUsage__WEBPACK_IMPORTED_MODULE_26__["default"])(studioTokens, spectrumTokens, spectrumProblems); + // report missing token name in metadata + (0,_reports_reportMissingStudioTokenNames__WEBPACK_IMPORTED_MODULE_11__["default"])(studioTokens); + // report token counts + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].REPORT_VERBOSE) { + (0,_reports_reportTokenCounts__WEBPACK_IMPORTED_MODULE_5__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems); + } + // we want to gather all the tokens that will + // need to be added/re-added to spectrum + const newTokens = []; + // collect actual new uuids + Object.keys(studioTokens).forEach((uuid) => { + if (!Object.keys(spectrumTokens).includes(uuid) && !Object.keys(spectrumProblems.collisions).includes(uuid) && !Object.keys(spectrumProblems.deprecated).includes(uuid)) { + if (!newTokens.includes(studioTokens[uuid])) { + newTokens.push(studioTokens[uuid]); + } + } + }); + // collect uuids involved in replacement, that we know about + Object.keys(studioProblems.split).forEach((uuid) => { + if (!Object.keys(spectrumProblems.collisions).includes(uuid) && !Object.keys(spectrumProblems.deprecated).includes(uuid)) { + if (!newTokens.includes(studioTokens[uuid])) { + newTokens.push(studioTokens[uuid]); + } + } + }); + Object.keys(studioProblems.merged).forEach((uuid) => { + if (!Object.keys(spectrumProblems.collisions).includes(uuid) && !Object.keys(spectrumProblems.deprecated).includes(uuid)) { + if (!newTokens.includes(studioTokens[uuid])) { + newTokens.push(studioTokens[uuid]); + } + } + }); + // this searches for tokens that are considered new from the + // tokens studio data perspective but have pre-existing definitions + // in spectrum-tokens; likely as a result of running a sync + // operation multiple times on the same spectrum-tokens branch + // (which could happen if we created a branch for engineers to test) + (0,_operations_getModifiedTokens__WEBPACK_IMPORTED_MODULE_30__["default"])(studioTokens, spectrumTokens, newTokens); + // collect deleted tokens + let deprecatedTokens = []; + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].CHECK_FOR_DELETED_TOKENS) { + deprecatedTokens = (0,_operations_checkForDeprecatedTokens__WEBPACK_IMPORTED_MODULE_18__["default"])(studioTokens, studioProblems, spectrumTokens, spectrumProblems, newTokens); + } + // collect value changes + const outdatedValues = (0,_operations_checkValueChanges__WEBPACK_IMPORTED_MODULE_16__["default"])(studioTokens, spectrumTokens); + // collect schema changes + const outdatedSchemas = (0,_operations_checkSchemaChanges__WEBPACK_IMPORTED_MODULE_31__["default"])(studioTokens, spectrumTokens); + // report studio change summaries + if (addedUUIDs.length || Object.keys(tokenMetadataNameChanges).length) { + if (!_config__WEBPACK_IMPORTED_MODULE_1__["default"].AUTOMATION) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('\nSTUDIO SYNC SUMMARY'); + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('\n
STUDIO SYNC SUMMARY

\n\n```'); + } + for (const addedUUID of addedUUIDs) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('UPDATED METADATA - SPECTRUM UUID: ' + addedUUID); + } + for (const tokenName of Object.keys(tokenMetadataNameChanges)) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('UPDATED METADATA - SPECTRUM NAME: ' + tokenName + ' => ' + tokenMetadataNameChanges[tokenName]); + } + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].AUTOMATION) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('```\n

'); + } + } + // report spectrum change summaries + if (newTokens.length || Object.keys(renamedTokens).length || deprecatedTokens.length || Object.keys(outdatedValues).length || Object.keys(outdatedSchemas).length) { + if (!_config__WEBPACK_IMPORTED_MODULE_1__["default"].AUTOMATION) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('\nSPECTRUM SYNC SUMMARY'); + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('\n
SPECTRUM SYNC SUMMARY

\n\n```'); + } + if (newTokens.length) { + (0,_reports_reportNewTokens__WEBPACK_IMPORTED_MODULE_12__["default"])(newTokens, spectrumTokens); + } + if (Object.keys(renamedTokens).length) { + (0,_reports_reportNameChanges__WEBPACK_IMPORTED_MODULE_10__["default"])(renamedTokens); + } + if (deprecatedTokens.length) { + (0,_reports_reportDeletedTokens__WEBPACK_IMPORTED_MODULE_19__["default"])(deprecatedTokens); + } + if (Object.keys(outdatedValues).length) { + (0,_reports_reportValueChanges__WEBPACK_IMPORTED_MODULE_9__["default"])(studioTokens, spectrumTokens, outdatedValues); + } + if (Object.keys(outdatedSchemas).length) { + (0,_reports_reportSchemaChanges__WEBPACK_IMPORTED_MODULE_32__["default"])(studioTokens, spectrumTokens, outdatedSchemas); + } + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].AUTOMATION) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('```\n

'); + } + } + // store studio token changes + (0,_operations_writeStudioTokens__WEBPACK_IMPORTED_MODULE_29__["default"])(studioTokens); + // output deprecated tokens object + if (deprecatedTokens.length) { + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_DEPRECATED) { + fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_DEPRECATED), JSON.stringify(deprecatedTokens, null, 2), { encoding: 'utf8', flag: 'w' }); + } + } + else if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_DEPRECATED) { + if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_DEPRECATED))) { + fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_DEPRECATED)); + } + } + // output renamed tokens object + if (Object.keys(renamedTokens).length) { + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_RENAMED) { + fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_RENAMED), JSON.stringify(renamedTokens, null, 2), { encoding: 'utf8', flag: 'w' }); + } + } + else if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_RENAMED) { + if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_RENAMED))) { + fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_RENAMED)); + } + } + // collect & output new tokens data object + let newTokenData = {}; + if (newTokens.length) { + newTokenData = (0,_operations_formatNewSpectrumTokens__WEBPACK_IMPORTED_MODULE_13__["default"])(newTokens, studioTokens); + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_NEW) { + fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_NEW), JSON.stringify(newTokenData, null, 2), { encoding: 'utf8', flag: 'w' }); + } + } + else if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_NEW) { + if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_NEW))) { + fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_NEW)); + } + } + // collect & output changed token data object + let changedTokenData = {}; + if (Object.keys(outdatedValues).length || Object.keys(outdatedSchemas).length) { + changedTokenData = (0,_operations_formatChangedSpectrumTokens__WEBPACK_IMPORTED_MODULE_14__["default"])(outdatedValues, outdatedSchemas, studioTokens, studioProblems, spectrumTokens, spectrumProblems); + if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_CHANGED) { + fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_CHANGED), JSON.stringify(changedTokenData, null, 2), { encoding: 'utf8', flag: 'w' }); + } + } + else if (_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_CHANGED) { + if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_CHANGED))) { + fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].OUTPUT_LOGS + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_OUT_CHANGED)); + } + } + // RENAME + // If a spectrum token was renamed, we will deprecate the original definition in spectrum-tokens + // and forward the value of that definition to the new token definition via an alias. + // And alias reference to the old token will be changed to reference the new token definition. + (0,_operations_renameSpectrumTokens__WEBPACK_IMPORTED_MODULE_23__["default"])(TOKENS_SPECTRUM_SANITIZED, renamedTokens); + // ADD + // New token definitions will be added to spectrum-tokens. + // Also, tokens that were renamed will get their new token definition added here. + // Also, tokens whose sets were merged will have their definition replaced here. + // Also, Tokens whose value was split into sets will have their definition replaced here. + // (The rename data is used to target the location for new tokens created as part of a rename operation.) + (0,_operations_addSpectrumTokens__WEBPACK_IMPORTED_MODULE_25__["default"])(TOKENS_SPECTRUM_SANITIZED, studioTokens, studioProblems, spectrumTokens, spectrumProblems, newTokenData, renamedTokens); + // CHANGE + // This will update the value and/or schema of existing tokens. + // I think there is some likelihood of references both being changed as part of a rename and here, though. + (0,_operations_changeSpectrumTokens__WEBPACK_IMPORTED_MODULE_24__["default"])(spectrumTokens, changedTokenData); + // DEPRECATE + // There's a couple group of tokens here: ones that aren't found in tokens studio, + // and ones that have the buster symbol in their path name. Those will be marked + // as deprecated if they aren't already. + (0,_operations_deprecateSpectrumTokens__WEBPACK_IMPORTED_MODULE_22__["default"])(studioTokens, spectrumTokens, spectrumProblems, deprecatedTokens); + // SCHEMAS + // This is a check that runs through all the definitions in tokens studio and specifically + // looks to make sure the schema in spectrum-tokens for a set is correct. The value schemas + // will be checked above, but this just verifies the theme/scale set if needed. + (0,_operations_verifyBranchSchemas__WEBPACK_IMPORTED_MODULE_33__["default"])(studioTokens, spectrumTokens); + // all done! + if (!_config__WEBPACK_IMPORTED_MODULE_1__["default"].TESTING) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)(''); + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_39__.writeFiles)(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('\nSYNC COMPLETE'); + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.cout)('\nTEST COMPLETE'); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (syncToSpectrum); + + +/***/ }), + +/***/ "./src/syncToStudio.ts": +/*!*****************************!*\ + !*** ./src/syncToStudio.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ "./config.ts"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/constants.ts"); +/* harmony import */ var _operations_readSpectrumTokens__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./operations/readSpectrumTokens */ "./src/operations/readSpectrumTokens.ts"); +/* harmony import */ var _operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operations/readStudioTokens */ "./src/operations/readStudioTokens.ts"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts"); +/* harmony import */ var _reverse_checkTokens__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./reverse/checkTokens */ "./src/reverse/checkTokens.ts"); +/* harmony import */ var _reverse_checkUUID__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./reverse/checkUUID */ "./src/reverse/checkUUID.ts"); +/* harmony import */ var _reverse_checkValue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./reverse/checkValue */ "./src/reverse/checkValue.ts"); +/* harmony import */ var _reverse_handleAddedTokens__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reverse/handleAddedTokens */ "./src/reverse/handleAddedTokens.ts"); +/* harmony import */ var _operations_writeStudioTokens__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./operations/writeStudioTokens */ "./src/operations/writeStudioTokens.ts"); +/* harmony import */ var _core_fileCaching__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./core/fileCaching */ "./src/core/fileCaching.ts"); +/* harmony import */ var _core_tokenStuff__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./core/tokenStuff */ "./src/core/tokenStuff.ts"); +/************************************************************************* + * ADOBE CONFIDENTIAL + * ___________________ + * + * Copyright 2024 Adobe + * All Rights Reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Adobe and its suppliers, if any. The intellectual + * and technical concepts contained herein are proprietary to Adobe + * and its suppliers and are protected by all applicable intellectual + * property laws, including trade secret and copyright laws. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Adobe. + **************************************************************************/ + + + + + + + + + + + + + +function syncToStudio(TOKENS_SPECTRUM_SANITIZED, TOKENS_STUDIO_SANITIZED) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].AUTOMATION === false); // we should only run this locally + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_STUDIO === _config__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].FOUNDATION]); // ensure we're modifiying the foundation data + const SPECTRUM2_SANITIZED = {}; + for (const dataset in _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_STUDIO_DATA_SETS) { + SPECTRUM2_SANITIZED[dataset] = (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.sanitizePath)(_config__WEBPACK_IMPORTED_MODULE_1__["default"].SPECTRUM[_constants__WEBPACK_IMPORTED_MODULE_2__["default"].S2] + _config__WEBPACK_IMPORTED_MODULE_1__["default"].TOKENS_STUDIO_DATA_SETS[dataset] + (path__WEBPACK_IMPORTED_MODULE_0___default().sep)); + } + const { spectrumTokens, spectrumProblems } = (0,_operations_readSpectrumTokens__WEBPACK_IMPORTED_MODULE_3__["default"])(TOKENS_SPECTRUM_SANITIZED, _config__WEBPACK_IMPORTED_MODULE_1__["default"].SYSTEM); + const { studioTokens, studioProblems } = (0,_operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_4__.readStudioTokens)(TOKENS_STUDIO_SANITIZED); + const { studioTokens: studioTokensS2, studioProblems: studioProblemsS2 } = (0,_operations_readStudioTokens__WEBPACK_IMPORTED_MODULE_4__.readStudioTokens)(SPECTRUM2_SANITIZED); // we're going to leverage this for S2 token paths + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!Object.keys(studioProblems.collisions).length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!Object.keys(studioProblems.split).length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!studioProblems.merge.length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!studioProblems.uuids.length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!Object.keys(studioProblemsS2.collisions).length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!Object.keys(studioProblemsS2.split).length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!studioProblemsS2.merge.length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(!studioProblemsS2.uuids.length); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.assert)(Object.keys(studioTokensS2).length); + function checkUUIDCallback(studioToken, spectrumToken, set, token) { + return (0,_reverse_checkUUID__WEBPACK_IMPORTED_MODULE_7__["default"])(studioTokens, studioToken, spectrumToken, set, token); + } + function checkValueCallback(studioToken, spectrumToken, set, token) { + return (0,_reverse_checkValue__WEBPACK_IMPORTED_MODULE_8__["default"])(studioTokens, studioToken, spectrumToken, set, token); + } + const uuidUpdated = (0,_reverse_checkTokens__WEBPACK_IMPORTED_MODULE_6__["default"])(studioTokens, spectrumTokens, spectrumProblems, checkUUIDCallback); + const tokensAdded = (0,_reverse_handleAddedTokens__WEBPACK_IMPORTED_MODULE_9__["default"])(studioTokens, spectrumTokens, studioTokensS2, TOKENS_STUDIO_SANITIZED); + const valuesChanged = (0,_reverse_checkTokens__WEBPACK_IMPORTED_MODULE_6__["default"])(studioTokens, spectrumTokens, spectrumProblems, checkValueCallback); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('UUID Updated: ' + uuidUpdated); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('TOKENS Added: ' + tokensAdded); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('VALUES Changed: ' + valuesChanged); + // ??? fix all the file paths... + for (const uuid in studioTokens) { + studioTokens[uuid].files = studioTokens[uuid].files.map((f) => { + return f.replace('-non-colors', '').replace('-colors', ''); + }); + } + /////////////////////////////////////////////////////////// + for (const uuid in spectrumTokens) { + if (!studioTokens[uuid]) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('WARNING - FAILED TO MERGE TOKEN DEFINITION FOR: ' + spectrumTokens[uuid].name + ' ' + uuid + (spectrumTokens[uuid].sets.length ? ' (' + spectrumTokens[uuid].sets + ')' : '')); + } + } + for (const uuid in studioTokens) { + if (!spectrumTokens[uuid] && !spectrumProblems.deprecated[uuid]) { + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('ERROR - EXTRA TOKEN STUDIO DEFINITION NOT IN SPECTRUM-TOKENS: ' + studioTokens[uuid].path + ' => ' + (0,_core_tokenStuff__WEBPACK_IMPORTED_MODULE_12__.getTokenSpectrumName)(studioTokens[uuid]) + ' ' + uuid); + } + } + /////////////////////////////////////////////////////////// + // !!! RGB VALUES NEED TO BE HEX + if (!_config__WEBPACK_IMPORTED_MODULE_1__["default"].TESTING) { + (0,_operations_writeStudioTokens__WEBPACK_IMPORTED_MODULE_10__["default"])(studioTokens); + (0,_core_fileCaching__WEBPACK_IMPORTED_MODULE_11__.writeFiles)(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('SYNC COMPLETE'); + } + else { + (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.cout)('TEST COMPLETE'); + } +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (syncToStudio); + + +/***/ }), + +/***/ "crypto": +/*!*************************!*\ + !*** external "crypto" ***! + \*************************/ +/***/ ((module) => { + +module.exports = require("crypto"); + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +module.exports = require("fs"); + +/***/ }), + +/***/ "node:os": +/*!**************************!*\ + !*** external "node:os" ***! + \**************************/ +/***/ ((module) => { + +module.exports = require("node:os"); + +/***/ }), + +/***/ "node:process": +/*!*******************************!*\ + !*** external "node:process" ***! + \*******************************/ +/***/ ((module) => { + +module.exports = require("node:process"); + +/***/ }), + +/***/ "node:tty": +/*!***************************!*\ + !*** external "node:tty" ***! + \***************************/ +/***/ ((module) => { + +module.exports = require("node:tty"); + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +module.exports = require("path"); + +/***/ }), + +/***/ "./node_modules/chalk/source/index.js": +/*!********************************************!*\ + !*** ./node_modules/chalk/source/index.js ***! + \********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Chalk: () => (/* binding */ Chalk), +/* harmony export */ backgroundColorNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.backgroundColorNames), +/* harmony export */ backgroundColors: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.backgroundColorNames), +/* harmony export */ chalkStderr: () => (/* binding */ chalkStderr), +/* harmony export */ colorNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.colorNames), +/* harmony export */ colors: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.colorNames), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ foregroundColorNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.foregroundColorNames), +/* harmony export */ foregroundColors: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.foregroundColorNames), +/* harmony export */ modifierNames: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.modifierNames), +/* harmony export */ modifiers: () => (/* reexport safe */ _ansi_styles__WEBPACK_IMPORTED_MODULE_1__.modifierNames), +/* harmony export */ supportsColor: () => (/* binding */ stdoutColor), +/* harmony export */ supportsColorStderr: () => (/* binding */ stderrColor) +/* harmony export */ }); +/* harmony import */ var _ansi_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vendor/ansi-styles/index.js */ "./node_modules/chalk/source/vendor/ansi-styles/index.js"); +/* harmony import */ var _supports_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! #supports-color */ "./node_modules/chalk/source/vendor/supports-color/index.js"); +/* harmony import */ var _utilities_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities.js */ "./node_modules/chalk/source/utilities.js"); + + + + +const {stdout: stdoutColor, stderr: stderrColor} = _supports_color__WEBPACK_IMPORTED_MODULE_0__["default"]; + +const GENERATOR = Symbol('GENERATOR'); +const STYLER = Symbol('STYLER'); +const IS_EMPTY = Symbol('IS_EMPTY'); + +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = [ + 'ansi', + 'ansi', + 'ansi256', + 'ansi16m', +]; + +const styles = Object.create(null); + +const applyOptions = (object, options = {}) => { + if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) { + throw new Error('The `level` option should be an integer from 0 to 3'); + } + + // Detect level if not set manually + const colorLevel = stdoutColor ? stdoutColor.level : 0; + object.level = options.level === undefined ? colorLevel : options.level; +}; + +class Chalk { + constructor(options) { + // eslint-disable-next-line no-constructor-return + return chalkFactory(options); + } +} + +const chalkFactory = options => { + const chalk = (...strings) => strings.join(' '); + applyOptions(chalk, options); + + Object.setPrototypeOf(chalk, createChalk.prototype); + + return chalk; +}; + +function createChalk(options) { + return chalkFactory(options); +} + +Object.setPrototypeOf(createChalk.prototype, Function.prototype); + +for (const [styleName, style] of Object.entries(_ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"])) { + styles[styleName] = { + get() { + const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]); + Object.defineProperty(this, styleName, {value: builder}); + return builder; + }, + }; +} + +styles.visible = { + get() { + const builder = createBuilder(this, this[STYLER], true); + Object.defineProperty(this, 'visible', {value: builder}); + return builder; + }, +}; + +const getModelAnsi = (model, level, type, ...arguments_) => { + if (model === 'rgb') { + if (level === 'ansi16m') { + return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type].ansi16m(...arguments_); + } + + if (level === 'ansi256') { + return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type].ansi256(_ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].rgbToAnsi256(...arguments_)); + } + + return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type].ansi(_ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].rgbToAnsi(...arguments_)); + } + + if (model === 'hex') { + return getModelAnsi('rgb', level, type, ..._ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].hexToRgb(...arguments_)); + } + + return _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"][type][model](...arguments_); +}; + +const usedModels = ['rgb', 'hex', 'ansi256']; + +for (const model of usedModels) { + styles[model] = { + get() { + const {level} = this; + return function (...arguments_) { + const styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].color.close, this[STYLER]); + return createBuilder(this, styler, this[IS_EMPTY]); + }; + }, + }; + + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const {level} = this; + return function (...arguments_) { + const styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), _ansi_styles__WEBPACK_IMPORTED_MODULE_1__["default"].bgColor.close, this[STYLER]); + return createBuilder(this, styler, this[IS_EMPTY]); + }; + }, + }; +} + +const proto = Object.defineProperties(() => {}, { + ...styles, + level: { + enumerable: true, + get() { + return this[GENERATOR].level; + }, + set(level) { + this[GENERATOR].level = level; + }, + }, +}); + +const createStyler = (open, close, parent) => { + let openAll; + let closeAll; + if (parent === undefined) { + openAll = open; + closeAll = close; + } else { + openAll = parent.openAll + open; + closeAll = close + parent.closeAll; + } + + return { + open, + close, + openAll, + closeAll, + parent, + }; +}; + +const createBuilder = (self, _styler, _isEmpty) => { + // Single argument is hot path, implicit coercion is faster than anything + // eslint-disable-next-line no-implicit-coercion + const builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' ')); + + // We alter the prototype because we must return a function, but there is + // no way to create a function with a different prototype + Object.setPrototypeOf(builder, proto); + + builder[GENERATOR] = self; + builder[STYLER] = _styler; + builder[IS_EMPTY] = _isEmpty; + + return builder; +}; + +const applyStyle = (self, string) => { + if (self.level <= 0 || !string) { + return self[IS_EMPTY] ? '' : string; + } + + let styler = self[STYLER]; + + if (styler === undefined) { + return string; + } + + const {openAll, closeAll} = styler; + if (string.includes('\u001B')) { + while (styler !== undefined) { + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + string = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_2__.stringReplaceAll)(string, styler.close, styler.open); + + styler = styler.parent; + } + } + + // We can move both next actions out of loop, because remaining actions in loop won't have + // any/visible effect on parts we add here. Close the styling before a linebreak and reopen + // after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92 + const lfIndex = string.indexOf('\n'); + if (lfIndex !== -1) { + string = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_2__.stringEncaseCRLFWithFirstIndex)(string, closeAll, openAll, lfIndex); + } + + return openAll + string + closeAll; +}; + +Object.defineProperties(createChalk.prototype, styles); + +const chalk = createChalk(); +const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0}); + + + + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (chalk); + + +/***/ }), + +/***/ "./node_modules/chalk/source/utilities.js": +/*!************************************************!*\ + !*** ./node_modules/chalk/source/utilities.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ stringEncaseCRLFWithFirstIndex: () => (/* binding */ stringEncaseCRLFWithFirstIndex), +/* harmony export */ stringReplaceAll: () => (/* binding */ stringReplaceAll) +/* harmony export */ }); +// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`. +function stringReplaceAll(string, substring, replacer) { + let index = string.indexOf(substring); + if (index === -1) { + return string; + } + + const substringLength = substring.length; + let endIndex = 0; + let returnValue = ''; + do { + returnValue += string.slice(endIndex, index) + substring + replacer; + endIndex = index + substringLength; + index = string.indexOf(substring, endIndex); + } while (index !== -1); + + returnValue += string.slice(endIndex); + return returnValue; +} + +function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) { + let endIndex = 0; + let returnValue = ''; + do { + const gotCR = string[index - 1] === '\r'; + returnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\r\n' : '\n') + postfix; + endIndex = index + 1; + index = string.indexOf('\n', endIndex); + } while (index !== -1); + + returnValue += string.slice(endIndex); + return returnValue; +} + + +/***/ }), + +/***/ "./node_modules/chalk/source/vendor/ansi-styles/index.js": +/*!***************************************************************!*\ + !*** ./node_modules/chalk/source/vendor/ansi-styles/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ backgroundColorNames: () => (/* binding */ backgroundColorNames), +/* harmony export */ colorNames: () => (/* binding */ colorNames), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ foregroundColorNames: () => (/* binding */ foregroundColorNames), +/* harmony export */ modifierNames: () => (/* binding */ modifierNames) +/* harmony export */ }); +const ANSI_BACKGROUND_OFFSET = 10; + +const wrapAnsi16 = (offset = 0) => code => `\u001B[${code + offset}m`; + +const wrapAnsi256 = (offset = 0) => code => `\u001B[${38 + offset};5;${code}m`; + +const wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`; + +const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + overline: [53, 55], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29], + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + + // Bright color + blackBright: [90, 39], + gray: [90, 39], // Alias of `blackBright` + grey: [90, 39], // Alias of `blackBright` + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39], + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgGray: [100, 49], // Alias of `bgBlackBright` + bgGrey: [100, 49], // Alias of `bgBlackBright` + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49], + }, +}; + +const modifierNames = Object.keys(styles.modifier); +const foregroundColorNames = Object.keys(styles.color); +const backgroundColorNames = Object.keys(styles.bgColor); +const colorNames = [...foregroundColorNames, ...backgroundColorNames]; + +function assembleStyles() { + const codes = new Map(); + + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m`, + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false, + }); + } + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false, + }); + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = wrapAnsi16(); + styles.color.ansi256 = wrapAnsi256(); + styles.color.ansi16m = wrapAnsi16m(); + styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET); + styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET); + styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET); + + // From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js + Object.defineProperties(styles, { + rgbToAnsi256: { + value(red, green, blue) { + // We use the extended greyscale palette here, with the exception of + // black and white. normal palette only has 4 greyscale shades. + if (red === green && green === blue) { + if (red < 8) { + return 16; + } + + if (red > 248) { + return 231; + } + + return Math.round(((red - 8) / 247) * 24) + 232; + } + + return 16 + + (36 * Math.round(red / 255 * 5)) + + (6 * Math.round(green / 255 * 5)) + + Math.round(blue / 255 * 5); + }, + enumerable: false, + }, + hexToRgb: { + value(hex) { + const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16)); + if (!matches) { + return [0, 0, 0]; + } + + let [colorString] = matches; + + if (colorString.length === 3) { + colorString = [...colorString].map(character => character + character).join(''); + } + + const integer = Number.parseInt(colorString, 16); + + return [ + /* eslint-disable no-bitwise */ + (integer >> 16) & 0xFF, + (integer >> 8) & 0xFF, + integer & 0xFF, + /* eslint-enable no-bitwise */ + ]; + }, + enumerable: false, + }, + hexToAnsi256: { + value: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)), + enumerable: false, + }, + ansi256ToAnsi: { + value(code) { + if (code < 8) { + return 30 + code; + } + + if (code < 16) { + return 90 + (code - 8); + } + + let red; + let green; + let blue; + + if (code >= 232) { + red = (((code - 232) * 10) + 8) / 255; + green = red; + blue = red; + } else { + code -= 16; + + const remainder = code % 36; + + red = Math.floor(code / 36) / 5; + green = Math.floor(remainder / 6) / 5; + blue = (remainder % 6) / 5; + } + + const value = Math.max(red, green, blue) * 2; + + if (value === 0) { + return 30; + } + + // eslint-disable-next-line no-bitwise + let result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red)); + + if (value === 2) { + result += 60; + } + + return result; + }, + enumerable: false, + }, + rgbToAnsi: { + value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)), + enumerable: false, + }, + hexToAnsi: { + value: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)), + enumerable: false, + }, + }); + + return styles; +} + +const ansiStyles = assembleStyles(); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ansiStyles); + + +/***/ }), + +/***/ "./node_modules/chalk/source/vendor/supports-color/index.js": +/*!******************************************************************!*\ + !*** ./node_modules/chalk/source/vendor/supports-color/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createSupportsColor: () => (/* binding */ createSupportsColor), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:process */ "node:process"); +/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:os */ "node:os"); +/* harmony import */ var node_tty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:tty */ "node:tty"); + + + + +// From: https://github.com/sindresorhus/has-flag/blob/main/index.js +/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) { +function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : node_process__WEBPACK_IMPORTED_MODULE_0__.argv) { + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf('--'); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +} + +const {env} = node_process__WEBPACK_IMPORTED_MODULE_0__; + +let flagForceColor; +if ( + hasFlag('no-color') + || hasFlag('no-colors') + || hasFlag('color=false') + || hasFlag('color=never') +) { + flagForceColor = 0; +} else if ( + hasFlag('color') + || hasFlag('colors') + || hasFlag('color=true') + || hasFlag('color=always') +) { + flagForceColor = 1; +} + +function envForceColor() { + if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + return 1; + } + + if (env.FORCE_COLOR === 'false') { + return 0; + } + + return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + } +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3, + }; +} + +function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { + const noFlagForceColor = envForceColor(); + if (noFlagForceColor !== undefined) { + flagForceColor = noFlagForceColor; + } + + const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; + + if (forceColor === 0) { + return 0; + } + + if (sniffFlags) { + if (hasFlag('color=16m') + || hasFlag('color=full') + || hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + } + + // Check for Azure DevOps pipelines. + // Has to be above the `!streamIsTTY` check. + if ('TF_BUILD' in env && 'AGENT_NAME' in env) { + return 1; + } + + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; + } + + const min = forceColor || 0; + + if (env.TERM === 'dumb') { + return min; + } + + if (node_process__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = node_os__WEBPACK_IMPORTED_MODULE_1__.release().split('.'); + if ( + Number(osRelease[0]) >= 10 + && Number(osRelease[2]) >= 10_586 + ) { + return Number(osRelease[2]) >= 14_931 ? 3 : 2; + } + + return 1; + } + + if ('CI' in env) { + if ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) { + return 3; + } + + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } + + return min; + } + + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if (env.TERM === 'xterm-kitty') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': { + return version >= 3 ? 3 : 2; + } + + case 'Apple_Terminal': { + return 2; + } + // No default + } + } + + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + + if ('COLORTERM' in env) { + return 1; + } + + return min; +} + +function createSupportsColor(stream, options = {}) { + const level = _supportsColor(stream, { + streamIsTTY: stream && stream.isTTY, + ...options, + }); + + return translateLevel(level); +} + +const supportsColor = { + stdout: createSupportsColor({isTTY: node_tty__WEBPACK_IMPORTED_MODULE_2__.isatty(1)}), + stderr: createSupportsColor({isTTY: node_tty__WEBPACK_IMPORTED_MODULE_2__.isatty(2)}), +}; + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (supportsColor); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/async module */ +/******/ (() => { +/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__"; +/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; +/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__"; +/******/ var resolveQueue = (queue) => { +/******/ if(queue && queue.d < 1) { +/******/ queue.d = 1; +/******/ queue.forEach((fn) => (fn.r--)); +/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); +/******/ } +/******/ } +/******/ var wrapDeps = (deps) => (deps.map((dep) => { +/******/ if(dep !== null && typeof dep === "object") { +/******/ if(dep[webpackQueues]) return dep; +/******/ if(dep.then) { +/******/ var queue = []; +/******/ queue.d = 0; +/******/ dep.then((r) => { +/******/ obj[webpackExports] = r; +/******/ resolveQueue(queue); +/******/ }, (e) => { +/******/ obj[webpackError] = e; +/******/ resolveQueue(queue); +/******/ }); +/******/ var obj = {}; +/******/ obj[webpackQueues] = (fn) => (fn(queue)); +/******/ return obj; +/******/ } +/******/ } +/******/ var ret = {}; +/******/ ret[webpackQueues] = x => {}; +/******/ ret[webpackExports] = dep; +/******/ return ret; +/******/ })); +/******/ __webpack_require__.a = (module, body, hasAwait) => { +/******/ var queue; +/******/ hasAwait && ((queue = []).d = -1); +/******/ var depQueues = new Set(); +/******/ var exports = module.exports; +/******/ var currentDeps; +/******/ var outerResolve; +/******/ var reject; +/******/ var promise = new Promise((resolve, rej) => { +/******/ reject = rej; +/******/ outerResolve = resolve; +/******/ }); +/******/ promise[webpackExports] = exports; +/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {})); +/******/ module.exports = promise; +/******/ body((deps) => { +/******/ currentDeps = wrapDeps(deps); +/******/ var fn; +/******/ var getResult = () => (currentDeps.map((d) => { +/******/ if(d[webpackError]) throw d[webpackError]; +/******/ return d[webpackExports]; +/******/ })) +/******/ var promise = new Promise((resolve) => { +/******/ fn = () => (resolve(getResult)); +/******/ fn.r = 0; +/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))); +/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue))); +/******/ }); +/******/ return fn.r ? promise : getResult(); +/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))); +/******/ queue && queue.d < 0 && (queue.d = 0); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module used 'module' so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/sync.ts"); +/******/ +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7O1VFTkE7VUFDQTtVQUNBO1VBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9jb25maWcudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvY29yZS9maWxlQ2FjaGluZy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvY29yZS9maW5kQnJhbmNoQnlVVUlELnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9jb3JlL2dldEJyYW5jaFVVSUQudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL2NvcmUvZ2V0RXF1aXZhbGVudFNwZWN0cnVtUmVmZXJlbmNlcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvY29yZS9nZXRFcXVpdmFsZW50U3BlY3RydW1WYWx1ZS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvY29yZS9nZXRTcGVjdHJ1bVZhbHVlLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9jb3JlL2hlbHBlcnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL2NvcmUvcHJpbnRhYmxlU2V0TmFtZS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvY29yZS9zY2hlbWFTdHVmZi50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvY29yZS90b2tlblN0dWZmLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9oZWxwZXJzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2FkZFNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2FkZFVVSURzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2NoYW5nZVNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2NoZWNrRm9yRGVwcmVjYXRlZFRva2Vucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvb3BlcmF0aW9ucy9jaGVja0ZvclJlY3ljbGVkVVVJRHMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvY2hlY2tNb2Rlcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvb3BlcmF0aW9ucy9jaGVja05hbWVDaGFuZ2VzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2NoZWNrU2NoZW1hQ2hhbmdlcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvb3BlcmF0aW9ucy9jaGVja1NldHMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvY2hlY2tWYWx1ZUNoYW5nZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvZGVwcmVjYXRlU3BlY3RydW1Ub2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvZm9ybWF0Q2hhbmdlZFNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2Zvcm1hdE5ld1NwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2dldE1vZGlmaWVkVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL2dldFVuaXF1ZUlkLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL3Byb2Nlc3NTdHVkaW9Ub2tlbkRhdGEudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvcmVhZFNwZWN0cnVtVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL3JlYWRTdHVkaW9Ub2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvcmVuYW1lU3BlY3RydW1Ub2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL29wZXJhdGlvbnMvcmVzb2x2ZU1lcmdlVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL3Jlc29sdmVTcGxpdFRva2Vucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvb3BlcmF0aW9ucy91cGRhdGVUb2tlbk5hbWVNZXRhZGF0YS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvb3BlcmF0aW9ucy92ZXJpZnlCcmFuY2hTY2hlbWFzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9vcGVyYXRpb25zL3dyaXRlU3R1ZGlvVG9rZW5zLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9yZXBvcnRzL3JlcG9ydERlbGV0ZWRUb2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JlcG9ydHMvcmVwb3J0RGVwcmVjYXRlZFRva2VuVXNhZ2UudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JlcG9ydHMvcmVwb3J0TWlzc2luZ1NwZWN0cnVtU2V0cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmVwb3J0cy9yZXBvcnRNaXNzaW5nU3BlY3RydW1VVUlEcy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmVwb3J0cy9yZXBvcnRNaXNzaW5nU3R1ZGlvTW9kZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JlcG9ydHMvcmVwb3J0TWlzc2luZ1N0dWRpb1Rva2VuTmFtZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JlcG9ydHMvcmVwb3J0TWlzc2luZ1N0dWRpb1VVSURzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9yZXBvcnRzL3JlcG9ydE5hbWVDaGFuZ2VzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9yZXBvcnRzL3JlcG9ydE5ld1Rva2Vucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmVwb3J0cy9yZXBvcnRTY2hlbWFDaGFuZ2VzLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9yZXBvcnRzL3JlcG9ydFNldENvbmZsaWN0cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmVwb3J0cy9yZXBvcnRUb2tlbkNvdW50cy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmVwb3J0cy9yZXBvcnRVVUlEQ29sbGlzaW9ucy50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmVwb3J0cy9yZXBvcnRWYWx1ZUNoYW5nZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JldmVyc2UvY2hlY2tUb2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JldmVyc2UvY2hlY2tVVUlELnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9yZXZlcnNlL2NoZWNrVmFsdWUudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JldmVyc2UvY29weVN0dWRpb1Rva2VuLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9yZXZlcnNlL2dldERlc3RpbmF0aW9uRmlsZS50cyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9zcmMvcmV2ZXJzZS9nZXRTcGVjdHJ1bUVudHJpZXMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JldmVyc2UvZ2V0U3R1ZGlvVmFsdWUudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JldmVyc2UvaGFuZGxlQWRkZWRUb2tlbnMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3JldmVyc2Uvc29ydFRva2VuR3JvdXAudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3N5bmMudHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vc3JjL3N5bmNUb1NwZWN0cnVtLnRzIiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy8uL3NyYy9zeW5jVG9TdHVkaW8udHMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJjcnlwdG9cIiIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImZzXCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJub2RlOm9zXCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJub2RlOnByb2Nlc3NcIiIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcIm5vZGU6dHR5XCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jLy4vbm9kZV9tb2R1bGVzL2NoYWxrL3NvdXJjZS9pbmRleC5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3V0aWxpdGllcy5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3ZlbmRvci9hbnNpLXN0eWxlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3ZlbmRvci9zdXBwb3J0cy1jb2xvci9pbmRleC5qcyIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL3dlYnBhY2svcnVudGltZS9hc3luYyBtb2R1bGUiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3Rva2Vucy1zdHVkaW8tc3luYy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL3dlYnBhY2svYmVmb3JlLXN0YXJ0dXAiLCJ3ZWJwYWNrOi8vdG9rZW5zLXN0dWRpby1zeW5jL3dlYnBhY2svc3RhcnR1cCIsIndlYnBhY2s6Ly90b2tlbnMtc3R1ZGlvLXN5bmMvd2VicGFjay9hZnRlci1zdGFydHVwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/.github/workflows/test-foundations.yml b/.github/workflows/test-foundations.yml new file mode 100644 index 00000000..59a08171 --- /dev/null +++ b/.github/workflows/test-foundations.yml @@ -0,0 +1,23 @@ +name: TEST FOUNDATIONS + +on: + workflow_dispatch: + pull_request: + types: [opened, reopened, synchronize] + branches: + - main # only run on PRs targetting main + paths: + - 'src/tokens-studio/foundations/**' # only run when files in these paths change + +jobs: + check_should_run: + uses: ./.github/workflows/_diff-should-run.yml + secrets: inherit + diff_test: + needs: [check_should_run] + if: ${{ needs.check_should_run.outputs.condition == 'true' }} + uses: ./.github/workflows/_diff-trigger-test.yml + with: + source: foundations # the tokens-studio data we want to compare (folder prefix in the repo) + branch: snapshot-s2-foundations # the spectrum-tokens data we want to compare (branch of the repo) + secrets: inherit \ No newline at end of file diff --git a/src/tokens-studio/foundations/spectrum/alias/dark.json b/src/tokens-studio/foundations/spectrum/alias/dark.json index 865d8bb3..b6b6b007 100644 --- a/src/tokens-studio/foundations/spectrum/alias/dark.json +++ b/src/tokens-studio/foundations/spectrum/alias/dark.json @@ -1,15 +1,5 @@ { "Alias": { - "drop-shadow": { - "value": "rgba(0, 0, 0, 0.5)", - "type": "color", - "$extensions": { - "spectrum-tokens": { - "uuid": "4633ae77-5101-4c62-8253-6406df2613f1", - "name": "drop-shadow-color" - } - } - }, "overlay": { "value": "{Palette.black}", "type": "color", @@ -20,6 +10,58 @@ } } }, + "drop-shadow": { + "100": { + "value": "rgba(0, 0, 0, 0.36)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-color-100", + "uuid": "8d7e0eb7-c3c7-485e-896c-d5d5107e3b8f" + } + } + }, + "200": { + "value": "rgba(0, 0, 0, 0.48)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-color-200", + "uuid": "c88f7b8e-e5f5-4d0e-a8dd-025f8d274948" + } + } + }, + "emphasized-default": { + "value": "{Alias.drop-shadow.100}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-emphasized-default-color", + "uuid": "af4e0a7a-7c6a-4cf2-a17b-0b07ef365869" + } + } + }, + "emphasized-hover": { + "value": "{Alias.drop-shadow.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-emphasized-hover-color", + "uuid": "4c84adb3-9edf-4a5d-b39a-5f31a0d3529c" + } + } + }, + "elevated": { + "value": "{Alias.drop-shadow.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-elevated-color", + "uuid": "e475981f-97af-479c-859b-7619dd87c448" + } + } + } + }, "content": { "neutral": { "default": { @@ -105,7 +147,7 @@ } }, "down": { - "value": "{Palette.gray.900}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -158,7 +200,7 @@ } }, "down": { - "value": "{Alias.semantic.accent.1100}", + "value": "{Alias.semantic.accent.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -210,7 +252,7 @@ } }, "down": { - "value": "{Alias.semantic.negative.1100}", + "value": "{Alias.semantic.negative.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -238,7 +280,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a595a519-0df5-463e-8ec6-f71dd9cefbee", + "uuid": "8ccd197f-fc8e-4d31-866c-2b96049eea89", "name": "accent-visual-color" } } @@ -248,7 +290,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "97225780-35eb-4cc8-abc0-fcca31985063", + "uuid": "fd64c9ca-6ad7-415c-b0b8-2579399e33a5", "name": "informative-visual-color" } } @@ -258,7 +300,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "931b7722-20ef-4c45-8855-4cb4e82e936c", + "uuid": "35ef6675-7e66-4ef5-8c8d-e8e70939b224", "name": "neutral-visual-color" } } @@ -268,7 +310,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8cd5afec-80b0-449f-860d-08d6e111af84", + "uuid": "25e8289f-6c82-4485-8920-a187f790cd47", "name": "positive-visual-color" } } @@ -278,7 +320,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "560ad974-d101-44a2-90c7-8c5b5a3ce273", + "uuid": "2759c912-6385-40e4-9ed9-ff2e11815b4d", "name": "notice-visual-color" } } @@ -288,7 +330,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2f57b877-57ac-4bed-be53-07f4f6353ce2", + "uuid": "70cb0316-5b7a-416c-bf93-7d8885c4fce6", "name": "negative-visual-color" } } @@ -300,7 +342,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "cffe0ccb-5c67-4435-a9b2-b6fb7072417a", + "uuid": "0f7a39c2-3ee7-4ff0-873f-334c81054b77", "name": "gray-visual-color" } } @@ -310,7 +352,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b876d683-a479-41cb-a370-5bdb75f48e9c", + "uuid": "63fe16ed-70fa-4eaf-918c-f642ff69ce05", "name": "blue-visual-color" } } @@ -320,7 +362,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7418e20d-c751-49ca-8cd2-f0b7fb00831e", + "uuid": "1219770d-543d-4216-9e87-c158f8a74df6", "name": "green-visual-color" } } @@ -330,7 +372,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "55248d8a-e628-46e2-8882-099162eb18b1", + "uuid": "e7bf9977-2edf-48bc-8099-ad95e57b55b1", "name": "orange-visual-color" } } @@ -340,7 +382,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "1676050d-200e-46d7-9a8f-2e74f0be5cfe", + "uuid": "870f90ab-7f3e-41b6-9c11-59e9c4ff82c6", "name": "red-visual-color" } } @@ -350,17 +392,37 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e2239975-bc80-4d08-90fb-e95fe61a1d35", + "uuid": "37c1311b-29ed-44ab-b656-a7538726ad77", "name": "celery-visual-color" } } }, + "brown": { + "value": "{Palette.brown.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-visual-color", + "uuid": "a25ac05c-c108-4caf-a77e-79b4fd36ee91" + } + } + }, + "cinnamon": { + "value": "{Palette.cinnamon.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-visual-color", + "uuid": "24026c61-470e-41b9-a247-58605b54706d" + } + } + }, "chartreuse": { "value": "{Palette.chartreuse.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d7a17594-69fb-433d-b3cd-e63547ec5940", + "uuid": "a46d8e05-4f56-4b46-a279-0164abfa42e8", "name": "chartreuse-visual-color" } } @@ -370,7 +432,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b4c9bf18-a3d0-423b-85a1-d1de8390b7e9", + "uuid": "091a2073-baa0-4cc6-b943-9dddc285ad62", "name": "cyan-visual-color" } } @@ -380,7 +442,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a336ee97-c030-42e6-ba5f-5ac6585ddeab", + "uuid": "38e60263-cb08-4090-a653-5acbd1664ae0", "name": "fuchsia-visual-color" } } @@ -390,7 +452,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "0f645ef3-051f-4e88-bbd4-3724fa3d93b2", + "uuid": "584ccbd4-3243-4041-b665-e2342d2b26e8", "name": "indigo-visual-color" } } @@ -400,17 +462,27 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2b4d2516-870c-4cb4-88a6-dce1d920ad4c", + "uuid": "178e4bc6-6986-4e77-aab0-78dbe66f8e6f", "name": "magenta-visual-color" } } }, + "pink": { + "value": "{Palette.pink.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-visual-color", + "uuid": "496cef67-3a25-4d99-8545-e8aa9a7f0adc" + } + } + }, "purple": { "value": "{Palette.purple.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e108a5d7-dd3b-4238-ba9b-8c600e1614d0", + "uuid": "0ee2957b-c401-4106-8ff3-9de9fa544a03", "name": "purple-visual-color" } } @@ -420,17 +492,37 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "45a2c99b-29f5-468d-956e-e3c0a78fcfd6", + "uuid": "736e4768-7944-40ec-a412-4cd36299e03d", "name": "seafoam-visual-color" } } }, + "silver": { + "value": "{Palette.silver.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-visual-color", + "uuid": "f7d55707-b9db-4711-b93f-dcc03932516c" + } + } + }, + "turquoise": { + "value": "{Palette.turquoise.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-visual-color", + "uuid": "04c6819d-5049-4e18-bb83-95239fa3d8c2" + } + } + }, "yellow": { "value": "{Palette.yellow.1100}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "231e80f5-8dfe-49b7-9cb5-db35bb93f3aa", + "uuid": "4a2ebbb5-b8b7-43a0-9d64-4974bb382a8b", "name": "yellow-visual-color" } } @@ -448,6 +540,16 @@ } } }, + "title": { + "value": "{Palette.gray.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "title-color", + "uuid": "a7e9c20c-ab9b-46de-bf6a-c8fec9a8986b" + } + } + }, "body": { "value": "{Palette.gray.800}", "type": "color", @@ -491,7 +593,7 @@ } }, "static-black": { - "value": "{Palette.transparent-black.500}", + "value": "{Palette.transparent-black.400}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -501,7 +603,7 @@ } }, "static-white": { - "value": "{Palette.transparent-white.500}", + "value": "{Palette.transparent-white.400}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -514,74 +616,94 @@ }, "background": { "app-frame": { - "base": { - "value": "{Palette.gray.50}", + "elevated": { + "value": "{Palette.gray.75}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "46060531-9372-41a7-8db3-d3c100338e6d", - "name": "background-base-color" + "name": "background-elevated-color", + "uuid": "4c19885d-0411-43dc-8f4a-db81905728e6" } } }, - "layer-1": { + "layer-2": { "value": "{Palette.gray.75}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fc1758f3-22bd-4dc0-9ef3-91fa0f454036", + "uuid": "e30b7936-6ae7-4ada-8892-94a1f67d55c9", + "name": "background-layer-2-color" + } + } + }, + "layer-1": { + "value": "{Palette.gray.50}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "7e6678b7-2903-434b-8ee2-06c83815b01d", "name": "background-layer-1-color" } } }, - "layer-2": { - "value": "{Palette.gray.100}", + "pasteboard": { + "value": "{Palette.gray.25}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "dd462fc7-bd79-4b52-9411-adf317832989", - "name": "background-layer-2-color" + "name": "background-pasteboard-color", + "uuid": "6a7c5092-c262-49b0-b5ec-5b8b4fa66d1e" + } + } + }, + "base": { + "value": "{Palette.gray.25}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "e0d8739d-18dd-44bc-92ea-e443882a780b", + "name": "background-base-color" } } } }, "neutral": { "default": { - "value": "{Palette.gray.400}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4f58764f-deb1-4863-89ce-663868fe73e6", + "uuid": "95cf1481-f476-47ce-a45a-54da64b44255", "name": "neutral-background-color-default" } } }, "hover": { - "value": "{Palette.gray.300}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7ea82825-f138-44e5-9c75-29c444086d6a", + "uuid": "142f9467-e519-4ed7-bd98-69a31e876e70", "name": "neutral-background-color-hover" } } }, "down": { - "value": "{Palette.gray.200}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "20e71891-57dc-4dc7-9f30-330d3753e8dd", + "uuid": "5a0fdda5-6ac2-4a31-a7b9-6b3a5dd868d6", "name": "neutral-background-color-down" } } }, "key-focus": { - "value": "{Palette.gray.300}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "78a08d31-921c-4b47-a50c-4f283e916712", + "uuid": "f52c6bfb-2d62-4fc8-a1cd-6c8d7420eeb4", "name": "neutral-background-color-key-focus" } } @@ -589,7 +711,7 @@ }, "neutral-selected": { "default": { - "value": "{Palette.gray.700}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -599,7 +721,7 @@ } }, "hover": { - "value": "{Palette.gray.800}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -619,7 +741,7 @@ } }, "key-focus": { - "value": "{Palette.gray.800}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -631,41 +753,41 @@ }, "neutral-subdued": { "default": { - "value": "{Palette.gray.400}", + "value": "{Palette.gray.500}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ccb9da64-89e5-4e9b-b868-1ac9e1d1f183", + "uuid": "bc9979cb-e7c6-45b2-be4d-0ba3c817e2ef", "name": "neutral-subdued-background-color-default" } } }, "hover": { - "value": "{Palette.gray.300}", + "value": "{Palette.gray.400}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "338e2fda-0da2-4a52-b718-ca0ca50e88f9", + "uuid": "2d72c9fc-22d0-4e4d-9b00-fae4b30a47b5", "name": "neutral-subdued-background-color-hover" } } }, "down": { - "value": "{Palette.gray.200}", + "value": "{Palette.gray.400}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6098f9a7-595e-488f-b44c-2b51a8924f90", + "uuid": "11bf9149-d8df-4f37-ba21-51ff911b0517", "name": "neutral-subdued-background-color-down" } } }, "key-focus": { - "value": "{Palette.gray.300}", + "value": "{Palette.gray.400}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8f3f4b30-3887-4368-a38b-ec274eb99aa0", + "uuid": "a1e08db6-3a72-4b8e-9475-b54a7b9be506", "name": "neutral-subdued-background-color-key-focus" } } @@ -674,41 +796,41 @@ "semantic": { "accent": { "default": { - "value": "{Alias.semantic.accent.500}", + "value": "{Alias.semantic.accent.700}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "94a5cedd-01d3-44c8-b741-01f3b70a5e90", + "uuid": "f24eb871-6419-4cef-88a2-cca8548ae31e", "name": "accent-background-color-default" } } }, "hover": { - "value": "{Alias.semantic.accent.400}", + "value": "{Alias.semantic.accent.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7c891ae9-00a1-4b9f-8a77-d582a9d2addb", + "uuid": "9e140a94-c11f-470b-b7af-49880e58d4ce", "name": "accent-background-color-hover" } } }, "down": { - "value": "{Alias.semantic.accent.300}", + "value": "{Alias.semantic.accent.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d2101964-8d67-44a1-9f94-623caf51ad1d", + "uuid": "e2c0de7e-d271-4b2c-9393-d864a95732e6", "name": "accent-background-color-down" } } }, "key-focus": { - "value": "{Alias.semantic.accent.400}", + "value": "{Alias.semantic.accent.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "46be0da3-d704-4d26-929e-4507a813d615", + "uuid": "af809118-7a97-409c-925f-8d7636a791c8", "name": "accent-background-color-key-focus" } } @@ -716,41 +838,41 @@ }, "informative": { "default": { - "value": "{Alias.semantic.informative.500}", + "value": "{Alias.semantic.informative.700}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8676a0d3-13df-4994-8614-94fa72c89486", + "uuid": "da3a7c08-7f54-4486-bb66-146db21f0627", "name": "informative-background-color-default" } } }, "hover": { - "value": "{Alias.semantic.informative.400}", + "value": "{Alias.semantic.informative.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5f53230c-36b0-46da-993c-3d707a4e148a", + "uuid": "092415a8-0054-4f6d-9a93-1541c767b2c5", "name": "informative-background-color-hover" } } }, "down": { - "value": "{Alias.semantic.informative.300}", + "value": "{Alias.semantic.informative.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "28a819c5-6d64-4bad-a6c9-7b7c250dc46e", + "uuid": "c9c09cc9-1ebd-4738-9613-6a0a67bea4f9", "name": "informative-background-color-down" } } }, "key-focus": { - "value": "{Alias.semantic.informative.400}", + "value": "{Alias.semantic.informative.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "527b21ef-5b24-4c16-8b99-f2bdd3b8f2f8", + "uuid": "e5292c94-ea4a-49ba-8c25-6ab1114e0fe3", "name": "informative-background-color-key-focus" } } @@ -758,41 +880,41 @@ }, "positive": { "default": { - "value": "{Alias.semantic.positive.500}", + "value": "{Alias.semantic.positive.700}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2fc671b6-0dde-416e-ae7e-a67c30d4a800", + "uuid": "82b54f71-7c9e-4388-9e3b-4d13f12fad60", "name": "positive-background-color-default" } } }, "hover": { - "value": "{Alias.semantic.positive.400}", + "value": "{Alias.semantic.positive.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "596bfca6-ab01-421f-8fc1-b61ebef37ded", + "uuid": "2992a78b-9ce0-4b29-a4f6-ddbc51f820f2", "name": "positive-background-color-hover" } } }, "down": { - "value": "{Alias.semantic.positive.300}", + "value": "{Alias.semantic.positive.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2e7048e0-a74e-4e40-b739-053cf298f4e2", + "uuid": "58a934d2-a715-4544-aa79-7f94bd493f09", "name": "positive-background-color-down" } } }, "key-focus": { - "value": "{Alias.semantic.positive.400}", + "value": "{Alias.semantic.positive.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3ac208d1-7fac-4692-ada9-1a19f4896a81", + "uuid": "56d371b4-437f-4ca9-854f-ae6daf5dcfce", "name": "positive-background-color-key-focus" } } @@ -800,11 +922,11 @@ }, "notice": { "default": { - "value": "{Alias.semantic.notice.800}", + "value": "{Alias.semantic.notice.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "48df522d-8857-42d3-a2b3-e86828a39cfd", + "uuid": "323428c1-792d-41b4-8a17-a12f1ac00e2a", "name": "notice-background-color-default" } } @@ -812,50 +934,92 @@ }, "negative": { "default": { - "value": "{Alias.semantic.negative.500}", + "value": "{Alias.semantic.negative.700}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5e18e40b-8db1-45ba-ac1c-4a54d5b7270a", + "uuid": "1117b73b-42e3-4ad6-8b26-af76859a27bb", "name": "negative-background-color-default" } } }, "hover": { - "value": "{Alias.semantic.negative.400}", + "value": "{Alias.semantic.negative.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "94b551c9-a0ea-48f1-8ab3-c3168a1f511d", + "uuid": "648da867-549e-47c3-9312-e9cfda288705", "name": "negative-background-color-hover" } } }, "down": { - "value": "{Alias.semantic.negative.300}", + "value": "{Alias.semantic.negative.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fc862942-7fbb-411b-8857-d8a7ae226633", + "uuid": "8565ec8e-2196-47ac-8636-40084acbfd4f", "name": "negative-background-color-down" } } }, "key-focus": { - "value": "{Alias.semantic.negative.400}", + "value": "{Alias.semantic.negative.600}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6382df57-549e-40b4-b378-3921bba6b850", + "uuid": "f1470931-f4f8-47d9-b118-5b813e4c154a", "name": "negative-background-color-key-focus" } } } + }, + "negative-subdued": { + "default": { + "value": "{Alias.semantic.negative.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-default", + "uuid": "a553db3e-a051-4023-87eb-da6545b983b2" + } + } + }, + "hover": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-hover", + "uuid": "9513cf13-8537-443f-81ce-f9d88292ba32" + } + } + }, + "down": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-down", + "uuid": "1eea917c-52e7-4295-b0e1-d33c2e73a137" + } + } + }, + "key-focus": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-key-focus", + "uuid": "4b6aaf76-e0ab-4be0-81c0-d5f64cacee88" + } + } + } } }, "disabled": { "default": { - "value": "{Palette.gray.200}", + "value": "{Palette.gray.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -865,7 +1029,7 @@ } }, "static-black": { - "value": "{Palette.transparent-black.200}", + "value": "{Palette.transparent-black.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -875,7 +1039,7 @@ } }, "static-white": { - "value": "{Palette.transparent-white.200}", + "value": "{Palette.transparent-white.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -887,11 +1051,11 @@ }, "non-semantic": { "gray": { - "value": "{Palette.gray.700}", + "value": "{Palette.gray.500}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fe9180f1-54db-4ec3-82c6-f6b084dd24f7", + "uuid": "a3e71134-b44f-4b52-a84d-4841e01505e6", "name": "gray-background-color-default" } } @@ -901,7 +1065,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "04d7615b-5006-4857-9a66-38a3955516f8", + "uuid": "83591a94-83e1-4557-8f50-cc1fe9793b76", "name": "blue-background-color-default" } } @@ -911,17 +1075,17 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fbe68215-410b-4f50-82f1-365754366275", + "uuid": "49170573-9c22-42e1-a1ce-cd3d3972ddb7", "name": "green-background-color-default" } } }, "orange": { - "value": "{Palette.orange.800}", + "value": "{Palette.orange.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "706d7352-dd31-42c1-91d4-b9407ee49868", + "uuid": "3e9a6c2a-bd09-4d28-a95c-920109c1852f", "name": "orange-background-color-default" } } @@ -931,27 +1095,47 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3da4e1a0-7a02-4488-92d8-744b2f3e5cbc", + "uuid": "ce074ee2-a2a2-4da3-a99e-603524193d46", "name": "red-background-color-default" } } }, + "brown": { + "value": "{Palette.brown.700}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-background-color-default", + "uuid": "c6dcdb8e-4966-4de6-a74a-fffa0793d58e" + } + } + }, + "cinnamon": { + "value": "{Palette.cinnamon.700}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-background-color-default", + "uuid": "d442e5b5-5083-443d-ba60-12c60406c452" + } + } + }, "celery": { - "value": "{Palette.celery.800}", + "value": "{Palette.celery.900}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "87f5b73a-19b1-40f7-991b-0d4b6bfc4a99", + "uuid": "a9ab7a59-9cab-47fb-876d-6f0af93dc5df", "name": "celery-background-color-default" } } }, "chartreuse": { - "value": "{Palette.chartreuse.900}", + "value": "{Palette.chartreuse.1000}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8c8db46e-af99-4057-85ea-3f05055b97cc", + "uuid": "5df9a029-dc91-4078-a198-574486948834", "name": "chartreuse-background-color-default" } } @@ -961,7 +1145,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4dda3368-def2-4cd6-ae04-1483bb129ca5", + "uuid": "543af64f-9c28-4e88-8597-3259cd7ebf1f", "name": "cyan-background-color-default" } } @@ -971,7 +1155,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "56575347-51b7-4822-98a6-d4275eae2ab5", + "uuid": "7b4d71d3-ad78-4e02-a48e-fa79f40854a2", "name": "fuchsia-background-color-default" } } @@ -981,7 +1165,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "40af8933-2b38-4818-a88c-52d2f487f7b9", + "uuid": "b7f5a677-4e89-40e1-8324-7619a628ce8b", "name": "indigo-background-color-default" } } @@ -991,17 +1175,27 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f7841ca9-3d7e-419b-870e-3b3747433b38", + "uuid": "5867d764-d909-4490-b947-533e89997d0a", "name": "magenta-background-color-default" } } }, + "pink": { + "value": "{Palette.pink.700}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-background-color-default", + "uuid": "3a363aa8-cf27-48a1-8c61-b1f1eaff6110" + } + } + }, "purple": { "value": "{Palette.purple.700}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a2a42a1c-c0c9-41a5-80fd-c9316e233918", + "uuid": "e577d521-0271-4226-a094-624b35a05826", "name": "purple-background-color-default" } } @@ -1011,17 +1205,37 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d49fb92d-b0ea-44c6-a17b-817da00361f9", + "uuid": "9a727140-328d-430f-9b10-8965eebe77d1", "name": "seafoam-background-color-default" } } }, + "silver": { + "value": "{Palette.silver.700}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-background-color-default", + "uuid": "a6e04390-003e-4565-bf96-e0fb8a791cb9" + } + } + }, + "turquoise": { + "value": "{Palette.turquoise.700}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-background-color-default", + "uuid": "6beacbfc-6d61-4567-86fe-39771550cf20" + } + } + }, "yellow": { - "value": "{Palette.yellow.1000}", + "value": "{Palette.yellow.1100}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5fd7e36b-05df-4384-a3f1-a3d8b9330823", + "uuid": "61c5e375-bff3-479f-8c32-2d2a5edb906c", "name": "yellow-background-color-default" } } @@ -1267,6 +1481,26 @@ "name": "accent-color-1400" } } + }, + "1500": { + "value": "{Palette.blue.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "accent-color-1500", + "uuid": "c43d9991-8929-4b1c-8631-670eef6bde83" + } + } + }, + "1600": { + "value": "{Palette.blue.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "accent-color-1600", + "uuid": "4b70c929-f48d-403d-9607-5963203433dc" + } + } } }, "informative": { @@ -1409,6 +1643,26 @@ "name": "informative-color-1400" } } + }, + "1500": { + "value": "{Palette.blue.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "informative-color-1500", + "uuid": "beeee44c-dc6b-4892-949e-67f069fc4a94" + } + } + }, + "1600": { + "value": "{Palette.blue.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "informative-color-1600", + "uuid": "68aa069d-d8a6-413a-b330-0ec6af905e6d" + } + } } }, "positive": { @@ -1551,6 +1805,26 @@ "name": "positive-color-1400" } } + }, + "1500": { + "value": "{Palette.green.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "positive-color-1500", + "uuid": "2381ba55-11ff-4ef0-a770-dfd402650d5d" + } + } + }, + "1600": { + "value": "{Palette.green.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "positive-color-1600", + "uuid": "de206438-991f-4580-8aa1-1488acb03a09" + } + } } }, "notice": { @@ -1693,6 +1967,26 @@ "name": "notice-color-1400" } } + }, + "1500": { + "value": "{Palette.orange.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "notice-color-1500", + "uuid": "3da89d37-cf33-4408-b316-05bb61c25759" + } + } + }, + "1600": { + "value": "{Palette.orange.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "notice-color-1600", + "uuid": "67e534f5-5421-493c-9324-624f0fd491f3" + } + } } }, "negative": { @@ -1835,6 +2129,26 @@ "name": "negative-color-1400" } } + }, + "1500": { + "value": "{Palette.red.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-color-1500", + "uuid": "b4c1f747-e665-43bb-a1a9-1bf9f252471d" + } + } + }, + "1600": { + "value": "{Palette.red.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-color-1600", + "uuid": "62beb7ee-c347-4cd7-a84b-40c84fcbc135" + } + } } } }, diff --git a/src/tokens-studio/foundations/spectrum/alias/light.json b/src/tokens-studio/foundations/spectrum/alias/light.json index 8f77d9c5..da983a85 100644 --- a/src/tokens-studio/foundations/spectrum/alias/light.json +++ b/src/tokens-studio/foundations/spectrum/alias/light.json @@ -1,15 +1,5 @@ { "Alias": { - "drop-shadow": { - "value": "rgba(0, 0, 0, 0.15)", - "type": "color", - "$extensions": { - "spectrum-tokens": { - "uuid": "be45ace6-9227-41d1-80be-0c58c3f8b3cb", - "name": "drop-shadow-color" - } - } - }, "overlay": { "value": "{Palette.black}", "type": "color", @@ -20,6 +10,58 @@ } } }, + "drop-shadow": { + "100": { + "value": "rgba(0, 0, 0, 0.12)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-color-100", + "uuid": "5c0f0543-7e9b-43d6-9fea-c771b9b524c6" + } + } + }, + "200": { + "value": "rgba(0, 0, 0, 0.16)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-color-200", + "uuid": "5945eb42-744c-41df-a4ab-a3d61f8782ee" + } + } + }, + "emphasized-default": { + "value": "{Alias.drop-shadow.100}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-emphasized-default-color", + "uuid": "af4e0a7a-7c6a-4cf2-a17b-0b07ef365869" + } + } + }, + "emphasized-hover": { + "value": "{Alias.drop-shadow.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-emphasized-hover-color", + "uuid": "4c84adb3-9edf-4a5d-b39a-5f31a0d3529c" + } + } + }, + "elevated": { + "value": "{Alias.drop-shadow.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-elevated-color", + "uuid": "e475981f-97af-479c-859b-7619dd87c448" + } + } + } + }, "content": { "neutral": { "default": { @@ -105,7 +147,7 @@ } }, "down": { - "value": "{Palette.gray.900}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -158,7 +200,7 @@ } }, "down": { - "value": "{Alias.semantic.accent.1100}", + "value": "{Alias.semantic.accent.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -210,7 +252,7 @@ } }, "down": { - "value": "{Alias.semantic.negative.1100}", + "value": "{Alias.semantic.negative.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -345,6 +387,26 @@ } } }, + "brown": { + "value": "{Palette.brown.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-visual-color", + "uuid": "12fd4bac-b0ef-4285-a0e4-5947526a91a9" + } + } + }, + "cinnamon": { + "value": "{Palette.cinnamon.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-visual-color", + "uuid": "86aa8b9c-b124-45ba-a359-a58295d28509" + } + } + }, "celery": { "value": "{Palette.celery.700}", "type": "color", @@ -405,6 +467,16 @@ } } }, + "pink": { + "value": "{Palette.pink.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-visual-color", + "uuid": "4be32a08-c731-4c59-b376-ba0ef134e14e" + } + } + }, "purple": { "value": "{Palette.purple.800}", "type": "color", @@ -425,6 +497,26 @@ } } }, + "silver": { + "value": "{Palette.silver.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-visual-color", + "uuid": "35f96ec6-0eae-4c55-aa54-134f03feda7d" + } + } + }, + "turquoise": { + "value": "{Palette.turquoise.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-visual-color", + "uuid": "2c31e5bc-cf23-42d6-85e8-9947e305d1ff" + } + } + }, "yellow": { "value": "{Palette.yellow.600}", "type": "color", @@ -448,6 +540,16 @@ } } }, + "title": { + "value": "{Palette.gray.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "title-color", + "uuid": "a7e9c20c-ab9b-46de-bf6a-c8fec9a8986b" + } + } + }, "body": { "value": "{Palette.gray.800}", "type": "color", @@ -491,7 +593,7 @@ } }, "static-black": { - "value": "{Palette.transparent-black.500}", + "value": "{Palette.transparent-black.400}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -501,7 +603,7 @@ } }, "static-white": { - "value": "{Palette.transparent-white.500}", + "value": "{Palette.transparent-white.400}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -514,18 +616,28 @@ }, "background": { "app-frame": { - "base": { - "value": "{Palette.gray.200}", + "elevated": { + "value": "{Palette.gray.25}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e0d8739d-18dd-44bc-92ea-e443882a780b", - "name": "background-base-color" + "name": "background-elevated-color", + "uuid": "2275e0fa-69a3-4542-9ec6-919e44035118" + } + } + }, + "layer-2": { + "value": "{Palette.gray.25}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b7b2bf98-b96a-40ca-b51e-5876d3418085", + "name": "background-layer-2-color" } } }, "layer-1": { - "value": "{Palette.gray.100}", + "value": "{Palette.gray.50}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -534,13 +646,23 @@ } } }, - "layer-2": { - "value": "{Palette.gray.50}", + "pasteboard": { + "value": "{Palette.gray.100}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b7b2bf98-b96a-40ca-b51e-5876d3418085", - "name": "background-layer-2-color" + "name": "background-pasteboard-color", + "uuid": "4938710b-5a69-49eb-8517-6f5556c23298" + } + } + }, + "base": { + "value": "{Palette.gray.25}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "e0d8739d-18dd-44bc-92ea-e443882a780b", + "name": "background-base-color" } } } @@ -551,7 +673,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5d54b2d5-b0c6-4438-b141-80ca91a0b8a4", + "uuid": "95cf1481-f476-47ce-a45a-54da64b44255", "name": "neutral-background-color-default" } } @@ -561,7 +683,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e0379e06-e2d3-4d6f-ba81-6cdf4012a022", + "uuid": "142f9467-e519-4ed7-bd98-69a31e876e70", "name": "neutral-background-color-hover" } } @@ -571,7 +693,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5577ffde-5708-4ea7-a50d-d938f07eba7f", + "uuid": "5a0fdda5-6ac2-4a31-a7b9-6b3a5dd868d6", "name": "neutral-background-color-down" } } @@ -581,7 +703,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b8ba6d4d-737e-4c18-a901-bb35fdc173c3", + "uuid": "f52c6bfb-2d62-4fc8-a1cd-6c8d7420eeb4", "name": "neutral-background-color-key-focus" } } @@ -589,7 +711,7 @@ }, "neutral-selected": { "default": { - "value": "{Palette.gray.700}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -599,7 +721,7 @@ } }, "hover": { - "value": "{Palette.gray.800}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -619,7 +741,7 @@ } }, "key-focus": { - "value": "{Palette.gray.800}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -631,7 +753,7 @@ }, "neutral-subdued": { "default": { - "value": "{Palette.gray.600}", + "value": "{Palette.gray.700}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -641,7 +763,7 @@ } }, "hover": { - "value": "{Palette.gray.700}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -661,7 +783,7 @@ } }, "key-focus": { - "value": "{Palette.gray.700}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -694,7 +816,7 @@ } }, "down": { - "value": "{Alias.semantic.accent.1100}", + "value": "{Alias.semantic.accent.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -736,7 +858,7 @@ } }, "down": { - "value": "{Alias.semantic.informative.1100}", + "value": "{Alias.semantic.informative.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -778,7 +900,7 @@ } }, "down": { - "value": "{Alias.semantic.positive.1100}", + "value": "{Alias.semantic.positive.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -804,7 +926,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "87666730-0d8e-434d-9bfb-0a45e729c482", + "uuid": "48f3445a-63d8-4477-a2f5-1fee6a022328", "name": "notice-background-color-default" } } @@ -832,7 +954,7 @@ } }, "down": { - "value": "{Alias.semantic.negative.1100}", + "value": "{Alias.semantic.negative.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -851,11 +973,53 @@ } } } + }, + "negative-subdued": { + "default": { + "value": "{Alias.semantic.negative.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-default", + "uuid": "a553db3e-a051-4023-87eb-da6545b983b2" + } + } + }, + "hover": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-hover", + "uuid": "9513cf13-8537-443f-81ce-f9d88292ba32" + } + } + }, + "down": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-down", + "uuid": "1eea917c-52e7-4295-b0e1-d33c2e73a137" + } + } + }, + "key-focus": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-key-focus", + "uuid": "4b6aaf76-e0ab-4be0-81c0-d5f64cacee88" + } + } + } } }, "disabled": { "default": { - "value": "{Palette.gray.200}", + "value": "{Palette.gray.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -865,7 +1029,7 @@ } }, "static-black": { - "value": "{Palette.transparent-black.200}", + "value": "{Palette.transparent-black.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -875,7 +1039,7 @@ } }, "static-white": { - "value": "{Palette.transparent-white.200}", + "value": "{Palette.transparent-white.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -936,6 +1100,26 @@ } } }, + "brown": { + "value": "{Palette.brown.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-background-color-default", + "uuid": "168c3534-c54e-415b-a623-27c2a8caea8c" + } + } + }, + "cinnamon": { + "value": "{Palette.cinnamon.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-background-color-default", + "uuid": "6dc7df67-2cfb-440f-9b1c-b7262a7cc2d3" + } + } + }, "celery": { "value": "{Palette.celery.600}", "type": "color", @@ -996,6 +1180,16 @@ } } }, + "pink": { + "value": "{Palette.pink.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-background-color-default", + "uuid": "78fc6322-a961-429a-bd40-3e1c1bf2c4e9" + } + } + }, "purple": { "value": "{Palette.purple.900}", "type": "color", @@ -1016,6 +1210,26 @@ } } }, + "silver": { + "value": "{Palette.silver.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-background-color-default", + "uuid": "13d332e4-45b0-4549-a1a3-a608034960a1" + } + } + }, + "turquoise": { + "value": "{Palette.turquoise.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-background-color-default", + "uuid": "e763acbc-2c17-46c5-8484-1d8536e7ef10" + } + } + }, "yellow": { "value": "{Palette.yellow.400}", "type": "color", @@ -1267,6 +1481,26 @@ "name": "accent-color-1400" } } + }, + "1500": { + "value": "{Palette.blue.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "accent-color-1500", + "uuid": "c43d9991-8929-4b1c-8631-670eef6bde83" + } + } + }, + "1600": { + "value": "{Palette.blue.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "accent-color-1600", + "uuid": "4b70c929-f48d-403d-9607-5963203433dc" + } + } } }, "informative": { @@ -1409,6 +1643,26 @@ "name": "informative-color-1400" } } + }, + "1500": { + "value": "{Palette.blue.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "informative-color-1500", + "uuid": "beeee44c-dc6b-4892-949e-67f069fc4a94" + } + } + }, + "1600": { + "value": "{Palette.blue.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "informative-color-1600", + "uuid": "68aa069d-d8a6-413a-b330-0ec6af905e6d" + } + } } }, "positive": { @@ -1551,6 +1805,26 @@ "name": "positive-color-1400" } } + }, + "1500": { + "value": "{Palette.green.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "positive-color-1500", + "uuid": "2381ba55-11ff-4ef0-a770-dfd402650d5d" + } + } + }, + "1600": { + "value": "{Palette.green.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "positive-color-1600", + "uuid": "de206438-991f-4580-8aa1-1488acb03a09" + } + } } }, "notice": { @@ -1693,6 +1967,26 @@ "name": "notice-color-1400" } } + }, + "1500": { + "value": "{Palette.orange.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "notice-color-1500", + "uuid": "3da89d37-cf33-4408-b316-05bb61c25759" + } + } + }, + "1600": { + "value": "{Palette.orange.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "notice-color-1600", + "uuid": "67e534f5-5421-493c-9324-624f0fd491f3" + } + } } }, "negative": { @@ -1835,6 +2129,26 @@ "name": "negative-color-1400" } } + }, + "1500": { + "value": "{Palette.red.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-color-1500", + "uuid": "b4c1f747-e665-43bb-a1a9-1bf9f252471d" + } + } + }, + "1600": { + "value": "{Palette.red.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-color-1600", + "uuid": "62beb7ee-c347-4cd7-a84b-40c84fcbc135" + } + } } } }, diff --git a/src/tokens-studio/foundations/spectrum/alias/wireframe.json b/src/tokens-studio/foundations/spectrum/alias/wireframe.json index 1a898aca..b8a77a40 100644 --- a/src/tokens-studio/foundations/spectrum/alias/wireframe.json +++ b/src/tokens-studio/foundations/spectrum/alias/wireframe.json @@ -1,15 +1,5 @@ { "Alias": { - "drop-shadow": { - "value": "rgba(0, 0, 0, 0.15)", - "type": "color", - "$extensions": { - "spectrum-tokens": { - "uuid": "1deef94a-efba-4670-a1be-78ee021bdfe8", - "name": "drop-shadow-color" - } - } - }, "overlay": { "value": "{Palette.black}", "type": "color", @@ -20,6 +10,58 @@ } } }, + "drop-shadow": { + "100": { + "value": "rgba(0, 0, 0, 0.12)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-color-100", + "uuid": "8e496445-97fc-4ff6-96d4-81b0215b8ffe" + } + } + }, + "200": { + "value": "rgba(0, 0, 0, 0.16)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-color-200", + "uuid": "aa54be1b-bf30-42b7-91ec-09259bea0bd3" + } + } + }, + "emphasized-default": { + "value": "{Alias.drop-shadow.100}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-emphasized-default-color", + "uuid": "af4e0a7a-7c6a-4cf2-a17b-0b07ef365869" + } + } + }, + "emphasized-hover": { + "value": "{Alias.drop-shadow.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-emphasized-hover-color", + "uuid": "4c84adb3-9edf-4a5d-b39a-5f31a0d3529c" + } + } + }, + "elevated": { + "value": "{Alias.drop-shadow.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "drop-shadow-elevated-color", + "uuid": "e475981f-97af-479c-859b-7619dd87c448" + } + } + } + }, "content": { "neutral": { "default": { @@ -105,7 +147,7 @@ } }, "down": { - "value": "{Palette.gray.900}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -158,7 +200,7 @@ } }, "down": { - "value": "{Alias.semantic.accent.1100}", + "value": "{Alias.semantic.accent.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -210,7 +252,7 @@ } }, "down": { - "value": "{Alias.semantic.negative.1100}", + "value": "{Alias.semantic.negative.1000}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -345,6 +387,26 @@ } } }, + "brown": { + "value": "{Palette.brown.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-visual-color", + "uuid": "986418d6-3e22-441d-ba7f-732ee47aad04" + } + } + }, + "cinnamon": { + "value": "{Palette.cinnamon.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-visual-color", + "uuid": "0535836b-ff76-4619-8e53-20f400b9996c" + } + } + }, "celery": { "value": "{Palette.celery.900}", "type": "color", @@ -405,6 +467,16 @@ } } }, + "pink": { + "value": "{Palette.pink.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-visual-color", + "uuid": "b2fc4b00-4b9e-4e57-9892-0b4a59df4868" + } + } + }, "purple": { "value": "{Palette.purple.900}", "type": "color", @@ -425,6 +497,26 @@ } } }, + "silver": { + "value": "{Palette.silver.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-visual-color", + "uuid": "dca6ce31-57d3-4bb9-8d6a-cc2c66a3a3f4" + } + } + }, + "turquoise": { + "value": "{Palette.turquoise.800}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-visual-color", + "uuid": "47319d06-bec7-4520-893c-f4442b85cfd5" + } + } + }, "yellow": { "value": "{Palette.yellow.900}", "type": "color", @@ -448,6 +540,16 @@ } } }, + "title": { + "value": "{Palette.gray.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "title-color", + "uuid": "a7e9c20c-ab9b-46de-bf6a-c8fec9a8986b" + } + } + }, "body": { "value": "{Palette.gray.800}", "type": "color", @@ -491,7 +593,7 @@ } }, "static-black": { - "value": "{Palette.transparent-black.500}", + "value": "{Palette.transparent-black.400}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -501,7 +603,7 @@ } }, "static-white": { - "value": "{Palette.transparent-white.500}", + "value": "{Palette.transparent-white.400}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -514,33 +616,53 @@ }, "background": { "app-frame": { - "base": { - "value": "{Palette.gray.200}", + "elevated": { + "value": "{Palette.gray.25}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6945b976-83b4-4aec-a687-cb461bc9fe70", - "name": "background-base-color" + "name": "background-elevated-color", + "uuid": "d9cb27b8-5535-4e3a-8ca5-6eda69b934af" + } + } + }, + "layer-2": { + "value": "{Palette.gray.50}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "6556a64d-5944-4d65-a6cc-9c6121044ac7", + "name": "background-layer-2-color" } } }, "layer-1": { - "value": "{Palette.gray.100}", + "value": "{Palette.gray.50}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3ccfa493-5375-492a-93b0-7418655c3b56", + "uuid": "7e6678b7-2903-434b-8ee2-06c83815b01d", "name": "background-layer-1-color" } } }, - "layer-2": { - "value": "{Palette.gray.50}", + "pasteboard": { + "value": "{Palette.gray.100}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6556a64d-5944-4d65-a6cc-9c6121044ac7", - "name": "background-layer-2-color" + "name": "background-pasteboard-color", + "uuid": "6a60aa01-d789-4d39-9867-2264e66d419c" + } + } + }, + "base": { + "value": "{Palette.gray.25}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "e0d8739d-18dd-44bc-92ea-e443882a780b", + "name": "background-base-color" } } } @@ -551,7 +673,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9ff12440-fe4e-4f47-ab43-aea39f9ce6f2", + "uuid": "95cf1481-f476-47ce-a45a-54da64b44255", "name": "neutral-background-color-default" } } @@ -561,7 +683,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b6c12c43-39da-415b-a828-43883dfa212d", + "uuid": "142f9467-e519-4ed7-bd98-69a31e876e70", "name": "neutral-background-color-hover" } } @@ -571,7 +693,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "69c94cbb-b852-4b5c-8e5f-26664dbf083a", + "uuid": "5a0fdda5-6ac2-4a31-a7b9-6b3a5dd868d6", "name": "neutral-background-color-down" } } @@ -581,7 +703,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "83e3eea6-e59e-4aca-8126-a9e984e90b08", + "uuid": "f52c6bfb-2d62-4fc8-a1cd-6c8d7420eeb4", "name": "neutral-background-color-key-focus" } } @@ -589,7 +711,7 @@ }, "neutral-selected": { "default": { - "value": "{Palette.gray.700}", + "value": "{Palette.gray.800}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -599,7 +721,7 @@ } }, "hover": { - "value": "{Palette.gray.800}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -619,7 +741,7 @@ } }, "key-focus": { - "value": "{Palette.gray.800}", + "value": "{Palette.gray.900}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -804,7 +926,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "640e857c-c62c-4289-b83a-1e36cee90ad4", + "uuid": "0fdc01c4-459a-4f74-a8e0-fdbe93f8138f", "name": "notice-background-color-default" } } @@ -851,11 +973,53 @@ } } } + }, + "negative-subdued": { + "default": { + "value": "{Alias.semantic.negative.200}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-default", + "uuid": "a553db3e-a051-4023-87eb-da6545b983b2" + } + } + }, + "hover": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-hover", + "uuid": "9513cf13-8537-443f-81ce-f9d88292ba32" + } + } + }, + "down": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-down", + "uuid": "1eea917c-52e7-4295-b0e1-d33c2e73a137" + } + } + }, + "key-focus": { + "value": "{Alias.semantic.negative.300}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-subdued-background-color-key-focus", + "uuid": "4b6aaf76-e0ab-4be0-81c0-d5f64cacee88" + } + } + } } }, "disabled": { "default": { - "value": "{Palette.gray.200}", + "value": "{Palette.gray.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -865,7 +1029,7 @@ } }, "static-black": { - "value": "{Palette.transparent-black.200}", + "value": "{Palette.transparent-black.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -875,7 +1039,7 @@ } }, "static-white": { - "value": "{Palette.transparent-white.200}", + "value": "{Palette.transparent-white.100}", "type": "color", "$extensions": { "spectrum-tokens": { @@ -887,11 +1051,11 @@ }, "non-semantic": { "gray": { - "value": "{Palette.gray.600}", + "value": "{Palette.gray.700}", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6a74ab0a-e481-4d38-9db7-ea8ef885940b", + "uuid": "c41bb795-182e-45c0-afea-4ae2148e37a4", "name": "gray-background-color-default" } } @@ -936,6 +1100,26 @@ } } }, + "brown": { + "value": "{Palette.brown.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-background-color-default", + "uuid": "5f0767be-3be9-4d10-a708-740565e1c457" + } + } + }, + "cinnamon": { + "value": "{Palette.cinnamon.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-background-color-default", + "uuid": "d2c78c57-304d-4d62-87b0-2adb4085552f" + } + } + }, "celery": { "value": "{Palette.celery.1100}", "type": "color", @@ -996,6 +1180,16 @@ } } }, + "pink": { + "value": "{Palette.pink.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-background-color-default", + "uuid": "636ebb71-7386-4a6a-b0c3-5778dd993b22" + } + } + }, "purple": { "value": "{Palette.purple.1100}", "type": "color", @@ -1016,6 +1210,26 @@ } } }, + "silver": { + "value": "{Palette.silver.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-background-color-default", + "uuid": "422a0b99-1222-4c78-ac55-615992ed607c" + } + } + }, + "turquoise": { + "value": "{Palette.turquoise.900}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-background-color-default", + "uuid": "73e40908-216f-406e-993f-287477753e65" + } + } + }, "yellow": { "value": "{Palette.yellow.1100}", "type": "color", @@ -1267,6 +1481,26 @@ "name": "accent-color-1400" } } + }, + "1500": { + "value": "{Palette.blue.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "accent-color-1500", + "uuid": "c43d9991-8929-4b1c-8631-670eef6bde83" + } + } + }, + "1600": { + "value": "{Palette.blue.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "accent-color-1600", + "uuid": "4b70c929-f48d-403d-9607-5963203433dc" + } + } } }, "informative": { @@ -1409,6 +1643,26 @@ "name": "informative-color-1400" } } + }, + "1500": { + "value": "{Palette.blue.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "informative-color-1500", + "uuid": "beeee44c-dc6b-4892-949e-67f069fc4a94" + } + } + }, + "1600": { + "value": "{Palette.blue.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "informative-color-1600", + "uuid": "68aa069d-d8a6-413a-b330-0ec6af905e6d" + } + } } }, "positive": { @@ -1551,6 +1805,26 @@ "name": "positive-color-1400" } } + }, + "1500": { + "value": "{Palette.green.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "positive-color-1500", + "uuid": "2381ba55-11ff-4ef0-a770-dfd402650d5d" + } + } + }, + "1600": { + "value": "{Palette.green.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "positive-color-1600", + "uuid": "de206438-991f-4580-8aa1-1488acb03a09" + } + } } }, "notice": { @@ -1693,6 +1967,26 @@ "name": "notice-color-1400" } } + }, + "1500": { + "value": "{Palette.orange.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "notice-color-1500", + "uuid": "3da89d37-cf33-4408-b316-05bb61c25759" + } + } + }, + "1600": { + "value": "{Palette.orange.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "notice-color-1600", + "uuid": "67e534f5-5421-493c-9324-624f0fd491f3" + } + } } }, "negative": { @@ -1835,6 +2129,26 @@ "name": "negative-color-1400" } } + }, + "1500": { + "value": "{Palette.red.1500}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-color-1500", + "uuid": "b4c1f747-e665-43bb-a1a9-1bf9f252471d" + } + } + }, + "1600": { + "value": "{Palette.red.1600}", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "negative-color-1600", + "uuid": "62beb7ee-c347-4cd7-a84b-40c84fcbc135" + } + } } } }, diff --git a/src/tokens-studio/foundations/spectrum/component/dark.json b/src/tokens-studio/foundations/spectrum/component/dark.json index 3aec6902..ff2c9728 100644 --- a/src/tokens-studio/foundations/spectrum/component/dark.json +++ b/src/tokens-studio/foundations/spectrum/component/dark.json @@ -132,7 +132,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5dbb3e96-fe86-43a2-be8b-3ceecfe2d5ba", + "uuid": "f783b8cb-d31f-46c2-b550-990639752510", "name": "opacity-checkerboard-square-dark" } } diff --git a/src/tokens-studio/foundations/spectrum/icon/dark.json b/src/tokens-studio/foundations/spectrum/icon/dark.json index cbe9fbe8..f3627c35 100644 --- a/src/tokens-studio/foundations/spectrum/icon/dark.json +++ b/src/tokens-studio/foundations/spectrum/icon/dark.json @@ -25,7 +25,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "bcb2d920-29fe-4911-bfd6-058ed81a1c76", + "uuid": "1bac9a3f-4bc8-4a4d-8dfd-53c542b1d1d8", "name": "icon-color-blue-primary-default" } } @@ -35,7 +35,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ce9c0ea4-0c5a-4d3b-974f-1b9acf27b3fd", + "uuid": "260ff567-2bdb-48cc-9576-f4f7629d3a8f", "name": "icon-color-green-primary-default" } } @@ -45,7 +45,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5a1ef31d-a55d-44e2-9ce9-68c407ba8611", + "uuid": "a60f2744-ad15-4cf7-b9dc-89ca307ed444", "name": "icon-color-red-primary-default" } } @@ -55,7 +55,7 @@ "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "646e82ab-3762-47de-87ec-a39b68d59de9", + "uuid": "5ebf8291-23f8-4806-865d-4ebab38ff03c", "name": "icon-color-yellow-primary-default" } } diff --git a/src/tokens-studio/foundations/spectrum/icon/desktop.json b/src/tokens-studio/foundations/spectrum/icon/desktop.json index 54ff8817..e30bb1cf 100644 --- a/src/tokens-studio/foundations/spectrum/icon/desktop.json +++ b/src/tokens-studio/foundations/spectrum/icon/desktop.json @@ -480,7 +480,7 @@ } }, "workflow-icon-size-100": { - "value": "18px", + "value": "20px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -490,7 +490,7 @@ } }, "workflow-icon-size-200": { - "value": "20px", + "value": "22px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -500,7 +500,7 @@ } }, "workflow-icon-size-300": { - "value": "22px", + "value": "26px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -509,4 +509,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/tokens-studio/foundations/spectrum/icon/mobile.json b/src/tokens-studio/foundations/spectrum/icon/mobile.json index b3120ee0..6d045d31 100644 --- a/src/tokens-studio/foundations/spectrum/icon/mobile.json +++ b/src/tokens-studio/foundations/spectrum/icon/mobile.json @@ -460,7 +460,7 @@ } }, "workflow-icon-size-50": { - "value": "18px", + "value": "16px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -470,7 +470,7 @@ } }, "workflow-icon-size-75": { - "value": "20px", + "value": "18px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -480,7 +480,7 @@ } }, "workflow-icon-size-100": { - "value": "22px", + "value": "24px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -490,7 +490,7 @@ } }, "workflow-icon-size-200": { - "value": "24px", + "value": "28px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -500,7 +500,7 @@ } }, "workflow-icon-size-300": { - "value": "28px", + "value": "30px", "type": "sizing", "$extensions": { "spectrum-tokens": { @@ -509,4 +509,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/tokens-studio/foundations/spectrum/layout.component/desktop.json b/src/tokens-studio/foundations/spectrum/layout.component/desktop.json index e08dedef..f03d7f67 100644 --- a/src/tokens-studio/foundations/spectrum/layout.component/desktop.json +++ b/src/tokens-studio/foundations/spectrum/layout.component/desktop.json @@ -1000,7 +1000,7 @@ } }, "color-area-border-rounding": { - "value": "{corner-radius-100}", + "value": "{corner-radius-medium-size-small}", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1210,7 +1210,7 @@ } }, "color-slider-border-rounding": { - "value": "4px", + "value": "{corner-radius-medium-size-small}", "type": "spacing", "$extensions": { "spectrum-tokens": { diff --git a/src/tokens-studio/foundations/spectrum/layout.component/mobile.json b/src/tokens-studio/foundations/spectrum/layout.component/mobile.json index ba5eed60..ace7f1bf 100644 --- a/src/tokens-studio/foundations/spectrum/layout.component/mobile.json +++ b/src/tokens-studio/foundations/spectrum/layout.component/mobile.json @@ -1000,7 +1000,7 @@ } }, "color-area-border-rounding": { - "value": "{corner-radius-100}", + "value": "{corner-radius-medium-size-small}", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1210,7 +1210,7 @@ } }, "color-slider-border-rounding": { - "value": "4px", + "value": "{corner-radius-medium-size-small}", "type": "spacing", "$extensions": { "spectrum-tokens": { diff --git a/src/tokens-studio/foundations/spectrum/layout/desktop.json b/src/tokens-studio/foundations/spectrum/layout/desktop.json index 29a9c7e2..4ad1cb58 100644 --- a/src/tokens-studio/foundations/spectrum/layout/desktop.json +++ b/src/tokens-studio/foundations/spectrum/layout/desktop.json @@ -150,7 +150,7 @@ } }, "component-edge-to-text-75": { - "value": "9px", + "value": "10px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -180,7 +180,7 @@ } }, "component-edge-to-text-300": { - "value": "18px", + "value": "17px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -190,7 +190,7 @@ } }, "component-edge-to-visual-50": { - "value": "6px", + "value": "7px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -200,7 +200,7 @@ } }, "component-edge-to-visual-75": { - "value": "7px", + "value": "8px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -230,7 +230,7 @@ } }, "component-edge-to-visual-300": { - "value": "15px", + "value": "14px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -260,7 +260,7 @@ } }, "component-edge-to-visual-only-100": { - "value": "7px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -270,7 +270,7 @@ } }, "component-edge-to-visual-only-200": { - "value": "10px", + "value": "9px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -280,7 +280,7 @@ } }, "component-edge-to-visual-only-300": { - "value": "13px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -360,7 +360,7 @@ } }, "component-pill-edge-to-text-75": { - "value": "12px", + "value": "13px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -390,7 +390,7 @@ } }, "component-pill-edge-to-text-300": { - "value": "24px", + "value": "23px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -400,7 +400,7 @@ } }, "component-pill-edge-to-visual-75": { - "value": "10px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -430,7 +430,7 @@ } }, "component-pill-edge-to-visual-300": { - "value": "21px", + "value": "20px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -450,7 +450,7 @@ } }, "component-pill-edge-to-visual-only-100": { - "value": "7px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -460,7 +460,7 @@ } }, "component-pill-edge-to-visual-only-200": { - "value": "10px", + "value": "9px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -470,7 +470,7 @@ } }, "component-pill-edge-to-visual-only-300": { - "value": "13px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -590,7 +590,7 @@ } }, "component-top-to-workflow-icon-100": { - "value": "7px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -600,7 +600,7 @@ } }, "component-top-to-workflow-icon-200": { - "value": "10px", + "value": "9px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -610,7 +610,7 @@ } }, "component-top-to-workflow-icon-300": { - "value": "13px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -620,7 +620,7 @@ } }, "corner-radius-75": { - "value": "2px", + "value": "3px", "type": "borderRadius", "$extensions": { "spectrum-tokens": { @@ -640,7 +640,7 @@ } }, "corner-radius-200": { - "value": "8px", + "value": "5px", "type": "borderRadius", "$extensions": { "spectrum-tokens": { @@ -1450,7 +1450,7 @@ } }, "text-to-visual-50": { - "value": "6px", + "value": "5px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1460,7 +1460,7 @@ } }, "text-to-visual-75": { - "value": "7px", + "value": "5px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1470,7 +1470,7 @@ } }, "text-to-visual-100": { - "value": "8px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1480,7 +1480,7 @@ } }, "text-to-visual-200": { - "value": "9px", + "value": "7px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1490,7 +1490,7 @@ } }, "text-to-visual-300": { - "value": "10px", + "value": "8px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1499,6 +1499,16 @@ } } }, + "text-to-visual-400": { + "value": "9px", + "type": "spacing", + "$extensions": { + "spectrum-tokens": { + "uuid": "3d393d59-b358-48a7-82c6-a7802408cd0d", + "name": "text-to-visual-400" + } + } + }, "text-underline-gap": { "value": "1px", "type": "spacing", @@ -1518,5 +1528,235 @@ "name": "text-underline-thickness" } } + }, + "corner-radius-0": { + "value": "0px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-0", + "uuid": "bb9d8350-b1fb-4496-9c22-6ec9647ff117" + } + } + }, + "corner-radius-300": { + "value": "6px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-300", + "uuid": "154642d7-c23d-44fd-9d79-b719ef32922e" + } + } + }, + "corner-radius-400": { + "value": "7px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-400", + "uuid": "690db7ae-cae8-49bb-8777-b4f1829b2f0b" + } + } + }, + "corner-radius-500": { + "value": "8px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-500", + "uuid": "ada2ea1d-1728-411a-8aae-a198ce390a25" + } + } + }, + "corner-radius-600": { + "value": "9px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-600", + "uuid": "abc0f309-3bd2-4800-af12-b27386e86617" + } + } + }, + "corner-radius-700": { + "value": "10px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-700", + "uuid": "cb6b72ed-a9a1-4113-b147-1ef369fe6269" + } + } + }, + "corner-radius-800": { + "value": "16px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-800", + "uuid": "8fc023ca-8aec-40fe-9130-087aa035bac7" + } + } + }, + "corner-radius-1000": { + "value": "0.5", + "type": "number", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-1000", + "uuid": "e4ad85b2-97bf-48cf-a5a9-3ff3d1fada5b" + } + } + }, + "corner-radius-none": { + "value": "{corner-radius-0}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-none", + "uuid": "7a11b308-bed2-4b6f-bb4a-c9ae4ef8e03d" + } + } + }, + "corner-radius-small-default": { + "value": "{corner-radius-100}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-default", + "uuid": "b4971f86-aeea-42c9-9ba7-a74cf4d1a545" + } + } + }, + "corner-radius-medium-default": { + "value": "{corner-radius-500}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-default", + "uuid": "a83a882e-430c-46fc-a8be-5ade0dd8a4c6" + } + } + }, + "corner-radius-large-default": { + "value": "{corner-radius-700}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-large-default", + "uuid": "29981aef-aea6-4cde-849f-4bc67e320ea7" + } + } + }, + "corner-radius-extra-large-default": { + "value": "{corner-radius-800}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-extra-large-default", + "uuid": "d639a0b5-16b4-4d75-ab37-d87815c7b500" + } + } + }, + "corner-radius-full": { + "value": "{corner-radius-1000}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-full", + "uuid": "4853520b-bda3-45d1-bd20-8508cac08847" + } + } + }, + "corner-radius-small-size-small": { + "value": "{corner-radius-75}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-small", + "uuid": "3d39e5de-0800-4629-ae1a-99a34706a772" + } + } + }, + "corner-radius-small-size-medium": { + "value": "{corner-radius-100}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-medium", + "uuid": "a62a43dd-cb2a-4e18-bb94-7a9518668400" + } + } + }, + "corner-radius-small-size-large": { + "value": "{corner-radius-200}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-large", + "uuid": "f4f0bfc9-ce6d-473f-8dda-c9f21fb8a7b7" + } + } + }, + "corner-radius-small-size-extra-large": { + "value": "{corner-radius-300}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-extra-large", + "uuid": "d59337d1-4cec-43c0-821e-06a56745cbcc" + } + } + }, + "corner-radius-medium-size-extra-small": { + "value": "{corner-radius-300}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-extra-small", + "uuid": "d0e02d98-e93f-4f81-8d81-8f95e06ad360" + } + } + }, + "corner-radius-medium-size-small": { + "value": "{corner-radius-400}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-small", + "uuid": "892bc9de-16b2-4c51-9c18-b239e52ffd14" + } + } + }, + "corner-radius-medium-size-medium": { + "value": "{corner-radius-500}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-medium", + "uuid": "67fb5355-6d7c-4e4e-a4cb-cdba10a85d84" + } + } + }, + "corner-radius-medium-size-large": { + "value": "{corner-radius-600}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-large", + "uuid": "ede17e00-83ef-40c5-a1d0-a46372d3fc90" + } + } + }, + "corner-radius-medium-size-extra-large": { + "value": "{corner-radius-700}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-extra-large", + "uuid": "81752b3e-488a-4273-abb5-4ba8b7f278d9" + } + } } -} \ No newline at end of file +} diff --git a/src/tokens-studio/foundations/spectrum/layout/mobile.json b/src/tokens-studio/foundations/spectrum/layout/mobile.json index 96a0837e..c1fe6129 100644 --- a/src/tokens-studio/foundations/spectrum/layout/mobile.json +++ b/src/tokens-studio/foundations/spectrum/layout/mobile.json @@ -140,7 +140,7 @@ } }, "component-edge-to-text-50": { - "value": "10px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -150,7 +150,7 @@ } }, "component-edge-to-text-75": { - "value": "11px", + "value": "13px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -170,7 +170,7 @@ } }, "component-edge-to-text-200": { - "value": "19px", + "value": "18px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -190,7 +190,7 @@ } }, "component-edge-to-visual-50": { - "value": "7px", + "value": "9px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -200,7 +200,7 @@ } }, "component-edge-to-visual-75": { - "value": "9px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -220,7 +220,7 @@ } }, "component-edge-to-visual-200": { - "value": "16px", + "value": "15px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -230,7 +230,7 @@ } }, "component-edge-to-visual-300": { - "value": "19px", + "value": "20px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -240,7 +240,7 @@ } }, "component-edge-to-visual-only-50": { - "value": "4px", + "value": "5px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -250,7 +250,7 @@ } }, "component-edge-to-visual-only-75": { - "value": "5px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -260,7 +260,7 @@ } }, "component-edge-to-visual-only-100": { - "value": "9px", + "value": "8px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -270,7 +270,7 @@ } }, "component-edge-to-visual-only-200": { - "value": "13px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -280,7 +280,7 @@ } }, "component-edge-to-visual-only-300": { - "value": "16px", + "value": "15px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -360,7 +360,7 @@ } }, "component-pill-edge-to-text-75": { - "value": "15px", + "value": "17px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -380,7 +380,7 @@ } }, "component-pill-edge-to-text-200": { - "value": "25px", + "value": "24px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -400,7 +400,7 @@ } }, "component-pill-edge-to-visual-75": { - "value": "13px", + "value": "15px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -420,7 +420,7 @@ } }, "component-pill-edge-to-visual-200": { - "value": "22px", + "value": "21px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -430,7 +430,7 @@ } }, "component-pill-edge-to-visual-300": { - "value": "27px", + "value": "28px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -440,7 +440,7 @@ } }, "component-pill-edge-to-visual-only-75": { - "value": "5px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -450,7 +450,7 @@ } }, "component-pill-edge-to-visual-only-100": { - "value": "9px", + "value": "8px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -460,7 +460,7 @@ } }, "component-pill-edge-to-visual-only-200": { - "value": "13px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -470,7 +470,7 @@ } }, "component-pill-edge-to-visual-only-300": { - "value": "16px", + "value": "15px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -570,7 +570,7 @@ } }, "component-top-to-workflow-icon-50": { - "value": "4px", + "value": "5px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -580,7 +580,7 @@ } }, "component-top-to-workflow-icon-75": { - "value": "5px", + "value": "6px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -590,7 +590,7 @@ } }, "component-top-to-workflow-icon-100": { - "value": "9px", + "value": "8px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -600,7 +600,7 @@ } }, "component-top-to-workflow-icon-200": { - "value": "13px", + "value": "11px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -610,7 +610,7 @@ } }, "component-top-to-workflow-icon-300": { - "value": "16px", + "value": "15px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -620,7 +620,7 @@ } }, "corner-radius-75": { - "value": "2px", + "value": "3px", "type": "borderRadius", "$extensions": { "spectrum-tokens": { @@ -630,21 +630,21 @@ } }, "corner-radius-100": { - "value": "5px", + "value": "4px", "type": "borderRadius", "$extensions": { "spectrum-tokens": { - "uuid": "e22537bb-a29f-47e5-be13-7e2775ee1103", + "uuid": "bf24d15e-ad86-4b6a-a9e0-e8fd49a5ae30", "name": "corner-radius-100" } } }, "corner-radius-200": { - "value": "10px", + "value": "5px", "type": "borderRadius", "$extensions": { "spectrum-tokens": { - "uuid": "23f751eb-a076-487d-a5e1-1c0eb2937018", + "uuid": "52ad01be-f512-4fa3-ae67-8c6cef70810c", "name": "corner-radius-200" } } @@ -1450,7 +1450,7 @@ } }, "text-to-visual-50": { - "value": "8px", + "value": "7px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1460,7 +1460,7 @@ } }, "text-to-visual-75": { - "value": "9px", + "value": "7px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1470,7 +1470,7 @@ } }, "text-to-visual-100": { - "value": "10px", + "value": "8px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1480,7 +1480,7 @@ } }, "text-to-visual-200": { - "value": "11px", + "value": "9px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1490,7 +1490,7 @@ } }, "text-to-visual-300": { - "value": "13px", + "value": "10px", "type": "spacing", "$extensions": { "spectrum-tokens": { @@ -1499,6 +1499,16 @@ } } }, + "text-to-visual-400": { + "value": "11px", + "type": "spacing", + "$extensions": { + "spectrum-tokens": { + "uuid": "b496071f-4151-4bc2-86eb-f2e41947e0f6", + "name": "text-to-visual-400" + } + } + }, "text-underline-gap": { "value": "1px", "type": "spacing", @@ -1518,5 +1528,235 @@ "name": "text-underline-thickness" } } + }, + "corner-radius-0": { + "value": "0px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-0", + "uuid": "bb9d8350-b1fb-4496-9c22-6ec9647ff117" + } + } + }, + "corner-radius-300": { + "value": "6px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-300", + "uuid": "154642d7-c23d-44fd-9d79-b719ef32922e" + } + } + }, + "corner-radius-400": { + "value": "7px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-400", + "uuid": "690db7ae-cae8-49bb-8777-b4f1829b2f0b" + } + } + }, + "corner-radius-500": { + "value": "8px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-500", + "uuid": "ada2ea1d-1728-411a-8aae-a198ce390a25" + } + } + }, + "corner-radius-600": { + "value": "9px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-600", + "uuid": "abc0f309-3bd2-4800-af12-b27386e86617" + } + } + }, + "corner-radius-700": { + "value": "10px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-700", + "uuid": "cb6b72ed-a9a1-4113-b147-1ef369fe6269" + } + } + }, + "corner-radius-800": { + "value": "16px", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-800", + "uuid": "8fc023ca-8aec-40fe-9130-087aa035bac7" + } + } + }, + "corner-radius-1000": { + "value": "0.5", + "type": "number", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-1000", + "uuid": "e4ad85b2-97bf-48cf-a5a9-3ff3d1fada5b" + } + } + }, + "corner-radius-none": { + "value": "{corner-radius-0}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-none", + "uuid": "7a11b308-bed2-4b6f-bb4a-c9ae4ef8e03d" + } + } + }, + "corner-radius-small-default": { + "value": "{corner-radius-100}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-default", + "uuid": "b4971f86-aeea-42c9-9ba7-a74cf4d1a545" + } + } + }, + "corner-radius-medium-default": { + "value": "{corner-radius-500}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-default", + "uuid": "a83a882e-430c-46fc-a8be-5ade0dd8a4c6" + } + } + }, + "corner-radius-large-default": { + "value": "{corner-radius-700}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-large-default", + "uuid": "29981aef-aea6-4cde-849f-4bc67e320ea7" + } + } + }, + "corner-radius-extra-large-default": { + "value": "{corner-radius-800}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-extra-large-default", + "uuid": "d639a0b5-16b4-4d75-ab37-d87815c7b500" + } + } + }, + "corner-radius-full": { + "value": "{corner-radius-1000}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-full", + "uuid": "4853520b-bda3-45d1-bd20-8508cac08847" + } + } + }, + "corner-radius-small-size-small": { + "value": "{corner-radius-75}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-small", + "uuid": "3d39e5de-0800-4629-ae1a-99a34706a772" + } + } + }, + "corner-radius-small-size-medium": { + "value": "{corner-radius-100}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-medium", + "uuid": "a62a43dd-cb2a-4e18-bb94-7a9518668400" + } + } + }, + "corner-radius-small-size-large": { + "value": "{corner-radius-200}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-large", + "uuid": "f4f0bfc9-ce6d-473f-8dda-c9f21fb8a7b7" + } + } + }, + "corner-radius-small-size-extra-large": { + "value": "{corner-radius-300}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-small-size-extra-large", + "uuid": "d59337d1-4cec-43c0-821e-06a56745cbcc" + } + } + }, + "corner-radius-medium-size-extra-small": { + "value": "{corner-radius-300}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-extra-small", + "uuid": "d0e02d98-e93f-4f81-8d81-8f95e06ad360" + } + } + }, + "corner-radius-medium-size-small": { + "value": "{corner-radius-400}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-small", + "uuid": "892bc9de-16b2-4c51-9c18-b239e52ffd14" + } + } + }, + "corner-radius-medium-size-medium": { + "value": "{corner-radius-500}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-medium", + "uuid": "67fb5355-6d7c-4e4e-a4cb-cdba10a85d84" + } + } + }, + "corner-radius-medium-size-large": { + "value": "{corner-radius-600}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-large", + "uuid": "ede17e00-83ef-40c5-a1d0-a46372d3fc90" + } + } + }, + "corner-radius-medium-size-extra-large": { + "value": "{corner-radius-700}", + "type": "borderRadius", + "$extensions": { + "spectrum-tokens": { + "name": "corner-radius-medium-size-extra-large", + "uuid": "81752b3e-488a-4273-abb5-4ba8b7f278d9" + } + } } -} \ No newline at end of file +} diff --git a/src/tokens-studio/foundations/spectrum/palette/dark.json b/src/tokens-studio/foundations/spectrum/palette/dark.json index 0e4cfc51..2f876c00 100644 --- a/src/tokens-studio/foundations/spectrum/palette/dark.json +++ b/src/tokens-studio/foundations/spectrum/palette/dark.json @@ -1,7 +1,7 @@ { "Palette": { "black": { - "value": "rgb(0, 0, 0)", + "value": "#000000", "type": "color", "$extensions": { "spectrum-tokens": { @@ -11,7 +11,7 @@ } }, "white": { - "value": "rgb(255, 255, 255)", + "value": "#FFFFFF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -21,2143 +21,3313 @@ } }, "gray": { + "25": { + "value": "#111111", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "gray-25", + "uuid": "ac61b090-d356-4f7f-ac6d-b4f20617c9e3" + } + } + }, "50": { - "value": "rgb(29, 29, 29)", + "value": "#1B1B1B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d5641118-4015-426d-bf92-7c63393b3775", + "uuid": "0913be1e-b648-4b80-9976-fd8e5e53f4fc", "name": "gray-50" } } }, "75": { - "value": "rgb(38, 38, 38)", + "value": "#222222", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9a66da2c-7f73-4364-8674-85f794399e37", + "uuid": "1666d544-ad1b-445a-9a57-d2277fb752eb", "name": "gray-75" } } }, "100": { - "value": "rgb(50, 50, 50)", + "value": "#2C2C2C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4500355e-ce60-4046-b692-71301b6b1348", + "uuid": "abd011c4-87a5-4b1f-82e2-e94d118f417f", "name": "gray-100" } } }, "200": { - "value": "rgb(63, 63, 63)", + "value": "#323232", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "352ca27b-fdb8-4a66-b46d-6e6994c6a19d", + "uuid": "0a676e7a-8a89-4607-a918-3abcfb0234a2", "name": "gray-200" } } }, "300": { - "value": "rgb(84, 84, 84)", + "value": "#393939", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "70fe1801-98f7-4cb8-a275-8cb9f180f2fc", + "uuid": "cc8c4299-c40d-4e93-80b2-c052ee8aaf40", "name": "gray-300" } } }, "400": { - "value": "rgb(112, 112, 112)", + "value": "#444444", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4ef9462d-9c24-4a0f-b205-0eb04bf242a2", + "uuid": "c34dd99f-e576-4c98-a89d-86dd47514c55", "name": "gray-400" } } }, "500": { - "value": "rgb(144, 144, 144)", + "value": "#6D6D6D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c295d2a4-0711-40a0-904c-b8d0c7e1b724", + "uuid": "05808575-f14b-49d1-aefb-e3667ec0f5a4", "name": "gray-500" } } }, "600": { - "value": "rgb(178, 178, 178)", + "value": "#8A8A8A", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7c21df9e-eb58-44da-9bea-e2bacd494130", + "uuid": "8880b8f1-7850-49ef-a7ab-fd4e16cb37a6", "name": "gray-600" } } }, "700": { - "value": "rgb(209, 209, 209)", + "value": "#AFAFAF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "0b0dc002-bbda-46bf-a0fa-6d361009e31c", + "uuid": "3cc563c6-386e-4b08-850d-68d4a292e559", "name": "gray-700" } } }, "800": { - "value": "rgb(235, 235, 235)", + "value": "#DBDBDB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "bca0223a-6639-4881-a7a4-e131c28968e7", + "uuid": "d39fc368-ec71-40cd-85e9-afb07862f2b7", "name": "gray-800" } } }, "900": { - "value": "rgb(255, 255, 255)", + "value": "#F2F2F2", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "1ea0996b-81ab-4182-a86f-fd51a829eb96", + "uuid": "90d25d68-afb1-4b2a-9dba-3fe22d44976f", "name": "gray-900" } } + }, + "1000": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "gray-1000", + "uuid": "5ce8c477-ae6e-427a-ac5c-79d15c8056ab" + } + } } }, "blue": { "100": { - "value": "rgb(0, 56, 119)", + "value": "#0E173F", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "03fd9144-0640-4bb0-83bd-677a4e48c128", + "uuid": "7d56ac58-fd58-41b3-9bbd-448ae0a7dd85", "name": "blue-100" } } }, "200": { - "value": "rgb(0, 65, 138)", + "value": "#0F1C52", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "acb6d305-c1d9-498a-9db3-5d8e921dccda", + "uuid": "7b7d1fd8-cc1e-4053-b320-e481b8f64c46", "name": "blue-200" } } }, "300": { - "value": "rgb(0, 77, 163)", + "value": "#0C2175", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "da78a0bb-b306-4ff2-8080-bdf21ca6bed3", + "uuid": "d88d1685-29dc-486b-a0b9-9c90f60b8cde", "name": "blue-300" } } }, "400": { - "value": "rgb(0, 89, 194)", + "value": "#122D9A", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9729fbd6-6eb6-4c91-a73e-d0bd3ffbd1f3", + "uuid": "29d339bb-ef80-40f8-a69b-afa778b60805", "name": "blue-400" } } }, "500": { - "value": "rgb(3, 103, 224)", + "value": "#1A3AC3", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "209d7715-b78a-4265-908f-6d9a03e63bb1", + "uuid": "a61ed901-7f77-4667-9d19-fff6bab20623", "name": "blue-500" } } }, "600": { - "value": "rgb(19, 121, 243)", + "value": "#2549E5", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8e465599-1ad1-45f7-8db3-99caed033cfe", + "uuid": "7e770996-780a-4494-91ea-08c1ae6cfa80", "name": "blue-600" } } }, "700": { - "value": "rgb(52, 143, 244)", + "value": "#345BF8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9260c8ad-9e25-4103-baf2-ea008746a2f7", + "uuid": "5cc66280-e13a-459d-8529-c3f531aa5e4e", "name": "blue-700" } } }, "800": { - "value": "rgb(84, 163, 246)", + "value": "#456EFE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "10aaf031-3586-47a6-90f5-c698f6be5bd6", + "uuid": "cf0bafc5-f5c6-4986-a17a-6660dc542b71", "name": "blue-800" } } }, "900": { - "value": "rgb(114, 183, 249)", + "value": "#5681FF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2251d00a-e90d-4758-91af-50c1c37232fe", + "uuid": "82b09b04-6a70-4a95-9eb5-a321a66a6465", "name": "blue-900" } } }, "1000": { - "value": "rgb(143, 202, 252)", + "value": "#6995FE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f9a4d76d-cbf9-482d-b582-01462f1ca969", + "uuid": "147ed079-b4f0-4cd7-89cd-7ec93750d688", "name": "blue-1000" } } }, "1100": { - "value": "rgb(174, 219, 254)", + "value": "#7CA9FC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "94fd01de-1609-4dad-8e91-c0ce904aa743", + "uuid": "2a5d2e32-930d-4c50-b1fd-6781a1dc1db5", "name": "blue-1100" } } }, "1200": { - "value": "rgb(204, 233, 255)", + "value": "#98C0FC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "064dfc3f-d7fa-46c1-a4a4-21bc5b2f18d5", + "uuid": "ce7da4ba-77ed-4bdd-a154-90f389af6c2a", "name": "blue-1200" } } }, "1300": { - "value": "rgb(232, 246, 255)", + "value": "#B5D5FD", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "96f80a02-6ecf-4e17-b1f0-e508d8b0d422", + "uuid": "2bc63c0d-691c-4cc4-95b6-b4e530a44978", "name": "blue-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#D5E7FE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2d4fbd92-649f-457e-ad5c-39798f3da5a8", + "uuid": "eb86d777-ec23-47e4-adc6-1203709dc00d", "name": "blue-1400" } } + }, + "1500": { + "value": "#EEF5FF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "blue-1500", + "uuid": "616c28b4-d9bf-4ff3-9075-6acaad6c112c" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "blue-1600", + "uuid": "7e8a7cd3-c803-41a9-9178-b43f9eb2e735" + } + } } }, "green": { "100": { - "value": "rgb(4, 67, 41)", + "value": "#001E17", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c13e61ca-4448-47fe-ab6b-156a62e18057", + "uuid": "e5a14d4a-47c5-4a53-84c5-589a0749d906", "name": "green-100" } } }, "200": { - "value": "rgb(0, 78, 47)", + "value": "#00261D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "df621308-02ad-49b0-9be3-10aa387bca77", + "uuid": "e8f294f5-cb17-4fdc-b370-ca2e3f95d342", "name": "green-200" } } }, "300": { - "value": "rgb(0, 92, 56)", + "value": "#003326", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "14b4ff49-4ab1-48a6-aa1e-806c6cadaa62", + "uuid": "cd5e0471-a8c0-46cd-b98c-be3a74c2b6d2", "name": "green-300" } } }, "400": { - "value": "rgb(0, 108, 67)", + "value": "#004430", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ae488b77-a511-4ef2-846c-55b336525eec", + "uuid": "c5e88879-9773-446c-883e-96531bcb8fad", "name": "green-400" } } }, "500": { - "value": "rgb(0, 125, 78)", + "value": "#02573A", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7be03fbf-6ce6-4707-8628-ec9ae3465f47", + "uuid": "27649ccc-69a8-48d6-9d52-6d6e2e28ae17", "name": "green-500" } } }, "600": { - "value": "rgb(0, 143, 93)", + "value": "#036A43", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7cdbd4d6-643d-49f2-9c00-aef6f6b98eef", + "uuid": "a0513e49-8483-40f8-8b8f-41fdc222f13d", "name": "green-600" } } }, "700": { - "value": "rgb(18, 162, 108)", + "value": "#047C4B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4c105995-9269-4655-9bbd-bb50f9cdca4a", + "uuid": "9c24175e-34a5-46c8-b646-f70c08292776", "name": "green-700" } } }, "800": { - "value": "rgb(43, 180, 125)", + "value": "#068C52", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5471d254-44e5-4317-a6d6-eb24279c0b03", + "uuid": "412da16e-4db2-47d8-84d4-583ae35534f9", "name": "green-800" } } }, "900": { - "value": "rgb(67, 199, 143)", + "value": "#099D59", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "21cb58fb-f173-4348-9b70-1b20683b7a65", + "uuid": "5afee2ee-a5d5-4dcf-a917-11dfdd0c3691", "name": "green-900" } } }, "1000": { - "value": "rgb(94, 217, 162)", + "value": "#0EAF62", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d2fb208c-73f2-42c6-a27e-bd4f8832b25f", + "uuid": "3d6732a1-a1f9-4e18-927b-93cebaae3895", "name": "green-1000" } } }, "1100": { - "value": "rgb(129, 233, 184)", + "value": "#18C16E", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4a310c88-9def-42fe-ad5e-1153d185a5fe", + "uuid": "a2f8f6c6-07b4-43a4-8f59-995ea2bf4e82", "name": "green-1100" } } }, "1200": { - "value": "rgb(177, 244, 209)", + "value": "#39D786", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "53ba43a9-2d41-4a55-9193-0d569e939993", + "uuid": "07fa1b72-bf84-4fd5-9565-28373fae6a1f", "name": "green-1200" } } }, "1300": { - "value": "rgb(223, 250, 234)", + "value": "#7EE7AC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7a024876-6c60-4df1-863d-beda1d572bd6", + "uuid": "c5ec27ed-3a16-44fe-bb8d-a21edd2f4d73", "name": "green-1300" } } }, "1400": { - "value": "rgb(254, 255, 252)", + "value": "#BDF1D0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b07f7383-d795-49e5-9dac-1d448d978624", + "uuid": "df5458e5-891b-4a88-a96c-748a812978a7", "name": "green-1400" } } + }, + "1500": { + "value": "#E5FAEC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "green-1500", + "uuid": "8efbb45d-4d6d-423e-8a3d-cb7117f9fbf8" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "green-1600", + "uuid": "ce6f19ce-d3fe-4bad-a4fc-7863ea9fd186" + } + } } }, "orange": { "100": { - "value": "rgb(102, 37, 0)", + "value": "#311000", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "507c23ac-f6a7-4820-b052-c129975eaa20", + "uuid": "974ab8ec-6691-4696-b38c-77e16fb3df88", "name": "orange-100" } } }, "200": { - "value": "rgb(117, 45, 0)", + "value": "#3D1500", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "abba55d6-d5e0-445a-af5f-c61b58ee148d", + "uuid": "587d4ce3-4275-4d2a-916c-2b1bf78c38ea", "name": "orange-200" } } }, "300": { - "value": "rgb(137, 55, 0)", + "value": "#501B00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "38a3144d-99ef-4b82-9742-e15bf64bdae4", + "uuid": "74f40bbb-5afd-4c88-89d3-e69de9e2b604", "name": "orange-300" } } }, "400": { - "value": "rgb(158, 66, 0)", + "value": "#6A2400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "88889af1-222d-466a-b283-2a5bf6b577c8", + "uuid": "b912089a-b6c9-49ef-8a4b-0a1f6fbbe963", "name": "orange-400" } } }, "500": { - "value": "rgb(180, 78, 0)", + "value": "#872F00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f447dc9f-3375-4b1e-8813-7952734f6aa6", + "uuid": "8a56b352-d7d4-45d4-b403-448557656dab", "name": "orange-500" } } }, "600": { - "value": "rgb(202, 93, 0)", + "value": "#A23B00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "527058c0-0e17-42bc-903f-c43db0c9cb9d", + "uuid": "27b198b5-bf02-476a-a440-84c9a5bd2ce3", "name": "orange-600" } } }, "700": { - "value": "rgb(225, 109, 0)", + "value": "#B94900", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7816c1b2-49da-455e-a21f-4e82011f4dca", + "uuid": "f9e84513-57d6-4786-b8db-c86055cebfc6", "name": "orange-700" } } }, "800": { - "value": "rgb(244, 129, 12)", + "value": "#CD5600", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "21d33346-5120-4b05-9d50-b027fd44c7a5", + "uuid": "5a88ed4e-94f9-4533-ab13-3995b5a60a5a", "name": "orange-800" } } }, "900": { - "value": "rgb(254, 154, 46)", + "value": "#E06400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c3569470-05da-4825-a9cc-3e7ea1699fcd", + "uuid": "0fbe4f46-02a8-444d-ace5-c245c6f15112", "name": "orange-900" } } }, "1000": { - "value": "rgb(255, 181, 88)", + "value": "#F37500", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "02631a05-4d8e-4eed-af1f-e6c1f8c9c031", + "uuid": "92e06ff6-8347-4320-9a98-3054ba458d0e", "name": "orange-1000" } } }, "1100": { - "value": "rgb(253, 206, 136)", + "value": "#FF8900", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "aacaf0f0-b22a-4b25-9c87-6119c04ff035", + "uuid": "a571e2cd-2aff-4344-b608-45a48162cb61", "name": "orange-1100" } } }, "1200": { - "value": "rgb(255, 225, 179)", + "value": "#FFAD2D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "39d4fb83-3982-439c-a9f9-bd95ab2ba7e4", + "uuid": "8e3fe8e0-2b14-4331-869f-de2680ea60ac", "name": "orange-1200" } } }, "1300": { - "value": "rgb(255, 242, 221)", + "value": "#FFC974", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7f4eca34-effb-4749-8e80-b4b24dd96186", + "uuid": "06afaefe-7e0a-42e2-99b5-e62674e1185d", "name": "orange-1300" } } }, "1400": { - "value": "rgb(255, 253, 249)", + "value": "#FFE1B2", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "cf947ed5-5665-4b46-aead-e18f2477ed48", + "uuid": "9f2f551f-b606-48ce-9493-888587d3ccb6", "name": "orange-1400" } } + }, + "1500": { + "value": "#FFF3E1", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "orange-1500", + "uuid": "48b0167c-d675-4fc5-9130-1b36a94fd163" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "orange-1600", + "uuid": "b2f21ea2-e546-4b1a-a72d-e840172857b4" + } + } } }, "red": { "100": { - "value": "rgb(123, 0, 0)", + "value": "#360A03", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9e721c6e-a111-411c-a892-55bf69fcd169", + "uuid": "04f6044b-d0fa-4705-858c-2dc5721ec30f", "name": "red-100" } } }, "200": { - "value": "rgb(141, 0, 0)", + "value": "#440D05", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "803d7924-3746-43b0-ab32-6b4b5f4dae19", + "uuid": "b18ca77b-898e-4e09-88e2-8901de3e9172", "name": "red-200" } } }, "300": { - "value": "rgb(165, 0, 0)", + "value": "#571107", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "330ceaaf-c223-44b9-9548-7ee41e6ca590", + "uuid": "fcfcf026-be31-4a05-b833-6757cacb8b05", "name": "red-300" } } }, "400": { - "value": "rgb(190, 4, 3)", + "value": "#73180B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e3eb789d-b34a-467e-a195-77aaee2f0d6b", + "uuid": "8f9fa135-5aca-4e42-b247-fdfbf74bc07b", "name": "red-400" } } }, "500": { - "value": "rgb(215, 25, 19)", + "value": "#931F11", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c6b687eb-7999-4ef4-a680-aa15581db960", + "uuid": "ec50a21c-88aa-41a8-b607-c8b1c407ac4f", "name": "red-500" } } }, "600": { - "value": "rgb(234, 56, 41)", + "value": "#B12617", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b4423bfa-8732-42df-ba45-361d1987bc0b", + "uuid": "ff0fa040-17d6-4570-84b5-7a88c5bb9f45", "name": "red-600" } } }, "700": { - "value": "rgb(246, 88, 67)", + "value": "#CD2E1D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ba040391-245e-4cd5-b499-9d3f9d82dedb", + "uuid": "cb2486de-b2be-45e5-b459-6e371b29d357", "name": "red-700" } } }, "800": { - "value": "rgb(255, 117, 94)", + "value": "#E63623", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f1e2ab4f-0bca-4c9e-ac63-18d36726560e", + "uuid": "9ff36ad0-608e-46a7-ab56-00af3d307d83", "name": "red-800" } } }, "900": { - "value": "rgb(255, 149, 129)", + "value": "#FC432E", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c71c3423-88ee-4611-b07b-58630ce081f0", + "uuid": "ccb79099-59f4-4bf2-b149-0de72f556a45", "name": "red-900" } } }, "1000": { - "value": "rgb(255, 176, 161)", + "value": "#FF6756", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e584aa4f-7e8f-4815-a9ca-f9804e233f5d", + "uuid": "95621c5a-1768-4707-a2ce-bd15c61c89f4", "name": "red-1000" } } }, "1100": { - "value": "rgb(255, 201, 189)", + "value": "#FF8678", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "843a8bc9-646d-44e0-b6c0-728186ebc983", + "uuid": "53617d38-1075-4b47-87c7-4695b385a2d7", "name": "red-1100" } } }, "1200": { - "value": "rgb(255, 222, 216)", + "value": "#FFA79D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "34ad97a7-a6ee-4240-9eef-596694bf6e6b", + "uuid": "e7820c1c-ff58-431d-b521-b81ee3281db0", "name": "red-1200" } } }, "1300": { - "value": "rgb(255, 241, 238)", + "value": "#FFC4BD", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "27f9bb17-392f-4707-971e-1f42ebf2b3d9", + "uuid": "7691bca6-3749-4cb7-a950-a94fe3d2910f", "name": "red-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#FFDEDB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "bb706c45-98ac-4fbe-b838-d42d930d31c0", + "uuid": "aaafa24c-cb3c-48cd-9cb7-e164be140ab5", "name": "red-1400" } } + }, + "1500": { + "value": "#FFF2F0", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "red-1500", + "uuid": "e99ac2fd-25ab-4202-a279-41808cc8dbc6" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "red-1600", + "uuid": "685778a4-bc17-4d74-a713-1776fc2516af" + } + } } }, "celery": { "100": { - "value": "rgb(0, 69, 10)", + "value": "#0B1F00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c711d2ee-7915-40f4-bf2e-ac3f31d60311", + "uuid": "43feed9a-9a2a-44e0-9506-9bc5eb8eab1d", "name": "celery-100" } } }, "200": { - "value": "rgb(0, 80, 12)", + "value": "#0F2600", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "96d6a7b1-617c-44db-9ef3-d70063895351", + "uuid": "741a30fb-62a9-4c76-a78e-cc2590af9c7d", "name": "celery-200" } } }, "300": { - "value": "rgb(0, 94, 14)", + "value": "#153301", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b1432da5-d086-4e16-b7dd-fd9d92fef470", + "uuid": "5eda4487-8f82-48ed-8b22-aa38601bbf88", "name": "celery-300" } } }, "400": { - "value": "rgb(0, 109, 15)", + "value": "#1F4304", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c573ed43-0055-47ff-8c3b-de32582b521e", + "uuid": "646d80c1-7073-4e13-bbfe-4bd0c2226079", "name": "celery-400" } } }, "500": { - "value": "rgb(0, 127, 15)", + "value": "#295608", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "350fb94c-ae2b-4843-808c-a8b6a55a0596", + "uuid": "7d4c282b-78ce-4b2c-ab39-26bf02366e4d", "name": "celery-500" } } }, "600": { - "value": "rgb(0, 145, 18)", + "value": "#32690B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f24733a3-e55f-467d-b757-4ebf620b8c22", + "uuid": "260d8921-3810-4a5d-a20f-cd00170cf951", "name": "celery-600" } } }, "700": { - "value": "rgb(4, 165, 30)", + "value": "#3C7A0F", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "983d90f4-9b72-4a6b-a6fd-7934e425a305", + "uuid": "7e7e6abb-a2e9-4308-ac8e-e6866ec17c64", "name": "celery-700" } } }, "800": { - "value": "rgb(34, 184, 51)", + "value": "#458A13", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8f3ec908-66e4-48da-b129-9bb3420e11e5", + "uuid": "3b130e0d-eb9b-49e6-84db-eda6ee95eee5", "name": "celery-800" } } }, "900": { - "value": "rgb(68, 202, 73)", + "value": "#4E9A17", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "48c0f87a-4d30-4626-b7f0-3e697f08ed49", + "uuid": "706f3a95-ab27-497f-aab7-f4ed806eef30", "name": "celery-900" } } }, "1000": { - "value": "rgb(105, 220, 99)", + "value": "#58AC1C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c2f2caa8-d043-4213-a79e-23a0868e62f7", + "uuid": "021a55b8-26ae-4767-82fb-06b20c58762b", "name": "celery-1000" } } }, "1100": { - "value": "rgb(142, 235, 127)", + "value": "#64BE23", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "dcb055d0-c653-4b49-8b40-93d4d8b6e25e", + "uuid": "e091babe-6e02-4393-a67e-63222ab860b4", "name": "celery-1100" } } }, "1200": { - "value": "rgb(180, 247, 162)", + "value": "#74D52E", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "73da5344-395b-43ff-bb50-7dd5f2dbc225", + "uuid": "9913e84a-4070-476f-a570-a16781a924cf", "name": "celery-1200" } } }, "1300": { - "value": "rgb(221, 253, 211)", + "value": "#88EA41", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "82e856f7-e76e-4b5b-be5b-46d3eb113c5f", + "uuid": "d2d8dc91-da75-4c56-a0d8-e6e9802434ad", "name": "celery-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#AAFB70", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "963eafe6-3738-4470-a5dd-938e9f9c15aa", + "uuid": "c5c3c68c-8293-4ebb-a8d1-9f4af902906e", "name": "celery-1400" } } + }, + "1500": { + "value": "#DEFFC6", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "celery-1500", + "uuid": "ad9c1278-7296-4aef-9e19-6cabc2997bfa" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "celery-1600", + "uuid": "f1a7d5b6-4414-493a-a5d8-77d81a0121a2" + } + } } }, "chartreuse": { "100": { - "value": "rgb(48, 64, 0)", + "value": "#171C00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fe55390b-676c-42c3-bcaa-fc5295d59c3c", + "uuid": "bdc6a473-3109-44c6-9e2f-198d3224d75f", "name": "chartreuse-100" } } }, "200": { - "value": "rgb(55, 74, 0)", + "value": "#1E2400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "76dda145-58f8-448a-b37a-2f4b2d4f7fdd", + "uuid": "b18f4550-5bbe-496c-b4a5-13df8fd0c7d7", "name": "chartreuse-200" } } }, "300": { - "value": "rgb(65, 87, 0)", + "value": "#272F00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4dd24fac-30ad-45a2-825f-3573c84496e8", + "uuid": "b98dec90-df71-4593-946d-91df7918caac", "name": "chartreuse-300" } } }, "400": { - "value": "rgb(76, 102, 0)", + "value": "#353F00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ba474593-d290-441c-8077-b74c098f59d2", + "uuid": "6a974b7d-ccd2-4778-baae-8caf419a529c", "name": "chartreuse-400" } } }, "500": { - "value": "rgb(89, 118, 0)", + "value": "#445200", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "234a0a76-ffd8-4d22-8d66-21e0f84c42d2", + "uuid": "46d8fd3b-0e51-4cdd-a33c-de184b82dcc5", "name": "chartreuse-500" } } }, "600": { - "value": "rgb(102, 136, 0)", + "value": "#536400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "efd39a1a-549c-4742-918b-bec4ea48539b", + "uuid": "965174d2-e743-41df-a8e2-570b2ae2f447", "name": "chartreuse-600" } } }, "700": { - "value": "rgb(117, 154, 0)", + "value": "#617400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d8876d4a-e6d0-447b-80ec-3804221d4b7b", + "uuid": "a615bb51-0249-4201-b1c9-1c6269b82ec2", "name": "chartreuse-700" } } }, "800": { - "value": "rgb(132, 173, 1)", + "value": "#6D8300", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "82546f0c-0707-4767-ad1f-2fae18434d91", + "uuid": "343f1685-2314-4a64-bc7a-5b7b3fd9fdcf", "name": "chartreuse-800" } } }, "900": { - "value": "rgb(148, 192, 8)", + "value": "#7A9300", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8a0c7b2d-66fc-499a-bb16-fd18a42ef2ed", + "uuid": "1637c50e-88e4-4273-8a75-6e8a233a690c", "name": "chartreuse-900" } } }, "1000": { - "value": "rgb(166, 211, 18)", + "value": "#88A400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7feea643-ca0a-4aca-8acf-da425fbe99a4", + "uuid": "7dbedc59-e21c-4953-a7af-5e91d170604a", "name": "chartreuse-1000" } } }, "1100": { - "value": "rgb(184, 229, 37)", + "value": "#97B500", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "550e1eb2-bbe0-4a14-8e53-d15dc06cee35", + "uuid": "90417b40-97dd-47b3-9dbc-4ac45f8e4a5f", "name": "chartreuse-1100" } } }, "1200": { - "value": "rgb(205, 245, 71)", + "value": "#A9CB00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "07b5da40-2e3c-43bf-959a-45ceb8bf9940", + "uuid": "e4b04d5d-e99d-41c5-8b24-540d653ef3ff", "name": "chartreuse-1200" } } }, "1300": { - "value": "rgb(231, 254, 154)", + "value": "#BBE100", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3ab82f98-3b65-4412-adef-57c1e4833421", + "uuid": "615841b9-08b2-4e21-981a-b8f5247e9e89", "name": "chartreuse-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#DBF075", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5ac81a8e-2997-4b8f-aa21-ca335b0f3cfe", + "uuid": "a75188c9-02e3-4337-8056-9a6f8f39001f", "name": "chartreuse-1400" } } + }, + "1500": { + "value": "#F2F9CE", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "chartreuse-1500", + "uuid": "d7f569e2-f91c-439e-8e5a-8c8c825367ff" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "chartreuse-1600", + "uuid": "753f7aa2-6c7d-4b43-baf9-c72adbd9279d" + } + } } }, "cyan": { "100": { - "value": "rgb(0, 61, 98)", + "value": "#001D27", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "efe22abb-6616-4456-81a0-37ee1951aba1", + "uuid": "24a8bb5a-93c3-4dd1-9ea2-d48c11479fe7", "name": "cyan-100" } } }, "200": { - "value": "rgb(0, 71, 111)", + "value": "#002431", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "73ab4a44-d2ef-45e7-a810-6c067657ce40", + "uuid": "3445cf4b-2460-4692-acf2-71844d687da4", "name": "cyan-200" } } }, "300": { - "value": "rgb(0, 85, 127)", + "value": "#003041", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f9868f72-1d95-4040-a223-659f98ba702f", + "uuid": "e4bcf4fc-aaec-49a5-a2bb-6bb55e7fff47", "name": "cyan-300" } } }, "400": { - "value": "rgb(0, 100, 145)", + "value": "#004058", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f20b54ee-fabd-4b7a-8d96-78e355a77e96", + "uuid": "94a5bd53-d69a-4063-b630-1976230d4f2d", "name": "cyan-400" } } }, "500": { - "value": "rgb(0, 116, 162)", + "value": "#005271", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d300a6ab-8f25-4a0f-b861-6023fb33d38a", + "uuid": "909baeef-fd2f-4550-89ea-fb7ac9ea2db5", "name": "cyan-500" } } }, "600": { - "value": "rgb(0, 134, 180)", + "value": "#03638C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "bb07fb46-9ca3-4e0d-b004-97ec2bc4a5f0", + "uuid": "d753ef33-bfc0-424b-a2ac-ea87ecbee590", "name": "cyan-600" } } }, "700": { - "value": "rgb(0, 153, 198)", + "value": "#0873A8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5f971006-82ff-4793-aa03-82c2e21bebf0", + "uuid": "3cb348d4-14a9-43da-84c4-068cf46c8c6f", "name": "cyan-700" } } }, "800": { - "value": "rgb(14, 173, 215)", + "value": "#0F80C2", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d87d8d1d-570f-4c3a-8736-f71bcc265c44", + "uuid": "ee8673ca-c39c-437e-b3a5-416f4e8664d3", "name": "cyan-800" } } }, "900": { - "value": "rgb(44, 193, 230)", + "value": "#188EDC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "807d5e18-52ee-4b22-9bf3-b969c83e01ba", + "uuid": "9c183829-4858-4908-b1ac-d89f40f2e903", "name": "cyan-900" } } }, "1000": { - "value": "rgb(84, 211, 241)", + "value": "#269FF4", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "162dd4e2-ce25-431c-9849-cb4ab0625c51", + "uuid": "04f3d463-9118-43d5-973d-8bf94417912d", "name": "cyan-1000" } } }, "1100": { - "value": "rgb(127, 228, 249)", + "value": "#3FB1FF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "db93015d-b200-4437-8399-aec786c338db", + "uuid": "62a7ebff-a49b-4e7a-981f-692a506b4146", "name": "cyan-1100" } } }, "1200": { - "value": "rgb(167, 241, 255)", + "value": "#6BC7FF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3245ab92-850f-440d-bec6-1cdc34ab38b8", + "uuid": "36a2af99-eef4-476b-a3b8-58eade0931b7", "name": "cyan-1200" } } }, "1300": { - "value": "rgb(215, 250, 255)", + "value": "#98DBFF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3bdb98f7-2dad-4c35-96e4-b009cbc01180", + "uuid": "5f3df12b-1330-4482-ad34-c623bd36253c", "name": "cyan-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#C3ECFC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5bd12e39-1386-49d5-af4f-d9f7dd1c549c", + "uuid": "fe63b8a3-ebb9-45fe-99c2-e246b53e06a6", "name": "cyan-1400" } } + }, + "1500": { + "value": "#E6F8FD", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cyan-1500", + "uuid": "ce687c28-38ce-4fbe-8181-060e566b4196" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cyan-1600", + "uuid": "291e6a5c-41b3-4bf1-ad10-38d427e80e48" + } + } } }, "fuchsia": { "100": { - "value": "rgb(107, 3, 106)", + "value": "#32003D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fcf73bd6-3852-429a-9095-14524c2efea3", + "uuid": "3a434405-c4b0-40ef-b383-7cb9a9b60cab", "name": "fuchsia-100" } } }, "200": { - "value": "rgb(123, 0, 123)", + "value": "#3D004A", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "57ce4570-03d7-45a8-8f6c-85a2994fb067", + "uuid": "779ec441-475d-41de-b207-3e139c7c3168", "name": "fuchsia-200" } } }, "300": { - "value": "rgb(144, 0, 145)", + "value": "#4F005F", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a297d901-18ab-4da0-a5fa-d9749e8ea9db", + "uuid": "5fa7110f-0c33-4139-8277-eff40921939e", "name": "fuchsia-300" } } }, "400": { - "value": "rgb(165, 13, 166)", + "value": "#660978", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7eb42bf3-0008-4e2c-a085-0c0b0a56deba", + "uuid": "a81bfdd6-4b80-4f1a-922d-2f6e04c27e01", "name": "fuchsia-400" } } }, "500": { - "value": "rgb(185, 37, 185)", + "value": "#7F1792", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5a5a7aac-7494-40d2-93c8-66e828c2397e", + "uuid": "7ecdb8fa-7c4b-4392-bca8-a00a9b931cb4", "name": "fuchsia-500" } } }, "600": { - "value": "rgb(205, 57, 206)", + "value": "#9726AA", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "90ef0274-fb46-469e-a8d4-030b88dfe969", + "uuid": "0fb76488-9965-4cf9-878f-ceed7fc2be43", "name": "fuchsia-600" } } }, "700": { - "value": "rgb(223, 81, 224)", + "value": "#AD33C0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3cebbadd-c690-493d-a36e-fc55d99d4b4b", + "uuid": "5f971453-aa30-4c1f-8cbc-be45ff042fcd", "name": "fuchsia-700" } } }, "800": { - "value": "rgb(235, 110, 236)", + "value": "#C040D4", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "163fa258-c7a0-433a-bf26-875d55e2ba70", + "uuid": "5848fed6-5b42-42ef-9800-8f32e42cf6ba", "name": "fuchsia-800" } } }, "900": { - "value": "rgb(244, 140, 242)", + "value": "#D549EB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d0d6c85c-233c-4394-b6a3-ac326b70992f", + "uuid": "3c6d42c9-4cba-4373-a61c-c8617c509f92", "name": "fuchsia-900" } } }, "1000": { - "value": "rgb(250, 168, 245)", + "value": "#E85BFD", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "31064db2-1b72-47c3-909d-339589204458", + "uuid": "a13d5f15-e4cc-4f7c-928f-aaccbf0d590e", "name": "fuchsia-1000" } } }, "1100": { - "value": "rgb(254, 194, 248)", + "value": "#F07AFF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "135ce68a-832c-4903-b1e3-39b0c2e4f10b", + "uuid": "0a4eb3af-d067-4d9f-af91-66c676e49e26", "name": "fuchsia-1100" } } }, "1200": { - "value": "rgb(255, 219, 250)", + "value": "#F59FFF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6c569c3e-48fe-4bde-8521-7b63d8c4a37d", + "uuid": "0d93ff9f-63e8-4caf-9e7b-714e56d968d4", "name": "fuchsia-1200" } } }, "1300": { - "value": "rgb(255, 239, 252)", + "value": "#F8BFFF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "712ba0be-7bd6-42d1-a1db-ba4aebb7eb28", + "uuid": "abd44b32-b837-4e11-95c7-4ba1c34db44b", "name": "fuchsia-1300" } } }, "1400": { - "value": "rgb(255, 253, 255)", + "value": "#FBDBFF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9b3a54f9-d94b-4a21-9145-5891d0cf1405", + "uuid": "7c819391-d74c-4326-ae0d-fe3534eb44e3", "name": "fuchsia-1400" } } + }, + "1500": { + "value": "#FDF1FF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "fuchsia-1500", + "uuid": "ff510e34-7c7c-4795-a224-b1e1c5cc25e0" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "fuchsia-1600", + "uuid": "c06ab95f-6471-4840-99cc-710851d25de4" + } + } } }, "indigo": { "100": { - "value": "rgb(40, 44, 140)", + "value": "#1E005D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4a856cd1-643f-485c-991b-c94a750277dc", + "uuid": "e60cb247-c265-4009-9f0a-bcbbbb801dd4", "name": "indigo-100" } } }, "200": { - "value": "rgb(47, 52, 163)", + "value": "#23006E", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "4d6f5e35-b3bd-4215-a135-f7b2b67447e0", + "uuid": "56c709dd-b41e-478a-8098-21014e3f9ec8", "name": "indigo-200" } } }, "300": { - "value": "rgb(57, 63, 187)", + "value": "#2F008C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6209d9c9-3639-4fdd-83de-904ca5ae5638", + "uuid": "716f244e-67c5-4566-b824-ed7f2192b585", "name": "indigo-300" } } }, "400": { - "value": "rgb(70, 75, 211)", + "value": "#3E0CAE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3d843f10-9396-43de-a855-a18b412b53fc", + "uuid": "c256e06e-07bc-4dcd-9239-48841916c93b", "name": "indigo-400" } } }, "500": { - "value": "rgb(85, 91, 231)", + "value": "#4F1ED1", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "1283a5f4-4a5d-4d59-a1ea-5bdd3e0396c5", + "uuid": "1ea0564b-6e88-456e-a796-4620d57b8771", "name": "indigo-500" } } }, "600": { - "value": "rgb(104, 109, 244)", + "value": "#5F34EB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c71827e0-5782-4b4f-b198-c6d7d4077249", + "uuid": "df590853-ce16-4ddf-bbe9-a912695eae17", "name": "indigo-600" } } }, "700": { - "value": "rgb(124, 129, 251)", + "value": "#6D4BF8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5fc6c5cb-3072-46c6-a8b0-b88091835ff4", + "uuid": "0ea3a7e0-35c5-46ec-ae9d-500c5ee06a16", "name": "indigo-700" } } }, "800": { - "value": "rgb(145, 149, 255)", + "value": "#7761FC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9b272e22-81ba-4e31-a220-b79c4181c96f", + "uuid": "97e84a30-1de4-4e84-8d59-e625f9ec9ab1", "name": "indigo-800" } } }, "900": { - "value": "rgb(167, 170, 255)", + "value": "#8077FE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3282c01c-7b68-4999-a12e-ee389a6f9ea1", + "uuid": "5cb7ff5e-ec53-4df8-b59d-a1419190a6cf", "name": "indigo-900" } } }, "1000": { - "value": "rgb(188, 190, 255)", + "value": "#8B8DFE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3fab75f4-9161-4040-88ca-0af98b1236fd", + "uuid": "0bf6170c-50d7-4600-96fe-2d1af93f173a", "name": "indigo-1000" } } }, "1100": { - "value": "rgb(208, 210, 255)", + "value": "#99A1FF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c537ba0b-c81a-40f3-8255-5be0491ca2a6", + "uuid": "c85ea1d9-e28d-46c5-abd0-c053858770e0", "name": "indigo-1100" } } }, "1200": { - "value": "rgb(226, 228, 255)", + "value": "#B0BAFF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f9446b63-346f-4490-b975-929bdbb12655", + "uuid": "91f9622a-03b4-47b0-b380-5f6d64c13b5d", "name": "indigo-1200" } } }, "1300": { - "value": "rgb(243, 243, 254)", + "value": "#C7D0FF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "11e00286-b34f-44c7-ba95-ab2e07990106", + "uuid": "c0bfd081-7859-4ed5-aa4c-c1f547dab8f3", "name": "indigo-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#DFE4FF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ee07f360-a89e-49e6-baf5-462b84133aed", + "uuid": "080f9ea4-1d87-4691-adb7-3875a7708555", "name": "indigo-1400" } } + }, + "1500": { + "value": "#F3F4FF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "indigo-1500", + "uuid": "498d2f9c-7304-406d-a3f8-802a2cbd3502" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "indigo-1600", + "uuid": "c498c300-86e8-4c71-bd3e-5a344324b9c1" + } + } } }, "magenta": { "100": { - "value": "rgb(118, 0, 58)", + "value": "#3B0016", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c49f033b-6e6f-4945-b199-af3ad874e8ea", + "uuid": "9149371a-1978-4136-a89c-8895edd35e7d", "name": "magenta-100" } } }, "200": { - "value": "rgb(137, 0, 66)", + "value": "#4A001B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "28ea9b3a-7802-4f3e-a576-9ca1e217a7e4", + "uuid": "f5ffc5b3-d3e6-4d7e-b8a8-850324b5d9b8", "name": "magenta-200" } } }, "300": { - "value": "rgb(160, 0, 77)", + "value": "#5D0022", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8a21b266-6888-4f68-9f44-7026634d6bdf", + "uuid": "673ab9b4-e296-4472-b0b5-15adf9f1f762", "name": "magenta-300" } } }, "400": { - "value": "rgb(182, 18, 90)", + "value": "#7B002D", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d0319094-27f1-4634-b436-07f1a0ade2ab", + "uuid": "60560de2-28e6-44b4-bcff-f357fe13a4a7", "name": "magenta-400" } } }, "500": { - "value": "rgb(203, 38, 109)", + "value": "#98073C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "60a7cd2d-5c88-4fbe-8180-6840d52678fc", + "uuid": "830123a6-0e42-4c4f-9b20-2f4204d37af8", "name": "magenta-500" } } }, "600": { - "value": "rgb(222, 61, 130)", + "value": "#B5134C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f7dd5e8b-4c41-4385-8d96-a984b62051be", + "uuid": "e6b14a1d-e26e-41c4-b386-7fb3f95b8c93", "name": "magenta-600" } } }, "700": { - "value": "rgb(237, 87, 149)", + "value": "#CF1F5C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3f07950a-4823-4826-9d78-d7b450c9e961", + "uuid": "11055a6b-7e81-4b59-9feb-8b0b6352be07", "name": "magenta-700" } } }, "800": { - "value": "rgb(249, 114, 167)", + "value": "#E72969", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7903bf4c-e957-4e84-b0c0-276c80e9a4d9", + "uuid": "6676db79-7b7e-4fcf-868b-321f9372517a", "name": "magenta-800" } } }, "900": { - "value": "rgb(255, 143, 185)", + "value": "#FF3377", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f316b3d8-5763-4166-94fe-664f477dd76f", + "uuid": "fa5e523e-7ee3-46d0-971f-4ee95c7222b8", "name": "magenta-900" } } }, "1000": { - "value": "rgb(255, 172, 202)", + "value": "#FF6095", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6eeb3d6f-9eab-459c-b34c-e25c9ea107a4", + "uuid": "bdabbfb5-1ae6-44a7-bc2e-55e11f4e5154", "name": "magenta-1000" } } }, "1100": { - "value": "rgb(255, 198, 218)", + "value": "#FF80AB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "36c81f83-2299-4569-b133-4300d49fa3c2", + "uuid": "548a74eb-4401-44f4-85b4-921287d84ac9", "name": "magenta-1100" } } }, "1200": { - "value": "rgb(255, 221, 233)", + "value": "#FFA3C2", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "72e2e0cb-7512-4e3b-8ac6-42a63a746e2b", + "uuid": "9c634688-1ad5-438b-bd44-a92c64ef9934", "name": "magenta-1200" } } }, "1300": { - "value": "rgb(255, 240, 245)", + "value": "#FFC1D6", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b1caf781-77c9-48eb-84a5-507d84b6cdf4", + "uuid": "6c441ca7-0294-462f-ac18-7b28ff20d7ff", "name": "magenta-1300" } } }, "1400": { - "value": "rgb(255, 252, 253)", + "value": "#FFDCE8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "2dcf8d47-a293-4ed2-bac5-2f935ed7ca5b", + "uuid": "15f36ded-01af-4c5d-8b11-45523e7d908e", "name": "magenta-1400" } } + }, + "1500": { + "value": "#FFF1F6", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "magenta-1500", + "uuid": "d2814529-9c64-47fd-a317-8669d565cf67" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "magenta-1600", + "uuid": "c24954cd-f17c-47b4-8a3e-8cb019a3e330" + } + } } }, "purple": { "100": { - "value": "rgb(76, 13, 157)", + "value": "#29004F", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "1d180da0-3c21-488e-b017-728194ed8578", + "uuid": "ffc5aa7a-c339-4583-a586-3e8b1329d16d", "name": "purple-100" } } }, "200": { - "value": "rgb(89, 17, 177)", + "value": "#320060", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "bad41b06-2848-4eb0-a3a0-6c2b90da8630", + "uuid": "2d67627b-372c-46af-b015-6c95bd027664", "name": "purple-200" } } }, "300": { - "value": "rgb(105, 28, 200)", + "value": "#40007A", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "22929eab-9a55-48b1-9798-d04d9bbea6cf", + "uuid": "be628028-f41d-4ace-abf3-f7f38ecb2e01", "name": "purple-300" } } }, "400": { - "value": "rgb(122, 45, 218)", + "value": "#53009F", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d2c6a538-52af-4dc0-8318-b35453ffe8c4", + "uuid": "474fed30-921a-4795-8999-2310521c64c5", "name": "purple-400" } } }, "500": { - "value": "rgb(140, 65, 233)", + "value": "#6B06C3", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3a969a81-eefb-468b-8889-1ad5b47c361f", + "uuid": "b912e8ba-ed77-4179-9b80-7448f9e37193", "name": "purple-500" } } }, "600": { - "value": "rgb(157, 87, 243)", + "value": "#8222D7", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "694dda5b-71ac-4169-b71e-65fe62650098", + "uuid": "05638159-aaf7-4f3e-849e-a46e80cd9ee6", "name": "purple-600" } } }, "700": { - "value": "rgb(172, 111, 249)", + "value": "#943EE0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "84640df4-6e8f-4e2c-893c-187875bf8e2c", + "uuid": "fb186f5e-72a8-4a27-8ba2-d2fdf53d5a5c", "name": "purple-700" } } }, "800": { - "value": "rgb(187, 135, 251)", + "value": "#A154E5", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "421e2e18-233d-40d8-81ed-b777d7b4539b", + "uuid": "30aae683-83e3-47a1-bdcb-ebe658e110a3", "name": "purple-800" } } }, "900": { - "value": "rgb(202, 159, 252)", + "value": "#AD69E9", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c767aaa3-0818-4404-a921-94f924159b8f", + "uuid": "12d86845-fd54-4d30-aac8-bb9451560ba5", "name": "purple-900" } } }, "1000": { - "value": "rgb(215, 182, 254)", + "value": "#BA7FED", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "8c16ea42-3e31-41e3-9492-73f1a554079c", + "uuid": "e527a3bd-3543-4b40-8a9c-eb465695bdb9", "name": "purple-1000" } } }, "1100": { - "value": "rgb(228, 204, 254)", + "value": "#C595F0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b45da3d4-6b07-451e-8960-ac7bca1e4da2", + "uuid": "18265c0a-e466-4575-a364-3dfda9e71bd4", "name": "purple-1100" } } }, "1200": { - "value": "rgb(239, 223, 255)", + "value": "#D4B0F4", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5bac1ada-9c00-4243-af3a-bc3727745035", + "uuid": "ae071768-dcdd-4e30-8f72-d066abac97af", "name": "purple-1200" } } }, "1300": { - "value": "rgb(249, 240, 255)", + "value": "#E1C9F7", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5e3bbc6d-1489-48ca-b5a1-423288727b1d", + "uuid": "fbaaff02-da93-4f45-830a-5fc449a58f0b", "name": "purple-1300" } } }, "1400": { - "value": "rgb(255, 253, 255)", + "value": "#EEE0FA", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ae3f64d4-ed66-4d97-b7e5-65ee395f7883", + "uuid": "9ae063c9-5817-45b4-9f57-4b2196c845b9", "name": "purple-1400" } } + }, + "1500": { + "value": "#F8F3FD", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "purple-1500", + "uuid": "d96c8fa3-5872-4bd2-81a3-0109ddf0bf18" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "purple-1600", + "uuid": "0f10b720-c0f8-46db-9205-fdde265d05f7" + } + } } }, "seafoam": { "100": { - "value": "rgb(18, 65, 63)", + "value": "#001E1B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d668ef92-6475-40e4-9837-d607fbb6b1ef", + "uuid": "080b56a3-6f95-422a-9f4b-d850966c4984", "name": "seafoam-100" } } }, "200": { - "value": "rgb(14, 76, 73)", + "value": "#002723", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "05f93ec8-51ce-40fc-8609-0f7b6237c68f", + "uuid": "2876bdd7-af97-4cd6-89cc-bdb9c2110946", "name": "seafoam-200" } } }, "300": { - "value": "rgb(4, 90, 87)", + "value": "#00322C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7a5a19a8-fb25-4771-9972-837db8c65e9d", + "uuid": "d90b7496-0f54-41ce-96eb-c973457661ae", "name": "seafoam-300" } } }, "400": { - "value": "rgb(0, 105, 101)", + "value": "#00433B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d98c80fb-6f43-46bb-ac9a-227cf134ca67", + "uuid": "ec603c2c-b2b2-4769-a889-ba7c91a458eb", "name": "seafoam-400" } } }, "500": { - "value": "rgb(0, 122, 117)", + "value": "#02564B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a4a5e461-575d-4ae5-9b0b-985b6b8e70b1", + "uuid": "c24b866c-5ac0-49de-857b-48c655fa9990", "name": "seafoam-500" } } }, "600": { - "value": "rgb(0, 140, 135)", + "value": "#046959", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "dbc0b9aa-b312-43fd-b412-e2013caf91d7", + "uuid": "73b58f7e-008b-44ae-8969-19d981d444d6", "name": "seafoam-600" } } }, "700": { - "value": "rgb(0, 158, 152)", + "value": "#067A67", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3fd24914-a5c7-4d79-b73a-3dfb135dd75b", + "uuid": "0b8528e6-ceea-47a5-9727-24e97d7bc138", "name": "seafoam-700" } } }, "800": { - "value": "rgb(3, 178, 171)", + "value": "#088A74", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "49b5ed44-a22b-4565-a09f-1e7ebc1bc63e", + "uuid": "df8f47d4-5c3b-4ecb-b9fb-5d2dbd39d696", "name": "seafoam-800" } } }, "900": { - "value": "rgb(54, 197, 189)", + "value": "#0A9A80", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5bbc257f-e7b9-46eb-a591-dbe2ad1850b7", + "uuid": "dca23a18-2b19-48bf-9894-2f0948f6c05e", "name": "seafoam-900" } } }, "1000": { - "value": "rgb(93, 214, 207)", + "value": "#0CAD8E", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e134295a-a409-4143-b656-98b6e9cb40bd", + "uuid": "c416b5c5-0506-419f-88ca-f722f12a9d86", "name": "seafoam-1000" } } }, "1100": { - "value": "rgb(132, 230, 223)", + "value": "#0EBE9C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "9f1e7783-21c4-4890-9f61-af5423aaec37", + "uuid": "4a853bfc-f1b0-4e39-8cd8-da0350c99cd5", "name": "seafoam-1100" } } }, "1200": { - "value": "rgb(176, 242, 236)", + "value": "#1DD6B0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "0f47e0b5-6612-4014-b074-e9a6817f9a37", + "uuid": "8e4c65b7-d819-4ffd-9398-71e9d294ba63", "name": "seafoam-1200" } } }, "1300": { - "value": "rgb(223, 249, 246)", + "value": "#7AE5CB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ec37ce56-739c-4f91-a36c-6e56480aa822", + "uuid": "ef35ace8-870d-42e0-8ce6-2df61415431f", "name": "seafoam-1300" } } }, "1400": { - "value": "rgb(254, 255, 254)", + "value": "#BAF1DE", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "06b4eb8e-ff63-4345-a37f-67d5f48edb1b", + "uuid": "9499384b-336c-4a41-af05-645a92ae40d4", "name": "seafoam-1400" } } + }, + "1500": { + "value": "#E5F9F3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "seafoam-1500", + "uuid": "6e538a2b-05f7-41f5-af4b-89bc3039c25a" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "seafoam-1600", + "uuid": "29aae26e-f4a4-4e5a-acd2-02df01f6cc90" + } + } } }, "yellow": { "100": { - "value": "rgb(76, 54, 0)", + "value": "#251700", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "f18c112a-3abe-4a68-b671-f4e0a4e9ee80", + "uuid": "7bef094a-1523-4392-a0ca-59c48409f17a", "name": "yellow-100" } } }, "200": { - "value": "rgb(88, 64, 0)", + "value": "#2F1D00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b5c57a8b-ba79-40ff-9710-016e4503f134", + "uuid": "f4fdc925-63b3-4670-9f2b-a057c27c834a", "name": "yellow-200" } } }, "300": { - "value": "rgb(103, 76, 0)", + "value": "#3D2700", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6735b5e5-4ce3-4fff-bb1f-497b8932c908", + "uuid": "238147c6-0302-4d43-b3a3-42df832c7857", "name": "yellow-300" } } }, "400": { - "value": "rgb(119, 89, 0)", + "value": "#533400", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e8802954-19e6-450c-a75a-7202e5a5023c", + "uuid": "62ab6892-66ea-4b55-8c1a-fcc191d29717", "name": "yellow-400" } } }, "500": { - "value": "rgb(136, 104, 0)", + "value": "#6B4300", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5d1e7587-c787-43cf-a17c-3bd9acc800af", + "uuid": "efa1fdd8-4478-411a-892c-0ecf23939489", "name": "yellow-500" } } }, "600": { - "value": "rgb(155, 120, 0)", + "value": "#825200", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "6ce0efce-3c8c-4108-92b3-78f2088a7c83", + "uuid": "8ae3c5ec-aabe-47a0-b822-ba0907e67ed4", "name": "yellow-600" } } }, "700": { - "value": "rgb(174, 137, 0)", + "value": "#976100", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b0ccfc1b-2992-4d00-aa90-2990197f8a02", + "uuid": "ac3e5d40-51eb-45aa-b4e0-87d3f6e8e359", "name": "yellow-700" } } }, "800": { - "value": "rgb(192, 156, 0)", + "value": "#A96E00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "aab14913-8d2a-428b-acb4-3c03529b4c20", + "uuid": "67e8d9aa-d843-4536-9c97-bd51e62da8ee", "name": "yellow-800" } } }, "900": { - "value": "rgb(211, 174, 0)", + "value": "#BA7C00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "fba8d22e-6db1-4146-8554-8a9f819b09c3", + "uuid": "a12f6cac-7fdc-4fd4-8120-ad957823ff6b", "name": "yellow-900" } } }, "1000": { - "value": "rgb(228, 194, 0)", + "value": "#CB8D00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "48c1ac65-4ffc-4bcc-b7c0-1c7263d1a5f2", + "uuid": "4cf4a500-37a2-4dd8-a243-14f6c012b53c", "name": "yellow-1000" } } }, "1100": { - "value": "rgb(244, 213, 0)", + "value": "#DA9F00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "d6609e5e-813f-40a3-ba85-81e8e4ba533a", + "uuid": "4eee9daf-e19d-4e0b-b12d-4fdcc4852956", "name": "yellow-1100" } } }, "1200": { - "value": "rgb(249, 232, 92)", + "value": "#EBB700", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "e652bbeb-ea99-466e-aba9-ab40c8af690d", + "uuid": "69059dfa-e2e1-4f8d-b06b-058a8724e071", "name": "yellow-1200" } } }, "1300": { - "value": "rgb(252, 246, 187)", + "value": "#F9CE00", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "ce6cae94-1b85-4a88-a582-c16750e2994d", + "uuid": "b2a1039c-cbfe-44bf-a0fe-822c5f576f52", "name": "yellow-1300" } } }, "1400": { - "value": "rgb(255, 255, 255)", + "value": "#FFE656", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "bf7b43f5-b6b9-4ba5-bbd1-406145088d66", + "uuid": "dfd355e7-82fd-4fdb-96bd-b584d7268ee9", "name": "yellow-1400" } } + }, + "1500": { + "value": "#FFF6C3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "yellow-1500", + "uuid": "166ee2cc-b727-4f3c-9c08-5c586a0f6c11" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "yellow-1600", + "uuid": "3df0b31f-656a-4400-99c4-d559da586714" + } + } } }, - "transparent-black": { + "pink": { "100": { - "value": "rgba(0, 0, 0, 0)", + "value": "#3A0025", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7565eb32-d745-4fc3-8779-a717f8ba910a", - "name": "transparent-black-100" + "name": "pink-100", + "uuid": "bd616b1d-fe15-498b-b8c3-02b3ec12917c" } } }, "200": { - "value": "rgba(0, 0, 0, 0.1)", + "value": "#47002C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a84ecad8-8005-4ce4-add6-7f83f7e05ba0", - "name": "transparent-black-200" + "name": "pink-200", + "uuid": "b27db3ca-2a1d-40f0-aa6b-d7256262a70c" } } }, "300": { - "value": "rgba(0, 0, 0, 0.25)", + "value": "#5A0039", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "16a871e1-d9df-42bb-8889-99059d70e82e", - "name": "transparent-black-300" + "name": "pink-300", + "uuid": "b4a885e9-96d3-498f-b8a9-87c448723198" } } }, "400": { - "value": "rgba(0, 0, 0, 0.4)", + "value": "#73074B", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b769453b-586c-4dd2-b3a1-ddf5964160bc", - "name": "transparent-black-400" + "name": "pink-400", + "uuid": "3a4e3a24-0f21-44a4-ad80-f721ad6acb38" } } }, "500": { - "value": "rgba(0, 0, 0, 0.55)", + "value": "#8F1261", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "cebedd9f-9e4b-47cf-addb-45d8ff9c9179", - "name": "transparent-black-500" + "name": "pink-500", + "uuid": "14b4ffb1-3dcb-4155-b470-1006982eec4c" } } }, "600": { - "value": "rgba(0, 0, 0, 0.7)", + "value": "#AB1D77", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "199e19a5-bf7d-4933-8425-d7d5881e4cf5", - "name": "transparent-black-600" + "name": "pink-600", + "uuid": "77da83cc-1a57-486b-bb43-e74e6b5ac041" } } }, "700": { - "value": "rgba(0, 0, 0, 0.8)", + "value": "#C4278A", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "56da822f-98ea-4ad1-b993-3f052de45f36", - "name": "transparent-black-700" + "name": "pink-700", + "uuid": "6c1ae7db-8ca1-4dbe-9d1e-2b3f5ab28a5c" } } }, "800": { - "value": "rgba(0, 0, 0, 0.9)", + "value": "#DC2F9C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3e89f180-b0f0-4de0-904b-c80f0210a361", - "name": "transparent-black-800" + "name": "pink-800", + "uuid": "86b686e1-d580-4fc0-9246-8b94ad2fed96" } } }, "900": { - "value": "rgb(0, 0, 0)", + "value": "#EC43AF", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c0a331f9-53e3-4c72-b5e3-139d730a1752", - "name": "transparent-black-900" + "name": "pink-900", + "uuid": "fb259e11-a051-4116-a7cb-f567cf814df5" + } + } + }, + "1000": { + "value": "#FB5AC4", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1000", + "uuid": "89cc3b46-c438-4e65-bf43-c373cb6af83f" + } + } + }, + "1100": { + "value": "#FF7AD2", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1100", + "uuid": "ee41ab95-9c22-4523-94ce-efab466cc261" + } + } + }, + "1200": { + "value": "#FF9FDF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1200", + "uuid": "670f5ea8-1435-4dd6-9ee9-f1886378b18f" + } + } + }, + "1300": { + "value": "#FFBFEA", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1300", + "uuid": "c70eb5b9-80fa-4e03-9589-88001bbed4e2" + } + } + }, + "1400": { + "value": "#FFDBF3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1400", + "uuid": "bb85af92-a0c8-4b12-b651-a2a084d6d1cc" + } + } + }, + "1500": { + "value": "#FFF1FA", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1500", + "uuid": "0344a02f-ae86-4c77-bb36-480da43b3be1" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1600", + "uuid": "fd715951-5fb7-433c-8a9d-2d10707893e5" } } } }, - "transparent-white": { + "turquoise": { "100": { - "value": "rgba(255, 255, 255, 0)", + "value": "#001E21", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a1b64a62-7c78-415e-a9be-c86acbf361ca", - "name": "transparent-white-100" + "name": "turquoise-100", + "uuid": "7be82e76-2525-4496-9425-c180746f12df" } } }, "200": { - "value": "rgba(255, 255, 255, 0.1)", + "value": "#002529", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "936db837-bc5a-40b0-a0e8-8e39b9fc62cb", - "name": "transparent-white-200" + "name": "turquoise-200", + "uuid": "f70fdb17-da0b-4163-8af6-2daa65327e3a" } } }, "300": { - "value": "rgba(255, 255, 255, 0.25)", + "value": "#003136", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5ffa0283-ce9c-4f96-9227-f559ec54ee0c", - "name": "transparent-white-300" + "name": "turquoise-300", + "uuid": "eb6f8d2a-1a82-42ef-b668-0aac077d4053" } } }, "400": { - "value": "rgba(255, 255, 255, 0.4)", + "value": "#004248", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "12e610d4-e3dc-4e86-9c09-09d86915b6f1", - "name": "transparent-white-400" + "name": "turquoise-400", + "uuid": "e354eda3-17c2-4f07-b64b-3620692a12f3" } } }, "500": { - "value": "rgba(255, 255, 255, 0.55)", + "value": "#03545C", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "89c1380f-3e8e-4895-b025-027cee7ecd5b", - "name": "transparent-white-500" + "name": "turquoise-500", + "uuid": "de4d07fb-1d63-44cc-a9bf-1cd2e2ed4e59" } } }, "600": { - "value": "rgba(255, 255, 255, 0.7)", + "value": "#056770", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b24431ee-5c72-4a73-8733-746c6f5d77c0", - "name": "transparent-white-600" + "name": "turquoise-600", + "uuid": "ae1d9dc7-e778-4c78-b12d-ab187cc3c254" } } }, "700": { - "value": "rgba(255, 255, 255, 0.8)", + "value": "#077883", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3ecc14ec-a21e-47ba-8225-915509a532af", - "name": "transparent-white-700" + "name": "turquoise-700", + "uuid": "08f4307e-74f1-446d-9051-8a4c11546289" } } }, "800": { - "value": "rgba(255, 255, 255, 0.9)", + "value": "#098793", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b85836bf-af47-412a-900a-4ec5ad0733b2", - "name": "transparent-white-800" + "name": "turquoise-800", + "uuid": "69ae2217-ba32-41ca-a38f-8f19dcc5cf76" } } }, "900": { - "value": "rgb(255, 255, 255)", + "value": "#0B97A4", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c5c823c6-1911-4e0e-ba2f-5105f467e108", - "name": "transparent-white-900" + "name": "turquoise-900", + "uuid": "2ce15c64-8c38-4935-bc65-7580df395231" + } + } + }, + "1000": { + "value": "#0DA8B6", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1000", + "uuid": "89d12308-9718-40d6-a089-73b9fcf1185b" + } + } + }, + "1100": { + "value": "#10BACA", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1100", + "uuid": "7f0dafc6-6863-4542-b58c-610bd97f79fa" + } + } + }, + "1200": { + "value": "#40D0DC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1200", + "uuid": "70ca07eb-a370-4059-9d5a-b55f6a9c9f31" + } + } + }, + "1300": { + "value": "#80E1E7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1300", + "uuid": "c1f51874-6699-4250-bcd3-9d15add56a86" + } + } + }, + "1400": { + "value": "#B7F0F0", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1400", + "uuid": "f2f63354-d6fb-4687-abf8-554c4ab95fbf" + } + } + }, + "1500": { + "value": "#E4F9F9", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1500", + "uuid": "d4b79c34-286d-40f0-87ce-bbfb6b217dba" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1600", + "uuid": "4ae14c01-10b1-4daf-a064-dab9f6fdea9d" + } + } + } + }, + "brown": { + "100": { + "value": "#231808", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-100", + "uuid": "478633c7-4a14-4e39-a05c-bfa07aeb4a85" + } + } + }, + "200": { + "value": "#2C1F0B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-200", + "uuid": "ec81816f-120e-46f9-a5b0-adb94814d1eb" + } + } + }, + "300": { + "value": "#3A280E", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-300", + "uuid": "3c253e65-bd9a-4e52-ad68-83aca3b197e6" + } + } + }, + "400": { + "value": "#4E3713", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-400", + "uuid": "a9daa02d-c0aa-4c05-80ee-2bf55165dd36" + } + } + }, + "500": { + "value": "#62471E", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-500", + "uuid": "f455957b-e647-44b3-a917-7d6e19807d40" + } + } + }, + "600": { + "value": "#73582F", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-600", + "uuid": "41f83cff-cdd4-4760-a4bd-0bb1ceb46854" + } + } + }, + "700": { + "value": "#84683D", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-700", + "uuid": "dc738913-4af6-446e-8a1b-09c84993c8e5" + } + } + }, + "800": { + "value": "#947649", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-800", + "uuid": "e21a0edf-a81a-46a0-a849-11111cb89516" + } + } + }, + "900": { + "value": "#A38454", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-900", + "uuid": "79d7de9d-7bab-4762-acd9-ecf28556906a" + } + } + }, + "1000": { + "value": "#B59362", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1000", + "uuid": "6fd7a375-e670-4bde-8061-b1b2ba5116be" + } + } + }, + "1100": { + "value": "#C7A370", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1100", + "uuid": "26df5572-cbdb-4988-8847-672ee1669acd" + } + } + }, + "1200": { + "value": "#DEB982", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1200", + "uuid": "c1965544-ed0e-438f-aed0-b1f31836950c" + } + } + }, + "1300": { + "value": "#E8CFA9", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1300", + "uuid": "41d1432f-1b3a-4e93-8b57-2e48d0e66096" + } + } + }, + "1400": { + "value": "#F2E3CE", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1400", + "uuid": "91db9b52-530b-4147-be4f-c4d73a82eac3" + } + } + }, + "1500": { + "value": "#FAF4EC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1500", + "uuid": "d4d71d28-ce37-4f3f-8487-807cd1c42b9a" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1600", + "uuid": "bca1e3d9-9242-4b81-95ab-08735905047b" + } + } + } + }, + "cinnamon": { + "100": { + "value": "#301104", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-100", + "uuid": "4d68b861-ba0c-438b-b10b-c209d4943206" + } + } + }, + "200": { + "value": "#3B1505", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-200", + "uuid": "bd680dfb-0c2f-45e8-b814-627b496a986c" + } + } + }, + "300": { + "value": "#4F1C07", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-300", + "uuid": "4d086a5c-1b70-4750-be79-db934e7bc010" + } + } + }, + "400": { + "value": "#64290F", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-400", + "uuid": "e5ab12a9-84b3-4bfe-94be-f734ae39f10d" + } + } + }, + "500": { + "value": "#7A391C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-500", + "uuid": "641a2424-c699-4920-8a27-68bc1bb178a1" + } + } + }, + "600": { + "value": "#8F4A28", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-600", + "uuid": "6ccccd38-af76-4045-8ffb-a70bed76b365" + } + } + }, + "700": { + "value": "#A35834", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-700", + "uuid": "74c0ef96-2f6e-434a-bd89-69c6d9745a45" + } + } + }, + "800": { + "value": "#B36740", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-800", + "uuid": "58777c5b-8e62-49fe-8e0b-0f8b5127225c" + } + } + }, + "900": { + "value": "#C07750", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-900", + "uuid": "7b65cc42-f559-42de-8077-d808c9e096b6" + } + } + }, + "1000": { + "value": "#CE8863", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1000", + "uuid": "40d50298-0ea6-4c7f-8349-2e149ca288aa" + } + } + }, + "1100": { + "value": "#DC9A76", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1100", + "uuid": "219f9efa-0717-4d41-80ac-695297b92cf8" + } + } + }, + "1200": { + "value": "#E8B395", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1200", + "uuid": "a48f0d44-c67a-4e95-b5b9-81379363aebe" + } + } + }, + "1300": { + "value": "#EFCBB7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1300", + "uuid": "4aae0490-5f12-430c-824f-f7de008a4e15" + } + } + }, + "1400": { + "value": "#F6E1D6", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1400", + "uuid": "1e29a372-600e-4cda-a190-b865c5521aa6" + } + } + }, + "1500": { + "value": "#FCF4EF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1500", + "uuid": "7b880574-db1b-47ee-8c66-6504ada37f56" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1600", + "uuid": "1d04ed6a-8efc-472b-b7c7-0fbc160ce7fd" + } + } + } + }, + "silver": { + "100": { + "value": "#1A1A1A", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-100", + "uuid": "0c4a28ee-a473-4437-924e-c46a9bc0771b" + } + } + }, + "200": { + "value": "#212121", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-200", + "uuid": "99b20fba-8fa9-414b-9119-dbaccc5af3c5" + } + } + }, + "300": { + "value": "#2C2C2C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-300", + "uuid": "27ca065d-5baf-470f-b1aa-09e9934055d0" + } + } + }, + "400": { + "value": "#3B3B3B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-400", + "uuid": "0c4f7cca-a9fc-40d5-9503-04c505962f33" + } + } + }, + "500": { + "value": "#4C4C4C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-500", + "uuid": "98e7bc6e-bfed-47c4-8f6e-ab1e035deef7" + } + } + }, + "600": { + "value": "#5C5C5C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-600", + "uuid": "9e46a3c3-25d1-41f5-b76d-d4d136668589" + } + } + }, + "700": { + "value": "#6C6C6C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-700", + "uuid": "d66afc23-a9aa-4a50-a094-3dfebe044a08" + } + } + }, + "800": { + "value": "#7B7B7B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-800", + "uuid": "3f481be4-bdd3-45b8-bcfe-c7577cac40d4" + } + } + }, + "900": { + "value": "#898989", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-900", + "uuid": "66efbf5e-008b-41f6-a623-ee3722e41c69" + } + } + }, + "1000": { + "value": "#989898", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1000", + "uuid": "ee71e6fd-283f-4ba3-a6a3-b23491ce86d0" + } + } + }, + "1100": { + "value": "#A9A9A9", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1100", + "uuid": "e1239867-313d-44f8-8ac7-ebdb9f34724e" + } + } + }, + "1200": { + "value": "#BEBEBE", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1200", + "uuid": "5ce07115-c390-4b72-b1ce-4e1f5346ac59" + } + } + }, + "1300": { + "value": "#D3D3D3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1300", + "uuid": "426823de-8002-4acb-a591-8ace92d1e0cd" + } + } + }, + "1400": { + "value": "#E5E5E5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1400", + "uuid": "b4cae4c1-1075-4776-a217-940423c4297c" + } + } + }, + "1500": { + "value": "#F4F4F4", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1500", + "uuid": "196c4205-2175-4317-82e1-c2fdeb990c4b" + } + } + }, + "1600": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1600", + "uuid": "8509cb0b-461b-441c-b909-0384737ca553" + } + } + } + }, + "transparent-black": { + "25": { + "value": "rgba(0, 0, 0, 0)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-25", + "uuid": "d0867b86-6245-4c02-8617-ea7fd5c80288" + } + } + }, + "50": { + "value": "rgba(0, 0, 0, 0.03)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-50", + "uuid": "d6aa176c-30bd-423f-b05f-4360672bd87e" + } + } + }, + "75": { + "value": "rgba(0, 0, 0, 0.05)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-75", + "uuid": "d33a66ea-ca60-416f-9e92-967dbbb1e983" + } + } + }, + "100": { + "value": "rgba(0, 0, 0, 0.09)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "7565eb32-d745-4fc3-8779-a717f8ba910a", + "name": "transparent-black-100" + } + } + }, + "200": { + "value": "rgba(0, 0, 0, 0.12)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "a84ecad8-8005-4ce4-add6-7f83f7e05ba0", + "name": "transparent-black-200" + } + } + }, + "300": { + "value": "rgba(0, 0, 0, 0.15)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "16a871e1-d9df-42bb-8889-99059d70e82e", + "name": "transparent-black-300" + } + } + }, + "400": { + "value": "rgba(0, 0, 0, 0.22)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b769453b-586c-4dd2-b3a1-ddf5964160bc", + "name": "transparent-black-400" + } + } + }, + "500": { + "value": "rgba(0, 0, 0, 0.44)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "cebedd9f-9e4b-47cf-addb-45d8ff9c9179", + "name": "transparent-black-500" + } + } + }, + "600": { + "value": "rgba(0, 0, 0, 0.56)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "199e19a5-bf7d-4933-8425-d7d5881e4cf5", + "name": "transparent-black-600" + } + } + }, + "700": { + "value": "rgba(0, 0, 0, 0.69)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "56da822f-98ea-4ad1-b993-3f052de45f36", + "name": "transparent-black-700" + } + } + }, + "800": { + "value": "rgba(0, 0, 0, 0.84)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "3e89f180-b0f0-4de0-904b-c80f0210a361", + "name": "transparent-black-800" + } + } + }, + "900": { + "value": "rgba(0, 0, 0, 0.93)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "c0a331f9-53e3-4c72-b5e3-139d730a1752", + "name": "transparent-black-900" + } + } + }, + "1000": { + "value": "#000000", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-1000", + "uuid": "098f2f56-e52f-47b1-943a-d1d7218de484" + } + } + } + }, + "transparent-white": { + "25": { + "value": "rgba(255, 255, 255, 0)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-25", + "uuid": "98a7279b-e21c-41ae-9bae-8b9b2b243e35" + } + } + }, + "50": { + "value": "rgba(255, 255, 255, 0.04)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-50", + "uuid": "db1dbf26-fa48-42e1-b724-7953b0a6a543" + } + } + }, + "75": { + "value": "rgba(255, 255, 255, 0.07)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-75", + "uuid": "28d11d38-570d-4d99-b581-855781b972c5" + } + } + }, + "100": { + "value": "rgba(255, 255, 255, 0.11)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "a1b64a62-7c78-415e-a9be-c86acbf361ca", + "name": "transparent-white-100" + } + } + }, + "200": { + "value": "rgba(255, 255, 255, 0.14)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "936db837-bc5a-40b0-a0e8-8e39b9fc62cb", + "name": "transparent-white-200" + } + } + }, + "300": { + "value": "rgba(255, 255, 255, 0.17)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "5ffa0283-ce9c-4f96-9227-f559ec54ee0c", + "name": "transparent-white-300" + } + } + }, + "400": { + "value": "rgba(255, 255, 255, 0.21)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "12e610d4-e3dc-4e86-9c09-09d86915b6f1", + "name": "transparent-white-400" + } + } + }, + "500": { + "value": "rgba(255, 255, 255, 0.39)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "89c1380f-3e8e-4895-b025-027cee7ecd5b", + "name": "transparent-white-500" + } + } + }, + "600": { + "value": "rgba(255, 255, 255, 0.51)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b24431ee-5c72-4a73-8733-746c6f5d77c0", + "name": "transparent-white-600" + } + } + }, + "700": { + "value": "rgba(255, 255, 255, 0.66)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "3ecc14ec-a21e-47ba-8225-915509a532af", + "name": "transparent-white-700" + } + } + }, + "800": { + "value": "rgba(255, 255, 255, 0.85)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b85836bf-af47-412a-900a-4ec5ad0733b2", + "name": "transparent-white-800" + } + } + }, + "900": { + "value": "rgba(255, 255, 255, 0.94)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "c5c823c6-1911-4e0e-ba2f-5105f467e108", + "name": "transparent-white-900" + } + } + }, + "1000": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-1000", + "uuid": "1409a50a-9a9d-463d-957f-fa2e4f98a0cd" } } } diff --git a/src/tokens-studio/foundations/spectrum/palette/light.json b/src/tokens-studio/foundations/spectrum/palette/light.json index aa15b7dc..023dfae5 100644 --- a/src/tokens-studio/foundations/spectrum/palette/light.json +++ b/src/tokens-studio/foundations/spectrum/palette/light.json @@ -1,7 +1,7 @@ { "Palette": { "black": { - "value": "rgb(0, 0, 0)", + "value": "#000000", "type": "color", "$extensions": { "spectrum-tokens": { @@ -11,7 +11,7 @@ } }, "white": { - "value": "rgb(255, 255, 255)", + "value": "#FFFFFF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -21,8 +21,18 @@ } }, "gray": { + "25": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "gray-25", + "uuid": "a8c6363c-5297-41e3-ad76-1b6d0d3a3cc9" + } + } + }, "50": { - "value": "rgb(255, 255, 255)", + "value": "#F8F8F8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -32,7 +42,7 @@ } }, "75": { - "value": "rgb(253, 253, 253)", + "value": "#F3F3F3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -42,7 +52,7 @@ } }, "100": { - "value": "rgb(248, 248, 248)", + "value": "#E9E9E9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -52,7 +62,7 @@ } }, "200": { - "value": "rgb(230, 230, 230)", + "value": "#E1E1E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -62,7 +72,7 @@ } }, "300": { - "value": "rgb(213, 213, 213)", + "value": "#DADADA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -72,7 +82,7 @@ } }, "400": { - "value": "rgb(177, 177, 177)", + "value": "#C6C6C6", "type": "color", "$extensions": { "spectrum-tokens": { @@ -82,7 +92,7 @@ } }, "500": { - "value": "rgb(144, 144, 144)", + "value": "#8F8F8F", "type": "color", "$extensions": { "spectrum-tokens": { @@ -92,7 +102,7 @@ } }, "600": { - "value": "rgb(109, 109, 109)", + "value": "#717171", "type": "color", "$extensions": { "spectrum-tokens": { @@ -102,7 +112,7 @@ } }, "700": { - "value": "rgb(70, 70, 70)", + "value": "#505050", "type": "color", "$extensions": { "spectrum-tokens": { @@ -112,7 +122,7 @@ } }, "800": { - "value": "rgb(34, 34, 34)", + "value": "#292929", "type": "color", "$extensions": { "spectrum-tokens": { @@ -122,7 +132,7 @@ } }, "900": { - "value": "rgb(0, 0, 0)", + "value": "#131313", "type": "color", "$extensions": { "spectrum-tokens": { @@ -130,11 +140,21 @@ "name": "gray-900" } } + }, + "1000": { + "value": "#000000", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "gray-1000", + "uuid": "457fbeb8-56cd-4f3c-9950-f5e01f83f07c" + } + } } }, "blue": { "100": { - "value": "rgb(224, 242, 255)", + "value": "#F5F9FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -144,7 +164,7 @@ } }, "200": { - "value": "rgb(202, 232, 255)", + "value": "#E5F0FE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -154,7 +174,7 @@ } }, "300": { - "value": "rgb(181, 222, 255)", + "value": "#CBE2FE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -164,7 +184,7 @@ } }, "400": { - "value": "rgb(150, 206, 253)", + "value": "#ACCFFD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -174,7 +194,7 @@ } }, "500": { - "value": "rgb(120, 187, 250)", + "value": "#8EB9FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -184,7 +204,7 @@ } }, "600": { - "value": "rgb(89, 167, 246)", + "value": "#729EFD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -194,7 +214,7 @@ } }, "700": { - "value": "rgb(56, 146, 243)", + "value": "#5D89FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -204,7 +224,7 @@ } }, "800": { - "value": "rgb(20, 122, 243)", + "value": "#4B75FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -214,7 +234,7 @@ } }, "900": { - "value": "rgb(2, 101, 220)", + "value": "#3B63FB", "type": "color", "$extensions": { "spectrum-tokens": { @@ -224,7 +244,7 @@ } }, "1000": { - "value": "rgb(0, 84, 182)", + "value": "#274DEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -234,7 +254,7 @@ } }, "1100": { - "value": "rgb(0, 68, 145)", + "value": "#1D3ECF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -244,7 +264,7 @@ } }, "1200": { - "value": "rgb(0, 53, 113)", + "value": "#1532AD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -254,7 +274,7 @@ } }, "1300": { - "value": "rgb(0, 39, 84)", + "value": "#10288C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -264,7 +284,7 @@ } }, "1400": { - "value": "rgb(0, 28, 60)", + "value": "#0C1F69", "type": "color", "$extensions": { "spectrum-tokens": { @@ -272,11 +292,31 @@ "name": "blue-1400" } } + }, + "1500": { + "value": "#0E1843", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "blue-1500", + "uuid": "a24a53d4-d3c3-4d84-b6eb-048326659524" + } + } + }, + "1600": { + "value": "#070B1E", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "blue-1600", + "uuid": "29610c54-a311-470d-ad77-c28c000730e3" + } + } } }, "green": { "100": { - "value": "rgb(206, 248, 224)", + "value": "#EDFCF1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -286,7 +326,7 @@ } }, "200": { - "value": "rgb(173, 244, 206)", + "value": "#D7F7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -296,7 +336,7 @@ } }, "300": { - "value": "rgb(137, 236, 188)", + "value": "#ADEEC5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -306,7 +346,7 @@ } }, "400": { - "value": "rgb(103, 222, 168)", + "value": "#6BE3A2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -316,7 +356,7 @@ } }, "500": { - "value": "rgb(73, 204, 147)", + "value": "#2BD17D", "type": "color", "$extensions": { "spectrum-tokens": { @@ -326,7 +366,7 @@ } }, "600": { - "value": "rgb(47, 184, 128)", + "value": "#12B867", "type": "color", "$extensions": { "spectrum-tokens": { @@ -336,7 +376,7 @@ } }, "700": { - "value": "rgb(21, 164, 110)", + "value": "#0BA45D", "type": "color", "$extensions": { "spectrum-tokens": { @@ -346,7 +386,7 @@ } }, "800": { - "value": "rgb(0, 143, 93)", + "value": "#079355", "type": "color", "$extensions": { "spectrum-tokens": { @@ -356,7 +396,7 @@ } }, "900": { - "value": "rgb(0, 122, 77)", + "value": "#05834E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -366,7 +406,7 @@ } }, "1000": { - "value": "rgb(0, 101, 62)", + "value": "#036E45", "type": "color", "$extensions": { "spectrum-tokens": { @@ -376,7 +416,7 @@ } }, "1100": { - "value": "rgb(0, 81, 50)", + "value": "#025D3C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -386,7 +426,7 @@ } }, "1200": { - "value": "rgb(5, 63, 39)", + "value": "#014C34", "type": "color", "$extensions": { "spectrum-tokens": { @@ -396,7 +436,7 @@ } }, "1300": { - "value": "rgb(10, 46, 29)", + "value": "#003D2C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -406,7 +446,7 @@ } }, "1400": { - "value": "rgb(10, 32, 21)", + "value": "#002E22", "type": "color", "$extensions": { "spectrum-tokens": { @@ -414,11 +454,31 @@ "name": "green-1400" } } + }, + "1500": { + "value": "#002119", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "green-1500", + "uuid": "f853b643-e7bf-4af6-81f4-bc6de9007f3c" + } + } + }, + "1600": { + "value": "#000F0C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "green-1600", + "uuid": "2b4c3a1a-8ea4-4149-862d-801b559e4f65" + } + } } }, "orange": { "100": { - "value": "rgb(255, 236, 204)", + "value": "#FFF6E7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -428,7 +488,7 @@ } }, "200": { - "value": "rgb(255, 223, 173)", + "value": "#FFECCF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -438,7 +498,7 @@ } }, "300": { - "value": "rgb(253, 210, 145)", + "value": "#FFDA9E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -448,7 +508,7 @@ } }, "400": { - "value": "rgb(255, 187, 99)", + "value": "#FFC15E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -458,7 +518,7 @@ } }, "500": { - "value": "rgb(255, 160, 55)", + "value": "#FFA213", "type": "color", "$extensions": { "spectrum-tokens": { @@ -468,7 +528,7 @@ } }, "600": { - "value": "rgb(246, 133, 17)", + "value": "#FC7D00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -478,7 +538,7 @@ } }, "700": { - "value": "rgb(228, 111, 0)", + "value": "#E86A00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -488,7 +548,7 @@ } }, "800": { - "value": "rgb(203, 93, 0)", + "value": "#D45B00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -498,7 +558,7 @@ } }, "900": { - "value": "rgb(177, 76, 0)", + "value": "#C24E00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -508,7 +568,7 @@ } }, "1000": { - "value": "rgb(149, 61, 0)", + "value": "#A73E00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -518,7 +578,7 @@ } }, "1100": { - "value": "rgb(122, 47, 0)", + "value": "#903300", "type": "color", "$extensions": { "spectrum-tokens": { @@ -528,7 +588,7 @@ } }, "1200": { - "value": "rgb(97, 35, 0)", + "value": "#762900", "type": "color", "$extensions": { "spectrum-tokens": { @@ -538,7 +598,7 @@ } }, "1300": { - "value": "rgb(73, 25, 1)", + "value": "#5F2000", "type": "color", "$extensions": { "spectrum-tokens": { @@ -548,7 +608,7 @@ } }, "1400": { - "value": "rgb(53, 18, 1)", + "value": "#491800", "type": "color", "$extensions": { "spectrum-tokens": { @@ -556,11 +616,31 @@ "name": "orange-1400" } } + }, + "1500": { + "value": "#341200", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "orange-1500", + "uuid": "8aa75bbd-fd78-463d-a321-8672e5a537d6" + } + } + }, + "1600": { + "value": "#190800", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "orange-1600", + "uuid": "e99566f3-7b29-4c75-a4bd-ce17c0d84c3f" + } + } } }, "red": { "100": { - "value": "rgb(255, 235, 231)", + "value": "#FFF6F5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -570,7 +650,7 @@ } }, "200": { - "value": "rgb(255, 221, 214)", + "value": "#FFEBE8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -580,7 +660,7 @@ } }, "300": { - "value": "rgb(255, 205, 195)", + "value": "#FFD6D1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -590,7 +670,7 @@ } }, "400": { - "value": "rgb(255, 183, 169)", + "value": "#FFBCB4", "type": "color", "$extensions": { "spectrum-tokens": { @@ -600,7 +680,7 @@ } }, "500": { - "value": "rgb(255, 155, 136)", + "value": "#FF9D91", "type": "color", "$extensions": { "spectrum-tokens": { @@ -610,7 +690,7 @@ } }, "600": { - "value": "rgb(255, 124, 101)", + "value": "#FF7665", "type": "color", "$extensions": { "spectrum-tokens": { @@ -620,7 +700,7 @@ } }, "700": { - "value": "rgb(247, 92, 70)", + "value": "#FF513D", "type": "color", "$extensions": { "spectrum-tokens": { @@ -630,7 +710,7 @@ } }, "800": { - "value": "rgb(234, 56, 41)", + "value": "#F03823", "type": "color", "$extensions": { "spectrum-tokens": { @@ -640,7 +720,7 @@ } }, "900": { - "value": "rgb(211, 21, 16)", + "value": "#D73220", "type": "color", "$extensions": { "spectrum-tokens": { @@ -650,7 +730,7 @@ } }, "1000": { - "value": "rgb(180, 0, 0)", + "value": "#B72818", "type": "color", "$extensions": { "spectrum-tokens": { @@ -660,7 +740,7 @@ } }, "1100": { - "value": "rgb(147, 0, 0)", + "value": "#9C2113", "type": "color", "$extensions": { "spectrum-tokens": { @@ -670,7 +750,7 @@ } }, "1200": { - "value": "rgb(116, 0, 0)", + "value": "#811B0E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -680,7 +760,7 @@ } }, "1300": { - "value": "rgb(89, 0, 0)", + "value": "#68150A", "type": "color", "$extensions": { "spectrum-tokens": { @@ -690,7 +770,7 @@ } }, "1400": { - "value": "rgb(67, 0, 0)", + "value": "#501006", "type": "color", "$extensions": { "spectrum-tokens": { @@ -698,11 +778,31 @@ "name": "red-1400" } } + }, + "1500": { + "value": "#3B0B04", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "red-1500", + "uuid": "45ef3c1f-fb24-4a0e-98c3-69c6027eb709" + } + } + }, + "1600": { + "value": "#1D0502", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "red-1600", + "uuid": "3d8a70af-6e0b-449f-98e3-515498bf00ca" + } + } } }, "celery": { "100": { - "value": "rgb(205, 252, 191)", + "value": "#EBFFDC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -712,7 +812,7 @@ } }, "200": { - "value": "rgb(174, 246, 157)", + "value": "#C5FF9C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -722,7 +822,7 @@ } }, "300": { - "value": "rgb(150, 238, 133)", + "value": "#9DF75C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -732,7 +832,7 @@ } }, "400": { - "value": "rgb(114, 224, 106)", + "value": "#81E43A", "type": "color", "$extensions": { "spectrum-tokens": { @@ -742,7 +842,7 @@ } }, "500": { - "value": "rgb(78, 207, 80)", + "value": "#6ECE2A", "type": "color", "$extensions": { "spectrum-tokens": { @@ -752,7 +852,7 @@ } }, "600": { - "value": "rgb(39, 187, 54)", + "value": "#5DB41F", "type": "color", "$extensions": { "spectrum-tokens": { @@ -762,7 +862,7 @@ } }, "700": { - "value": "rgb(7, 167, 33)", + "value": "#52A119", "type": "color", "$extensions": { "spectrum-tokens": { @@ -772,7 +872,7 @@ } }, "800": { - "value": "rgb(0, 145, 18)", + "value": "#489014", "type": "color", "$extensions": { "spectrum-tokens": { @@ -782,7 +882,7 @@ } }, "900": { - "value": "rgb(0, 124, 15)", + "value": "#408111", "type": "color", "$extensions": { "spectrum-tokens": { @@ -792,7 +892,7 @@ } }, "1000": { - "value": "rgb(0, 103, 15)", + "value": "#346D0C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -802,7 +902,7 @@ } }, "1100": { - "value": "rgb(0, 83, 13)", + "value": "#2C5C09", "type": "color", "$extensions": { "spectrum-tokens": { @@ -812,7 +912,7 @@ } }, "1200": { - "value": "rgb(0, 64, 10)", + "value": "#234B06", "type": "color", "$extensions": { "spectrum-tokens": { @@ -822,7 +922,7 @@ } }, "1300": { - "value": "rgb(0, 48, 7)", + "value": "#1B3C03", "type": "color", "$extensions": { "spectrum-tokens": { @@ -832,7 +932,7 @@ } }, "1400": { - "value": "rgb(0, 34, 5)", + "value": "#132E00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -840,11 +940,31 @@ "name": "celery-1400" } } + }, + "1500": { + "value": "#0C2100", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "celery-1500", + "uuid": "ca5c139e-1784-4139-89a3-281a83dbeb99" + } + } + }, + "1600": { + "value": "#040F00", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "celery-1600", + "uuid": "56e0d793-ce33-4da3-8e67-d7df10b2cd89" + } + } } }, "chartreuse": { "100": { - "value": "rgb(219, 252, 110)", + "value": "#F6FBDE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -854,7 +974,7 @@ } }, "200": { - "value": "rgb(203, 244, 67)", + "value": "#EAF6AD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -864,7 +984,7 @@ } }, "300": { - "value": "rgb(188, 233, 42)", + "value": "#D0EC46", "type": "color", "$extensions": { "spectrum-tokens": { @@ -874,7 +994,7 @@ } }, "400": { - "value": "rgb(170, 216, 22)", + "value": "#B6DB00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -884,7 +1004,7 @@ } }, "500": { - "value": "rgb(152, 197, 10)", + "value": "#A3C400", "type": "color", "$extensions": { "spectrum-tokens": { @@ -894,7 +1014,7 @@ } }, "600": { - "value": "rgb(135, 177, 3)", + "value": "#8FAC00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -904,7 +1024,7 @@ } }, "700": { - "value": "rgb(118, 156, 0)", + "value": "#809900", "type": "color", "$extensions": { "spectrum-tokens": { @@ -914,7 +1034,7 @@ } }, "800": { - "value": "rgb(103, 136, 0)", + "value": "#728900", "type": "color", "$extensions": { "spectrum-tokens": { @@ -924,7 +1044,7 @@ } }, "900": { - "value": "rgb(87, 116, 0)", + "value": "#667A00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -934,7 +1054,7 @@ } }, "1000": { - "value": "rgb(72, 96, 0)", + "value": "#566700", "type": "color", "$extensions": { "spectrum-tokens": { @@ -944,7 +1064,7 @@ } }, "1100": { - "value": "rgb(58, 77, 0)", + "value": "#495700", "type": "color", "$extensions": { "spectrum-tokens": { @@ -954,7 +1074,7 @@ } }, "1200": { - "value": "rgb(44, 59, 0)", + "value": "#3C4700", "type": "color", "$extensions": { "spectrum-tokens": { @@ -964,7 +1084,7 @@ } }, "1300": { - "value": "rgb(33, 44, 0)", + "value": "#2F3900", "type": "color", "$extensions": { "spectrum-tokens": { @@ -974,7 +1094,7 @@ } }, "1400": { - "value": "rgb(24, 31, 0)", + "value": "#232B00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -982,11 +1102,31 @@ "name": "chartreuse-1400" } } + }, + "1500": { + "value": "#191E00", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "chartreuse-1500", + "uuid": "63f13dcb-6d61-4ff0-9999-33e16d30e5d6" + } + } + }, + "1600": { + "value": "#0B0E00", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "chartreuse-1600", + "uuid": "01b68e1d-06d7-44a3-91e6-08e17353008c" + } + } } }, "cyan": { "100": { - "value": "rgb(197, 248, 255)", + "value": "#EEFAFE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -996,7 +1136,7 @@ } }, "200": { - "value": "rgb(164, 240, 255)", + "value": "#D9F4FD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1006,7 +1146,7 @@ } }, "300": { - "value": "rgb(136, 231, 250)", + "value": "#B7E7FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1016,7 +1156,7 @@ } }, "400": { - "value": "rgb(96, 216, 243)", + "value": "#8AD5FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1026,7 +1166,7 @@ } }, "500": { - "value": "rgb(51, 197, 232)", + "value": "#5CC0FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1036,7 +1176,7 @@ } }, "600": { - "value": "rgb(18, 176, 218)", + "value": "#30A7FE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1046,7 +1186,7 @@ } }, "700": { - "value": "rgb(1, 156, 200)", + "value": "#1D95E7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1056,7 +1196,7 @@ } }, "800": { - "value": "rgb(0, 134, 180)", + "value": "#1286CD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1066,7 +1206,7 @@ } }, "900": { - "value": "rgb(0, 113, 159)", + "value": "#0B78B3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1076,7 +1216,7 @@ } }, "1000": { - "value": "rgb(0, 93, 137)", + "value": "#046691", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1086,7 +1226,7 @@ } }, "1100": { - "value": "rgb(0, 74, 115)", + "value": "#005779", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1096,7 +1236,7 @@ } }, "1200": { - "value": "rgb(0, 57, 93)", + "value": "#004762", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1106,7 +1246,7 @@ } }, "1300": { - "value": "rgb(0, 42, 70)", + "value": "#00394E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1116,7 +1256,7 @@ } }, "1400": { - "value": "rgb(0, 30, 51)", + "value": "#002B3B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1124,11 +1264,31 @@ "name": "cyan-1400" } } + }, + "1500": { + "value": "#001F2B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cyan-1500", + "uuid": "4d029c4c-4658-4207-b43c-d69b138b25a3" + } + } + }, + "1600": { + "value": "#000E14", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cyan-1600", + "uuid": "e6cd6257-d8de-428e-8ebf-c1c812031e5e" + } + } } }, "fuchsia": { "100": { - "value": "rgb(255, 233, 252)", + "value": "#FEF6FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1138,7 +1298,7 @@ } }, "200": { - "value": "rgb(255, 218, 250)", + "value": "#FDE9FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1148,7 +1308,7 @@ } }, "300": { - "value": "rgb(254, 199, 248)", + "value": "#FAD3FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1158,7 +1318,7 @@ } }, "400": { - "value": "rgb(251, 174, 246)", + "value": "#F7B5FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1168,7 +1328,7 @@ } }, "500": { - "value": "rgb(245, 146, 243)", + "value": "#F393FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1178,7 +1338,7 @@ } }, "600": { - "value": "rgb(237, 116, 237)", + "value": "#EC69FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1188,7 +1348,7 @@ } }, "700": { - "value": "rgb(224, 85, 226)", + "value": "#DF4DF5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1198,7 +1358,7 @@ } }, "800": { - "value": "rgb(205, 58, 206)", + "value": "#C844DC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1208,7 +1368,7 @@ } }, "900": { - "value": "rgb(182, 34, 183)", + "value": "#B539C8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1218,7 +1378,7 @@ } }, "1000": { - "value": "rgb(157, 3, 158)", + "value": "#9C28AF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1228,7 +1388,7 @@ } }, "1100": { - "value": "rgb(128, 0, 129)", + "value": "#871B9A", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1238,7 +1398,7 @@ } }, "1200": { - "value": "rgb(100, 6, 100)", + "value": "#710F83", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1248,7 +1408,7 @@ } }, "1300": { - "value": "rgb(71, 14, 70)", + "value": "#5C046D", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1258,7 +1418,7 @@ } }, "1400": { - "value": "rgb(50, 13, 49)", + "value": "#480058", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1266,11 +1426,31 @@ "name": "fuchsia-1400" } } + }, + "1500": { + "value": "#360042", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "fuchsia-1500", + "uuid": "afdfcd22-19fd-4306-a069-c8f9cd0d4f2d" + } + } + }, + "1600": { + "value": "#1D0023", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "fuchsia-1600", + "uuid": "38117e2a-efd1-4edd-8284-6fb0bc7482cc" + } + } } }, "indigo": { "100": { - "value": "rgb(237, 238, 255)", + "value": "#F7F8FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1280,7 +1460,7 @@ } }, "200": { - "value": "rgb(224, 226, 255)", + "value": "#EBEEFF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1290,7 +1470,7 @@ } }, "300": { - "value": "rgb(211, 213, 255)", + "value": "#D8DEFF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1300,7 +1480,7 @@ } }, "400": { - "value": "rgb(193, 196, 255)", + "value": "#C0C9FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1310,7 +1490,7 @@ } }, "500": { - "value": "rgb(172, 175, 255)", + "value": "#A7B2FF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1320,7 +1500,7 @@ } }, "600": { - "value": "rgb(149, 153, 255)", + "value": "#9197FE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1330,7 +1510,7 @@ } }, "700": { - "value": "rgb(126, 132, 252)", + "value": "#8480FE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1340,7 +1520,7 @@ } }, "800": { - "value": "rgb(104, 109, 244)", + "value": "#7A6AFD", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1350,7 +1530,7 @@ } }, "900": { - "value": "rgb(82, 88, 228)", + "value": "#7155FA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1360,7 +1540,7 @@ } }, "1000": { - "value": "rgb(64, 70, 202)", + "value": "#6338EE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1370,7 +1550,7 @@ } }, "1100": { - "value": "rgb(50, 54, 168)", + "value": "#5424DB", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1380,7 +1560,7 @@ } }, "1200": { - "value": "rgb(38, 41, 134)", + "value": "#4513BF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1390,7 +1570,7 @@ } }, "1300": { - "value": "rgb(27, 30, 100)", + "value": "#3706A0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1400,7 +1580,7 @@ } }, "1400": { - "value": "rgb(20, 22, 72)", + "value": "#2A0081", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1408,11 +1588,31 @@ "name": "indigo-1400" } } + }, + "1500": { + "value": "#1F0062", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "indigo-1500", + "uuid": "2653368d-d90b-4a5a-97f3-8380fe2e7551" + } + } + }, + "1600": { + "value": "#110036", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "indigo-1600", + "uuid": "6a0ad8e2-b574-4148-b151-e0607c4d5317" + } + } } }, "magenta": { "100": { - "value": "rgb(255, 234, 241)", + "value": "#FFF5F8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1422,7 +1622,7 @@ } }, "200": { - "value": "rgb(255, 220, 232)", + "value": "#FFE8F0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1432,7 +1632,7 @@ } }, "300": { - "value": "rgb(255, 202, 221)", + "value": "#FFD5E3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1442,7 +1642,7 @@ } }, "400": { - "value": "rgb(255, 178, 206)", + "value": "#FFB9D0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1452,7 +1652,7 @@ } }, "500": { - "value": "rgb(255, 149, 189)", + "value": "#FF98BB", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1462,7 +1662,7 @@ } }, "600": { - "value": "rgb(250, 119, 170)", + "value": "#FF709F", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1472,7 +1672,7 @@ } }, "700": { - "value": "rgb(239, 90, 152)", + "value": "#FF4885", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1482,7 +1682,7 @@ } }, "800": { - "value": "rgb(222, 61, 130)", + "value": "#F02D6E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1492,7 +1692,7 @@ } }, "900": { - "value": "rgb(200, 34, 105)", + "value": "#D92361", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1502,7 +1702,7 @@ } }, "1000": { - "value": "rgb(173, 9, 85)", + "value": "#BA1650", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1512,7 +1712,7 @@ } }, "1100": { - "value": "rgb(142, 0, 69)", + "value": "#A3053E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1522,7 +1722,7 @@ } }, "1200": { - "value": "rgb(112, 0, 55)", + "value": "#880033", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1532,7 +1732,7 @@ } }, "1300": { - "value": "rgb(84, 3, 42)", + "value": "#6F0028", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1542,7 +1742,7 @@ } }, "1400": { - "value": "rgb(60, 6, 29)", + "value": "#56001E", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1550,11 +1750,31 @@ "name": "magenta-1400" } } + }, + "1500": { + "value": "#400016", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "magenta-1500", + "uuid": "70dd220b-46cd-4975-ad8b-5ca31f7c33dc" + } + } + }, + "1600": { + "value": "#23000C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "magenta-1600", + "uuid": "fd25d1ee-438b-49a3-93d8-1d59b2a06f72" + } + } } }, "purple": { "100": { - "value": "rgb(246, 235, 255)", + "value": "#FBF7FE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1564,7 +1784,7 @@ } }, "200": { - "value": "rgb(238, 221, 255)", + "value": "#F4EBFC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1574,7 +1794,7 @@ } }, "300": { - "value": "rgb(230, 208, 255)", + "value": "#EBDAF9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1584,7 +1804,7 @@ } }, "400": { - "value": "rgb(219, 187, 254)", + "value": "#DDC1F6", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1594,7 +1814,7 @@ } }, "500": { - "value": "rgb(204, 164, 253)", + "value": "#D0A7F3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1604,7 +1824,7 @@ } }, "600": { - "value": "rgb(189, 139, 252)", + "value": "#BF8AEE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1614,7 +1834,7 @@ } }, "700": { - "value": "rgb(174, 114, 249)", + "value": "#B272EB", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1624,7 +1844,7 @@ } }, "800": { - "value": "rgb(157, 87, 244)", + "value": "#A65CE7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1634,7 +1854,7 @@ } }, "900": { - "value": "rgb(137, 61, 231)", + "value": "#9A47E2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1644,7 +1864,7 @@ } }, "1000": { - "value": "rgb(115, 38, 211)", + "value": "#8628D9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1654,7 +1874,7 @@ } }, "1100": { - "value": "rgb(93, 19, 183)", + "value": "#730DCC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1664,7 +1884,7 @@ } }, "1200": { - "value": "rgb(71, 12, 148)", + "value": "#5D00B1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1674,7 +1894,7 @@ } }, "1300": { - "value": "rgb(51, 16, 106)", + "value": "#4B0090", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1684,7 +1904,7 @@ } }, "1400": { - "value": "rgb(35, 15, 73)", + "value": "#3B006F", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1692,11 +1912,31 @@ "name": "purple-1400" } } + }, + "1500": { + "value": "#2C0054", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "purple-1500", + "uuid": "f43e7a56-8663-41a9-b688-5b6471e3fcff" + } + } + }, + "1600": { + "value": "#17002D", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "purple-1600", + "uuid": "8adc4493-0971-4b9c-bff7-c5ce8100fc43" + } + } } }, "seafoam": { "100": { - "value": "rgb(206, 247, 243)", + "value": "#EBFBF6", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1706,7 +1946,7 @@ } }, "200": { - "value": "rgb(170, 241, 234)", + "value": "#D3F6EA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1716,7 +1956,7 @@ } }, "300": { - "value": "rgb(140, 233, 226)", + "value": "#A9EDD8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1726,7 +1966,7 @@ } }, "400": { - "value": "rgb(101, 218, 210)", + "value": "#5CE1C2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1736,7 +1976,7 @@ } }, "500": { - "value": "rgb(63, 201, 193)", + "value": "#10CFA9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1746,7 +1986,7 @@ } }, "600": { - "value": "rgb(15, 181, 174)", + "value": "#0DB595", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1756,7 +1996,7 @@ } }, "700": { - "value": "rgb(0, 161, 154)", + "value": "#0BA286", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1766,7 +2006,7 @@ } }, "800": { - "value": "rgb(0, 140, 135)", + "value": "#099078", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1776,7 +2016,7 @@ } }, "900": { - "value": "rgb(0, 119, 114)", + "value": "#07816D", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1786,7 +2026,7 @@ } }, "1000": { - "value": "rgb(0, 99, 95)", + "value": "#056C5C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1796,7 +2036,7 @@ } }, "1100": { - "value": "rgb(12, 79, 76)", + "value": "#035C50", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1806,7 +2046,7 @@ } }, "1200": { - "value": "rgb(18, 60, 58)", + "value": "#014B43", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1816,7 +2056,7 @@ } }, "1300": { - "value": "rgb(18, 44, 43)", + "value": "#003C36", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1826,7 +2066,7 @@ } }, "1400": { - "value": "rgb(15, 31, 30)", + "value": "#002E28", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1834,11 +2074,31 @@ "name": "seafoam-1400" } } + }, + "1500": { + "value": "#00211D", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "seafoam-1500", + "uuid": "4cbacecc-89c9-482d-b3f5-7d8f85f0a3f1" + } + } + }, + "1600": { + "value": "#000F0E", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "seafoam-1600", + "uuid": "ebbfe9f4-5c24-46b2-983a-98570ed5ec78" + } + } } }, "yellow": { "100": { - "value": "rgb(251, 241, 152)", + "value": "#FFF8CC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1848,7 +2108,7 @@ } }, "200": { - "value": "rgb(248, 231, 80)", + "value": "#FFF197", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1858,7 +2118,7 @@ } }, "300": { - "value": "rgb(248, 217, 4)", + "value": "#FFDE2C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1868,7 +2128,7 @@ } }, "400": { - "value": "rgb(232, 198, 0)", + "value": "#F5C700", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1878,7 +2138,7 @@ } }, "500": { - "value": "rgb(215, 179, 0)", + "value": "#E6AF00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1888,7 +2148,7 @@ } }, "600": { - "value": "rgb(196, 159, 0)", + "value": "#D29500", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1898,7 +2158,7 @@ } }, "700": { - "value": "rgb(176, 140, 0)", + "value": "#C18300", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1908,7 +2168,7 @@ } }, "800": { - "value": "rgb(155, 120, 0)", + "value": "#AF7400", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1918,7 +2178,7 @@ } }, "900": { - "value": "rgb(133, 102, 0)", + "value": "#9E6600", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1928,7 +2188,7 @@ } }, "1000": { - "value": "rgb(112, 83, 0)", + "value": "#865500", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1938,7 +2198,7 @@ } }, "1100": { - "value": "rgb(91, 67, 0)", + "value": "#724800", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1948,7 +2208,7 @@ } }, "1200": { - "value": "rgb(72, 51, 0)", + "value": "#5D3B00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1958,7 +2218,7 @@ } }, "1300": { - "value": "rgb(54, 37, 0)", + "value": "#4B2F00", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1968,7 +2228,7 @@ } }, "1400": { - "value": "rgb(40, 26, 0)", + "value": "#382300", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1976,188 +2236,1098 @@ "name": "yellow-1400" } } + }, + "1500": { + "value": "#281900", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "yellow-1500", + "uuid": "d8eebb60-7b0c-496e-ae04-1f1fc61f3013" + } + } + }, + "1600": { + "value": "#120B00", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "yellow-1600", + "uuid": "ada313e4-768c-4fd0-b93c-b6f6d2a50f68" + } + } } }, - "transparent-black": { + "pink": { "100": { - "value": "rgba(0, 0, 0, 0)", + "value": "#FFF6FC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7565eb32-d745-4fc3-8779-a717f8ba910a", - "name": "transparent-black-100" + "name": "pink-100", + "uuid": "89d9aa85-aef2-47fa-8939-e6774f5fa2de" } } }, "200": { - "value": "rgba(0, 0, 0, 0.1)", + "value": "#FFE8F7", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a84ecad8-8005-4ce4-add6-7f83f7e05ba0", - "name": "transparent-black-200" + "name": "pink-200", + "uuid": "d80ed3c8-4db1-48e7-bd16-1d34580a3108" } } }, "300": { - "value": "rgba(0, 0, 0, 0.25)", + "value": "#FFD3F0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "16a871e1-d9df-42bb-8889-99059d70e82e", - "name": "transparent-black-300" + "name": "pink-300", + "uuid": "3041a3b2-4275-41fb-94ff-607108d94df3" } } }, "400": { - "value": "rgba(0, 0, 0, 0.4)", + "value": "#FFB5E6", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b769453b-586c-4dd2-b3a1-ddf5964160bc", - "name": "transparent-black-400" + "name": "pink-400", + "uuid": "c86af74f-6fe2-41a1-a934-2589f56fd041" } } }, "500": { - "value": "rgba(0, 0, 0, 0.55)", + "value": "#FF94DB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "cebedd9f-9e4b-47cf-addb-45d8ff9c9179", - "name": "transparent-black-500" + "name": "pink-500", + "uuid": "e526f977-736d-473b-b851-475fd08f5276" } } }, "600": { - "value": "rgba(0, 0, 0, 0.7)", + "value": "#FF67CC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "199e19a5-bf7d-4933-8425-d7d5881e4cf5", - "name": "transparent-black-600" + "name": "pink-600", + "uuid": "d383f12e-48f4-446c-abb4-595a50fd29a2" } } }, "700": { - "value": "rgba(0, 0, 0, 0.8)", + "value": "#F24CB8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "56da822f-98ea-4ad1-b993-3f052de45f36", - "name": "transparent-black-700" + "name": "pink-700", + "uuid": "91406d69-6d53-4231-be9e-e90d8ad0cc51" } } }, "800": { - "value": "rgba(0, 0, 0, 0.9)", + "value": "#E434A3", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3e89f180-b0f0-4de0-904b-c80f0210a361", - "name": "transparent-black-800" + "name": "pink-800", + "uuid": "af67d2bf-e92e-42f2-93d6-2f0b45fba0ac" } } }, "900": { - "value": "rgb(0, 0, 0)", + "value": "#CE2A92", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c0a331f9-53e3-4c72-b5e3-139d730a1752", - "name": "transparent-black-900" + "name": "pink-900", + "uuid": "a53ae96d-64bc-4baa-b51f-4490242047df" + } + } + }, + "1000": { + "value": "#B01F7B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1000", + "uuid": "8d8448ee-5b8d-4953-a2f8-ba34a3c7f796" + } + } + }, + "1100": { + "value": "#981668", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1100", + "uuid": "889ea4ff-1362-474e-ab12-15eb08bec89b" + } + } + }, + "1200": { + "value": "#800C55", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1200", + "uuid": "ac7fa4bb-da89-44ef-95d0-5d15fd8df976" + } + } + }, + "1300": { + "value": "#690344", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1300", + "uuid": "a10ffb76-fc1a-4f2f-ac43-dace44726820" + } + } + }, + "1400": { + "value": "#530035", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1400", + "uuid": "8c14e640-5df8-4753-8a47-295c1aee63c5" + } + } + }, + "1500": { + "value": "#3E0027", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1500", + "uuid": "886065e2-949f-4f4c-9aa9-0a843c3d8cf2" + } + } + }, + "1600": { + "value": "#210015", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1600", + "uuid": "0612a373-58a7-4393-b789-7dcf8e388b2c" } } } }, - "transparent-white": { + "turquoise": { "100": { - "value": "rgba(255, 255, 255, 0)", + "value": "#EEFBFB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a1b64a62-7c78-415e-a9be-c86acbf361ca", - "name": "transparent-white-100" + "name": "turquoise-100", + "uuid": "8e69d558-2c95-496f-8244-56c1abecef5f" } } }, "200": { - "value": "rgba(255, 255, 255, 0.1)", + "value": "#D1F5F5", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "936db837-bc5a-40b0-a0e8-8e39b9fc62cb", - "name": "transparent-white-200" + "name": "turquoise-200", + "uuid": "2dd6c94d-b55e-491e-91a9-bf9b4e3ceb54" } } }, "300": { - "value": "rgba(255, 255, 255, 0.25)", + "value": "#A9ECED", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5ffa0283-ce9c-4f96-9227-f559ec54ee0c", - "name": "transparent-white-300" + "name": "turquoise-300", + "uuid": "7eda1d2a-4c4a-495c-8b2f-c663be8c22f8" } } }, "400": { - "value": "rgba(255, 255, 255, 0.4)", + "value": "#6FDDE4", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "12e610d4-e3dc-4e86-9c09-09d86915b6f1", - "name": "transparent-white-400" + "name": "turquoise-400", + "uuid": "7a80623f-07eb-426a-9a64-ced6e3d09df1" } } }, "500": { - "value": "rgba(255, 255, 255, 0.55)", + "value": "#27CAD8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "89c1380f-3e8e-4895-b025-027cee7ecd5b", - "name": "transparent-white-500" + "name": "turquoise-500", + "uuid": "1fae7edd-0b41-4ae6-a436-c1e5ecda3e3a" } } }, "600": { - "value": "rgba(255, 255, 255, 0.7)", + "value": "#0FB1C0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b24431ee-5c72-4a73-8733-746c6f5d77c0", - "name": "transparent-white-600" + "name": "turquoise-600", + "uuid": "be19fd97-84da-40ed-82a2-1afa75b6f405" } } }, "700": { - "value": "rgba(255, 255, 255, 0.8)", + "value": "#0C9EAB", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3ecc14ec-a21e-47ba-8225-915509a532af", - "name": "transparent-white-700" + "name": "turquoise-700", + "uuid": "0a313605-1db7-4801-afac-28aeb30aa005" } } }, "800": { - "value": "rgba(255, 255, 255, 0.9)", + "value": "#0A8D99", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b85836bf-af47-412a-900a-4ec5ad0733b2", - "name": "transparent-white-800" + "name": "turquoise-800", + "uuid": "cb62cb21-ce76-4f47-a88d-14682eb6e06d" } } }, "900": { - "value": "rgb(255, 255, 255)", + "value": "#087E89", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c5c823c6-1911-4e0e-ba2f-5105f467e108", - "name": "transparent-white-900" + "name": "turquoise-900", + "uuid": "b1e2b910-c19d-4b83-9f49-f9e858ab58b9" + } + } + }, + "1000": { + "value": "#056B74", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1000", + "uuid": "f46bb42a-00fe-44ae-8421-16fbdbe1a9e3" + } + } + }, + "1100": { + "value": "#035A62", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1100", + "uuid": "7c957f48-f033-4814-a4e0-127e67169771" + } + } + }, + "1200": { + "value": "#014A51", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1200", + "uuid": "d85163b6-fbaf-4c49-b61b-f0b7b9529ff7" + } + } + }, + "1300": { + "value": "#003B41", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1300", + "uuid": "c9ab3575-f393-45db-a92b-07eccd4696bb" + } + } + }, + "1400": { + "value": "#002C31", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1400", + "uuid": "6ee374d9-95c4-4e5d-8f4d-fa1912cf6514" + } + } + }, + "1500": { + "value": "#002023", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1500", + "uuid": "d3e919d4-3777-4dca-93f9-0e04ab00d0dd" + } + } + }, + "1600": { + "value": "#000F11", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1600", + "uuid": "6af4ec29-d7c5-4562-be2c-a838aa919aed" + } + } + } + }, + "brown": { + "100": { + "value": "#FCF7F2", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-100", + "uuid": "aa01448b-bf3b-4da2-b483-127a3ed708f7" + } + } + }, + "200": { + "value": "#F7EEE1", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-200", + "uuid": "1b19a7b6-469e-4f5a-b30b-f3f465021d25" + } + } + }, + "300": { + "value": "#EFDDC3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-300", + "uuid": "9f0a77f8-aab8-4942-8119-332b09441939" + } + } + }, + "400": { + "value": "#E5C89D", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-400", + "uuid": "e33616c5-157c-42aa-a349-90d05f50beba" + } + } + }, + "500": { + "value": "#D6B17B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-500", + "uuid": "5346904d-2c85-4dd5-815c-ea2708a4d380" + } + } + }, + "600": { + "value": "#BE9B68", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-600", + "uuid": "970fd8ac-c68b-4789-84a6-1397b2514e2f" + } + } + }, + "700": { + "value": "#AB8A5A", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-700", + "uuid": "621aa30e-95de-4b69-814f-821dfe12b78d" + } + } + }, + "800": { + "value": "#9A7B4D", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-800", + "uuid": "b15bdc92-c03f-4ad4-a385-110d635e66af" + } + } + }, + "900": { + "value": "#8B6D42", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-900", + "uuid": "b0445ddb-ec22-4dde-81a1-21ea14ed195a" + } + } + }, + "1000": { + "value": "#775B32", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1000", + "uuid": "0dd635ef-0b0a-4914-8900-999ab7ce436e" + } + } + }, + "1100": { + "value": "#674C23", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1100", + "uuid": "d14770ac-d032-4408-b5de-637de47bf151" + } + } + }, + "1200": { + "value": "#583D15", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1200", + "uuid": "1a2cfeec-1d02-4225-a2a1-ecad878a0372" + } + } + }, + "1300": { + "value": "#463111", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1300", + "uuid": "88621915-f832-4401-b42f-4026cbf6720c" + } + } + }, + "1400": { + "value": "#34250D", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1400", + "uuid": "fa6e22f6-adb1-4123-b685-dd6050b0a248" + } + } + }, + "1500": { + "value": "#261A09", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1500", + "uuid": "ddac3cfe-8338-4df5-94c5-baf4e04e6c46" + } + } + }, + "1600": { + "value": "#100C04", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1600", + "uuid": "e2753343-f81b-4677-899c-6dfbcc9378fe" + } + } + } + }, + "cinnamon": { + "100": { + "value": "#FDF7F3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-100", + "uuid": "27d84774-6d32-4499-8ba9-9d05c8fca55d" + } + } + }, + "200": { + "value": "#F9ECE5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-200", + "uuid": "a8d1aa1d-f9be-448e-8209-afc6097f38ed" + } + } + }, + "300": { + "value": "#F4DACB", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-300", + "uuid": "56c7eeb3-990f-48e3-b024-56d36b0378f5" + } + } + }, + "400": { + "value": "#EDC4AC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-400", + "uuid": "d4760c87-d0e2-4c5c-84f3-81e0c4c8fbb3" + } + } + }, + "500": { + "value": "#E5AA88", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-500", + "uuid": "39effb8c-2bba-4018-b6df-2465f2f7e0a0" + } + } + }, + "600": { + "value": "#D4916C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-600", + "uuid": "7d4de908-322f-4326-b623-a868b454b031" + } + } + }, + "700": { + "value": "#C67E58", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-700", + "uuid": "0601d1ba-9a38-4fc9-ac89-ef332e906f3d" + } + } + }, + "800": { + "value": "#B86D46", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-800", + "uuid": "560d578a-4128-40d5-979f-80d3057294a0" + } + } + }, + "900": { + "value": "#AA5E38", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-900", + "uuid": "50199dcc-deae-42ba-99e7-cb98346789eb" + } + } + }, + "1000": { + "value": "#934D2B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1000", + "uuid": "b6943b69-7cec-4707-a556-aa350d9d8b89" + } + } + }, + "1100": { + "value": "#803E20", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1100", + "uuid": "62edca31-5c84-4353-9707-f3648c8e1936" + } + } + }, + "1200": { + "value": "#6E3015", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1200", + "uuid": "e8b6ac17-268d-4ebc-99bc-480d15554356" + } + } + }, + "1300": { + "value": "#5C230B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1300", + "uuid": "4330fb2e-d402-43bc-b7a0-502c7f6d99ea" + } + } + }, + "1400": { + "value": "#481906", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1400", + "uuid": "6fe88344-7920-46a6-bbe4-be3cfa20298e" + } + } + }, + "1500": { + "value": "#341204", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1500", + "uuid": "fe6e5407-3f9b-4dd0-9589-7029c19f35b5" + } + } + }, + "1600": { + "value": "#180802", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1600", + "uuid": "e3727e22-c955-4116-b5a7-2877df6ef2fe" + } + } + } + }, + "silver": { + "100": { + "value": "#F7F7F7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-100", + "uuid": "e190b39c-3e1f-4ad7-bc70-0b98c1770f61" + } + } + }, + "200": { + "value": "#EFEFEF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-200", + "uuid": "f0bae14e-1c9a-4a03-9dbf-dcd3213463c1" + } + } + }, + "300": { + "value": "#DFDFDF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-300", + "uuid": "41989dfb-ef46-493d-8b50-d9422b221ee8" + } + } + }, + "400": { + "value": "#CCCCCC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-400", + "uuid": "4bdcf062-a1b6-4615-ad8e-747082107f44" + } + } + }, + "500": { + "value": "#B7B7B7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-500", + "uuid": "1bd72e90-6ec1-4a55-beb2-04ad5afd03d5" + } + } + }, + "600": { + "value": "#A0A0A0", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-600", + "uuid": "1354b7a3-d0b5-4f48-8631-6b4afd7efe4f" + } + } + }, + "700": { + "value": "#8F8F8F", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-700", + "uuid": "8c7b40e3-239d-4b57-a846-eb5d9f96615d" + } + } + }, + "800": { + "value": "#808080", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-800", + "uuid": "bbfb55a6-5bca-424d-8a27-e1e54fff7309" + } + } + }, + "900": { + "value": "#727272", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-900", + "uuid": "39cdbda8-3c8c-4977-a90e-3883647d93a6" + } + } + }, + "1000": { + "value": "#606060", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1000", + "uuid": "943f1415-fc31-4724-8434-9e9cdb51d2b4" + } + } + }, + "1100": { + "value": "#515151", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1100", + "uuid": "28748667-93d7-4752-8c75-419af48b4d1d" + } + } + }, + "1200": { + "value": "#424242", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1200", + "uuid": "f1033f5b-aa7f-4351-9100-43ce546f6a8d" + } + } + }, + "1300": { + "value": "#343434", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1300", + "uuid": "77bcd85e-90f8-47b8-a9a3-ec59cd7ffe14" + } + } + }, + "1400": { + "value": "#272727", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1400", + "uuid": "369bdb1d-bd52-41b4-8512-159cb20c5d64" + } + } + }, + "1500": { + "value": "#1C1C1C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1500", + "uuid": "b9b53281-a4f9-4073-8552-d3d4cec25271" + } + } + }, + "1600": { + "value": "#0C0C0C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1600", + "uuid": "fc85bffe-09d4-4fb6-bb7b-5f1053139b97" + } + } + } + }, + "transparent-black": { + "25": { + "value": "rgba(0, 0, 0, 0)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-25", + "uuid": "d0867b86-6245-4c02-8617-ea7fd5c80288" + } + } + }, + "50": { + "value": "rgba(0, 0, 0, 0.03)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-50", + "uuid": "d6aa176c-30bd-423f-b05f-4360672bd87e" + } + } + }, + "75": { + "value": "rgba(0, 0, 0, 0.05)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-75", + "uuid": "d33a66ea-ca60-416f-9e92-967dbbb1e983" + } + } + }, + "100": { + "value": "rgba(0, 0, 0, 0.09)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "7565eb32-d745-4fc3-8779-a717f8ba910a", + "name": "transparent-black-100" + } + } + }, + "200": { + "value": "rgba(0, 0, 0, 0.12)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "a84ecad8-8005-4ce4-add6-7f83f7e05ba0", + "name": "transparent-black-200" + } + } + }, + "300": { + "value": "rgba(0, 0, 0, 0.15)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "16a871e1-d9df-42bb-8889-99059d70e82e", + "name": "transparent-black-300" + } + } + }, + "400": { + "value": "rgba(0, 0, 0, 0.22)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b769453b-586c-4dd2-b3a1-ddf5964160bc", + "name": "transparent-black-400" + } + } + }, + "500": { + "value": "rgba(0, 0, 0, 0.44)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "cebedd9f-9e4b-47cf-addb-45d8ff9c9179", + "name": "transparent-black-500" + } + } + }, + "600": { + "value": "rgba(0, 0, 0, 0.56)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "199e19a5-bf7d-4933-8425-d7d5881e4cf5", + "name": "transparent-black-600" + } + } + }, + "700": { + "value": "rgba(0, 0, 0, 0.69)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "56da822f-98ea-4ad1-b993-3f052de45f36", + "name": "transparent-black-700" + } + } + }, + "800": { + "value": "rgba(0, 0, 0, 0.84)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "3e89f180-b0f0-4de0-904b-c80f0210a361", + "name": "transparent-black-800" + } + } + }, + "900": { + "value": "rgba(0, 0, 0, 0.93)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "c0a331f9-53e3-4c72-b5e3-139d730a1752", + "name": "transparent-black-900" + } + } + }, + "1000": { + "value": "#000000", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-1000", + "uuid": "098f2f56-e52f-47b1-943a-d1d7218de484" + } + } + } + }, + "transparent-white": { + "25": { + "value": "rgba(255, 255, 255, 0)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-25", + "uuid": "98a7279b-e21c-41ae-9bae-8b9b2b243e35" + } + } + }, + "50": { + "value": "rgba(255, 255, 255, 0.04)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-50", + "uuid": "db1dbf26-fa48-42e1-b724-7953b0a6a543" + } + } + }, + "75": { + "value": "rgba(255, 255, 255, 0.07)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-75", + "uuid": "28d11d38-570d-4d99-b581-855781b972c5" + } + } + }, + "100": { + "value": "rgba(255, 255, 255, 0.11)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "a1b64a62-7c78-415e-a9be-c86acbf361ca", + "name": "transparent-white-100" + } + } + }, + "200": { + "value": "rgba(255, 255, 255, 0.14)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "936db837-bc5a-40b0-a0e8-8e39b9fc62cb", + "name": "transparent-white-200" + } + } + }, + "300": { + "value": "rgba(255, 255, 255, 0.17)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "5ffa0283-ce9c-4f96-9227-f559ec54ee0c", + "name": "transparent-white-300" + } + } + }, + "400": { + "value": "rgba(255, 255, 255, 0.21)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "12e610d4-e3dc-4e86-9c09-09d86915b6f1", + "name": "transparent-white-400" + } + } + }, + "500": { + "value": "rgba(255, 255, 255, 0.39)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "89c1380f-3e8e-4895-b025-027cee7ecd5b", + "name": "transparent-white-500" + } + } + }, + "600": { + "value": "rgba(255, 255, 255, 0.51)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b24431ee-5c72-4a73-8733-746c6f5d77c0", + "name": "transparent-white-600" + } + } + }, + "700": { + "value": "rgba(255, 255, 255, 0.66)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "3ecc14ec-a21e-47ba-8225-915509a532af", + "name": "transparent-white-700" + } + } + }, + "800": { + "value": "rgba(255, 255, 255, 0.85)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b85836bf-af47-412a-900a-4ec5ad0733b2", + "name": "transparent-white-800" + } + } + }, + "900": { + "value": "rgba(255, 255, 255, 0.94)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "c5c823c6-1911-4e0e-ba2f-5105f467e108", + "name": "transparent-white-900" + } + } + }, + "1000": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-1000", + "uuid": "1409a50a-9a9d-463d-957f-fa2e4f98a0cd" } } } diff --git a/src/tokens-studio/foundations/spectrum/palette/wireframe.json b/src/tokens-studio/foundations/spectrum/palette/wireframe.json index 7fee7a4c..28995c77 100644 --- a/src/tokens-studio/foundations/spectrum/palette/wireframe.json +++ b/src/tokens-studio/foundations/spectrum/palette/wireframe.json @@ -1,7 +1,7 @@ { "Palette": { "black": { - "value": "rgb(0, 0, 0)", + "value": "#000000", "type": "color", "$extensions": { "spectrum-tokens": { @@ -11,7 +11,7 @@ } }, "white": { - "value": "rgb(255, 255, 255)", + "value": "#FFFFFF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -21,8 +21,18 @@ } }, "gray": { + "25": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "gray-25", + "uuid": "0906f3b2-74a9-4012-9e26-4d8f68f0eba9" + } + } + }, "50": { - "value": "rgb(255, 255, 255)", + "value": "#FFFFFF", "type": "color", "$extensions": { "spectrum-tokens": { @@ -32,7 +42,7 @@ } }, "75": { - "value": "rgb(253, 253, 254)", + "value": "#FDFDFE", "type": "color", "$extensions": { "spectrum-tokens": { @@ -42,7 +52,7 @@ } }, "100": { - "value": "rgb(244, 246, 252)", + "value": "#F4F6FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -52,7 +62,7 @@ } }, "200": { - "value": "rgb(230, 236, 248)", + "value": "#E6ECF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -62,7 +72,7 @@ } }, "300": { - "value": "rgb(210, 220, 243)", + "value": "#D2DCF3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -72,7 +82,7 @@ } }, "400": { - "value": "rgb(183, 200, 235)", + "value": "#B7C8EB", "type": "color", "$extensions": { "spectrum-tokens": { @@ -82,7 +92,7 @@ } }, "500": { - "value": "rgb(152, 176, 226)", + "value": "#98B0E2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -92,7 +102,7 @@ } }, "600": { - "value": "rgb(113, 144, 210)", + "value": "#7190D2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -102,7 +112,7 @@ } }, "700": { - "value": "rgb(78, 112, 187)", + "value": "#4E70BB", "type": "color", "$extensions": { "spectrum-tokens": { @@ -112,7 +122,7 @@ } }, "800": { - "value": "rgb(73, 110, 194)", + "value": "#496EC2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -122,7 +132,7 @@ } }, "900": { - "value": "rgb(72, 110, 194)", + "value": "#486EC2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -130,11 +140,21 @@ "name": "gray-900" } } + }, + "1000": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "gray-1000", + "uuid": "e804baf9-ae2c-4574-96d9-10cd5253fe47" + } + } } }, "blue": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -144,7 +164,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -154,7 +174,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -164,7 +184,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -174,7 +194,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -184,7 +204,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -194,7 +214,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -204,7 +224,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -214,7 +234,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -224,7 +244,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -234,7 +254,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -244,7 +264,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -254,7 +274,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -264,7 +284,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -272,11 +292,31 @@ "name": "blue-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "blue-1500", + "uuid": "07862296-803e-42fc-8ba1-ff8c25e76f66" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "blue-1600", + "uuid": "9d380e6c-f6e9-433d-a8d8-f2432181736c" + } + } } }, "green": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -286,7 +326,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -296,7 +336,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -306,7 +346,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -316,7 +356,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -326,7 +366,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -336,7 +376,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -346,7 +386,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -356,7 +396,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -366,7 +406,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -376,7 +416,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -386,7 +426,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -396,7 +436,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -406,7 +446,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -414,11 +454,31 @@ "name": "green-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "green-1500", + "uuid": "490cf084-b56e-4464-8e38-1bb15458213e" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "green-1600", + "uuid": "96e3e83b-1878-460e-9bc2-aa25a36ff887" + } + } } }, "orange": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -428,7 +488,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -438,7 +498,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -448,7 +508,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -458,7 +518,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -468,7 +528,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -478,7 +538,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -488,7 +548,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -498,7 +558,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -508,7 +568,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -518,7 +578,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -528,7 +588,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -538,7 +598,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -548,7 +608,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -556,11 +616,31 @@ "name": "orange-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "orange-1500", + "uuid": "ea973b33-e10f-44b6-a621-92c752edb8af" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "orange-1600", + "uuid": "c93608b1-700d-496c-90c4-298870776956" + } + } } }, "red": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -570,7 +650,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -580,7 +660,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -590,7 +670,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -600,7 +680,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -610,7 +690,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -620,7 +700,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -630,7 +710,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -640,7 +720,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -650,7 +730,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -660,7 +740,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -670,7 +750,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -680,7 +760,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -690,7 +770,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -698,11 +778,31 @@ "name": "red-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "red-1500", + "uuid": "421ec0d6-4d71-4c2d-8a39-19e3700451f0" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "red-1600", + "uuid": "50807cbc-ade6-4f6d-8711-f569a52adaf8" + } + } } }, "celery": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -712,7 +812,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -722,7 +822,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -732,7 +832,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -742,7 +842,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -752,7 +852,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -762,7 +862,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -772,7 +872,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -782,7 +882,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -792,7 +892,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -802,7 +902,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -812,7 +912,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -822,7 +922,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -832,7 +932,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -840,11 +940,31 @@ "name": "celery-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "celery-1500", + "uuid": "fe522078-7e21-447e-bd4f-e5f2ea6845d9" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "celery-1600", + "uuid": "99fb92f6-7186-4432-99ec-d5fa5b35c5be" + } + } } }, "chartreuse": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -854,7 +974,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -864,7 +984,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -874,7 +994,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -884,7 +1004,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -894,7 +1014,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -904,7 +1024,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -914,7 +1034,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -924,7 +1044,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -934,7 +1054,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -944,7 +1064,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -954,7 +1074,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -964,7 +1084,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -974,7 +1094,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -982,11 +1102,31 @@ "name": "chartreuse-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "chartreuse-1500", + "uuid": "75e5c281-4c83-4ffe-a1de-aedfa65be894" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "chartreuse-1600", + "uuid": "a8d9965e-14d9-4015-9a6f-421400c6d011" + } + } } }, "cyan": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -996,7 +1136,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1006,7 +1146,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1016,7 +1156,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1026,7 +1166,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1036,7 +1176,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1046,7 +1186,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1056,7 +1196,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1066,7 +1206,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1076,7 +1216,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1086,7 +1226,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1096,7 +1236,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1106,7 +1246,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1116,7 +1256,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1124,11 +1264,31 @@ "name": "cyan-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cyan-1500", + "uuid": "6aa5f844-ba8d-40a3-86ec-109e9430ace5" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cyan-1600", + "uuid": "9bf84aeb-6822-40c9-b027-8db8a49fd54b" + } + } } }, "fuchsia": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1138,7 +1298,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1148,7 +1308,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1158,7 +1318,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1168,7 +1328,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1178,7 +1338,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1188,7 +1348,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1198,7 +1358,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1208,7 +1368,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1218,7 +1378,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1228,7 +1388,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1238,7 +1398,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1248,7 +1408,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1258,7 +1418,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1266,11 +1426,31 @@ "name": "fuchsia-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "fuchsia-1500", + "uuid": "a8afc139-5eeb-4b56-9acd-62433f802563" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "fuchsia-1600", + "uuid": "cd37d695-d1b0-4322-92f7-9bc0a347aa90" + } + } } }, "indigo": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1280,7 +1460,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1290,7 +1470,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1300,7 +1480,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1310,7 +1490,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1320,7 +1500,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1330,7 +1510,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1340,7 +1520,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1350,7 +1530,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1360,7 +1540,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1370,7 +1550,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1380,7 +1560,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1390,7 +1570,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1400,7 +1580,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1408,11 +1588,31 @@ "name": "indigo-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "indigo-1500", + "uuid": "72c07c8d-19f8-44de-8e73-98997502cf86" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "indigo-1600", + "uuid": "2f76990f-4bfd-4b4d-b063-aa374ea9df83" + } + } } }, "magenta": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1422,7 +1622,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1432,7 +1632,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1442,7 +1642,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1452,7 +1652,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1462,7 +1662,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1472,7 +1672,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1482,7 +1682,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1492,7 +1692,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1502,7 +1702,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1512,7 +1712,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1522,7 +1722,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1532,7 +1732,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1542,7 +1742,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1550,11 +1750,31 @@ "name": "magenta-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "magenta-1500", + "uuid": "950ba124-e6b5-47b6-b1b8-31960f7cc380" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "magenta-1600", + "uuid": "2fc90f48-a54e-4aae-9b9f-aa3c4d7e55de" + } + } } }, "purple": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1564,7 +1784,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1574,7 +1794,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1584,7 +1804,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1594,7 +1814,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1604,7 +1824,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1614,7 +1834,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1624,7 +1844,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1634,7 +1854,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1644,7 +1864,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1654,7 +1874,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1664,7 +1884,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1674,7 +1894,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1684,7 +1904,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1692,11 +1912,31 @@ "name": "purple-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "purple-1500", + "uuid": "05c1a879-e716-4f67-97ab-7f524b713815" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "purple-1600", + "uuid": "1d742643-035d-4966-aba9-2be2bbfb793e" + } + } } }, "seafoam": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1706,7 +1946,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1716,7 +1956,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1726,7 +1966,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1736,7 +1976,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1746,7 +1986,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1756,7 +1996,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1766,7 +2006,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1776,7 +2016,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1786,7 +2026,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1796,7 +2036,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1806,7 +2046,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1816,7 +2056,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1826,7 +2066,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1834,11 +2074,31 @@ "name": "seafoam-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "seafoam-1500", + "uuid": "fd0d5cda-892b-4628-a125-353dcd123987" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "seafoam-1600", + "uuid": "6685e580-982d-4f86-800a-19797f1675af" + } + } } }, "yellow": { "100": { - "value": "rgb(242, 245, 251)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1848,7 +2108,7 @@ } }, "200": { - "value": "rgb(237, 241, 250)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1858,7 +2118,7 @@ } }, "300": { - "value": "rgb(233, 238, 248)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1868,7 +2128,7 @@ } }, "400": { - "value": "rgb(226, 232, 247)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1878,7 +2138,7 @@ } }, "500": { - "value": "rgb(216, 225, 244)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1888,7 +2148,7 @@ } }, "600": { - "value": "rgb(203, 215, 241)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1898,7 +2158,7 @@ } }, "700": { - "value": "rgb(190, 205, 237)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1908,7 +2168,7 @@ } }, "800": { - "value": "rgb(173, 192, 233)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1918,7 +2178,7 @@ } }, "900": { - "value": "rgb(154, 177, 227)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1928,7 +2188,7 @@ } }, "1000": { - "value": "rgb(133, 161, 219)", + "value": "#3D5EA5", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1938,7 +2198,7 @@ } }, "1100": { - "value": "rgb(114, 145, 211)", + "value": "#344F8C", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1948,7 +2208,7 @@ } }, "1200": { - "value": "rgb(96, 130, 201)", + "value": "#2A4172", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1958,7 +2218,7 @@ } }, "1300": { - "value": "rgb(82, 117, 192)", + "value": "#22335B", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1968,7 +2228,7 @@ } }, "1400": { - "value": "rgb(74, 109, 184)", + "value": "#192745", "type": "color", "$extensions": { "spectrum-tokens": { @@ -1976,188 +2236,1098 @@ "name": "yellow-1400" } } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "yellow-1500", + "uuid": "8be0ad1a-0cdf-409d-953f-0a203282e1d9" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "yellow-1600", + "uuid": "15f47c52-fa9c-4982-ad9c-684024a9a667" + } + } } }, - "transparent-black": { + "pink": { "100": { - "value": "rgba(0, 0, 0, 0)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "7565eb32-d745-4fc3-8779-a717f8ba910a", - "name": "transparent-black-100" + "name": "pink-100", + "uuid": "4c01ddf8-d689-4433-826c-75b33bc2214d" } } }, "200": { - "value": "rgba(0, 0, 0, 0.1)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a84ecad8-8005-4ce4-add6-7f83f7e05ba0", - "name": "transparent-black-200" + "name": "pink-200", + "uuid": "d4e972fb-fbd5-4b37-bd20-9487ed47d243" } } }, "300": { - "value": "rgba(0, 0, 0, 0.25)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "16a871e1-d9df-42bb-8889-99059d70e82e", - "name": "transparent-black-300" + "name": "pink-300", + "uuid": "83e9b8e8-ff2a-49fc-9ac8-349c694c1aec" } } }, "400": { - "value": "rgba(0, 0, 0, 0.4)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b769453b-586c-4dd2-b3a1-ddf5964160bc", - "name": "transparent-black-400" + "name": "pink-400", + "uuid": "ba838eaa-0dc0-4bbd-be25-300e8bd89272" } } }, "500": { - "value": "rgba(0, 0, 0, 0.55)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "cebedd9f-9e4b-47cf-addb-45d8ff9c9179", - "name": "transparent-black-500" + "name": "pink-500", + "uuid": "356a4b99-8ffc-4d11-b56e-a88c5e70194d" } } }, "600": { - "value": "rgba(0, 0, 0, 0.7)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "199e19a5-bf7d-4933-8425-d7d5881e4cf5", - "name": "transparent-black-600" + "name": "pink-600", + "uuid": "527b5dcd-0896-4dbc-82f9-866297227eb0" } } }, "700": { - "value": "rgba(0, 0, 0, 0.8)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "56da822f-98ea-4ad1-b993-3f052de45f36", - "name": "transparent-black-700" + "name": "pink-700", + "uuid": "873c22cd-488b-45d4-a79d-0473fc4f3c7f" } } }, "800": { - "value": "rgba(0, 0, 0, 0.9)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3e89f180-b0f0-4de0-904b-c80f0210a361", - "name": "transparent-black-800" + "name": "pink-800", + "uuid": "b50fbb92-1897-469d-a867-d9f6e5070c2e" } } }, "900": { - "value": "rgb(0, 0, 0)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c0a331f9-53e3-4c72-b5e3-139d730a1752", - "name": "transparent-black-900" + "name": "pink-900", + "uuid": "85c314fe-cdfe-4542-856f-f58acfad1aee" + } + } + }, + "1000": { + "value": "#3D5EA5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1000", + "uuid": "deac6200-0e75-47d5-9073-3aaa390f1cd1" + } + } + }, + "1100": { + "value": "#344F8C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1100", + "uuid": "b9911ab3-fa6b-42e7-9247-c341b68ee151" + } + } + }, + "1200": { + "value": "#2A4172", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1200", + "uuid": "4c73d77d-95e3-4311-b644-2b55ad4552cf" + } + } + }, + "1300": { + "value": "#22335B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1300", + "uuid": "efa5d789-8e54-493d-9787-8e5dce4180a0" + } + } + }, + "1400": { + "value": "#192745", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1400", + "uuid": "4d10b352-648d-404a-a863-3fd3308b2696" + } + } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1500", + "uuid": "13813529-7eb8-4171-a40b-a719c430299b" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "pink-1600", + "uuid": "44800628-6a86-49de-b44f-256ca36c4127" } } } }, - "transparent-white": { + "turquoise": { "100": { - "value": "rgba(255, 255, 255, 0)", + "value": "#F6F8FC", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "a1b64a62-7c78-415e-a9be-c86acbf361ca", - "name": "transparent-white-100" + "name": "turquoise-100", + "uuid": "094b2708-cb1f-4936-96ee-503cf113ab7a" } } }, "200": { - "value": "rgba(255, 255, 255, 0.1)", + "value": "#EBEFF8", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "936db837-bc5a-40b0-a0e8-8e39b9fc62cb", - "name": "transparent-white-200" + "name": "turquoise-200", + "uuid": "e5a0aca5-4d22-4d1a-9732-6e0e2c98e72d" } } }, "300": { - "value": "rgba(255, 255, 255, 0.25)", + "value": "#D8E0F2", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "5ffa0283-ce9c-4f96-9227-f559ec54ee0c", - "name": "transparent-white-300" + "name": "turquoise-300", + "uuid": "c4877ffd-985b-4260-b1c3-3ac37392315a" } } }, "400": { - "value": "rgba(255, 255, 255, 0.4)", + "value": "#C0CDEA", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "12e610d4-e3dc-4e86-9c09-09d86915b6f1", - "name": "transparent-white-400" + "name": "turquoise-400", + "uuid": "f136369b-3ac7-4041-871e-90c90f3da3a9" } } }, "500": { - "value": "rgba(255, 255, 255, 0.55)", + "value": "#A4B7E1", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "89c1380f-3e8e-4895-b025-027cee7ecd5b", - "name": "transparent-white-500" + "name": "turquoise-500", + "uuid": "4320a8e7-3509-45c6-b133-02bf0e779a42" } } }, "600": { - "value": "rgba(255, 255, 255, 0.7)", + "value": "#87A0D7", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b24431ee-5c72-4a73-8733-746c6f5d77c0", - "name": "transparent-white-600" + "name": "turquoise-600", + "uuid": "1ce42e96-435f-4895-896d-268dcdf16b21" } } }, "700": { - "value": "rgba(255, 255, 255, 0.8)", + "value": "#718ED0", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "3ecc14ec-a21e-47ba-8225-915509a532af", - "name": "transparent-white-700" + "name": "turquoise-700", + "uuid": "9ffcdab9-e422-4ece-b292-6b8ce227bef8" } } }, "800": { - "value": "rgba(255, 255, 255, 0.9)", + "value": "#5D7FC9", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "b85836bf-af47-412a-900a-4ec5ad0733b2", - "name": "transparent-white-800" + "name": "turquoise-800", + "uuid": "a6548e62-22e6-4089-b098-0a8bb60676ec" } } }, "900": { - "value": "rgb(255, 255, 255)", + "value": "#4A6FC3", "type": "color", "$extensions": { "spectrum-tokens": { - "uuid": "c5c823c6-1911-4e0e-ba2f-5105f467e108", - "name": "transparent-white-900" + "name": "turquoise-900", + "uuid": "2084f7e5-221c-4a4e-96e0-fa0ff2fa40f1" + } + } + }, + "1000": { + "value": "#3D5EA5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1000", + "uuid": "7c82b1ca-e445-45a0-b7b2-5ed3030e92e7" + } + } + }, + "1100": { + "value": "#344F8C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1100", + "uuid": "e3e88d56-d236-41f7-8eaa-3804576b6161" + } + } + }, + "1200": { + "value": "#2A4172", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1200", + "uuid": "1ca86f12-0424-40b5-a606-912e2fcc5cc1" + } + } + }, + "1300": { + "value": "#22335B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1300", + "uuid": "07b5d5b0-8952-4901-a0e5-227fa3e1aacf" + } + } + }, + "1400": { + "value": "#192745", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1400", + "uuid": "81180029-eec8-4d26-9fe0-3966aa372151" + } + } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1500", + "uuid": "1162302d-4bcf-478a-a95e-660785220434" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "turquoise-1600", + "uuid": "21be860b-80bb-40a1-9aaf-20a97b2ddc77" + } + } + } + }, + "brown": { + "100": { + "value": "#F6F8FC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-100", + "uuid": "3d64c998-df63-4695-a1d1-00d78ed2097b" + } + } + }, + "200": { + "value": "#EBEFF8", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-200", + "uuid": "5d0e6309-481d-40f9-81b9-7d0bee9cf794" + } + } + }, + "300": { + "value": "#D8E0F2", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-300", + "uuid": "e710f0e9-90a7-4ed9-8d2b-6a8c9ed778db" + } + } + }, + "400": { + "value": "#C0CDEA", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-400", + "uuid": "7a9223ac-0dee-4dd5-8b11-b04815683c6b" + } + } + }, + "500": { + "value": "#A4B7E1", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-500", + "uuid": "bca8a6a6-557e-4930-b765-0dcc9867c42a" + } + } + }, + "600": { + "value": "#87A0D7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-600", + "uuid": "ef14139b-0550-4a5a-b2f5-eb787bcf406d" + } + } + }, + "700": { + "value": "#718ED0", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-700", + "uuid": "45f999be-146e-4b0f-97de-ef1f7e82d675" + } + } + }, + "800": { + "value": "#5D7FC9", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-800", + "uuid": "2c0181c8-ef5c-46c8-bc3e-703d08f3692b" + } + } + }, + "900": { + "value": "#4A6FC3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-900", + "uuid": "6756882c-f521-49fc-b7c9-3dc8f4d39d5a" + } + } + }, + "1000": { + "value": "#3D5EA5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1000", + "uuid": "a2a5c52d-7381-47b8-9b67-5d3c86e8ff21" + } + } + }, + "1100": { + "value": "#344F8C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1100", + "uuid": "1c1c2c57-890d-4638-b219-5b5e1953ba57" + } + } + }, + "1200": { + "value": "#2A4172", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1200", + "uuid": "df9afc4f-bb87-4dae-b2b6-f7d27a590593" + } + } + }, + "1300": { + "value": "#22335B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1300", + "uuid": "1e9a6104-d427-4197-8e01-25673c917143" + } + } + }, + "1400": { + "value": "#192745", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1400", + "uuid": "2ceb2cda-a535-44eb-ae23-b922edcb8bb8" + } + } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1500", + "uuid": "19c96dc5-7a37-4381-a7e8-ac1c442afda6" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "brown-1600", + "uuid": "cb18b0b7-7ad5-419f-863c-fdbb05c624c3" + } + } + } + }, + "cinnamon": { + "100": { + "value": "#F6F8FC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-100", + "uuid": "3c3b2fb7-053d-47ca-86a6-4d1ee07b6f3f" + } + } + }, + "200": { + "value": "#EBEFF8", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-200", + "uuid": "07d13e6d-0df2-4eee-8550-ef033f954e9e" + } + } + }, + "300": { + "value": "#D8E0F2", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-300", + "uuid": "74d44818-bbbd-44a3-b9f0-7131fb036498" + } + } + }, + "400": { + "value": "#C0CDEA", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-400", + "uuid": "2a7d78f3-ad8d-4301-96e8-f2a4ed378c00" + } + } + }, + "500": { + "value": "#A4B7E1", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-500", + "uuid": "c607ecc8-35ed-4d47-a683-54d57b816fbd" + } + } + }, + "600": { + "value": "#87A0D7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-600", + "uuid": "d46ae80e-04ba-418f-8368-1d8c0633c0d1" + } + } + }, + "700": { + "value": "#718ED0", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-700", + "uuid": "71085b67-c49c-4b1e-b708-6b38c16b9d37" + } + } + }, + "800": { + "value": "#5D7FC9", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-800", + "uuid": "e78bd82d-f4c0-4617-92bb-08a69153bacd" + } + } + }, + "900": { + "value": "#4A6FC3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-900", + "uuid": "cdaaa5e1-7ca5-43a8-bdb4-3ef8fedbb30d" + } + } + }, + "1000": { + "value": "#3D5EA5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1000", + "uuid": "696315e6-4d82-49a0-8781-853beb0d1f5b" + } + } + }, + "1100": { + "value": "#344F8C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1100", + "uuid": "41f0e438-0ca6-4240-84e7-dedfcff1aa21" + } + } + }, + "1200": { + "value": "#2A4172", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1200", + "uuid": "87e41d92-4099-4248-963c-394d43e33657" + } + } + }, + "1300": { + "value": "#22335B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1300", + "uuid": "2c86bff2-dddd-4fea-b6da-99873fa74da3" + } + } + }, + "1400": { + "value": "#192745", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1400", + "uuid": "2ec58374-b4c1-4e03-8f3f-57c747a7ed47" + } + } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1500", + "uuid": "1adb9cd6-2ba1-4501-ab9d-f377ae07d399" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "cinnamon-1600", + "uuid": "321a9931-be34-4ce9-8180-8e7fd87e30f4" + } + } + } + }, + "silver": { + "100": { + "value": "#F6F8FC", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-100", + "uuid": "7e0c8012-9ec4-40c3-a572-dd551627e54f" + } + } + }, + "200": { + "value": "#EBEFF8", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-200", + "uuid": "240ade94-eb1b-4ddd-b667-7c05af2b196a" + } + } + }, + "300": { + "value": "#D8E0F2", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-300", + "uuid": "da36dc54-21c0-412f-baa1-ae3a2810b926" + } + } + }, + "400": { + "value": "#C0CDEA", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-400", + "uuid": "a52e646b-54c7-419b-850e-1da7abc74dd3" + } + } + }, + "500": { + "value": "#A4B7E1", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-500", + "uuid": "696e8452-cd1b-4ab8-b9d6-eb2b76bdf020" + } + } + }, + "600": { + "value": "#87A0D7", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-600", + "uuid": "b0f8e027-ba0e-4460-8d45-b0ada27327d9" + } + } + }, + "700": { + "value": "#718ED0", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-700", + "uuid": "907d96cc-375b-49a7-abe0-afb229c98474" + } + } + }, + "800": { + "value": "#5D7FC9", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-800", + "uuid": "8ed554bc-be40-4ebb-9a83-c85c73c0cb3d" + } + } + }, + "900": { + "value": "#4A6FC3", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-900", + "uuid": "3f1bbfff-8a14-4984-a725-211aba36fa98" + } + } + }, + "1000": { + "value": "#3D5EA5", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1000", + "uuid": "28a8b564-c9fb-41ab-b989-47516f9c0135" + } + } + }, + "1100": { + "value": "#344F8C", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1100", + "uuid": "69a3ff9a-dec9-4a96-b54f-f9ca12568e59" + } + } + }, + "1200": { + "value": "#2A4172", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1200", + "uuid": "18013461-754d-434e-8b05-269dd307d45a" + } + } + }, + "1300": { + "value": "#22335B", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1300", + "uuid": "8119e422-4eb8-44fc-bf69-b1f76963afca" + } + } + }, + "1400": { + "value": "#192745", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1400", + "uuid": "9313f4d5-1105-4cb0-81f4-a8a5109594a0" + } + } + }, + "1500": { + "value": "#121B30", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1500", + "uuid": "dba91bae-1dae-4687-be68-d831a5bd42ba" + } + } + }, + "1600": { + "value": "#080C16", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "silver-1600", + "uuid": "cd1b844a-29bf-4643-a246-4f124544e25d" + } + } + } + }, + "transparent-black": { + "25": { + "value": "rgba(0, 0, 0, 0)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-25", + "uuid": "d0867b86-6245-4c02-8617-ea7fd5c80288" + } + } + }, + "50": { + "value": "rgba(0, 0, 0, 0.03)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-50", + "uuid": "d6aa176c-30bd-423f-b05f-4360672bd87e" + } + } + }, + "75": { + "value": "rgba(0, 0, 0, 0.05)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-75", + "uuid": "d33a66ea-ca60-416f-9e92-967dbbb1e983" + } + } + }, + "100": { + "value": "rgba(0, 0, 0, 0.09)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "7565eb32-d745-4fc3-8779-a717f8ba910a", + "name": "transparent-black-100" + } + } + }, + "200": { + "value": "rgba(0, 0, 0, 0.12)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "a84ecad8-8005-4ce4-add6-7f83f7e05ba0", + "name": "transparent-black-200" + } + } + }, + "300": { + "value": "rgba(0, 0, 0, 0.15)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "16a871e1-d9df-42bb-8889-99059d70e82e", + "name": "transparent-black-300" + } + } + }, + "400": { + "value": "rgba(0, 0, 0, 0.22)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b769453b-586c-4dd2-b3a1-ddf5964160bc", + "name": "transparent-black-400" + } + } + }, + "500": { + "value": "rgba(0, 0, 0, 0.44)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "cebedd9f-9e4b-47cf-addb-45d8ff9c9179", + "name": "transparent-black-500" + } + } + }, + "600": { + "value": "rgba(0, 0, 0, 0.56)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "199e19a5-bf7d-4933-8425-d7d5881e4cf5", + "name": "transparent-black-600" + } + } + }, + "700": { + "value": "rgba(0, 0, 0, 0.69)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "56da822f-98ea-4ad1-b993-3f052de45f36", + "name": "transparent-black-700" + } + } + }, + "800": { + "value": "rgba(0, 0, 0, 0.84)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "3e89f180-b0f0-4de0-904b-c80f0210a361", + "name": "transparent-black-800" + } + } + }, + "900": { + "value": "rgba(0, 0, 0, 0.93)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "c0a331f9-53e3-4c72-b5e3-139d730a1752", + "name": "transparent-black-900" + } + } + }, + "1000": { + "value": "#000000", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-black-1000", + "uuid": "098f2f56-e52f-47b1-943a-d1d7218de484" + } + } + } + }, + "transparent-white": { + "25": { + "value": "rgba(255, 255, 255, 0)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-25", + "uuid": "98a7279b-e21c-41ae-9bae-8b9b2b243e35" + } + } + }, + "50": { + "value": "rgba(255, 255, 255, 0.04)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-50", + "uuid": "db1dbf26-fa48-42e1-b724-7953b0a6a543" + } + } + }, + "75": { + "value": "rgba(255, 255, 255, 0.07)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-75", + "uuid": "28d11d38-570d-4d99-b581-855781b972c5" + } + } + }, + "100": { + "value": "rgba(255, 255, 255, 0.11)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "a1b64a62-7c78-415e-a9be-c86acbf361ca", + "name": "transparent-white-100" + } + } + }, + "200": { + "value": "rgba(255, 255, 255, 0.14)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "936db837-bc5a-40b0-a0e8-8e39b9fc62cb", + "name": "transparent-white-200" + } + } + }, + "300": { + "value": "rgba(255, 255, 255, 0.17)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "5ffa0283-ce9c-4f96-9227-f559ec54ee0c", + "name": "transparent-white-300" + } + } + }, + "400": { + "value": "rgba(255, 255, 255, 0.21)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "12e610d4-e3dc-4e86-9c09-09d86915b6f1", + "name": "transparent-white-400" + } + } + }, + "500": { + "value": "rgba(255, 255, 255, 0.39)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "89c1380f-3e8e-4895-b025-027cee7ecd5b", + "name": "transparent-white-500" + } + } + }, + "600": { + "value": "rgba(255, 255, 255, 0.51)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b24431ee-5c72-4a73-8733-746c6f5d77c0", + "name": "transparent-white-600" + } + } + }, + "700": { + "value": "rgba(255, 255, 255, 0.66)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "3ecc14ec-a21e-47ba-8225-915509a532af", + "name": "transparent-white-700" + } + } + }, + "800": { + "value": "rgba(255, 255, 255, 0.85)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "b85836bf-af47-412a-900a-4ec5ad0733b2", + "name": "transparent-white-800" + } + } + }, + "900": { + "value": "rgba(255, 255, 255, 0.94)", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "uuid": "c5c823c6-1911-4e0e-ba2f-5105f467e108", + "name": "transparent-white-900" + } + } + }, + "1000": { + "value": "#FFFFFF", + "type": "color", + "$extensions": { + "spectrum-tokens": { + "name": "transparent-white-1000", + "uuid": "1409a50a-9a9d-463d-957f-fa2e4f98a0cd" } } }