@figma/code-connect 1.3.12 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js.map +1 -1
- package/dist/client/external.js.map +1 -1
- package/dist/client/figma_client.js +1 -1
- package/dist/client/figma_client.js.map +1 -1
- package/dist/commands/connect.d.ts +5 -4
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +242 -24
- package/dist/commands/connect.js.map +1 -1
- package/dist/common/error_formatting.d.ts +34 -0
- package/dist/common/error_formatting.d.ts.map +1 -0
- package/dist/common/error_formatting.js +115 -0
- package/dist/common/error_formatting.js.map +1 -0
- package/dist/common/fetch.js.map +1 -1
- package/dist/common/logging.js.map +1 -1
- package/dist/common/tsconfig.js.map +1 -1
- package/dist/common/updates.js.map +1 -1
- package/dist/connect/api.d.ts +13 -0
- package/dist/connect/api.d.ts.map +1 -1
- package/dist/connect/api.js.map +1 -1
- package/dist/connect/create.d.ts.map +1 -1
- package/dist/connect/create.js +2 -1
- package/dist/connect/create.js.map +1 -1
- package/dist/connect/create_common.js.map +1 -1
- package/dist/connect/delete_docs.d.ts +2 -1
- package/dist/connect/delete_docs.d.ts.map +1 -1
- package/dist/connect/delete_docs.js +2 -2
- package/dist/connect/delete_docs.js.map +1 -1
- package/dist/connect/external_types.d.ts +1 -0
- package/dist/connect/external_types.d.ts.map +1 -1
- package/dist/connect/external_types.js +4 -0
- package/dist/connect/external_types.js.map +1 -1
- package/dist/connect/figma_connect.d.ts +4 -1
- package/dist/connect/figma_connect.d.ts.map +1 -1
- package/dist/connect/figma_connect.js.map +1 -1
- package/dist/connect/figma_rest_api.d.ts +1 -1
- package/dist/connect/figma_rest_api.d.ts.map +1 -1
- package/dist/connect/figma_rest_api.js +5 -1
- package/dist/connect/figma_rest_api.js.map +1 -1
- package/dist/connect/helpers.js.map +1 -1
- package/dist/connect/index_common.js.map +1 -1
- package/dist/connect/intrinsics.d.ts +9 -2
- package/dist/connect/intrinsics.d.ts.map +1 -1
- package/dist/connect/intrinsics.js +19 -0
- package/dist/connect/intrinsics.js.map +1 -1
- package/dist/connect/label_language_mapping.d.ts +48 -0
- package/dist/connect/label_language_mapping.d.ts.map +1 -0
- package/dist/connect/label_language_mapping.js +76 -0
- package/dist/connect/label_language_mapping.js.map +1 -0
- package/dist/connect/migration_helpers.d.ts +41 -0
- package/dist/connect/migration_helpers.d.ts.map +1 -0
- package/dist/connect/migration_helpers.js +339 -0
- package/dist/connect/migration_helpers.js.map +1 -0
- package/dist/connect/modifiers.js.map +1 -1
- package/dist/connect/parser_common.d.ts +1 -0
- package/dist/connect/parser_common.d.ts.map +1 -1
- package/dist/connect/parser_common.js +1 -0
- package/dist/connect/parser_common.js.map +1 -1
- package/dist/connect/parser_executable_types.d.ts +11 -5
- package/dist/connect/parser_executable_types.d.ts.map +1 -1
- package/dist/connect/parser_executable_types.js +5 -1
- package/dist/connect/parser_executable_types.js.map +1 -1
- package/dist/connect/parser_executables.js.map +1 -1
- package/dist/connect/project.d.ts +11 -0
- package/dist/connect/project.d.ts.map +1 -1
- package/dist/connect/project.js +22 -4
- package/dist/connect/project.js.map +1 -1
- package/dist/connect/upload.d.ts +2 -1
- package/dist/connect/upload.d.ts.map +1 -1
- package/dist/connect/upload.js +12 -6
- package/dist/connect/upload.js.map +1 -1
- package/dist/connect/validation.d.ts +1 -1
- package/dist/connect/validation.d.ts.map +1 -1
- package/dist/connect/validation.js +2 -2
- package/dist/connect/validation.js.map +1 -1
- package/dist/connect/wizard/autolinking.js.map +1 -1
- package/dist/connect/wizard/embeddings.d.ts +2 -1
- package/dist/connect/wizard/embeddings.d.ts.map +1 -1
- package/dist/connect/wizard/embeddings.js +2 -2
- package/dist/connect/wizard/embeddings.js.map +1 -1
- package/dist/connect/wizard/helpers.js.map +1 -1
- package/dist/connect/wizard/prop_mapping.js.map +1 -1
- package/dist/connect/wizard/prop_mapping_helpers.d.ts +2 -1
- package/dist/connect/wizard/prop_mapping_helpers.d.ts.map +1 -1
- package/dist/connect/wizard/prop_mapping_helpers.js +5 -3
- package/dist/connect/wizard/prop_mapping_helpers.js.map +1 -1
- package/dist/connect/wizard/run_wizard.d.ts.map +1 -1
- package/dist/connect/wizard/run_wizard.js +6 -3
- package/dist/connect/wizard/run_wizard.js.map +1 -1
- package/dist/connect/wizard/signature_extraction.js.map +1 -1
- package/dist/html/create.js.map +1 -1
- package/dist/html/external.d.ts +1 -1
- package/dist/html/external.d.ts.map +1 -1
- package/dist/html/external.js +1 -0
- package/dist/html/external.js.map +1 -1
- package/dist/html/index_html.js.map +1 -1
- package/dist/html/parser.d.ts +2 -2
- package/dist/html/parser.d.ts.map +1 -1
- package/dist/html/parser.js +15 -6
- package/dist/html/parser.js.map +1 -1
- package/dist/html/parser_template_helpers.js.map +1 -1
- package/dist/html/template_literal.js.map +1 -1
- package/dist/html/types.js.map +1 -1
- package/dist/parser_scripts/compose_errors.js.map +1 -1
- package/dist/parser_scripts/get_file_if_exists.js.map +1 -1
- package/dist/parser_scripts/get_gradlew_path.js.map +1 -1
- package/dist/parser_scripts/get_swift_parser_dir.js.map +1 -1
- package/dist/react/create.d.ts.map +1 -1
- package/dist/react/create.js +3 -0
- package/dist/react/create.js.map +1 -1
- package/dist/react/external.d.ts +2 -2
- package/dist/react/external.d.ts.map +1 -1
- package/dist/react/external.js +2 -1
- package/dist/react/external.js.map +1 -1
- package/dist/react/index_react.js.map +1 -1
- package/dist/react/parser.d.ts +3 -3
- package/dist/react/parser.d.ts.map +1 -1
- package/dist/react/parser.js +13 -8
- package/dist/react/parser.js.map +1 -1
- package/dist/react/parser_template_helpers.d.ts.map +1 -1
- package/dist/react/parser_template_helpers.js +4 -1
- package/dist/react/parser_template_helpers.js.map +1 -1
- package/dist/react/types.js.map +1 -1
- package/dist/storybook/convert.d.ts.map +1 -1
- package/dist/storybook/convert.js +3 -2
- package/dist/storybook/convert.js.map +1 -1
- package/dist/storybook/external.js.map +1 -1
- package/dist/typescript/compiler.js.map +1 -1
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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","sourcesContent":["import * as commander from 'commander'\nimport fs from 'fs'\nimport { upload } from '../connect/upload'\nimport { validateDocs } from '../connect/validation'\nimport { createCodeConnectFromUrl } from '../connect/create'\nimport {\n CodeConnectConfig,\n CodeConnectExecutableParserConfig,\n CodeConnectParserlessConfig,\n CodeConnectReactConfig,\n ProjectInfo,\n getProjectInfo,\n getReactProjectInfo,\n getRemoteFileUrl,\n getTsProgram,\n} from '../connect/project'\nimport { LogLevel, error, exitWithError, highlight, logger, success } from '../common/logging'\nimport { CodeConnectJSON } from '../connect/figma_connect'\nimport { convertStorybookFiles } from '../storybook/convert'\nimport { delete_docs } from '../connect/delete_docs'\nimport { runWizard } from '../connect/wizard/run_wizard'\nimport { callParser, handleMessages } from '../connect/parser_executables'\nimport { fromError } from 'zod-validation-error'\nimport { ParseRequestPayload, ParseResponsePayload } from '../connect/parser_executable_types'\nimport z from 'zod'\nimport path from 'path'\nimport { withUpdateCheck } from '../common/updates'\nimport { exitWithFeedbackMessage } from '../connect/helpers'\nimport { parseHtmlDoc } from '../html/parser'\nimport {\n InternalError,\n isFigmaConnectFile,\n parseCodeConnect,\n ParseFn,\n ParserError,\n ResolveImportsFn,\n} from '../connect/parser_common'\nimport { findAndResolveImports, parseReactDoc } from '../react/parser'\nimport { CodeConnectLabel, getInferredLanguageForRaw } from '../connect/label_language_mapping'\nimport { groupCodeConnectObjectsByFigmaUrl, writeTemplateFile } from '../connect/migration_helpers'\nimport { convertRemoteFileUrlToRelativePath } from '../connect/wizard/run_wizard'\nimport { getGitRepoAbsolutePath } from '../connect/project'\n\nexport type BaseCommand = commander.Command & {\n token: string\n verbose: boolean\n outFile: string\n outDir: string\n config: string\n dryRun: boolean\n dir: string\n jsonFile: string\n skipUpdateCheck: boolean\n exitOnUnreadableFiles: boolean\n apiUrl?: string\n removeProps?: boolean\n}\n\nfunction addBaseCommand(command: commander.Command, name: string, description: string) {\n return command\n .command(name)\n .description(description)\n .usage('[options]')\n .option('-r --dir <dir>', 'directory to parse')\n .option('-t --token <token>', 'figma access token')\n .option('-v --verbose', 'enable verbose logging for debugging')\n .option('-o --outFile <file>', 'specify a file to output generated Code Connect')\n .option('-o --outDir <dir>', 'specify a directory to output generated Code Connect')\n .option('-c --config <path>', 'path to a figma config file')\n .option('-a --api-url <url>', 'custom Figma API URL to use instead of https://api.figma.com/v1')\n .option('--skip-update-check', 'skips checking for an updated version of the Figma CLI')\n .option(\n '--exit-on-unreadable-files',\n 'exit if any Code Connect files cannot be parsed. We recommend using this option for CI/CD.',\n )\n .option('--dry-run', 'tests publishing without actually publishing')\n .addHelpText(\n 'before',\n 'For feedback or bugs, please raise an issue: https://github.com/figma/code-connect/issues',\n )\n}\n\nexport function addConnectCommandToProgram(program: commander.Command) {\n // Main command, invoked with `figma connect`\n const connectCommand = addBaseCommand(program, 'connect', 'Figma Code Connect').action(\n withUpdateCheck(runWizard),\n )\n\n // Sub-commands, invoked with e.g. `figma connect publish`\n addBaseCommand(\n connectCommand,\n 'publish',\n 'Run Code Connect locally to find any files that have figma connections and publish them to Figma. ' +\n 'By default this looks for a config file named \"figma.config.json\", and uses the `include` and `exclude` fields to determine which files to parse. ' +\n 'If no config file is found, this parses the current directory. An optional `--dir` flag can be used to specify a directory to parse.',\n )\n .option('--skip-validation', 'skip validation of Code Connect docs')\n .option('-l --label <label>', 'label to apply to the published files')\n .option(\n '-b --batch-size <batch_size>',\n 'optional batch size (in number of documents) to use when uploading. Use this if you hit \"request too large\" errors. See README for more information.',\n )\n .action(withUpdateCheck(handlePublish))\n\n addBaseCommand(\n connectCommand,\n 'unpublish',\n 'Run to find any files that have figma connections and unpublish them from Figma. ' +\n 'By default this looks for a config file named \"figma.config.json\", and uses the `include` and `exclude` fields to determine which files to parse. ' +\n 'If no config file is found, this parses the current directory. An optional `--dir` flag can be used to specify a directory to parse.',\n )\n .option(\n '--node <link_to_node>',\n 'specify the node to unpublish. This will unpublish for the specified label.',\n )\n .option('-l --label <label>', 'label to unpublish for')\n .action(withUpdateCheck(handleUnpublish))\n\n addBaseCommand(\n connectCommand,\n 'parse',\n 'Run Code Connect locally to find any files that have figma connections, then converts them to JSON and outputs to stdout.',\n )\n .option('-l --label <label>', 'label to apply to the parsed files')\n .action(withUpdateCheck(handleParse))\n\n addBaseCommand(\n connectCommand,\n 'create',\n 'Generate a Code Connect file with boilerplate in the current directory for a Figma node URL',\n )\n .argument('<figma-node-url>', 'Figma node URL to create the Code Connect file from')\n .action(withUpdateCheck(handleCreate))\n\n addBaseCommand(\n connectCommand,\n 'migrate',\n 'Parse Code Connect files and migrate their templates into .figma.js files that can be published directly without parsing.',\n )\n .argument('[pattern]', 'glob pattern to match files (optional, uses config if not provided)')\n .option('-l --label <label>', 'label to apply to the migrated templates')\n .option(\n '--output-dir <dir>',\n 'directory to write template files (default: same directory as source file)',\n )\n .option('--remove-props', 'remove __props metadata blocks from migrated templates')\n .action(withUpdateCheck(handleMigrate))\n}\n\nexport function getAccessToken(cmd: BaseCommand) {\n return cmd.token ?? process.env.FIGMA_ACCESS_TOKEN\n}\n\nfunction getAccessTokenOrExit(cmd: BaseCommand) {\n const token = getAccessToken(cmd)\n\n if (!token) {\n exitWithError(\n `Couldn't find a Figma access token. Please provide one with \\`--token <access_token>\\` or set the FIGMA_ACCESS_TOKEN environment variable`,\n )\n }\n\n return token\n}\n\nexport function getDir(cmd: BaseCommand) {\n return cmd.dir ?? process.cwd()\n}\n\nfunction setupHandler(cmd: BaseCommand) {\n if (cmd.verbose) {\n logger.setLogLevel(LogLevel.Debug)\n }\n}\n\ntype ParserDoc = z.infer<typeof ParseResponsePayload>['docs'][0]\n\nfunction transformDocFromParser(\n doc: ParserDoc,\n remoteUrl: string,\n config: CodeConnectConfig,\n): ParserDoc {\n let source = doc.source\n if (source) {\n try {\n const url = new URL(source)\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n throw new Error('Invalid URL scheme')\n }\n } catch (e) {\n source = getRemoteFileUrl(source, remoteUrl)\n }\n }\n\n // TODO This logic is duplicated in parser.ts parseDoc due to some type issues\n let figmaNode = doc.figmaNode\n if (config.documentUrlSubstitutions) {\n Object.entries(config.documentUrlSubstitutions).forEach(([from, to]) => {\n figmaNode = figmaNode.replace(from, to)\n })\n }\n\n return {\n ...doc,\n source,\n figmaNode,\n }\n}\n\nexport function parseRawFile(\n filePath: string,\n label: string | undefined,\n config?: CodeConnectConfig,\n dir?: string,\n): CodeConnectJSON {\n const fileContent = fs.readFileSync(filePath, 'utf-8')\n const lines = fileContent.split('\\n')\n const fields: { url?: string; component?: string; source?: string } = {}\n let templateStartIndex = 0\n\n // Parse consecutive comment lines at the start of the file\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim()\n // Match pattern: // fieldName=value\n const match = line.match(/^\\/\\/\\s*(\\w+)=(.+)$/)\n if (match) {\n const [, fieldName, fieldValue] = match\n const normalizedFieldName = fieldName.toLowerCase()\n if (\n normalizedFieldName === 'url' ||\n normalizedFieldName === 'component' ||\n normalizedFieldName === 'source'\n ) {\n fields[normalizedFieldName] = fieldValue.trim()\n }\n templateStartIndex = i + 1\n } else if (line === '' || line.startsWith('//')) {\n // Allow blank lines or other comments, but don't increment template start\n continue\n } else {\n // First non-comment line found\n break\n }\n }\n\n if (!fields.url) {\n throw new Error(\n `Missing required url field in ${filePath}. Please add a // url=... comment to the top of the file.`,\n )\n }\n let figmaNodeUrl = fields.url\n\n const template = lines.slice(templateStartIndex).join('\\n')\n\n // Apply documentUrlSubstitutions if provided\n if (config?.documentUrlSubstitutions) {\n Object.entries(config.documentUrlSubstitutions).forEach(([from, to]) => {\n figmaNodeUrl = figmaNodeUrl.replace(from, to)\n })\n }\n\n // Determine effective label from parameter, config, or default\n const effectiveLabel = label || config?.label || CodeConnectLabel.Code\n\n const language = config?.language || getInferredLanguageForRaw(effectiveLabel)\n\n return {\n figmaNode: figmaNodeUrl,\n component: fields.component,\n template,\n // nestable by default unless user specifies in template\n // (templateData.nestable AND template.metadata.nestable need to\n // be true for instance to be nested)\n templateData: { nestable: true, isParserless: true },\n language,\n label: effectiveLabel,\n source: fields.source,\n sourceLocation: { line: -1 },\n metadata: {\n cliVersion: require('../../package.json').version,\n },\n }\n}\n\nexport async function getCodeConnectObjects(\n cmd: BaseCommand & { label?: string },\n projectInfo: ProjectInfo,\n silent = false,\n skipTemplateHelpers = false,\n): Promise<CodeConnectJSON[]> {\n if (cmd.jsonFile) {\n try {\n const docsFromJson = JSON.parse(fs.readFileSync(cmd.jsonFile, 'utf8'))\n // Strip internal fields from JSON input\n return docsFromJson.map((doc: CodeConnectJSON) => {\n const { _codeConnectFilePath, ...cleanDoc } = doc\n return cleanDoc as CodeConnectJSON\n })\n } catch (e) {\n logger.error('Failed to parse JSON file:', e)\n }\n }\n\n let codeConnectObjects: CodeConnectJSON[] = []\n\n if (projectInfo.config.parser === 'react') {\n codeConnectObjects = await getReactCodeConnectObjects(\n projectInfo as ProjectInfo<CodeConnectReactConfig>,\n cmd,\n silent,\n skipTemplateHelpers,\n )\n } else if (projectInfo.config.parser === 'html') {\n codeConnectObjects = await getCodeConnectObjectsFromParseFn({\n parseFn: parseHtmlDoc,\n fileExtension: 'ts',\n projectInfo,\n cmd,\n silent,\n skipTemplateHelpers,\n })\n } else {\n const payload: ParseRequestPayload = {\n mode: 'PARSE',\n paths: projectInfo.files,\n config: { ...projectInfo.config, skipTemplateHelpers },\n verbose: cmd.verbose,\n }\n\n try {\n const stdout = await callParser(\n // We use `as` because the React parser makes the types difficult\n // TODO remove once React is an executable parser\n projectInfo.config as CodeConnectExecutableParserConfig,\n payload,\n projectInfo.absPath,\n )\n\n const parsed = ParseResponsePayload.parse(stdout)\n\n const { hasErrors } = handleMessages(parsed.messages)\n\n if (hasErrors) {\n exitWithError('Errors encountered calling parser, exiting')\n }\n\n codeConnectObjects = parsed.docs.map((doc) => ({\n ...transformDocFromParser(doc, projectInfo.remoteUrl, projectInfo.config),\n metadata: {\n cliVersion: require('../../package.json').version,\n },\n }))\n } catch (e) {\n if (cmd.verbose) {\n console.trace(e)\n\n // Don't say to enable verbose if the user has already enabled it.\n exitWithError(`Error calling parser: ${e}.`)\n } else {\n exitWithError(\n `Error returned from parser: ${fromError(e)}. Try re-running the command with --verbose for more information.`,\n )\n }\n }\n }\n\n const rawTemplateFiles = projectInfo.files.filter(\n (f: string) => f.endsWith('.figma.js') || f.endsWith('.figma.template.js'),\n )\n\n if (rawTemplateFiles.length > 0) {\n // Resolve the label before parsing so language inference works correctly\n const resolvedLabel = cmd.label || projectInfo.config.label\n\n const rawTemplateDocs = rawTemplateFiles.map((file) => {\n const doc = parseRawFile(file, resolvedLabel, projectInfo.config, projectInfo.absPath)\n // Store the Code Connect file path for migration purposes\n doc._codeConnectFilePath = file\n\n if (!silent || cmd.verbose) {\n logger.info(success(file))\n }\n return doc\n })\n\n codeConnectObjects = codeConnectObjects.concat(rawTemplateDocs)\n }\n\n if (cmd.label || projectInfo.config.label) {\n logger.info(`Using label \"${cmd.label || projectInfo.config.label}\"`)\n codeConnectObjects.forEach((doc) => {\n doc.label = cmd.label || projectInfo.config.label || doc.label\n })\n }\n\n if (projectInfo.config.language) {\n logger.info(`Using language \"${projectInfo.config.language}\"`)\n codeConnectObjects.forEach((doc) => {\n doc.language = projectInfo.config.language || doc.language\n })\n }\n\n return codeConnectObjects\n}\n\ntype GetCodeConnectObjectsArgs = {\n parseFn: ParseFn\n resolveImportsFn?: ResolveImportsFn\n fileExtension: string | string[]\n projectInfo: ProjectInfo<CodeConnectConfig>\n cmd: BaseCommand\n silent?: boolean\n skipTemplateHelpers?: boolean\n}\n\n// React/Storybook and HTML parsers are handled as special cases for now, they\n// do not use the parser executable model but instead directly call a function\n// in the code base. We may want to transition them to that model in future.\nasync function getCodeConnectObjectsFromParseFn({\n /** The function used to parse a source file into a Code Connect object */\n parseFn,\n /** Optional function used to resolve imports in a source file */\n resolveImportsFn,\n /** The file extension to filter for when checking if files should be parsed */\n fileExtension,\n /** Project info */\n projectInfo,\n /** The commander command object */\n cmd,\n /** Silences console output */\n silent = false,\n /** Skip template helpers (used for extract command) */\n skipTemplateHelpers = false,\n}: GetCodeConnectObjectsArgs) {\n const codeConnectObjects: CodeConnectJSON[] = []\n\n const tsProgram = getTsProgram(projectInfo)\n const { files, remoteUrl, config, absPath } = projectInfo\n\n for (const file of files.filter((f: string) => isFigmaConnectFile(tsProgram, f, fileExtension))) {\n try {\n const docs = await parseCodeConnect({\n program: tsProgram,\n file,\n config,\n parseFn,\n resolveImportsFn,\n absPath,\n parseOptions: {\n repoUrl: remoteUrl,\n debug: cmd.verbose,\n silent,\n skipTemplateHelpers,\n },\n })\n\n codeConnectObjects.push(...docs)\n if (!silent || cmd.verbose) {\n logger.info(success(file))\n }\n } catch (e) {\n if (!silent || cmd.verbose) {\n logger.error(`❌ ${file}`)\n if (e instanceof ParserError) {\n if (cmd.verbose) {\n console.trace(e)\n } else {\n logger.error(e.toString())\n }\n if (cmd.exitOnUnreadableFiles) {\n logger.info('Exiting due to unreadable files')\n process.exit(1)\n }\n } else {\n if (cmd.verbose) {\n console.trace(e)\n } else {\n logger.error(new InternalError(String(e)).toString())\n }\n }\n }\n }\n }\n\n return codeConnectObjects\n}\n\nasync function getReactCodeConnectObjects(\n projectInfo: ProjectInfo<CodeConnectReactConfig>,\n cmd: BaseCommand,\n silent = false,\n skipTemplateHelpers = false,\n) {\n const codeConnectObjects = await getCodeConnectObjectsFromParseFn({\n parseFn: parseReactDoc,\n resolveImportsFn: findAndResolveImports,\n fileExtension: ['tsx', 'jsx'],\n projectInfo,\n cmd,\n silent,\n skipTemplateHelpers,\n })\n\n const storybookCodeConnectObjects = await convertStorybookFiles({\n projectInfo: getReactProjectInfo(projectInfo),\n })\n\n const allCodeConnectObjects = codeConnectObjects.concat(storybookCodeConnectObjects)\n\n return allCodeConnectObjects\n}\n\nasync function handlePublish(\n cmd: BaseCommand & {\n skipValidation: boolean\n label: string\n batchSize: string\n },\n) {\n setupHandler(cmd)\n\n let dir = getDir(cmd)\n const projectInfo = await getProjectInfo(dir, cmd.config)\n\n const codeConnectObjects = await getCodeConnectObjects(cmd, projectInfo)\n\n if (codeConnectObjects.length === 0) {\n logger.warn(\n `No Code Connect files found in ${dir} - Make sure you have configured \\`include\\` and \\`exclude\\` in your figma.config.json file correctly, or that you are running in a directory that contains Code Connect files.`,\n )\n process.exit(0)\n }\n\n if (cmd.dryRun) {\n logger.info(`Files that would be published:`)\n logger.info(codeConnectObjects.map((o) => `- ${o.component} (${o.figmaNode})`).join('\\n'))\n }\n\n const accessToken = getAccessTokenOrExit(cmd)\n\n if (cmd.skipValidation) {\n logger.info('Validation skipped')\n } else {\n logger.info('Validating Code Connect files...')\n var start = new Date().getTime()\n const valid = await validateDocs(\n cmd,\n accessToken,\n codeConnectObjects,\n cmd.apiUrl || projectInfo.config.apiUrl,\n )\n if (!valid) {\n exitWithFeedbackMessage(1)\n } else {\n var end = new Date().getTime()\n var time = end - start\n logger.info(`All Code Connect files are valid (${time}ms)`)\n }\n }\n\n if (cmd.dryRun) {\n logger.info(`Dry run complete`)\n process.exit(0)\n }\n\n let batchSize\n if (cmd.batchSize) {\n batchSize = parseInt(cmd.batchSize, 10)\n if (isNaN(batchSize)) {\n logger.error('Error: failed to parse batch-size. batch-size passed must be a number')\n exitWithFeedbackMessage(1)\n }\n }\n\n upload({\n accessToken,\n docs: codeConnectObjects,\n batchSize: batchSize,\n verbose: cmd.verbose,\n apiUrl: cmd.apiUrl || projectInfo.config.apiUrl,\n })\n}\n\nasync function handleUnpublish(cmd: BaseCommand & { node: string; label: string }) {\n setupHandler(cmd)\n\n let dir = getDir(cmd)\n\n if (cmd.dryRun) {\n logger.info(`Files that would be unpublished:`)\n }\n\n let nodesToDeleteRelevantInfo\n\n const projectInfo = await getProjectInfo(dir, cmd.config)\n\n if (cmd.node) {\n if (!cmd.label) {\n exitWithError('Label is required when specifying a node')\n }\n nodesToDeleteRelevantInfo = [{ figmaNode: cmd.node, label: cmd.label }]\n } else {\n const codeConnectObjects = await getCodeConnectObjects(cmd, projectInfo)\n\n nodesToDeleteRelevantInfo = codeConnectObjects.map((doc) => ({\n figmaNode: doc.figmaNode,\n label: cmd.label || projectInfo.config.label || doc.label,\n }))\n\n if (cmd.label || projectInfo.config.label) {\n logger.info(`Using label ${cmd.label || projectInfo.config.label}`)\n }\n\n if (cmd.dryRun) {\n logger.info(`Dry run complete`)\n process.exit(0)\n }\n }\n\n const accessToken = getAccessTokenOrExit(cmd)\n\n delete_docs({\n accessToken,\n docs: nodesToDeleteRelevantInfo,\n apiUrl: cmd.apiUrl || projectInfo.config.apiUrl,\n })\n}\n\nasync function handleParse(cmd: BaseCommand & { label: string }) {\n setupHandler(cmd)\n\n const dir = cmd.dir ?? process.cwd()\n const projectInfo = await getProjectInfo(dir, cmd.config)\n\n const codeConnectObjects = await getCodeConnectObjects(cmd, projectInfo)\n\n if (cmd.dryRun) {\n logger.info(`Dry run complete`)\n process.exit(0)\n }\n\n if (cmd.outFile) {\n fs.writeFileSync(cmd.outFile, JSON.stringify(codeConnectObjects, null, 2))\n logger.info(`Wrote Code Connect JSON to ${highlight(cmd.outFile)}`)\n } else {\n // don't format the output, so it can be piped to other commands\n console.log(JSON.stringify(codeConnectObjects, undefined, 2))\n }\n}\n\nasync function handleCreate(nodeUrl: string, cmd: BaseCommand) {\n setupHandler(cmd)\n\n const dir = cmd.dir ?? process.cwd()\n const projectInfo = await getProjectInfo(dir, cmd.config)\n\n if (cmd.dryRun) {\n process.exit(0)\n }\n\n const accessToken = getAccessTokenOrExit(cmd)\n\n return createCodeConnectFromUrl({\n accessToken,\n // We remove \\s to allow users to paste URLs inside quotes - the terminal\n // paste will add backslashes, which the quotes preserve, but expected user\n // behaviour would be to strip the quotes\n figmaNodeUrl: nodeUrl.replace(/\\\\/g, ''),\n outFile: cmd.outFile,\n outDir: cmd.outDir,\n projectInfo,\n cmd,\n })\n}\n/**\n * Migrate native parser Code Connect files to parserless. For each found doc:\n * - Replace helpers with figma.* versions\n * - Migrate v1 syntax to v2 (equivalent but more readable)\n * - Format as valid parserless file w/ url=\"\" comment\n * - Name collisions are skipped, unless file is from migration (in which case add \"_1\")\n */\nasync function handleMigrate(pattern: string | undefined, cmd: BaseCommand) {\n setupHandler(cmd)\n\n const dir = cmd.dir ?? process.cwd()\n let projectInfo = await getProjectInfo(dir, cmd.config)\n const documentUrlSubstitutions = projectInfo.config.documentUrlSubstitutions\n\n // Clear documentUrlSubstitutions so we preserve original URLs in migrated templates\n projectInfo = {\n ...projectInfo,\n config: {\n ...projectInfo.config,\n documentUrlSubstitutions: {},\n },\n }\n\n // If a glob pattern is provided, override the project files\n if (pattern) {\n const { globSync } = require('glob')\n const files = globSync(pattern, {\n cwd: dir,\n absolute: true,\n nodir: true,\n })\n\n if (files.length === 0) {\n exitWithError(`No files found matching pattern: ${pattern}`)\n }\n\n logger.info(`Found ${files.length} file(s) matching pattern: ${pattern}`)\n projectInfo = {\n ...projectInfo,\n files,\n }\n }\n\n // Parse the files to get Code Connect objects\n const allCodeConnectObjects = await getCodeConnectObjects(cmd, projectInfo, false, true)\n\n const codeConnectObjectsByFigmaUrl = groupCodeConnectObjectsByFigmaUrl(allCodeConnectObjects)\n\n const totalVariants = Object.values(codeConnectObjectsByFigmaUrl).reduce(\n (acc, obj) => acc + obj.variants.length,\n 0,\n )\n\n // TODO support variants (for now filtering on non-variants)\n const codeConnectObjects = Object.values(codeConnectObjectsByFigmaUrl).flatMap((obj) =>\n obj.main ? [obj.main] : [],\n )\n\n if (codeConnectObjects.length === 0) {\n exitWithError('No Code Connect objects found to migrate')\n }\n\n logger.info(`Found ${codeConnectObjects.length} Code Connect object(s) to migrate`)\n let migratedCount = 0\n let skippedCount = 0\n const errors: string[] = []\n\n // Track file paths created during this migration run\n const filePathsCreated = new Set<string>()\n\n // Get git root path for converting remote URLs to local paths\n const gitRootPath = getGitRepoAbsolutePath(dir)\n\n // Migrate each Code Connect object to a template file\n for (const doc of codeConnectObjects) {\n try {\n // Skip if no template (shouldn't happen, but be safe)\n if (!doc.template) {\n logger.warn(`Skipping ${doc.figmaNode}: no template found`)\n skippedCount++\n continue\n }\n\n // Determine local source path for output location\n let localSourcePath: string | undefined\n\n if (doc._codeConnectFilePath) {\n // Use the Code Connect file path directly (preferred)\n localSourcePath = doc._codeConnectFilePath\n } else if (doc.source && gitRootPath) {\n // Fallback: Convert remote file URL to local path\n const relativePath = convertRemoteFileUrlToRelativePath({\n remoteFileUrl: doc.source,\n gitRootPath,\n dir,\n })\n if (relativePath) {\n // Convert relative path to absolute path for writeTemplateFile\n localSourcePath = path.resolve(dir, relativePath)\n }\n }\n\n const { outputPath, skipped } = writeTemplateFile(\n doc,\n cmd.outDir,\n dir,\n localSourcePath,\n filePathsCreated,\n cmd.removeProps,\n )\n\n if (skipped) {\n logger.warn(`Skipping ${outputPath}: file already exists`)\n skippedCount++\n } else {\n logger.info(`${success('✓')} Migrated to ${highlight(outputPath)}`)\n migratedCount++\n }\n } catch (error) {\n const errorMsg = `Failed to migrate ${doc.figmaNode}: ${error}`\n logger.error(errorMsg)\n errors.push(errorMsg)\n }\n }\n\n if (migratedCount > 0) {\n if (cmd.outDir) {\n const configFilePath = path.join(cmd.outDir, 'figma.config.json')\n if (fs.existsSync(configFilePath)) {\n logger.warn(`Config file already exists at ${highlight(configFilePath)}`)\n } else {\n const { language: docLanguage, label } = codeConnectObjects[0]\n\n const language = getInferredLanguageForRaw(label, docLanguage)\n const config: CodeConnectParserlessConfig = {\n include: ['**/*.figma.js'],\n language,\n label,\n ...(documentUrlSubstitutions && Object.keys(documentUrlSubstitutions).length > 0\n ? { documentUrlSubstitutions }\n : {}),\n }\n fs.writeFileSync(configFilePath, JSON.stringify({ codeConnect: config }, null, 2))\n logger.info(`${success('✓')} Wrote Figma config to ${highlight(configFilePath)}`)\n }\n }\n }\n\n // Summary\n console.log('')\n logger.info(\n `Migration complete: ${success(`${migratedCount} migrated`)}, ${skippedCount} skipped`,\n )\n\n if (totalVariants > 0) {\n logger.error(\n `${error(`${totalVariants} variant restriction(s)`)} found, but not supported by the migration script yet`,\n )\n }\n\n if (errors.length > 0) {\n console.log('')\n logger.error(`Encountered ${errors.length} error(s):`)\n errors.forEach((err) => logger.error(` ${err}`))\n process.exit(1)\n }\n\n if (migratedCount === 0) {\n exitWithError('No files were migrated')\n }\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a file operation error
|
|
3
|
+
*/
|
|
4
|
+
export declare function formatFileError(opts: {
|
|
5
|
+
operation: 'read' | 'write' | 'parse' | 'access';
|
|
6
|
+
filePath: string;
|
|
7
|
+
error: Error;
|
|
8
|
+
suggestion?: string;
|
|
9
|
+
}): string;
|
|
10
|
+
/**
|
|
11
|
+
* Formats a network/API error
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatNetworkError(opts: {
|
|
14
|
+
operation: string;
|
|
15
|
+
url?: string;
|
|
16
|
+
statusCode?: number;
|
|
17
|
+
error: Error;
|
|
18
|
+
suggestion?: string;
|
|
19
|
+
}): string;
|
|
20
|
+
/**
|
|
21
|
+
* Formats a validation error
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatValidationError(opts: {
|
|
24
|
+
item: string;
|
|
25
|
+
errors: string[];
|
|
26
|
+
suggestion?: string;
|
|
27
|
+
}): string;
|
|
28
|
+
/**
|
|
29
|
+
* Extracts the most relevant error message from a stack of errors
|
|
30
|
+
* @param error - The error to extract a message from
|
|
31
|
+
* @param isVerbose - Whether verbose mode is already enabled (to avoid suggesting --verbose when it's already on)
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractErrorMessage(error: unknown, isVerbose?: boolean): string;
|
|
34
|
+
//# sourceMappingURL=error_formatting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error_formatting.d.ts","sourceRoot":"","sources":["../../src/common/error_formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAkBT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAuCT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAaT;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,UAAQ,GAAG,MAAM,CA6B7E"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatFileError = formatFileError;
|
|
4
|
+
exports.formatNetworkError = formatNetworkError;
|
|
5
|
+
exports.formatValidationError = formatValidationError;
|
|
6
|
+
exports.extractErrorMessage = extractErrorMessage;
|
|
7
|
+
/**
|
|
8
|
+
* Formats a file operation error
|
|
9
|
+
*/
|
|
10
|
+
function formatFileError(opts) {
|
|
11
|
+
const { operation, filePath, error: err, suggestion } = opts;
|
|
12
|
+
let output = `❌ Failed to ${operation} file: ${filePath}\nError: ${err.message}`;
|
|
13
|
+
const defaultSuggestions = {
|
|
14
|
+
read: 'Ensure the file exists and is readable.',
|
|
15
|
+
access: 'Ensure the file exists and is readable.',
|
|
16
|
+
write: 'Ensure the directory exists and is writable.',
|
|
17
|
+
parse: 'Check the file syntax.',
|
|
18
|
+
};
|
|
19
|
+
const suggestionText = suggestion || defaultSuggestions[operation];
|
|
20
|
+
if (suggestionText) {
|
|
21
|
+
output += `\n💡 ${suggestionText}`;
|
|
22
|
+
}
|
|
23
|
+
return output;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Formats a network/API error
|
|
27
|
+
*/
|
|
28
|
+
function formatNetworkError(opts) {
|
|
29
|
+
const { operation, url, statusCode, error: err, suggestion } = opts;
|
|
30
|
+
let output = `❌ Network error: ${operation} failed`;
|
|
31
|
+
if (statusCode) {
|
|
32
|
+
output += ` (HTTP ${statusCode})`;
|
|
33
|
+
}
|
|
34
|
+
if (url) {
|
|
35
|
+
output += `\nURL: ${url}`;
|
|
36
|
+
}
|
|
37
|
+
output += `\nError: ${err.message}`;
|
|
38
|
+
const defaultSuggestions = {
|
|
39
|
+
'401': 'Check your Figma access token is valid.',
|
|
40
|
+
'403': 'Check your Figma access token has the necessary permissions.',
|
|
41
|
+
'404': 'Resource not found. Verify the URL or node ID is correct.',
|
|
42
|
+
'5xx': 'Figma server error. Try again later.',
|
|
43
|
+
default: 'Check your internet connection.',
|
|
44
|
+
};
|
|
45
|
+
let suggestionText = suggestion;
|
|
46
|
+
if (!suggestionText && statusCode) {
|
|
47
|
+
if (statusCode === 401 || statusCode === 403) {
|
|
48
|
+
suggestionText = defaultSuggestions['401'];
|
|
49
|
+
}
|
|
50
|
+
else if (statusCode === 404) {
|
|
51
|
+
suggestionText = defaultSuggestions['404'];
|
|
52
|
+
}
|
|
53
|
+
else if (statusCode >= 500) {
|
|
54
|
+
suggestionText = defaultSuggestions['5xx'];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
suggestionText = defaultSuggestions.default;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (!suggestionText) {
|
|
61
|
+
suggestionText = defaultSuggestions.default;
|
|
62
|
+
}
|
|
63
|
+
output += `\n💡 ${suggestionText}`;
|
|
64
|
+
return output;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Formats a validation error
|
|
68
|
+
*/
|
|
69
|
+
function formatValidationError(opts) {
|
|
70
|
+
const { item, errors, suggestion } = opts;
|
|
71
|
+
let output = `⚠️ Validation failed for ${item}:`;
|
|
72
|
+
errors.forEach((err) => {
|
|
73
|
+
output += `\n - ${err}`;
|
|
74
|
+
});
|
|
75
|
+
if (suggestion) {
|
|
76
|
+
output += `\n💡 ${suggestion}`;
|
|
77
|
+
}
|
|
78
|
+
return output;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extracts the most relevant error message from a stack of errors
|
|
82
|
+
* @param error - The error to extract a message from
|
|
83
|
+
* @param isVerbose - Whether verbose mode is already enabled (to avoid suggesting --verbose when it's already on)
|
|
84
|
+
*/
|
|
85
|
+
function extractErrorMessage(error, isVerbose = false) {
|
|
86
|
+
if (error instanceof Error) {
|
|
87
|
+
// Check if it's a Zod error by checking for issues property
|
|
88
|
+
if ('issues' in error && Array.isArray(error.issues)) {
|
|
89
|
+
const issues = error.issues;
|
|
90
|
+
const errorMessages = issues.map((issue) => {
|
|
91
|
+
// Format path with bracket notation for array indices
|
|
92
|
+
const path = issue.path
|
|
93
|
+
.map((segment, index) => {
|
|
94
|
+
if (typeof segment === 'number') {
|
|
95
|
+
return `[${segment}]`;
|
|
96
|
+
}
|
|
97
|
+
return index === 0 ? segment : `.${segment}`;
|
|
98
|
+
})
|
|
99
|
+
.join('');
|
|
100
|
+
return `${issue.message} at "${path}"`;
|
|
101
|
+
});
|
|
102
|
+
const baseMessage = `Validation error: ${errorMessages.join('; ')}.`;
|
|
103
|
+
// Only suggest --verbose if it's not already enabled
|
|
104
|
+
return isVerbose
|
|
105
|
+
? baseMessage
|
|
106
|
+
: `${baseMessage} Try re-running the command with --verbose for more information.`;
|
|
107
|
+
}
|
|
108
|
+
return error.message;
|
|
109
|
+
}
|
|
110
|
+
if (typeof error === 'string') {
|
|
111
|
+
return error;
|
|
112
|
+
}
|
|
113
|
+
return String(error);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=error_formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error_formatting.js","sourceRoot":"","sources":["../../src/common/error_formatting.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Formats a file operation error\n */\nexport function formatFileError(opts: {\n operation: 'read' | 'write' | 'parse' | 'access'\n filePath: string\n error: Error\n suggestion?: string\n}): string {\n const { operation, filePath, error: err, suggestion } = opts\n\n let output = `❌ Failed to ${operation} file: ${filePath}\\nError: ${err.message}`\n\n const defaultSuggestions: Record<string, string> = {\n read: 'Ensure the file exists and is readable.',\n access: 'Ensure the file exists and is readable.',\n write: 'Ensure the directory exists and is writable.',\n parse: 'Check the file syntax.',\n }\n\n const suggestionText = suggestion || defaultSuggestions[operation]\n if (suggestionText) {\n output += `\\n💡 ${suggestionText}`\n }\n\n return output\n}\n\n/**\n * Formats a network/API error\n */\nexport function formatNetworkError(opts: {\n operation: string\n url?: string\n statusCode?: number\n error: Error\n suggestion?: string\n}): string {\n const { operation, url, statusCode, error: err, suggestion } = opts\n\n let output = `❌ Network error: ${operation} failed`\n\n if (statusCode) {\n output += ` (HTTP ${statusCode})`\n }\n if (url) {\n output += `\\nURL: ${url}`\n }\n output += `\\nError: ${err.message}`\n\n const defaultSuggestions: Record<string, string> = {\n '401': 'Check your Figma access token is valid.',\n '403': 'Check your Figma access token has the necessary permissions.',\n '404': 'Resource not found. Verify the URL or node ID is correct.',\n '5xx': 'Figma server error. Try again later.',\n default: 'Check your internet connection.',\n }\n\n let suggestionText = suggestion\n if (!suggestionText && statusCode) {\n if (statusCode === 401 || statusCode === 403) {\n suggestionText = defaultSuggestions['401']\n } else if (statusCode === 404) {\n suggestionText = defaultSuggestions['404']\n } else if (statusCode >= 500) {\n suggestionText = defaultSuggestions['5xx']\n } else {\n suggestionText = defaultSuggestions.default\n }\n } else if (!suggestionText) {\n suggestionText = defaultSuggestions.default\n }\n\n output += `\\n💡 ${suggestionText}`\n\n return output\n}\n\n/**\n * Formats a validation error\n */\nexport function formatValidationError(opts: {\n item: string\n errors: string[]\n suggestion?: string\n}): string {\n const { item, errors, suggestion } = opts\n\n let output = `⚠️ Validation failed for ${item}:`\n errors.forEach((err) => {\n output += `\\n - ${err}`\n })\n\n if (suggestion) {\n output += `\\n💡 ${suggestion}`\n }\n\n return output\n}\n\n/**\n * Extracts the most relevant error message from a stack of errors\n * @param error - The error to extract a message from\n * @param isVerbose - Whether verbose mode is already enabled (to avoid suggesting --verbose when it's already on)\n */\nexport function extractErrorMessage(error: unknown, isVerbose = false): string {\n if (error instanceof Error) {\n // Check if it's a Zod error by checking for issues property\n if ('issues' in error && Array.isArray((error as any).issues)) {\n const issues = (error as any).issues\n const errorMessages = issues.map((issue: any) => {\n // Format path with bracket notation for array indices\n const path = issue.path\n .map((segment: string | number, index: number) => {\n if (typeof segment === 'number') {\n return `[${segment}]`\n }\n return index === 0 ? segment : `.${segment}`\n })\n .join('')\n return `${issue.message} at \"${path}\"`\n })\n const baseMessage = `Validation error: ${errorMessages.join('; ')}.`\n // Only suggest --verbose if it's not already enabled\n return isVerbose\n ? baseMessage\n : `${baseMessage} Try re-running the command with --verbose for more information.`\n }\n return error.message\n }\n if (typeof error === 'string') {\n return error\n }\n return String(error)\n}\n"]}
|
package/dist/common/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/common/fetch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/common/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { ProxyAgent, setGlobalDispatcher } from 'undici'\n\ntype Method = 'POST' | 'GET' | 'PUT' | 'DELETE' | 'post' | 'get' | 'put' | 'delete'\n\ntype Options<OptionsT extends RequestInit = RequestInit> = OptionsT & {\n /* Set the query string of the request from an object */\n query?: Record<string, any>\n}\n\nclass FetchError extends Error {\n constructor(\n public response: Response,\n public data: Record<any, any> | undefined,\n ) {\n super()\n }\n}\n\nexport const isFetchError = (error: unknown): error is FetchError => {\n return error instanceof FetchError\n}\n\nexport function getProxyUrl() {\n return (\n process.env.HTTPS_PROXY ||\n process.env.HTTP_PROXY ||\n process.env.https_proxy ||\n process.env.http_proxy\n )\n}\n\n/**\n * Creates a ProxyAgent and sets it as the global dispatcher via unidici (which\n * affects fetch calls) if a proxy is set either in VS Code settings or as an\n * environment variable.\n */\nconst proxyUrl = getProxyUrl()\nconst agent = proxyUrl ? new ProxyAgent({ uri: proxyUrl }) : undefined\nif (agent) {\n setGlobalDispatcher(agent)\n}\n\n/**\n * Makes a request to the Figma API. This is used by other functions to make\n * various types of requests. We return both the response object, and the data\n * parsed as JSON, to make it easier to work with the response.\n */\nasync function makeRequestInternal<ResponseT = unknown>(\n url: string,\n method: Method,\n options: Options = {},\n body?: Record<any, any>,\n) {\n const urlObj = new URL(url)\n if (options?.query) {\n Object.entries(options.query).forEach(([key, value]) => {\n urlObj.searchParams.append(key, value as string)\n })\n }\n url = urlObj.toString()\n\n if (body) {\n options.body = JSON.stringify(body)\n }\n\n const response = await fetch(url, { ...options, method })\n if (!response.ok) {\n let data\n try {\n data = await response.json()\n } catch (e) {\n data = undefined\n }\n throw new FetchError(response, data)\n }\n\n const text = await response.text()\n const data = text ? (JSON.parse(text) as ResponseT) : ({} as ResponseT)\n\n return { response, data }\n}\n\nexport const request = {\n get: <MetaT>(url: string, options: Options = {}) => {\n return makeRequestInternal<MetaT>(url, 'GET', options)\n },\n post: <MetaT>(url: string, body: Record<any, any>, options: Options = {}) => {\n return makeRequestInternal<MetaT>(url, 'POST', options, body)\n },\n put: <MetaT>(url: string, body: Record<any, any>, options: Options = {}) => {\n return makeRequestInternal<MetaT>(url, 'PUT', options, body)\n },\n delete: <MetaT>(url: string, body?: Record<any, any>, options: Options = {}) => {\n return makeRequestInternal<MetaT>(url, 'DELETE', options, body)\n },\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/common/logging.ts"],"names":[],"mappings":";;;;;;AAwDA,sCAGC;AA3DD,kDAAyB;AACzB,qCAAiC;AACjC,uCAA+C;AAE/C,gFAAgF;AAChF,sCAAsC;AACtC,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAE9B,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,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,IAAA,YAAI,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC7B,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;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,SAAS,GAAG,CAAC;IACtD,cAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjB,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAA;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/common/logging.ts"],"names":[],"mappings":";;;;;;AAwDA,sCAGC;AA3DD,kDAAyB;AACzB,qCAAiC;AACjC,uCAA+C;AAE/C,gFAAgF;AAChF,sCAAsC;AACtC,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAE9B,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,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,IAAA,YAAI,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC7B,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;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,SAAS,GAAG,CAAC;IACtD,cAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjB,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAA;AAChC,CAAC","sourcesContent":["import chalk from 'chalk'\nimport { Console } from 'console'\nimport { exitWithUpdateCheck } from './updates'\n\n// Redirect all console output to stderr, so that JSON output to stdout in parse\n// mode can be piped to other commands\nconst console = new Console(process.stderr)\n\nexport const error = chalk.red\nexport const success = chalk.green\nexport const info = chalk.white\nexport const warn = chalk.yellow\nexport const debug = chalk.gray\nexport const verbose = chalk.cyan\nexport const highlight = chalk.bold\nexport const reset = chalk.reset\nexport const underline = chalk.underline\n\nexport enum LogLevel {\n Nothing = 0,\n Error = 1,\n Warn = 2,\n Info = 3,\n Debug = 4,\n}\n\nlet logLevel: LogLevel = LogLevel.Info\n\nexport const logger = {\n setLogLevel: (level: LogLevel) => {\n logLevel = level\n },\n error: (...msgs: unknown[]) => {\n if (logLevel >= LogLevel.Error) console.error(error(...msgs))\n },\n warn: (...msgs: unknown[]) => {\n if (logLevel >= LogLevel.Warn) console.warn(warn(...msgs))\n },\n info: (...msgs: unknown[]) => {\n if (logLevel >= LogLevel.Info) console.info(info(...msgs))\n },\n infoForce: (...msgs: unknown[]) => {\n console.info(info(...msgs))\n },\n debug: (...msgs: unknown[]) => {\n if (logLevel >= LogLevel.Debug) console.debug(debug(...msgs))\n },\n}\n\n/**\n * Exit the process with an error message. The `never` type tells TypeScript\n * that code after this will not be executed.\n *\n * @param msg Error message\n * @param errorCode Optional command exit code, defaults to 1\n */\nexport function exitWithError(msg: string, errorCode = 1): never {\n logger.error(msg)\n exitWithUpdateCheck(errorCode)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../src/common/tsconfig.ts"],"names":[],"mappings":";;;;;AAIA,4CAgBC;AApBD,4CAAmB;AACnB,sDAA4B;AAC5B,gDAAuB;AAEvB,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,IAAI,YAAY,GAAuB,SAAS,CAAA;IAEhD,iBAAM,CAAC,IAAI,CACT,CAAC,UAAU,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;QAExD,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,YAAY,GAAG,SAAS,CAAA;YACxB,OAAO,iBAAM,CAAC,IAAI,CAAA;QACpB,CAAC;IACH,CAAC,EACD,EAAE,GAAG,EAAE,GAAG,EAAE,CACb,CAAA;IAED,OAAO,YAAY,CAAA;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../src/common/tsconfig.ts"],"names":[],"mappings":";;;;;AAIA,4CAgBC;AApBD,4CAAmB;AACnB,sDAA4B;AAC5B,gDAAuB;AAEvB,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,IAAI,YAAY,GAAuB,SAAS,CAAA;IAEhD,iBAAM,CAAC,IAAI,CACT,CAAC,UAAU,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;QAExD,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,YAAY,GAAG,SAAS,CAAA;YACxB,OAAO,iBAAM,CAAC,IAAI,CAAA;QACpB,CAAC;IACH,CAAC,EACD,EAAE,GAAG,EAAE,GAAG,EAAE,CACb,CAAA;IAED,OAAO,YAAY,CAAA;AACrB,CAAC","sourcesContent":["import fs from 'fs'\nimport findUp from 'find-up'\nimport path from 'path'\n\nexport function findTsConfigPath(dir: string): string | undefined {\n let tsConfigPath: string | undefined = undefined\n\n findUp.sync(\n (currentDir) => {\n const pathToTry = path.join(currentDir, 'tsconfig.json')\n\n if (fs.existsSync(pathToTry)) {\n tsConfigPath = pathToTry\n return findUp.stop\n }\n },\n { cwd: dir },\n )\n\n return tsConfigPath\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../src/common/updates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../src/common/updates.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk'\nimport { logger } from './logging'\nimport { execSync } from 'child_process'\nimport { compareVersions } from 'compare-versions'\nimport { BaseCommand } from '../commands/connect'\nimport { Command } from 'commander'\nimport { request } from './fetch'\n\nlet updatedVersionAvailable: string | false | undefined = undefined\nlet message: string | undefined = undefined\n\n// The type of the arguments passed to a command handler:\n// any arguments, then the command arguments, then the Command object\ntype CommandArgs<T extends BaseCommand> = [...any[], T, Command]\n\n// Wrap action handlers to check for updates or a message, and output a message\n// after the action if any are available\nexport function withUpdateCheck<T extends BaseCommand>(\n // The second to last argument is always the command args, but I couldn't work\n // out how to model this with Typescript here\n fn: (...args: any[]) => void | Promise<void>,\n) {\n return (...args: CommandArgs<T>) => {\n // Get the args passed at the command line (the second to last argument)\n const commandArgs = args[args.length - 2]\n // Anything before that is a regular arg\n const restArgs = args.slice(0, -2)\n\n if (commandArgs.skipUpdateCheck) {\n return fn(...restArgs, commandArgs)\n }\n\n startUpdateCheck()\n\n const result = fn(...restArgs, commandArgs)\n if (result instanceof Promise) {\n result.finally(waitAndCheckForUpdates)\n } else {\n waitAndCheckForUpdates()\n }\n }\n}\n\n// Start checking for updates in the background. We don't wait for this before\n// running the action, as we will show the result at the end\nfunction startUpdateCheck() {\n request\n .get<{ tag_name: string }>('https://api.github.com/repos/figma/code-connect/releases/latest')\n .then((response) => {\n const latestVersion = response.data.tag_name.replace(/^v/, '')\n const currentVersion = require('../../package.json').version\n\n if (compareVersions(latestVersion, currentVersion) === 1) {\n updatedVersionAvailable = latestVersion\n } else {\n updatedVersionAvailable = false\n }\n })\n .catch(() => {\n // Silently fail if we can't check for updates\n updatedVersionAvailable = false\n })\n}\n\n// Wait for up to 1 second for the result of update checking to be available,\n// and output a message if there is an update or a message. If there is no\n// result after the timeout, the app will exit.\nasync function waitAndCheckForUpdates() {\n for (let i = 0; i < 10; i++) {\n if (updatedVersionAvailable !== undefined) {\n break\n }\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n maybeShowUpdateMessage()\n}\n\n// Exit the process, first checking if there is an update or message available.\n// Unlike waitAndCheckForUpdates, this will not wait for the update check to\n// complete, so if the request has not completed yet, nothing will be shown.\n// This is to avoid confusion about when the process _actually_ exits.\nexport function exitWithUpdateCheck(errorCode = 1): never {\n maybeShowUpdateMessage()\n process.exit(errorCode)\n}\n\nfunction getUpdateCommand() {\n return 'npm update -g @figma/code-connect'\n}\n\nfunction maybeShowUpdateMessage() {\n if (updatedVersionAvailable) {\n logger.warn(`\\nA new version of the Figma CLI is available. v${require('../../package.json').version} is currently installed, and the latest version available is v${updatedVersionAvailable}.\n\nTo update, run ${chalk.whiteBright('npm install @figma/code-connect@latest')} for React or HTML, or ${chalk.whiteBright('npm install -g @figma/code-connect@latest')} for other targets (or if you have Code Connect installed globally).`)\n }\n\n if (message) {\n logger.warn(`\\n${message}`)\n }\n}\n\nexport function updateCli() {\n execSync(getUpdateCommand(), { stdio: 'inherit' })\n}\n"]}
|
package/dist/connect/api.d.ts
CHANGED
|
@@ -75,6 +75,19 @@ export interface FigmaConnectAPI<InstanceChildrenT, ChildrenT> {
|
|
|
75
75
|
* @param figmaPropName The name of the property on the Figma component
|
|
76
76
|
*/
|
|
77
77
|
instance<T = InstanceChildrenT>(figmaPropName: string): T;
|
|
78
|
+
/**
|
|
79
|
+
* Maps a Figma instance property for the connected slot layer. This prop is replaced
|
|
80
|
+
* with values from the Figma slot layer when viewed in Dev Mode. For example:
|
|
81
|
+
* ```ts
|
|
82
|
+
* props: {
|
|
83
|
+
* Menu: figma.slot('Menu'),
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
* Would show the "Menu" slot layer connected as an instance property in Figma.
|
|
87
|
+
*
|
|
88
|
+
* @param figmaPropName The name of the property on the Figma component
|
|
89
|
+
*/
|
|
90
|
+
slot<T = InstanceChildrenT>(figmaPropName: string): T;
|
|
78
91
|
/**
|
|
79
92
|
* Maps a Figma instance layer to a nested code example. For example:
|
|
80
93
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/connect/api.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,GACT,KAAK,CAAC,YAAY,GAClB,QAAQ,GACR,MAAM,CAAA;AAEV;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IACtB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;CAC1F;AASD,MAAM,WAAW,eAAe,CAAC,iBAAiB,EAAE,SAAS;IAC3D;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IAEpF;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAA;IAErC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,CAAC,GAAG,iBAAiB,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,CAAA;IAEzD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;IAElD;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAAA;IAEpD;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACnC;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAEnC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;CACzB,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAKD,MAAM,WAAW,gBAAgB,CAC/B,MAAM,GAAG,EAAE,EACX,cAAc,GAAG,EAAE,EACnB,gBAAgB,GAAG,OAAO,EAC1B,aAAa,GAAG,KAAK;IAErB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAA;IAEnD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,gBAAgB,CAAC,GAAG,aAAa,CAAA;IAEvE;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/connect/api.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,GACT,KAAK,CAAC,YAAY,GAClB,QAAQ,GACR,MAAM,CAAA;AAEV;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IACtB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;CAC1F;AASD,MAAM,WAAW,eAAe,CAAC,iBAAiB,EAAE,SAAS;IAC3D;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IAEpF;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAA;IAErC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,CAAC,GAAG,iBAAiB,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,CAAA;IAEzD;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,CAAC,GAAG,iBAAiB,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,CAAA;IAErD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;IAElD;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAAA;IAEpD;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACnC;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAEnC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;CACzB,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAKD,MAAM,WAAW,gBAAgB,CAC/B,MAAM,GAAG,EAAE,EACX,cAAc,GAAG,EAAE,EACnB,gBAAgB,GAAG,OAAO,EAC1B,aAAa,GAAG,KAAK;IAErB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAA;IAEnD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,gBAAgB,CAAC,GAAG,aAAa,CAAA;IAEvE;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B"}
|
package/dist/connect/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/connect/api.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/connect/api.ts"],"names":[],"mappings":"","sourcesContent":["export type EnumValue =\n | string\n | boolean\n | number\n | symbol\n | undefined\n | React.ReactElement\n | Function\n | Object\n\n/**\n * These types are intended to be returned by figma helper functions for exposing the\n * supported output modifiers for that type. There's no implementation for these types,\n * they are resolved to primitive types when the `props` object is passed to `example`.\n */\nexport interface ConnectedComponent {\n /**\n * Returns the resolved props of the connected component. This is useful for accessing\n * the `props` object of a child in a parent context. For example:\n * ```ts\n * figma.connect(\"parent\", {\n * props: {\n * iconProps: figma.instance(\"Icon\").getProps(),\n * },\n * example: (iconProps) => <IconButton iconId={iconProps.iconId} />,\n * }\n */\n getProps<T = any>(): T\n /**\n * Renders the instance with the provided render function. The function is passed the resolved\n * `props` of the nested connected component. This is useful for dynamically rendering a child\n * component depending on parent context. For example:\n * ```ts\n * figma.connect(\"parent\", {\n * props: {\n * icon: figma.instance(\"Icon\").render(({ iconId }) => <Button.Icon iconId={iconId} />),\n * },\n * example: ({ icon }) => <Button icon={icon}/>,\n * }\n */\n render<T = unknown>(renderFunction: (props: T) => React.ReactElement): React.ReactElement\n}\n\n// This contains the base API interface for figma.connect calls across React and\n// HTML. Any parts which are platform-specific (either the function signature or\n// its docblock) are specified in the individual index_<platform> and added to\n// this using union typing.\n//\n// To override a docblock, all signatures of that function must be moved into\n// the platform-specific index file.\nexport interface FigmaConnectAPI<InstanceChildrenT, ChildrenT> {\n /**\n * Maps a Figma Variant property to a set if values for the connected component. This prop is replaced\n * with values from the Figma instance when viewed in Dev Mode. For example:\n * ```ts\n * props: {\n * type: figma.enum('Type', {\n * Primary: 'primary',\n * Secondary: 'secondary',\n * }),\n * }\n * ```\n * Would output \"primary\" if the Type Variant in Figma is set to \"Primary\".\n *\n * @param figmaPropName The name of the property on the Figma component\n * @param valueMapping A mapping of values for the Figma Variant\n */\n enum<V extends EnumValue>(figmaPropName: string, valueMapping: Record<string, V>): V\n\n /**\n * Maps a Figma property to a string value for the connected component. This prop is replaced\n * with values from the Figma instance when viewed in Dev Mode. For example:\n * ```ts\n * props: {\n * text: figma.string('Text'),\n * }\n * ```\n * Would replace `text` with the text content from the Figma property \"Text\".\n *\n * @param figmaPropName The name of the property on the Figma component\n */\n string(figmaPropName: string): string\n\n /**\n * Maps a Figma instance property for the connected component. This prop is replaced\n * with values from the Figma instance when viewed in Dev Mode. For example:\n * ```ts\n * props: {\n * icon: figma.instance('Icon'),\n * }\n * ```\n * Would show the nested examples for the component passed to the \"Icon\" property in Figma.\n *\n * @param figmaPropName The name of the property on the Figma component\n */\n instance<T = InstanceChildrenT>(figmaPropName: string): T\n\n /**\n * Maps a Figma instance property for the connected slot layer. This prop is replaced\n * with values from the Figma slot layer when viewed in Dev Mode. For example:\n * ```ts\n * props: {\n * Menu: figma.slot('Menu'),\n * }\n * ```\n * Would show the \"Menu\" slot layer connected as an instance property in Figma.\n *\n * @param figmaPropName The name of the property on the Figma component\n */\n slot<T = InstanceChildrenT>(figmaPropName: string): T\n\n /**\n * Maps a Figma instance layer to a nested code example. For example:\n * ```ts\n * props: {\n * icon: figma.children('Icon')\n * }\n * ```\n * Would show the nested code example for the child instance named 'Icon'. This also supports\n * an array: `tabs: figma.children(['Tab 1', 'Tab 2'])` to map multiple nested examples.\n *\n * You can pass a single wildcard '*' character to match partial names. For example:\n * ```ts\n * props: {\n * icon: figma.children('Icon*')\n * }\n * ```\n * Would show the nested code example for any child instance which name starts with \"Icon\"\n *\n * @param figmaPropName The name of the property on the Figma component\n */\n children(layerNames: string | string[]): ChildrenT\n\n /**\n * Creates a className string by joining an array of strings. The argument supports both\n * string literals and nested functions like `figma.enum` and `figma.boolean` that return\n * a string. For example:\n * ```ts\n * props: {\n * className: figma.className([\n * 'btn-base',\n * figma.enum('Size', { Large: 'btn-large' }),\n * figma.boolean('Disabled', { true: 'btn-disabled', false: '' }),\n * ]),\n * }\n *\n * @param className\n */\n className(className: (string | undefined)[]): string\n\n /**\n * Maps a Figma text layer to a string value representing the text content of that layer.\n * This function takes the layer name within the original component as its parameter.\n * For example:\n * ```ts\n * props: {\n * text: figma.textContent('Text Layer')\n * }\n * ```\n *\n * @param layer The name of the text layer in the Figma component\n */\n textContent(layer: string): string\n}\n\nexport type ValueOf<T> = T[keyof T]\n\nexport type PropMapping<T> = {\n [key in keyof T]: T[key]\n}\n\nexport interface FigmaConnectLink {\n name: string\n url: string\n}\n\n// ExampleFnReturnT is the return type of an example function.\n// ExtraExampleT allows us to pass in an extra type to the `example` property,\n// so that in Storybook, we can use strings to refer to non-hoisted functions\nexport interface FigmaConnectMeta<\n PropsT = {},\n ResolvedPropsT = {},\n ExampleFnReturnT = unknown,\n ExtraExampleT = never,\n> {\n /**\n * Restricts this figma connect to any variants that fullfill the given filter.\n * The filter is a map of Figma variant names to values. Example:\n * ```ts\n * {\n * variant: { \"Has Icon\": true }\n * }\n */\n variant?: Record<string, string | boolean | number>\n\n /**\n * Prop mappings for the connected component. This is used to map the values of the component's props\n * to the values that are used in Figma, using helper functions like `figma.boolean`. For example:\n * ```ts\n * props: {\n * disabled: figma.boolean('Disabled'),\n * text: figma.string('Text'),\n * size: figma.enum('Size', {\n * slim: 'slim',\n * medium: 'medium',\n * large: 'large',\n * }),\n * }\n */\n props?: PropsT\n\n /**\n * The code example to display in Figma. Any mapped `props` are passed to the component,\n * where those values will be replaced with the mapped value when inspecting that instance in Figma.\n * @param props\n * @returns\n */\n example?: ((props: ResolvedPropsT) => ExampleFnReturnT) | ExtraExampleT\n\n /**\n * A list of links that will display in Figma along with the examples\n */\n links?: FigmaConnectLink[]\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/connect/create.ts"],"names":[],"mappings":"AAUA,OAAO,EAAqC,WAAW,EAAE,MAAM,WAAW,CAAA;AAW1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,GAAG,EAAE,WAAW,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAQlD;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,WAAW,EACX,YAAY,EACZ,OAAO,EACP,MAAM,EACN,WAAW,EACX,GAAG,GACJ,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/connect/create.ts"],"names":[],"mappings":"AAUA,OAAO,EAAqC,WAAW,EAAE,MAAM,WAAW,CAAA;AAW1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,GAAG,EAAE,WAAW,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAQlD;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,WAAW,EACX,YAAY,EACZ,OAAO,EACP,MAAM,EACN,WAAW,EACX,GAAG,GACJ,EAAE,gBAAgB,iBA+HlB"}
|
package/dist/connect/create.js
CHANGED
|
@@ -28,7 +28,8 @@ async function createCodeConnectFromUrl({ accessToken, figmaNodeUrl, outFile, ou
|
|
|
28
28
|
try {
|
|
29
29
|
const fileKey = (0, helpers_1.parseFileKey)(figmaNodeUrl);
|
|
30
30
|
const nodeIds = (0, helpers_1.parseNodeIds)([figmaNodeUrl]);
|
|
31
|
-
const apiUrl = (0, figma_rest_api_1.getApiUrl)(figmaNodeUrl ?? ''
|
|
31
|
+
const apiUrl = (0, figma_rest_api_1.getApiUrl)(figmaNodeUrl ?? '', cmd.apiUrl || projectInfo.config.apiUrl) +
|
|
32
|
+
`/code_connect/${fileKey}/cli_data?ids=${nodeIds.join(',')}`;
|
|
32
33
|
if (nodeIds.length === 0) {
|
|
33
34
|
(0, logging_1.exitWithError)(`Invalid figma node URL: the provided url "${figmaNodeUrl}" does not contain a node-id`);
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/connect/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/connect/create.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n exitWithFeedbackMessage,\n findComponentsInDocument,\n parseFileKey,\n parseNodeIds,\n} from './helpers'\nimport fs from 'fs'\nimport { FigmaRestApi, getApiUrl, getHeaders } from './figma_rest_api'\nimport { exitWithError, logger } from '../common/logging'\nimport { callParser, handleMessages } from './parser_executables'\nimport { CodeConnectExecutableParserConfig, ProjectInfo } from './project'\nimport { createReactCodeConnect } from '../react/create'\nimport { z } from 'zod'\nimport {\n CreateRequestPayload,\n CreateRequestPayloadMulti,\n CreateResponsePayload,\n} from './parser_executable_types'\nimport { fromError } from 'zod-validation-error'\nimport { createHtmlCodeConnect } from '../html/create'\nimport { isFetchError, request } from '../common/fetch'\nimport { BaseCommand } from '../commands/connect'\n\ninterface GenerateDocsArgs {\n accessToken: string\n figmaNodeUrl: string\n outFile: string\n outDir: string\n projectInfo: ProjectInfo\n cmd: BaseCommand\n}\n\nexport function normalizeComponentName(name: string) {\n // Convert the string to PascalCase and ensure first character is not a digit\n return name\n .replace(/[^a-zA-Z0-9]/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n .replace(/^[0-9]/, '_$&')\n}\n\nexport async function createCodeConnectFromUrl({\n accessToken,\n figmaNodeUrl,\n outFile,\n outDir,\n projectInfo,\n cmd,\n}: GenerateDocsArgs) {\n try {\n const fileKey = parseFileKey(figmaNodeUrl)\n const nodeIds = parseNodeIds([figmaNodeUrl])\n\n const apiUrl =\n getApiUrl(figmaNodeUrl ?? '', cmd.apiUrl || projectInfo.config.apiUrl) +\n `/code_connect/${fileKey}/cli_data?ids=${nodeIds.join(',')}`\n\n if (nodeIds.length === 0) {\n exitWithError(\n `Invalid figma node URL: the provided url \"${figmaNodeUrl}\" does not contain a node-id`,\n )\n } else if (nodeIds.length > 1) {\n exitWithError(\n `Invalid figma node URL: the provided url \"${figmaNodeUrl}\" contains more than one node-id`,\n )\n }\n\n logger.info('Fetching component information from Figma...')\n const response = process.env.CODE_CONNECT_MOCK_CREATE_API_RESPONSE\n ? {\n response: { status: 200 },\n data: JSON.parse(\n fs.readFileSync(process.env.CODE_CONNECT_MOCK_CREATE_API_RESPONSE, 'utf-8'),\n ) as { document: FigmaRestApi.Node },\n }\n : await request.get<{ document: FigmaRestApi.Node }>(apiUrl, {\n headers: getHeaders(accessToken),\n })\n\n if (response.response.status === 200) {\n logger.info('Parsing response')\n const component = findComponentsInDocument(response.data.document, nodeIds)[0]\n if (component === undefined) {\n exitWithError('Could not find a component in the provided URL')\n }\n const normalizedName = normalizeComponentName(component.name)\n\n const componentPayload = {\n figmaNodeUrl,\n id: component.id,\n name: component.name,\n normalizedName,\n type: component.type,\n componentPropertyDefinitions: component.componentPropertyDefinitions,\n }\n\n logger.info('Generating Code Connect files...')\n\n let result: z.infer<typeof CreateResponsePayload>\n\n if (projectInfo.config.parser === 'react') {\n const payload: CreateRequestPayloadMulti = {\n mode: 'CREATE',\n destinationDir: outDir ?? process.env.INIT_CWD ?? process.cwd(),\n destinationFile: outFile,\n normalizedName,\n figmaConnections: [{ component: componentPayload }],\n config: projectInfo.config,\n }\n result = await createReactCodeConnect(payload)\n } else if (projectInfo.config.parser === 'html') {\n const payload: CreateRequestPayloadMulti = {\n mode: 'CREATE',\n destinationDir: outDir ?? process.env.INIT_CWD ?? process.cwd(),\n destinationFile: outFile,\n normalizedName,\n figmaConnections: [{ component: componentPayload }],\n config: projectInfo.config,\n }\n result = await createHtmlCodeConnect(payload)\n } else {\n try {\n const payload: CreateRequestPayload = {\n mode: 'CREATE',\n destinationDir: outDir ?? process.env.INIT_CWD ?? process.cwd(),\n destinationFile: outFile,\n component: componentPayload,\n config: projectInfo.config,\n verbose: cmd.verbose,\n }\n const stdout = await callParser(\n // We use `as` because the React parser makes the types difficult\n // TODO remove once React is an executable parser\n projectInfo.config as CodeConnectExecutableParserConfig,\n payload,\n projectInfo.absPath,\n )\n\n result = CreateResponsePayload.parse(stdout)\n } catch (e) {\n throw fromError(e)\n }\n }\n\n const { hasErrors } = handleMessages(result.messages)\n\n if (hasErrors) {\n exitWithError('Errors encountered calling parser, exiting')\n }\n\n logger.info('Code Connect files generated successfully:')\n result.createdFiles.forEach((file) => {\n logger.info(`${file.filePath}`)\n })\n } else {\n logger.error(\n `Failed to get node information from Figma with status: ${response.response.status}`,\n )\n logger.debug('Failed to get node information from Figma with Body:', response.data)\n }\n } catch (err) {\n if (isFetchError(err)) {\n if (err.response) {\n logger.error(\n `Failed to get node data from Figma (${err.response.status}): ${err.response.status} ${err.data?.err ?? err.data?.message}`,\n )\n } else {\n logger.error(`Failed to get node data from Figma: ${err.message}`)\n }\n logger.debug(JSON.stringify(err.data))\n } else {\n logger.error(`Failed to create: ${err}`)\n }\n exitWithFeedbackMessage(1)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_common.js","sourceRoot":"","sources":["../../src/connect/create_common.ts"],"names":[],"mappings":";;;;;AAEA,wCAsBC;AAxBD,gDAAuB;AAEvB,SAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,cAAc,EACd,SAAS,GAMV;IACC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,cAAc,UAAU,SAAS,EAAE,CAAA;IAEvD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AACnE,CAAC"}
|
|
1
|
+
{"version":3,"file":"create_common.js","sourceRoot":"","sources":["../../src/connect/create_common.ts"],"names":[],"mappings":";;;;;AAEA,wCAsBC;AAxBD,gDAAuB;AAEvB,SAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,cAAc,EACd,SAAS,GAMV;IACC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,cAAc,UAAU,SAAS,EAAE,CAAA;IAEvD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AACnE,CAAC","sourcesContent":["import path from 'path'\n\nexport function getOutFileName({\n outFile,\n outDir,\n sourceFilename,\n extension,\n}: {\n outFile: string | undefined\n outDir: string\n sourceFilename: string\n extension: string\n}): string {\n if (outFile) {\n return outFile\n }\n\n const baseName = `${sourceFilename}.figma.${extension}`\n\n if (outDir) {\n return path.join(outDir, baseName)\n }\n\n return path.join(process.env.INIT_CWD ?? process.cwd(), baseName)\n}\n"]}
|
|
@@ -5,7 +5,8 @@ interface NodesToDeleteInfo {
|
|
|
5
5
|
interface Args {
|
|
6
6
|
accessToken: string;
|
|
7
7
|
docs: NodesToDeleteInfo[];
|
|
8
|
+
apiUrl?: string;
|
|
8
9
|
}
|
|
9
|
-
export declare function delete_docs({ accessToken, docs }: Args): Promise<void>;
|
|
10
|
+
export declare function delete_docs({ accessToken, docs, apiUrl: apiUrlOverride }: Args): Promise<void>;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=delete_docs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete_docs.d.ts","sourceRoot":"","sources":["../../src/connect/delete_docs.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,IAAI;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,iBAAiB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"delete_docs.d.ts","sourceRoot":"","sources":["../../src/connect/delete_docs.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,IAAI;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,iBAAiB,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,IAAI,iBA+EpF"}
|
|
@@ -5,8 +5,8 @@ const fetch_1 = require("../common/fetch");
|
|
|
5
5
|
const logging_1 = require("../common/logging");
|
|
6
6
|
const figma_rest_api_1 = require("./figma_rest_api");
|
|
7
7
|
const helpers_1 = require("./helpers");
|
|
8
|
-
async function delete_docs({ accessToken, docs }) {
|
|
9
|
-
const apiUrl = (0, figma_rest_api_1.getApiUrl)(docs?.[0]?.figmaNode ?? '') + '/code_connect';
|
|
8
|
+
async function delete_docs({ accessToken, docs, apiUrl: apiUrlOverride }) {
|
|
9
|
+
const apiUrl = (0, figma_rest_api_1.getApiUrl)(docs?.[0]?.figmaNode ?? '', apiUrlOverride) + '/code_connect';
|
|
10
10
|
try {
|
|
11
11
|
logging_1.logger.info(`Unpublishing Code Connect files from Figma...`);
|
|
12
12
|
const response = await fetch_1.request.delete(apiUrl, { nodes_to_delete: docs }, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete_docs.js","sourceRoot":"","sources":["../../src/connect/delete_docs.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"delete_docs.js","sourceRoot":"","sources":["../../src/connect/delete_docs.ts"],"names":[],"mappings":"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","sourcesContent":["import { isFetchError, request } from '../common/fetch'\nimport { logger } from '../common/logging'\nimport { getApiUrl, getHeaders } from './figma_rest_api'\nimport { exitWithFeedbackMessage } from './helpers'\n\ninterface NodesToDeleteInfo {\n figmaNode: string\n label: string\n}\n\ninterface Args {\n accessToken: string\n docs: NodesToDeleteInfo[]\n apiUrl?: string\n}\n\nexport async function delete_docs({ accessToken, docs, apiUrl: apiUrlOverride }: Args) {\n const apiUrl = getApiUrl(docs?.[0]?.figmaNode ?? '', apiUrlOverride) + '/code_connect'\n\n try {\n logger.info(`Unpublishing Code Connect files from Figma...`)\n\n const response = await request.delete(\n apiUrl,\n { nodes_to_delete: docs },\n {\n headers: getHeaders(accessToken),\n },\n )\n\n interface DeleteResult {\n success: boolean\n deleted_count: number\n failed_count: number\n deleted_nodes: Array<{ figmaNode: string; label: string }>\n failed_nodes: Array<{ figmaNode: string; label: string; reason: string }>\n }\n\n const responseData = response.data as {\n meta?: DeleteResult\n }\n\n const result: DeleteResult = responseData.meta ?? (response.data as DeleteResult)\n\n if (result.deleted_count > 0) {\n logger.info(\n `\\nSuccessfully deleted ${\n result.deleted_count\n } Code Connect mapping(s):\\n${result.deleted_nodes\n .map((doc) => `${doc.figmaNode} (${doc.label})`)\n .join('\\n')}`,\n )\n }\n\n if (result.failed_count > 0) {\n logger.error(\n `\\nFailed to delete ${result.failed_count} Code Connect mapping(s):\\n${result.failed_nodes\n .map((doc) => `✗ ${doc.figmaNode} (${doc.label}): ${doc.reason}`)\n .join('\\n')}`,\n )\n exitWithFeedbackMessage(1)\n }\n\n if (result.deleted_count === 0 && result.failed_count === 0) {\n logger.warn('No Code Connect mappings were found to delete.')\n }\n } catch (err) {\n if (isFetchError(err)) {\n if (err.response) {\n // Provide more specific error message based on status code\n if (err.response.status === 400) {\n const errorMsg = err.data?.err ?? err.data?.message ?? 'Bad request'\n if (errorMsg.includes('insufficient permissions')) {\n logger.error(`Insufficient permissions to unpublish Code Connect for this file.`)\n } else if (errorMsg.includes('Failed to parse')) {\n logger.error(`Invalid Figma URL format in the request.`)\n } else {\n logger.error(`Failed to unpublish from Figma: ${errorMsg}`)\n }\n } else {\n logger.error(\n `Failed to unpublish from Figma (${err.response.status}): ${\n err.data?.err ?? err.data?.message ?? 'Unknown error'\n }`,\n )\n }\n } else {\n logger.error(`Failed to unpublish from Figma: ${err.message}`)\n }\n logger.debug(JSON.stringify(err.data))\n } else {\n logger.error(`Failed to delete docs: ${err}`)\n }\n exitWithFeedbackMessage(1)\n }\n}\n"]}
|
|
@@ -6,4 +6,5 @@ export declare function nestedPropsType<T>(_layer: string, props: T): T;
|
|
|
6
6
|
export declare function classNameType(_className: (string | undefined)[]): string;
|
|
7
7
|
export declare function textContentType(_layer: string): string;
|
|
8
8
|
export declare function instanceType<T = ConnectedComponent>(_figmaPropName: string): T;
|
|
9
|
+
export declare function slotType<T = ConnectedComponent>(_figmaPropName: string): T;
|
|
9
10
|
//# sourceMappingURL=external_types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external_types.d.ts","sourceRoot":"","sources":["../../src/connect/external_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAE3E,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAA;AAW5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAC1C,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAE5B;AAED,wBAAgB,UAAU,CAAC,cAAc,EAAE,MAAM,UAEhD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAE1D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,UAE/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,UAE7C;AAED,wBAAgB,YAAY,CAAC,CAAC,GAAG,kBAAkB,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAE9E"}
|
|
1
|
+
{"version":3,"file":"external_types.d.ts","sourceRoot":"","sources":["../../src/connect/external_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAE3E,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAA;AAW5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAC1C,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAE5B;AAED,wBAAgB,UAAU,CAAC,cAAc,EAAE,MAAM,UAEhD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAE1D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,UAE/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,UAE7C;AAED,wBAAgB,YAAY,CAAC,CAAC,GAAG,kBAAkB,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAE9E;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,kBAAkB,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAE1E"}
|
|
@@ -7,6 +7,7 @@ exports.nestedPropsType = nestedPropsType;
|
|
|
7
7
|
exports.classNameType = classNameType;
|
|
8
8
|
exports.textContentType = textContentType;
|
|
9
9
|
exports.instanceType = instanceType;
|
|
10
|
+
exports.slotType = slotType;
|
|
10
11
|
function booleanType(_figmaPropName, _valueMapping) {
|
|
11
12
|
if (_valueMapping) {
|
|
12
13
|
return enumType(_figmaPropName, _valueMapping);
|
|
@@ -31,4 +32,7 @@ function textContentType(_layer) {
|
|
|
31
32
|
function instanceType(_figmaPropName) {
|
|
32
33
|
return undefined;
|
|
33
34
|
}
|
|
35
|
+
function slotType(_figmaPropName) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
34
38
|
//# sourceMappingURL=external_types.js.map
|