@figma/code-connect 1.3.11 → 1.3.13
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 +4 -3
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +154 -15
- package/dist/commands/connect.js.map +1 -1
- 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.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.js.map +1 -1
- package/dist/connect/figma_connect.d.ts +1 -0
- 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.js.map +1 -1
- package/dist/connect/label_language_mapping.d.ts +33 -0
- package/dist/connect/label_language_mapping.d.ts.map +1 -0
- package/dist/connect/label_language_mapping.js +62 -0
- package/dist/connect/label_language_mapping.js.map +1 -0
- package/dist/connect/migration_helpers.d.ts +21 -0
- package/dist/connect/migration_helpers.d.ts.map +1 -0
- package/dist/connect/migration_helpers.js +179 -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.map +1 -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 +21 -0
- package/dist/connect/project.d.ts.map +1 -1
- package/dist/connect/project.js +59 -6
- 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 +3 -2
- 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.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.d.ts.map +1 -1
- package/dist/parser_scripts/get_file_if_exists.js +12 -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.js.map +1 -1
- package/dist/react/external.js.map +1 -1
- package/dist/react/index_react.js.map +1 -1
- package/dist/react/parser.d.ts +6 -3
- package/dist/react/parser.d.ts.map +1 -1
- package/dist/react/parser.js +32 -12
- package/dist/react/parser.js.map +1 -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 +4 -4
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qDAAsC;AACtC,gDAA+D;AAC/D,sDAAgF;AAEhF,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAE1B,KAAK,UAAU,GAAG;IAChB,IAAA,+CAAqC,GAAE,CAAA;IAEvC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAA;IACrF,OAAO,CAAC,uBAAuB,EAAE,CAAA;IAEjC,IAAA,oCAA0B,EAAC,OAAO,CAAC,CAAA;IAEnC,8EAA8E;IAC9E,sCAAsC;IACtC;;;;;;;MAOE;IAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,UAAU,EAAE,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qDAAsC;AACtC,gDAA+D;AAC/D,sDAAgF;AAEhF,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAE1B,KAAK,UAAU,GAAG;IAChB,IAAA,+CAAqC,GAAE,CAAA;IAEvC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAA;IACrF,OAAO,CAAC,uBAAuB,EAAE,CAAA;IAEjC,IAAA,oCAA0B,EAAC,OAAO,CAAC,CAAA;IAEnC,8EAA8E;IAC9E,sCAAsC;IACtC;;;;;;;MAOE;IAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,UAAU,EAAE,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAA","sourcesContent":["#!/usr/bin/env node\n\nimport * as commander from 'commander'\nimport { addConnectCommandToProgram } from './commands/connect'\nimport { maybePrefillWizardQuestionsForTesting } from './connect/wizard/helpers'\n\nrequire('dotenv').config()\n\nasync function run() {\n maybePrefillWizardQuestionsForTesting()\n\n const program = new commander.Command().version(require('./../package.json').version)\n program.enablePositionalOptions()\n\n addConnectCommandToProgram(program)\n\n // Update command is temporarily disabled until we can show the correct update\n // command to React vs non-React users\n /*\n program\n .command('update')\n .description('Updates to the latest version of the Figma CLI')\n .action(() => {\n updateCli()\n })\n */\n\n program.parse(process.argv)\n if (program.args.length < 1) {\n program.outputHelp()\n process.exit(1)\n }\n}\n\nrun()\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/client/external.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,6GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/client/external.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,6GAAA,aAAa,OAAA","sourcesContent":["export { getComponents } from './figma_client'\n"]}
|
|
@@ -34,7 +34,7 @@ async function getComponents(fileOrNode) {
|
|
|
34
34
|
fileKey,
|
|
35
35
|
figmaUrl: (0, helpers_1.figmaUrlOfComponent)(component, fileKey),
|
|
36
36
|
componentPropertyDefinitions: component.type === 'COMPONENT_SET'
|
|
37
|
-
? Object.keys(component.componentPropertyDefinitions).reduce((result, key) => {
|
|
37
|
+
? Object.keys(component.componentPropertyDefinitions || {}).reduce((result, key) => {
|
|
38
38
|
return {
|
|
39
39
|
...result,
|
|
40
40
|
// this removes the ID prefix from property names e.g #123:name -> name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figma_client.js","sourceRoot":"","sources":["../../src/client/figma_client.ts"],"names":[],"mappings":";;AAwCA,sCAmCC;AA3ED,8DAAgF;AAChF,gDAM2B;AAsB3B,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAE1B;;;;;;;;GAQG;AACI,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,UAAU,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,oBAAoB,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IAC1C,IAAI,MAAM,GAAG,IAAA,0BAAS,EAAC,UAAU,IAAI,EAAE,CAAC,GAAG,UAAU,OAAO,EAAE,CAAA;IAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IACvC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAW,EAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAErE,sFAAsF;IACtF,gFAAgF;IAChF,OAAO,IAAA,kCAAwB,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvD,GAAG,SAAS;QACZ,OAAO;QACP,QAAQ,EAAE,IAAA,6BAAmB,EAAC,SAAS,EAAE,OAAO,CAAC;QACjD,4BAA4B,EAC1B,SAAS,CAAC,IAAI,KAAK,eAAe;YAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"figma_client.js","sourceRoot":"","sources":["../../src/client/figma_client.ts"],"names":[],"mappings":";;AAwCA,sCAmCC;AA3ED,8DAAgF;AAChF,gDAM2B;AAsB3B,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAE1B;;;;;;;;GAQG;AACI,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,UAAU,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,oBAAoB,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IAC1C,IAAI,MAAM,GAAG,IAAA,0BAAS,EAAC,UAAU,IAAI,EAAE,CAAC,GAAG,UAAU,OAAO,EAAE,CAAA;IAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IACvC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAW,EAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAErE,sFAAsF;IACtF,gFAAgF;IAChF,OAAO,IAAA,kCAAwB,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvD,GAAG,SAAS;QACZ,OAAO;QACP,QAAQ,EAAE,IAAA,6BAAmB,EAAC,SAAS,EAAE,OAAO,CAAC;QACjD,4BAA4B,EAC1B,SAAS,CAAC,IAAI,KAAK,eAAe;YAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC/E,OAAO;oBACL,GAAG,MAAM;oBACT,uEAAuE;oBACvE,CAAC,IAAA,2BAAiB,EAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,4BAA4B,CAAC,GAAG,CAAC;iBACtE,CAAA;YACH,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC,CAAA;AACL,CAAC","sourcesContent":["import { FigmaRestApi, getApiUrl, getDocument } from '../connect/figma_rest_api'\nimport {\n figmaUrlOfComponent,\n findComponentsInDocument,\n normalizePropName,\n parseFileKey,\n parseNodeIds,\n} from '../connect/helpers'\n\nexport interface ComponentInfo {\n id: string\n name: string\n fileKey: string\n figmaUrl: string\n}\n\nexport interface FigmaConnectClient {\n /**\n * Fetches components from a figma file, filtering out components that don't\n * match the provided function.\n *\n * @param fileOrNode figma URL\n * @param match a function that returns true if the component should be\n * included\n * @returns a list of components\n */\n getComponents: (fileOrNode: string) => Promise<(FigmaRestApi.Component & ComponentInfo)[]>\n}\n\nrequire('dotenv').config()\n\n/**\n * Fetch components from a figma file. If the `node-id` query parameter is used,\n * only components within those frames will be included. This is useful if your\n * file is very large, as this will speed up the query.\n *\n * @param fileOrNode a figma file URL\n * @param match a function that returns true if the component should be included\n * @returns\n */\nexport async function getComponents(fileOrNode: string) {\n if (!process.env.FIGMA_ACCESS_TOKEN) {\n throw new Error('FIGMA_ACCESS_TOKEN is not set')\n }\n\n const fileKey = parseFileKey(fileOrNode)\n if (!fileKey) {\n throw new Error(`Invalid Figma file URL: ${fileOrNode}, file key missing`)\n }\n\n const nodeIds = parseNodeIds([fileOrNode])\n let apiUrl = getApiUrl(fileOrNode ?? '') + `/files/${fileKey}`\n if (nodeIds.length > 0) {\n apiUrl += `?ids=${nodeIds.join(',')}`\n }\n\n const doc = await getDocument(apiUrl, process.env.FIGMA_ACCESS_TOKEN)\n\n // `doc` in this case will only include the top frame(s) passed via `ids`. We omit the\n // nodeIds arg here because we want to return all components within the frame(s)\n return findComponentsInDocument(doc).map((component) => ({\n ...component,\n fileKey,\n figmaUrl: figmaUrlOfComponent(component, fileKey),\n componentPropertyDefinitions:\n component.type === 'COMPONENT_SET'\n ? Object.keys(component.componentPropertyDefinitions || {}).reduce((result, key) => {\n return {\n ...result,\n // this removes the ID prefix from property names e.g #123:name -> name\n [normalizePropName(key)]: component.componentPropertyDefinitions[key],\n }\n }, {})\n : undefined,\n }))\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as commander from 'commander';
|
|
2
|
-
import { ProjectInfo } from '../connect/project';
|
|
2
|
+
import { CodeConnectConfig, ProjectInfo } from '../connect/project';
|
|
3
3
|
import { CodeConnectJSON } from '../connect/figma_connect';
|
|
4
4
|
export type BaseCommand = commander.Command & {
|
|
5
5
|
token: string;
|
|
@@ -12,13 +12,14 @@ export type BaseCommand = commander.Command & {
|
|
|
12
12
|
jsonFile: string;
|
|
13
13
|
skipUpdateCheck: boolean;
|
|
14
14
|
exitOnUnreadableFiles: boolean;
|
|
15
|
+
apiUrl?: string;
|
|
15
16
|
};
|
|
16
17
|
export declare function addConnectCommandToProgram(program: commander.Command): void;
|
|
17
18
|
export declare function getAccessToken(cmd: BaseCommand): string;
|
|
18
19
|
export declare function getDir(cmd: BaseCommand): string;
|
|
19
|
-
export declare function parseRawFile(filePath: string, label: string | undefined): CodeConnectJSON;
|
|
20
|
+
export declare function parseRawFile(filePath: string, label: string | undefined, config?: CodeConnectConfig, dir?: string): CodeConnectJSON;
|
|
20
21
|
export declare function getCodeConnectObjects(cmd: BaseCommand & {
|
|
21
22
|
label?: string;
|
|
22
23
|
includeTemplateFiles?: boolean;
|
|
23
|
-
}, projectInfo: ProjectInfo, silent?: boolean): Promise<CodeConnectJSON[]>;
|
|
24
|
+
}, projectInfo: ProjectInfo, silent?: boolean, skipTemplateHelpers?: boolean): Promise<CodeConnectJSON[]>;
|
|
24
25
|
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AAKtC,OAAO,
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AAKtC,OAAO,EACL,iBAAiB,EAGjB,WAAW,EAKZ,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AA0B1D,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;IACxB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AA0BD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,QAmEpE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,UAE9C;AAcD,wBAAgB,MAAM,CAAC,GAAG,EAAE,WAAW,UAEtC;AA0CD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,eAAe,CAwCjB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,EACrE,WAAW,EAAE,WAAW,EACxB,MAAM,UAAQ,EACd,mBAAmB,UAAQ,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CAsG5B"}
|
package/dist/commands/connect.js
CHANGED
|
@@ -20,11 +20,16 @@ const run_wizard_1 = require("../connect/wizard/run_wizard");
|
|
|
20
20
|
const parser_executables_1 = require("../connect/parser_executables");
|
|
21
21
|
const zod_validation_error_1 = require("zod-validation-error");
|
|
22
22
|
const parser_executable_types_1 = require("../connect/parser_executable_types");
|
|
23
|
+
const path_1 = __importDefault(require("path"));
|
|
23
24
|
const updates_1 = require("../common/updates");
|
|
24
25
|
const helpers_1 = require("../connect/helpers");
|
|
25
26
|
const parser_1 = require("../html/parser");
|
|
26
27
|
const parser_common_1 = require("../connect/parser_common");
|
|
27
28
|
const parser_2 = require("../react/parser");
|
|
29
|
+
const label_language_mapping_1 = require("../connect/label_language_mapping");
|
|
30
|
+
const migration_helpers_1 = require("../connect/migration_helpers");
|
|
31
|
+
const run_wizard_2 = require("../connect/wizard/run_wizard");
|
|
32
|
+
const project_2 = require("../connect/project");
|
|
28
33
|
function addBaseCommand(command, name, description) {
|
|
29
34
|
return command
|
|
30
35
|
.command(name)
|
|
@@ -36,6 +41,7 @@ function addBaseCommand(command, name, description) {
|
|
|
36
41
|
.option('-o --outFile <file>', 'specify a file to output generated Code Connect')
|
|
37
42
|
.option('-o --outDir <dir>', 'specify a directory to output generated Code Connect')
|
|
38
43
|
.option('-c --config <path>', 'path to a figma config file')
|
|
44
|
+
.option('-a --api-url <url>', 'custom Figma API URL to use instead of https://api.figma.com/v1')
|
|
39
45
|
.option('--skip-update-check', 'skips checking for an updated version of the Figma CLI')
|
|
40
46
|
.option('--exit-on-unreadable-files', 'exit if any Code Connect files cannot be parsed. We recommend using this option for CI/CD.')
|
|
41
47
|
.option('--dry-run', 'tests publishing without actually publishing')
|
|
@@ -67,6 +73,11 @@ function addConnectCommandToProgram(program) {
|
|
|
67
73
|
addBaseCommand(connectCommand, 'create', 'Generate a Code Connect file with boilerplate in the current directory for a Figma node URL')
|
|
68
74
|
.argument('<figma-node-url>', 'Figma node URL to create the Code Connect file from')
|
|
69
75
|
.action((0, updates_1.withUpdateCheck)(handleCreate));
|
|
76
|
+
addBaseCommand(connectCommand, 'migrate', 'Parse Code Connect files and migrate their templates into .figma.template.js files that can be published directly without parsing.')
|
|
77
|
+
.argument('[pattern]', 'glob pattern to match files (optional, uses config if not provided)')
|
|
78
|
+
.option('-l --label <label>', 'label to apply to the migrated templates')
|
|
79
|
+
.option('--output-dir <dir>', 'directory to write template files (default: same directory as source file)')
|
|
80
|
+
.action((0, updates_1.withUpdateCheck)(handleMigrate));
|
|
70
81
|
}
|
|
71
82
|
function getAccessToken(cmd) {
|
|
72
83
|
return cmd.token ?? process.env.FIGMA_ACCESS_TOKEN;
|
|
@@ -112,26 +123,43 @@ function transformDocFromParser(doc, remoteUrl, config) {
|
|
|
112
123
|
figmaNode,
|
|
113
124
|
};
|
|
114
125
|
}
|
|
115
|
-
function parseRawFile(filePath, label) {
|
|
126
|
+
function parseRawFile(filePath, label, config, dir) {
|
|
116
127
|
const fileContent = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
117
128
|
const [firstLine, ...templateLines] = fileContent.split('\n');
|
|
118
|
-
|
|
129
|
+
let figmaNodeUrl = firstLine.replace(/\/\/\s*url=/, '').trim();
|
|
119
130
|
const template = templateLines.join('\n');
|
|
131
|
+
// Apply documentUrlSubstitutions if provided
|
|
132
|
+
if (config?.documentUrlSubstitutions) {
|
|
133
|
+
Object.entries(config.documentUrlSubstitutions).forEach(([from, to]) => {
|
|
134
|
+
figmaNodeUrl = figmaNodeUrl.replace(from, to);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
// Determine effective label from parameter, config, or default
|
|
138
|
+
const effectiveLabel = label || config?.label || label_language_mapping_1.CodeConnectLabel.Code;
|
|
139
|
+
const language = config?.language || (0, label_language_mapping_1.getInferredLanguageForRaw)(effectiveLabel);
|
|
140
|
+
// Compute source path relative to git root
|
|
141
|
+
let source = '';
|
|
142
|
+
if (dir) {
|
|
143
|
+
const gitRootPath = (0, project_2.getGitRepoAbsolutePath)(dir);
|
|
144
|
+
if (gitRootPath) {
|
|
145
|
+
source = path_1.default.relative(gitRootPath, filePath);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
120
148
|
return {
|
|
121
149
|
figmaNode: figmaNodeUrl,
|
|
122
150
|
template,
|
|
123
151
|
// nestable by default unless user specifies otherwise
|
|
124
|
-
templateData: { nestable: true },
|
|
125
|
-
language
|
|
126
|
-
label:
|
|
127
|
-
source
|
|
152
|
+
templateData: { nestable: true, isParserless: true },
|
|
153
|
+
language,
|
|
154
|
+
label: effectiveLabel,
|
|
155
|
+
source,
|
|
128
156
|
sourceLocation: { line: -1 },
|
|
129
157
|
metadata: {
|
|
130
158
|
cliVersion: require('../../package.json').version,
|
|
131
159
|
},
|
|
132
160
|
};
|
|
133
161
|
}
|
|
134
|
-
async function getCodeConnectObjects(cmd, projectInfo, silent = false) {
|
|
162
|
+
async function getCodeConnectObjects(cmd, projectInfo, silent = false, skipTemplateHelpers = false) {
|
|
135
163
|
if (cmd.jsonFile) {
|
|
136
164
|
try {
|
|
137
165
|
return JSON.parse(fs_1.default.readFileSync(cmd.jsonFile, 'utf8'));
|
|
@@ -142,7 +170,7 @@ async function getCodeConnectObjects(cmd, projectInfo, silent = false) {
|
|
|
142
170
|
}
|
|
143
171
|
let codeConnectObjects = [];
|
|
144
172
|
if (projectInfo.config.parser === 'react') {
|
|
145
|
-
codeConnectObjects = await getReactCodeConnectObjects(projectInfo, cmd, silent);
|
|
173
|
+
codeConnectObjects = await getReactCodeConnectObjects(projectInfo, cmd, silent, skipTemplateHelpers);
|
|
146
174
|
}
|
|
147
175
|
else if (projectInfo.config.parser === 'html') {
|
|
148
176
|
codeConnectObjects = await getCodeConnectObjectsFromParseFn({
|
|
@@ -151,13 +179,14 @@ async function getCodeConnectObjects(cmd, projectInfo, silent = false) {
|
|
|
151
179
|
projectInfo,
|
|
152
180
|
cmd,
|
|
153
181
|
silent,
|
|
182
|
+
skipTemplateHelpers,
|
|
154
183
|
});
|
|
155
184
|
}
|
|
156
185
|
else {
|
|
157
186
|
const payload = {
|
|
158
187
|
mode: 'PARSE',
|
|
159
188
|
paths: projectInfo.files,
|
|
160
|
-
config: projectInfo.config,
|
|
189
|
+
config: { ...projectInfo.config, skipTemplateHelpers },
|
|
161
190
|
verbose: cmd.verbose,
|
|
162
191
|
};
|
|
163
192
|
try {
|
|
@@ -190,7 +219,9 @@ async function getCodeConnectObjects(cmd, projectInfo, silent = false) {
|
|
|
190
219
|
}
|
|
191
220
|
if (cmd.includeTemplateFiles) {
|
|
192
221
|
const rawTemplateFiles = projectInfo.files.filter((f) => f.endsWith('.figma.template.js'));
|
|
193
|
-
|
|
222
|
+
// Resolve the label before parsing so language inference works correctly
|
|
223
|
+
const resolvedLabel = cmd.label || projectInfo.config.label;
|
|
224
|
+
const rawTemplateDocs = rawTemplateFiles.map((file) => parseRawFile(file, resolvedLabel, projectInfo.config, projectInfo.absPath));
|
|
194
225
|
codeConnectObjects = codeConnectObjects.concat(rawTemplateDocs);
|
|
195
226
|
}
|
|
196
227
|
if (cmd.label || projectInfo.config.label) {
|
|
@@ -199,6 +230,12 @@ async function getCodeConnectObjects(cmd, projectInfo, silent = false) {
|
|
|
199
230
|
doc.label = cmd.label || projectInfo.config.label || doc.label;
|
|
200
231
|
});
|
|
201
232
|
}
|
|
233
|
+
if (projectInfo.config.language) {
|
|
234
|
+
logging_1.logger.info(`Using language "${projectInfo.config.language}"`);
|
|
235
|
+
codeConnectObjects.forEach((doc) => {
|
|
236
|
+
doc.language = projectInfo.config.language || doc.language;
|
|
237
|
+
});
|
|
238
|
+
}
|
|
202
239
|
return codeConnectObjects;
|
|
203
240
|
}
|
|
204
241
|
// React/Storybook and HTML parsers are handled as special cases for now, they
|
|
@@ -216,7 +253,9 @@ projectInfo,
|
|
|
216
253
|
/** The commander command object */
|
|
217
254
|
cmd,
|
|
218
255
|
/** Silences console output */
|
|
219
|
-
silent = false,
|
|
256
|
+
silent = false,
|
|
257
|
+
/** Skip template helpers (used for extract command) */
|
|
258
|
+
skipTemplateHelpers = false, }) {
|
|
220
259
|
const codeConnectObjects = [];
|
|
221
260
|
const tsProgram = (0, project_1.getTsProgram)(projectInfo);
|
|
222
261
|
const { files, remoteUrl, config, absPath } = projectInfo;
|
|
@@ -233,6 +272,7 @@ silent = false, }) {
|
|
|
233
272
|
repoUrl: remoteUrl,
|
|
234
273
|
debug: cmd.verbose,
|
|
235
274
|
silent,
|
|
275
|
+
skipTemplateHelpers,
|
|
236
276
|
},
|
|
237
277
|
});
|
|
238
278
|
codeConnectObjects.push(...docs);
|
|
@@ -268,7 +308,7 @@ silent = false, }) {
|
|
|
268
308
|
}
|
|
269
309
|
return codeConnectObjects;
|
|
270
310
|
}
|
|
271
|
-
async function getReactCodeConnectObjects(projectInfo, cmd, silent = false) {
|
|
311
|
+
async function getReactCodeConnectObjects(projectInfo, cmd, silent = false, skipTemplateHelpers = false) {
|
|
272
312
|
const codeConnectObjects = await getCodeConnectObjectsFromParseFn({
|
|
273
313
|
parseFn: parser_2.parseReactDoc,
|
|
274
314
|
resolveImportsFn: parser_2.findAndResolveImports,
|
|
@@ -276,6 +316,7 @@ async function getReactCodeConnectObjects(projectInfo, cmd, silent = false) {
|
|
|
276
316
|
projectInfo,
|
|
277
317
|
cmd,
|
|
278
318
|
silent,
|
|
319
|
+
skipTemplateHelpers,
|
|
279
320
|
});
|
|
280
321
|
const storybookCodeConnectObjects = await (0, convert_1.convertStorybookFiles)({
|
|
281
322
|
projectInfo: (0, project_1.getReactProjectInfo)(projectInfo),
|
|
@@ -303,7 +344,7 @@ async function handlePublish(cmd) {
|
|
|
303
344
|
else {
|
|
304
345
|
logging_1.logger.info('Validating Code Connect files...');
|
|
305
346
|
var start = new Date().getTime();
|
|
306
|
-
const valid = await (0, validation_1.validateDocs)(cmd, accessToken, codeConnectObjects);
|
|
347
|
+
const valid = await (0, validation_1.validateDocs)(cmd, accessToken, codeConnectObjects, cmd.apiUrl || projectInfo.config.apiUrl);
|
|
307
348
|
if (!valid) {
|
|
308
349
|
(0, helpers_1.exitWithFeedbackMessage)(1);
|
|
309
350
|
}
|
|
@@ -325,7 +366,13 @@ async function handlePublish(cmd) {
|
|
|
325
366
|
(0, helpers_1.exitWithFeedbackMessage)(1);
|
|
326
367
|
}
|
|
327
368
|
}
|
|
328
|
-
(0, upload_1.upload)({
|
|
369
|
+
(0, upload_1.upload)({
|
|
370
|
+
accessToken,
|
|
371
|
+
docs: codeConnectObjects,
|
|
372
|
+
batchSize: batchSize,
|
|
373
|
+
verbose: cmd.verbose,
|
|
374
|
+
apiUrl: cmd.apiUrl || projectInfo.config.apiUrl,
|
|
375
|
+
});
|
|
329
376
|
}
|
|
330
377
|
async function handleUnpublish(cmd) {
|
|
331
378
|
setupHandler(cmd);
|
|
@@ -334,6 +381,7 @@ async function handleUnpublish(cmd) {
|
|
|
334
381
|
logging_1.logger.info(`Files that would be unpublished:`);
|
|
335
382
|
}
|
|
336
383
|
let nodesToDeleteRelevantInfo;
|
|
384
|
+
const projectInfo = await (0, project_1.getProjectInfo)(dir, cmd.config);
|
|
337
385
|
if (cmd.node) {
|
|
338
386
|
if (!cmd.label) {
|
|
339
387
|
(0, logging_1.exitWithError)('Label is required when specifying a node');
|
|
@@ -341,7 +389,6 @@ async function handleUnpublish(cmd) {
|
|
|
341
389
|
nodesToDeleteRelevantInfo = [{ figmaNode: cmd.node, label: cmd.label }];
|
|
342
390
|
}
|
|
343
391
|
else {
|
|
344
|
-
const projectInfo = await (0, project_1.getProjectInfo)(dir, cmd.config);
|
|
345
392
|
const codeConnectObjects = await getCodeConnectObjects(cmd, projectInfo);
|
|
346
393
|
nodesToDeleteRelevantInfo = codeConnectObjects.map((doc) => ({
|
|
347
394
|
figmaNode: doc.figmaNode,
|
|
@@ -359,6 +406,7 @@ async function handleUnpublish(cmd) {
|
|
|
359
406
|
(0, delete_docs_1.delete_docs)({
|
|
360
407
|
accessToken,
|
|
361
408
|
docs: nodesToDeleteRelevantInfo,
|
|
409
|
+
apiUrl: cmd.apiUrl || projectInfo.config.apiUrl,
|
|
362
410
|
});
|
|
363
411
|
}
|
|
364
412
|
async function handleParse(cmd) {
|
|
@@ -399,4 +447,95 @@ async function handleCreate(nodeUrl, cmd) {
|
|
|
399
447
|
cmd,
|
|
400
448
|
});
|
|
401
449
|
}
|
|
450
|
+
async function handleMigrate(pattern, cmd) {
|
|
451
|
+
setupHandler(cmd);
|
|
452
|
+
const dir = cmd.dir ?? process.cwd();
|
|
453
|
+
let projectInfo = await (0, project_1.getProjectInfo)(dir, cmd.config);
|
|
454
|
+
// Clear documentUrlSubstitutions so we preserve original URLs in migrated templates
|
|
455
|
+
projectInfo = {
|
|
456
|
+
...projectInfo,
|
|
457
|
+
config: {
|
|
458
|
+
...projectInfo.config,
|
|
459
|
+
documentUrlSubstitutions: {},
|
|
460
|
+
},
|
|
461
|
+
};
|
|
462
|
+
// If a glob pattern is provided, override the project files
|
|
463
|
+
if (pattern) {
|
|
464
|
+
const { globSync } = require('glob');
|
|
465
|
+
const files = globSync(pattern, {
|
|
466
|
+
cwd: dir,
|
|
467
|
+
absolute: true,
|
|
468
|
+
nodir: true,
|
|
469
|
+
});
|
|
470
|
+
if (files.length === 0) {
|
|
471
|
+
(0, logging_1.exitWithError)(`No files found matching pattern: ${pattern}`);
|
|
472
|
+
}
|
|
473
|
+
logging_1.logger.info(`Found ${files.length} file(s) matching pattern: ${pattern}`);
|
|
474
|
+
projectInfo = {
|
|
475
|
+
...projectInfo,
|
|
476
|
+
files,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
// Parse the files to get Code Connect objects
|
|
480
|
+
const codeConnectObjects = await getCodeConnectObjects(cmd, projectInfo, false, true);
|
|
481
|
+
if (codeConnectObjects.length === 0) {
|
|
482
|
+
(0, logging_1.exitWithError)('No Code Connect objects found to migrate');
|
|
483
|
+
}
|
|
484
|
+
logging_1.logger.info(`Found ${codeConnectObjects.length} Code Connect object(s) to migrate`);
|
|
485
|
+
let migratedCount = 0;
|
|
486
|
+
let skippedCount = 0;
|
|
487
|
+
const errors = [];
|
|
488
|
+
// Get git root path for converting remote URLs to local paths
|
|
489
|
+
const gitRootPath = (0, project_2.getGitRepoAbsolutePath)(dir);
|
|
490
|
+
// Migrate each Code Connect object to a template file
|
|
491
|
+
for (const doc of codeConnectObjects) {
|
|
492
|
+
try {
|
|
493
|
+
// Skip if no template (shouldn't happen, but be safe)
|
|
494
|
+
if (!doc.template) {
|
|
495
|
+
logging_1.logger.warn(`Skipping ${doc.figmaNode}: no template found`);
|
|
496
|
+
skippedCount++;
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
// Convert remote file URL to local path if needed
|
|
500
|
+
let localSourcePath;
|
|
501
|
+
if (doc.source && gitRootPath) {
|
|
502
|
+
const relativePath = (0, run_wizard_2.convertRemoteFileUrlToRelativePath)({
|
|
503
|
+
remoteFileUrl: doc.source,
|
|
504
|
+
gitRootPath,
|
|
505
|
+
dir,
|
|
506
|
+
});
|
|
507
|
+
if (relativePath) {
|
|
508
|
+
// Convert relative path to absolute path for writeTemplateFile
|
|
509
|
+
localSourcePath = path_1.default.resolve(dir, relativePath);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
const { outputPath, skipped } = (0, migration_helpers_1.writeTemplateFile)(doc, cmd.outDir, dir, localSourcePath);
|
|
513
|
+
if (skipped) {
|
|
514
|
+
logging_1.logger.warn(`Skipping ${outputPath}: file already exists`);
|
|
515
|
+
skippedCount++;
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
logging_1.logger.info(`${(0, logging_1.success)('✓')} Migrated to ${(0, logging_1.highlight)(outputPath)}`);
|
|
519
|
+
migratedCount++;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
catch (error) {
|
|
523
|
+
const errorMsg = `Failed to migrate ${doc.figmaNode}: ${error}`;
|
|
524
|
+
logging_1.logger.error(errorMsg);
|
|
525
|
+
errors.push(errorMsg);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
// Summary
|
|
529
|
+
console.log('');
|
|
530
|
+
logging_1.logger.info(`Migration complete: ${(0, logging_1.success)(`${migratedCount} migrated`)}, ${skippedCount} skipped`);
|
|
531
|
+
if (errors.length > 0) {
|
|
532
|
+
console.log('');
|
|
533
|
+
logging_1.logger.error(`Encountered ${errors.length} error(s):`);
|
|
534
|
+
errors.forEach((err) => logging_1.logger.error(` ${err}`));
|
|
535
|
+
process.exit(1);
|
|
536
|
+
}
|
|
537
|
+
if (migratedCount === 0) {
|
|
538
|
+
(0, logging_1.exitWithError)('No files were migrated');
|
|
539
|
+
}
|
|
540
|
+
}
|
|
402
541
|
//# sourceMappingURL=connect.js.map
|
|
@@ -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":";;;;;AAgFA,gEAmEC;AAED,wCAEC;AAcD,wBAEC;AA0CD,oCA6CC;AAED,sDA2GC;AA1WD,4CAAmB;AACnB,8CAA0C;AAC1C,sDAAoD;AACpD,8CAA4D;AAC5D,gDAS2B;AAC3B,+CAAuF;AAEvF,kDAA4D;AAC5D,wDAAoD;AACpD,6DAAwD;AACxD,sEAA0E;AAC1E,+DAAgD;AAChD,gFAA8F;AAE9F,gDAAuB;AACvB,+CAAmD;AACnD,gDAA4D;AAC5D,2CAA6C;AAC7C,4DAOiC;AACjC,4CAAsE;AACtE,8EAA+F;AAC/F,oEAAgE;AAChE,6DAAiF;AACjF,gDAA2D;AAgB3D,SAAS,cAAc,CAAC,OAA0B,EAAE,IAAY,EAAE,WAAmB;IACnF,OAAO,OAAO;SACX,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,WAAW,CAAC;SACxB,KAAK,CAAC,WAAW,CAAC;SAClB,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SAC9C,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;SAClD,MAAM,CAAC,cAAc,EAAE,sCAAsC,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,iDAAiD,CAAC;SAChF,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SAC3D,MAAM,CAAC,oBAAoB,EAAE,iEAAiE,CAAC;SAC/F,MAAM,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;SACvF,MAAM,CACL,4BAA4B,EAC5B,4FAA4F,CAC7F;SACA,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;SACnE,WAAW,CACV,QAAQ,EACR,2FAA2F,CAC5F,CAAA;AACL,CAAC;AAED,SAAgB,0BAA0B,CAAC,OAA0B;IACnE,6CAA6C;IAC7C,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC,MAAM,CACpF,IAAA,yBAAe,EAAC,sBAAS,CAAC,CAC3B,CAAA;IAED,0DAA0D;IAC1D,cAAc,CACZ,cAAc,EACd,SAAS,EACT,oGAAoG;QAClG,oJAAoJ;QACpJ,sIAAsI,CACzI;SACE,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,oBAAoB,EAAE,uCAAuC,CAAC;SACrE,MAAM,CAAC,0BAA0B,EAAE,6CAA6C,CAAC;SACjF,MAAM,CACL,8BAA8B,EAC9B,sJAAsJ,CACvJ;SACA,MAAM,CAAC,IAAA,yBAAe,EAAC,aAAa,CAAC,CAAC,CAAA;IAEzC,cAAc,CACZ,cAAc,EACd,WAAW,EACX,mFAAmF;QACjF,oJAAoJ;QACpJ,sIAAsI,CACzI;SACE,MAAM,CACL,uBAAuB,EACvB,6EAA6E,CAC9E;SACA,MAAM,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;SACtD,MAAM,CAAC,0BAA0B,EAAE,6CAA6C,CAAC;SACjF,MAAM,CAAC,IAAA,yBAAe,EAAC,eAAe,CAAC,CAAC,CAAA;IAE3C,cAAc,CACZ,cAAc,EACd,OAAO,EACP,2HAA2H,CAC5H;SACE,MAAM,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;SAClE,MAAM,CAAC,0BAA0B,EAAE,6CAA6C,CAAC;SACjF,MAAM,CAAC,IAAA,yBAAe,EAAC,WAAW,CAAC,CAAC,CAAA;IAEvC,cAAc,CACZ,cAAc,EACd,QAAQ,EACR,6FAA6F,CAC9F;SACE,QAAQ,CAAC,kBAAkB,EAAE,qDAAqD,CAAC;SACnF,MAAM,CAAC,IAAA,yBAAe,EAAC,YAAY,CAAC,CAAC,CAAA;IAExC,cAAc,CACZ,cAAc,EACd,SAAS,EACT,oIAAoI,CACrI;SACE,QAAQ,CAAC,WAAW,EAAE,qEAAqE,CAAC;SAC5F,MAAM,CAAC,oBAAoB,EAAE,0CAA0C,CAAC;SACxE,MAAM,CACL,oBAAoB,EACpB,4EAA4E,CAC7E;SACA,MAAM,CAAC,IAAA,yBAAe,EAAC,aAAa,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED,SAAgB,cAAc,CAAC,GAAgB;IAC7C,OAAO,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;AACpD,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAgB;IAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAA,uBAAa,EACX,2IAA2I,CAC5I,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAgB,MAAM,CAAC,GAAgB;IACrC,OAAO,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;AACjC,CAAC;AAED,SAAS,YAAY,CAAC,GAAgB;IACpC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,gBAAM,CAAC,WAAW,CAAC,kBAAQ,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;AACH,CAAC;AAID,SAAS,sBAAsB,CAC7B,GAAc,EACd,SAAiB,EACjB,MAAyB;IAEzB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;YAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;IAC7B,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACrE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,GAAG,GAAG;QACN,MAAM;QACN,SAAS;KACV,CAAA;AACH,CAAC;AAED,SAAgB,YAAY,CAC1B,QAAgB,EAChB,KAAyB,EACzB,MAA0B,EAC1B,GAAY;IAEZ,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACtD,MAAM,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7D,IAAI,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEzC,6CAA6C;IAC7C,IAAI,MAAM,EAAE,wBAAwB,EAAE,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACrE,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,+DAA+D;IAC/D,MAAM,cAAc,GAAG,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,yCAAgB,CAAC,IAAI,CAAA;IAEtE,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,IAAA,kDAAyB,EAAC,cAAc,CAAC,CAAA;IAE9E,2CAA2C;IAC3C,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,WAAW,GAAG,IAAA,gCAAsB,EAAC,GAAG,CAAC,CAAA;QAC/C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,cAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,YAAY;QACvB,QAAQ;QACR,sDAAsD;QACtD,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;QACpD,QAAQ;QACR,KAAK,EAAE,cAAc;QACrB,MAAM;QACN,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC5B,QAAQ,EAAE;YACR,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO;SAClD;KACF,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,GAAqE,EACrE,WAAwB,EACxB,MAAM,GAAG,KAAK,EACd,mBAAmB,GAAG,KAAK;IAE3B,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gBAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,kBAAkB,GAAsB,EAAE,CAAA;IAE9C,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC1C,kBAAkB,GAAG,MAAM,0BAA0B,CACnD,WAAkD,EAClD,GAAG,EACH,MAAM,EACN,mBAAmB,CACpB,CAAA;IACH,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAChD,kBAAkB,GAAG,MAAM,gCAAgC,CAAC;YAC1D,OAAO,EAAE,qBAAY;YACrB,aAAa,EAAE,IAAI;YACnB,WAAW;YACX,GAAG;YACH,MAAM;YACN,mBAAmB;SACpB,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAwB;YACnC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,EAAE;YACtD,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAA;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAU;YAC7B,iEAAiE;YACjE,iDAAiD;YACjD,WAAW,CAAC,MAA2C,EACvD,OAAO,EACP,WAAW,CAAC,OAAO,CACpB,CAAA;YAED,MAAM,MAAM,GAAG,8CAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAEjD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,mCAAc,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAErD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAA,uBAAa,EAAC,4CAA4C,CAAC,CAAA;YAC7D,CAAC;YAED,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7C,GAAG,sBAAsB,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;gBACzE,QAAQ,EAAE;oBACR,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO;iBAClD;aACF,CAAC,CAAC,CAAA;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAEhB,kEAAkE;gBAClE,IAAA,uBAAa,EAAC,yBAAyB,CAAC,GAAG,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACN,IAAA,uBAAa,EACX,+BAA+B,IAAA,gCAAS,EAAC,CAAC,CAAC,mEAAmE,CAC/G,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAC9D,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CACjC,CAAA;QAED,yEAAyE;QACzE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAA;QAE3D,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAC3E,CAAA;QAED,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1C,gBAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;QACrE,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAA;QAChE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,gBAAM,CAAC,IAAI,CAAC,mBAAmB,WAAW,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;QAC9D,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAYD,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,KAAK,UAAU,gCAAgC,CAAC;AAC9C,0EAA0E;AAC1E,OAAO;AACP,iEAAiE;AACjE,gBAAgB;AAChB,+EAA+E;AAC/E,aAAa;AACb,mBAAmB;AACnB,WAAW;AACX,mCAAmC;AACnC,GAAG;AACH,8BAA8B;AAC9B,MAAM,GAAG,KAAK;AACd,uDAAuD;AACvD,mBAAmB,GAAG,KAAK,GACD;IAC1B,MAAM,kBAAkB,GAAsB,EAAE,CAAA;IAEhD,MAAM,SAAS,GAAG,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAA;IAC3C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAA;IAEzD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,kCAAkB,EAAC,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;QAChG,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,gCAAgB,EAAC;gBAClC,OAAO,EAAE,SAAS;gBAClB,IAAI;gBACJ,MAAM;gBACN,OAAO;gBACP,gBAAgB;gBAChB,OAAO;gBACP,YAAY,EAAE;oBACZ,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,GAAG,CAAC,OAAO;oBAClB,MAAM;oBACN,mBAAmB;iBACpB;aACF,CAAC,CAAA;YAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC3B,gBAAM,CAAC,IAAI,CAAC,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC3B,gBAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;gBACzB,IAAI,CAAC,YAAY,2BAAW,EAAE,CAAC;oBAC7B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClB,CAAC;yBAAM,CAAC;wBACN,gBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;oBAC5B,CAAC;oBACD,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC;wBAC9B,gBAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;wBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACjB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClB,CAAC;yBAAM,CAAC;wBACN,gBAAM,CAAC,KAAK,CAAC,IAAI,6BAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,WAAgD,EAChD,GAAgB,EAChB,MAAM,GAAG,KAAK,EACd,mBAAmB,GAAG,KAAK;IAE3B,MAAM,kBAAkB,GAAG,MAAM,gCAAgC,CAAC;QAChE,OAAO,EAAE,sBAAa;QACtB,gBAAgB,EAAE,8BAAqB;QACvC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QAC7B,WAAW;QACX,GAAG;QACH,MAAM;QACN,mBAAmB;KACpB,CAAC,CAAA;IAEF,MAAM,2BAA2B,GAAG,MAAM,IAAA,+BAAqB,EAAC;QAC9D,WAAW,EAAE,IAAA,6BAAmB,EAAC,WAAW,CAAC;KAC9C,CAAC,CAAA;IAEF,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAEpF,OAAO,qBAAqB,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAIC;IAED,YAAY,CAAC,GAAG,CAAC,CAAA;IAEjB,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACrB,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEzD,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAExE,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,gBAAM,CAAC,IAAI,CACT,kCAAkC,GAAG,iLAAiL,CACvN,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,gBAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC7C,gBAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5F,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAE7C,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,gBAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;SAAM,CAAC;QACN,gBAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;QAC/C,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAY,EAC9B,GAAG,EACH,WAAW,EACX,kBAAkB,EAClB,GAAG,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CACxC,CAAA;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAA,iCAAuB,EAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;YAC9B,IAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAA;YACtB,gBAAM,CAAC,IAAI,CAAC,qCAAqC,IAAI,KAAK,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,gBAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,SAAS,CAAA;IACb,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QACvC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,gBAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAA;YACrF,IAAA,iCAAuB,EAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAA,eAAM,EAAC;QACL,WAAW;QACX,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM;KAChD,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAkD;IAC/E,YAAY,CAAC,GAAG,CAAC,CAAA;IAEjB,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IAErB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,gBAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,yBAAyB,CAAA;IAE7B,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEzD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,IAAA,uBAAa,EAAC,0CAA0C,CAAC,CAAA;QAC3D,CAAC;QACD,yBAAyB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAExE,yBAAyB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3D,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;SAC1D,CAAC,CAAC,CAAA;QAEH,IAAI,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1C,gBAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,gBAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAE7C,IAAA,yBAAW,EAAC;QACV,WAAW;QACX,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM;KAChD,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAoC;IAC7D,YAAY,CAAC,GAAG,CAAC,CAAA;IAEjB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACpC,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEzD,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAExE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,gBAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,YAAE,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,gBAAM,CAAC,IAAI,CAAC,8BAA8B,IAAA,mBAAS,EAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;SAAM,CAAC;QACN,gEAAgE;QAChE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,GAAgB;IAC3D,YAAY,CAAC,GAAG,CAAC,CAAA;IAEjB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACpC,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEzD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAE7C,OAAO,IAAA,iCAAwB,EAAC;QAC9B,WAAW;QACX,yEAAyE;QACzE,2EAA2E;QAC3E,yCAAyC;QACzC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW;QACX,GAAG;KACJ,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAA2B,EAAE,GAAgB;IACxE,YAAY,CAAC,GAAG,CAAC,CAAA;IAEjB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACpC,IAAI,WAAW,GAAG,MAAM,IAAA,wBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEvD,oFAAoF;IACpF,WAAW,GAAG;QACZ,GAAG,WAAW;QACd,MAAM,EAAE;YACN,GAAG,WAAW,CAAC,MAAM;YACrB,wBAAwB,EAAE,EAAE;SAC7B;KACF,CAAA;IAED,4DAA4D;IAC5D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC9B,GAAG,EAAE,GAAG;YACR,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAA,uBAAa,EAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;QAC9D,CAAC;QAED,gBAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,8BAA8B,OAAO,EAAE,CAAC,CAAA;QACzE,WAAW,GAAG;YACZ,GAAG,WAAW;YACd,KAAK;SACN,CAAA;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAErF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,IAAA,uBAAa,EAAC,0CAA0C,CAAC,CAAA;IAC3D,CAAC;IAED,gBAAM,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,MAAM,oCAAoC,CAAC,CAAA;IACnF,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,8DAA8D;IAC9D,MAAM,WAAW,GAAG,IAAA,gCAAsB,EAAC,GAAG,CAAC,CAAA;IAE/C,sDAAsD;IACtD,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,sDAAsD;YACtD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClB,gBAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,SAAS,qBAAqB,CAAC,CAAA;gBAC3D,YAAY,EAAE,CAAA;gBACd,SAAQ;YACV,CAAC;YAED,kDAAkD;YAClD,IAAI,eAAmC,CAAA;YACvC,IAAI,GAAG,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,IAAA,+CAAkC,EAAC;oBACtD,aAAa,EAAE,GAAG,CAAC,MAAM;oBACzB,WAAW;oBACX,GAAG;iBACJ,CAAC,CAAA;gBACF,IAAI,YAAY,EAAE,CAAC;oBACjB,+DAA+D;oBAC/D,eAAe,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;gBACnD,CAAC;YACH,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAA,qCAAiB,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;YAExF,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAM,CAAC,IAAI,CAAC,YAAY,UAAU,uBAAuB,CAAC,CAAA;gBAC1D,YAAY,EAAE,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,gBAAM,CAAC,IAAI,CAAC,GAAG,IAAA,iBAAO,EAAC,GAAG,CAAC,gBAAgB,IAAA,mBAAS,EAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBACnE,aAAa,EAAE,CAAA;YACjB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,qBAAqB,GAAG,CAAC,SAAS,KAAK,KAAK,EAAE,CAAA;YAC/D,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,gBAAM,CAAC,IAAI,CACT,uBAAuB,IAAA,iBAAO,EAAC,GAAG,aAAa,WAAW,CAAC,KAAK,YAAY,UAAU,CACvF,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,gBAAM,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,MAAM,YAAY,CAAC,CAAA;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAA;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,IAAA,uBAAa,EAAC,wBAAwB,CAAC,CAAA;IACzC,CAAC;AACH,CAAC","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 CodeConnectReactConfig,\n ProjectInfo,\n getProjectInfo,\n getReactProjectInfo,\n getRemoteFileUrl,\n getTsProgram,\n} from '../connect/project'\nimport { LogLevel, 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 { 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}\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('--include-template-files', 'flag to include any figma.template.js 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 .option('--include-template-files', 'flag to include any figma.template.js files')\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 .option('--include-template-files', 'flag to include any figma.template.js 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.template.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 .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 [firstLine, ...templateLines] = fileContent.split('\\n')\n let figmaNodeUrl = firstLine.replace(/\\/\\/\\s*url=/, '').trim()\n const template = templateLines.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 // Compute source path relative to git root\n let source = ''\n if (dir) {\n const gitRootPath = getGitRepoAbsolutePath(dir)\n if (gitRootPath) {\n source = path.relative(gitRootPath, filePath)\n }\n }\n\n return {\n figmaNode: figmaNodeUrl,\n template,\n // nestable by default unless user specifies otherwise\n templateData: { nestable: true, isParserless: true },\n language,\n label: effectiveLabel,\n 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; includeTemplateFiles?: boolean },\n projectInfo: ProjectInfo,\n silent = false,\n skipTemplateHelpers = false,\n): Promise<CodeConnectJSON[]> {\n if (cmd.jsonFile) {\n try {\n return JSON.parse(fs.readFileSync(cmd.jsonFile, 'utf8'))\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 if (cmd.includeTemplateFiles) {\n const rawTemplateFiles = projectInfo.files.filter((f: string) =>\n f.endsWith('.figma.template.js'),\n )\n\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 parseRawFile(file, resolvedLabel, projectInfo.config, projectInfo.absPath),\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\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\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 codeConnectObjects = await getCodeConnectObjects(cmd, projectInfo, false, true)\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 // 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 // Convert remote file URL to local path if needed\n let localSourcePath: string | undefined\n if (doc.source && gitRootPath) {\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(doc, cmd.outDir, dir, localSourcePath)\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 // Summary\n console.log('')\n logger.info(\n `Migration complete: ${success(`${migratedCount} migrated`)}, ${skippedCount} skipped`,\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"]}
|
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":";;;;;AAiBA,0CAwBC;AAyCD,kDAGC;AAkBD,8BAEC;AAzGD,kDAAyB;AACzB,uCAAkC;AAClC,iDAAwC;AACxC,uDAAkD;AAGlD,mCAAiC;AAEjC,IAAI,uBAAuB,GAA+B,SAAS,CAAA;AACnE,IAAI,OAAO,GAAuB,SAAS,CAAA;AAM3C,+EAA+E;AAC/E,wCAAwC;AACxC,SAAgB,eAAe;AAC7B,8EAA8E;AAC9E,6CAA6C;AAC7C,EAA4C;IAE5C,OAAO,CAAC,GAAG,IAAoB,EAAE,EAAE;QACjC,wEAAwE;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACzC,wCAAwC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAElC,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAA;QACrC,CAAC;QAED,gBAAgB,EAAE,CAAA;QAElB,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC3C,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,sBAAsB,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,SAAS,gBAAgB;IACvB,eAAO;SACJ,GAAG,CAAuB,iEAAiE,CAAC;SAC5F,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAA;QAE5D,IAAI,IAAA,kCAAe,EAAC,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,uBAAuB,GAAG,aAAa,CAAA;QACzC,CAAC;aAAM,CAAC;YACN,uBAAuB,GAAG,KAAK,CAAA;QACjC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,8CAA8C;QAC9C,uBAAuB,GAAG,KAAK,CAAA;IACjC,CAAC,CAAC,CAAA;AACN,CAAC;AAED,6EAA6E;AAC7E,0EAA0E;AAC1E,+CAA+C;AAC/C,KAAK,UAAU,sBAAsB;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAK;QACP,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,sBAAsB,EAAE,CAAA;AAC1B,CAAC;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,sEAAsE;AACtE,SAAgB,mBAAmB,CAAC,SAAS,GAAG,CAAC;IAC/C,sBAAsB,EAAE,CAAA;IACxB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,mCAAmC,CAAA;AAC5C,CAAC;AAED,SAAS,sBAAsB;IAC7B,IAAI,uBAAuB,EAAE,CAAC;QAC5B,gBAAM,CAAC,IAAI,CAAC,mDAAmD,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,iEAAiE,uBAAuB;;iBAE/K,eAAK,CAAC,WAAW,CAAC,wCAAwC,CAAC,0BAA0B,eAAK,CAAC,WAAW,CAAC,2CAA2C,CAAC,sEAAsE,CAAC,CAAA;IACzO,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,gBAAM,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,SAAgB,SAAS;IACvB,IAAA,wBAAQ,EAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AACpD,CAAC","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.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 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"}
|