braposo / figma-graphql Goto Github PK
View Code? Open in Web Editor NEWThe reimagined Figma API (super)powered by GraphQL
Home Page: https://figma-graphql.party
License: MIT License
The reimagined Figma API (super)powered by GraphQL
Home Page: https://figma-graphql.party
License: MIT License
3.6.4
to 3.6.5
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
codecov is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
6.1.1
to 6.1.2
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@types/eslint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.6.0
to 2.6.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
7.18.0
to 7.18.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
eslint-plugin-react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 9 commits.
000d6b8
Update CHANGELOG and bump version
ffdf69a
[Fix] jsx-indent
: Does not check indents for JSXText
182b045
[Docs] use markdown-magic
to automatically sort all rules alphabetically
45b9d32
[Docs] jsx-props-no-spreading
: fix typo to use correct rule
f9aee94
[Fix] jsx-props-no-spreading
: add support for namespaced jsx components
e69b113
[Fix] jsx-no-target-blank
: allow rel to be an expression
fc6e406
[meta] fix changelog date
50df78f
[Fix] sort-comp
: |
isnβt a valid regex flag; u
and s
are
a7f6a8b
[Tests] on node
v13
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
In the process of improving the code quality in #8 the next logical step is to convert the code to TS so we can take advantage of the typings in the figma-js library.
We'll probably need something like https://github.com/whitecolor/ts-node-dev for dev
16.9.22
to 16.9.23
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@types/react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
Now that we've fully transitioned to TS (#23) there's still some work to be done to have a better type definition in the library.
This is a process that takes some time so it will be part of the post 2.0 release tasks.
2.3.0
to 2.3.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
type-coverage is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 10 commits.
146b44e
v2.3.1
1b9e10c
fix: unhandled QuestionQuestionToken
0e1f3ac
chore: update dependencies
7c9627d
chore: update dependencies
fc51df6
chore: update dependencies
ca19837
chore: update dependencies
8c4cc15
chore: update dependencies
82719ee
chore: update dependencies
93f87e6
chore: update dependencies
288fb4d
chore: update dependencies
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
Is it me or is the demo at https://www.graphqlbin.com/v2/j2LQcn broken?
(Trying out the Figma API and stumbled upon this project!)
This project at the moment is focused on providing a GraphQL service that connects to the Figma API and allows clients to query it through the GraphQL API.
However, I've been thinking lately that we're not doing much more than getting the API response, parsing it and returning the information required in the GraphQL query.
So maybe we could actually use something like graphql-anywhere and build a client-side library that provides a GraphQL interface to the Figma API.
I imagine something like:
import FigmaGQL from "figma-graphql";
const queryFigma = FigmaGQL.connect({
personalAccessToken: token
});
const fileNameQuery = gql`
{
file(id: "cLp23bR627jcuNSoBGkhL04E") {
name
}
}
`;
const result = queryFigma(fileNameQuery);
/*
{
"file": {
"name": "figma-graphql test file"
}
}
*/
This would allow people to easily start querying the Figma API with GraphQL without having to worry about running the server.
For those that want more power and the benefits of a proper GraphQL implementation there would be a figma-graphql-server
repository with this version of the code.
I think it's a bit confusing to be able to do
{
comments(id: "KViUntEBJqK4gWfiwft5NObl") {
...
}
}
and
{
image(id: "KViUntEBJqK4gWfiwft5NObl") {
images
}
}
instead of something like
{
file(id: "KViUntEBJqK4gWfiwft5NObl") {
image
comments {
...
}
}
}
I think Figma API might need some level of abstraction so it's easier and more logical to the user.
Something to think about!
2.18.2
to 2.19.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
eslint-plugin-import is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 46 commits.
9b76635
Bump to v2.19.0
47a232e
[resolvers/webpack] v0.12.0
26ad476
[resolvers/webpack] [deps] update debug
, enhanced-resolve
, has
, interpret
, lodash
, resolve
, semver
3f0e8f3
[resolvers/node] [Deps] update resolve
7190c3e
bump utils to v2.5.0
a60e5c6
[New] no-commonjs
: add allowConditionalRequire
option
414c923
[New] enable passing cwd as an option to eslint-import-resolver-webpack
8224e51
[New] order
/no-extraneous-dependencies
: Alphabetize imports within groups
f12ae59
[New] no-duplicates
: add a considerQueryString option to handle false positives when using some webpack loaders.
2d3d045
[fix] importType
: Accept '@example' as internal
0426f16
[New] order
: add pathGroups option to add support to order by paths
99b3fbf
[Fix] no-extraneous-dependencies
: Add support for export from
21bf8c6
[Fix] no-cycle
: should not warn for Flow imports
0cd5e43
[Fix] no-unused-modules
: fix crash due to export *
05085bb
[flow] no-unused-modules
: add flow type support
There are 46 commits in total.
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.6.3
to 2.6.4
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
2.5.0
to 2.6.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
husky is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 9 commits.
ae5700e
2.6.0
e85d280
update CHANGELOG.md
8d4f833
Merge branch 'master' of https://github.com/typicode/husky
449a615
adds an optional settings to use Yarn to run Husky (#511)
0f68515
add more debug messages
1255096
Open Collective integration
f7029a1
Update CHANGELOG.md
fa449ed
update engines node in package.json (#512)
f276923
Update CHANGELOG.md
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
3.0.3
to 3.0.4
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@semantic-release/changelog is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 3 commits.
50ed752
fix(package): update fs-extra to version 8.0.0
dd0d91f
chore(package): update tempy to version 0.3.0
00204d2
chore(package): update nyc to version 14.0.0
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
Because of GraphQL's explicit I feel that there's a lot of manual work to do when it comes to getting information from Figma API.
Let's take this query example:
const query = `{
file(id: "KViUntEBJqK4gWfiwft5NObl") {
name
thumbnailUrl
lastModified
pages {
name
id
type
frames {
id
name
position {
x
}
size {
width
height
}
elements(type: "TEXT") {
name
type
characters
position {
x
y
}
size {
width
height
}
style {
fontSize
fontFamily
fontWeight
letterSpacing
}
strokes {
type
}
fill {
r
g
b
a
}
}
}
}
}
}`;
My suggestion is to create something like <property>.fields()
and <property>.query()
to build this query with less effort. Like this:
const simplifiedQuery = `{
file(id: "KViUntEBJqK4gWfiwft5NObl") {
${file.fields()}
pages {
${pages.fields()}
frames {
id
name
${position.query()}
${size.query()}
${elements.query(
[
"name",
"type",
position.query(["x"]),
size.query(),
style.query(["fontSize", "fontFamily", "fontWeight", "letterSpacing"]),
strokes.query(),
fill.query()
],
{ type: "TEXT" }
)}
}
}
}
}`;
This would help building the queries but at the same time might go against the GraphQL idea of being very explicit about what to query. I just think that given the complexity of Figma's API this would be helpful and increase the development speed for those using this library.
If anyone has an opinion about this, I'm more than happy to hear what you have to say!
devDependency
@commitlint/cli was updated from 8.3.3
to 8.3.4
.devDependency
@commitlint/config-conventional was updated from 8.3.3
to 8.3.4
.devDependency
@commitlint/prompt was updated from 8.3.3
to 8.3.4
.devDependency
@commitlint/travis-cli was updated from 8.3.3
to 8.3.4
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the commitlint group definition.
commitlint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 16 commits.
0382070
v8.3.2
dcc83db
chore: pin dependency conventional-changelog-conventionalcommits to 4.1.0 (#829)
489a5f3
chore: update dependency @types/jest to v24.0.19 (#827)
aa4f7c3
chore: update dependency typescript to v3.6.4 (#824)
24b6e55
chore: update lerna monorepo (#823)
84500ff
chore: update dependency which to v2 (#814)
572a52c
chore: update dependency @types/node to v12.11.2 (#813)
81c74e7
chore: update dependency cross-env to v6.0.3 (#811)
f28ece5
chore: update dependency husky to v3.0.9 (#810)
38eb2e7
chore: update dependency @types/lodash to v4.14.144 (#809)
8741fbe
chore: update dependency string-to-stream to v3 (#801)
9d09693
fix(top-level): support git submodules (#784)
492d330
fix(load): add support for factory-callback parser presets (#834)
db33fe7
fix(config-conventional): add improvement to type list (#832)
fbf2389
v8.3.1
There are 16 commits in total.
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
2.3.1
to 2.3.2
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@typescript-eslint/parser is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 4 commits.
926cf64
chore: publish v2.3.2
95c13fe
fix(typescript-estree): handle optional computed prop w/o type (#1026)
8ce3a81
fix(typescript-estree): correct ClassDeclarationBase type (#1008)
cdf9294
fix(eslint-plugin): [no-unnec-type-arg] undefined symbol crash (#1007)
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.6.0
to 2.6.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
1.231.0
to 1.231.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
snyk is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
The new version differs by 2 commits.
a922e26
Merge pull request #793 from snyk/fix/bump-snyk-go-plugin-v1-11-1
3020829
fix: bump snyk-go-plugin to v1.11.1
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
After talking to @okonet one of his suggestions was to have a css
prop in the query that would return the parsed css styles for each node.
I think this is a great suggestion and would be extremely useful for building components using figma-graphql.
We need to see which props can be exported as CSS but should be fairly easy to convert them to css props.
9.4.2
to 9.4.3
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
lint-staged is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 2 commits.
ed84d8e
fix(deps): bump eslint-utils from 1.4.0 to 1.4.3 to fix a security vulnerability (#722)
3f27bc7
build: Use [email protected] to enable prerelease channels
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
1.239.2
to 1.239.3
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
snyk is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
The new version differs by 2 commits.
d00a52a
Merge pull request #837 from snyk/chore/refactor-remediation-types
7670c92
fix: refactor pin remediation data structure
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
I'm planning on dedicating more time to this so I also wanted to set the goals and plans for the upcoming v2. You may call it public accountability but I'm also genuinely interested in what people think about this.
A bit of context first!
This library was something very experimental done on the back of the launch of the Figma API. Its main goal initially was to provide a 1:1 match with the Figma API using the awesome figma-js library as the interface.
While this works, it's also missing on a great opportunity to make the Figma API more accessible to people that aren't necessarily developers.
With that mindset, I bumped into this tweet from @jongold which made re-think the approach for this library...
What if we make design tools a little bit more human?
{
"document":{
"id":"0:0",
"name":"Document",
"type":"DOCUMENT",
"children":[
{
"id":"0:1",
"name":"Page 1",
"type":"CANVAS",
"children":[
{
"id":"1:6",
"name":"Rectangle",
"type":"INSTANCE",
"blendMode":"PASS_THROUGH",
"children":[
{
"id":"I1:6;1:2",
"name":"Rectangle",
"type":"RECTANGLE",
"blendMode":"PASS_THROUGH",
"absoluteBoundingBox":{
"x":24,
"y":-208,
"width":201,
"height":109
},
"constraints":{
"vertical":"SCALE",
"horizontal":"SCALE"
},
"fills":[
{
"blendMode":"NORMAL",
"type":"SOLID",
"color":{
"r":0.047058823529411764,
"g":0.9568627450980393,
"b":0.027450980392156862,
"a":1
}
}
],
"strokes":[
],
"strokeWeight":1,
"strokeAlign":"INSIDE",
"styles":{
"fill":"1:12"
},
"effects":[
]
},
{
"id":"I1:6;18:0",
"name":"Text",
"type":"TEXT",
"blendMode":"PASS_THROUGH",
"absoluteBoundingBox":{
"x":57,
"y":-163,
"width":63,
"height":20
},
"constraints":{
"vertical":"SCALE",
"horizontal":"SCALE"
},
"fills":[
{
"blendMode":"NORMAL",
"type":"SOLID",
"color":{
"r":0.8509803921568627,
"g":0.10980392156862745,
"b":0.10980392156862745,
"a":1
}
}
],
"strokes":[
],
"strokeWeight":1,
"strokeAlign":"OUTSIDE",
"styles":{
"fill":"1:11"
},
"effects":[
],
"characters":"Text",
"style":{
"fontFamily":"Roboto",
"fontPostScriptName":null,
"fontWeight":400,
"fontSize":12,
"textAlignHorizontal":"LEFT",
"textAlignVertical":"TOP",
"letterSpacing":0,
"lineHeightPx":14.0625,
"lineHeightPercent":100
},
"characterStyleOverrides":[
],
"styleOverrideTable":{
}
}
],
"absoluteBoundingBox":{
"x":24,
"y":-208,
"width":201,
"height":109
},
"constraints":{
"vertical":"TOP",
"horizontal":"LEFT"
},
"clipsContent":false,
"background":[
{
"blendMode":"NORMAL",
"visible":false,
"type":"SOLID",
"color":{
"r":1,
"g":1,
"b":1,
"a":1
}
}
],
"backgroundColor":{
"r":0,
"g":0,
"b":0,
"a":0
},
"effects":[
],
"componentId":"1:5"
},
{
"id":"7:0",
"name":"Frame",
"type":"FRAME",
"blendMode":"PASS_THROUGH",
"children":[
{
"id":"1:5",
"name":"Rectangle",
"type":"COMPONENT",
"blendMode":"PASS_THROUGH",
"children":[
{
"id":"1:2",
"name":"Rectangle",
"type":"RECTANGLE",
"blendMode":"PASS_THROUGH",
"absoluteBoundingBox":{
"x":-232,
"y":-208,
"width":201,
"height":109
},
"constraints":{
"vertical":"SCALE",
"horizontal":"SCALE"
},
"fills":[
{
"blendMode":"NORMAL",
"type":"SOLID",
"color":{
"r":0.8509803921568627,
"g":0.10980392156862745,
"b":0.10980392156862745,
"a":1
}
}
],
"strokes":[
],
"strokeWeight":1,
"strokeAlign":"INSIDE",
"styles":{
"fill":"1:11"
},
"effects":[
]
},
{
"id":"18:0",
"name":"Text",
"type":"TEXT",
"blendMode":"PASS_THROUGH",
"absoluteBoundingBox":{
"x":-199,
"y":-163,
"width":63,
"height":20
},
"constraints":{
"vertical":"SCALE",
"horizontal":"SCALE"
},
"fills":[
{
"blendMode":"NORMAL",
"type":"SOLID",
"color":{
"r":0.047058823529411764,
"g":0.9568627450980393,
"b":0.027450980392156862,
"a":1
}
}
],
"strokes":[
],
"strokeWeight":1,
"strokeAlign":"OUTSIDE",
"styles":{
"fill":"1:12"
},
"effects":[
],
"characters":"Text",
"style":{
"fontFamily":"Roboto",
"fontPostScriptName":null,
"fontWeight":400,
"fontSize":12,
"textAlignHorizontal":"LEFT",
"textAlignVertical":"TOP",
"letterSpacing":0,
"lineHeightPx":14.0625,
"lineHeightPercent":100
},
"characterStyleOverrides":[
],
"styleOverrideTable":{
}
}
],
"absoluteBoundingBox":{
"x":-232,
"y":-208,
"width":201,
"height":109
},
"constraints":{
"vertical":"TOP",
"horizontal":"LEFT"
},
"clipsContent":false,
"background":[
{
"blendMode":"NORMAL",
"visible":false,
"type":"SOLID",
"color":{
"r":1,
"g":1,
"b":1,
"a":1
}
}
],
"backgroundColor":{
"r":0,
"g":0,
"b":0,
"a":0
},
"effects":[
]
}
],
"absoluteBoundingBox":{
"x":-255,
"y":-230,
"width":252,
"height":151
},
"constraints":{
"vertical":"TOP",
"horizontal":"LEFT"
},
"clipsContent":true,
"background":[
{
"blendMode":"NORMAL",
"type":"SOLID",
"color":{
"r":1,
"g":1,
"b":1,
"a":1
}
}
],
"backgroundColor":{
"r":1,
"g":1,
"b":1,
"a":1
},
"effects":[
]
}
],
"backgroundColor":{
"r":0.8980392156862745,
"g":0.8980392156862745,
"b":0.8980392156862745,
"a":1
},
"prototypeStartNodeID":null
}
]
},
"components":{
"1:5":{
"key":"",
"name":"Rectangle",
"description":""
}
},
"schemaVersion":0,
"styles":{
"1:12":{
"key":"ea017aed6616af00f3c4d59e3d945c8c3e47adca",
"name":"Green",
"styleType":"FILL"
},
"1:11":{
"key":"e234400b962ffafce654af9b3220ce88857523ec",
"name":"Red",
"styleType":"FILL"
}
},
"name":"Untitled",
"lastModified":"2019-01-27T15:59:11.863713Z",
"thumbnailUrl":"https://s3-alpha-sig.figma.com/thumbnails/70c4fb68-1ed0-4f83-b871-3c00da8f7e36?Expires=1554076800&Signature=U780pTmEFpB6yyUJnCogFaJNWL1OlxnlH8mkCMq9jim-128~fDJvZql9X-69Di-SHs5cWJsl12Xw307F8uRDXH1~tHR44d36zyMnS7DXE4m05SNQQRqLEy0C5-twrGVFEQOL6vbQCg7VcusrQlQyi5Q99UB0UhRgUriMvdtuKZS4YNm7WiFXTsaTnCzKhIBfk~VtoX0Lea9tfVbm6~OQSb4BSqzQP~ULPGABNkdzR7BmGXXw-39icw87HglaZmYMURmNfR-~A4h-OLWI8Ol076iUTTaPLzqQy-l788VGng26ldUGT7rW1UCP0r1qL8XfzeWTxPkmwHLfni3yiDbsOg__&Key-Pair-Id=APKAINTVSUGEWH5XD5UA",
"version":"105584881"
}
For a developer, querying this data from the Figma API is already a bit complex, so it's even more difficult for non-tech people to get what they want easily and in a more human-readable way.
Imagine you're a designer that wants to get the name of all components in a specific artboard inside a file? Let's try...
file(id: "KViUntEBJqK4gWfiwft5NObl") {
frames(name: "Icons") {
components {
name
}
}
}
Ok, it might not be too complicated to get this without figma-graphql, but let's say we want to get a screenshot of all the artboards in a specific page of a file.
file(id: "KViUntEBJqK4gWfiwft5NObl") {
pages(name: "Hotel Journey") {
frames {
name
image(format: "png") {
images
}
}
}
}
Trying to get this information without technical knowledge would be almost impossible given the amount of stitching required. Instead, we're abstracting a complex interface to give people more power to do the task they're trying to accomplish.
To me GraphQL has the tremendous power of making complex data more accessible to everyone. It's a simple language that describes exactly what you want in a way that isn't too scary to most of us.
I can see organisations building tools that allow GraphQL queries to their Figma account so anyone in the business can get the information they need easily by using a language that is closer to their mental models. You can call it the democratisation of design.
So to accomplish this mission, there are 3 main goals I'd like to achieve in the next milestone.
It might be surprising that this is number 1 but I think that to achieve what we're proposing we need to start with stronger foundations. This project was very experimental when it started and with a big help from @SaraVieira it got much better, but there's a lot more work to do.
Better schema/resolvers
I can see that @okonet has been spending some time improving the schema and resolvers in his fork and I'd love to have that integrated into the project. I'm sure there are plenty of ideas that we can consider going forward and this will only get better as people keep using it.
Use Typescript
Another thing that we can consider is the use of Typescript to help building that robustness. There are many approaches to using TS in a GraphQL project and I'd like to spend some time understanding which would be the best fit for this.
Integration tests
With TS and a good schema we'll be able to cover most of the issues that could happen in the code, but one of the things that we can't control and could affect us is the integration with the Figma API. At my current job, we've been working in integration tests to make sure the GraphQL side is always consistent with the API's it's using and I think we could benefit from having something like that too.
Number 2 is of course making the API easier to use by everyone. This will be the most visible change of v2 and it's really important that we get this right as it's much harder to change the API once these decisions are made.
Normalisation/Grouping
One of the things I've been working on is to normalise the response from Figma API and group the different node types to it's easier to query the file without having to respect the hierarchy of the file. People might just want the components that start the word "Button" and don't really know that in the file they are part of a group, that is part of a frame, that is part of a page. I think it's crucial that we break this structure while still allowing the traversing of the file for those who want precise control.
Helpers/Fragments
This is still a bit vague in my mind, but I think it would be good to have easier ways to get the information. Given the declarative nature of GraphQL you need to be explicit in what you want to get, which might just be annoying for many people.
I did some explorations with #6 but to be honest I don't like that approach as it just makes it more complex and hard to understand. Maybe we could do something with fragments that would make it easier to query.
Easy installation
Having to get the code and run a bunch of commands might be a bit scary for non-technical people and if the goal is to get more people to use this then we need to have a way to quickly and easily deploy this to a place where anyone can test it.
Luckily we have CodeSandbox in our lives and with the container sandboxes we could literally have a one-click deploy for people to test it. I think we'll have this covered, right @SaraVieira? π
Finally there's the big opportunity to extend the Figma API and give a lot more power to the users of the library.
@jongold mentioned getting the files for a project inside a team in #4 and I mentioned the example of getting screenshots for specific nodes in a files. All of this isn't possible with the Figma API without a good amount of stitching and GraphQL is a really good fit for this abstraction.
I'm also very excited about the exploration of subscriptions that @okonet is doing in his fork which is something that can be really useful to many people working with Figma.
And that's it, this is what I'd like to achieve with v2 and I honestly think it's pretty exciting if we can make it work!
I obviously won't be able to do this alone and would really appreciate any help I can get along the way so if you're reading this and feel excited about what I just wrote above please join the ride and let's build some stuff together!
So, what do you think about these ideas? π
6.1.4
to 6.1.5
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@types/eslint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
1.9.0
to 1.10.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@typescript-eslint/parser is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
16.9.8
to 16.9.9
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@types/react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
7.14.0
to 7.14.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
eslint-plugin-react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 3 commits.
62255af
Update CHANGELOG and bump version
655eb01
Merge pull request #2320 from golopot/issue-2319
9639d82
[Fix] prop-types
: fix crash on multiple destructuring
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.10.1
to 2.11.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
8.2.1
to 9.0.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
lint-staged is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 32 commits.
e24aaf2
fix: parse titles for function linters
e862e7e
docs: correct config file name
309ff1c
docs: restore filtering section to README
4bef26e
feat: add deprecation error for advanced configuration
e829646
refactor: remove dependency on path-is-inside
767edbd
refactor: remove dependency on lodash
c59cd9a
chore: upgrade dependencies
19536e3
refactor: pass unparsed commands to execa with --shell
275d996
refactor: rename --silent to --quiet
18acd59
docs: update README
2ba6d61
test: ignore testSetup from coverage report
ecf9227
feat: add --shell and --quiet flags
04190c8
refactor: remove advanced configuration options
bed9127
refactor: use execa's shell option to run commands
d3f6475
docs: update contributors
There are 32 commits in total.
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.9.13
to 2.9.14
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
With the improved API most of the examples in the README are obsolete so we need to update them and maybe take the opportunity to add a few more detailed examples in the docs website so the README becomes a bit less cluttered.
Now that we already have all the setup to create tests we need to add them for each type so we guarantee that the API response is what we are expecting and that we are providing all the information in the API.
3.0.9
to 3.1.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
husky is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
pre-merge-commit
hook (#605)The new version differs by 5 commits.
436ca18
3.1.0
795508d
add funding field
2b601d2
Add pre-merge-commit (#605)
3a844a6
Update README.md
abcb11a
update ISSUE_TEMPLATE.md
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
The links in the docs other than the Home one (e.g. https://figma-graphql.party/practical-examples) are broken when accessing them directly giving a 404 error. This must be because routing happens in the client and the server is not configured to serve routes. Seems a problem with GH pages π’
1.9.0
to 1.10.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@typescript-eslint/eslint-plugin is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
The previous implementation of the cache had some serious flaws so we decided to remove it for now but this is something that can be useful to speed things up if people don't update the Figma files that often.
Would be good to revisit this and implement a smarter caching system.
How do you feel about renaming typeStyles
to textStyles
to be more in line with Figma?
dependency
apollo-server-express was updated from 2.6.3
to 2.6.4
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
devDependency
@commitlint/cli was updated from 8.0.0
to 8.1.0
.devDependency
@commitlint/config-conventional was updated from 8.0.0
to 8.1.0
.devDependency
@commitlint/prompt was updated from 8.0.0
to 8.1.0
.devDependency
@commitlint/travis-cli was updated from 8.0.0
to 8.1.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the commitlint group definition.
commitlint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 39 commits.
c17420d
v8.1.0
ca19d70
chore: update dependency lodash to v4.17.14 (#724)
5757ef2
build(deps): bump lodash.template from 4.4.0 to 4.5.0 (#721)
5b5f855
build(deps): bump lodash.merge from 4.6.0 to 4.6.2 (#722)
4cb979d
build(deps): bump lodash from 4.17.11 to 4.17.13 (#723)
a89c1ba
chore: add devcontainer setup
9aa5709
chore: pin dependencies (#714)
c9ef5e2
chore: centralize typescript and jest setups (#710)
c9dcf1a
chore: pin dependencies (#708)
6a6a8b0
refactor: rewrite top level to typescript (#679)
0fedbc0
chore: update dependency @types/jest to v24.0.15 (#694)
0b9c7ed
chore: update dependency typescript to v3.5.2 (#695)
4efb34b
chore: update dependency globby to v10 (#705)
804af8b
chore: update dependency lint-staged to v8.2.1 (#696)
9075844
fix: add explicit dependency on chalk (#687)
There are 39 commits in total.
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.6.0
to 2.6.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
4.14.140
to 4.14.141
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@types/lodash is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
16.8.24
to 16.8.25
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@types/react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.6.3
to 2.6.4
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
dependency
apollo-server-express was updated from 2.6.0
to 2.6.1
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
This monorepo update includes releases of one or more dependencies which all belong to the apollo-server group definition.
apollo-server is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
2.3.1
to 2.3.2
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
@typescript-eslint/eslint-plugin is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 4 commits.
926cf64
chore: publish v2.3.2
95c13fe
fix(typescript-estree): handle optional computed prop w/o type (#1026)
8ce3a81
fix(typescript-estree): correct ClassDeclarationBase type (#1008)
cdf9294
fix(eslint-plugin): [no-unnec-type-arg] undefined symbol crash (#1007)
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
Hey Bernardo!
I'm trying to query for e.g. all of the files within a team, and with the Figma API returning truncated objects there's a lot of REST call stitching to be done. Would be so cool if we used graphql to write queries like
{
team(id: "123") {
projects {
edges {
node {
id
name
files {
edges {
node {
# full FileResponse here, not the truncated version
document {
# full document
}
name
lastModified
}
}
}
}
}
}
}
}
Is this something you've considered?
1.252.0
to 1.253.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
snyk is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
The new version differs by 2 commits.
8609cdf
Merge pull request #878 from snyk/feat/support-setup-py
dec4f5a
feat: add support for setup.py
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
13.1.0
to 13.2.0
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
eslint-config-airbnb-base is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
1.230.5
to 1.230.6
.π¨ View failing branch.
This version is covered by your current version range and after updating it in your project the build failed.
snyk is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
The new version differs by 4 commits.
e6568ec
Merge pull request #797 from snyk/test/remove-bad-test
f365660
test: skip test that uses previous bad version
0c6026e
Merge pull request #795 from snyk/fix/https-agent-vuln
c918814
fix: add packed dependency to prevent download from git
See the full diff
There is a collection of frequently asked questions. If those donβt help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot π΄
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.