diff --git a/packages/flight-icons/package.json b/packages/flight-icons/package.json index e015f6b7a01..6e3f2e0073d 100644 --- a/packages/flight-icons/package.json +++ b/packages/flight-icons/package.json @@ -27,12 +27,13 @@ "@figma-export/output-components-as-svg": "^4.7.0", "@figma-export/transform-svg-with-svgo": "^4.7.0", "@figma-export/types": "^4.7.0", + "@figma/rest-api-spec": "^0.21.0", "@svgr/core": "^5.5.0", "@svgr/plugin-jsx": "^5.5.0", "@types/archiver": "^5.3.4", "@types/fs-extra": "^11.0.3", "@types/lodash": "^4.14.200", - "@types/node": "^20.8.9", + "@types/node": "^22.8.7", "@types/react": "^18.2.33", "@types/react-dom": "^18.2.14", "@types/svgo": "~1.3.6", @@ -43,7 +44,7 @@ "del": "^6.1.1", "dotenv": "^10.0.0", "eslint": "^8.57.0", - "figma-api": "^1.11.0", + "figma-api": "^2.0.1-beta", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "mini-svg-data-uri": "^1.4.4", @@ -51,6 +52,6 @@ "svgo": "~1.3.2", "svgstore": "^3.0.1", "ts-node": "^10.9.2", - "typescript": "^5.3.3" + "typescript": "^5.6.3" } } diff --git a/packages/flight-icons/scripts/sync-parts/getAssetsMetadata.ts b/packages/flight-icons/scripts/sync-parts/getAssetsMetadata.ts index ba67984d659..7c211727323 100644 --- a/packages/flight-icons/scripts/sync-parts/getAssetsMetadata.ts +++ b/packages/flight-icons/scripts/sync-parts/getAssetsMetadata.ts @@ -5,6 +5,8 @@ import type { AssetCoreData, AssetsMetadata } from "../@types/AssetsMetadata"; +import { PublishedComponent, PublishedComponentSet } from '@figma/rest-api-spec'; + import { config } from '../config'; import chalk from 'chalk'; @@ -27,13 +29,14 @@ export async function getAssetsMetadata(): Promise<AssetsMetadata> { }); // retrieve all the component_sets from the Figma file (later we'll use their names and descriptions for the icons) - const componentSetsResponse = await api.getFileComponentSets(config.figmaFile.id); + const componentSetsResponse = await api.getFileComponentSets({ file_key: config.figmaFile.id }); const componentSetData: ComponentSetData = {}; if (componentSetsResponse.meta && componentSetsResponse.meta.component_sets) { - componentSetsResponse.meta.component_sets.forEach(component_set => { + componentSetsResponse.meta.component_sets.forEach((component_set: PublishedComponentSet) => { // check that the component_set is inside the expected page/frame if ( component_set.containing_frame && + component_set.containing_frame.name && component_set.containing_frame.pageName === config.figmaFile.page && !config.figmaFile.excludeFrames.includes(component_set.containing_frame.name) ) { @@ -47,12 +50,13 @@ export async function getAssetsMetadata(): Promise<AssetsMetadata> { console.log(chalk.magenta('ATTENTION:\nNo component sets ("icons") found in the Figma file, please check that your configuration file has the right values for "page" and "frame" names.')); } - const componentsResponse = await api.getFileComponents(config.figmaFile.id); + const componentsResponse = await api.getFileComponents({ file_key: config.figmaFile.id }); if (componentsResponse.meta && componentsResponse.meta.components) { - componentsResponse.meta.components.forEach(component => { + componentsResponse.meta.components.forEach((component: PublishedComponent) => { // check that the component is inside the expected page/frame if ( component.containing_frame && + component.containing_frame.name && component.containing_frame.pageName === config.figmaFile.page && !config.figmaFile.excludeFrames.includes(component.containing_frame.name) ) { @@ -67,7 +71,12 @@ export async function getAssetsMetadata(): Promise<AssetsMetadata> { // by convention the category of an icon is the containing frame's name assetsMetadata[component.node_id].category = component.containing_frame.name; } + // this (missing `containingStateGroup` property) is a known issue: + // - https://forum.figma.com/t/missing-containingstategroup-parameter-in-documentation-for-frameinfo/2558 + // - https://github.com/figma/rest-api-spec/issues/29 + // @ts-ignore if (component.containing_frame.containingStateGroup) { + // @ts-ignore const parentComponentSet = componentSetData[component.containing_frame.containingStateGroup.nodeId] if (parentComponentSet) { assetsMetadata[component.node_id].iconName = parentComponentSet.name; diff --git a/packages/tokens/package.json b/packages/tokens/package.json index 9c23a47f9ad..4db2f58fbf7 100644 --- a/packages/tokens/package.json +++ b/packages/tokens/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@types/fs-extra": "^11.0.3", "@types/lodash": "^4.14.200", - "@types/node": "^20.8.9", + "@types/node": "^22.8.7", "@types/tinycolor2": "^1.4.5", "@typescript-eslint/eslint-plugin": "^8.5.0", "@typescript-eslint/parser": "^8.5.0", @@ -35,7 +35,7 @@ "path": "^0.12.7", "style-dictionary": "^3.9.0", "tinycolor2": "^1.6.0", - "ts-node": "^10.9.1", - "typescript": "^5.3.3" + "ts-node": "^10.9.2", + "typescript": "^5.6.3" } } diff --git a/yarn.lock b/yarn.lock index eb47369bab2..296aa449875 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3628,6 +3628,13 @@ __metadata: languageName: node linkType: hard +"@figma/rest-api-spec@npm:^0.21.0": + version: 0.21.0 + resolution: "@figma/rest-api-spec@npm:0.21.0" + checksum: 10/8feee26a50272f22d03de2a284ce1bef3e1aaedc14606e5a8457aaf32773cb05a0a51870d4d157dabee8b16d469c16c8e90efda2685ae36213ac022c7f58760c + languageName: node + linkType: hard + "@floating-ui/core@npm:^1.0.0": version: 1.6.0 resolution: "@floating-ui/core@npm:1.6.0" @@ -4307,7 +4314,7 @@ __metadata: dependencies: "@types/fs-extra": "npm:^11.0.3" "@types/lodash": "npm:^4.14.200" - "@types/node": "npm:^20.8.9" + "@types/node": "npm:^22.8.7" "@types/tinycolor2": "npm:^1.4.5" "@typescript-eslint/eslint-plugin": "npm:^8.5.0" "@typescript-eslint/parser": "npm:^8.5.0" @@ -4318,8 +4325,8 @@ __metadata: path: "npm:^0.12.7" style-dictionary: "npm:^3.9.0" tinycolor2: "npm:^1.6.0" - ts-node: "npm:^10.9.1" - typescript: "npm:^5.3.3" + ts-node: "npm:^10.9.2" + typescript: "npm:^5.6.3" languageName: unknown linkType: soft @@ -4386,12 +4393,13 @@ __metadata: "@figma-export/output-components-as-svg": "npm:^4.7.0" "@figma-export/transform-svg-with-svgo": "npm:^4.7.0" "@figma-export/types": "npm:^4.7.0" + "@figma/rest-api-spec": "npm:^0.21.0" "@svgr/core": "npm:^5.5.0" "@svgr/plugin-jsx": "npm:^5.5.0" "@types/archiver": "npm:^5.3.4" "@types/fs-extra": "npm:^11.0.3" "@types/lodash": "npm:^4.14.200" - "@types/node": "npm:^20.8.9" + "@types/node": "npm:^22.8.7" "@types/react": "npm:^18.2.33" "@types/react-dom": "npm:^18.2.14" "@types/svgo": "npm:~1.3.6" @@ -4402,7 +4410,7 @@ __metadata: del: "npm:^6.1.1" dotenv: "npm:^10.0.0" eslint: "npm:^8.57.0" - figma-api: "npm:^1.11.0" + figma-api: "npm:^2.0.1-beta" fs-extra: "npm:^11.1.1" lodash: "npm:^4.17.21" mini-svg-data-uri: "npm:^1.4.4" @@ -4410,7 +4418,7 @@ __metadata: svgo: "npm:~1.3.2" svgstore: "npm:^3.0.1" ts-node: "npm:^10.9.2" - typescript: "npm:^5.3.3" + typescript: "npm:^5.6.3" languageName: unknown linkType: soft @@ -6198,7 +6206,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:^20.8.9": +"@types/node@npm:*, @types/node@npm:>=10.0.0": version: 20.10.4 resolution: "@types/node@npm:20.10.4" dependencies: @@ -6207,13 +6215,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:12.0.2": - version: 12.0.2 - resolution: "@types/node@npm:12.0.2" - checksum: 10/533bc925ae3a8df02c97cc9384af0e3f43430b5390c5114fe16c7187ff58547281006f49626b408d801e91927e0de7f55923e73a1da231c5ae86f43fc062087a - languageName: node - linkType: hard - "@types/node@npm:^12.7.1": version: 12.20.55 resolution: "@types/node@npm:12.20.55" @@ -6228,6 +6229,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^22.8.7": + version: 22.9.0 + resolution: "@types/node@npm:22.9.0" + dependencies: + undici-types: "npm:~6.19.8" + checksum: 10/a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d + languageName: node + linkType: hard + "@types/node@npm:^9.6.0": version: 9.6.61 resolution: "@types/node@npm:9.6.61" @@ -7719,7 +7729,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:~0.27.2": +"axios@npm:^0.27.2, axios@npm:~0.27.2": version: 0.27.2 resolution: "axios@npm:0.27.2" dependencies: @@ -15216,13 +15226,13 @@ __metadata: languageName: node linkType: hard -"figma-api@npm:^1.11.0": - version: 1.11.0 - resolution: "figma-api@npm:1.11.0" +"figma-api@npm:^2.0.1-beta": + version: 2.0.1-beta + resolution: "figma-api@npm:2.0.1-beta" dependencies: - "@types/node": "npm:12.0.2" - axios: "npm:^0.21.1" - checksum: 10/82fbbf772b4e46c9449338d09f8b5b07785bdbaaa61deb2409b87142b10670d634f20e25bf1d9080cb334d51b234edcc013d75345def0ea1a715e130f280a093 + "@types/node": "npm:^22.8.7" + axios: "npm:^0.27.2" + checksum: 10/332a792a53b6efa5dc4b8d7a0b5130711a467a75be63a0fdb6d183f751548943c9f46c49c4189f1b1a2be5469936f0603af417598861da497b161ca1eb1dc270 languageName: node linkType: hard @@ -15638,7 +15648,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9": +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0": version: 1.15.6 resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: @@ -15648,6 +15658,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.14.9": + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" + peerDependenciesMeta: + debug: + optional: true + checksum: 10/e3ab42d1097e90d28b913903841e6779eb969b62a64706a3eb983e894a5db000fbd89296f45f08885a0e54cd558ef62e81be1165da9be25a6c44920da10f424c + languageName: node + linkType: hard + "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3" @@ -26786,7 +26806,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.9.1, ts-node@npm:^10.9.2": +"ts-node@npm:^10.9.2": version: 10.9.2 resolution: "ts-node@npm:10.9.2" dependencies: @@ -27093,6 +27113,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:^5.6.3": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1 + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A^5.3.3#optional!builtin<compat/typescript>": version: 5.4.2 resolution: "typescript@patch:typescript@npm%3A5.4.2#optional!builtin<compat/typescript>::version=5.4.2&hash=5adc0c" @@ -27113,6 +27143,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=74658d" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd + languageName: node + linkType: hard + "ua-parser-js@npm:^1.0.35": version: 1.0.37 resolution: "ua-parser-js@npm:1.0.37" @@ -27172,6 +27212,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.19.8": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70 + languageName: node + linkType: hard + "unherit@npm:^1.0.4": version: 1.1.3 resolution: "unherit@npm:1.1.3"