@figma/code-connect 1.0.3 → 1.0.4
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/README.md +19 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +11 -2
- package/dist/commands/connect.js.map +1 -1
- package/dist/common/intrinsics.js +1 -1
- package/dist/common/intrinsics.js.map +1 -1
- package/dist/common/updates.d.ts +3 -2
- package/dist/common/updates.d.ts.map +1 -1
- package/dist/common/updates.js +9 -7
- package/dist/common/updates.js.map +1 -1
- package/dist/connect/parser_executable_types.d.ts +19 -10
- package/dist/connect/parser_executable_types.d.ts.map +1 -1
- package/dist/connect/parser_executable_types.js.map +1 -1
- package/dist/connect/parser_executables.d.ts.map +1 -1
- package/dist/connect/parser_executables.js +25 -5
- package/dist/connect/parser_executables.js.map +1 -1
- package/dist/connect/upload.d.ts +3 -1
- package/dist/connect/upload.d.ts.map +1 -1
- package/dist/connect/upload.js +65 -4
- 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 +4 -4
- package/dist/connect/validation.js.map +1 -1
- package/dist/connect/wizard/__test__/run_wizard.test.js +23 -0
- package/dist/connect/wizard/__test__/run_wizard.test.js.map +1 -1
- package/dist/connect/wizard/autolinking.d.ts +17 -3
- package/dist/connect/wizard/autolinking.d.ts.map +1 -1
- package/dist/connect/wizard/autolinking.js +53 -8
- package/dist/connect/wizard/autolinking.js.map +1 -1
- package/dist/connect/wizard/helpers.d.ts +23 -1
- package/dist/connect/wizard/helpers.d.ts.map +1 -1
- package/dist/connect/wizard/helpers.js +70 -1
- package/dist/connect/wizard/helpers.js.map +1 -1
- package/dist/connect/wizard/prop_mapping.d.ts +16 -0
- package/dist/connect/wizard/prop_mapping.d.ts.map +1 -0
- package/dist/connect/wizard/prop_mapping.js +105 -0
- package/dist/connect/wizard/prop_mapping.js.map +1 -0
- package/dist/connect/wizard/run_wizard.d.ts +2 -2
- package/dist/connect/wizard/run_wizard.d.ts.map +1 -1
- package/dist/connect/wizard/run_wizard.js +88 -52
- package/dist/connect/wizard/run_wizard.js.map +1 -1
- package/dist/parser_scripts/compose_errors.d.ts +2 -0
- package/dist/parser_scripts/compose_errors.d.ts.map +1 -0
- package/dist/parser_scripts/compose_errors.js +12 -0
- package/dist/parser_scripts/compose_errors.js.map +1 -0
- package/dist/react/create.d.ts.map +1 -1
- package/dist/react/create.js +49 -14
- package/dist/react/create.js.map +1 -1
- package/dist/react/parser.d.ts +15 -0
- package/dist/react/parser.d.ts.map +1 -1
- package/dist/react/parser.js +136 -1
- package/dist/react/parser.js.map +1 -1
- package/dist/react/parser_template_helpers.d.ts.map +1 -1
- package/dist/react/parser_template_helpers.js +8 -2
- package/dist/react/parser_template_helpers.js.map +1 -1
- package/package.json +2 -1
- package/dist/connect/wizard/__test__/autolinking/autolinking.test.d.ts +0 -2
- package/dist/connect/wizard/__test__/autolinking/autolinking.test.d.ts.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/autolinking.test.js +0 -49
- package/dist/connect/wizard/__test__/autolinking/autolinking.test.js.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/test_cases/backstage.d.ts +0 -4
- package/dist/connect/wizard/__test__/autolinking/test_cases/backstage.d.ts.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/test_cases/backstage.js +0 -306
- package/dist/connect/wizard/__test__/autolinking/test_cases/backstage.js.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/test_cases/polaris_react.d.ts +0 -4
- package/dist/connect/wizard/__test__/autolinking/test_cases/polaris_react.d.ts.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/test_cases/polaris_react.js +0 -982
- package/dist/connect/wizard/__test__/autolinking/test_cases/polaris_react.js.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/test_cases/vitamin_web.d.ts +0 -4
- package/dist/connect/wizard/__test__/autolinking/test_cases/vitamin_web.d.ts.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/test_cases/vitamin_web.js +0 -463
- package/dist/connect/wizard/__test__/autolinking/test_cases/vitamin_web.js.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/types.d.ts +0 -12
- package/dist/connect/wizard/__test__/autolinking/types.d.ts.map +0 -1
- package/dist/connect/wizard/__test__/autolinking/types.js +0 -3
- package/dist/connect/wizard/__test__/autolinking/types.js.map +0 -1
|
@@ -30,11 +30,11 @@ const axios_1 = __importStar(require("axios"));
|
|
|
30
30
|
const logging_1 = require("../common/logging");
|
|
31
31
|
const helpers_1 = require("./helpers");
|
|
32
32
|
const figma_rest_api_1 = require("./figma_rest_api");
|
|
33
|
-
function parseFigmaNode(
|
|
33
|
+
function parseFigmaNode(verbose, doc, silent = false) {
|
|
34
34
|
const figmaNodeUrl = url.parse(doc.figmaNode, true);
|
|
35
35
|
const fileKeyMatch = figmaNodeUrl.path?.match(/(file|design)\/([a-zA-Z0-9]+)/);
|
|
36
36
|
if (!fileKeyMatch) {
|
|
37
|
-
if (!silent ||
|
|
37
|
+
if (!silent || verbose) {
|
|
38
38
|
logging_1.logger.error(`Failed to parse ${doc.figmaNode}`);
|
|
39
39
|
}
|
|
40
40
|
return null;
|
|
@@ -46,7 +46,7 @@ function parseFigmaNode(cmd, doc, silent = false) {
|
|
|
46
46
|
return { fileKey, nodeId: figmaNodeId };
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
|
-
if (!silent ||
|
|
49
|
+
if (!silent || verbose) {
|
|
50
50
|
logging_1.logger.error(`Failed to get node-id from ${doc.figmaNode}`);
|
|
51
51
|
}
|
|
52
52
|
return null;
|
|
@@ -200,7 +200,7 @@ async function validateDocs(cmd, accessToken, docs) {
|
|
|
200
200
|
const fileKeyToNodeIds = {};
|
|
201
201
|
let valid = true;
|
|
202
202
|
docs.forEach((doc) => {
|
|
203
|
-
const parsedNode = parseFigmaNode(cmd, doc);
|
|
203
|
+
const parsedNode = parseFigmaNode(cmd.verbose, doc);
|
|
204
204
|
if (!parsedNode) {
|
|
205
205
|
valid = false;
|
|
206
206
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/connect/validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0B;AAC1B,mCAAmC;AACnC,+CAA2C;AAG3C,+CAA0C;AAC1C,uCAA0C;AAC1C,qDAAwD;AAGxD,SAAgB,cAAc,CAC5B,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/connect/validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0B;AAC1B,mCAAmC;AACnC,+CAA2C;AAG3C,+CAA0C;AAC1C,uCAA0C;AAC1C,qDAAwD;AAGxD,SAAgB,cAAc,CAC5B,OAAgB,EAChB,GAAoB,EACpB,SAAkB,KAAK;IAEvB,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACnD,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAC9E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;YACvB,gBAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,IAAA,wBAAc,EAAC,MAAM,CAAC,CAAA;QAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;YACvB,gBAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAxBD,wCAwBC;AAED,KAAK,UAAU,aAAa,CAC1B,UAAkB,EAClB,OAAe,EACf,YAAsB,EACtB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,GAAG,UAAU,GAAG,OAAO,cAAc,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAC7D,EAAE,OAAO,EAAE,IAAA,2BAAU,EAAC,WAAW,CAAC,EAAE,CACrC,CAAA;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,gBAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAC5F,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,gBAAM,CAAC,KAAK,CACV,iCAAiC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAChI,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAC9D,CAAC;YACD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,gBAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAoB,EAAE,QAAa;IACxD,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;QAChD,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;YACpE,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxC,MAAM,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAA;gBACzD,uCAAuC;gBACvC,MAAM,eAAe,GAAa,EAAE,CAAA;gBACpC,MAAM,aAAa,GAAG,CAAC,KAAU,EAAE,EAAE;oBACnC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAClC,CAAC;oBACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACnB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC9D,CAAC;gBACH,CAAC,CAAA;gBACD,aAAa,CAAC,QAAQ,CAAC,CAAA;gBACvB,2FAA2F;gBAC3F,KAAK,MAAM,oBAAoB,IAAI,qBAAqB,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;oBACvE,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACvD,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,iBAAiB,oBAAoB,yCAAyC,CACvI,CAAA;wBACD,UAAU,GAAG,KAAK,CAAA;oBACpB,CAAC;gBACH,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IACE,eAAe,CAAC,IAAI,KAAK,SAAS;gBAClC,eAAe,CAAC,IAAI,KAAK,MAAM;gBAC/B,eAAe,CAAC,IAAI,KAAK,QAAQ,EACjC,CAAC;gBACD,MAAM,wBAAwB,GAAG,eAAe,EAAE,IAAI,EAAE,aAAa,CAAA;gBAErE,IACE,CAAC,QAAQ,CAAC,4BAA4B;oBACtC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACrE,WAAW,CAAC,SAAS,EAAE,wBAAwB,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CACxF,EACD,CAAC;oBACD,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,oBAAoB,wBAAwB,yCAAyC,CAC9I,CAAA;oBACD,UAAU,GAAG,KAAK,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,4BAAiC,EAAE,QAAgB;IACtE,MAAM,IAAI,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAA;IACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,6CAA6C;IAC7C,6DAA6D;IAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,WAAW,CAClB,SAAc,EACd,mBAA2B,EAC3B,4BAAiC;IAEjC,MAAM,aAAa,GAAG,WAAW,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAA;IAC1E,OAAO,aAAa,KAAK,mBAAmB,CAAA;AAC9C,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAoB,EAAE,QAAa;IACtE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,wBAAwB,GAAG,IAAI,CAAA;QACnC,MAAM,8BAA8B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,8BAA8B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,MAAM,kBAAkB,GAAQ,8BAA8B,CAAC,CAAC,CAAC,CAAA;YAEjE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACxF,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAClF,CAAA;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,oBAAoB,kBAAkB,yCAAyC,CACxI,CAAA;gBACD,wBAAwB,GAAG,KAAK,CAAA;gBAChC,SAAQ;YACV,CAAC;YAED,MAAM,uBAAuB,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;YAC/D,MAAM,aAAa,GAAG,QAAQ,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAA;YAElE,2EAA2E;YAC3E,2DAA2D;YAC3D,IACE,aAAa,CAAC,IAAI,KAAK,SAAS;gBAChC,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAChE,CAAC;gBACD,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,yBAAyB,KAAK,iCAAiC,uBAAuB,EAAE,CACjJ,CAAA;gBACD,wBAAwB,GAAG,KAAK,CAAA;gBAChC,SAAQ;YACV,CAAC;QACH,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,GAAoB,EAAE,SAAc,EAAE,MAAc;IACvE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACtC,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,2BAA2B,CACpF,CAAA;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;IACnC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACvE,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,2DAA2D,CACpH,CAAA;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,SAAS,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC1C,gBAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,oGAAoG,CAC7J,CAAA;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3E,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,GAAgB,EAChB,WAAmB,EACnB,IAAuB;IAEvB,IAAI,UAAU,GAAG,IAAA,0BAAS,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,GAAG,SAAS,CAAA;IAElE,MAAM,gBAAgB,GAA2B,EAAE,CAAA;IACnD,IAAI,KAAK,GAAG,IAAI,CAAA;IAChB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,KAAK,GAAG,KAAK,CAAA;YACb,OAAM;QACR,CAAC;QACD,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAC3C,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAC9D,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gBAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAChC,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,gBAAM,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,gBAAM,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAA,cAAK,EAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YAClC,gBAAM,CAAC,KAAK,CAAC,eAAe,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5F,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;YACtF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAA;YACd,CAAC;YAED,KAAK;gBACH,KAAK;oBACL,YAAY;yBACT,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;wBACtB,OAAO,OAAO,CAAC,MAAM,CAAC;6BACnB,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;6BAC3E,KAAK,CAAC,OAAO,CAAC,CAAA;oBACnB,CAAC,CAAC;yBACD,KAAK,CAAC,OAAO,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAxDD,oCAwDC"}
|
|
@@ -93,6 +93,29 @@ describe('getComponentChoicesForPrompt', () => {
|
|
|
93
93
|
]);
|
|
94
94
|
});
|
|
95
95
|
});
|
|
96
|
+
describe('autoLinkComponents', () => {
|
|
97
|
+
it('populates linkedNodeIdsToPaths using fuzzy matching', () => {
|
|
98
|
+
const linkedNodeIdsToPaths = {};
|
|
99
|
+
(0, run_wizard_1.autoLinkComponents)({
|
|
100
|
+
unconnectedComponents: MOCK_COMPONENTS,
|
|
101
|
+
linkedNodeIdsToPaths,
|
|
102
|
+
componentPaths: ['/foo/bar/AnotherComponent.tsx', '/foo/bar/DifferentComponent.tsx'],
|
|
103
|
+
});
|
|
104
|
+
expect(linkedNodeIdsToPaths).toEqual({
|
|
105
|
+
'1:12': '/foo/bar/AnotherComponent.tsx',
|
|
106
|
+
'1:13': '/foo/bar/DifferentComponent.tsx',
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
it('does not populate linkedNodeIdsToPaths with bad matches', () => {
|
|
110
|
+
const linkedNodeIdsToPaths = {};
|
|
111
|
+
(0, run_wizard_1.autoLinkComponents)({
|
|
112
|
+
unconnectedComponents: MOCK_COMPONENTS,
|
|
113
|
+
linkedNodeIdsToPaths,
|
|
114
|
+
componentPaths: ['/foo/bar/MyButton.tsx', '/foo/bar/AlternativeComponent.tsx'],
|
|
115
|
+
});
|
|
116
|
+
expect(linkedNodeIdsToPaths).toEqual({});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
96
119
|
describe('getUnconnectedComponentsAndConnectedComponentMappings', () => {
|
|
97
120
|
it('correctly derives connected / unconnected components', async () => {
|
|
98
121
|
jest.spyOn(project, 'getGitRepoAbsolutePath').mockReturnValue('/user/me/my-repo');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_wizard.test.js","sourceRoot":"","sources":["../../../../src/connect/wizard/__test__/run_wizard.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,mEAAoD;AAEpD,uDAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"run_wizard.test.js","sourceRoot":"","sources":["../../../../src/connect/wizard/__test__/run_wizard.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
import { FigmaRestApi } from '../figma_rest_api';
|
|
2
|
+
import prompts from 'prompts';
|
|
3
|
+
/**
|
|
4
|
+
* Guesses which export to use for a given file. Prioritizes default then search term.
|
|
5
|
+
* @param args
|
|
6
|
+
* @param args.filepath current file
|
|
7
|
+
* @param args.exportOptions exported members of current file
|
|
8
|
+
* @param args.nameToMatch name of Figma component
|
|
9
|
+
* @returns filepathExport to use
|
|
10
|
+
*/
|
|
11
|
+
export declare function getBestMatchingExportWithinFile({ filepath, exportOptions, nameToMatch, }: {
|
|
12
|
+
filepath: string;
|
|
13
|
+
exportOptions: prompts.Choice[];
|
|
14
|
+
nameToMatch: string;
|
|
15
|
+
}): string;
|
|
2
16
|
/**
|
|
3
17
|
* Autolinks components/paths based on fuzzy matching of name and writes mappings to linkedNodeIdsToPaths.
|
|
4
18
|
*
|
|
5
19
|
* Matching is done by fast-fuzzy
|
|
6
20
|
*/
|
|
7
|
-
export declare function autoLinkComponents({ unconnectedComponents,
|
|
21
|
+
export declare function autoLinkComponents({ unconnectedComponents, linkedNodeIdsToFilepathExports, filepathExports, }: {
|
|
8
22
|
unconnectedComponents: FigmaRestApi.Component[];
|
|
9
|
-
|
|
10
|
-
|
|
23
|
+
linkedNodeIdsToFilepathExports: Record<string, string>;
|
|
24
|
+
filepathExports: string[];
|
|
11
25
|
}): void;
|
|
12
26
|
//# sourceMappingURL=autolinking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autolinking.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/autolinking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"autolinking.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/autolinking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,EACR,aAAa,EACb,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;IAC/B,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,MAAM,CAoCT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,qBAAqB,EACrB,8BAA8B,EAC9B,eAAe,GAChB,EAAE;IACD,qBAAqB,EAAE,YAAY,CAAC,SAAS,EAAE,CAAA;IAC/C,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtD,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B,QA6CA"}
|
|
@@ -3,16 +3,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.autoLinkComponents = void 0;
|
|
6
|
+
exports.autoLinkComponents = exports.getBestMatchingExportWithinFile = void 0;
|
|
7
7
|
const fast_fuzzy_1 = require("fast-fuzzy");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
const FILENAME_MINIMUM_MATCH_THRESHOLD = 0.8;
|
|
11
|
+
const EXPORT_NAME_MINIMUM_MATCH_THRESHOLD = 0.8;
|
|
12
|
+
/**
|
|
13
|
+
* Guesses which export to use for a given file. Prioritizes default then search term.
|
|
14
|
+
* @param args
|
|
15
|
+
* @param args.filepath current file
|
|
16
|
+
* @param args.exportOptions exported members of current file
|
|
17
|
+
* @param args.nameToMatch name of Figma component
|
|
18
|
+
* @returns filepathExport to use
|
|
19
|
+
*/
|
|
20
|
+
function getBestMatchingExportWithinFile({ filepath, exportOptions, nameToMatch, }) {
|
|
21
|
+
// Don't append export if no known exports
|
|
22
|
+
if (exportOptions.length === 0) {
|
|
23
|
+
return filepath;
|
|
24
|
+
}
|
|
25
|
+
if (exportOptions.length === 1) {
|
|
26
|
+
return exportOptions[0].value;
|
|
27
|
+
}
|
|
28
|
+
const defaultOption = exportOptions.find((o) => o.title === 'default');
|
|
29
|
+
if (defaultOption) {
|
|
30
|
+
return defaultOption.value;
|
|
31
|
+
}
|
|
32
|
+
const matches = (0, fast_fuzzy_1.search)(nameToMatch, exportOptions.map((opt) => opt.title), {
|
|
33
|
+
threshold: EXPORT_NAME_MINIMUM_MATCH_THRESHOLD,
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* fuzzy.search searches for string inside another, meaning e.g. "Button" and "ButtonProps" rank equally for "Button".
|
|
37
|
+
* We counter this by looking for shortest string in matches
|
|
38
|
+
*/
|
|
39
|
+
const shortestMatch = matches.reduce(function (a, b) {
|
|
40
|
+
return a.length <= b.length ? a : b;
|
|
41
|
+
});
|
|
42
|
+
if (shortestMatch) {
|
|
43
|
+
return exportOptions.find((o) => o.title === shortestMatch).value;
|
|
44
|
+
}
|
|
45
|
+
// use anything
|
|
46
|
+
return exportOptions[0].value;
|
|
47
|
+
}
|
|
48
|
+
exports.getBestMatchingExportWithinFile = getBestMatchingExportWithinFile;
|
|
10
49
|
/**
|
|
11
50
|
* Autolinks components/paths based on fuzzy matching of name and writes mappings to linkedNodeIdsToPaths.
|
|
12
51
|
*
|
|
13
52
|
* Matching is done by fast-fuzzy
|
|
14
53
|
*/
|
|
15
|
-
function autoLinkComponents({ unconnectedComponents,
|
|
54
|
+
function autoLinkComponents({ unconnectedComponents, linkedNodeIdsToFilepathExports, filepathExports, }) {
|
|
55
|
+
const componentOptionsMap = (0, helpers_1.getComponentOptionsMap)(filepathExports);
|
|
16
56
|
const pathMatchScores = {};
|
|
17
57
|
/**
|
|
18
58
|
* fast-fuzzy finds best match in filenames for a given component - this function
|
|
@@ -21,7 +61,7 @@ function autoLinkComponents({ unconnectedComponents, linkedNodeIdsToPaths, compo
|
|
|
21
61
|
function isBestMatchForPath(match) {
|
|
22
62
|
return !pathMatchScores[match.item] || match.score > pathMatchScores[match.item].score;
|
|
23
63
|
}
|
|
24
|
-
const matchableFilenameToPathMap =
|
|
64
|
+
const matchableFilenameToPathMap = Object.keys(componentOptionsMap).reduce((acc, componentPath) => {
|
|
25
65
|
const { name } = path_1.default.parse(componentPath);
|
|
26
66
|
const matchableName = name;
|
|
27
67
|
acc[matchableName] = componentPath;
|
|
@@ -33,12 +73,17 @@ function autoLinkComponents({ unconnectedComponents, linkedNodeIdsToPaths, compo
|
|
|
33
73
|
const matchableName = component.name;
|
|
34
74
|
const results = searcher.search(matchableName, { returnMatchData: true });
|
|
35
75
|
const bestMatch = results[0];
|
|
36
|
-
const
|
|
76
|
+
const filename = bestMatch?.item;
|
|
37
77
|
if (bestMatch &&
|
|
38
|
-
bestMatch.score >
|
|
39
|
-
|
|
78
|
+
bestMatch.score > FILENAME_MINIMUM_MATCH_THRESHOLD &&
|
|
79
|
+
filename in matchableFilenameToPathMap &&
|
|
40
80
|
isBestMatchForPath(bestMatch)) {
|
|
41
|
-
|
|
81
|
+
const filepath = matchableFilenameToPathMap[bestMatch.item];
|
|
82
|
+
linkedNodeIdsToFilepathExports[component.id] = getBestMatchingExportWithinFile({
|
|
83
|
+
filepath,
|
|
84
|
+
exportOptions: componentOptionsMap[filepath],
|
|
85
|
+
nameToMatch: component.name,
|
|
86
|
+
});
|
|
42
87
|
pathMatchScores[bestMatch.item] = { nodeId: component.id, score: bestMatch.score };
|
|
43
88
|
}
|
|
44
89
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autolinking.js","sourceRoot":"","sources":["../../../src/connect/wizard/autolinking.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"autolinking.js","sourceRoot":"","sources":["../../../src/connect/wizard/autolinking.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { CodeConnectConfig } from '../project';
|
|
1
|
+
import { CodeConnectConfig, ProjectInfo } from '../project';
|
|
2
|
+
import prompts from 'prompts';
|
|
2
3
|
/**
|
|
3
4
|
*
|
|
4
5
|
* Gets the default include globs for config.parser with componentDirectory prepended
|
|
@@ -18,4 +19,25 @@ export declare function createCodeConnectConfig({ dir, componentDirectory, confi
|
|
|
18
19
|
componentDirectory: string | null;
|
|
19
20
|
config: CodeConnectConfig;
|
|
20
21
|
}): Promise<void>;
|
|
22
|
+
export declare function parseFilepathExport(filepathExport: string): {
|
|
23
|
+
filepath: string;
|
|
24
|
+
exportName: null;
|
|
25
|
+
} | {
|
|
26
|
+
filepath: string;
|
|
27
|
+
exportName: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Formats an array of filepathExports into a map of filepaths->exports
|
|
31
|
+
*
|
|
32
|
+
* @param filepathExports an array of components in the format `${filepath}~${componentName}
|
|
33
|
+
* @returns a map of filepaths to an array of their exports. Array is empty if no exports found
|
|
34
|
+
*/
|
|
35
|
+
export declare function getComponentOptionsMap(filepathExports: string[]): Record<string, prompts.Choice[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Parses a ProjectInfo for any TS exports (or filepaths if not a TS project)
|
|
38
|
+
*
|
|
39
|
+
* @param projectInfo
|
|
40
|
+
* @returns an array of components in the format `${filepath}~${componentName}
|
|
41
|
+
*/
|
|
42
|
+
export declare function getFilepathExportsFromFiles(projectInfo: ProjectInfo): string[];
|
|
21
43
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EAEjB,WAAW,EAGZ,MAAM,YAAY,CAAA;AAGnB,OAAO,OAAmB,MAAM,SAAS,CAAA;AAIzC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,kBAAkB,EAClB,MAAM,GACP,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,MAAM,EAAE,iBAAiB,CAAA;CAC1B,YASA;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,GAAG,EACH,kBAAkB,EAClB,MAAM,GACP,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,MAAM,EAAE,iBAAiB,CAAA;CAC1B,iBAiBA;AAID,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM;;;;;;EAazD;AAMD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,EAAE,oCAe/D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,YAsBnE"}
|
|
@@ -26,12 +26,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.createCodeConnectConfig = exports.getIncludesGlob = void 0;
|
|
29
|
+
exports.getFilepathExportsFromFiles = exports.getComponentOptionsMap = exports.parseFilepathExport = exports.createCodeConnectConfig = exports.getIncludesGlob = void 0;
|
|
30
30
|
const prettier = __importStar(require("prettier"));
|
|
31
31
|
const fs_1 = __importDefault(require("fs"));
|
|
32
32
|
const project_1 = require("../project");
|
|
33
33
|
const logging_1 = require("../../common/logging");
|
|
34
34
|
const path_1 = __importDefault(require("path"));
|
|
35
|
+
const parser_1 = require("../../react/parser");
|
|
35
36
|
/**
|
|
36
37
|
*
|
|
37
38
|
* Gets the default include globs for config.parser with componentDirectory prepended
|
|
@@ -67,4 +68,72 @@ async function createCodeConnectConfig({ dir, componentDirectory, config, }) {
|
|
|
67
68
|
logging_1.logger.info((0, logging_1.success)(`Created ${filePath}`));
|
|
68
69
|
}
|
|
69
70
|
exports.createCodeConnectConfig = createCodeConnectConfig;
|
|
71
|
+
const FILEPATH_EXPORT_DELIMITER = '~';
|
|
72
|
+
function parseFilepathExport(filepathExport) {
|
|
73
|
+
const delimiterLastIndex = filepathExport.lastIndexOf(FILEPATH_EXPORT_DELIMITER);
|
|
74
|
+
if (delimiterLastIndex === -1) {
|
|
75
|
+
return {
|
|
76
|
+
filepath: filepathExport,
|
|
77
|
+
exportName: null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
filepath: filepathExport.substring(0, delimiterLastIndex),
|
|
82
|
+
exportName: filepathExport.substring(delimiterLastIndex + 1),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
exports.parseFilepathExport = parseFilepathExport;
|
|
86
|
+
function getFilepathExport(filepath, exp) {
|
|
87
|
+
return `${filepath}${FILEPATH_EXPORT_DELIMITER}${exp}`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Formats an array of filepathExports into a map of filepaths->exports
|
|
91
|
+
*
|
|
92
|
+
* @param filepathExports an array of components in the format `${filepath}~${componentName}
|
|
93
|
+
* @returns a map of filepaths to an array of their exports. Array is empty if no exports found
|
|
94
|
+
*/
|
|
95
|
+
function getComponentOptionsMap(filepathExports) {
|
|
96
|
+
return filepathExports.reduce((acc, filepathExport) => {
|
|
97
|
+
const { filepath, exportName } = parseFilepathExport(filepathExport);
|
|
98
|
+
acc[filepath] = acc[filepath] || [];
|
|
99
|
+
if (exportName) {
|
|
100
|
+
acc[filepath].push({
|
|
101
|
+
title: exportName,
|
|
102
|
+
value: getFilepathExport(filepath, exportName),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return acc;
|
|
106
|
+
}, {});
|
|
107
|
+
}
|
|
108
|
+
exports.getComponentOptionsMap = getComponentOptionsMap;
|
|
109
|
+
/**
|
|
110
|
+
* Parses a ProjectInfo for any TS exports (or filepaths if not a TS project)
|
|
111
|
+
*
|
|
112
|
+
* @param projectInfo
|
|
113
|
+
* @returns an array of components in the format `${filepath}~${componentName}
|
|
114
|
+
*/
|
|
115
|
+
function getFilepathExportsFromFiles(projectInfo) {
|
|
116
|
+
return projectInfo.files.reduce((options, filepath) => {
|
|
117
|
+
if (projectInfo.config.parser === 'react') {
|
|
118
|
+
const { tsProgram } = projectInfo;
|
|
119
|
+
if (!(0, parser_1.isFigmaConnectFile)(tsProgram, filepath)) {
|
|
120
|
+
const checker = tsProgram.getTypeChecker();
|
|
121
|
+
const sourceFile = tsProgram.getSourceFile(filepath);
|
|
122
|
+
if (!sourceFile) {
|
|
123
|
+
throw new Error(`Could not parse file ${filepath}`);
|
|
124
|
+
}
|
|
125
|
+
const sourceFileSymbol = checker.getSymbolAtLocation(sourceFile);
|
|
126
|
+
const exports = checker.getExportsOfModule(sourceFileSymbol);
|
|
127
|
+
exports.forEach((exp) => {
|
|
128
|
+
options.push(getFilepathExport(filepath, exp.getName()));
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
options.push(filepath);
|
|
134
|
+
}
|
|
135
|
+
return options;
|
|
136
|
+
}, []);
|
|
137
|
+
}
|
|
138
|
+
exports.getFilepathExportsFromFiles = getFilepathExportsFromFiles;
|
|
70
139
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/connect/wizard/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,4CAAmB;AACnB,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/connect/wizard/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AACpC,4CAAmB;AACnB,wCAMmB;AACnB,kDAAsD;AACtD,gDAAuB;AAEvB,+CAAuD;AAGvD;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,kBAAkB,EAClB,MAAM,GAKP;IACC,IAAI,kBAAkB,EAAE,CAAC;QACvB,4CAA4C;QAC5C,MAAM,mBAAmB,GAAG,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,UAAU,CAAC,cAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC5F,OAAO,yCAA+B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CACvD,CAAC,kBAAkB,EAAE,EAAE,CAAC,GAAG,mBAAmB,IAAI,kBAAkB,EAAE,CACvE,CAAA;IACH,CAAC;IACD,OAAO,yCAA+B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACvD,CAAC;AAjBD,0CAiBC;AAEM,KAAK,UAAU,uBAAuB,CAAC,EAC5C,GAAG,EACH,kBAAkB,EAClB,MAAM,GAKP;IACC,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG;;;mBAGF,YAAY;;;GAG5B,CAAA;IACD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE;QAClD,MAAM,EAAE,MAAM;KACf,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,IAAA,8BAAoB,EAAC,GAAG,CAAC,CAAA;IAE1C,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAErC,gBAAM,CAAC,IAAI,CAAC,IAAA,iBAAO,EAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAA;AAC7C,CAAC;AAzBD,0DAyBC;AAED,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAErC,SAAgB,mBAAmB,CAAC,cAAsB;IACxD,MAAM,kBAAkB,GAAG,cAAc,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAA;IAEhF,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,cAAc;YACxB,UAAU,EAAE,IAAI;SACjB,CAAA;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC;QACzD,UAAU,EAAE,cAAc,CAAC,SAAS,CAAC,kBAAkB,GAAG,CAAC,CAAC;KAC7D,CAAA;AACH,CAAC;AAbD,kDAaC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,GAAW;IACtD,OAAO,GAAG,QAAQ,GAAG,yBAAyB,GAAG,GAAG,EAAE,CAAA;AACxD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,eAAyB;IAC9D,OAAO,eAAe,CAAC,MAAM,CAC3B,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;QACtB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAA;QACpE,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC;aAC/C,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAA8B,CAC/B,CAAA;AACH,CAAC;AAfD,wDAeC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,WAAwB;IAClE,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QACpD,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,WAA+B,CAAA;YACrD,IAAI,CAAC,IAAA,2BAAkB,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,EAAE,CAAA;gBAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;gBACpD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;gBACrD,CAAC;gBACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAE,CAAA;gBACjE,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;gBAE5D,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACtB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBAC1D,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,EAAE,EAAc,CAAC,CAAA;AACpB,CAAC;AAtBD,kEAsBC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactProjectInfo } from '../project';
|
|
2
|
+
import { ComponentTypeSignature } from '../../react/parser';
|
|
3
|
+
import { FigmaRestApi } from '../figma_rest_api';
|
|
4
|
+
import { PropMapping } from '../parser_executable_types';
|
|
5
|
+
export declare function extractSignature({ nameToFind, sourceFilePath, projectInfo, }: {
|
|
6
|
+
nameToFind: string;
|
|
7
|
+
sourceFilePath: string;
|
|
8
|
+
projectInfo: ReactProjectInfo;
|
|
9
|
+
}): ComponentTypeSignature;
|
|
10
|
+
export declare function generatePropMapping({ exportName, filepath, projectInfo, component, }: {
|
|
11
|
+
exportName: string;
|
|
12
|
+
filepath: string;
|
|
13
|
+
projectInfo: ReactProjectInfo;
|
|
14
|
+
component: FigmaRestApi.Component;
|
|
15
|
+
}): PropMapping;
|
|
16
|
+
//# sourceMappingURL=prop_mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prop_mapping.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/prop_mapping.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAiC,MAAM,oBAAoB,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAwB,MAAM,4BAA4B,CAAA;AAK9E,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,cAAc,EACd,WAAW,GACZ,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,gBAAgB,CAAA;CAC9B,0BAmDA;AA0BD,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,gBAAgB,CAAA;IAC7B,SAAS,EAAE,YAAY,CAAC,SAAS,CAAA;CAClC,GAAG,WAAW,CAqDd"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generatePropMapping = exports.extractSignature = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const parser_1 = require("../../react/parser");
|
|
9
|
+
const figma_rest_api_1 = require("../figma_rest_api");
|
|
10
|
+
const fast_fuzzy_1 = require("fast-fuzzy");
|
|
11
|
+
const PROP_MINIMUM_MATCH_THRESHOLD = 0.8;
|
|
12
|
+
function extractSignature({ nameToFind, sourceFilePath, projectInfo, }) {
|
|
13
|
+
const { tsProgram } = projectInfo;
|
|
14
|
+
const checker = tsProgram.getTypeChecker();
|
|
15
|
+
// Get source file
|
|
16
|
+
const sourceFile = tsProgram.getSourceFile(sourceFilePath);
|
|
17
|
+
if (!sourceFile) {
|
|
18
|
+
throw new Error(`Could not find source for file: ${sourceFilePath}`);
|
|
19
|
+
}
|
|
20
|
+
for (const statement of sourceFile.statements) {
|
|
21
|
+
if (!(typescript_1.default.isFunctionDeclaration(statement) || typescript_1.default.isVariableStatement(statement))) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (!(statement.modifiers &&
|
|
25
|
+
statement.modifiers.some((modifier) => modifier.kind === typescript_1.default.SyntaxKind.ExportKeyword))) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const name = typescript_1.default.isFunctionDeclaration(statement)
|
|
29
|
+
? statement.name?.text
|
|
30
|
+
: statement.declarationList.declarations?.[0].name.getText(sourceFile);
|
|
31
|
+
if (name === nameToFind ||
|
|
32
|
+
(nameToFind === 'default' &&
|
|
33
|
+
statement.modifiers.some((modifier) => modifier.kind === typescript_1.default.SyntaxKind.DefaultKeyword))) {
|
|
34
|
+
const symbol = typescript_1.default.isFunctionDeclaration(statement)
|
|
35
|
+
? statement.name && checker.getSymbolAtLocation(statement.name)
|
|
36
|
+
: checker.getSymbolAtLocation(statement.declarationList.declarations[0].name);
|
|
37
|
+
if (!symbol) {
|
|
38
|
+
throw new Error(`Could not find symbol for ${name}`);
|
|
39
|
+
}
|
|
40
|
+
const signature = (0, parser_1.extractComponentTypeSignature)(symbol, checker, sourceFile);
|
|
41
|
+
if (!signature) {
|
|
42
|
+
throw new Error(`Could not find signature for ${name}`);
|
|
43
|
+
}
|
|
44
|
+
return signature;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
throw new Error('No function or variable signatures found');
|
|
48
|
+
}
|
|
49
|
+
exports.extractSignature = extractSignature;
|
|
50
|
+
function getComponentPropertyTypeFromSignature(tsString) {
|
|
51
|
+
if (tsString === 'string') {
|
|
52
|
+
return figma_rest_api_1.FigmaRestApi.ComponentPropertyType.Text;
|
|
53
|
+
}
|
|
54
|
+
if (tsString === 'false | true') {
|
|
55
|
+
return figma_rest_api_1.FigmaRestApi.ComponentPropertyType.Boolean;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const DELIMITERS_REGEX = /[\s-_]/g;
|
|
60
|
+
function getMatchableStr(str) {
|
|
61
|
+
return str.replace(DELIMITERS_REGEX, '').toUpperCase();
|
|
62
|
+
}
|
|
63
|
+
function generatePropMapping({ exportName, filepath, projectInfo, component, }) {
|
|
64
|
+
const signature = extractSignature({
|
|
65
|
+
nameToFind: exportName,
|
|
66
|
+
sourceFilePath: filepath,
|
|
67
|
+
projectInfo,
|
|
68
|
+
});
|
|
69
|
+
const matchableCodeProps = Object.keys(signature).reduce((acc, key) => {
|
|
70
|
+
acc[getMatchableStr(key)] = key;
|
|
71
|
+
return acc;
|
|
72
|
+
}, {});
|
|
73
|
+
const matchedPropScores = {};
|
|
74
|
+
function isBestMatchForProp(match) {
|
|
75
|
+
return !matchedPropScores[match.item] || match.score > matchedPropScores[match.item].score;
|
|
76
|
+
}
|
|
77
|
+
const searchSpace = Object.keys(matchableCodeProps);
|
|
78
|
+
const searcher = new fast_fuzzy_1.Searcher(searchSpace);
|
|
79
|
+
Object.entries(component.componentPropertyDefinitions).forEach(([propertyName, componentPropertyDefinition]) => {
|
|
80
|
+
const results = searcher.search(getMatchableStr(propertyName), { returnMatchData: true });
|
|
81
|
+
const bestMatch = results[0];
|
|
82
|
+
const matchingCodeProp = matchableCodeProps[bestMatch?.item];
|
|
83
|
+
if (bestMatch &&
|
|
84
|
+
bestMatch.score > PROP_MINIMUM_MATCH_THRESHOLD &&
|
|
85
|
+
getComponentPropertyTypeFromSignature(signature[matchingCodeProp]) ===
|
|
86
|
+
componentPropertyDefinition.type &&
|
|
87
|
+
isBestMatchForProp(bestMatch)) {
|
|
88
|
+
matchedPropScores[bestMatch.item] = {
|
|
89
|
+
codePropName: matchingCodeProp,
|
|
90
|
+
figmaPropName: propertyName,
|
|
91
|
+
figmaPropType: componentPropertyDefinition.type,
|
|
92
|
+
score: bestMatch.score,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return Object.entries(matchedPropScores).reduce((acc, [_, { codePropName, figmaPropName, figmaPropType }]) => {
|
|
97
|
+
acc[figmaPropName] = {
|
|
98
|
+
codePropName,
|
|
99
|
+
mapping: figmaPropType,
|
|
100
|
+
};
|
|
101
|
+
return acc;
|
|
102
|
+
}, {});
|
|
103
|
+
}
|
|
104
|
+
exports.generatePropMapping = generatePropMapping;
|
|
105
|
+
//# sourceMappingURL=prop_mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prop_mapping.js","sourceRoot":"","sources":["../../../src/connect/wizard/prop_mapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ import { FigmaRestApi } from '../figma_rest_api';
|
|
|
4
4
|
import { ReactProjectInfo, CodeConnectConfig, ProjectInfo } from '../../connect/project';
|
|
5
5
|
type ConnectedComponentMappings = {
|
|
6
6
|
componentName: string;
|
|
7
|
-
|
|
7
|
+
filepathExport: string;
|
|
8
8
|
}[];
|
|
9
|
-
export declare function getComponentChoicesForPrompt(components: FigmaRestApi.Component[],
|
|
9
|
+
export declare function getComponentChoicesForPrompt(components: FigmaRestApi.Component[], linkedNodeIdsToFilepathExports: Record<string, string>, connectedComponentsMappings: ConnectedComponentMappings, dir: string): prompts.Choice[];
|
|
10
10
|
export declare function convertRemoteFileUrlToRelativePath({ remoteFileUrl, gitRootPath, dir, }: {
|
|
11
11
|
remoteFileUrl: string;
|
|
12
12
|
gitRootPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_wizard.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/run_wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiD,MAAM,wBAAwB,CAAA;AACnG,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,EAAE,YAAY,EAAa,MAAM,mBAAmB,CAAA;AAG3D,OAAO,EACL,gBAAgB,EAKhB,iBAAiB,EACjB,WAAW,EAEZ,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"run_wizard.d.ts","sourceRoot":"","sources":["../../../src/connect/wizard/run_wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiD,MAAM,wBAAwB,CAAA;AACnG,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,EAAE,YAAY,EAAa,MAAM,mBAAmB,CAAA;AAG3D,OAAO,EACL,gBAAgB,EAKhB,iBAAiB,EACjB,WAAW,EAEZ,MAAM,uBAAuB,CAAA;AAwB9B,KAAK,0BAA0B,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAAE,CAAA;AA0JrF,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,EACpC,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtD,2BAA2B,EAAE,0BAA0B,EACvD,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,EAAE,CA2ClB;AA2QD,wBAAgB,kCAAkC,CAAC,EACjD,aAAa,EACb,WAAW,EACX,GAAG,GACJ,EAAE;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ,iBAYA;AAED,wBAAsB,qDAAqD,CACzE,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,YAAY,CAAC,SAAS,EAAE,EAC5C,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;;;GA8C/D;AAoFD,wBAAsB,SAAS,CAAC,GAAG,EAAE,WAAW,iBAyJ/C"}
|