@figma/code-connect 0.1.0 → 0.1.2

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 (56) hide show
  1. package/README.md +21 -15
  2. package/dist/commands/connect.js +21 -21
  3. package/dist/commands/connect.js.map +1 -1
  4. package/dist/common/api.d.ts +29 -5
  5. package/dist/common/api.d.ts.map +1 -1
  6. package/dist/common/external.d.ts +1 -0
  7. package/dist/common/external.d.ts.map +1 -1
  8. package/dist/common/external.js.map +1 -1
  9. package/dist/common/figma_connect.d.ts +2 -2
  10. package/dist/common/figma_connect.d.ts.map +1 -1
  11. package/dist/common/intrinsics.d.ts +1 -1
  12. package/dist/common/intrinsics.d.ts.map +1 -1
  13. package/dist/common/intrinsics.js +10 -6
  14. package/dist/common/intrinsics.js.map +1 -1
  15. package/dist/common/project.d.ts +36 -21
  16. package/dist/common/project.d.ts.map +1 -1
  17. package/dist/common/project.js +30 -3
  18. package/dist/common/project.js.map +1 -1
  19. package/dist/connect/create.d.ts +1 -1
  20. package/dist/connect/create.d.ts.map +1 -1
  21. package/dist/connect/create.js +6 -5
  22. package/dist/connect/create.js.map +1 -1
  23. package/dist/connect/helpers.d.ts.map +1 -1
  24. package/dist/connect/helpers.js +11 -6
  25. package/dist/connect/helpers.js.map +1 -1
  26. package/dist/connect/upload.d.ts +2 -2
  27. package/dist/connect/upload.d.ts.map +1 -1
  28. package/dist/connect/upload.js +3 -3
  29. package/dist/connect/upload.js.map +1 -1
  30. package/dist/connect/validation.d.ts +2 -2
  31. package/dist/connect/validation.d.ts.map +1 -1
  32. package/dist/connect/validation.js +3 -3
  33. package/dist/connect/validation.js.map +1 -1
  34. package/dist/{common → react}/parser.d.ts +8 -8
  35. package/dist/react/parser.d.ts.map +1 -0
  36. package/dist/{common → react}/parser.js +240 -139
  37. package/dist/react/parser.js.map +1 -0
  38. package/dist/react/parser_template_helpers.d.ts.map +1 -0
  39. package/dist/{common → react}/parser_template_helpers.js +10 -1
  40. package/dist/react/parser_template_helpers.js.map +1 -0
  41. package/dist/storybook/convert.d.ts +4 -4
  42. package/dist/storybook/convert.d.ts.map +1 -1
  43. package/dist/storybook/convert.js +16 -14
  44. package/dist/storybook/convert.js.map +1 -1
  45. package/dist/{common → typescript}/compiler.d.ts +1 -1
  46. package/dist/typescript/compiler.d.ts.map +1 -0
  47. package/dist/{common → typescript}/compiler.js +21 -2
  48. package/dist/typescript/compiler.js.map +1 -0
  49. package/package.json +4 -2
  50. package/dist/common/compiler.d.ts.map +0 -1
  51. package/dist/common/compiler.js.map +0 -1
  52. package/dist/common/parser.d.ts.map +0 -1
  53. package/dist/common/parser.js.map +0 -1
  54. package/dist/common/parser_template_helpers.d.ts.map +0 -1
  55. package/dist/common/parser_template_helpers.js.map +0 -1
  56. /package/dist/{common → react}/parser_template_helpers.d.ts +0 -0
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parse = exports.getDefaultTemplate = exports.parseRenderFunction = exports.isFigmaConnectFile = exports.parseComponentMetadata = exports.parsePropsObject = exports.InternalError = exports.ParserError = void 0;
7
7
  const typescript_1 = __importDefault(require("typescript"));
8
- const project_1 = require("./project");
9
- const logging_1 = require("./logging");
10
- const compiler_1 = require("./compiler");
11
- const intrinsics_1 = require("./intrinsics");
8
+ const project_1 = require("../common/project");
9
+ const logging_1 = require("../common/logging");
10
+ const compiler_1 = require("../typescript/compiler");
11
+ const intrinsics_1 = require("../common/intrinsics");
12
12
  const parser_template_helpers_1 = require("./parser_template_helpers");
