@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,239 @@
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.intrinsicToString = exports.valueMappingToString = exports.parseIntrinsic = exports.IntrinsicKind = exports.FIGMA_CONNECT_CALL = exports.API_PREFIX = void 0;
27
+ const ts = __importStar(require("typescript"));
28
+ const parser_1 = require("./parser");
29
+ const compiler_1 = require("./compiler");
30
+ const compiler_2 = require("./compiler");
31
+ const compiler_3 = require("./compiler");
32
+ exports.API_PREFIX = 'figma';
33
+ exports.FIGMA_CONNECT_CALL = `${exports.API_PREFIX}.connect`;
34
+ var IntrinsicKind;
35
+ (function (IntrinsicKind) {
36
+ IntrinsicKind["Enum"] = "enum";
37
+ IntrinsicKind["String"] = "string";
38
+ IntrinsicKind["Boolean"] = "boolean";
39
+ IntrinsicKind["Instance"] = "instance";
40
+ IntrinsicKind["Children"] = "children";
41
+ })(IntrinsicKind || (exports.IntrinsicKind = IntrinsicKind = {}));
42
+ const Intrinsics = {};
43
+ /**
44
+ * These functions are used to convert "intrinsic" parser types (which are calls to helper functions
45
+ * like `Figma.boolean() in code)` to an object representing that intrinsic that we can serialize to JSON.
46
+ *
47
+ * Each call to `makeIntrinsic` should take a function from the {@link FigmaConnectAPI},
48
+ * ensuring that the name of the intrinsic that we're parsing matches the name of the function
49
+ *
50
+ * @param staticFunctionMember
51
+ * @param obj
52
+ */
53
+ function makeIntrinsic(intrinsicName, obj) {
54
+ const name = `${exports.API_PREFIX}.${intrinsicName}`;
55
+ Intrinsics[name] = {
56
+ match: (exp) => ts.isCallExpression(exp) && exp.getText().includes(name),
57
+ ...obj(name),
58
+ };
59
+ }
60
+ makeIntrinsic('boolean', (name) => {
61
+ return {
62
+ parse: (exp, ctx) => {
63
+ const figmaPropNameIdentifier = exp.arguments?.[0];
64
+ (0, compiler_1.assertIsStringLiteral)(figmaPropNameIdentifier, ctx.sourceFile, `${name} takes at least one argument, which is the Figma property name`);
65
+ const valueMappingArg = exp.arguments?.[1];
66
+ let valueMapping;
67
+ if (valueMappingArg) {
68
+ (0, compiler_3.assertIsObjectLiteralExpression)(valueMappingArg, ctx.sourceFile, `${name} second argument should be an object literal, that sets values for 'true' and 'false'`);
69
+ valueMapping = (0, compiler_2.convertObjectLiteralToJs)(valueMappingArg, ctx.sourceFile, ctx.checker, (valueNode) => {
70
+ if (ts.isCallExpression(valueNode)) {
71
+ return parseIntrinsic(valueNode, ctx);
72
+ }
73
+ });
74
+ }
75
+ return {
76
+ kind: IntrinsicKind.Boolean,
77
+ args: {
78
+ figmaPropName: (0, compiler_1.stripQuotes)(figmaPropNameIdentifier),
79
+ valueMapping,
80
+ },
81
+ };
82
+ },
83
+ };
84
+ });
85
+ makeIntrinsic('enum', (name) => {
86
+ return {
87
+ parse: (exp, ctx) => {
88
+ const { sourceFile, checker } = ctx;
89
+ const figmaPropNameIdentifier = exp.arguments?.[0];
90
+ (0, compiler_1.assertIsStringLiteral)(figmaPropNameIdentifier, sourceFile, `${name} takes at least one argument, which is the Figma property name`);
91
+ const valueMapping = exp.arguments?.[1];
92
+ (0, compiler_3.assertIsObjectLiteralExpression)(valueMapping, sourceFile, `${name} second argument should be an object literal, that maps Figma prop values to code`);
93
+ return {
94
+ kind: IntrinsicKind.Enum,
95
+ args: {
96
+ figmaPropName: (0, compiler_1.stripQuotes)(figmaPropNameIdentifier),
97
+ valueMapping: (0, compiler_2.convertObjectLiteralToJs)(valueMapping, sourceFile, checker, (valueNode) => {
98
+ if (ts.isCallExpression(valueNode)) {
99
+ return parseIntrinsic(valueNode, ctx);
100
+ }
101
+ }),
102
+ },
103
+ };
104
+ },
105
+ };
106
+ });
107
+ makeIntrinsic('string', (name) => {
108
+ return {
109
+ parse: (exp, ctx) => {
110
+ const { sourceFile } = ctx;
111
+ const figmaPropNameIdentifier = exp.arguments?.[0];
112
+ (0, compiler_1.assertIsStringLiteral)(figmaPropNameIdentifier, sourceFile, `${name} takes at least one argument, which is the Figma property name`);
113
+ return {
114
+ kind: IntrinsicKind.String,
115
+ args: {
116
+ figmaPropName: (0, compiler_1.stripQuotes)(figmaPropNameIdentifier),
117
+ },
118
+ };
119
+ },
120
+ };
121
+ });
122
+ makeIntrinsic('instance', (name) => {
123
+ return {
124
+ parse: (exp, ctx) => {
125
+ const { sourceFile } = ctx;
126
+ const figmaPropNameIdentifier = exp.arguments?.[0];
127
+ (0, compiler_1.assertIsStringLiteral)(figmaPropNameIdentifier, sourceFile, `${name} takes at least one argument, which is the Figma property name`);
128
+ return {
129
+ kind: IntrinsicKind.Instance,
130
+ args: {
131
+ figmaPropName: (0, compiler_1.stripQuotes)(figmaPropNameIdentifier),
132
+ },
133
+ };
134
+ },
135
+ };
136
+ });
137
+ makeIntrinsic('children', (name) => {
138
+ return {
139
+ parse: (exp, ctx) => {
140
+ const { sourceFile } = ctx;
141
+ const layerName = exp.arguments?.[0];
142
+ const layers = [];
143
+ if (ts.isStringLiteral(layerName)) {
144
+ layers.push((0, compiler_1.stripQuotes)(layerName));
145
+ }
146
+ else if (ts.isArrayLiteralExpression(layerName) && layerName.elements.length > 0) {
147
+ layerName.elements.forEach((el) => {
148
+ (0, compiler_1.assertIsStringLiteral)(el, sourceFile);
149
+ layers.push((0, compiler_1.stripQuotes)(el));
150
+ });
151
+ }
152
+ else {
153
+ throw new parser_1.ParserError(`Invalid argument to ${name}, should be a string literal or an array of strings`, {
154
+ node: layerName,
155
+ sourceFile,
156
+ });
157
+ }
158
+ return {
159
+ kind: IntrinsicKind.Children,
160
+ args: {
161
+ layers,
162
+ },
163
+ };
164
+ },
165
+ };
166
+ });
167
+ /**
168
+ * Parses a call expression to an intrinsic
169
+ *
170
+ * @param exp Expression to parse
171
+ * @param parserContext parser context
172
+ * @returns
173
+ */
174
+ function parseIntrinsic(exp, parserContext) {
175
+ for (const key in Intrinsics) {
176
+ if (Intrinsics[key].match(exp)) {
177
+ return Intrinsics[key].parse(exp, parserContext);
178
+ }
179
+ }
180
+ throw new parser_1.ParserError(`Unknown intrinsic: ${exp.getText()}`, {
181
+ node: exp,
182
+ sourceFile: parserContext.sourceFile,
183
+ });
184
+ }
185
+ exports.parseIntrinsic = parseIntrinsic;
186
+ function valueMappingToString(valueMapping) {
187
+ // For enums (and booleans with a valueMapping provided), convert the
188
+ // value mapping to an object.
189
+ return ('{\n' +
190
+ Object.entries(valueMapping)
191
+ .map(([key, value]) => {
192
+ if (typeof value === 'object' && 'kind' in value) {
193
+ // Mappings can be nested, e.g. an enum value can be figma.instance(...)
194
+ return `"${key}": ${intrinsicToString(value)}`;
195
+ }
196
+ else if (typeof value === 'boolean' || typeof value === 'undefined') {
197
+ return `"${key}": ${value}`;
198
+ }
199
+ else {
200
+ return `"${key}": '${value}'`;
201
+ }
202
+ })
203
+ .join(',\n') +
204
+ '}');
205
+ }
206
+ exports.valueMappingToString = valueMappingToString;
207
+ function intrinsicToString({ kind, args }) {
208
+ switch (kind) {
209
+ case IntrinsicKind.String:
210
+ case IntrinsicKind.Instance: {
211
+ // Outputs:
212
+ // `const propName = figma.properties.string('propName')`, or
213
+ // `const propName = figma.properties.boolean('propName')`, or
214
+ // `const propName = figma.properties.instance('propName')`
215
+ return `figma.properties.${kind}('${args.figmaPropName}')`;
216
+ }
217
+ case IntrinsicKind.Boolean: {
218
+ if (args.valueMapping) {
219
+ const mappingString = valueMappingToString(args.valueMapping);
220
+ // Outputs: `const propName = figma.properties.boolean('propName', { ... mapping object from above ... })`
221
+ return `figma.properties.boolean('${args.figmaPropName}', ${mappingString})`;
222
+ }
223
+ return `figma.properties.boolean('${args.figmaPropName}')`;
224
+ }
225
+ case IntrinsicKind.Enum: {
226
+ const mappingString = valueMappingToString(args.valueMapping);
227
+ // Outputs: `const propName = figma.properties.enum('propName', { ... mapping object from above ... })`
228
+ return `figma.properties.enum('${args.figmaPropName}', ${mappingString})`;
229
+ }
230
+ case IntrinsicKind.Children: {
231
+ // Outputs: `const propName = figma.properties.children(["Layer 1", "Layer 2"])`
232
+ return `figma.properties.children([${args.layers.map((layerName) => `"${layerName}"`).join(',')}])`;
233
+ }
234
+ default:
235
+ throw new parser_1.InternalError(`Unknown intrinsic: ${kind}`);
236
+ }
237
+ }
238
+ exports.intrinsicToString = intrinsicToString;
239
+ //# sourceMappingURL=intrinsics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsics.js","sourceRoot":"","sources":["../../src/common/intrinsics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import chalk from 'chalk';
2
+ export declare const error: chalk.Chalk;
3
+ export declare const success: chalk.Chalk;
4
+ export declare const info: chalk.Chalk;
5
+ export declare const warn: chalk.Chalk;
6
+ export declare const debug: chalk.Chalk;
7
+ export declare const verbose: chalk.Chalk;
8
+ export declare const highlight: chalk.Chalk;
9
+ export declare const reset: chalk.Chalk;
10
+ export declare const underline: chalk.Chalk;
11
+ export declare enum LogLevel {
12
+ Nothing = 0,
13
+ Error = 1,
14
+ Warn = 2,
15
+ Info = 3,
16
+ Debug = 4
17
+ }
18
+ export declare const logger: {
19
+ setLogLevel: (level: LogLevel) => void;
20
+ error: (...msgs: unknown[]) => void;
21
+ warn: (...msgs: unknown[]) => void;
22
+ info: (...msgs: unknown[]) => void;
23
+ debug: (...msgs: unknown[]) => void;
24
+ };
25
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/common/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAO,MAAM,KAAK,aAAY,CAAA;AAC9B,eAAO,MAAM,OAAO,aAAc,CAAA;AAClC,eAAO,MAAM,IAAI,aAAc,CAAA;AAC/B,eAAO,MAAM,IAAI,aAAe,CAAA;AAChC,eAAO,MAAM,KAAK,aAAa,CAAA;AAC/B,eAAO,MAAM,OAAO,aAAa,CAAA;AACjC,eAAO,MAAM,SAAS,aAAa,CAAA;AACnC,eAAO,MAAM,KAAK,aAAc,CAAA;AAChC,eAAO,MAAM,SAAS,aAAkB,CAAA;AAExC,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAID,eAAO,MAAM,MAAM;yBACI,QAAQ;qBAGZ,OAAO,EAAE;oBAGV,OAAO,EAAE;oBAGT,OAAO,EAAE;qBAGR,OAAO,EAAE;CAG3B,CAAA"}
@@ -0,0 +1,47 @@
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.logger = exports.LogLevel = exports.underline = exports.reset = exports.highlight = exports.verbose = exports.debug = exports.warn = exports.info = exports.success = exports.error = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ exports.error = chalk_1.default.red;
9
+ exports.success = chalk_1.default.green;
10
+ exports.info = chalk_1.default.white;
11
+ exports.warn = chalk_1.default.yellow;
12
+ exports.debug = chalk_1.default.gray;
13
+ exports.verbose = chalk_1.default.cyan;
14
+ exports.highlight = chalk_1.default.bold;
15
+ exports.reset = chalk_1.default.reset;
16
+ exports.underline = chalk_1.default.underline;
17
+ var LogLevel;
18
+ (function (LogLevel) {
19
+ LogLevel[LogLevel["Nothing"] = 0] = "Nothing";
20
+ LogLevel[LogLevel["Error"] = 1] = "Error";
21
+ LogLevel[LogLevel["Warn"] = 2] = "Warn";
22
+ LogLevel[LogLevel["Info"] = 3] = "Info";
23
+ LogLevel[LogLevel["Debug"] = 4] = "Debug";
24
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
25
+ let logLevel = LogLevel.Info;
26
+ exports.logger = {
27
+ setLogLevel: (level) => {
28
+ logLevel = level;
29
+ },
30
+ error: (...msgs) => {
31
+ if (logLevel >= LogLevel.Error)
32
+ console.error((0, exports.error)(...msgs));
33
+ },
34
+ warn: (...msgs) => {
35
+ if (logLevel >= LogLevel.Warn)
36
+ console.warn((0, exports.warn)(...msgs));
37
+ },
38
+ info: (...msgs) => {
39
+ if (logLevel >= LogLevel.Info)
40
+ console.info((0, exports.info)(...msgs));
41
+ },
42
+ debug: (...msgs) => {
43
+ if (logLevel >= LogLevel.Debug)
44
+ console.debug((0, exports.debug)(...msgs));
45
+ },
46
+ };
47
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/common/logging.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAEZ,QAAA,KAAK,GAAG,eAAK,CAAC,GAAG,CAAA;AACjB,QAAA,OAAO,GAAG,eAAK,CAAC,KAAK,CAAA;AACrB,QAAA,IAAI,GAAG,eAAK,CAAC,KAAK,CAAA;AAClB,QAAA,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;AACnB,QAAA,KAAK,GAAG,eAAK,CAAC,IAAI,CAAA;AAClB,QAAA,OAAO,GAAG,eAAK,CAAC,IAAI,CAAA;AACpB,QAAA,SAAS,GAAG,eAAK,CAAC,IAAI,CAAA;AACtB,QAAA,KAAK,GAAG,eAAK,CAAC,KAAK,CAAA;AACnB,QAAA,SAAS,GAAG,eAAK,CAAC,SAAS,CAAA;AAExC,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,6CAAW,CAAA;IACX,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED,IAAI,QAAQ,GAAa,QAAQ,CAAC,IAAI,CAAA;AAEzB,QAAA,MAAM,GAAG;IACpB,WAAW,EAAE,CAAC,KAAe,EAAE,EAAE;QAC/B,QAAQ,GAAG,KAAK,CAAA;IAClB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,IAAA,aAAK,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC/D,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAA,YAAI,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC5D,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAA,YAAI,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC5D,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,IAAA,aAAK,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC/D,CAAC;CACF,CAAA"}
@@ -0,0 +1,77 @@
1
+ import ts from 'typescript';
2
+ import { FigmaConnectConfig } from './project';
3
+ import { Intrinsic } from './intrinsics';
4
+ interface ParserErrorContext {
5
+ sourceFile: ts.SourceFile;
6
+ node: ts.Node | undefined;
7
+ }
8
+ export declare class ParserError extends Error {
9
+ sourceFilePosition: ts.LineAndCharacter | null;
10
+ sourceFileName: string;
11
+ constructor(message: string, context?: ParserErrorContext);
12
+ toString(): string;
13
+ toDebugString(): string;
14
+ }
15
+ export declare class InternalError extends ParserError {
16
+ constructor(message: string);
17
+ }
18
+ export interface ParserContext {
19
+ checker: ts.TypeChecker;
20
+ sourceFile: ts.SourceFile;
21
+ config: FigmaConnectConfig | undefined;
22
+ }
23
+ /**
24
+ * Parsers the `props` field of a `Figma.connect()` call, returning a mapping of
25
+ * prop names to their respective intrinsic types
26
+ *
27
+ * @param objectLiteral An object literal expression
28
+ * @param parserContext Parser context
29
+ * @returns
30
+ */
31
+ export declare function parsePropsObject(objectLiteral: ts.ObjectLiteralExpression, parserContext: ParserContext): PropMappings;
32
+ export type PropMappings = Record<string, Intrinsic>;
33
+ /**
34
+ * Extract metadata about the referenced React component. Used by both the
35
+ * Figmadoc and Storybook commands.
36
+ *
37
+ * @param parserContext Parser context
38
+ * @param componentSymbol The ts.Symbol from the metadata referencing the
39
+ * component being documented
40
+ * @param node The node being parsed. Used for error logging.
41
+ * @returns Metadata object
42
+ */
43
+ export declare function parseComponentMetadata(node: ts.PropertyAccessExpression | ts.Identifier | ts.Expression, { checker, sourceFile }: ParserContext): Promise<{
44
+ source: string;
45
+ line: number;
46
+ component: string;
47
+ }>;
48
+ /**
49
+ * Checks if a file contains figmadoc by looking for the `Figma.connect()` function call
50
+ *
51
+ * @param program
52
+ * @param file
53
+ * @returns
54
+ */
55
+ export declare function isFigmaConnectFile(program: ts.Program, file: string): boolean;
56
+ /**
57
+ * Parses the render function passed to `Figma.connect()`, extracting the code and
58
+ * any import statements matching the JSX elements used in the function body
59
+ *
60
+ * @param exp A function or arrow function expression
61
+ * @param parserContext Parser context
62
+ * @param propMappings Prop mappings object as returned by parseProps
63
+ *
64
+ * @returns The code of the render function and a list of imports
65
+ */
66
+ export declare function parseRenderFunction(exp: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration, parserContext: ParserContext, propMappings?: PropMappings): {
67
+ code: string;
68
+ imports: {
69
+ statement: string;
70
+ file: string;
71
+ }[];
72
+ nestable: boolean;
73
+ };
74
+ export declare function getDefaultTemplate(componentMetadata: Awaited<ReturnType<typeof parseComponentMetadata>>): string;
75
+ export declare function parse(program: ts.Program, file: string, repoUrl?: string, config?: FigmaConnectConfig, debug?: boolean): Promise<any[]>;
76
+ export {};
77
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/common/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,kBAAkB,EAAuC,MAAM,WAAW,CAAA;AAYnF,OAAO,EAEL,SAAS,EAKV,MAAM,cAAc,CAAA;AAKrB,UAAU,kBAAkB;IAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,CAAA;IACzB,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,CAAA;CAC1B;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,kBAAkB,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAA;IAC9C,cAAc,EAAE,MAAM,CAAA;gBAEV,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAUzD,QAAQ;IAQR,aAAa;CAGd;AAED,qBAAa,aAAc,SAAQ,WAAW;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,EAAE,CAAC,WAAW,CAAA;IACvB,UAAU,EAAE,EAAE,CAAC,UAAU,CAAA;IACzB,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAA;CACvC;AAwID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,EAAE,CAAC,uBAAuB,EACzC,aAAa,EAAE,aAAa,GAC3B,YAAY,CAOd;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAEpD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,EACjE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,aAAa;;;;GAwGvC;AAeD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,WAmBnE;AAgED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC,mBAAmB,EACtE,aAAa,EAAE,aAAa,EAC5B,YAAY,CAAC,EAAE,YAAY;;;;;;;EAyN5B;AAwJD,wBAAgB,kBAAkB,CAChC,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,UAItE;AA4FD,wBAAsB,KAAK,CACzB,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC,GAAG,EAAE,CAAC,CAkChB"}