@supernova-studio/supernova-sdk-beta 1.6.20 → 1.6.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -304,4 +304,6 @@ export declare class DataCore {
304
304
  getImportJob(designSystemId: string, versionId: string, jobId: string): Promise<ImportJob>;
305
305
  getImportJobs(designSystemId: string, versionId: string): Promise<Array<ImportJob>>;
306
306
  scheduleImportJobForFigmaSources(designSystemId: string, versionId: string, sourceIds: Array<string>, dryRun: boolean): Promise<ImportJob>;
307
+ getTokenStudioData(designSystemId: string, versionId: string): Promise<object>;
308
+ writeTokenStudioData(designSystemId: string, versionId: string, data: object): Promise<boolean>;
307
309
  }
@@ -128,4 +128,5 @@ export declare class DataCoreReadRequests {
128
128
  getVersions(designSystemId: string): Promise<Array<DesignSystemVersionRemoteModel>>;
129
129
  getImportJobs(designSystemId: string, versionId: string): Promise<Array<ImportJobRemoteModel>>;
130
130
  getImportJob(designSystemId: string, versionId: string, jobId: string): Promise<ImportJobRemoteModel>;
131
+ getTokenStudioData(designSystemId: string, versionId: string): Promise<object>;
131
132
  }
@@ -124,4 +124,5 @@ export declare class DataCoreWriteRequests {
124
124
  linkFigmaSource(designSystemId: string, data: object): Promise<SourceRemoteModel>;
125
125
  updateFigmaSource(designSystemId: string, sourceId: string, data: object): Promise<SourceRemoteModel>;
126
126
  updateFigmaSourceClaimOwnership(designSystemId: string, sourceId: string): Promise<SourceRemoteModel>;
127
+ writeTokenStudioJSONData(designSystemId: string, versionId: string, data: object): Promise<boolean>;
127
128
  }
@@ -2,10 +2,14 @@ export type TokenOriginModel = {
2
2
  id?: string;
3
3
  name?: string;
4
4
  sourceId?: string;
5
+ referenceOriginId?: string;
6
+ referencePersistentId?: string;
5
7
  };
6
8
  export declare class TokenOrigin {
7
9
  id: string | null;
8
10
  name: string | null;
9
11
  sourceId: string | null;
12
+ referenceOriginId?: string | null;
13
+ referencePersistentId?: string | null;
10
14
  constructor(model: TokenOriginModel);
11
15
  }
