@figma/code-connect 0.1.1 → 0.2.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 (118) hide show
  1. package/README.md +123 -25
  2. package/dist/cli.js +7 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/connect.d.ts +15 -0
  5. package/dist/commands/connect.d.ts.map +1 -1
  6. package/dist/commands/connect.js +140 -79
  7. package/dist/commands/connect.js.map +1 -1
  8. package/dist/common/__test__/project.test.d.ts +2 -0
  9. package/dist/common/__test__/project.test.d.ts.map +1 -0
  10. package/dist/common/__test__/project.test.js +14 -0
  11. package/dist/common/__test__/project.test.js.map +1 -0
  12. package/dist/common/api.d.ts +77 -5
  13. package/dist/common/api.d.ts.map +1 -1
  14. package/dist/common/external.d.ts +7 -3
  15. package/dist/common/external.d.ts.map +1 -1
  16. package/dist/common/external.js +13 -1
  17. package/dist/common/external.js.map +1 -1
  18. package/dist/common/figma_connect.d.ts +12 -10
  19. package/dist/common/figma_connect.d.ts.map +1 -1
  20. package/dist/common/intrinsics.d.ts +39 -7
  21. package/dist/common/intrinsics.d.ts.map +1 -1
  22. package/dist/common/intrinsics.js +166 -30
  23. package/dist/common/intrinsics.js.map +1 -1
  24. package/dist/common/logging.d.ts +9 -0
  25. package/dist/common/logging.d.ts.map +1 -1
  26. package/dist/common/logging.js +21 -1
  27. package/dist/common/logging.js.map +1 -1
  28. package/dist/common/updates.d.ts +4 -0
  29. package/dist/common/updates.d.ts.map +1 -0
  30. package/dist/common/updates.js +87 -0
  31. package/dist/common/updates.js.map +1 -0
  32. package/dist/connect/create.d.ts +5 -1
  33. package/dist/connect/create.d.ts.map +1 -1
  34. package/dist/connect/create.js +55 -69
  35. package/dist/connect/create.js.map +1 -1
  36. package/dist/connect/delete_docs.d.ts.map +1 -1
  37. package/dist/connect/delete_docs.js +1 -4
  38. package/dist/connect/delete_docs.js.map +1 -1
  39. package/dist/connect/figma_rest_api.d.ts +5 -0
  40. package/dist/connect/figma_rest_api.d.ts.map +1 -1
  41. package/dist/connect/figma_rest_api.js +10 -1
  42. package/dist/connect/figma_rest_api.js.map +1 -1
  43. package/dist/connect/helpers.d.ts +1 -1
  44. package/dist/connect/helpers.d.ts.map +1 -1
  45. package/dist/connect/helpers.js +6 -5
  46. package/dist/connect/helpers.js.map +1 -1
  47. package/dist/connect/parser_executable_types.d.ts +298 -0
  48. package/dist/connect/parser_executable_types.d.ts.map +1 -0
  49. package/dist/connect/parser_executable_types.js +108 -0
  50. package/dist/connect/parser_executable_types.js.map +1 -0
  51. package/dist/connect/parser_executables.d.ts +8 -0
  52. package/dist/connect/parser_executables.d.ts.map +1 -0
  53. package/dist/connect/parser_executables.js +132 -0
  54. package/dist/connect/parser_executables.js.map +1 -0
  55. package/dist/connect/project.d.ts +137 -0
  56. package/dist/connect/project.d.ts.map +1 -0
  57. package/dist/connect/project.js +411 -0
  58. package/dist/connect/project.js.map +1 -0
  59. package/dist/connect/upload.d.ts.map +1 -1
  60. package/dist/connect/upload.js +2 -5
  61. package/dist/connect/upload.js.map +1 -1
  62. package/dist/connect/validation.d.ts +6 -1
  63. package/dist/connect/validation.d.ts.map +1 -1
  64. package/dist/connect/validation.js +12 -12
  65. package/dist/connect/validation.js.map +1 -1
  66. package/dist/connect/wizard/helpers.d.ts +7 -0
  67. package/dist/connect/wizard/helpers.d.ts.map +1 -0
  68. package/dist/connect/wizard/helpers.js +55 -0
  69. package/dist/connect/wizard/helpers.js.map +1 -0
  70. package/dist/connect/wizard/run_wizard.d.ts +3 -0
  71. package/dist/connect/wizard/run_wizard.d.ts.map +1 -0
  72. package/dist/connect/wizard/run_wizard.js +479 -0
  73. package/dist/connect/wizard/run_wizard.js.map +1 -0
  74. package/dist/parser_scripts/get_file_if_exists.d.ts +2 -0
  75. package/dist/parser_scripts/get_file_if_exists.d.ts.map +1 -0
  76. package/dist/parser_scripts/get_file_if_exists.js +10 -0
  77. package/dist/parser_scripts/get_file_if_exists.js.map +1 -0
  78. package/dist/parser_scripts/get_gradlew_path.d.ts +3 -0
  79. package/dist/parser_scripts/get_gradlew_path.d.ts.map +1 -0
  80. package/dist/parser_scripts/get_gradlew_path.js +24 -0
  81. package/dist/parser_scripts/get_gradlew_path.js.map +1 -0
  82. package/dist/parser_scripts/get_swift_parser_dir.d.ts +2 -0
  83. package/dist/parser_scripts/get_swift_parser_dir.d.ts.map +1 -0
  84. package/dist/parser_scripts/get_swift_parser_dir.js +93 -0
  85. package/dist/parser_scripts/get_swift_parser_dir.js.map +1 -0
  86. package/dist/react/create.d.ts +4 -0
  87. package/dist/react/create.d.ts.map +1 -0
  88. package/dist/react/create.js +132 -0
  89. package/dist/react/create.js.map +1 -0
  90. package/dist/{common → react}/parser.d.ts +6 -15
  91. package/dist/react/parser.d.ts.map +1 -0
  92. package/dist/{common → react}/parser.js +223 -172
  93. package/dist/react/parser.js.map +1 -0
  94. package/dist/react/parser_template_helpers.d.ts +23 -0
  95. package/dist/react/parser_template_helpers.d.ts.map +1 -0
  96. package/dist/react/parser_template_helpers.js +126 -0
  97. package/dist/react/parser_template_helpers.js.map +1 -0
  98. package/dist/storybook/convert.d.ts +2 -2
  99. package/dist/storybook/convert.d.ts.map +1 -1
  100. package/dist/storybook/convert.js +11 -7
  101. package/dist/storybook/convert.js.map +1 -1
  102. package/dist/{common → typescript}/compiler.d.ts +1 -1
  103. package/dist/typescript/compiler.d.ts.map +1 -0
  104. package/dist/{common → typescript}/compiler.js +21 -2
  105. package/dist/typescript/compiler.js.map +1 -0
  106. package/package.json +36 -11
  107. package/dist/common/compiler.d.ts.map +0 -1
  108. package/dist/common/compiler.js.map +0 -1
  109. package/dist/common/parser.d.ts.map +0 -1
  110. package/dist/common/parser.js.map +0 -1
  111. package/dist/common/parser_template_helpers.d.ts +0 -2
  112. package/dist/common/parser_template_helpers.d.ts.map +0 -1
  113. package/dist/common/parser_template_helpers.js +0 -58
  114. package/dist/common/parser_template_helpers.js.map +0 -1
  115. package/dist/common/project.d.ts +0 -84
  116. package/dist/common/project.d.ts.map +0 -1
  117. package/dist/common/project.js +0 -179
  118. package/dist/common/project.js.map +0 -1
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parse = exports.getDefaultTemplate = exports.parseRenderFunction = exports.isFigmaConnectFile = exports.parseComponentMetadata = exports.parsePropsObject = exports.InternalError = exports.ParserError = void 0;
6
+ exports.parse = exports.getDefaultTemplate = exports.parseRenderFunction = exports.isFigmaConnectFile = exports.parseComponentMetadata = 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("../connect/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
+ const path_1 = __importDefault(require("path"));
13
14
  class ParserError extends Error {
14
15
  constructor(message, context) {
15
16
  super(message);
@@ -152,23 +153,6 @@ function getImportsForIdentifiers({ sourceFile }, _identifiers) {
152
153
  }
153
154
  return imports;
154
155
  }
155
- /**
156
- * Parsers the `props` field of a `figma.connect()` call, returning a mapping of
157
- * prop names to their respective intrinsic types
158
- *
159
- * @param objectLiteral An object literal expression
160
- * @param parserContext Parser context
161
- * @returns
162
- */
163
- function parsePropsObject(objectLiteral, parserContext) {
164
- const { sourceFile, checker } = parserContext;
165
- return (0, compiler_1.convertObjectLiteralToJs)(objectLiteral, sourceFile, checker, (valueNode) => {
166
- if (typescript_1.default.isCallExpression(valueNode)) {
167
- return (0, intrinsics_1.parseIntrinsic)(valueNode, parserContext);
168
- }
169
- });
170
- }
171
- exports.parsePropsObject = parsePropsObject;
172
156
  /**
173
157
  * Extract metadata about the referenced React component. Used by both the
174
158
  * Code Connect and Storybook commands.
@@ -179,7 +163,7 @@ exports.parsePropsObject = parsePropsObject;
179
163
  * @param node The node being parsed. Used for error logging.
180
164
  * @returns Metadata object
181
165
  */
182
- async function parseComponentMetadata(node, { checker, sourceFile }) {
166
+ async function parseComponentMetadata(node, { checker, sourceFile, absPath }) {
183
167
  let componentSymbol = checker.getSymbolAtLocation(node);
184
168
  let componentSourceFile = sourceFile;
185
169
  let component = '';
@@ -241,7 +225,9 @@ async function parseComponentMetadata(node, { checker, sourceFile }) {
241
225
  else {
242
226
  componentDeclaration = componentSymbol?.declarations?.[0];
243
227
  }
244
- const source = componentSourceFile.fileName;
228
+ // On Windows, fileName is relative whereas on Mac it's absolute, so we need
229
+ // to use path.resolve to build an absolute path
230
+ const source = path_1.default.join(path_1.default.resolve(componentSourceFile.fileName, absPath), path_1.default.basename(componentSourceFile.fileName));
245
231
  if (!source) {
246
232
  throw new InternalError(`Could not find source file for component ${component} - is this file included in the directory passed to \`figma connect <dir>\`?`);
247
233
  }
@@ -381,15 +367,22 @@ function parseRenderFunction(exp, parserContext, propMappings) {
381
367
  // Keep track of any props which are referenced in the example so that we can
382
368
  // insert the appropriate `figma.properties` call in the JS template
383
369
  const referencedProps = new Set();
384
- function createPropPlaceholder(name, node, wrapInJsxExpression = false) {
385
- const mappedProp = propMappings && propMappings[name];
370
+ function createPropPlaceholder({ name, node, wrapInJsxExpression = false, }) {
371
+ let propReferenceName = name;
372
+ // for nested prop references like `nested.prop`, we only want to look for
373
+ // the prop mapping of `nested`, but include the full `nested.prop` in the
374
+ // __PROP__ call
375
+ if (name.includes('.')) {
376
+ propReferenceName = name.split('.')[0];
377
+ }
378
+ const mappedProp = propMappings && propMappings[propReferenceName];
386
379
  if (!mappedProp) {
387
- throw new ParserError(`Could not find prop mapping for ${name} in the props object`, {
380
+ throw new ParserError(`Could not find prop mapping for ${propReferenceName} in the props object`, {
388
381
  sourceFile,
389
382
  node,
390
383
  });
391
384
  }
392
- referencedProps.add(name);
385
+ referencedProps.add(propReferenceName);
393
386
  const callExpression = typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier('__PROP__'), undefined, [typescript_1.default.factory.createStringLiteral(name)]);
394
387
  if (wrapInJsxExpression) {
395
388
  return typescript_1.default.factory.createJsxExpression(undefined, callExpression);
@@ -415,8 +408,13 @@ function parseRenderFunction(exp, parserContext, propMappings) {
415
408
  if (typescript_1.default.isIdentifier(propsParameter.name) &&
416
409
  typescript_1.default.isPropertyAccessExpression(node) &&
417
410
  node.expression.getText().startsWith(propsParameter.name.getText())) {
411
+ // nested notation e.g `props.nested.prop`
412
+ if (typescript_1.default.isPropertyAccessExpression(node.expression)) {
413
+ const name = `${node.expression.name.getText()}.${node.name.getText()}`;
414
+ return createPropPlaceholder({ name, node });
415
+ }
418
416
  const name = node.name.getText();
419
- return createPropPlaceholder(name, node);
417
+ return createPropPlaceholder({ name, node });
420
418
  }
421
419
  // `props[""]` notation
422
420
  if (typescript_1.default.isIdentifier(propsParameter.name) &&
@@ -424,15 +422,15 @@ function parseRenderFunction(exp, parserContext, propMappings) {
424
422
  node.expression.getText().startsWith(propsParameter.name.getText()) &&
425
423
  typescript_1.default.isStringLiteral(node.argumentExpression)) {
426
424
  const name = (0, compiler_1.stripQuotes)(node.argumentExpression);
427
- return createPropPlaceholder(name, node);
425
+ return createPropPlaceholder({ name, node });
428
426
  }
429
427
  // object destructuring references
430
428
  if (typescript_1.default.isObjectBindingPattern(propsParameter.name) &&
431
429
  typescript_1.default.isJsxExpression(node) &&
432
430
  node.expression &&
433
- propsParameter.name.elements.find((el) => el.name.getText() === node.expression?.getText())) {
431
+ propsParameter.name.elements.find((el) => node.expression?.getText().startsWith(el.name.getText()))) {
434
432
  const name = node.expression.getText();
435
- return createPropPlaceholder(name, node, true);
433
+ return createPropPlaceholder({ name, node, wrapInJsxExpression: true });
436
434
  }
437
435
  // Replaces {...props} with all the prop mapped props we know about,
438
436
  // e.g. <Button {...props} /> becomes:
@@ -455,7 +453,11 @@ function parseRenderFunction(exp, parserContext, propMappings) {
455
453
  ? Object.keys(propMappings)
456
454
  .filter((prop) => !propsToExclude.includes(prop))
457
455
  .map((prop) => {
458
- return typescript_1.default.factory.createJsxAttribute(typescript_1.default.factory.createIdentifier(prop), createPropPlaceholder(prop, node, true));
456
+ return typescript_1.default.factory.createJsxAttribute(typescript_1.default.factory.createIdentifier(prop), createPropPlaceholder({
457
+ name: prop,
458
+ node,
459
+ wrapInJsxExpression: true,
460
+ }));
459
461
  })
460
462
  : [];
461
463
  if (propMappings) {
@@ -502,17 +504,26 @@ function parseRenderFunction(exp, parserContext, propMappings) {
502
504
  // parser_template_helpers.ts)
503
505
  exampleCode = exampleCode.replace(
504
506
  // match " reactPropName={__PROP__("figmaPropName")}" and extract the names
505
- / ([A-Za-z0-9]+)=\{__PROP__\("([A-Za-z0-9]+)"\)\}/g, (_match, reactPropName, figmaPropName) => {
507
+ / ([A-Za-z0-9]+)=\{__PROP__\("([A-Za-z0-9_\.]+)"\)\}/g, (_match, reactPropName, figmaPropName) => {
506
508
  return `\${_fcc_renderReactProp('${reactPropName}', ${figmaPropName})}`;
507
509
  });
508
510
  // Replace React children placeholders like `${__PROP__("propName")}` with
509
- // `${propName}`. These never need special treatment based on their type.
510
- exampleCode = exampleCode.replace(/\{__PROP__\("([A-Za-z]+)"\)\}/g, '${$1}');
511
+ // calls to _fcc_renderReactChildren, which renders them correctly (see
512
+ // parser_template_helpers.ts)
513
+ exampleCode = exampleCode.replace(/\{__PROP__\("([A-Za-z_\.]+)"\)\}/g, (_match, figmaPropName) => {
514
+ return `\${_fcc_renderReactChildren(${figmaPropName})}`;
515
+ });
516
+ // Replace object values like `{ prop: __PROP__("propName") }` with
517
+ // `{ prop: ${propName} }`. These never need special treatment based on their type.
518
+ exampleCode = exampleCode.replace(/([A-Za-z0-9]+):\s+__PROP__\("([A-Za-z_\.]+)"\)/g, (_match, objectKey, figmaPropName) => {
519
+ return `${objectKey}: \${${figmaPropName}}`;
520
+ });
511
521
  // Generate the template code
512
522
  // Inject React-specific template helper functions
513
523
  templateCode = (0, parser_template_helpers_1.getParsedTemplateHelpersString)() + '\n\n';
514
524
  // Require the template API
515
525
  templateCode += `const figma = require('figma')\n\n`;
526
+ let nestedLayerCount = 0;
516
527
  // Then we output `const propName = figma.properties.<kind>('propName')` calls
517
528
  // for each referenced prop, so these are accessible to the template code.
518
529
  if (propMappings && referencedProps.size > 0) {
@@ -524,7 +535,20 @@ function parseRenderFunction(exp, parserContext, propMappings) {
524
535
  node: exp,
525
536
  });
526
537
  }
527
- templateCode += `const ${prop} = ${(0, intrinsics_1.intrinsicToString)(propMapping)}\n`;
538
+ if (propMapping.kind === intrinsics_1.IntrinsicKind.NestedProps) {
539
+ // the actual layer name in figma could have a bunch of special characters in it,
540
+ // and if we try to normalize it to a valid JS identifier, it could conflict with
541
+ // other variables in the template code. So we generate a unique variable name
542
+ // for each nested layer reference instead.
543
+ const nestedLayerRef = `nestedLayer${nestedLayerCount++}`;
544
+ templateCode += `const ${nestedLayerRef} = figma.currentLayer.__find__("${propMapping.args.layer}")\n`;
545
+ templateCode += `const ${prop} = {
546
+ ${Object.entries(propMapping.args.props).map(([key, intrinsic]) => `${key}: ${(0, intrinsics_1.intrinsicToString)(intrinsic, nestedLayerRef)}\n`)}
547
+ }\n`;
548
+ }
549
+ else {
550
+ templateCode += `const ${prop} = ${(0, intrinsics_1.intrinsicToString)(propMapping)}\n`;
551
+ }
528
552
  });
529
553
  templateCode += '\n';
530
554
  }
@@ -541,122 +565,141 @@ function parseRenderFunction(exp, parserContext, propMappings) {
541
565
  };
542
566
  }
543
567
  exports.parseRenderFunction = parseRenderFunction;
544
- /**
545
- * This wrapper function ensures that property names are type checked in case
546
- * we make changes to the `figma.connect()` interface.
547
- */
548
- function makeConfigPropertyParser({ key, predicate, errorMessage, }) {
549
- return (configArg, parserContext) => {
550
- if (!configArg) {
551
- return undefined;
568
+ function followIdentifierToStringLiteralDeclaration(node, parserContext, errMessage) {
569
+ const { checker } = parserContext;
570
+ let result = node;
571
+ if (node && typescript_1.default.isIdentifier(node)) {
572
+ const symbol = checker.getSymbolAtLocation(node);
573
+ if (symbol) {
574
+ const decl = symbol.valueDeclaration;
575
+ if (decl &&
576
+ typescript_1.default.isVariableDeclaration(decl) &&
577
+ decl.initializer &&
578
+ typescript_1.default.isStringLiteral(decl.initializer)) {
579
+ result = decl.initializer;
580
+ }
552
581
  }
553
- return (0, compiler_1.parsePropertyOfType)({
554
- objectLiteralNode: configArg,
555
- propertyName: key,
556
- predicate,
557
- parserContext,
558
- required: false,
559
- errorMessage,
582
+ }
583
+ // If we followed the identifier to its declaration and it's not a string literal,
584
+ // throw an error
585
+ if (!result || !typescript_1.default.isStringLiteral(result)) {
586
+ throw new ParserError(errMessage, {
587
+ node: result,
588
+ sourceFile: parserContext.sourceFile,
560
589
  });
561
- };
590
+ }
591
+ return result;
562
592
  }
563
- function makeFunctionArgumentParser({ index, predicate, required, errorMessage, }) {
564
- return (node, parserContext) => {
565
- return (0, compiler_1.parseFunctionArgument)(node, parserContext, index, predicate, required, errorMessage);
593
+ function parseFigmaConnectArgs(node, parserContext) {
594
+ const required = true;
595
+ 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:
596
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``);
597
+ let figmaNodeUrlArg;
598
+ let componentArg;
599
+ let configObjArgIndex;
600
+ // This function has two signatures. If the first arg is a string literal, it's the Figma node URL, and
601
+ // it won't have a component reference.
602
+ if (typescript_1.default.isStringLiteral(first)) {
603
+ figmaNodeUrlArg = first;
604
+ componentArg = undefined;
605
+ configObjArgIndex = 1;
606
+ }
607
+ else {
608
+ // If the first argument is not a string literal, it must be a component reference,
609
+ // and the second argument must be the Figma node URL
610
+ componentArg = first;
611
+ configObjArgIndex = 2;
612
+ const invalidTypeErrorMsg = `The second argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be a string literal (the URL of the Figma node). Example usage:
613
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``;
614
+ let arg = (0, compiler_1.parseFunctionArgument)(node, parserContext, 1, (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isStringLiteral]), required, invalidTypeErrorMsg);
615
+ figmaNodeUrlArg = followIdentifierToStringLiteralDeclaration(arg, parserContext, invalidTypeErrorMsg);
616
+ }
617
+ 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:
618
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', { render: () => <Button /> })\``);
619
+ return {
620
+ componentArg,
621
+ figmaNodeUrlArg,
622
+ configObjArg,
566
623
  };
567
624
  }
568
- function makeArgParser() {
625
+ function parseConfigObjectArg(configArg, parserContext) {
626
+ if (!configArg) {
627
+ return {
628
+ propsArg: undefined,
629
+ exampleArg: undefined,
630
+ variantArg: undefined,
631
+ importsArg: undefined,
632
+ linksArg: undefined,
633
+ };
634
+ }
635
+ const propsArg = (0, compiler_1.parsePropertyOfType)({
636
+ objectLiteralNode: configArg,
637
+ propertyName: 'props',
638
+ predicate: typescript_1.default.isObjectLiteralExpression,
639
+ parserContext,
640
+ required: false,
641
+ errorMessage: `The 'props' property must be an object literal. Example usage:
642
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
643
+ props: {
644
+ disabled: figma.boolean('Disabled'),
645
+ text: figma.string('TextContent'),
646
+ }
647
+ })\``,
648
+ });
649
+ const exampleArg = (0, compiler_1.parsePropertyOfType)({
650
+ objectLiteralNode: configArg,
651
+ propertyName: 'example',
652
+ predicate: (0, compiler_1.isOneOf)([typescript_1.default.isArrowFunction, typescript_1.default.isFunctionExpression]),
653
+ parserContext,
654
+ required: false,
655
+ errorMessage: `The 'example' property must be an inline function or arrow function. Example usage:
656
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
657
+ example: () => <Button />
658
+ })\``,
659
+ });
660
+ const variantArg = (0, compiler_1.parsePropertyOfType)({
661
+ objectLiteralNode: configArg,
662
+ propertyName: 'variant',
663
+ predicate: typescript_1.default.isObjectLiteralExpression,
664
+ parserContext,
665
+ required: false,
666
+ errorMessage: `The 'variant' property must be an object literal. Example usage:
667
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
668
+ variant: {
669
+ "Has Icon": true
670
+ }
671
+ })\``,
672
+ });
673
+ const linksArg = (0, compiler_1.parsePropertyOfType)({
674
+ objectLiteralNode: configArg,
675
+ propertyName: 'links',
676
+ predicate: typescript_1.default.isArrayLiteralExpression,
677
+ parserContext,
678
+ required: false,
679
+ errorMessage: `The 'links' property must be an array literal. Example usage:
680
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
681
+ links: [
682
+ { name: 'Storybook', url: 'https://storybook.com' }
683
+ ]
684
+ })\``,
685
+ });
686
+ const importsArg = (0, compiler_1.parsePropertyOfType)({
687
+ objectLiteralNode: configArg,
688
+ propertyName: 'imports',
689
+ predicate: typescript_1.default.isArrayLiteralExpression,
690
+ parserContext,
691
+ required: false,
692
+ errorMessage: `The 'imports' property must be an array literal. Example usage:
693
+ \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
694
+ imports: ['import { Button } from "./Button"']
695
+ })\``,
696
+ });
569
697
  return {
570
- parseComponent: makeFunctionArgumentParser({
571
- index: 0,
572
- predicate: (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isPropertyAccessExpression]),
573
- required: true,
574
- errorMessage: `\`${intrinsics_1.FIGMA_CONNECT_CALL}\` must be called with a reference to a Component as the first argument. Example usage:
575
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``,
576
- }),
577
- parseFigmaNodeUrl: (node, parserContext) => {
578
- const { checker } = parserContext;
579
- const invalidTypeErrorMsg = `The second argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be a string literal (the URL of the Figma node). Example usage:
580
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1')\``;
581
- const index = 1;
582
- const required = true;
583
- let arg = (0, compiler_1.parseFunctionArgument)(node, parserContext, index, (0, compiler_1.isOneOf)([typescript_1.default.isIdentifier, typescript_1.default.isStringLiteral]), required, invalidTypeErrorMsg);
584
- if (arg && typescript_1.default.isIdentifier(arg)) {
585
- const symbol = checker.getSymbolAtLocation(arg);
586
- if (symbol) {
587
- const decl = symbol.valueDeclaration;
588
- if (decl &&
589
- typescript_1.default.isVariableDeclaration(decl) &&
590
- decl.initializer &&
591
- typescript_1.default.isStringLiteral(decl.initializer)) {
592
- arg = decl.initializer;
593
- }
594
- }
595
- }
596
- // If we followed the identifier to its declaration and it's not a string literal,
597
- // throw an error
598
- if (!arg || !typescript_1.default.isStringLiteral(arg)) {
599
- throw new ParserError(invalidTypeErrorMsg, {
600
- node: arg,
601
- sourceFile: parserContext.sourceFile,
602
- });
603
- }
604
- return arg;
605
- },
606
- parseConfig: makeFunctionArgumentParser({
607
- index: 2,
608
- predicate: typescript_1.default.isObjectLiteralExpression,
609
- required: false,
610
- errorMessage: `The third argument to ${intrinsics_1.FIGMA_CONNECT_CALL}() must be an object literal. Example usage:
611
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', { render: () => <Button /> })\``,
612
- }),
613
- parseProps: makeConfigPropertyParser({
614
- key: 'props',
615
- predicate: typescript_1.default.isObjectLiteralExpression,
616
- errorMessage: `The 'props' property must be an object literal. Example usage:
617
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
618
- props: {
619
- disabled: Figma.boolean('Disabled'),
620
- text: Figma.string('TextContent'),
621
- }
622
- })\``,
623
- }),
624
- parseExample: makeConfigPropertyParser({
625
- key: 'example',
626
- predicate: (0, compiler_1.isOneOf)([typescript_1.default.isArrowFunction, typescript_1.default.isFunctionExpression]),
627
- errorMessage: `The 'example' property must be an inline function or arrow function. Example usage:
628
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
629
- render: () => <Button />
630
- })\``,
631
- }),
632
- parseVariant: makeConfigPropertyParser({
633
- key: 'variant',
634
- predicate: typescript_1.default.isObjectLiteralExpression,
635
- errorMessage: `The 'variant' property must be an object literal. Example usage:
636
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
637
- variant: {
638
- "Has Icon": true
639
- }
640
- })\``,
641
- }),
642
- parseLinks: makeConfigPropertyParser({
643
- key: 'links',
644
- predicate: typescript_1.default.isArrayLiteralExpression,
645
- errorMessage: `The 'links' property must be an array literal. Example usage:
646
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
647
- links: [
648
- { name: 'Storybook', url: 'https://storybook.com' }
649
- ]
650
- })\``,
651
- }),
652
- parseImports: makeConfigPropertyParser({
653
- key: 'imports',
654
- predicate: typescript_1.default.isArrayLiteralExpression,
655
- errorMessage: `The 'imports' property must be an array literal. Example usage:
656
- \`${intrinsics_1.FIGMA_CONNECT_CALL}(Button, 'https://www.figma.com/file/123?node-id=1-1', {
657
- imports: ['import { Button } from "./Button"']
658
- })\``,
659
- }),
698
+ propsArg,
699
+ exampleArg,
700
+ variantArg,
701
+ linksArg,
702
+ importsArg,
660
703
  };
661
704
  }
662
705
  function getDefaultTemplate(componentMetadata) {
@@ -666,26 +709,21 @@ function getDefaultTemplate(componentMetadata) {
666
709
  exports.getDefaultTemplate = getDefaultTemplate;
667
710
  async function parseDoc(node, parserContext, repoUrl) {
668
711
  const { checker, sourceFile, config } = parserContext;
669
- // Parse the arguments to the `figma.connect()` call
670
- const args = makeArgParser();
712
+ // Parse the arguments to the `Figma.connect()` call
713
+ const { componentArg, figmaNodeUrlArg, configObjArg } = parseFigmaConnectArgs(node, parserContext);
671
714
  // The ones with ! are definitely defined because their parser fn has required: true,
672
715
  // but I couldn't work out how to model that in TypeScript
673
- const componentArg = args.parseComponent(node, parserContext);
674
- const figmaNodeUrlArg = args.parseFigmaNodeUrl(node, parserContext);
675
- const configObjArg = args.parseConfig(node, parserContext);
676
- const propsArg = configObjArg && args.parseProps(configObjArg, parserContext);
677
- const exampleArg = configObjArg && args.parseExample(configObjArg, parserContext);
678
- const variantArg = configObjArg && args.parseVariant(configObjArg, parserContext);
679
- const linksArg = configObjArg && args.parseLinks(configObjArg, parserContext);
680
- const importsArg = configObjArg && args.parseImports(configObjArg, parserContext);
716
+ const { propsArg, exampleArg, variantArg, linksArg, importsArg } = parseConfigObjectArg(configObjArg, parserContext);
681
717
  let figmaNode = (0, compiler_1.stripQuotes)(figmaNodeUrlArg);
682
- if (config?.documentUrlSubstitutions) {
718
+ if (config.documentUrlSubstitutions) {
683
719
  Object.entries(config.documentUrlSubstitutions).forEach(([from, to]) => {
684
720
  figmaNode = figmaNode.replace(from, to);
685
721
  });
686
722
  }
687
- const metadata = await parseComponentMetadata(componentArg, parserContext);
688
- const props = propsArg ? parsePropsObject(propsArg, parserContext) : undefined;
723
+ const metadata = componentArg
724
+ ? await parseComponentMetadata(componentArg, parserContext)
725
+ : undefined;
726
+ const props = propsArg ? (0, intrinsics_1.parsePropsObject)(propsArg, parserContext) : undefined;
689
727
  const render = exampleArg ? parseRenderFunction(exampleArg, parserContext, props) : undefined;
690
728
  const variant = variantArg ? parseVariant(variantArg, sourceFile, checker) : undefined;
691
729
  const links = linksArg ? parseLinks(linksArg, parserContext) : undefined;
@@ -694,15 +732,18 @@ async function parseDoc(node, parserContext, repoUrl) {
694
732
  resolvedImports = parseImports(importsArg, parserContext);
695
733
  }
696
734
  else {
697
- // Use auto-generated imports
698
735
  // If no template function was provided, construct one and add the import
699
736
  // statement for the component
700
- let imports = render?.imports ?? getImportsForIdentifiers(parserContext, [metadata.component]);
701
- if (imports.length === 0) {
737
+ let imports = render?.imports
738
+ ? render.imports
739
+ : metadata !== undefined
740
+ ? getImportsForIdentifiers(parserContext, [metadata.component])
741
+ : [];
742
+ if (imports.length === 0 && metadata?.component) {
702
743
  // If no imports were found, it might mean that the component is not imported, or
703
744
  // that the `figma.connect` call is in the same file as the component. In the latter
704
745
  // case - we'll want to generate one
705
- const fileName = metadata.source.split('/').pop()?.split('.')[0];
746
+ const fileName = metadata.source.split(path_1.default.sep).pop()?.split('.')[0];
706
747
  imports = [
707
748
  {
708
749
  statement: `import { ${metadata.component} } from './${fileName}'`,
@@ -720,18 +761,27 @@ async function parseDoc(node, parserContext, repoUrl) {
720
761
  }
721
762
  return imp.statement;
722
763
  }) ?? [];
723
- if (resolvedImports.length === 0) {
724
- 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`);
725
- }
726
764
  }
727
- const template = render?.code ?? getDefaultTemplate(metadata);
765
+ if (resolvedImports.length === 0 && metadata?.component) {
766
+ 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`);
767
+ }
768
+ let template;
769
+ if (render?.code) {
770
+ template = render.code;
771
+ }
772
+ else if (metadata) {
773
+ template = getDefaultTemplate(metadata);
774
+ }
775
+ else {
776
+ throw new ParserError(`${intrinsics_1.FIGMA_CONNECT_CALL}() requires either a component argument or an example function`, { sourceFile, node });
777
+ }
728
778
  return {
729
779
  figmaNode,
730
780
  label: 'React',
731
781
  language: 'typescript',
732
- component: metadata.component,
733
- source: (0, project_1.getRemoteFileUrl)(metadata.source, repoUrl),
734
- sourceLocation: { line: metadata.line },
782
+ component: metadata?.component,
783
+ source: metadata?.source ? (0, project_1.getRemoteFileUrl)(metadata.source, repoUrl) : '',
784
+ sourceLocation: metadata?.line ? { line: metadata.line } : { line: -1 },
735
785
  variant,
736
786
  template,
737
787
  templateData: {
@@ -748,7 +798,7 @@ async function parseDoc(node, parserContext, repoUrl) {
748
798
  },
749
799
  };
750
800
  }
751
- async function parse(program, file, repoUrl, config, debug) {
801
+ async function parse(program, file, config, absPath, repoUrl, debug) {
752
802
  const sourceFile = program.getSourceFile(file);
753
803
  if (!sourceFile) {
754
804
  throw new InternalError(`Could not find source file for ${file}`);
@@ -757,6 +807,7 @@ async function parse(program, file, repoUrl, config, debug) {
757
807
  checker: program.getTypeChecker(),
758
808
  sourceFile,
759
809
  config,
810
+ absPath,
760
811
  };
761
812
  const codeConnectObjects = [];
762
813
  const nodes = [parserContext.sourceFile];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/react/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type FCCValue = string | number | boolean | undefined | ReturnType<typeof _fcc_jsxElement | typeof _fcc_function | typeof _fcc_identifier | typeof _fcc_object | typeof _fcc_templateString>;
2
+ export declare function _fcc_jsxElement(value: string): {
3
+ readonly value: string;
4
+ readonly type: "jsx-element";
5
+ };
6
+ export declare function _fcc_function(value: string): {
7
+ readonly value: string;
8
+ readonly type: "function";
9
+ };
10
+ export declare function _fcc_identifier(value: string): {
11
+ readonly value: string;
12
+ readonly type: "identifier";
13
+ };
14
+ export declare function _fcc_object(value: string): {
15
+ readonly value: string;
16
+ readonly type: "object";
17
+ };
18
+ export declare function _fcc_templateString(value: string): {
19
+ readonly value: string;
20
+ readonly type: "template-string";
21
+ };
22
+ export declare function getParsedTemplateHelpersString(): string;
23
+ //# sourceMappingURL=parser_template_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser_template_helpers.d.ts","sourceRoot":"","sources":["../../src/react/parser_template_helpers.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,UAAU,CACN,OAAO,eAAe,GACtB,OAAO,aAAa,GACpB,OAAO,eAAe,GACtB,OAAO,WAAW,GAClB,OAAO,mBAAmB,CAC7B,CAAA;AAEL,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM;;;EAK5C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM;;;EAK1C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM;;;EAK5C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM;;;EAKxC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM;;;EAKhD;AAqFD,wBAAgB,8BAA8B,WAY7C"}