@figma/code-connect 0.1.0
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.
- package/README.md +449 -0
- package/bin/figma +5 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +41 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +214 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/common/api.d.ts +146 -0
- package/dist/common/api.d.ts.map +1 -0
- package/dist/common/api.js +3 -0
- package/dist/common/api.js.map +1 -0
- package/dist/common/compiler.d.ts +96 -0
- package/dist/common/compiler.d.ts.map +1 -0
- package/dist/common/compiler.js +281 -0
- package/dist/common/compiler.js.map +1 -0
- package/dist/common/external.d.ts +10 -0
- package/dist/common/external.d.ts.map +1 -0
- package/dist/common/external.js +53 -0
- package/dist/common/external.js.map +1 -0
- package/dist/common/figma_connect.d.ts +24 -0
- package/dist/common/figma_connect.d.ts.map +1 -0
- package/dist/common/figma_connect.js +3 -0
- package/dist/common/figma_connect.js.map +1 -0
- package/dist/common/intrinsics.d.ts +61 -0
- package/dist/common/intrinsics.d.ts.map +1 -0
- package/dist/common/intrinsics.js +239 -0
- package/dist/common/intrinsics.js.map +1 -0
- package/dist/common/logging.d.ts +25 -0
- package/dist/common/logging.d.ts.map +1 -0
- package/dist/common/logging.js +47 -0
- package/dist/common/logging.js.map +1 -0
- package/dist/common/parser.d.ts +77 -0
- package/dist/common/parser.d.ts.map +1 -0
- package/dist/common/parser.js +736 -0
- package/dist/common/parser.js.map +1 -0
- package/dist/common/parser_template_helpers.d.ts +2 -0
- package/dist/common/parser_template_helpers.d.ts.map +1 -0
- package/dist/common/parser_template_helpers.js +53 -0
- package/dist/common/parser_template_helpers.js.map +1 -0
- package/dist/common/project.d.ts +79 -0
- package/dist/common/project.d.ts.map +1 -0
- package/dist/common/project.js +171 -0
- package/dist/common/project.js.map +1 -0
- package/dist/connect/create.d.ts +8 -0
- package/dist/connect/create.d.ts.map +1 -0
- package/dist/connect/create.js +162 -0
- package/dist/connect/create.js.map +1 -0
- package/dist/connect/delete_docs.d.ts +11 -0
- package/dist/connect/delete_docs.d.ts.map +1 -0
- package/dist/connect/delete_docs.js +60 -0
- package/dist/connect/delete_docs.js.map +1 -0
- package/dist/connect/figma_rest_api.d.ts +28 -0
- package/dist/connect/figma_rest_api.d.ts.map +1 -0
- package/dist/connect/figma_rest_api.js +19 -0
- package/dist/connect/figma_rest_api.js.map +1 -0
- package/dist/connect/helpers.d.ts +13 -0
- package/dist/connect/helpers.d.ts.map +1 -0
- package/dist/connect/helpers.js +87 -0
- package/dist/connect/helpers.js.map +1 -0
- package/dist/connect/upload.d.ts +8 -0
- package/dist/connect/upload.d.ts.map +1 -0
- package/dist/connect/upload.js +62 -0
- package/dist/connect/upload.js.map +1 -0
- package/dist/connect/validation.d.ts +3 -0
- package/dist/connect/validation.d.ts.map +1 -0
- package/dist/connect/validation.js +241 -0
- package/dist/connect/validation.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/storybook/convert.d.ts +24 -0
- package/dist/storybook/convert.d.ts.map +1 -0
- package/dist/storybook/convert.js +280 -0
- package/dist/storybook/convert.js.map +1 -0
- package/dist/storybook/external.d.ts +32 -0
- package/dist/storybook/external.d.ts.map +1 -0
- package/dist/storybook/external.js +3 -0
- package/dist/storybook/external.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete_docs.js","sourceRoot":"","sources":["../../src/connect/delete_docs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAgE;AAChE,+CAA2C;AAC3C,qDAA4C;AAYrC,KAAK,UAAU,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAQ;IAC3D,MAAM,MAAM,GAAG,IAAA,0BAAS,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,GAAG,eAAe,CAAA;IAEtE,IAAI,CAAC;QACH,gBAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAE5D,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1C,OAAO,EAAE;gBACP,eAAe,EAAE,WAAW;gBAC5B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;SAChC,CAAC,CAAA;QAEF,gBAAM,CAAC,IAAI,CACT,0BAA0B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,gBAAM,CAAC,KAAK,CACV,8BAA8B,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAC7H,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,gBAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAhCD,kCAgCC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare function getApiUrl(figmaNode: string): string;
|
|
2
|
+
export declare namespace FigmaRestApi {
|
|
3
|
+
enum ComponentPropertyType {
|
|
4
|
+
Boolean = "BOOLEAN",
|
|
5
|
+
InstanceSwap = "INSTANCE_SWAP",
|
|
6
|
+
Text = "TEXT",
|
|
7
|
+
Variant = "VARIANT"
|
|
8
|
+
}
|
|
9
|
+
interface ComponentPropertyDefinition {
|
|
10
|
+
defaultValue: boolean | string;
|
|
11
|
+
type: ComponentPropertyType;
|
|
12
|
+
/**
|
|
13
|
+
* All possible values for this property. Only exists on VARIANT properties
|
|
14
|
+
*/
|
|
15
|
+
variantOptions?: string[];
|
|
16
|
+
}
|
|
17
|
+
interface Node {
|
|
18
|
+
type: 'COMPONENT' | 'COMPONENT_SET' | 'OTHER';
|
|
19
|
+
name: string;
|
|
20
|
+
id: string;
|
|
21
|
+
children: Node[];
|
|
22
|
+
}
|
|
23
|
+
interface Component extends Node {
|
|
24
|
+
type: 'COMPONENT' | 'COMPONENT_SET';
|
|
25
|
+
componentPropertyDefinitions: Record<string, ComponentPropertyDefinition>;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=figma_rest_api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma_rest_api.d.ts","sourceRoot":"","sources":["../../src/connect/figma_rest_api.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,UAE1C;AAGD,yBAAiB,YAAY,CAAC;IAC5B,KAAY,qBAAqB;QAC/B,OAAO,YAAY;QACnB,YAAY,kBAAkB;QAC9B,IAAI,SAAS;QACb,OAAO,YAAY;KACpB;IAED,UAAiB,2BAA2B;QAC1C,YAAY,EAAE,OAAO,GAAG,MAAM,CAAA;QAC9B,IAAI,EAAE,qBAAqB,CAAA;QAC3B;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAC1B;IAED,UAAiB,IAAI;QAEnB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,OAAO,CAAA;QAC7C,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,QAAQ,EAAE,IAAI,EAAE,CAAA;KACjB;IAED,UAAiB,SAAU,SAAQ,IAAI;QACrC,IAAI,EAAE,WAAW,GAAG,eAAe,CAAA;QACnC,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;KAC1E;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FigmaRestApi = exports.getApiUrl = void 0;
|
|
4
|
+
function getApiUrl(figmaNode) {
|
|
5
|
+
return 'https://api.figma.com/v1';
|
|
6
|
+
}
|
|
7
|
+
exports.getApiUrl = getApiUrl;
|
|
8
|
+
// These typings are a subset of the Figma REST API
|
|
9
|
+
var FigmaRestApi;
|
|
10
|
+
(function (FigmaRestApi) {
|
|
11
|
+
let ComponentPropertyType;
|
|
12
|
+
(function (ComponentPropertyType) {
|
|
13
|
+
ComponentPropertyType["Boolean"] = "BOOLEAN";
|
|
14
|
+
ComponentPropertyType["InstanceSwap"] = "INSTANCE_SWAP";
|
|
15
|
+
ComponentPropertyType["Text"] = "TEXT";
|
|
16
|
+
ComponentPropertyType["Variant"] = "VARIANT";
|
|
17
|
+
})(ComponentPropertyType = FigmaRestApi.ComponentPropertyType || (FigmaRestApi.ComponentPropertyType = {}));
|
|
18
|
+
})(FigmaRestApi || (exports.FigmaRestApi = FigmaRestApi = {}));
|
|
19
|
+
//# sourceMappingURL=figma_rest_api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma_rest_api.js","sourceRoot":"","sources":["../../src/connect/figma_rest_api.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO,0BAA0B,CAAA;AACnC,CAAC;AAFD,8BAEC;AAED,mDAAmD;AACnD,IAAiB,YAAY,CA6B5B;AA7BD,WAAiB,YAAY;IAC3B,IAAY,qBAKX;IALD,WAAY,qBAAqB;QAC/B,4CAAmB,CAAA;QACnB,uDAA8B,CAAA;QAC9B,sCAAa,CAAA;QACb,4CAAmB,CAAA;IACrB,CAAC,EALW,qBAAqB,GAArB,kCAAqB,KAArB,kCAAqB,QAKhC;AAuBH,CAAC,EA7BgB,YAAY,4BAAZ,YAAY,QA6B5B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FigmaRestApi } from './figma_rest_api';
|
|
2
|
+
export declare function isComponent(node: FigmaRestApi.Node): node is FigmaRestApi.Component;
|
|
3
|
+
export declare const validateNodeId: (id: string) => string;
|
|
4
|
+
export declare function parseNodeIds(figmaNodeUrls: string[]): string[];
|
|
5
|
+
export declare function parseFileKey(figmaNodeUrl: string): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Parses components from a Rest API response
|
|
8
|
+
* @param document
|
|
9
|
+
* @param nodeIds
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export declare function findComponentsInDocument(document: FigmaRestApi.Node, nodeIds: string[]): FigmaRestApi.Component[];
|
|
13
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/connect/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC,SAAS,CAEnF;AAED,eAAO,MAAM,cAAc,OAAiB,MAAM,KAAG,MAMpD,CAAA;AAED,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAe9D;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,sBAEhD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAC3B,OAAO,EAAE,MAAM,EAAE,GAChB,YAAY,CAAC,SAAS,EAAE,CAkB1B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.findComponentsInDocument = exports.parseFileKey = exports.parseNodeIds = exports.validateNodeId = exports.isComponent = void 0;
|
|
27
|
+
const url = __importStar(require("url"));
|
|
28
|
+
const logging_1 = require("../common/logging");
|
|
29
|
+
const guidRegex = /^I?[0-9]+:[0-9]+(;[0-9]+:[0-9]+)*$/;
|
|
30
|
+
function isComponent(node) {
|
|
31
|
+
return node.type === 'COMPONENT' || node.type === 'COMPONENT_SET';
|
|
32
|
+
}
|
|
33
|
+
exports.isComponent = isComponent;
|
|
34
|
+
const validateNodeId = function (id) {
|
|
35
|
+
const newId = id.replace('-', ':');
|
|
36
|
+
if (!guidRegex.test(newId)) {
|
|
37
|
+
throw new Error(`ID ${id} is not a valid node_id`);
|
|
38
|
+
}
|
|
39
|
+
return newId;
|
|
40
|
+
};
|
|
41
|
+
exports.validateNodeId = validateNodeId;
|
|
42
|
+
function parseNodeIds(figmaNodeUrls) {
|
|
43
|
+
const nodeIds = [];
|
|
44
|
+
for (const nodeURL of figmaNodeUrls) {
|
|
45
|
+
const figmaNodeUrl = url.parse(nodeURL, true);
|
|
46
|
+
const nodeId = figmaNodeUrl.query['node-id'];
|
|
47
|
+
if (typeof nodeId !== 'string') {
|
|
48
|
+
logging_1.logger.error(`Invalid figma node URL: ${nodeURL}, more than one node-id given`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
if (nodeId) {
|
|
52
|
+
const figmaNodeId = (0, exports.validateNodeId)(nodeId);
|
|
53
|
+
nodeIds.push(figmaNodeId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return nodeIds;
|
|
57
|
+
}
|
|
58
|
+
exports.parseNodeIds = parseNodeIds;
|
|
59
|
+
function parseFileKey(figmaNodeUrl) {
|
|
60
|
+
return figmaNodeUrl.match(/(?:file|design)\/([a-zA-Z0-9]+)/)?.[1];
|
|
61
|
+
}
|
|
62
|
+
exports.parseFileKey = parseFileKey;
|
|
63
|
+
/**
|
|
64
|
+
* Parses components from a Rest API response
|
|
65
|
+
* @param document
|
|
66
|
+
* @param nodeIds
|
|
67
|
+
* @returns
|
|
68
|
+
*/
|
|
69
|
+
function findComponentsInDocument(document, nodeIds) {
|
|
70
|
+
const components = [];
|
|
71
|
+
const stack = [document];
|
|
72
|
+
while (stack.length > 0) {
|
|
73
|
+
const node = stack.pop();
|
|
74
|
+
if (nodeIds.includes(node.id)) {
|
|
75
|
+
if (!isComponent(node)) {
|
|
76
|
+
throw new Error('Specified node is not a component or a component set');
|
|
77
|
+
}
|
|
78
|
+
components.push(node);
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(node.children)) {
|
|
81
|
+
stack.push(...node.children);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return components;
|
|
85
|
+
}
|
|
86
|
+
exports.findComponentsInDocument = findComponentsInDocument;
|
|
87
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/connect/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAA0B;AAC1B,+CAA0C;AAE1C,MAAM,SAAS,GAAG,oCAAoC,CAAA;AAEtD,SAAgB,WAAW,CAAC,IAAuB;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAA;AACnE,CAAC;AAFD,kCAEC;AAEM,MAAM,cAAc,GAAG,UAAU,EAAU;IAChD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B;AAED,SAAgB,YAAY,CAAC,aAAuB;IAClD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,gBAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,+BAA+B,CAAC,CAAA;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAA;YAC1C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAfD,oCAeC;AAED,SAAgB,YAAY,CAAC,YAAoB;IAC/C,OAAO,YAAY,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACnE,CAAC;AAFD,oCAEC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,QAA2B,EAC3B,OAAiB;IAEjB,MAAM,UAAU,GAA6B,EAAE,CAAA;IAC/C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAA;IAExB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAA;QACzB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;YACzE,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AArBD,4DAqBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/connect/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAK1D,UAAU,IAAI;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,gBAAgB,EAAE,CAAA;CACzB;AAMD,wBAAsB,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,iBA+BvD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.upload = void 0;
|
|
27
|
+
const logging_1 = require("../common/logging");
|
|
28
|
+
const axios_1 = __importStar(require("axios"));
|
|
29
|
+
const figma_rest_api_1 = require("./figma_rest_api");
|
|
30
|
+
function figmaDocStr(doc) {
|
|
31
|
+
return `${(0, logging_1.highlight)(doc.component)}${doc.variant ? `(${Object.entries(doc.variant).map(([key, value]) => `${key}=${value}`)})` : ''} ${(0, logging_1.underline)(doc.figmaNode)}`;
|
|
32
|
+
}
|
|
33
|
+
async function upload({ accessToken, docs }) {
|
|
34
|
+
const apiUrl = (0, figma_rest_api_1.getApiUrl)(docs?.[0]?.figmaNode ?? '') + '/code_connect';
|
|
35
|
+
try {
|
|
36
|
+
logging_1.logger.info(`Uploading to Figma...`);
|
|
37
|
+
const response = await axios_1.default.post(apiUrl, docs, {
|
|
38
|
+
headers: {
|
|
39
|
+
'X-Figma-Token': accessToken,
|
|
40
|
+
'Content-Type': 'application/json',
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
logging_1.logger.info(`Successfully uploaded to Figma:\n${docs.map((doc) => `-> ${figmaDocStr(doc)}`).join('\n')}`);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if ((0, axios_1.isAxiosError)(err)) {
|
|
47
|
+
if (err.response) {
|
|
48
|
+
logging_1.logger.error(`Failed to upload to Figma (${err.code}): ${err.response?.status} ${err.response?.data?.message}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
logging_1.logger.error(`Failed to upload to Figma: ${err.message}`);
|
|
52
|
+
}
|
|
53
|
+
logging_1.logger.debug(JSON.stringify(err.response?.data));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
logging_1.logger.error(`Failed to upload to Figma: ${err}`);
|
|
57
|
+
}
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.upload = upload;
|
|
62
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/connect/upload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAgE;AAChE,+CAA2C;AAC3C,qDAA4C;AAO5C,SAAS,WAAW,CAAC,GAAqB;IACxC,OAAO,GAAG,IAAA,mBAAS,EAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAA,mBAAS,EAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAA;AACnK,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAQ;IACtD,MAAM,MAAM,GAAG,IAAA,0BAAS,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,GAAG,eAAe,CAAA;IAEtE,IAAI,CAAC;QACH,gBAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEpC,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;YAC9C,OAAO,EAAE;gBACP,eAAe,EAAE,WAAW;gBAC5B,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;QAEF,gBAAM,CAAC,IAAI,CACT,oCAAoC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7F,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,gBAAM,CAAC,KAAK,CACV,8BAA8B,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAClG,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,gBAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AA/BD,wBA+BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/connect/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AA0N1D,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EAAE,GACvB,OAAO,CAAC,OAAO,CAAC,CAoDlB"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.validateDocs = void 0;
|
|
27
|
+
const url = __importStar(require("url"));
|
|
28
|
+
const lodash_1 = require("lodash");
|
|
29
|
+
const axios_1 = __importStar(require("axios"));
|
|
30
|
+
const logging_1 = require("../common/logging");
|
|
31
|
+
const helpers_1 = require("./helpers");
|
|
32
|
+
const figma_rest_api_1 = require("./figma_rest_api");
|
|
33
|
+
function parseFigmaNode(doc) {
|
|
34
|
+
const figmaNodeUrl = url.parse(doc.figmaNode, true);
|
|
35
|
+
const fileKeyMatch = figmaNodeUrl.path?.match(/(file|design)\/([a-zA-Z0-9]+)/);
|
|
36
|
+
if (!fileKeyMatch) {
|
|
37
|
+
logging_1.logger.error(`Failed to parse ${doc.figmaNode}`);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const fileKey = fileKeyMatch[2];
|
|
41
|
+
const nodeId = figmaNodeUrl.query['node-id'];
|
|
42
|
+
if (nodeId && typeof nodeId === 'string') {
|
|
43
|
+
const figmaNodeId = (0, helpers_1.validateNodeId)(nodeId);
|
|
44
|
+
return { fileKey, nodeId: figmaNodeId };
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
logging_1.logger.error(`Failed to get node-id from ${doc.figmaNode}`);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function fetchNodeInfo(baseApiUrl, fileKey, nodeIdsChunk, accessToken) {
|
|
52
|
+
try {
|
|
53
|
+
const response = await axios_1.default.get(`${baseApiUrl}${fileKey}/nodes?ids=${nodeIdsChunk.join(',')}`, {
|
|
54
|
+
headers: {
|
|
55
|
+
'X-Figma-Token': accessToken,
|
|
56
|
+
'Content-Type': 'application/json',
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
if (response.status !== 200) {
|
|
60
|
+
logging_1.logger.error('Failed to fetch node info: ' + response.status + ' ' + response.data?.message);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return response.data.nodes;
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
if ((0, axios_1.isAxiosError)(err)) {
|
|
67
|
+
if (err.response) {
|
|
68
|
+
logging_1.logger.error(`Failed to to fetch node info (${err.code}): ${err.response?.status} ${err.response?.data?.err ?? err.response?.data?.message}`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
logging_1.logger.error(`Failed to to fetch node info: ${err.message}`);
|
|
72
|
+
}
|
|
73
|
+
logging_1.logger.debug(JSON.stringify(err.response?.data));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
logging_1.logger.error(`Failed to to fetch node info: ${err}`);
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function validateProps(doc, document) {
|
|
82
|
+
if (doc.templateData && doc.templateData?.props) {
|
|
83
|
+
let propsValid = true;
|
|
84
|
+
const codeConnectProps = Object.keys(doc.templateData.props ?? {});
|
|
85
|
+
for (let i = 0; i < codeConnectProps.length; i++) {
|
|
86
|
+
const codeConnectProp = doc.templateData?.props[codeConnectProps[i]];
|
|
87
|
+
if (codeConnectProp.kind === 'children') {
|
|
88
|
+
const codeConnectLayerNames = codeConnectProp.args.layers;
|
|
89
|
+
// Get all layer names in the figma doc
|
|
90
|
+
const figmaDocLayerNames = [];
|
|
91
|
+
const getLayerNames = (layer) => {
|
|
92
|
+
if (layer.name) {
|
|
93
|
+
figmaDocLayerNames.push(layer.name);
|
|
94
|
+
}
|
|
95
|
+
if (layer.children) {
|
|
96
|
+
layer.children.forEach((child) => getLayerNames(child));
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
getLayerNames(document);
|
|
100
|
+
// And make sure that the layer names in the code connect file are present in the figma doc
|
|
101
|
+
for (const codeConnectLayerName of codeConnectLayerNames) {
|
|
102
|
+
if (!figmaDocLayerNames.includes(codeConnectLayerName)) {
|
|
103
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): The layer "${codeConnectLayerName}" does not exist on the Figma component`);
|
|
104
|
+
propsValid = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const codeConnectFigmaPropName = codeConnectProp?.args?.figmaPropName;
|
|
110
|
+
if (!document.componentPropertyDefinitions ||
|
|
111
|
+
!Object.keys(document.componentPropertyDefinitions).find((figmaProp) => propMatches(figmaProp, codeConnectFigmaPropName, document.componentPropertyDefinitions))) {
|
|
112
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): The property "${codeConnectFigmaPropName}" does not exist on the Figma component`);
|
|
113
|
+
propsValid = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (!propsValid) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
function getPropName(componentPropertyDefinitions, propName) {
|
|
123
|
+
const prop = componentPropertyDefinitions[propName];
|
|
124
|
+
if (prop.type === 'VARIANT') {
|
|
125
|
+
return propName;
|
|
126
|
+
}
|
|
127
|
+
// non Variant Keys are of the form "name#id"
|
|
128
|
+
// We have to take the last one in case the name contains #'s
|
|
129
|
+
const lastIndex = propName.lastIndexOf('#');
|
|
130
|
+
if (lastIndex !== -1) {
|
|
131
|
+
return propName.substring(0, lastIndex);
|
|
132
|
+
}
|
|
133
|
+
return propName;
|
|
134
|
+
}
|
|
135
|
+
function propMatches(figmaProp, codeConnectPropName, componentPropertyDefinitions) {
|
|
136
|
+
const figmaPropName = getPropName(componentPropertyDefinitions, figmaProp);
|
|
137
|
+
return figmaPropName === codeConnectPropName;
|
|
138
|
+
}
|
|
139
|
+
function validateVariantRestrictions(doc, document) {
|
|
140
|
+
if (doc.variant) {
|
|
141
|
+
let variantRestrictionsValid = true;
|
|
142
|
+
const codeConnectVariantRestrictions = Object.keys(doc.variant);
|
|
143
|
+
for (let i = 0; i < codeConnectVariantRestrictions.length; i++) {
|
|
144
|
+
const variantRestriction = codeConnectVariantRestrictions[i];
|
|
145
|
+
const match = Object.keys(document.componentPropertyDefinitions ?? {}).find((figmaProp) => propMatches(figmaProp, variantRestriction, document.componentPropertyDefinitions));
|
|
146
|
+
if (!match) {
|
|
147
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): The property "${variantRestriction}" does not exist on the Figma component`);
|
|
148
|
+
variantRestrictionsValid = false;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const variantRestrictionValue = doc.variant[variantRestriction];
|
|
152
|
+
const variantOrProp = document.componentPropertyDefinitions[match];
|
|
153
|
+
// Only check `variantOptions` for Variants, and not for props, since props
|
|
154
|
+
// don't have a set of possible values we can check against
|
|
155
|
+
if (variantOrProp.type === 'VARIANT' &&
|
|
156
|
+
!variantOrProp.variantOptions?.includes(variantRestrictionValue)) {
|
|
157
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): The Figma Variant "${match}" does not have an option for ${variantRestrictionValue}`);
|
|
158
|
+
variantRestrictionsValid = false;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (!variantRestrictionsValid) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
function validateDoc(doc, figmaNode, nodeId) {
|
|
169
|
+
if (!figmaNode || !figmaNode.document) {
|
|
170
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): node not found in file`);
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
const document = figmaNode.document;
|
|
174
|
+
if (document.type !== 'COMPONENT' && document.type !== 'COMPONENT_SET') {
|
|
175
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): corresponding node is not a component or component set`);
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
const component = figmaNode.components[nodeId];
|
|
179
|
+
if (component && component.componentSetId) {
|
|
180
|
+
logging_1.logger.error(`Validation failed for ${doc.component} (${doc.figmaNode}): node is not a top level component or component set. Please check that the node is not a variant`);
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
const propsValid = validateProps(doc, document);
|
|
184
|
+
if (!propsValid) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
const variantRestrictionsValid = validateVariantRestrictions(doc, document);
|
|
188
|
+
if (!variantRestrictionsValid) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
async function validateDocs(accessToken, docs) {
|
|
194
|
+
let baseApiUrl = (0, figma_rest_api_1.getApiUrl)(docs?.[0]?.figmaNode ?? '') + '/files/';
|
|
195
|
+
const fileKeyToNodeIds = {};
|
|
196
|
+
let valid = true;
|
|
197
|
+
docs.forEach((doc) => {
|
|
198
|
+
const parsedNode = parseFigmaNode(doc);
|
|
199
|
+
if (!parsedNode) {
|
|
200
|
+
valid = false;
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
fileKeyToNodeIds[parsedNode.fileKey] ||= {};
|
|
204
|
+
fileKeyToNodeIds[parsedNode.fileKey][parsedNode.nodeId] ||= [];
|
|
205
|
+
fileKeyToNodeIds[parsedNode.fileKey][parsedNode.nodeId].push(doc);
|
|
206
|
+
});
|
|
207
|
+
if (!valid) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
logging_1.logger.debug('fileKeyToNodeIds');
|
|
211
|
+
logging_1.logger.debug(JSON.stringify(fileKeyToNodeIds, null, 2));
|
|
212
|
+
const fileKeys = Object.keys(fileKeyToNodeIds);
|
|
213
|
+
for (let i = 0; i < fileKeys.length; i++) {
|
|
214
|
+
const fileKey = fileKeys[i];
|
|
215
|
+
logging_1.logger.debug(`Validating file ${fileKey}`);
|
|
216
|
+
const nodeMap = fileKeyToNodeIds[fileKey];
|
|
217
|
+
const nodeIds = Object.keys(nodeMap);
|
|
218
|
+
logging_1.logger.debug(`Validating ${nodeIds.length} nodes`);
|
|
219
|
+
const chunks = (0, lodash_1.chunk)(nodeIds, 400);
|
|
220
|
+
for (let batch = 0; batch < chunks.length; batch++) {
|
|
221
|
+
const nodeIdsChunk = chunks[batch];
|
|
222
|
+
logging_1.logger.debug(`Running for ${baseApiUrl + fileKey + '/nodes?ids=' + nodeIdsChunk.join(',')}`);
|
|
223
|
+
const nodeMapRet = await fetchNodeInfo(baseApiUrl, fileKey, nodeIdsChunk, accessToken);
|
|
224
|
+
if (!nodeMapRet) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
valid =
|
|
228
|
+
valid &&
|
|
229
|
+
nodeIdsChunk
|
|
230
|
+
.map((nodeId) => {
|
|
231
|
+
return nodeMap[nodeId]
|
|
232
|
+
.map((doc) => validateDoc(doc, nodeMapRet[nodeId], nodeId))
|
|
233
|
+
.every(Boolean);
|
|
234
|
+
})
|
|
235
|
+
.every(Boolean);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return valid;
|
|
239
|
+
}
|
|
240
|
+
exports.validateDocs = validateDocs;
|
|
241
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/connect/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FigmaConnectAPI } from './common/api';
|
|
2
|
+
import * as StorybookTypes from './storybook/external';
|
|
3
|
+
declare const _figma: FigmaConnectAPI;
|
|
4
|
+
export { _figma as figma };
|
|
5
|
+
export default _figma;
|
|
6
|
+
export type StoryParameters<T = {}> = StorybookTypes.StoryParameters<T>;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAA;AAEtD,QAAA,MAAM,MAAM,EAAE,eAAuB,CAAA;AAErC,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAA;AAC1B,eAAe,MAAM,CAAA;AAErB,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.figma = void 0;
|
|
27
|
+
const figma = __importStar(require("./common/external"));
|
|
28
|
+
const _figma = figma;
|
|
29
|
+
exports.figma = _figma;
|
|
30
|
+
exports.default = _figma;
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yDAA0C;AAG1C,MAAM,MAAM,GAAoB,KAAK,CAAA;AAElB,uBAAK;AACxB,kBAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProjectInfo } from '../common/project';
|
|
2
|
+
import { FigmaConnectJSON } from '../common/figma_connect';
|
|
3
|
+
interface ConvertStorybookFilesArgs {
|
|
4
|
+
/**
|
|
5
|
+
* Optionally override the glob used to find stories. This is currently not
|
|
6
|
+
* exposed in the config, but is used by the tests
|
|
7
|
+
*/
|
|
8
|
+
storiesGlob?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Information about the project
|
|
11
|
+
*/
|
|
12
|
+
projectInfo: ProjectInfo;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Converts all Storyboook files in a directory into Figmadoc objects. If a file
|
|
16
|
+
* cannot be converted (e.g. unsupported syntax), it is ignored and an error is
|
|
17
|
+
* logged.
|
|
18
|
+
*
|
|
19
|
+
* @param args
|
|
20
|
+
* @returns An array of Figmadoc objects
|
|
21
|
+
*/
|
|
22
|
+
export declare function convertStorybookFiles({ projectInfo, storiesGlob, }: ConvertStorybookFilesArgs): Promise<FigmaConnectJSON[]>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/storybook/convert.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,WAAW,EAAoB,MAAM,mBAAmB,CAAA;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAK1D,UAAU,yBAAyB;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,WAAW,EACX,WAAgC,GACjC,EAAE,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAWzD"}
|