13
13
  class ParserError extends Error {
14
14
  constructor(message, context) {
@@ -153,7 +153,7 @@ function getImportsForIdentifiers({ sourceFile }, _identifiers) {
153
153
  return imports;
154
154
  }
155
155
  /**
156
- * Parsers the `props` field of a `Figma.connect()` call, returning a mapping of
156
+ * Parsers the `props` field of a `figma.connect()` call, returning a mapping of
157
157
  * prop names to their respective intrinsic types
158
158
  *
159
159
  * @param objectLiteral An object literal expression
@@ -171,7 +171,7 @@ function parsePropsObject(objectLiteral, parserContext) {
171
171
  exports.parsePropsObject = parsePropsObject;
172
172
  /**
173
173
  * Extract metadata about the referenced React component. Used by both the
174
- * Figmadoc and Storybook commands.
174
+ * Code Connect and Storybook commands.
175
175
  *
176
176
  * @param parserContext Parser context
177
177
  * @param componentSymbol The ts.Symbol from the metadata referencing the
@@ -263,24 +263,24 @@ async function parseComponentMetadata(node, { checker, sourceFile }) {
263
263
  }
264
264
  exports.parseComponentMetadata = parseComponentMetadata;
265
265
  /**
266
- * Checks if an AST node is a `Figma.connect()` call
266
+ * Checks if an AST node is a `figma.connect()` call
267
267
  *
268
268
  * @param node AST node
269
269
  * @param sourceFile Source file
270
- * @returns True if the node is a `Figma.connect()` call
270
+ * @returns True if the node is a `figma.connect()` call
271
271
  */
272
272
  function isFigmaConnectCall(node, sourceFile) {
273
273
  return (typescript_1.default.isCallExpression(node) && node.expression.getText(sourceFile).includes(intrinsics_1.FIGMA_CONNECT_CALL));
274
274
  }
275
275
  /**
276
- * Checks if a file contains figmadoc by looking for the `Figma.connect()` function call
276
+ * Checks if a file contains Code Connect by looking for the `figma.connect()` function call
277
277
  *
278
278
  * @param program
279
279
  * @param file
280
280
  * @returns
281
281
  */
282
282
  function isFigmaConnectFile(program, file) {
283
- // We don't support Figmadoc in JSX and this throws an error if we let it proceed
283
+ // We don't support Code Connect in JSX and this throws an error if we let it proceed
284
284
  if (!file.endsWith('.tsx')) {
285
285
  return false;
286
286
  }
@@ -297,7 +297,7 @@ function isFigmaConnectFile(program, file) {
297
297
  }
298
298
  exports.isFigmaConnectFile = isFigmaConnectFile;
299
299
  /**
300
- * Parses the `links` field of a `Figma.connect()` call
300
+ * Parses the `links` field of a `figma.connect()` call
301
301
  *
302
302
  * @param linksArray an ArrayLiteralExpression
303
303
  * @param parserContext Parser context
@@ -345,7 +345,23 @@ function parseVariant(variantMap, sourceFile, checker) {
345
345
  });
346
346
  }
347
347
  /**
348
- * Parses the render function passed to `Figma.connect()`, extracting the code and
348
+ * Parses the `imports` field of a `figma.connect()` call
349
+ *
350
+ * @param importsArray an ArrayLiteralExpression
351
+ * @param parserContext Parser context
352
+ * @returns An array of link objects
353
+ */
354
+ function parseImports(importsArray, parserContext) {
355
+ const { sourceFile } = parserContext;
356
+ const imports = [];
357
+ for (const element of importsArray.elements) {
358
+ (0, compiler_1.assertIsStringLiteral)(element, sourceFile, `'imports' must be an array literal with strings`);
359
+ imports.push((0, compiler_1.stripQuotes)(element));
360
+ }
361
+ return imports;
362
+ }
363
+ /**
364
+ * Parses the render function passed to `figma.connect()`, extracting the code and
349
365
  * any import statements matching the JSX elements used in the function body
350
366
  *
351
367
  * @param exp A function or arrow function expression
@@ -423,9 +439,22 @@ function parseRenderFunction(exp, parserContext, propMappings) {
423
439
  // <Button prop1={__PROP__("prop1")} prop2={__PROP__("prop2")} />.
424
440
  if (typescript_1.default.isJsxSpreadAttribute(node) &&
425
441
  typescript_1.default.isIdentifier(node.expression) &&
426
- node.expression.getText() === propsParameter.name.getText()) {
442
+ // example: (props) => (...)
443
+ (node.expression.getText() === propsParameter.name.getText() ||
444
+ // example: ({ prop1, prop2 ...props }) => (...)
445
+ (typescript_1.default.isObjectBindingPattern(propsParameter.name) &&
446
+ propsParameter.name.elements.find((el) => el.dotDotDotToken && el.name.getText() === node.expression?.getText())))) {
447
+ // if we have an object binding pattern ({ prop1, prop2 ...props }),
448
+ // exclude the props that are already destructured (prop1, prop2)
449
+ const propsToExclude = typescript_1.default.isObjectBindingPattern(propsParameter.name)
450
+ ? propsParameter.name.elements
451
+ .filter((el) => !el.dotDotDotToken)
452
+ .map((el) => el.name.getText())
453
+ : [];
427
454
  const props = propMappings
428
- ? Object.keys(propMappings).map((prop) => {
455
+ ? Object.keys(propMappings)
456
+ .filter((prop) => !propsToExclude.includes(prop))
457
+ .map((prop) => {
429
458
  return typescript_1.default.factory.createJsxAttribute(typescript_1.default.factory.createIdentifier(prop), createPropPlaceholder(prop, node, true));
430
459
  })
431
460
  : [];
@@ -479,6 +508,11 @@ function parseRenderFunction(exp, parserContext, propMappings) {
479
508
  // Replace React children placeholders like `${__PROP__("propName")}` with
480
509
  // `${propName}`. These never need special treatment based on their type.
481
510
  exampleCode = exampleCode.replace(/\{__PROP__\("([A-Za-z]+)"\)\}/g, '${$1}');
511
+ // Replace object values like `{ prop: __PROP__("propName") }` with
512
+ // `{ prop: ${propName} }`. These never need special treatment based on their type.
513
+ exampleCode = exampleCode.replace(/([A-Za-z0-9]+):\s+__PROP__\("([A-Za-z]+)"\)/g, (_match, objectKey, figmaPropName) => {
514
+ return `${objectKey}: \${${figmaPropName}}`;
515
+ });
482
516
  // Generate the template code
483
517
  // Inject React-specific template helper functions
484
518
  templateCode = (0, parser_template_helpers_1.getParsedTemplateHelpersString)() + '\n\n';
@@ -514,7 +548,7 @@ function parseRenderFunction(exp, parserContext, propMappings) {
514
548
  exports.parseRenderFunction = parseRenderFunction;
515
549
  /**
516
550
  * This wrapper function ensures that property names are type checked in case
517
- * we make changes to the `Figma.connect()` interface.
551
+ * we make changes to the `figma.connect()` interface.
518
552
  */
519
553
  function makeConfigPropertyParser({ key, predicate, errorMessage, }) {
520
554
  return (configArg, parserContext) => {
@@ -536,90 +570,141 @@ function makeFunctionArgumentParser({ index, predicate, required, errorMessage,
536
570
  return (0, compiler_1.parseFunctionArgument)(node, parserContext, index, predicate, required, errorMessage);
537
571
  };
538
572
  }
539
- function makeArgParser() {
540
- return {
541
- parseComponent: makeFunctionArgumentParser({
542
- index: 0,
543
- predicate: (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isPropertyAccessExpression]),
544
- required: true,
545
- errorMessage: `\`${intrinsics_1.FIGMA_CONNECT_CALL}\` must be called with a reference to a Component as the first argument. Example usage:
546
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``,
547
- }),
548
- parseFigmaNodeUrl: (node, parserContext) => {
549
- const { checker } = parserContext;
550
- const invalidTypeErrorMsg = `The second argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be a string literal (the URL of the Figma node). Example usage:
551
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``;
552
- const index = 1;
553
- const required = true;
554
- let arg = (0, compiler_1.parseFunctionArgument)(node, parserContext, index, (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isStringLiteral]), required, invalidTypeErrorMsg);
555
- if (arg && typescript_1.default.isIdentifier(arg)) {
556
- const symbol = checker.getSymbolAtLocation(arg);
557
- if (symbol) {
558
- const decl = symbol.valueDeclaration;
559
- if (decl &&
560
- typescript_1.default.isVariableDeclaration(decl) &&
561
- decl.initializer &&
562
- typescript_1.default.isStringLiteral(decl.initializer)) {
563
- arg = decl.initializer;
564
- }
565
- }
566
- }
567
- // If we followed the identifier to its declaration and it's not a string literal,
568
- // throw an error
569
- if (!arg || !typescript_1.default.isStringLiteral(arg)) {
570
- throw new ParserError(invalidTypeErrorMsg, {
571
- node: arg,
572
- sourceFile: parserContext.sourceFile,
573
- });
573
+ function followIdentifierToStringLiteralDeclaration(node, parserContext, errMessage) {
574
+ const { checker } = parserContext;
575
+ let result = node;
576
+ if (node && typescript_1.default.isIdentifier(node)) {
577
+ const symbol = checker.getSymbolAtLocation(node);
578
+ if (symbol) {
579
+ const decl = symbol.valueDeclaration;
580
+ if (decl &&
581
+ typescript_1.default.isVariableDeclaration(decl) &&
582
+ decl.initializer &&
583
+ typescript_1.default.isStringLiteral(decl.initializer)) {
584
+ result = decl.initializer;
574
585
  }
575
- return arg;
576
- },
577
- parseConfig: makeFunctionArgumentParser({
578
- index: 2,
579
- predicate: typescript_1.default.isObjectLiteralExpression,
580
- required: false,
581
- errorMessage: `The third argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be an object literal. Example usage:
582
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', { render: () => <Button /> })\``,
583
- }),
584
- parseProps: makeConfigPropertyParser({
585
- key: 'props',
586
- predicate: typescript_1.default.isObjectLiteralExpression,
587
- errorMessage: `The 'props' property must be an object literal. Example usage:
588
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
589
- props: {
590
- disabled: Figma.boolean('Disabled'),
591
- text: Figma.string('TextContent'),
592
- }
593
- })\``,
594
- }),
595
- parseExample: makeConfigPropertyParser({
596
- key: 'example',
597
- predicate: (0, compiler_1.isOneOf)([typescript_1.default.isArrowFunction, typescript_1.default.isFunctionExpression]),
598
- errorMessage: `The 'example' property must be an inline function or arrow function. Example usage:
599
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
600
- render: () => <Button />
601
- })\``,
602
- }),
603
- parseVariant: makeConfigPropertyParser({
604
- key: 'variant',
605
- predicate: typescript_1.default.isObjectLiteralExpression,
606
- errorMessage: `The 'variant' property must be an object literal. Example usage:
607
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
608
- variant: {
609
- "Has Icon": true
610
- }
611
- })\``,
612
- }),
613
- parseLinks: makeConfigPropertyParser({
614
- key: 'links',
615
- predicate: typescript_1.default.isArrayLiteralExpression,
616
- errorMessage: `The 'links' property must be an array literal. Example usage:
617
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
618
- links: [
619
- { name: 'Storybook', url: 'https://storybook.com' }
620
- ]
621
- })\``,
622
- }),
586
+ }
587
+ }
588
+ // If we followed the identifier to its declaration and it's not a string literal,
589
+ // throw an error
590
+ if (!result || !typescript_1.default.isStringLiteral(result)) {
591
+ throw new ParserError(errMessage, {
592
+ node: result,
593
+ sourceFile: parserContext.sourceFile,
594
+ });
595
+ }
596
+ return result;
597
+ }
598
+ function parseFigmaConnectArgs(node, parserContext) {
599
+ const required = true;
600
+ const first = (0, compiler_1.parseFunctionArgument)(node, parserContext, 0, (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isPropertyAccessExpression, typescript_1.default.isStringLiteral]), required, `\`${intrinsics_1.FIGMA_CONNECT_CALL}\` must be called with a reference to a Component or a Figma Component URL as the first argument. Example usage:
601
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``);
602
+ let figmaNodeUrlArg;
603
+ let componentArg;
604
+ let configObjArgIndex;
605
+ // This function has two signatures. If the first arg is a string literal, it's the Figma node URL, and
606
+ // it won't have a component reference.
607
+ if (typescript_1.default.isStringLiteral(first)) {
608
+ figmaNodeUrlArg = first;
609
+ componentArg = undefined;
610
+ configObjArgIndex = 1;
611
+ }
612
+ else {
613
+ // If the first argument is not a string literal, it must be a component reference,
614
+ // and the second argument must be the Figma node URL
615
+ componentArg = first;
616
+ configObjArgIndex = 2;
617
+ const invalidTypeErrorMsg = `The second argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be a string literal (the URL of the Figma node). Example usage:
618
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``;
619
+ let arg = (0, compiler_1.parseFunctionArgument)(node, parserContext, 1, (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isStringLiteral]), required, invalidTypeErrorMsg);
620
+ figmaNodeUrlArg = followIdentifierToStringLiteralDeclaration(arg, parserContext, invalidTypeErrorMsg);
621
+ }
622
+ const configObjArg = (0, compiler_1.parseFunctionArgument)(node, parserContext, configObjArgIndex, typescript_1.default.isObjectLiteralExpression, false /* not required */, `The third argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be an object literal. Example usage:
623
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', { render: () => <Button /> })\``);
624
+ return {
625
+ componentArg,
626
+ figmaNodeUrlArg,
627
+ configObjArg,
628
+ };
629
+ }
630
+ function parseConfigObjectArg(configArg, parserContext) {
631
+ if (!configArg) {
632
+ return {
633
+ propsArg: undefined,
634
+ exampleArg: undefined,
635
+ variantArg: undefined,
636
+ importsArg: undefined,
637
+ linksArg: undefined,
638
+ };
639
+ }
640
+ const propsArg = (0, compiler_1.parsePropertyOfType)({
641
+ objectLiteralNode: configArg,
642
+ propertyName: 'props',
643
+ predicate: typescript_1.default.isObjectLiteralExpression,
644
+ parserContext,
645
+ required: false,
646
+ errorMessage: `The 'props' property must be an object literal. Example usage:
647
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
648
+ props: {
649
+ disabled: figma.boolean('Disabled'),
650
+ text: figma.string('TextContent'),
651
+ }
652
+ })\``,
653
+ });
654
+ const exampleArg = (0, compiler_1.parsePropertyOfType)({
655
+ objectLiteralNode: configArg,
656
+ propertyName: 'example',
657
+ predicate: (0, compiler_1.isOneOf)([typescript_1.default.isArrowFunction, typescript_1.default.isFunctionExpression]),
658
+ parserContext,
659
+ required: false,
660
+ errorMessage: `The 'example' property must be an inline function or arrow function. Example usage:
661
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
662
+ example: () => <Button />
663
+ })\``,
664
+ });
665
+ const variantArg = (0, compiler_1.parsePropertyOfType)({
666
+ objectLiteralNode: configArg,
667
+ propertyName: 'variant',
668
+ predicate: typescript_1.default.isObjectLiteralExpression,
669
+ parserContext,
670
+ required: false,
671
+ errorMessage: `The 'variant' property must be an object literal. Example usage:
672
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
673
+ variant: {
674
+ "Has Icon": true
675
+ }
676
+ })\``,
677
+ });
678
+ const linksArg = (0, compiler_1.parsePropertyOfType)({
679
+ objectLiteralNode: configArg,
680
+ propertyName: 'links',
681
+ predicate: typescript_1.default.isArrayLiteralExpression,
682
+ parserContext,
683
+ required: false,
684
+ errorMessage: `The 'links' property must be an array literal. Example usage:
685
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
686
+ links: [
687
+ { name: 'Storybook', url: 'https://storybook.com' }
688
+ ]
689
+ })\``,
690
+ });
691
+ const importsArg = (0, compiler_1.parsePropertyOfType)({
692
+ objectLiteralNode: configArg,
693
+ propertyName: 'imports',
694
+ predicate: typescript_1.default.isArrayLiteralExpression,
695
+ parserContext,
696
+ required: false,
697
+ errorMessage: `The 'imports' property must be an array literal. Example usage:
698
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
699
+ imports: ['import { Button } from "./Button"']
700
+ })\``,
701
+ });
702
+ return {
703
+ propsArg,
704
+ exampleArg,
705
+ variantArg,
706
+ linksArg,
707
+ importsArg,
623
708
  };
624
709
  }
625
710
  function getDefaultTemplate(componentMetadata) {
@@ -630,62 +715,78 @@ exports.getDefaultTemplate = getDefaultTemplate;
630
715
  async function parseDoc(node, parserContext, repoUrl) {
631
716
  const { checker, sourceFile, config } = parserContext;
632
717
  // Parse the arguments to the `Figma.connect()` call
633
- const args = makeArgParser();
718
+ const { componentArg, figmaNodeUrlArg, configObjArg } = parseFigmaConnectArgs(node, parserContext);
634
719
  // The ones with ! are definitely defined because their parser fn has required: true,
635
720
  // but I couldn't work out how to model that in TypeScript
636
- const componentArg = args.parseComponent(node, parserContext);
637
- const figmaNodeUrlArg = args.parseFigmaNodeUrl(node, parserContext);
638
- const configObjArg = args.parseConfig(node, parserContext);
639
- const propsArg = configObjArg && args.parseProps(configObjArg, parserContext);
640
- const exampleArg = configObjArg && args.parseExample(configObjArg, parserContext);
641
- const variantArg = configObjArg && args.parseVariant(configObjArg, parserContext);
642
- const linksArg = configObjArg && args.parseLinks(configObjArg, parserContext);
721
+ const { propsArg, exampleArg, variantArg, linksArg, importsArg } = parseConfigObjectArg(configObjArg, parserContext);
643
722
  let figmaNode = (0, compiler_1.stripQuotes)(figmaNodeUrlArg);
644
723
  if (config?.documentUrlSubstitutions) {
645
724
  Object.entries(config.documentUrlSubstitutions).forEach(([from, to]) => {
646
725
  figmaNode = figmaNode.replace(from, to);
647
726
  });
648
727
  }
649
- const metadata = await parseComponentMetadata(componentArg, parserContext);
728
+ const metadata = componentArg
729
+ ? await parseComponentMetadata(componentArg, parserContext)
730
+ : undefined;
650
731
  const props = propsArg ? parsePropsObject(propsArg, parserContext) : undefined;
651
732
  const render = exampleArg ? parseRenderFunction(exampleArg, parserContext, props) : undefined;
652
733
  const variant = variantArg ? parseVariant(variantArg, sourceFile, checker) : undefined;
653
734
  const links = linksArg ? parseLinks(linksArg, parserContext) : undefined;
654
- // If no template function was provided, construct one and add the import
655
- // statement for the component
656
- let imports = render?.imports ?? getImportsForIdentifiers(parserContext, [metadata.component]);
657
- const template = render?.code ?? getDefaultTemplate(metadata);
658
- if (imports.length === 0) {
659
- // If no imports were found, it might mean that the component is not imported, or
660
- // that the `figma.connect` call is in the same file as the component. In the latter
661
- // case - we'll want to generate one
662
- const fileName = metadata.source.split('/').pop()?.split('.')[0];
663
- imports = [
664
- {
665
- statement: `import { ${metadata.component} } from './${fileName}'`,
666
- file: sourceFile.fileName,
667
- },
668
- ];
735
+ let resolvedImports;
736
+ if (importsArg) {
737
+ resolvedImports = parseImports(importsArg, parserContext);
669
738
  }
670
- const resolvedImports = imports.map((imp) => {
671
- if (config) {
672
- const resolvedPath = (0, project_1.resolveImportPath)(imp.file, config);
673
- if (resolvedPath) {
674
- return imp.statement.replace(/['"]([\.\/a-zA-Z0-9]*)['"]/, `'${resolvedPath}'`);
675
- }
739
+ else {
740
+ // If no template function was provided, construct one and add the import
741
+ // statement for the component
742
+ let imports = render?.imports
743
+ ? render.imports
744
+ : metadata !== undefined
745
+ ? getImportsForIdentifiers(parserContext, [metadata.component])
746
+ : [];
747
+ if (imports.length === 0 && metadata?.component) {
748
+ // If no imports were found, it might mean that the component is not imported, or
749
+ // that the `figma.connect` call is in the same file as the component. In the latter
750
+ // case - we'll want to generate one
751
+ const fileName = metadata.source.split('/').pop()?.split('.')[0];
752
+ imports = [
753
+ {
754
+ statement: `import { ${metadata.component} } from './${fileName}'`,
755
+ file: sourceFile.fileName,
756
+ },
757
+ ];
676
758
  }
677
- return imp.statement;
678
- }) ?? [];
679
- if (resolvedImports.length === 0) {
759
+ resolvedImports =
760
+ imports.map((imp) => {
761
+ if (config) {
762
+ const resolvedPath = (0, project_1.resolveImportPath)(imp.file, config);
763
+ if (resolvedPath) {
764
+ return imp.statement.replace(/['"]([\.\/a-zA-Z0-9]*)['"]/, `'${resolvedPath}'`);
765
+ }
766
+ }
767
+ return imp.statement;
768
+ }) ?? [];
769
+ }
770
+ if (resolvedImports.length === 0 && metadata?.component) {
680
771
  logging_1.logger.warn(`The import statement for ${metadata.component} could not be automatically resolved, make sure the component is imported (if not colocating) and that the path mappings are correct in your figma.config.json`);
681
772
  }
773
+ let template;
774
+ if (render?.code) {
775
+ template = render.code;
776
+ }
777
+ else if (metadata) {
778
+ template = getDefaultTemplate(metadata);
779
+ }
780
+ else {
781
+ throw new ParserError(`${intrinsics_1.FIGMA_CONNECT_CALL}() requires either a component argument or an example function`, { sourceFile, node });
782
+ }
682
783
  return {
683
784
  figmaNode,
684
785
  label: 'React',
685
786
  language: 'typescript',
686
- component: metadata.component,
687
- source: (0, project_1.getRemoteFileUrl)(metadata.source, repoUrl),
688
- sourceLocation: { line: metadata.line },
787
+ component: metadata?.component,
788
+ source: metadata?.source ? (0, project_1.getRemoteFileUrl)(metadata.source, repoUrl) : '',
789
+ sourceLocation: metadata?.line ? { line: metadata.line } : { line: -1 },
689
790
  variant,
690
791
  template,
691
792
  templateData: {
@@ -712,25 +813,25 @@ async function parse(program, file, repoUrl, config, debug) {
712
813
  sourceFile,
713
814
  config,
714
815
  };
715
- const figmadocs = [];
816
+ const codeConnectObjects = [];
716
817
  const nodes = [parserContext.sourceFile];
717
818
  while (nodes.length > 0) {
718
819
  const node = nodes.shift();
719
820
  if (isFigmaConnectCall(node, parserContext.sourceFile)) {
720
821
  const doc = await parseDoc(node, parserContext, repoUrl);
721
822
  if (doc) {
722
- figmadocs.push(doc);
823
+ codeConnectObjects.push(doc);
723
824
  }
724
825
  }
725
826
  nodes.push(...node.getChildren(parserContext.sourceFile));
726
827
  }
727
- if (figmadocs.length === 0) {
728
- throw new ParserError(`Didn't find any calls to Figmadoc()`, {
828
+ if (codeConnectObjects.length === 0) {
829
+ throw new ParserError(`Didn't find any calls to figma.connect()`, {
729
830
  sourceFile: parserContext.sourceFile,
730
831
  node: parserContext.sourceFile,
731
832
  });
732
833
  }
733
- return figmadocs;
834
+ return codeConnectObjects;
734
835
  }
735
836
  exports.parse = parse;
736
837
  //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/react/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser_template_helpers.d.ts","sourceRoot":"","sources":["../../src/react/parser_template_helpers.ts"],"names":[],"mappings":"AA4DA,wBAAgB,8BAA8B,WAE7C"}
@@ -1,4 +1,9 @@
1
1
  "use strict";
2
+ /* istanbul ignore file */
3
+ // This file needs to be ignored from code coverage, as Istanbul adds extra calls
4
+ // to `cov_*` functions which are used to track coverage, but these functions
5
+ // can't be resolved when executing the templates from the unit tests inside
6
+ // `new Function()`
2
7
  Object.defineProperty(exports, "__esModule", { value: true });
3
8
  exports.getParsedTemplateHelpersString = void 0;
4
9
  // This file contains helper functions which hare included in the React template
@@ -8,7 +13,7 @@ exports.getParsedTemplateHelpersString = void 0;
8
13
  // We write them in TS rather than as a string for maintainability, then call
9
14
  // `.toString()` on the functions and return a string we can inject. Note that
10
15
  // comments will be stripped, as this is run through the build step first.
11
- // Render a React prop correctly, based on its type
16
+ // Render a React prop correctly, based on its type.
12
17
  function _fcc_renderReactProp(name, value) {
13
18
  // If the value is an array, then it's an array of objects representing React
14
19
  // children (either of type INSTANCE for pills, or CODE for inline code). The
@@ -36,6 +41,10 @@ function _fcc_renderReactProp(name, value) {
36
41
  // Strings are wrapped in quotes
37
42
  return ` ${name}="${value}"`;
38
43
  }
44
+ else if (typeof value === 'number') {
45
+ // Numbers are wrapped in braces
46
+ return ` ${name}={${value}}`;
47
+ }
39
48
  else if (typeof value === 'boolean') {
40
49
  // Render either the prop name or nothing for a boolean, we don't want to
41
50
  // render `prop={true/false}`
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser_template_helpers.js","sourceRoot":"","sources":["../../src/react/parser_template_helpers.ts"],"names":[],"mappings":";AAAA,0BAA0B;AAC1B,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,mBAAmB;;;AAInB,gFAAgF;AAChF,0EAA0E;AAC1E,mDAAmD;AACnD,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAE1E,oDAAoD;AACpD,SAAS,oBAAoB,CAC3B,IAAY,EACZ,KAAkE;IAElE,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,sCAAsC;IACtC,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAElD,IAAI,qBAAqB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,0EAA0E;QAC1E,YAAY;QACZ,EAAE;QACF,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,yEAAyE;QACzE,OAAO,KAAK,CAAC,GAAG,CAAA,IAAI,IAAI,OAAO,KAAK,MAAM,CAAA;IAC5C,CAAC;SAAM,IACL,qBAAqB;QACrB,2EAA2E;QAC3E,4DAA4D;QAC5D,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACpD,CAAC;QACD,gFAAgF;QAChF,OAAO,KAAK,CAAC,GAAG,CAAA,IAAI,IAAI,KAAK,KAAK,GAAG,CAAA;IACvC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,gCAAgC;QAChC,OAAO,IAAI,IAAI,KAAK,KAAK,GAAG,CAAA;IAC9B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,gCAAgC;QAChC,OAAO,IAAI,IAAI,KAAK,KAAK,GAAG,CAAA;IAC9B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACtC,yEAAyE;QACzE,6BAA6B;QAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAChC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,SAAgB,8BAA8B;IAC5C,OAAO,oBAAoB,CAAC,QAAQ,EAAE,CAAA;AACxC,CAAC;AAFD,wEAEC"}
@@ -1,5 +1,5 @@
1
1
  import { ProjectInfo } from '../common/project';
2
- import { FigmaConnectJSON } from '../common/figma_connect';
2
+ import { CodeConnectJSON } from '../common/figma_connect';
3
3
  interface ConvertStorybookFilesArgs {
4
4
  /**
5
5
  * Optionally override the glob used to find stories. This is currently not
@@ -12,13 +12,13 @@ interface ConvertStorybookFilesArgs {
12
12
  projectInfo: ProjectInfo;
13
13
  }
14
14
  /**
15
- * Converts all Storyboook files in a directory into Figmadoc objects. If a file
15
+ * Converts all Storyboook files in a directory into Code Connect objects. If a file
16
16
  * cannot be converted (e.g. unsupported syntax), it is ignored and an error is
17
17
  * logged.
18
18
  *
19
19
  * @param args
20
- * @returns An array of Figmadoc objects
20
+ * @returns An array of Code Connect objects
21
21
  */
22
- export declare function convertStorybookFiles({ projectInfo, storiesGlob, }: ConvertStorybookFilesArgs): Promise<FigmaConnectJSON[]>;
22
+ export declare function convertStorybookFiles({ projectInfo, storiesGlob, }: ConvertStorybookFilesArgs): Promise<CodeConnectJSON[]>;
23
23
  export {};
24
24
  //# sourceMappingURL=convert.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/storybook/convert.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,WAAW,EAGZ,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAKzD,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,eAAe,EAAE,CAAC,CAWxD"}