@@ -198,3 +198,4 @@ export declare const checkSingleReferencedTokenById: (token: AnyToken, candidate
198
198
  export declare const replaceReferencedTokenIds: (token: AnyToken, currentId: string, newId: string, allTokens: Map<string, Token>) => void;
199
199
  export declare const replaceReferencedToken: (token: Token, existingToken: AnyToken, newToken: AnyToken) => void;
200
200
  export declare const replaceReferencedTokenByIds: (token: Token, existingTokenId: string, newTokenId: string) => void;
201
+ export declare const replaceOriginReferencePersistentIdByIds: (token: Token, existingTokenId: string, newTokenId: string) => void;
@@ -14,6 +14,8 @@ export type TokenRemoteModel = {
14
14
  id?: string;
15
15
  name?: string;
16
16
  sourceId?: string;
17
+ referenceOriginId?: string;
18
+ referencePersistentId?: string;
17
19
  };
18
20
  data: {
19
21
  aliasTo?: string;
@@ -82,3 +82,4 @@ export declare const validateColorTokenJustOpacityRef: (t: any, tokens: Token[],
82
82
  export declare const validateDimensionTokenRef: (t: any, tokens: Token[], description: string, refName: string, measure: number, unit: Unit) => void;
83
83
  export declare const validateBorderTokenRef: (t: any, tokens: Token[], description: string, refName: string, hex: string, position: BorderPosition, style: BorderStyle, measure: number, unit: Unit) => void;
84
84
  export declare const validateBorderTokenInnerRef: (t: any, tokens: Token[], name: string, hex: string, position: BorderPosition, style: BorderStyle, measure: number, unit: Unit) => void;
85
+ export declare const validateOrigin: (t: any, tokens: Token[], name: string, nameRef: string) => void;
@@ -17,6 +17,7 @@ export declare class DTJSONConverter {
17
17
  referenceResolver: DTTokenReferenceResolver;
18
18
  constructor(versionId: string, mapping: DTPluginToSupernovaMapPack);
19
19
  convertNodesToTokens(nodes: Array<DTParsedNode>, brand: Brand): Array<DTProcessedTokenNode>;
20
+ private remapRootNodeKey;
20
21
  private remapRootNodeKeys;
21
22
  private convertNodesToTokensForSupportedNodeTypes;
22
23
  private convertAtomicNode;
@@ -12,6 +12,7 @@ export declare class DTTokenReferenceResolver {
12
12
  unmappedValues(): Array<DTProcessedTokenNode>;
13
13
  tokensOfType(type: TokenType): Array<Token>;
14
14
  lookupReferencedToken(reference: string): Token | undefined;
15
+ lookupReferencedNode(reference: string): DTProcessedTokenNode | undefined;
15
16
  lookupAllReferencedTokens(reference: string): Array<{
16
17
  token: Token;
17
18
  key: string;
@@ -62,7 +62,7 @@ export declare class TokenJSONElementTransformer {
62
62
  safeGroupName(group: TokenGroup): string;
63
63
  processedName(name: string, naming: JSONBuilderNamingOption): string;
64
64
  /** Retrieve human-readable token type in unified fashion, used both as token type and as token master group */
65
- typeLabel(type: TokenType): "color" | "gradient" | "typography" | "border" | "textCase" | "textDecoration" | "shadow" | "visibility" | "text" | "measure";
65
+ typeLabel(type: TokenType): "color" | "gradient" | "typography" | "border" | "textCase" | "textDecoration" | "shadow" | "visibility" | "measure" | "text";
66
66
  /** Retrieve chain of groups up to a specified group, ordered from parent to children */
67
67
  referenceGroupChain(containingGroup: TokenGroup, allGroups: Array<TokenGroup>): Array<TokenGroup>;
68
68
  }
@@ -36974,21 +36974,14 @@ class AreaVersions {
36974
36974
  }
36975
36975
  getTokenStudioData(from) {
36976
36976
  return __awaiter(this, void 0, void 0, function* () {
36977
- return {};
36978
- // return this.dataCore.getTokenStudioData(from.designSystemId, from.versionId)
36977
+ return this.dataCore.getTokenStudioData(from.designSystemId, from.versionId);
36979
36978
  });
36980
36979
  }
36981
36980
  // --- --- --- --- --- --- --- --- --- ---
36982
36981
  // MARK: - Create/Update
36983
36982
  writeTokenStudioData(from, data) {
36984
36983
  return __awaiter(this, void 0, void 0, function* () {
36985
- return false;
36986
- /*
36987
- return this.dataCore.writeTokenStudioData(
36988
- from.designSystemId,
36989
- from.versionId,
36990
- data
36991
- ) */
36984
+ return this.dataCore.writeTokenStudioData(from.designSystemId, from.versionId, data);
36992
36985
  });
36993
36986
  }
36994
36987
  }
@@ -38654,6 +38647,16 @@ class DataCore {
38654
38647
  return new SDKImportJob_1.ImportJob(data);
38655
38648
  });
38656
38649
  }
38650
+ getTokenStudioData(designSystemId, versionId) {
38651
+ return __awaiter(this, void 0, void 0, function* () {
38652
+ return this.read.getTokenStudioData(designSystemId, versionId);
38653
+ });
38654
+ }
38655
+ writeTokenStudioData(designSystemId, versionId, data) {
38656
+ return __awaiter(this, void 0, void 0, function* () {
38657
+ return this.write.writeTokenStudioJSONData(designSystemId, versionId, data);
38658
+ });
38659
+ }
38657
38660
  }
38658
38661
  exports.DataCore = DataCore;
38659
38662
 
@@ -39109,6 +39112,13 @@ class DataCoreReadRequests {
39109
39112
  return payload.result.job;
39110
39113
  });
39111
39114
  }
39115
+ getTokenStudioData(designSystemId, versionId) {
39116
+ return __awaiter(this, void 0, void 0, function* () {
39117
+ const endpoint = this.bridge.getVersionEndpoint(designSystemId, versionId, "bff/token-studio");
39118
+ const payload = yield this.bridge.get(endpoint);
39119
+ return payload.result;
39120
+ });
39121
+ }
39112
39122
  }
