@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
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.migrateV1TemplateToV2 = void 0;
|
|
40
|
+
exports.writeTemplateFile = writeTemplateFile;
|
|
41
|
+
exports.migrateTemplateToUseServerSideHelpers = migrateTemplateToUseServerSideHelpers;
|
|
42
|
+
exports.addId = addId;
|
|
43
|
+
const fs_1 = __importDefault(require("fs"));
|
|
44
|
+
const path_1 = __importDefault(require("path"));
|
|
45
|
+
const prettier = __importStar(require("prettier"));
|
|
46
|
+
function writeTemplateFile(doc, outputDir, baseDir, localSourcePath) {
|
|
47
|
+
const suffix = '.figma.template.js';
|
|
48
|
+
// Determine output filename
|
|
49
|
+
let outputPath;
|
|
50
|
+
if (outputDir) {
|
|
51
|
+
// Use specified output directory
|
|
52
|
+
const filename = `${doc.component || 'template'}${suffix}`;
|
|
53
|
+
outputPath = path_1.default.join(outputDir, filename);
|
|
54
|
+
}
|
|
55
|
+
else if (localSourcePath) {
|
|
56
|
+
// Use same directory as local source file
|
|
57
|
+
const sourceDir = path_1.default.dirname(localSourcePath);
|
|
58
|
+
const sourceBasename = path_1.default.basename(localSourcePath, path_1.default.extname(localSourcePath));
|
|
59
|
+
const filename = `${sourceBasename}${suffix}`;
|
|
60
|
+
outputPath = path_1.default.join(sourceDir, filename);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// No source info, use current directory
|
|
64
|
+
const filename = `${doc.component || 'template'}${suffix}`;
|
|
65
|
+
outputPath = path_1.default.join(baseDir, filename);
|
|
66
|
+
}
|
|
67
|
+
// Check if file exists and skip (always skip existing files)
|
|
68
|
+
if (fs_1.default.existsSync(outputPath)) {
|
|
69
|
+
return { outputPath, skipped: true };
|
|
70
|
+
}
|
|
71
|
+
let template = doc.template;
|
|
72
|
+
// Helpers have not been injected - replace reference with server-side versions
|
|
73
|
+
template = migrateTemplateToUseServerSideHelpers(template);
|
|
74
|
+
// V1 -> V2 codemods
|
|
75
|
+
template = (0, exports.migrateV1TemplateToV2)(template);
|
|
76
|
+
// Add required id to template (set to TODO if no usable name)
|
|
77
|
+
template = addId(template, doc.component || 'TODO');
|
|
78
|
+
// Format for ease of use
|
|
79
|
+
template = prettier.format(template, {
|
|
80
|
+
parser: 'typescript',
|
|
81
|
+
semi: false,
|
|
82
|
+
trailingComma: 'all',
|
|
83
|
+
// pluginSearchDirs: false is needed as otherwise prettier picks up other
|
|
84
|
+
// prettier plugins in our monorepo and fails with race condition errors
|
|
85
|
+
pluginSearchDirs: false,
|
|
86
|
+
});
|
|
87
|
+
// Create the template file content
|
|
88
|
+
// Format: first line is the URL, rest is the template
|
|
89
|
+
const fileContent = `// url=${doc.figmaNode}\n${template}`;
|
|
90
|
+
// Ensure output directory exists
|
|
91
|
+
const outputDirPath = path_1.default.dirname(outputPath);
|
|
92
|
+
if (!fs_1.default.existsSync(outputDirPath)) {
|
|
93
|
+
fs_1.default.mkdirSync(outputDirPath, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
// Write the file
|
|
96
|
+
fs_1.default.writeFileSync(outputPath, fileContent, 'utf-8');
|
|
97
|
+
return { outputPath, skipped: false };
|
|
98
|
+
}
|
|
99
|
+
// Renames must match helpers in code_connect_js_api.raw_source.ts
|
|
100
|
+
function migrateTemplateToUseServerSideHelpers(template) {
|
|
101
|
+
return (template
|
|
102
|
+
// React helpers
|
|
103
|
+
.replace(/_fcc_renderReactProp/g, 'figma.helpers.react.renderProp')
|
|
104
|
+
.replace(/_fcc_renderReactChildren/g, 'figma.helpers.react.renderChildren')
|
|
105
|
+
.replace(/_fcc_jsxElement/g, 'figma.helpers.react.jsxElement')
|
|
106
|
+
.replace(/_fcc_function/g, 'figma.helpers.react.function')
|
|
107
|
+
.replace(/_fcc_identifier/g, 'figma.helpers.react.identifier')
|
|
108
|
+
.replace(/_fcc_object/g, 'figma.helpers.react.object')
|
|
109
|
+
.replace(/_fcc_templateString/g, 'figma.helpers.react.templateString')
|
|
110
|
+
.replace(/_fcc_renderPropValue/g, 'figma.helpers.react.renderPropValue')
|
|
111
|
+
.replace(/_fcc_stringifyObject/g, 'figma.helpers.react.stringifyObject')
|
|
112
|
+
.replace(/_fcc_reactComponent/g, 'figma.helpers.react.reactComponent')
|
|
113
|
+
.replace(/_fcc_array/g, 'figma.helpers.react.array')
|
|
114
|
+
.replace(/isReactComponentArray/g, 'figma.helpers.react.isReactComponentArray')
|
|
115
|
+
// Swift helpers
|
|
116
|
+
.replace(/__fcc_renderSwiftChildren/g, 'figma.helpers.swift.renderChildren')
|
|
117
|
+
// Kotlin/Compose helpers
|
|
118
|
+
.replace(/__fcc_renderComposeChildren/g, 'figma.helpers.kotlin.renderChildren'));
|
|
119
|
+
}
|
|
120
|
+
function addId(template, id) {
|
|
121
|
+
return template.replace(/export default \{/, `export default { id: '${id}',`);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Migrates V1 templates to V2 API.
|
|
125
|
+
*
|
|
126
|
+
* This performs safe, incremental transformations. The following patterns
|
|
127
|
+
* are intentionally NOT migrated as they're still supported in V2:
|
|
128
|
+
*
|
|
129
|
+
* - .__properties__.children() - no direct V2 equivalent, still supported
|
|
130
|
+
* - __props metadata building pattern - still valid JavaScript
|
|
131
|
+
* - __renderWithFn__() - complex transformation, still supported
|
|
132
|
+
*
|
|
133
|
+
* These may be addressed in future migrations.
|
|
134
|
+
*/
|
|
135
|
+
const migrateV1TemplateToV2 = (template) => {
|
|
136
|
+
let migrated = template;
|
|
137
|
+
// 1. Core object rename
|
|
138
|
+
migrated = migrated.replace(/figma\.currentLayer/g, 'figma.selectedInstance');
|
|
139
|
+
// 2. Property accessor methods
|
|
140
|
+
migrated = migrated.replace(/\.__properties__\.string\(/g, '.getString(');
|
|
141
|
+
migrated = migrated.replace(/\.__properties__\.boolean\(/g, '.getBoolean(');
|
|
142
|
+
migrated = migrated.replace(/\.__properties__\.enum\(/g, '.getEnum(');
|
|
143
|
+
migrated = migrated.replace(/\.__properties__\.__instance__\(/g, '.getInstanceSwap(');
|
|
144
|
+
// .__properties__.instance() auto-renders, so we need to add .executeTemplate().example
|
|
145
|
+
migrated = migrated.replace(/\.__properties__\.instance\(([^)]+)\)/g, '.getInstanceSwap($1).executeTemplate().example');
|
|
146
|
+
// 3. Other method renames
|
|
147
|
+
migrated = migrated.replace(/\.__getPropertyValue__\(/g, '.getPropertyValue(');
|
|
148
|
+
// 4. __findChildWithCriteria__ - migrate based on type parameter
|
|
149
|
+
// For TEXT type with __render__(): __findChildWithCriteria__({ name: 'X', type: "TEXT" }).__render__() → findText('X').textContent
|
|
150
|
+
migrated = migrated.replace(/\.__findChildWithCriteria__\(\{\s*name:\s*'([^']+)',\s*type:\s*"TEXT"\s*\}\)\.__render__\(\)/g, ".findText('$1').textContent");
|
|
151
|
+
migrated = migrated.replace(/\.__findChildWithCriteria__\(\{\s*type:\s*"TEXT",\s*name:\s*'([^']+)'\s*\}\)\.__render__\(\)/g, ".findText('$1').textContent");
|
|
152
|
+
// For INSTANCE type: __findChildWithCriteria__({ type: 'INSTANCE', name: 'X' }) → findInstance('X')
|
|
153
|
+
migrated = migrated.replace(/\.__findChildWithCriteria__\(\{\s*name:\s*'([^']+)',\s*type:\s*['"]INSTANCE['"]\s*\}\)/g, ".findInstance('$1')");
|
|
154
|
+
migrated = migrated.replace(/\.__findChildWithCriteria__\(\{\s*type:\s*['"]INSTANCE['"],\s*name:\s*'([^']+)'\s*\}\)/g, ".findInstance('$1')");
|
|
155
|
+
// For TEXT type without __render__(): __findChildWithCriteria__({ type: 'TEXT', name: 'X' }) → findText('X')
|
|
156
|
+
migrated = migrated.replace(/\.__findChildWithCriteria__\(\{\s*name:\s*'([^']+)',\s*type:\s*['"]TEXT['"]\s*\}\)/g, ".findText('$1')");
|
|
157
|
+
migrated = migrated.replace(/\.__findChildWithCriteria__\(\{\s*type:\s*['"]TEXT['"],\s*name:\s*'([^']+)'\s*\}\)/g, ".findText('$1')");
|
|
158
|
+
// 5. __find__() - migrate to findInstance()
|
|
159
|
+
migrated = migrated.replace(/\.__find__\(("([^"]+)"|'([^']+)')\)/g, (match, quote, doubleQuoted, singleQuoted) => {
|
|
160
|
+
const name = doubleQuoted || singleQuoted;
|
|
161
|
+
return `.findInstance("${name}")`;
|
|
162
|
+
});
|
|
163
|
+
// 6. __render__() - migrate to executeTemplate().example (but not if part of __findChildWithCriteria__)
|
|
164
|
+
migrated = migrated.replace(/\.__render__\(\)/g, '.executeTemplate().example');
|
|
165
|
+
// 7. __getProps__() - migrate to executeTemplate().metadata.props
|
|
166
|
+
migrated = migrated.replace(/\.__getProps__\(\)/g, '.executeTemplate().metadata.props');
|
|
167
|
+
// 8. Export format - simple case
|
|
168
|
+
// Match export default figma.code` (or tsx, html, etc) and wrap in { example: ... }
|
|
169
|
+
migrated = migrated.replace(/export default figma\.(code|tsx|html|swift|kotlin)`/g, 'export default { example: figma.$1`');
|
|
170
|
+
// Close the template literal for simple exports (look for backtick at end, handling multiline)
|
|
171
|
+
// Use a more robust approach: find the last backtick that's not followed by more content
|
|
172
|
+
migrated = migrated.replace(/(export default \{ example: figma\.\w+`[\s\S]*?)`(?=\s*$)/gm, '$1` }');
|
|
173
|
+
// 9. Export format - spread operator case
|
|
174
|
+
// { ...figma.code`...`, metadata: ... } → { example: figma.code`...`, metadata: ... }
|
|
175
|
+
migrated = migrated.replace(/\{\s*\.\.\.figma\.(code|tsx|html|swift|kotlin)`/g, '{ example: figma.$1`');
|
|
176
|
+
return migrated;
|
|
177
|
+
};
|
|
178
|
+
exports.migrateV1TemplateToV2 = migrateV1TemplateToV2;
|
|
179
|
+
//# sourceMappingURL=migration_helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration_helpers.js","sourceRoot":"","sources":["../../src/connect/migration_helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport * as prettier from 'prettier'\nimport { CodeConnectJSON } from '../connect/figma_connect'\n\nexport function writeTemplateFile(\n doc: CodeConnectJSON,\n outputDir: string | undefined,\n baseDir: string,\n localSourcePath?: string,\n): { outputPath: string; skipped: boolean } {\n const suffix = '.figma.template.js'\n\n // Determine output filename\n let outputPath: string\n\n if (outputDir) {\n // Use specified output directory\n const filename = `${doc.component || 'template'}${suffix}`\n outputPath = path.join(outputDir, filename)\n } else if (localSourcePath) {\n // Use same directory as local source file\n const sourceDir = path.dirname(localSourcePath)\n const sourceBasename = path.basename(localSourcePath, path.extname(localSourcePath))\n const filename = `${sourceBasename}${suffix}`\n outputPath = path.join(sourceDir, filename)\n } else {\n // No source info, use current directory\n const filename = `${doc.component || 'template'}${suffix}`\n outputPath = path.join(baseDir, filename)\n }\n\n // Check if file exists and skip (always skip existing files)\n if (fs.existsSync(outputPath)) {\n return { outputPath, skipped: true }\n }\n\n let template = doc.template\n\n // Helpers have not been injected - replace reference with server-side versions\n template = migrateTemplateToUseServerSideHelpers(template)\n // V1 -> V2 codemods\n template = migrateV1TemplateToV2(template)\n // Add required id to template (set to TODO if no usable name)\n template = addId(template, doc.component || 'TODO')\n // Format for ease of use\n template = prettier.format(template, {\n parser: 'typescript',\n semi: false,\n trailingComma: 'all',\n // pluginSearchDirs: false is needed as otherwise prettier picks up other\n // prettier plugins in our monorepo and fails with race condition errors\n pluginSearchDirs: false,\n })\n\n // Create the template file content\n // Format: first line is the URL, rest is the template\n const fileContent = `// url=${doc.figmaNode}\\n${template}`\n\n // Ensure output directory exists\n const outputDirPath = path.dirname(outputPath)\n if (!fs.existsSync(outputDirPath)) {\n fs.mkdirSync(outputDirPath, { recursive: true })\n }\n\n // Write the file\n fs.writeFileSync(outputPath, fileContent, 'utf-8')\n\n return { outputPath, skipped: false }\n}\n\n// Renames must match helpers in code_connect_js_api.raw_source.ts\nexport function migrateTemplateToUseServerSideHelpers(template: string) {\n return (\n template\n // React helpers\n .replace(/_fcc_renderReactProp/g, 'figma.helpers.react.renderProp')\n .replace(/_fcc_renderReactChildren/g, 'figma.helpers.react.renderChildren')\n .replace(/_fcc_jsxElement/g, 'figma.helpers.react.jsxElement')\n .replace(/_fcc_function/g, 'figma.helpers.react.function')\n .replace(/_fcc_identifier/g, 'figma.helpers.react.identifier')\n .replace(/_fcc_object/g, 'figma.helpers.react.object')\n .replace(/_fcc_templateString/g, 'figma.helpers.react.templateString')\n .replace(/_fcc_renderPropValue/g, 'figma.helpers.react.renderPropValue')\n .replace(/_fcc_stringifyObject/g, 'figma.helpers.react.stringifyObject')\n .replace(/_fcc_reactComponent/g, 'figma.helpers.react.reactComponent')\n .replace(/_fcc_array/g, 'figma.helpers.react.array')\n .replace(/isReactComponentArray/g, 'figma.helpers.react.isReactComponentArray')\n // Swift helpers\n .replace(/__fcc_renderSwiftChildren/g, 'figma.helpers.swift.renderChildren')\n // Kotlin/Compose helpers\n .replace(/__fcc_renderComposeChildren/g, 'figma.helpers.kotlin.renderChildren')\n )\n}\n\nexport function addId(template: string, id: string): string {\n return template.replace(/export default \\{/, `export default { id: '${id}',`)\n}\n\n/**\n * Migrates V1 templates to V2 API.\n *\n * This performs safe, incremental transformations. The following patterns\n * are intentionally NOT migrated as they're still supported in V2:\n *\n * - .__properties__.children() - no direct V2 equivalent, still supported\n * - __props metadata building pattern - still valid JavaScript\n * - __renderWithFn__() - complex transformation, still supported\n *\n * These may be addressed in future migrations.\n */\nexport const migrateV1TemplateToV2 = (template: string): string => {\n let migrated = template\n\n // 1. Core object rename\n migrated = migrated.replace(/figma\\.currentLayer/g, 'figma.selectedInstance')\n\n // 2. Property accessor methods\n migrated = migrated.replace(/\\.__properties__\\.string\\(/g, '.getString(')\n migrated = migrated.replace(/\\.__properties__\\.boolean\\(/g, '.getBoolean(')\n migrated = migrated.replace(/\\.__properties__\\.enum\\(/g, '.getEnum(')\n migrated = migrated.replace(/\\.__properties__\\.__instance__\\(/g, '.getInstanceSwap(')\n // .__properties__.instance() auto-renders, so we need to add .executeTemplate().example\n migrated = migrated.replace(\n /\\.__properties__\\.instance\\(([^)]+)\\)/g,\n '.getInstanceSwap($1).executeTemplate().example',\n )\n\n // 3. Other method renames\n migrated = migrated.replace(/\\.__getPropertyValue__\\(/g, '.getPropertyValue(')\n\n // 4. __findChildWithCriteria__ - migrate based on type parameter\n // For TEXT type with __render__(): __findChildWithCriteria__({ name: 'X', type: \"TEXT\" }).__render__() → findText('X').textContent\n migrated = migrated.replace(\n /\\.__findChildWithCriteria__\\(\\{\\s*name:\\s*'([^']+)',\\s*type:\\s*\"TEXT\"\\s*\\}\\)\\.__render__\\(\\)/g,\n \".findText('$1').textContent\",\n )\n migrated = migrated.replace(\n /\\.__findChildWithCriteria__\\(\\{\\s*type:\\s*\"TEXT\",\\s*name:\\s*'([^']+)'\\s*\\}\\)\\.__render__\\(\\)/g,\n \".findText('$1').textContent\",\n )\n // For INSTANCE type: __findChildWithCriteria__({ type: 'INSTANCE', name: 'X' }) → findInstance('X')\n migrated = migrated.replace(\n /\\.__findChildWithCriteria__\\(\\{\\s*name:\\s*'([^']+)',\\s*type:\\s*['\"]INSTANCE['\"]\\s*\\}\\)/g,\n \".findInstance('$1')\",\n )\n migrated = migrated.replace(\n /\\.__findChildWithCriteria__\\(\\{\\s*type:\\s*['\"]INSTANCE['\"],\\s*name:\\s*'([^']+)'\\s*\\}\\)/g,\n \".findInstance('$1')\",\n )\n // For TEXT type without __render__(): __findChildWithCriteria__({ type: 'TEXT', name: 'X' }) → findText('X')\n migrated = migrated.replace(\n /\\.__findChildWithCriteria__\\(\\{\\s*name:\\s*'([^']+)',\\s*type:\\s*['\"]TEXT['\"]\\s*\\}\\)/g,\n \".findText('$1')\",\n )\n migrated = migrated.replace(\n /\\.__findChildWithCriteria__\\(\\{\\s*type:\\s*['\"]TEXT['\"],\\s*name:\\s*'([^']+)'\\s*\\}\\)/g,\n \".findText('$1')\",\n )\n\n // 5. __find__() - migrate to findInstance()\n migrated = migrated.replace(\n /\\.__find__\\((\"([^\"]+)\"|'([^']+)')\\)/g,\n (match, quote, doubleQuoted, singleQuoted) => {\n const name = doubleQuoted || singleQuoted\n return `.findInstance(\"${name}\")`\n },\n )\n\n // 6. __render__() - migrate to executeTemplate().example (but not if part of __findChildWithCriteria__)\n migrated = migrated.replace(/\\.__render__\\(\\)/g, '.executeTemplate().example')\n\n // 7. __getProps__() - migrate to executeTemplate().metadata.props\n migrated = migrated.replace(/\\.__getProps__\\(\\)/g, '.executeTemplate().metadata.props')\n\n // 8. Export format - simple case\n // Match export default figma.code` (or tsx, html, etc) and wrap in { example: ... }\n migrated = migrated.replace(\n /export default figma\\.(code|tsx|html|swift|kotlin)`/g,\n 'export default { example: figma.$1`',\n )\n // Close the template literal for simple exports (look for backtick at end, handling multiline)\n // Use a more robust approach: find the last backtick that's not followed by more content\n migrated = migrated.replace(\n /(export default \\{ example: figma\\.\\w+`[\\s\\S]*?)`(?=\\s*$)/gm,\n '$1` }',\n )\n\n // 9. Export format - spread operator case\n // { ...figma.code`...`, metadata: ... } → { example: figma.code`...`, metadata: ... }\n migrated = migrated.replace(\n /\\{\\s*\\.\\.\\.figma\\.(code|tsx|html|swift|kotlin)`/g,\n '{ example: figma.$1`',\n )\n\n return migrated\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifiers.js","sourceRoot":"","sources":["../../src/connect/modifiers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modifiers.js","sourceRoot":"","sources":["../../src/connect/modifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript'\nimport { ConnectedComponent } from './api'\nimport { ParserContext, ParserError } from './parser_common'\nimport { findJSXElement, parseRenderFunctionExpression } from '../react/parser'\n\nexport enum ModifierKind {\n GetProps = 'getProps',\n Render = 'render',\n}\n\nexport interface ModifierBase {\n kind: ModifierKind\n}\n\nexport interface GetPropsModifier extends ModifierBase {\n kind: ModifierKind.GetProps\n}\n\nexport interface RenderModifier extends ModifierBase {\n kind: ModifierKind.Render\n args: {\n renderFn: {\n code: string\n imports: { statement: string; file: string }[]\n referencedProps: Set<string>\n }\n }\n}\n\nexport type Modifier = GetPropsModifier | RenderModifier\n\ntype PickMatching<T, V> = {\n [K in keyof T as T[K] extends V ? K : never]: {\n match: (exp: ts.CallExpression) => exp is ts.CallExpression\n parse: (exp: ts.CallExpression, parser: ParserContext) => Modifier\n }\n}\ntype ExtractMethods<T> = PickMatching<T, Function>\n\nconst Modifiers: {\n [key: string]: {\n match: (exp: ts.CallExpression) => exp is ts.CallExpression\n parse: (exp: ts.CallExpression, parser: ParserContext) => Modifier\n }\n} = {\n ...getInstanceModifiers(),\n}\n\nfunction makeModifier(\n modifierName: string,\n modifier: (exp: ts.CallExpression, parser: ParserContext) => Modifier,\n) {\n return {\n match: (exp: ts.CallExpression): exp is ts.CallExpression => {\n return (\n ts.isCallExpression(exp) &&\n ts.isPropertyAccessExpression(exp.expression) &&\n exp.expression.name.getText() === modifierName\n )\n },\n parse: modifier,\n }\n}\n\nfunction getInstanceModifiers(): ExtractMethods<ConnectedComponent> {\n return {\n getProps: makeModifier('getProps', () => {\n return {\n kind: ModifierKind.GetProps,\n }\n }),\n render: makeModifier('render', (exp, parserContext) => {\n const renderFunction = exp.arguments?.[0]\n if (\n renderFunction &&\n (ts.isArrowFunction(renderFunction) ||\n ts.isFunctionExpression(renderFunction) ||\n ts.isFunctionDeclaration(renderFunction)) &&\n findJSXElement(renderFunction)\n ) {\n const { code, imports, referencedProps } = parseRenderFunctionExpression(\n renderFunction,\n parserContext,\n )\n return {\n kind: ModifierKind.Render,\n args: {\n renderFn: {\n code,\n imports,\n referencedProps,\n },\n },\n }\n } else {\n throw new ParserError(\n 'first argument to render() must be a render function that returns a single JSX element',\n {\n node: exp,\n sourceFile: parserContext.sourceFile,\n },\n )\n }\n }),\n }\n}\n\nexport function parseModifier(exp: ts.CallExpression, parserContext: ParserContext): Modifier {\n for (const key in Modifiers) {\n if (Modifiers[key].match(exp)) {\n return Modifiers[key].parse(exp, parserContext)\n }\n }\n\n throw new ParserError(`Unknown modifier: ${exp.getText()}`, {\n node: exp,\n sourceFile: parserContext.sourceFile,\n })\n}\n\nexport function modifierToString(modifier: Modifier) {\n switch (modifier.kind) {\n case ModifierKind.GetProps: {\n return '__getProps__()'\n }\n case ModifierKind.Render: {\n const { code, referencedProps } = modifier.args.renderFn\n return `__renderWithFn__(({${Array.from(referencedProps).join(',')}}) => ${code})`\n }\n default:\n throw new Error('Unknown modifier')\n }\n}\n"]}
|
|
@@ -126,6 +126,7 @@ export type ParseOptions = {
|
|
|
126
126
|
repoUrl?: string;
|
|
127
127
|
debug?: boolean;
|
|
128
128
|
silent?: boolean;
|
|
129
|
+
skipTemplateHelpers?: boolean;
|
|
129
130
|
};
|
|
130
131
|
export type ParseFn = (node: ts.CallExpression, parserContext: ParserContext, { repoUrl, silent }: ParseOptions) => Promise<CodeConnectJSON>;
|
|
131
132
|
export type ResolveImportsFn = (program: ts.Program, sourceFile: ts.SourceFile) => Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser_common.d.ts","sourceRoot":"","sources":["../../src/connect/parser_common.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parser_common.d.ts","sourceRoot":"","sources":["../../src/connect/parser_common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser_common.js","sourceRoot":"","sources":["../../src/connect/parser_common.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser_common.js","sourceRoot":"","sources":["../../src/connect/parser_common.ts"],"names":[],"mappings":"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","sourcesContent":["import ts, { JsxExpression } from 'typescript'\nimport { FIGMA_CONNECT_CALL, PropMappings, valueToString } from './intrinsics'\nimport { highlight, reset } from '../common/logging'\nimport { error } from 'console'\nimport {\n assertIsObjectLiteralExpression,\n assertIsStringLiteral,\n convertObjectLiteralToJs,\n parsePropertyOfType,\n stripQuotesFromNode,\n} from '../typescript/compiler'\nimport { BaseCodeConnectConfig } from './project'\nimport { CodeConnectJSON } from './figma_connect'\n\ninterface ParserErrorContext {\n sourceFile: ts.SourceFile\n node: ts.Node | undefined\n}\n\nexport function getPositionInSourceFile(node: ts.Node, sourceFile: ts.SourceFile) {\n return sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile))\n}\n\nexport class ParserError extends Error {\n sourceFilePosition: ts.LineAndCharacter | null\n sourceFileName: string\n\n constructor(message: string, context?: ParserErrorContext) {\n super(message)\n this.name = 'ParserError'\n this.sourceFileName = context?.sourceFile.fileName || ''\n this.sourceFilePosition =\n context && context.node\n ? getPositionInSourceFile(context.node, context.sourceFile) || null\n : null\n }\n\n toString() {\n let msg = `${highlight(error(this.name))}: ${this.message}\\n`\n if (this.sourceFileName && this.sourceFilePosition) {\n msg += ` -> ${reset(this.sourceFileName)}:${this.sourceFilePosition.line}:${\n this.sourceFilePosition.character\n }\\n`\n }\n return msg\n }\n\n toDebugString() {\n return this.toString() + `\\n ${this.stack}`\n }\n}\n\nexport class InternalError extends ParserError {\n constructor(message: string) {\n super(message)\n this.name = 'InternalError'\n }\n}\n\nexport interface ParserContext {\n checker: ts.TypeChecker\n sourceFile: ts.SourceFile\n resolvedImports: Record<string, string>\n config: any\n absPath: string\n}\n\n/**\n * Factory to create a function that is used to create `__PROP__(propName)`\n * function nodes, which are used to replace prop references and ultimately\n * replaced.\n *\n * @returns Function to create `__PROP__(propName)` function nodes\n */\nexport function makeCreatePropPlaceholder({\n propMappings,\n referencedProps,\n sourceFile,\n}: {\n /** The prop mappings object */\n propMappings?: PropMappings | undefined\n /** The set of referenced props in the current example */\n referencedProps: Set<string>\n /** The source file */\n sourceFile: ts.SourceFile\n}) {\n return function ({\n name,\n node,\n wrapInJsxExpression = false,\n }: {\n /** The prop name */\n name: string\n /** The props node, used for error reporting */\n node: ts.Node\n /** Whether to wrap the placeholder in a JSX expression node */\n wrapInJsxExpression?: boolean\n }) {\n let propReferenceName = name\n // for nested prop references like `nested.prop`, we only want to look for\n // the prop mapping of `nested`, but include the full `nested.prop` in the\n // __PROP__ call\n if (name.includes('.')) {\n propReferenceName = name.split('.')[0]\n }\n\n // if prop mappings exist, check that the prop reference is in the mappings\n if (propMappings) {\n const mappedProp = propMappings[propReferenceName]\n if (!mappedProp) {\n throw new ParserError(\n `Could not find prop mapping for ${propReferenceName} in the props object`,\n {\n sourceFile,\n node,\n },\n )\n }\n }\n\n referencedProps.add(propReferenceName)\n const callExpression = ts.factory.createCallExpression(\n ts.factory.createIdentifier('__PROP__'),\n undefined,\n [ts.factory.createStringLiteral(name)],\n )\n\n if (wrapInJsxExpression) {\n return ts.factory.createJsxExpression(undefined, callExpression)\n } else {\n return callExpression\n }\n }\n}\n\n/**\n * TS AST visitor function for use with example functions, which replaces\n * references to the `props` argument in various forms in the example code with\n * `__PROP__(propName)` placeholders (created with a createPropPlaceholder\n * function).\n *\n * This is called when transforming the TS AST, and allows us to normalise the\n * different forms of supported prop references into a single representation,\n * which we can then handle consistently (currently we replace the placeholders,\n * using a regex).\n *\n * @returns Placeholder node, or undefined if the node is not a supported prop\n * reference (which results in no transformation)\n */\nexport function visitPropReferencingNode({\n propsParameter,\n node,\n createPropPlaceholder,\n useJsx,\n}: {\n /** The props function parameter node */\n propsParameter: ts.ParameterDeclaration\n /** The node to visit */\n node: ts.Node\n /**\n * The function to create `__PROP__(propName)` function nodes, created by\n * `baseCreatePropPlaceholder`\n * */\n createPropPlaceholder: ReturnType<typeof makeCreatePropPlaceholder>\n /** Whether to support JSX syntax or not */\n useJsx?: boolean\n}): ts.Expression | undefined {\n // `props.` notation\n if (\n ts.isIdentifier(propsParameter.name) &&\n ts.isPropertyAccessExpression(node) &&\n node.expression.getText().startsWith(propsParameter.name.getText())\n ) {\n // nested notation e.g `props.nested.prop`\n if (ts.isPropertyAccessExpression(node.expression)) {\n let current: ts.Node = node\n const parts: string[] = []\n\n // Build the property name by traversing up the chain\n while (ts.isPropertyAccessExpression(current)) {\n parts.unshift(current.name.getText())\n current = current.expression\n }\n\n // Join the parts together to form the full property name\n const name = parts.join('.')\n return createPropPlaceholder({ name, node })\n }\n const name = node.name.getText()\n return createPropPlaceholder({ name, node })\n }\n // `props[\"\"]` notation\n if (\n ts.isIdentifier(propsParameter.name) &&\n ts.isElementAccessExpression(node) &&\n node.expression.getText().startsWith(propsParameter.name.getText()) &&\n ts.isStringLiteral(node.argumentExpression)\n ) {\n const name = stripQuotesFromNode(node.argumentExpression)\n return createPropPlaceholder({ name, node })\n }\n // object destructuring references\n if (ts.isObjectBindingPattern(propsParameter.name)) {\n const isValidNode = useJsx\n ? ts.isJsxExpression(node)\n : ts.isPropertyAccessExpression(node) || ts.isIdentifier(node)\n const target = useJsx ? (node as JsxExpression).expression : node\n\n if (\n isValidNode &&\n target &&\n propsParameter.name.elements.find((el) => target?.getText().startsWith(el.name.getText()))\n ) {\n const name = target.getText()\n return createPropPlaceholder({ name, node, wrapInJsxExpression: useJsx })\n }\n }\n\n return undefined\n}\n\n/**\n * Get template code to create variables referencing the props in the prop\n * mappings. This converts the prop mappings into JS calls like `const propName\n * = figma.properties.string('Prop Name')`, which can then be prepended to the\n * template code.\n *\n * @returns Template code string\n */\nexport function getReferencedPropsForTemplate({\n propMappings = {},\n}: {\n /** The prop mappings object */\n propMappings: PropMappings | undefined\n /** The top level node, used for error reporting */\n exp: ts.Node\n /** The source file */\n sourceFile: ts.SourceFile\n}) {\n let templateCode = ''\n\n if (Object.keys(propMappings).length > 0) {\n for (const prop in propMappings) {\n const propMapping = propMappings[prop]\n templateCode += `const ${prop} = ${valueToString(propMapping)}\\n`\n }\n templateCode += `const __props = {}\\n`\n Object.keys(propMappings).forEach((prop) => {\n // If trying to render prop resulted in an error (e.g. layer was not found\n // because it was invisible), don't include it in the __props object as\n // this will result in a runtime error.\n //\n // TODO Note that this can also happen if there is a typo in the prop name\n // of a nested prop, because we don't validate these at publish time,\n // which would be confusing. Perhaps we should have a way to show a\n // warning but not an error to the user.\n templateCode += `if (${prop} && ${prop}.type !== 'ERROR') {\n __props[\"${prop}\"] = ${prop}\n}\\n`\n })\n templateCode += `\\n`\n }\n\n return templateCode\n}\n\n/**\n * Checks if a file contains Code Connect by looking for the `figma.connect()` function call\n */\nexport function isFigmaConnectFile(\n program: ts.Program,\n file: string,\n extension: string | string[],\n) {\n const allowedExtensions = Array.isArray(extension) ? extension : [extension]\n const fileExtension = file.split('.').pop()\n\n // If the file has no extension, we can't determine if it's a Code Connect file\n if (!fileExtension) {\n return false\n }\n\n // If the file extension is not in the list of supported extensions, it's not a Code Connect file\n if (!allowedExtensions.includes(fileExtension)) {\n return false\n }\n\n const sourceFile = program.getSourceFile(file)\n if (!sourceFile) {\n throw new InternalError(`Could not find source file for ${file}`)\n }\n\n return (\n findDescendants(sourceFile, (node: ts.Node) => {\n if (isFigmaConnectCall(node, sourceFile)) {\n return true\n }\n return false\n }).length > 0\n )\n}\n\n/**\n * Checks if an AST node is a `figma.connect()` call\n *\n * @param node AST node\n * @param sourceFile Source file\n * @returns True if the node is a `figma.connect()` call\n */\nexport function isFigmaConnectCall(\n node: ts.Node,\n sourceFile: ts.SourceFile,\n): node is ts.CallExpression {\n return (\n ts.isCallExpression(node) && node.expression.getText(sourceFile).includes(FIGMA_CONNECT_CALL)\n )\n}\n\nexport function findDescendants(node: ts.Node, cb: (node: ts.Node) => boolean): ts.Node[] {\n const matches: ts.Node[] = []\n function visit(node: ts.Node) {\n if (cb(node)) {\n matches.push(node)\n }\n ts.forEachChild(node, visit)\n }\n visit(node)\n return matches\n}\n\n/**\n * Parses the `links` field of a `figma.connect()` call\n *\n * @param linksArray an ArrayLiteralExpression\n * @param parserContext Parser context\n * @returns An array of link objects\n */\nexport function parseLinks(linksArray: ts.ArrayLiteralExpression, parserContext: ParserContext) {\n const { sourceFile } = parserContext\n const links: { name: string; url: string }[] = []\n for (const element of linksArray.elements) {\n assertIsObjectLiteralExpression(\n element,\n sourceFile,\n `'links' must be an array literal with objects of the format { name: string, url: string }`,\n )\n const name = parsePropertyOfType({\n objectLiteralNode: element,\n propertyName: 'name',\n predicate: ts.isStringLiteral,\n parserContext,\n required: true,\n errorMessage: \"The 'name' property must be a string literal\",\n })\n const url = parsePropertyOfType({\n objectLiteralNode: element,\n propertyName: 'url',\n predicate: ts.isStringLiteral,\n parserContext,\n required: true,\n errorMessage: \"The 'url' property must be a string literal\",\n })\n\n if (name && url) {\n links.push({ name: stripQuotesFromNode(name), url: stripQuotesFromNode(url) })\n }\n }\n\n return links\n}\n\nexport function parseVariant(\n variantMap: ts.ObjectLiteralExpression,\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n) {\n return convertObjectLiteralToJs(variantMap, sourceFile, checker, (valueNode) => {\n if (\n !ts.isObjectLiteralElement(valueNode) &&\n !ts.isStringLiteral(valueNode) &&\n !ts.isNumericLiteral(valueNode) &&\n valueNode.kind !== ts.SyntaxKind.TrueKeyword &&\n valueNode.kind !== ts.SyntaxKind.FalseKeyword\n ) {\n throw new ParserError(`Invalid value for variant, got: ${valueNode.getText()}`, {\n node: valueNode,\n sourceFile,\n })\n }\n })\n}\n\n/**\n * Parses the `imports` field of a `figma.connect()` call\n *\n * @param importsArray an ArrayLiteralExpression\n * @param parserContext Parser context\n * @returns An array of link objects\n */\nexport function parseImports(\n importsArray: ts.ArrayLiteralExpression,\n parserContext: ParserContext,\n) {\n const { sourceFile } = parserContext\n const imports: string[] = []\n for (const element of importsArray.elements) {\n assertIsStringLiteral(element, sourceFile, `'imports' must be an array literal with strings`)\n imports.push(stripQuotesFromNode(element))\n }\n\n return imports\n}\n\nexport type ParseOptions = {\n repoUrl?: string\n debug?: boolean\n silent?: boolean\n skipTemplateHelpers?: boolean\n}\n\nexport type ParseFn = (\n node: ts.CallExpression,\n parserContext: ParserContext,\n { repoUrl, silent }: ParseOptions,\n) => Promise<CodeConnectJSON>\n\nexport type ResolveImportsFn = (\n program: ts.Program,\n sourceFile: ts.SourceFile,\n) => Record<string, string>\n\nexport async function parseCodeConnect<T extends BaseCodeConnectConfig>({\n program,\n file,\n config,\n absPath,\n parseFn,\n resolveImportsFn,\n parseOptions = {},\n}: {\n program: ts.Program\n file: string\n config: T\n absPath: string\n parseFn: ParseFn\n resolveImportsFn?: ResolveImportsFn\n parseOptions?: ParseOptions\n}): Promise<any[]> {\n const sourceFile = program.getSourceFile(file)\n if (!sourceFile) {\n throw new InternalError(`Could not find source file for ${file}`)\n }\n\n const parserContext = {\n checker: program.getTypeChecker(),\n sourceFile,\n resolvedImports: resolveImportsFn ? resolveImportsFn(program, sourceFile) : {},\n config,\n absPath,\n }\n const codeConnectObjects: CodeConnectJSON[] = []\n\n const nodes: ts.Node[] = [parserContext.sourceFile]\n while (nodes.length > 0) {\n const node = nodes.shift()!\n if (isFigmaConnectCall(node, parserContext.sourceFile)) {\n const doc = await parseFn(node, parserContext, parseOptions)\n if (doc) {\n codeConnectObjects.push(doc)\n }\n }\n nodes.push(...node.getChildren(parserContext.sourceFile))\n }\n\n if (codeConnectObjects.length === 0) {\n throw new ParserError(`Didn't find any calls to figma.connect()`, {\n sourceFile: parserContext.sourceFile,\n node: parserContext.sourceFile,\n })\n }\n\n return codeConnectObjects\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser_executable_types.js","sourceRoot":"","sources":["../../src/connect/parser_executable_types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser_executable_types.js","sourceRoot":"","sources":["../../src/connect/parser_executable_types.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { ComponentTypeSignature } from '../react/parser'\nimport { BaseCodeConnectObject } from './figma_connect'\nimport { Intrinsic } from './intrinsics'\n\nexport type ParseRequestPayload = {\n mode: 'PARSE'\n // An array of absolute paths for the parser to process, representing all\n // files matched by the include/exclude globs for this parser.\n paths: string[]\n // Config options passed into this parser (not all parsers) from the config.\n // Each parser's configuration is separate and can take any shape, though we\n // will recommend using the same naming for common concepts like \"importPaths\".\n config: Record<string, any>\n verbose?: boolean\n}\n\nconst FigmaConnectLink = z.object({\n name: z.string(),\n url: z.string(),\n})\n\nexport const ParserExecutableMessages = z.array(\n z.object({\n // DEBUG and INFO messages should be output to console by the CLI for the\n // user to read, according to the current log level setting.\n //\n // If any WARNING or ERROR messages are returned, the CLI can determine\n // whether it should proceed with publishing or not based on configuration\n // and the return code should be zero or non-zero as appropriate.\n //\n // There's no need for a \"result\" field as we can infer this from the\n // messages.\n level: z.union([z.literal('DEBUG'), z.literal('INFO'), z.literal('WARN'), z.literal('ERROR')]),\n // Optional type of message which can be displayed highlighted in the output\n type: z.string().optional(),\n message: z.string(),\n // Optional source location which can be displayed in a standardised form\n sourceLocation: z\n .object({\n file: z.string(),\n line: z.number().optional(),\n })\n .optional(),\n }),\n)\n\n// Zod type modelling the response from a Code Connect parser. Zod allows us to\n// easily validate the response.\n//\n// This type somewhat duplicates the `CodeConnectJSON` type from\n// `figma_connect.ts`, but as Zod doesn't allow us to fully express recursive\n// types such as Intrinsic, we keep this explicit type as well. The `satisfies`\n// should ensure the two types stay in sync.\nexport const ParseResponsePayload = z.object({\n // Array of Code Connect docs parsed from the input files\n docs: z.array(\n z.object({\n // The Figma node URL the doc links to\n figmaNode: z.string(),\n // Optional component name. This is only used for display purposes\n // so can be omitted if it's not relevant to the language/framework\n component: z.string().optional(),\n // Variant restrictions keyed by Figma property name e.g. `{ 'With icon': true }`\n variant: z.record(z.any()).optional(),\n // Optional source path/URL, which can either be a path on disk, which\n // we'll show as a SCM link, or a URL (e.g. for a Storybook parser which\n // wants to link to the story in Storybook rather than the file in Github)\n source: z.string().optional(),\n // Optional source location containing line number information.\n sourceLocation: z\n .object({\n // Optional line number to link to. This is only used if type === 'PATH',\n // to generate a link to the correct line\n line: z.number(),\n })\n .optional(),\n // The JS template function to use for this doc\n template: z.string(),\n templateData: z.object({\n // Map of information describing the props used by the template. This is\n // used by the CLI to validate props before publishing.\n //\n // TODO this Zod type is a bit loose - couldn't work out how to model it exactly\n //\n // TODO We could look to extract this from the template somehow instead,\n // (e.g. run it with figma.properties.* stubbed to record accesses) to\n // avoid needing this duplication.\n props: z.record(z.object({ kind: z.string(), args: z.any() }) as any),\n // Optional array of imports for this component. These are prepended\n // to the example code, but it's useful to keep them separate e.g. if\n // we ever want to auto-insert imports in VS Code. If more control\n // over imports is required, they can be output directly by the template\n // function. Currently they'd have to be output in the code directly, but\n // the original spec does propose templates being able to return import\n // sections separately (not implemented as there's no UI for this)\n //\n // Right now, there's no way to handle gathering imports from children and\n // post-processing them (e.g. combining multiple imports from the same file\n // into a single import). We could consider some way for templates to do this\n // in future.\n imports: z.array(z.string()).optional(),\n // Whether the example should be rendered inline if it's a nested instance\n nestable: z.boolean().optional(),\n }),\n // The language to use for syntax highlighting\n language: z.string(),\n // Label to be used for the example in the UI\n label: z.string(),\n // Optional array of links to be displayed in the UI.\n // TODO Not implemented in UI yet\n links: z.array(FigmaConnectLink).optional(),\n }) satisfies z.ZodType<BaseCodeConnectObject>,\n ),\n // Any info, warning or error messages generated during parsing.\n messages: ParserExecutableMessages,\n})\n\nexport type PropMapping = Record<string, Intrinsic>\n\nexport type ComponentPropertyDefinition = {\n // The property type\n type: 'BOOLEAN' | 'INSTANCE_SWAP' | 'TEXT' | 'VARIANT'\n // The default value of this property\n defaultValue: boolean | string\n // All possible values for this property. Only exists on VARIANT properties\n variantOptions?: string[]\n}\n\nexport interface FigmaConnectionComponent {\n // The URL of the Figma component. This field is not in the REST API but\n // is added for convenience.\n figmaNodeUrl: string\n // The ID of the Figma component\n id: string\n // The name of the Figma component\n name: string\n // The type of the Figma component\n type: 'COMPONENT' | 'COMPONENT_SET'\n // Map of the Figma component's properties, keyed by property name\n componentPropertyDefinitions: Record<string, ComponentPropertyDefinition>\n}\nexport interface FigmaConnection {\n // The export to use from sourceFilepath\n sourceExport?: string\n // A mapping of how Figma props should map to code properties\n propMapping?: PropMapping\n // The type signature for the component (React only)\n reactTypeSignature?: ComponentTypeSignature\n // Information about the Figma component. This matches the REST API (except the\n // figmaNodeUrl and normalizedName fields), which should make it easier to\n // implement and maintain as we can just pass it through\n component: FigmaConnectionComponent\n}\n\nexport type CreateRequestPayload = {\n mode: 'CREATE'\n // Absolute destination directory for the created file. The parser is free to\n // write to a different directory if appropriate (e.g. it analyses your codebase\n // to identify where this component should go), but usually it should respect this.\n destinationDir: string\n // Optional destination file name. If omitted, the parser can determine the\n // file name itself.\n destinationFile?: string\n // The filepath of the code to be connected. If present, this is used instead of\n // component.normalizedName\n sourceFilepath?: string\n // The export to use from sourceFilepath (TypeScript only)\n sourceExport?: string\n // A mapping of how Figma props should map to code properties\n propMapping?: PropMapping\n // The type signature for the component (React only)\n reactTypeSignature?: ComponentTypeSignature\n // Information about the Figma component. This matches the REST API (except the\n // figmaNodeUrl and normalizedName fields), which should make it easier to\n // implement and maintain as we can just pass it through\n component: {\n // The URL of the Figma component. This field is not in the REST API but\n // is added for convenience.\n figmaNodeUrl: string\n // The ID of the Figma component\n id: string\n // The name of the Figma component\n name: string\n // The name of the Figma component, nomalized for use in code.\n // This field is not in the REST API but is added for convenience.\n normalizedName: string\n // The type of the Figma component\n type: 'COMPONENT' | 'COMPONENT_SET'\n // Map of the Figma component's properties, keyed by property name\n componentPropertyDefinitions: Record<string, ComponentPropertyDefinition>\n }\n // The configuration object for this parser.\n // Each parser's configuration is separate and can take any shape, though we\n // will recommend using the same naming for common concepts like \"importPaths\".\n config: Record<string, any>\n verbose?: boolean\n}\n\nexport type CreateRequestPayloadMulti = {\n mode: 'CREATE'\n // Absolute destination directory for the created file. The parser is free to\n // write to a different directory if appropriate (e.g. it analyses your codebase\n // to identify where this component should go), but usually it should respect this.\n destinationDir: string\n // Optional destination file name. If omitted, the parser can determine the\n // file name itself.\n destinationFile?: string\n // The filepath of the code to be connected. If present, this is used instead of\n // component.normalizedName\n sourceFilepath?: string\n // The name of the Figma component, nomalized for use in code.\n // This field is not in the REST API but is added for convenience.\n normalizedName: string\n // The list of design-matchings this file holds\n // there can be multiple exports per file, each matching to a different design\n figmaConnections: FigmaConnection[]\n // The configuration object for this parser.\n // Each parser's configuration is separate and can take any shape, though we\n // will recommend using the same naming for common concepts like \"importPaths\".\n config: Record<string, any>\n}\n\nexport const CreateResponsePayload = z.object({\n // A list of files created, which can be output to the console\n createdFiles: z.array(\n z.object({\n // The absolute path of the created file\n filePath: z.string(),\n }),\n ),\n // Any info, warning or error messages generated during creation.\n messages: ParserExecutableMessages,\n})\n\nexport type ParserRequestPayload = ParseRequestPayload | CreateRequestPayload\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser_executables.js","sourceRoot":"","sources":["../../src/connect/parser_executables.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser_executables.js","sourceRoot":"","sources":["../../src/connect/parser_executables.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { exitWithError, logger } from '../common/logging'\nimport {\n CodeConnectCustomExecutableParserConfig,\n CodeConnectExecutableParserConfig,\n CodeConnectExecutableParser,\n CodeConnectParser,\n} from './project'\nimport {\n ParserExecutableMessages,\n ParserRequestPayload,\n ParseResponsePayload,\n CreateResponsePayload,\n} from './parser_executable_types'\nimport { spawn } from 'cross-spawn'\nimport { getSwiftParserDir } from '../parser_scripts/get_swift_parser_dir'\nimport fs from 'fs'\nimport path from 'path'\nimport {\n getGradleWrapperExecutablePath,\n getGradleWrapperPath,\n} from '../parser_scripts/get_gradlew_path'\nimport { getComposeErrorSuggestion } from '../parser_scripts/compose_errors'\n\nconst temporaryInputFilePath = 'tmp/figma-code-connect-parser-io.json.tmp'\nconst temporaryOutputDirectoryPath = 'tmp/parser-output'\n\ntype ParserInfo = {\n command: (\n cwd: string,\n config: CodeConnectExecutableParserConfig | CodeConnectCustomExecutableParserConfig,\n mode: ParserRequestPayload['mode'],\n ) => Promise<string>\n temporaryInputFilePath?: string\n temporaryOutputDirectoryPath?: string\n}\n\nconst FIRST_PARTY_PARSERS: Record<CodeConnectExecutableParser, ParserInfo> = {\n swift: {\n command: async (cwd, config) => {\n return `swift run --package-path ${await getSwiftParserDir(\n cwd,\n (config as any).xcodeprojPath,\n (config as any).swiftPackagePath,\n (config as any).sourcePackagesPath,\n )} figma-swift`\n },\n },\n compose: {\n command: async (cwd, config, mode) => {\n const gradlewPath = await getGradleWrapperPath(cwd, (config as any).gradleWrapperPath)\n const gradleExecutableInvocation = getGradleWrapperExecutablePath(gradlewPath)\n const verboseFlags = (config as any).verbose ? ' --stacktrace' : ''\n if (mode === 'CREATE') {\n return `${gradleExecutableInvocation} -p ${gradlewPath} createCodeConnect -PfilePath=${temporaryInputFilePath}${verboseFlags} -PoutputDir=${temporaryOutputDirectoryPath}`\n } else {\n return `${gradleExecutableInvocation} -p ${gradlewPath} parseCodeConnect -PfilePath=${temporaryInputFilePath}${verboseFlags} -PoutputDir=${temporaryOutputDirectoryPath}`\n }\n },\n temporaryInputFilePath: temporaryInputFilePath,\n temporaryOutputDirectoryPath: temporaryOutputDirectoryPath,\n },\n custom: {\n command: async (cwd, config) => {\n if (!('parserCommand' in config)) {\n exitWithError(\n 'No `parserCommand` specified in config. A command is required when using the `custom` parser.',\n )\n }\n logger.info('Using custom parser command: ' + config.parserCommand)\n return config.parserCommand\n },\n },\n __unit_test__: {\n command: async () => 'node parser/unit_test_parser.js',\n },\n}\n\nfunction getParser(config: CodeConnectExecutableParserConfig): ParserInfo | never {\n const parser = FIRST_PARTY_PARSERS[config.parser]\n\n if (!parser) {\n exitWithError(\n `Invalid parser specified: \"${config.parser}\". Valid parsers are: ${Object.keys(\n FIRST_PARTY_PARSERS,\n ).join(', ')}.`,\n )\n }\n\n return parser\n}\n\nexport async function callParser(\n config: CodeConnectExecutableParserConfig,\n payload: ParserRequestPayload,\n cwd: string,\n) {\n return new Promise<object>(async (resolve, reject) => {\n try {\n const parser = getParser(config)\n const configWithVerbose = {\n ...config,\n verbose: (payload as any).verbose,\n }\n\n const command = await parser.command(cwd, configWithVerbose, payload.mode)\n\n // Create temporary input file if it exists\n if (parser.temporaryInputFilePath) {\n fs.mkdirSync(path.dirname(parser.temporaryInputFilePath), { recursive: true })\n fs.writeFileSync(parser.temporaryInputFilePath, JSON.stringify(payload))\n }\n\n // Create temporary output directory if it exists\n if (parser.temporaryOutputDirectoryPath) {\n fs.mkdirSync(parser.temporaryOutputDirectoryPath, { recursive: true })\n }\n\n logger.debug(`Running parser: ${command}`)\n const commandSplit = command.split(' ')\n\n const child = spawn(commandSplit[0], commandSplit.slice(1), {\n cwd,\n })\n\n let stdout = ''\n let stderr = ''\n\n child.stdout.on('data', (data) => {\n stdout += data.toString()\n })\n\n // This handles any stderr output from the parser.\n //\n // Parsers should not generally write to stderr, and should instead return\n // an array of messages at the end of execution, but there are cases where\n // you might want to log output immediately rather than at the end of the\n // run - e.g. if the parser can take a while to compile first time, you\n // might want to inform the user immediately that it is compiling.\n //\n // To log output, the parser should write a JSON object to stderr with the\n // same structure as the `messages` response object, e.g. `{ \"level\":\n // \"INFO\", \"message\": \"Compiling parser...\" }`.\n //\n // Non-JSON output will be logged as debug messages, as this is likely to\n // be e.g. compiler output which the user doesn't need to see ordinarily.\n child.stderr.on('data', (data) => {\n const message = data.toString()\n const trimmedMessage = message.trim()\n try {\n const parsed = JSON.parse(trimmedMessage)\n handleMessages([parsed])\n } catch (e) {\n stderr += message\n logger.debug(trimmedMessage)\n }\n })\n\n child.on('close', (code) => {\n if (code !== 0) {\n const errorSuggestion = determineErrorSuggestionFromStderr(stderr, config.parser)\n if (errorSuggestion) {\n reject(new Error(`Parser exited with code ${code}: ${errorSuggestion}`))\n } else {\n reject(new Error(`Parser exited with code ${code}`))\n }\n } else {\n // List the files in the temporary output directory if it exists and log them\n if (parser.temporaryOutputDirectoryPath) {\n try {\n const outputDir = parser.temporaryOutputDirectoryPath\n if (fs.existsSync(outputDir)) {\n const files = fs.readdirSync(outputDir)\n logger.debug(\n `Files in temporary output directory (${outputDir}): ${files.length > 0 ? files.join(', ') : '[empty]'}`,\n )\n\n // Combine all JSON files in the output directory into a single JSON object.\n // For PARSE responses: Each file has a \"docs\" array and a \"messages\" array.\n // For CREATE responses: Each file has a \"createdFiles\" array and a \"messages\" array.\n // The combined output will have a single array of the appropriate type and a single \"messages\" array.\n\n // Filter for .json files only\n const jsonFiles = files.filter((f) => f.endsWith('.json'))\n let allMessages: z.infer<typeof ParserExecutableMessages> = []\n const uniqueDocsMap = new Map<\n string,\n z.infer<typeof ParseResponsePayload>['docs'][number]\n >()\n let allCreatedFiles: z.infer<typeof CreateResponsePayload>['createdFiles'] = []\n\n for (const file of jsonFiles) {\n const filePath = path.join(outputDir, file)\n try {\n const content = fs.readFileSync(filePath, 'utf8')\n const parsed = JSON.parse(content)\n if (Array.isArray(parsed.docs)) {\n // Deduplicate docs based on figmaNode + template\n // The template contains the actual code example and is unique per component.\n // This allows multiple different code components to map to the same Figma node,\n // while preventing the same component from being duplicated in multi-module projects.\n for (const doc of parsed.docs) {\n const dedupeKey = JSON.stringify({\n figmaNode: doc.figmaNode,\n template: doc.template,\n })\n if (!uniqueDocsMap.has(dedupeKey)) {\n uniqueDocsMap.set(dedupeKey, doc)\n }\n }\n }\n if (Array.isArray(parsed.createdFiles)) {\n allCreatedFiles = allCreatedFiles.concat(parsed.createdFiles)\n }\n if (Array.isArray(parsed.messages)) {\n allMessages = allMessages.concat(parsed.messages)\n }\n } catch (err) {\n logger.warn(`Failed to parse output file ${file}: ${err}`)\n }\n }\n\n const allDocs = Array.from(uniqueDocsMap.values())\n\n // Return the appropriate response based on the mode\n if (payload.mode === 'CREATE') {\n resolve({\n createdFiles: allCreatedFiles,\n messages: allMessages,\n })\n } else {\n resolve({\n docs: allDocs,\n messages: allMessages,\n })\n }\n } else {\n logger.debug(`Temporary output directory (${outputDir}) does not exist.`)\n }\n } catch (err) {\n logger.warn(`Failed to list files in temporary output directory: ${err}`)\n }\n } else {\n // Assume the output is in the stdout\n resolve(JSON.parse(stdout))\n }\n }\n\n if (parser.temporaryInputFilePath) {\n // Retain temp file and directory when verbose mode is enabled\n if (!(payload as any).verbose) {\n fs.unlinkSync(parser.temporaryInputFilePath)\n // Delete parent directory if empty after removing temp file\n const parentDir = path.dirname(parser.temporaryInputFilePath)\n if (fs.readdirSync(parentDir).length === 0) {\n fs.rmdirSync(parentDir)\n }\n }\n }\n })\n\n child.on('error', (e) => {\n reject(e)\n })\n if (!parser.temporaryInputFilePath) {\n child.stdin.write(JSON.stringify(payload))\n child.stdin.end()\n }\n } catch (e) {\n if ((payload as any).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 calling parser: ${e}. Try re-running the command with --verbose for more information.`,\n )\n }\n }\n })\n}\n\nexport function handleMessages(messages: z.infer<typeof ParserExecutableMessages>) {\n let hasErrors = false\n\n messages.forEach((message) => {\n switch (message.level) {\n case 'DEBUG':\n logger.debug(message.message)\n break\n case 'INFO':\n logger.info(message.message)\n break\n case 'WARN':\n logger.warn(message.message)\n break\n case 'ERROR':\n logger.error(message.message)\n hasErrors = true\n break\n }\n })\n\n return { hasErrors }\n}\n\n// This function is used to determine if there is a suggestion for the error based on the output\n// to stderr. Certain parsers return the same error code for different types of errors such as\n// errors from invoking the gradle wrapper for Compose.\n// In the future we should consider exposing a different API for having the parser return a suggestion directly.\nfunction determineErrorSuggestionFromStderr(\n stderr: string,\n parser: CodeConnectParser,\n): string | null {\n if (parser === 'compose') {\n return getComposeErrorSuggestion(stderr)\n }\n return null\n}\n"]}
|
|
@@ -37,10 +37,20 @@ export type BaseCodeConnectConfig = {
|
|
|
37
37
|
* Label to use for the uploaded code examples
|
|
38
38
|
*/
|
|
39
39
|
label?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Language to use for syntax highlighting in the uploaded code examples.
|
|
42
|
+
* Valid values: 'typescript', 'swift', 'kotlin', 'html', 'raw'
|
|
43
|
+
* If not specified, language is inferred from the label or parser type.
|
|
44
|
+
*/
|
|
45
|
+
language?: string;
|
|
40
46
|
/**
|
|
41
47
|
* The URL of the Figma file to use during the interactive setup wizard for connecting code components to Figma components.
|
|
42
48
|
*/
|
|
43
49
|
interactiveSetupFigmaFileUrl?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Custom Figma API URL to use instead of https://api.figma.com/v1
|
|
52
|
+
*/
|
|
53
|
+
apiUrl?: string;
|
|
44
54
|
};
|
|
45
55
|
export type CodeConnectExecutableParserConfig = BaseCodeConnectConfig & {
|
|
46
56
|
parser: CodeConnectExecutableParser;
|
|
@@ -170,5 +180,16 @@ export declare function getTsProgram(projectInfo: ProjectInfo<CodeConnectConfig>
|
|
|
170
180
|
* @returns
|
|
171
181
|
*/
|
|
172
182
|
export declare function mapImportPath(filePath: string, config: CodeConnectReactConfig): string | null;
|
|
183
|
+
/**
|
|
184
|
+
* Transform an import specifier (the path in the import statement) using importPaths config.
|
|
185
|
+
* This works directly on the module specifier from the source code, preserving the user's intent.
|
|
186
|
+
*
|
|
187
|
+
* E.g., '@/AlertTitle' with config { "@/*": "@acme/package/*" } → '@acme/package/AlertTitle'
|
|
188
|
+
*
|
|
189
|
+
* @param specifier The original import specifier from the source file (e.g., '@/AlertTitle', './Button')
|
|
190
|
+
* @param config The Code Connect config containing importPaths
|
|
191
|
+
* @returns The transformed import path, or null if no mapping matched
|
|
192
|
+
*/
|
|
193
|
+
export declare function mapImportSpecifier(specifier: string, config: CodeConnectReactConfig): string | null;
|
|
173
194
|
export {};
|
|
174
195
|
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/connect/project.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/connect/project.ts"],"names":[],"mappings":"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"}
|