@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.
Files changed (83) hide show
  1. package/README.md +449 -0
  2. package/bin/figma +5 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +41 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/connect.d.ts +3 -0
  8. package/dist/commands/connect.d.ts.map +1 -0
  9. package/dist/commands/connect.js +214 -0
  10. package/dist/commands/connect.js.map +1 -0
  11. package/dist/common/api.d.ts +146 -0
  12. package/dist/common/api.d.ts.map +1 -0
  13. package/dist/common/api.js +3 -0
  14. package/dist/common/api.js.map +1 -0
  15. package/dist/common/compiler.d.ts +96 -0
  16. package/dist/common/compiler.d.ts.map +1 -0
  17. package/dist/common/compiler.js +281 -0
  18. package/dist/common/compiler.js.map +1 -0
  19. package/dist/common/external.d.ts +10 -0
  20. package/dist/common/external.d.ts.map +1 -0
  21. package/dist/common/external.js +53 -0
  22. package/dist/common/external.js.map +1 -0
  23. package/dist/common/figma_connect.d.ts +24 -0
  24. package/dist/common/figma_connect.d.ts.map +1 -0
  25. package/dist/common/figma_connect.js +3 -0
  26. package/dist/common/figma_connect.js.map +1 -0
  27. package/dist/common/intrinsics.d.ts +61 -0
  28. package/dist/common/intrinsics.d.ts.map +1 -0
  29. package/dist/common/intrinsics.js +239 -0
  30. package/dist/common/intrinsics.js.map +1 -0
  31. package/dist/common/logging.d.ts +25 -0
  32. package/dist/common/logging.d.ts.map +1 -0
  33. package/dist/common/logging.js +47 -0
  34. package/dist/common/logging.js.map +1 -0
  35. package/dist/common/parser.d.ts +77 -0
  36. package/dist/common/parser.d.ts.map +1 -0
  37. package/dist/common/parser.js +736 -0
  38. package/dist/common/parser.js.map +1 -0
  39. package/dist/common/parser_template_helpers.d.ts +2 -0
  40. package/dist/common/parser_template_helpers.d.ts.map +1 -0
  41. package/dist/common/parser_template_helpers.js +53 -0
  42. package/dist/common/parser_template_helpers.js.map +1 -0
  43. package/dist/common/project.d.ts +79 -0
  44. package/dist/common/project.d.ts.map +1 -0
  45. package/dist/common/project.js +171 -0
  46. package/dist/common/project.js.map +1 -0
  47. package/dist/connect/create.d.ts +8 -0
  48. package/dist/connect/create.d.ts.map +1 -0
  49. package/dist/connect/create.js +162 -0
  50. package/dist/connect/create.js.map +1 -0
  51. package/dist/connect/delete_docs.d.ts +11 -0
  52. package/dist/connect/delete_docs.d.ts.map +1 -0
  53. package/dist/connect/delete_docs.js +60 -0
  54. package/dist/connect/delete_docs.js.map +1 -0
  55. package/dist/connect/figma_rest_api.d.ts +28 -0
  56. package/dist/connect/figma_rest_api.d.ts.map +1 -0
  57. package/dist/connect/figma_rest_api.js +19 -0
  58. package/dist/connect/figma_rest_api.js.map +1 -0
  59. package/dist/connect/helpers.d.ts +13 -0
  60. package/dist/connect/helpers.d.ts.map +1 -0
  61. package/dist/connect/helpers.js +87 -0
  62. package/dist/connect/helpers.js.map +1 -0
  63. package/dist/connect/upload.d.ts +8 -0
  64. package/dist/connect/upload.d.ts.map +1 -0
  65. package/dist/connect/upload.js +62 -0
  66. package/dist/connect/upload.js.map +1 -0
  67. package/dist/connect/validation.d.ts +3 -0
  68. package/dist/connect/validation.d.ts.map +1 -0
  69. package/dist/connect/validation.js +241 -0
  70. package/dist/connect/validation.js.map +1 -0
  71. package/dist/index.d.ts +7 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +31 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/storybook/convert.d.ts +24 -0
  76. package/dist/storybook/convert.d.ts.map +1 -0
  77. package/dist/storybook/convert.js +280 -0
  78. package/dist/storybook/convert.js.map +1 -0
  79. package/dist/storybook/external.d.ts +32 -0
  80. package/dist/storybook/external.d.ts.map +1 -0
  81. package/dist/storybook/external.js +3 -0
  82. package/dist/storybook/external.js.map +1 -0
  83. package/package.json +56 -0
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.stripQuotes = exports.getTagName = exports.convertObjectLiteralToJs = exports.assertIsIdentifier = exports.assertIsObjectLiteralExpression = exports.assertIsArrayLiteralExpression = exports.assertIsStringLiteral = exports.assertIsPropertyAssignment = exports.parseFunctionArgument = exports.isOneOf = exports.parsePropertyOfType = exports.bfsFindNode = exports.getDefaultExport = void 0;
7
+ const typescript_1 = __importDefault(require("typescript"));
8
+ const parser_1 = require("./parser");
9
+ /**
10
+ * Get the default export from a TypeScript source file
11
+ *
12
+ * @param sourceFile TypeScript source file
13
+ * @returns The default export Expression, or undefined if there is no default export
14
+ */
15
+ function getDefaultExport(sourceFile) {
16
+ for (const statement of sourceFile.statements) {
17
+ if (typescript_1.default.isExportAssignment(statement)) {
18
+ return statement.expression;
19
+ }
20
+ }
21
+ }
22
+ exports.getDefaultExport = getDefaultExport;
23
+ /**
24
+ * Perform a breadth-first search to find the first node matching a predicate
25
+ *
26
+ * @param node Node to start the search from
27
+ * @param tsSourceFile SourceFile associated with the node
28
+ * @param predicate Predicate to match
29
+ * @returns The first node matching the predicate, or undefined if no node is found
30
+ */
31
+ function bfsFindNode(node, tsSourceFile, predicate) {
32
+ const queue = [node];
33
+ while (queue.length > 0) {
34
+ node = queue.shift();
35
+ if (predicate(node)) {
36
+ return node;
37
+ }
38
+ if (node && node.getChildCount(tsSourceFile) > 0) {
39
+ queue.push(...node.getChildren(tsSourceFile));
40
+ }
41
+ }
42
+ }
43
+ exports.bfsFindNode = bfsFindNode;
44
+ function parsePropertyOfType({ objectLiteralNode, propertyName, predicate, parserContext, required = false, errorMessage, }) {
45
+ const { sourceFile, checker } = parserContext;
46
+ const node = objectLiteralNode.properties.find((property) => property.name?.getText() === propertyName);
47
+ if (!node) {
48
+ if (!required) {
49
+ return undefined;
50
+ }
51
+ else {
52
+ throw new parser_1.ParserError(`Expected property '${propertyName}' to be present`, {
53
+ sourceFile,
54
+ node: objectLiteralNode,
55
+ });
56
+ }
57
+ }
58
+ let initializer;
59
+ if (typescript_1.default.isPropertyAssignment(node)) {
60
+ if (typescript_1.default.isIdentifier(node.initializer)) {
61
+ const symbol = checker.getSymbolAtLocation(node.initializer);
62
+ if (symbol) {
63
+ const decl = symbol.valueDeclaration;
64
+ if (decl && typescript_1.default.isVariableDeclaration(decl) && decl.initializer) {
65
+ initializer = decl.initializer;
66
+ }
67
+ }
68
+ }
69
+ else {
70
+ initializer = node.initializer;
71
+ }
72
+ }
73
+ if (typescript_1.default.isShorthandPropertyAssignment(node)) {
74
+ const symbol = checker.getShorthandAssignmentValueSymbol(node);
75
+ if (!symbol || !symbol.valueDeclaration || !typescript_1.default.isVariableDeclaration(symbol.valueDeclaration)) {
76
+ throw new parser_1.ParserError('Expected shorthand property to be declared in the same file', {
77
+ sourceFile,
78
+ node,
79
+ });
80
+ }
81
+ initializer = symbol.valueDeclaration.initializer;
82
+ }
83
+ if (!initializer) {
84
+ throw new parser_1.ParserError(`Expected property ${propertyName} to be a property assignment`, {
85
+ sourceFile,
86
+ node,
87
+ });
88
+ }
89
+ // Unwrap `as Type` or `satisfies Type` expressions
90
+ if (typescript_1.default.isAsExpression(initializer) || typescript_1.default.isSatisfiesExpression(initializer)) {
91
+ initializer = initializer.expression;
92
+ }
93
+ if (!predicate(initializer)) {
94
+ throw new parser_1.ParserError(errorMessage ??
95
+ `Unexpected shape of property ${propertyName}, got node type: ${typescript_1.default.SyntaxKind[initializer.kind]}`, {
96
+ sourceFile,
97
+ node: initializer,
98
+ });
99
+ }
100
+ return initializer;
101
+ }
102
+ exports.parsePropertyOfType = parsePropertyOfType;
103
+ function isOneOf(guards) {
104
+ return function (arg) {
105
+ return guards.some(function (predicate) {
106
+ return predicate(arg);
107
+ });
108
+ };
109
+ }
110
+ exports.isOneOf = isOneOf;
111
+ /**
112
+ * Gets a function argument with the specified index from a call expression node
113
+ *
114
+ * @param fn The call expression node potentially containing the argument
115
+ * @param parserContext The parser context
116
+ * @param index The index of the argument to get
117
+ * @param predicate Predicate to match
118
+ * @param required Whether the argument is required. Defaults to false.
119
+ * @param errorMessage Optional error message to throw if the argument is not found
120
+ * @returns
121
+ */
122
+ function parseFunctionArgument(fn, parserContext, index, predicate, required = false, errorMessage) {
123
+ const { sourceFile, checker } = parserContext;
124
+ if (fn.arguments.length <= index && !required) {
125
+ return undefined;
126
+ }
127
+ if (fn.arguments.length <= index) {
128
+ throw new parser_1.ParserError(errorMessage ?? `Expected function to have at least ${index + 1} arguments`, {
129
+ sourceFile,
130
+ node: fn,
131
+ });
132
+ }
133
+ const arg = fn.arguments[index];
134
+ if (!arg || !predicate(arg)) {
135
+ throw new parser_1.ParserError(errorMessage ?? `Unexpected shape of argument ${index}`, {
136
+ sourceFile,
137
+ node: fn.arguments[index],
138
+ });
139
+ }
140
+ return arg;
141
+ }
142
+ exports.parseFunctionArgument = parseFunctionArgument;
143
+ function assertIsPropertyAssignment(node, sourceFile) {
144
+ if (!typescript_1.default.isPropertyAssignment(node)) {
145
+ throw new parser_1.ParserError(`Expected a property assignment, got ${typescript_1.default.SyntaxKind[node.kind]}`, {
146
+ node,
147
+ sourceFile,
148
+ });
149
+ }
150
+ }
151
+ exports.assertIsPropertyAssignment = assertIsPropertyAssignment;
152
+ function assertIsStringLiteral(node, sourceFile, msg) {
153
+ if (!typescript_1.default.isStringLiteral(node)) {
154
+ throw new parser_1.ParserError(msg ?? `Expected a string literal, got ${typescript_1.default.SyntaxKind[node.kind]}`, {
155
+ node,
156
+ sourceFile,
157
+ });
158
+ }
159
+ }
160
+ exports.assertIsStringLiteral = assertIsStringLiteral;
161
+ function assertIsArrayLiteralExpression(node, sourceFile, msg) {
162
+ if (!typescript_1.default.isArrayLiteralExpression(node)) {
163
+ throw new parser_1.ParserError(msg ?? `Expected an array literal, got ${typescript_1.default.SyntaxKind[node.kind]}`, {
164
+ node,
165
+ sourceFile,
166
+ });
167
+ }
168
+ }
169
+ exports.assertIsArrayLiteralExpression = assertIsArrayLiteralExpression;
170
+ function assertIsObjectLiteralExpression(node, sourceFile, msg) {
171
+ if (!typescript_1.default.isObjectLiteralExpression(node)) {
172
+ throw new parser_1.ParserError(msg ?? `Expected an object literal, got ${typescript_1.default.SyntaxKind[node.kind]}`, {
173
+ node,
174
+ sourceFile,
175
+ });
176
+ }
177
+ }
178
+ exports.assertIsObjectLiteralExpression = assertIsObjectLiteralExpression;
179
+ function assertIsIdentifier(node, sourceFile, msg) {
180
+ if (!typescript_1.default.isIdentifier(node)) {
181
+ throw new parser_1.ParserError(msg ?? `Expected an identifier, got ${typescript_1.default.SyntaxKind[node.kind]}`, {
182
+ node,
183
+ sourceFile,
184
+ });
185
+ }
186
+ }
187
+ exports.assertIsIdentifier = assertIsIdentifier;
188
+ /**
189
+ * Convert an object literal node to a JavaScript object
190
+ *
191
+ * @param objectLiteral The object literal node to convert
192
+ * @param sourceFile The source file containing the object literal
193
+ * @param extraConversionFn Optional function to convert a node to a value. This
194
+ * runs before the default conversion. If this returns undefined, the default
195
+ * conversion will be used. (This does mean there's no way to return undefined)
196
+ * @returns The JavaScript object version of the object literal
197
+ */
198
+ function convertObjectLiteralToJs(objectLiteral, sourceFile, checker, extraConversionFn) {
199
+ const obj = {};
200
+ const properties = [...objectLiteral.properties];
201
+ while (properties.length > 0) {
202
+ const prop = properties.shift();
203
+ // If the value is a spread assignment, we need to resolve the object it's spreading
204
+ // and add its properties to the current object
205
+ if (typescript_1.default.isSpreadAssignment(prop)) {
206
+ const declaration = bfsFindNode(sourceFile, sourceFile, (node) => {
207
+ return typescript_1.default.isVariableDeclaration(node) && node.name.getText() === prop.expression.getText();
208
+ });
209
+ if (!declaration.initializer || !typescript_1.default.isObjectLiteralExpression(declaration.initializer)) {
210
+ throw new parser_1.ParserError('Expected spread object to be an object literal', {
211
+ sourceFile,
212
+ node: prop,
213
+ });
214
+ }
215
+ for (const prop of declaration.initializer.properties) {
216
+ properties.push(prop);
217
+ }
218
+ continue;
219
+ }
220
+ assertIsPropertyAssignment(prop, sourceFile);
221
+ if (!typescript_1.default.isIdentifier(prop.name) && !typescript_1.default.isStringLiteral(prop.name)) {
222
+ throw new parser_1.ParserError('Expected property key to be an identifier or String Literal', {
223
+ sourceFile,
224
+ node: prop,
225
+ });
226
+ }
227
+ const key = prop.name.text;
228
+ const valueNode = prop.initializer;
229
+ const extraConversionResult = extraConversionFn && extraConversionFn(valueNode);
230
+ if (extraConversionResult !== undefined) {
231
+ obj[key] = extraConversionResult;
232
+ }
233
+ else if (typescript_1.default.isObjectLiteralExpression(valueNode)) {
234
+ // A prop mapping to an object literal, which maps each figma value to a code value
235
+ obj[key] = convertObjectLiteralToJs(valueNode, sourceFile, checker, extraConversionFn);
236
+ }
237
+ else {
238
+ // A prop mapping to anything else, which will be passed as a literal value
239
+ if (typescript_1.default.isStringLiteral(valueNode)) {
240
+ // Accessing `text` directly prevents the value being wrapped in quotes
241
+ obj[key] = valueNode.text;
242
+ }
243
+ else if (valueNode.kind === typescript_1.default.SyntaxKind.TrueKeyword) {
244
+ obj[key] = true;
245
+ }
246
+ else if (valueNode.kind === typescript_1.default.SyntaxKind.FalseKeyword) {
247
+ obj[key] = false;
248
+ // undefined is not a keyword in TypeScript, but actually translates to an identifier
249
+ // (even though confusingly ts.SyntaxKind.UndefinedKeyword exists)
250
+ }
251
+ else if (typescript_1.default.isIdentifier(valueNode) && valueNode.text === 'undefined') {
252
+ obj[key] = undefined;
253
+ }
254
+ else if (valueNode.kind === typescript_1.default.SyntaxKind.NullKeyword) {
255
+ obj[key] = null;
256
+ }
257
+ else {
258
+ obj[key] = valueNode.getText();
259
+ }
260
+ }
261
+ }
262
+ return obj;
263
+ }
264
+ exports.convertObjectLiteralToJs = convertObjectLiteralToJs;
265
+ function getTagName(element) {
266
+ if (typescript_1.default.isJsxSelfClosingElement(element)) {
267
+ return element.tagName.getText();
268
+ }
269
+ else {
270
+ return element.openingElement.tagName.getText();
271
+ }
272
+ }
273
+ exports.getTagName = getTagName;
274
+ function stripQuotes(node) {
275
+ if (node.text.startsWith('"') || node.text.startsWith("'")) {
276
+ return node.text.substring(1, -1);
277
+ }
278
+ return node.text;
279
+ }
280
+ exports.stripQuotes = stripQuotes;
281
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/common/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { FigmaConnectMeta, PropMapping, ValueOf } from './api';
2
+ import * as React from 'react';
3
+ declare function connectType<P = {}>(_component: any, _figmaNodeUrl: string, _meta?: FigmaConnectMeta<P>): void;
4
+ declare function booleanType(_figmaPropName: string): boolean;
5
+ declare function enumType<V extends string | boolean | number | symbol | undefined | JSX.Element>(_figmaPropName: string, _valueMapping: PropMapping<Record<string, V>>): ValueOf<Record<string, V>>;
6
+ declare function stringType(_figmaPropName: string): string;
7
+ declare function instanceType(_figmaPropName: string): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
8
+ declare function childrenType(_layers: string | string[]): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
9
+ export { connectType as connect, booleanType as boolean, enumType as enum, stringType as string, instanceType as instance, childrenType as children, };
10
+ //# sourceMappingURL=external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/common/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,iBAAS,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAI;AAEpG,iBAAS,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAA;AAWrD,iBAAS,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,OAAO,EACtF,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAE5B;AAED,iBAAS,UAAU,CAAC,cAAc,EAAE,MAAM,UAEzC;AAED,iBAAS,YAAY,CAAC,cAAc,EAAE,MAAM,kFAE3C;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,kFAE/C;AAED,OAAO,EACL,WAAW,IAAI,OAAO,EACtB,WAAW,IAAI,OAAO,EACtB,QAAQ,IAAI,IAAI,EAChB,UAAU,IAAI,MAAM,EACpB,YAAY,IAAI,QAAQ,EACxB,YAAY,IAAI,QAAQ,GACzB,CAAA"}
@@ -0,0 +1,53 @@
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.children = exports.instance = exports.string = exports.enum = exports.boolean = exports.connect = void 0;
27
+ const React = __importStar(require("react"));
28
+ function connectType(_component, _figmaNodeUrl, _meta) { }
29
+ exports.connect = connectType;
30
+ function booleanType(_figmaPropName, _valueMapping) {
31
+ if (_valueMapping) {
32
+ return enumType(_figmaPropName, _valueMapping);
33
+ }
34
+ return true;
35
+ }
36
+ exports.boolean = booleanType;
37
+ function enumType(_figmaPropName, _valueMapping) {
38
+ return Object.values(_valueMapping)[0];
39
+ }
40
+ exports.enum = enumType;
41
+ function stringType(_figmaPropName) {
42
+ return '';
43
+ }
44
+ exports.string = stringType;
45
+ function instanceType(_figmaPropName) {
46
+ return React.createElement('div');
47
+ }
48
+ exports.instance = instanceType;
49
+ function childrenType(_layers) {
50
+ return React.createElement('div');
51
+ }
52
+ exports.children = childrenType;
53
+ //# sourceMappingURL=external.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/common/external.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA8B;AAE9B,SAAS,WAAW,CAAS,UAAe,EAAE,aAAqB,EAAE,KAA2B,IAAG,CAAC;AAiCnF,8BAAO;AA9BxB,SAAS,WAAW,CAClB,cAAsB,EACtB,aAA2C;IAE3C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAI,cAAc,EAAE,aAAa,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAuBgB,8BAAO;AArBxB,SAAS,QAAQ,CACf,cAAsB,EACtB,aAA6C;IAE7C,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAA+B,CAAA;AACtE,CAAC;AAiBa,wBAAI;AAflB,SAAS,UAAU,CAAC,cAAsB;IACxC,OAAO,EAAE,CAAA;AACX,CAAC;AAce,4BAAM;AAZtB,SAAS,YAAY,CAAC,cAAsB;IAC1C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAWiB,gCAAQ;AAT1B,SAAS,YAAY,CAAC,OAA0B;IAC9C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAQiB,gCAAQ"}
@@ -0,0 +1,24 @@
1
+ import { FigmaConnectLink } from './api';
2
+ import { Intrinsic } from './intrinsics';
3
+ export interface FigmaConnectJSON {
4
+ figmaNode: string;
5
+ component: string;
6
+ variant?: Record<string, any>;
7
+ source: string;
8
+ sourceLocation: {
9
+ line: number;
10
+ };
11
+ template: string;
12
+ templateData: {
13
+ props: Record<string, Intrinsic> | undefined;
14
+ imports?: string[];
15
+ nestable?: boolean;
16
+ };
17
+ language: 'typescript';
18
+ label: string;
19
+ links?: FigmaConnectLink[];
20
+ metadata: {
21
+ cliVersion: string;
22
+ };
23
+ }
24
+ //# sourceMappingURL=figma_connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma_connect.d.ts","sourceRoot":"","sources":["../../src/common/figma_connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;QAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC1B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=figma_connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma_connect.js","sourceRoot":"","sources":["../../src/common/figma_connect.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ /// <reference types="react" />
2
+ import * as ts from 'typescript';
3
+ import { ParserContext } from './parser';
4
+ export declare const API_PREFIX = "figma";
5
+ export declare const FIGMA_CONNECT_CALL = "figma.connect";
6
+ export declare enum IntrinsicKind {
7
+ Enum = "enum",
8
+ String = "string",
9
+ Boolean = "boolean",
10
+ Instance = "instance",
11
+ Children = "children"
12
+ }
13
+ export interface IntrinsicBase {
14
+ kind: IntrinsicKind;
15
+ args: {};
16
+ }
17
+ export type ValueMappingKind = string | boolean | number | undefined | JSX.Element | Intrinsic;
18
+ export interface FigmaBoolean extends IntrinsicBase {
19
+ kind: IntrinsicKind.Boolean;
20
+ args: {
21
+ figmaPropName: string;
22
+ valueMapping?: Record<'true' | 'false', ValueMappingKind>;
23
+ };
24
+ }
25
+ export interface FigmaEnum extends IntrinsicBase {
26
+ kind: IntrinsicKind.Enum;
27
+ args: {
28
+ figmaPropName: string;
29
+ valueMapping: Record<string, ValueMappingKind>;
30
+ };
31
+ }
32
+ export interface FigmaString extends IntrinsicBase {
33
+ kind: IntrinsicKind.String;
34
+ args: {
35
+ figmaPropName: string;
36
+ };
37
+ }
38
+ export interface FigmaInstance extends IntrinsicBase {
39
+ kind: IntrinsicKind.Instance;
40
+ args: {
41
+ figmaPropName: string;
42
+ };
43
+ }
44
+ export interface FigmaChildren extends IntrinsicBase {
45
+ kind: IntrinsicKind.Children;
46
+ args: {
47
+ layers: string[];
48
+ };
49
+ }
50
+ export type Intrinsic = FigmaBoolean | FigmaEnum | FigmaString | FigmaInstance | FigmaChildren;
51
+ /**
52
+ * Parses a call expression to an intrinsic
53
+ *
54
+ * @param exp Expression to parse
55
+ * @param parserContext parser context
56
+ * @returns
57
+ */
58
+ export declare function parseIntrinsic(exp: ts.CallExpression, parserContext: ParserContext): Intrinsic;
59
+ export declare function valueMappingToString(valueMapping: Record<string, ValueMappingKind>): string;
60
+ export declare function intrinsicToString({ kind, args }: Intrinsic): string;
61
+ //# sourceMappingURL=intrinsics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/common/intrinsics.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAiB,aAAa,EAAe,MAAM,UAAU,CAAA;AAMpE,eAAO,MAAM,UAAU,UAAU,CAAA;AACjC,eAAO,MAAM,kBAAkB,kBAA0B,CAAA;AAEzD,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,EAAE,CAAA;CACT;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,OAAO,GAAG,SAAS,CAAA;AAE9F,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAE,aAAa,CAAC,OAAO,CAAA;IAC3B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAA;KAC1D,CAAA;CACF;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,IAAI,EAAE,aAAa,CAAC,IAAI,CAAA;IACxB,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;KAC/C,CAAA;CACF;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,IAAI,EAAE,aAAa,CAAC,MAAM,CAAA;IAC1B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;CACF;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,CAAA;AA6K9F;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,CAW9F;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAmB3F;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,MAAM,CA+BnE"}