39113
39123
  exports.DataCoreReadRequests = DataCoreReadRequests;
39114
39124
 
@@ -39836,6 +39846,13 @@ class DataCoreWriteRequests {
39836
39846
  return payload.result.source;
39837
39847
  });
39838
39848
  }
39849
+ writeTokenStudioJSONData(designSystemId, versionId, data) {
39850
+ return __awaiter(this, void 0, void 0, function* () {
39851
+ const endpoint = this.bridge.getVersionEndpoint(designSystemId, versionId, "bff/token-studio");
39852
+ yield this.bridge.post(endpoint, data);
39853
+ return true;
39854
+ });
39855
+ }
39839
39856
  }
39840
39857
  exports.DataCoreWriteRequests = DataCoreWriteRequests;
39841
39858
 
@@ -47041,10 +47058,12 @@ class TokenOrigin {
47041
47058
  // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
47042
47059
  // MARK: - Constructor
47043
47060
  constructor(model) {
47044
- var _a, _b, _c;
47061
+ var _a, _b, _c, _d, _e;
47045
47062
  this.id = (_a = model.id) !== null && _a !== void 0 ? _a : null;
47046
47063
  this.name = (_b = model.name) !== null && _b !== void 0 ? _b : null;
47047
47064
  this.sourceId = (_c = model.sourceId) !== null && _c !== void 0 ? _c : null;
47065
+ this.referenceOriginId = (_d = model.referenceOriginId) !== null && _d !== void 0 ? _d : null;
47066
+ this.referencePersistentId = (_e = model.referencePersistentId) !== null && _e !== void 0 ? _e : null;
47048
47067
  }
47049
47068
  }
47050
47069
  exports.TokenOrigin = TokenOrigin;
@@ -47384,7 +47403,7 @@ class TokenTheme {
47384
47403
  return this.overriddenTokens.map(o => this.toWriteOverrideObject(o));
47385
47404
  }
47386
47405
  toWriteOverrideObject(token) {
47387
- var _a, _b, _c;
47406
+ var _a, _b, _c, _d, _e;
47388
47407
  const model = {
47389
47408
  data: this.valueToWriteObject(token.value, token.tokenType, token),
47390
47409
  tokenPersistentId: token.id,
@@ -47394,6 +47413,8 @@ class TokenTheme {
47394
47413
  id: (_a = token.origin.id) !== null && _a !== void 0 ? _a : undefined,
47395
47414
  name: (_b = token.origin.name) !== null && _b !== void 0 ? _b : undefined,
47396
47415
  sourceId: (_c = token.origin.sourceId) !== null && _c !== void 0 ? _c : undefined,
47416
+ referenceOriginId: (_d = token.origin.referenceOriginId) !== null && _d !== void 0 ? _d : undefined,
47417
+ referencePersistentId: (_e = token.origin.referencePersistentId) !== null && _e !== void 0 ? _e : undefined,
47397
47418
  }
47398
47419
  : undefined,
47399
47420
  createdAt: token.createdAt ? token.createdAt.toISOString() : undefined,
@@ -47514,7 +47535,7 @@ class TokenThemeOverride {
47514
47535
  // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
47515
47536
  // MARK: - Manipulation
47516
47537
  toWriteObject() {
47517
- var _a, _b, _c;
47538
+ var _a, _b, _c, _d, _e;
47518
47539
  return {
47519
47540
  data: this.valueToWriteObject(this.value, this.type),
47520
47541
  tokenPersistentId: this.tokenId,
@@ -47524,6 +47545,8 @@ class TokenThemeOverride {
47524
47545
  id: (_a = this.origin.id) !== null && _a !== void 0 ? _a : undefined,
47525
47546
  name: (_b = this.origin.name) !== null && _b !== void 0 ? _b : undefined,
47526
47547
  sourceId: (_c = this.origin.sourceId) !== null && _c !== void 0 ? _c : undefined,
47548
+ referenceOriginId: (_d = this.origin.referenceOriginId) !== null && _d !== void 0 ? _d : undefined,
47549
+ referencePersistentId: (_e = this.origin.referencePersistentId) !== null && _e !== void 0 ? _e : undefined,
47527
47550
  }
47528
47551
  : undefined,
47529
47552
  createdAt: this.createdAt ? this.createdAt.toISOString() : undefined,
@@ -48241,6 +48264,7 @@ class DimensionCategoryToken extends SDKToken_1.Token {
48241
48264
  // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
48242
48265
  // MARK: - Static building
48243
48266
  static create(type, versionId, brandId, name, description, value, alias, properties, propertyValues) {
48267
+ var _a;
48244
48268
  const baseToken = {
48245
48269
  id: undefined,
48246
48270
  persistentId: (0, uuid_1.v4)(),
@@ -48276,7 +48300,9 @@ class DimensionCategoryToken extends SDKToken_1.Token {
48276
48300
  measure: DimensionCategoryToken.getCompatibleMeasure(alias.value.unit, type, alias.value.measure),
48277
48301
  referencedTokenId: null
48278
48302
  };
48279
- return new this(versionId, baseToken, tokenValue, undefined, properties, propertyValues);
48303
+ const result = new this(versionId, baseToken, tokenValue, undefined, properties, propertyValues);
48304
+ result.origin = Object.assign(Object.assign({}, ((_a = result.origin) !== null && _a !== void 0 ? _a : { id: null, name: null, sourceId: null })), { referencePersistentId: alias.id });
48305
+ return result;
48280
48306
  }
48281
48307
  }
48282
48308
  throw SDKSupernovaError_1.SupernovaError.fromMessage("Dimension Token must be created using value or alias, but none was provided");
@@ -48450,6 +48476,7 @@ class DimensionCategoryToken extends SDKToken_1.Token {
48450
48476
  };
48451
48477
  }
48452
48478
  else {
48479
+ //
48453
48480
  // If tokenType from args !== tokenType resolved, inline
48454
48481
  // Align units, if we reference dimension from Opacity, unit must become raw
48455
48482
  console.log(`Inlining reference ${reference.id}: ${reference.tokenType} into ${definition}:${tokenType}`);
@@ -49672,7 +49699,7 @@ class Token {
49672
49699
  this.sortOrder = order;
49673
49700
  }
49674
49701
  toBaseWriteObject() {
49675
- var _a, _b, _c, _d;
49702
+ var _a, _b, _c, _d, _e, _f;
49676
49703
  return {
49677
49704
  id: this.idInVersion,
49678
49705
  brandId: this.brandId,
@@ -49688,6 +49715,8 @@ class Token {
49688
49715
  id: (_b = this.origin.id) !== null && _b !== void 0 ? _b : undefined,
49689
49716
  name: (_c = this.origin.name) !== null && _c !== void 0 ? _c : undefined,
49690
49717
  sourceId: (_d = this.origin.sourceId) !== null && _d !== void 0 ? _d : undefined,
49718
+ referenceOriginId: (_e = this.origin.referenceOriginId) !== null && _e !== void 0 ? _e : undefined,
49719
+ referencePersistentId: (_f = this.origin.referencePersistentId) !== null && _f !== void 0 ? _f : undefined,
49691
49720
  }
49692
49721
  : undefined,
49693
49722
  customPropertyOverrides: [],
@@ -49944,7 +49973,7 @@ exports.TokenComparator = TokenComparator;
49944
49973
  // This file defines all token value containers for the actual model - this model will be exactly available to users
49945
49974
  //
49946
49975
  Object.defineProperty(exports, "__esModule", ({ value: true }));
49947
- exports.replaceReferencedTokenByIds = exports.replaceReferencedToken = exports.replaceReferencedTokenIds = exports.checkSingleReferencedTokenById = exports.getSingleReferencedTokenId = exports.getReferencedTokens = void 0;
49976
+ exports.replaceOriginReferencePersistentIdByIds = exports.replaceReferencedTokenByIds = exports.replaceReferencedToken = exports.replaceReferencedTokenIds = exports.checkSingleReferencedTokenById = exports.getSingleReferencedTokenId = exports.getReferencedTokens = void 0;
49948
49977
  const SDKGradientToken_1 = __webpack_require__(/*! ./SDKGradientToken */ "./src/model/tokens/SDKGradientToken.ts");
49949
49978
  const SDKShadowToken_1 = __webpack_require__(/*! ./SDKShadowToken */ "./src/model/tokens/SDKShadowToken.ts");
49950
49979
  const getReferencedTokens = (token, allTokens) => {
@@ -49979,6 +50008,7 @@ const replaceReferencedTokenIds = (token, currentId, newId, allTokens) => {
49979
50008
  exports.replaceReferencedTokenIds = replaceReferencedTokenIds;
49980
50009
  const replaceReferencedToken = (token, existingToken, newToken) => {
49981
50010
  (0, exports.replaceReferencedTokenByIds)(token, existingToken.id, newToken.id);
50011
+ (0, exports.replaceOriginReferencePersistentIdByIds)(token, existingToken.id, newToken.id);
49982
50012
  };
49983
50013
  exports.replaceReferencedToken = replaceReferencedToken;
49984
50014
  const replaceReferencedTokenByIds = (token, existingTokenId, newTokenId) => {
@@ -50001,6 +50031,18 @@ const replaceReferencedTokenByIds = (token, existingTokenId, newTokenId) => {
50001
50031
  }
50002
50032
  };
50003
50033
  exports.replaceReferencedTokenByIds = replaceReferencedTokenByIds;
50034
+ const replaceOriginReferencePersistentIdByIds = (token, existingTokenId, newTokenId) => {
50035
+ const origin = token === null || token === void 0 ? void 0 : token.origin;
50036
+ if (!(origin === null || origin === void 0 ? void 0 : origin.referencePersistentId)) {
50037
+ // Do nothing if there is no origin
50038
+ }
50039
+ else if (origin.referencePersistentId && !Array.isArray(origin.referencePersistentId)) {
50040
+ if (origin.referencePersistentId === existingTokenId) {
50041
+ origin.referencePersistentId = newTokenId;
50042
+ }
50043
+ }
50044
+ };
50045
+ exports.replaceOriginReferencePersistentIdByIds = replaceOriginReferencePersistentIdByIds;
50004
50046
 
50005
50047
 
50006
50048
  /***/ }),
@@ -51305,17 +51347,13 @@ class SupernovaToolsDesignTokensPlugin {
51305
51347
  return mapping;
51306
51348
  }
51307
51349
  setTokensOrigin(map, brand, sources) {
51308
- var _a;
51350
+ var _a, _b, _c;
51309
51351
  const sourceId = (_a = sources.find((s) => s.type === SDKSourceType_1.SourceType.tokenStudio && s.brandId === brand.id)) === null || _a === void 0 ? void 0 : _a.id;
51310
51352
  if (!sourceId) {
51311
51353
  return map;
51312
51354
  }
51313
51355
  for (const node of map.processedNodes) {
51314
- node.token.origin = {
51315
- name: node.token.name,
51316
- sourceId,
51317
- id: node.key,
51318
- };
51356
+ node.token.origin = Object.assign(Object.assign({ name: node.token.name, sourceId, id: node.key }, (((_b = node.token.origin) === null || _b === void 0 ? void 0 : _b.referenceOriginId) ? { referenceOriginId: node.token.origin.referenceOriginId } : {})), (((_c = node.token.origin) === null || _c === void 0 ? void 0 : _c.referencePersistentId) ? { referencePersistentId: node.token.origin.referencePersistentId } : {}));
51319
51357
  }
51320
51358
  return map;
51321
51359
  }
@@ -51599,112 +51637,117 @@ class DTJSONConverter {
51599
51637
  // Retrieve all tokens
51600
51638
  return processedNodes;
51601
51639
  }
51640
+ remapRootNodeKey(nodePath, tokenType, nodeOriginalType, nodeTokenName) {
51641
+ let path = Array.from(nodePath);
51642
+ let firstSegment = path.splice(0, 1)[0];
51643
+ // Remap remote to proper destination
51644
+ // TODO: maybe we should make firstSegment typed?
51645
+ const type = tokenType;
51646
+ switch (type) {
51647
+ case SDKTokenType_1.TokenType.color:
51648
+ firstSegment = "Color";
51649
+ break;
51650
+ case SDKTokenType_1.TokenType.gradient:
51651
+ firstSegment = "Gradient";
51652
+ break;
51653
+ // TEST: Do we use separate keys for all Dimensions
51654
+ case SDKTokenType_1.TokenType.radius:
51655
+ firstSegment = "Radius";
51656
+ break;
51657
+ case SDKTokenType_1.TokenType.space:
51658
+ case SDKTokenType_1.TokenType.opacity:
51659
+ case SDKTokenType_1.TokenType.fontSize:
51660
+ case SDKTokenType_1.TokenType.lineHeight:
51661
+ case SDKTokenType_1.TokenType.letterSpacing:
51662
+ case SDKTokenType_1.TokenType.paragraphSpacing:
51663
+ case SDKTokenType_1.TokenType.borderWidth:
51664
+ case SDKTokenType_1.TokenType.duration:
51665
+ case SDKTokenType_1.TokenType.zIndex:
51666
+ case SDKTokenType_1.TokenType.size:
51667
+ case SDKTokenType_1.TokenType.dimension:
51668
+ // firstSegment = "Dimension"
51669
+ firstSegment = "Measure";
51670
+ break;
51671
+ case SDKTokenType_1.TokenType.shadow:
51672
+ firstSegment = "Shadow";
51673
+ break;
51674
+ case SDKTokenType_1.TokenType.typography:
51675
+ firstSegment = "Typography";
51676
+ break;
51677
+ // TEST: Should we now use separate segments here or String?
51678
+ case SDKTokenType_1.TokenType.fontFamily:
51679
+ case SDKTokenType_1.TokenType.fontWeight:
51680
+ firstSegment = "Generic";
51681
+ break;
51682
+ case SDKTokenType_1.TokenType.border:
51683
+ firstSegment = "Border";
51684
+ break;
51685
+ case SDKTokenType_1.TokenType.textCase:
51686
+ case SDKTokenType_1.TokenType.textDecoration:
51687
+ case SDKTokenType_1.TokenType.visibility:
51688
+ firstSegment = "Options";
51689
+ break;
51690
+ default:
51691
+ throw new UnreachableCaseError_1.UnreachableCaseError(type, `Unsupported type ${firstSegment} in remapping of nodes`);
51692
+ }
51693
+ let secondSegment;
51694
+ switch (nodeOriginalType) {
51695
+ case "borderRadius":
51696
+ secondSegment = "Border Radius";
51697
+ break;
51698
+ case "borderWidth":
51699
+ secondSegment = "Border Width";
51700
+ break;
51701
+ case "sizing":
51702
+ secondSegment = "Sizing";
51703
+ break;
51704
+ case "fontSizes":
51705
+ secondSegment = "Font Size";
51706
+ break;
51707
+ case "paragraphSpacing":
51708
+ secondSegment = "Paragraph Spacing";
51709
+ break;
51710
+ case "lineHeights":
51711
+ secondSegment = "Line Height";
51712
+ break;
51713
+ case "letterSpacing":
51714
+ secondSegment = "Letter Spacing";
51715
+ break;
51716
+ case "spacing":
51717
+ secondSegment = "Spacing";
51718
+ break;
51719
+ case "opacity":
51720
+ secondSegment = "Opacity";
51721
+ break;
51722
+ case "dimension":
51723
+ secondSegment = "Dimension";
51724
+ break;
51725
+ case 'fontFamilies':
51726
+ secondSegment = 'Font Family';
51727
+ break;
51728
+ case 'fontWeights':
51729
+ secondSegment = 'Font Weight';
51730
+ break;
51731
+ default:
51732
+ // Other types than listed should be ignored
51733
+ break;
51734
+ }
51735
+ // Remap original type and add extra group, if needed
51736
+ if (secondSegment) {
51737
+ path = [firstSegment, secondSegment, ...path];
51738
+ }
51739
+ else {
51740
+ path = [firstSegment, ...path];
51741
+ }
51742
+ // Rebuild key
51743
+ const key = SDKDTTokenMerger_1.DTTokenMerger.buildKey(path, nodeTokenName);
51744
+ return { path, key };
51745
+ }
51602
51746
  remapRootNodeKeys(nodes) {
51603
51747
  for (const node of nodes) {
51604
- let path = Array.from(node.path);
51605
- let firstSegment = path.splice(0, 1)[0];
51606
- // Remap remote to proper destination
51607
- // TODO: maybe we should make firstSegment typed?
51608
- const type = node.token.tokenType;
51609
- switch (type) {
51610
- case SDKTokenType_1.TokenType.color:
51611
- firstSegment = "Color";
51612
- break;
51613
- case SDKTokenType_1.TokenType.gradient:
51614
- firstSegment = "Gradient";
51615
- break;
51616
- // TEST: Do we use separate keys for all Dimensions
51617
- case SDKTokenType_1.TokenType.radius:
51618
- firstSegment = "Radius";
51619
- break;
51620
- case SDKTokenType_1.TokenType.space:
51621
- case SDKTokenType_1.TokenType.opacity:
51622
- case SDKTokenType_1.TokenType.fontSize:
51623
- case SDKTokenType_1.TokenType.lineHeight:
51624
- case SDKTokenType_1.TokenType.letterSpacing:
51625
- case SDKTokenType_1.TokenType.paragraphSpacing:
51626
- case SDKTokenType_1.TokenType.borderWidth:
51627
- case SDKTokenType_1.TokenType.duration:
51628
- case SDKTokenType_1.TokenType.zIndex:
51629
- case SDKTokenType_1.TokenType.size:
51630
- case SDKTokenType_1.TokenType.dimension:
51631
- // firstSegment = "Dimension"
51632
- firstSegment = "Measure";
51633
- break;
51634
- case SDKTokenType_1.TokenType.shadow:
51635
- firstSegment = "Shadow";
51636
- break;
51637
- case SDKTokenType_1.TokenType.typography:
51638
- firstSegment = "Typography";
51639
- break;
51640
- // TEST: Should we now use separate segments here or String?
51641
- case SDKTokenType_1.TokenType.fontFamily:
51642
- case SDKTokenType_1.TokenType.fontWeight:
51643
- firstSegment = "Generic";
51644
- break;
51645
- case SDKTokenType_1.TokenType.border:
51646
- firstSegment = "Border";
51647
- break;
51648
- case SDKTokenType_1.TokenType.textCase:
51649
- case SDKTokenType_1.TokenType.textDecoration:
51650
- case SDKTokenType_1.TokenType.visibility:
51651
- firstSegment = "Options";
51652
- break;
51653
- default:
51654
- throw new UnreachableCaseError_1.UnreachableCaseError(type, `Unsupported type ${firstSegment} in remapping of nodes`);
51655
- }
51656
- let secondSegment;
51657
- switch (node.originalType) {
51658
- case "borderRadius":
51659
- secondSegment = "Border Radius";
51660
- break;
51661
- case "borderWidth":
51662
- secondSegment = "Border Width";
51663
- break;
51664
- case "sizing":
51665
- secondSegment = "Sizing";
51666
- break;
51667
- case "fontSizes":
51668
- secondSegment = "Font Size";
51669
- break;
51670
- case "paragraphSpacing":
51671
- secondSegment = "Paragraph Spacing";
51672
- break;
51673
- case "lineHeights":
51674
- secondSegment = "Line Height";
51675
- break;
51676
- case "letterSpacing":
51677
- secondSegment = "Letter Spacing";
51678
- break;
51679
- case "spacing":
51680
- secondSegment = "Spacing";
51681
- break;
51682
- case "opacity":
51683
- secondSegment = "Opacity";
51684
- break;
51685
- case "dimension":
51686
- secondSegment = "Dimension";
51687
- break;
51688
- case 'fontFamilies':
51689
- secondSegment = 'Font Family';
51690
- break;
51691
- case 'fontWeights':
51692
- secondSegment = 'Font Weight';
51693
- break;
51694
- default:
51695
- // Other types than listed should be ignored
51696
- break;
51697
- }
51698
- // Remap original type and add extra group, if needed
51699
- if (secondSegment) {
51700
- path = [firstSegment, secondSegment, ...path];
51701
- }
51702
- else {
51703
- path = [firstSegment, ...path];
51704
- }
51748
+ let { path, key } = this.remapRootNodeKey(node.path, node.token.tokenType, node.originalType, node.token.name);
51705
51749
  node.path = path;
51706
- // Rebuild key
51707
- node.key = SDKDTTokenMerger_1.DTTokenMerger.buildKey(node.path, node.token.name);
51750
+ node.key = key;
51708
51751
  }
51709
51752
  return nodes;
51710
51753
  }
@@ -51910,6 +51953,7 @@ class DTJSONConverter {
51910
51953
  }
51911
51954
  // TODO: Can we do better or need to copy paste?
51912
51955
  convertPureReferencedNode(node, brand) {
51956
+ var _a, _b;
51913
51957
  const valueAsReference = node.value;
51914
51958
  const resolvedToken = this.referenceResolver.lookupReferencedToken(valueAsReference);
51915
51959
  if (resolvedToken) {
@@ -51932,6 +51976,12 @@ class DTJSONConverter {
51932
51976
  case SDKTokenType_1.TokenType.duration:
51933
51977
  case SDKTokenType_1.TokenType.zIndex:
51934
51978
  constructedToken = (0, SDKDimensionToken_1.resolveDimension)(snType).create(snType, this.versionId, brand.id, node.name, node.description, undefined, resolvedToken, [], []);
51979
+ if (resolvedToken && ((_a = constructedToken.origin) === null || _a === void 0 ? void 0 : _a.referencePersistentId)) {
51980
+ const refNode = this.referenceResolver.lookupReferencedNode(valueAsReference);
51981
+ const key = this.remapRootNodeKey(refNode.path, resolvedToken.tokenType, refNode.originalType, resolvedToken.name).key;
51982
+ console.log(`Inlining reference origin id ${valueAsReference}: ${key}: ${(_b = constructedToken.origin) === null || _b === void 0 ? void 0 : _b.referencePersistentId} into ${constructedToken.id}:${node.name}:${node.type}`);
51983
+ constructedToken.origin.referenceOriginId = key;
51984
+ }
51935
51985
  break;
51936
51986
  case SDKTokenType_1.TokenType.shadow:
51937
51987
  constructedToken = SDKShadowToken_1.ShadowToken.create(this.versionId, brand.id, node.name, node.description, undefined, resolvedToken, this.referenceResolver, [], []);
@@ -52623,6 +52673,8 @@ class DTThemeMerger {
52623
52673
  const tokensToIterate = [...themeReplica.overriddenTokens, ...[...tokensInThemeButNotInUpstream.values()].map(t => t.token)];
52624
52674
  for (const node of tokensToIterate) {
52625
52675
  (0, SDKTokenValue_1.replaceReferencedTokenByIds)(node, oldId, newId);
52676
+ (0, SDKTokenValue_1.replaceOriginReferencePersistentIdByIds)(node, oldId, newId);
52677
+ // TODO: Fix inside Typography.fontSize
52626
52678
  TokenUtils_1.TokenUtils.replaceIdForComplexTokens(node, oldId, newId);
52627
52679
  }
52628
52680
  }
@@ -52869,6 +52921,8 @@ class DTTokenMerger {
52869
52921
  for (const [oldId, newId] of idsToRemap) {
52870
52922
  for (const node of toCreateOrUpdate) {
52871
52923
  (0, SDKTokenValue_1.replaceReferencedTokenByIds)(node.token, oldId, newId);
52924
+ (0, SDKTokenValue_1.replaceOriginReferencePersistentIdByIds)(node.token, oldId, newId);
52925
+ // TODO: Fix inside Typography.fontSize
52872
52926
  TokenUtils_1.TokenUtils.replaceIdForComplexTokens(node.token, oldId, newId);
52873
52927
  }
52874
52928
  }
@@ -53020,6 +53074,16 @@ class DTTokenReferenceResolver {
53020
53074
  // Find single token reference
53021
53075
  return (_a = this.mappedTokens.get(ref)) === null || _a === void 0 ? void 0 : _a[0];
53022
53076
  }
53077
+ lookupReferencedNode(reference) {
53078
+ reference = reference.trim();
53079
+ let ref = reference;
53080
+ if (reference.includes('$')) {
53081
+ // Convert $ reference to {}-type of reference as keys are all defined as {}
53082
+ ref = `{${reference.substring(1)}}`;
53083
+ }
53084
+ // Find single token reference
53085
+ return this.nodes.get(ref);
53086
+ }
53023
53087
  lookupAllReferencedTokens(reference) {
53024
53088
  var _a, _b;
53025
53089
  reference = reference.trim();