@figma/code-connect 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +123 -25
  2. package/dist/cli.js +7 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/connect.d.ts +15 -0
  5. package/dist/commands/connect.d.ts.map +1 -1
  6. package/dist/commands/connect.js +140 -79
  7. package/dist/commands/connect.js.map +1 -1
  8. package/dist/common/__test__/project.test.d.ts +2 -0
  9. package/dist/common/__test__/project.test.d.ts.map +1 -0
  10. package/dist/common/__test__/project.test.js +14 -0
  11. package/dist/common/__test__/project.test.js.map +1 -0
  12. package/dist/common/api.d.ts +77 -5
  13. package/dist/common/api.d.ts.map +1 -1
  14. package/dist/common/external.d.ts +7 -3
  15. package/dist/common/external.d.ts.map +1 -1
  16. package/dist/common/external.js +13 -1
  17. package/dist/common/external.js.map +1 -1
  18. package/dist/common/figma_connect.d.ts +12 -10
  19. package/dist/common/figma_connect.d.ts.map +1 -1
  20. package/dist/common/intrinsics.d.ts +39 -7
  21. package/dist/common/intrinsics.d.ts.map +1 -1
  22. package/dist/common/intrinsics.js +166 -30
  23. package/dist/common/intrinsics.js.map +1 -1
  24. package/dist/common/logging.d.ts +9 -0
  25. package/dist/common/logging.d.ts.map +1 -1
  26. package/dist/common/logging.js +21 -1
  27. package/dist/common/logging.js.map +1 -1
  28. package/dist/common/updates.d.ts +4 -0
  29. package/dist/common/updates.d.ts.map +1 -0
  30. package/dist/common/updates.js +87 -0
  31. package/dist/common/updates.js.map +1 -0
  32. package/dist/connect/create.d.ts +5 -1
  33. package/dist/connect/create.d.ts.map +1 -1
  34. package/dist/connect/create.js +55 -69
  35. package/dist/connect/create.js.map +1 -1
  36. package/dist/connect/delete_docs.d.ts.map +1 -1
  37. package/dist/connect/delete_docs.js +1 -4
  38. package/dist/connect/delete_docs.js.map +1 -1
  39. package/dist/connect/figma_rest_api.d.ts +5 -0
  40. package/dist/connect/figma_rest_api.d.ts.map +1 -1
  41. package/dist/connect/figma_rest_api.js +10 -1
  42. package/dist/connect/figma_rest_api.js.map +1 -1
  43. package/dist/connect/helpers.d.ts +1 -1
  44. package/dist/connect/helpers.d.ts.map +1 -1
  45. package/dist/connect/helpers.js +6 -5
  46. package/dist/connect/helpers.js.map +1 -1
  47. package/dist/connect/parser_executable_types.d.ts +298 -0
  48. package/dist/connect/parser_executable_types.d.ts.map +1 -0
  49. package/dist/connect/parser_executable_types.js +108 -0
  50. package/dist/connect/parser_executable_types.js.map +1 -0
  51. package/dist/connect/parser_executables.d.ts +8 -0
  52. package/dist/connect/parser_executables.d.ts.map +1 -0
  53. package/dist/connect/parser_executables.js +132 -0
  54. package/dist/connect/parser_executables.js.map +1 -0
  55. package/dist/connect/project.d.ts +137 -0
  56. package/dist/connect/project.d.ts.map +1 -0
  57. package/dist/connect/project.js +411 -0
  58. package/dist/connect/project.js.map +1 -0
  59. package/dist/connect/upload.d.ts.map +1 -1
  60. package/dist/connect/upload.js +2 -5
  61. package/dist/connect/upload.js.map +1 -1
  62. package/dist/connect/validation.d.ts +6 -1
  63. package/dist/connect/validation.d.ts.map +1 -1
  64. package/dist/connect/validation.js +12 -12
  65. package/dist/connect/validation.js.map +1 -1
  66. package/dist/connect/wizard/helpers.d.ts +7 -0
  67. package/dist/connect/wizard/helpers.d.ts.map +1 -0
  68. package/dist/connect/wizard/helpers.js +55 -0
  69. package/dist/connect/wizard/helpers.js.map +1 -0
  70. package/dist/connect/wizard/run_wizard.d.ts +3 -0
  71. package/dist/connect/wizard/run_wizard.d.ts.map +1 -0
  72. package/dist/connect/wizard/run_wizard.js +479 -0
  73. package/dist/connect/wizard/run_wizard.js.map +1 -0
  74. package/dist/parser_scripts/get_file_if_exists.d.ts +2 -0
  75. package/dist/parser_scripts/get_file_if_exists.d.ts.map +1 -0
  76. package/dist/parser_scripts/get_file_if_exists.js +10 -0
  77. package/dist/parser_scripts/get_file_if_exists.js.map +1 -0
  78. package/dist/parser_scripts/get_gradlew_path.d.ts +3 -0
  79. package/dist/parser_scripts/get_gradlew_path.d.ts.map +1 -0
  80. package/dist/parser_scripts/get_gradlew_path.js +24 -0
  81. package/dist/parser_scripts/get_gradlew_path.js.map +1 -0
  82. package/dist/parser_scripts/get_swift_parser_dir.d.ts +2 -0
  83. package/dist/parser_scripts/get_swift_parser_dir.d.ts.map +1 -0
  84. package/dist/parser_scripts/get_swift_parser_dir.js +93 -0
  85. package/dist/parser_scripts/get_swift_parser_dir.js.map +1 -0
  86. package/dist/react/create.d.ts +4 -0
  87. package/dist/react/create.d.ts.map +1 -0
  88. package/dist/react/create.js +132 -0
  89. package/dist/react/create.js.map +1 -0
  90. package/dist/{common → react}/parser.d.ts +6 -15
  91. package/dist/react/parser.d.ts.map +1 -0
  92. package/dist/{common → react}/parser.js +223 -172
  93. package/dist/react/parser.js.map +1 -0
  94. package/dist/react/parser_template_helpers.d.ts +23 -0
  95. package/dist/react/parser_template_helpers.d.ts.map +1 -0
  96. package/dist/react/parser_template_helpers.js +126 -0
  97. package/dist/react/parser_template_helpers.js.map +1 -0
  98. package/dist/storybook/convert.d.ts +2 -2
  99. package/dist/storybook/convert.d.ts.map +1 -1
  100. package/dist/storybook/convert.js +11 -7
  101. package/dist/storybook/convert.js.map +1 -1
  102. package/dist/{common → typescript}/compiler.d.ts +1 -1
  103. package/dist/typescript/compiler.d.ts.map +1 -0
  104. package/dist/{common → typescript}/compiler.js +21 -2
  105. package/dist/typescript/compiler.js.map +1 -0
  106. package/package.json +36 -11
  107. package/dist/common/compiler.d.ts.map +0 -1
  108. package/dist/common/compiler.js.map +0 -1
  109. package/dist/common/parser.d.ts.map +0 -1
  110. package/dist/common/parser.js.map +0 -1
  111. package/dist/common/parser_template_helpers.d.ts +0 -2
  112. package/dist/common/parser_template_helpers.d.ts.map +0 -1
  113. package/dist/common/parser_template_helpers.js +0 -58
  114. package/dist/common/parser_template_helpers.js.map +0 -1
  115. package/dist/common/project.d.ts +0 -84
  116. package/dist/common/project.d.ts.map +0 -1
  117. package/dist/common/project.js +0 -179
  118. package/dist/common/project.js.map +0 -1
@@ -1,84 +0,0 @@
1
- import ts from 'typescript';
2
- export interface CodeConnectConfig {
3
- /**
4
- * Specify glob patterns for files (relative to the project root) to be
5
- * included when looking for source files. If not specified, all files
6
- * (except any specified in `exclude`) will be included.
7
- */
8
- include?: string[];
9
- /**
10
- * Specify glob patterns for files (relative to the project root) to be
11
- * excluded when looking for source files. If not specified, only
12
- * `node_modules` will be excluded.
13
- */
14
- exclude?: string[];
15
- /**
16
- * Optional object of substitutions applied to document URLs (in the format {
17
- * fromString, toString }) for testing (e.g. remapping a production URL to a
18
- * staging URL). Not publicly documented.
19
- */
20
- documentUrlSubstitutions?: Record<string, string>;
21
- /**
22
- * React specific configuration
23
- */
24
- react?: {
25
- /**
26
- * Maps imports from their path on disk to the specified path.
27
- * This will rewrite the imports in generated code examples, so it works with
28
- * relative imports such as `import { Button } from "./"`.
29
- *
30
- * Example: { "src/components/*": "@ui/components" }
31
- * Would rewrite imports for components located in `src/components` to `@ui/components` in
32
- * generated code examples.
33
- * `import { Button } from "./"` -> `import { Button } from "@ui/components/Button"`
34
- */
35
- importPaths?: Record<string, string>;
36
- /**
37
- * For import resolution - this is a temporary solution to support projects that use
38
- * pnpm workspaces, as the compiler doesn't seem to be able to resolve imports when
39
- * the package in node_modules is a symlink. Need to look into this more and find a
40
- * better solution.
41
- */
42
- paths?: Record<string, string[]>;
43
- };
44
- }
45
- export declare function getGitRemoteURL(repoPath: string): string;
46
- /**
47
- * Finds the URL of a remote file
48
- * @param filePath absolute file path on disk
49
- * @param repoURL remote URL
50
- * @returns
51
- */
52
- export declare function getRemoteFileUrl(filePath: string, repoURL?: string): string;
53
- export interface ProjectInfo {
54
- /**
55
- * Absolute path of the project directory
56
- */
57
- absPath: string;
58
- /**
59
- * An array of all tsx files in the project
60
- */
61
- files: string[];
62
- /**
63
- * The git remote URL of the project
64
- */
65
- remoteUrl: string;
66
- /**
67
- * The parsed Code Connect config file
68
- */
69
- config?: CodeConnectConfig;
70
- /**
71
- * TS program containing all tsx files in the project
72
- */
73
- tsProgram: ts.Program;
74
- }
75
- /**
76
- * Gets information about a project from a directory.
77
- *
78
- * @param dir Directory containing the project
79
- * @param configPath Optional path to Code Connect config file
80
- * @returns Object containing information about the project
81
- */
82
- export declare function getProjectInfo(dir: string, configPath?: string): ProjectInfo;
83
- export declare function resolveImportPath(filePath: string, config: CodeConnectConfig): string | null;
84
- //# sourceMappingURL=project.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/common/project.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,YAAY,CAAA;AAI3B,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN;;;;;;;;;WASG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACpC;;;;;WAKG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;KACjC,CAAA;CACF;AAqBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,UAW/C;AAkBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,UAqBlE;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B;;OAEG;IACH,SAAS,EAAE,EAAE,CAAC,OAAO,CAAA;CACtB;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CA4D5E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CA0B5F"}
@@ -1,179 +0,0 @@
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.resolveImportPath = exports.getProjectInfo = exports.getRemoteFileUrl = exports.getGitRemoteURL = void 0;
7
- const child_process_1 = require("child_process");
8
- const glob_1 = require("glob");
9
- const path_1 = __importDefault(require("path"));
10
- const fs_1 = __importDefault(require("fs"));
11
- const typescript_1 = __importDefault(require("typescript"));
12
- const logging_1 = require("./logging");
13
- const DEFAULT_CONFIG_FILE_NAME = 'figma.config.json';
14
- function parseConfig(configFilePath) {
15
- if (!fs_1.default.existsSync(configFilePath)) {
16
- return undefined;
17
- }
18
- try {
19
- const rawData = fs_1.default.readFileSync(configFilePath, 'utf-8');
20
- const config = JSON.parse(rawData);
21
- return config;
22
- }
23
- catch (error) {
24
- console.error('Error parsing config file:', error);
25
- return undefined;
26
- }
27
- }
28
- function getGitRemoteURL(repoPath) {
29
- try {
30
- const spawn = (0, child_process_1.spawnSync)('git', ['config', '--get', 'remote.origin.url'], {
31
- cwd: repoPath,
32
- });
33
- const output = spawn.stdout;
34
- return (output || '').toString().trim();
35
- }
36
- catch (error) {
37
- console.error('Error getting git remote URL:', error);
38
- return '';
39
- }
40
- }
41
- exports.getGitRemoteURL = getGitRemoteURL;
42
- /**
43
- * Uses `git rev-parse` to find absolute path to the root of the git repository
44
- */
45
- function getGitRepoAbsolutePath(filePath) {
46
- try {
47
- const spawn = (0, child_process_1.spawnSync)('git', ['rev-parse', '--show-toplevel'], {
48
- cwd: path_1.default.dirname(filePath),
49
- });
50
- const output = spawn.stdout;
51
- return (output || '').toString().trim();
52
- }
53
- catch (error) {
54
- console.error('Error running `git rev-parse`:', error);
55
- return '';
56
- }
57
- }
58
- /**
59
- * Finds the URL of a remote file
60
- * @param filePath absolute file path on disk
61
- * @param repoURL remote URL
62
- * @returns
63
- */
64
- function getRemoteFileUrl(filePath, repoURL) {
65
- if (!repoURL) {
66
- return '';
67
- }
68
- let url = repoURL.trim();
69
- url = url.replace(':', '/');
70
- url = url.replace('git@', 'https://');
71
- url = url.replace(/\.git$/, '');
72
- // the folder of the git repo on disk could be named differently,
73
- // so we need to find the relative path of the file to the root of the repo
74
- // and append that to the remote URL
75
- const repoAbsPath = getGitRepoAbsolutePath(filePath);
76
- const index = filePath.indexOf(repoAbsPath);
77
- if (index === -1) {
78
- return '';
79
- }
80
- const relativeFilePath = filePath.substring(index + repoAbsPath.length);
81
- return `${url}/tree/master${relativeFilePath}`;
82
- }
83
- exports.getRemoteFileUrl = getRemoteFileUrl;
84
- function mapToAbsolutePaths(globPaths, absPath) {
85
- return globPaths.map((globPath) => `${absPath}/${globPath}`);
86
- }
87
- /**
88
- * Gets information about a project from a directory.
89
- *
90
- * @param dir Directory containing the project
91
- * @param configPath Optional path to Code Connect config file
92
- * @returns Object containing information about the project
93
- */
94
- function getProjectInfo(dir, configPath) {
95
- const configFilePath = configPath
96
- ? path_1.default.resolve(configPath)
97
- : path_1.default.resolve(path_1.default.join(dir, DEFAULT_CONFIG_FILE_NAME));
98
- const globalConfig = configFilePath ? parseConfig(configFilePath) : undefined;
99
- const config = globalConfig?.codeConnect;
100
- // `importPaths` and `paths` previously (incorrectly) lived in the global `codeConnect` config -
101
- // some early users may have it defined here so we'll log this error message to notify them to move it
102
- if (globalConfig && globalConfig.codeConnect.importPaths) {
103
- logging_1.logger.error(`The 'importPaths' option in the config file should be specified under 'react'`);
104
- }
105
- if (globalConfig && globalConfig.codeConnect.paths) {
106
- logging_1.logger.error(`The 'paths' option in the config file should be specified under 'react'`);
107
- }
108
- if (!globalConfig) {
109
- logging_1.logger.info(`No config file found in ${dir}, proceeding with default options`);
110
- }
111
- else if (globalConfig && !config) {
112
- logging_1.logger.info(`Config file found, but no options specified under 'codeConnect'. Parsing ${dir}`);
113
- }
114
- else if (config && !config.include) {
115
- logging_1.logger.info(`Config file found, but no include globs specified. Parsing ${dir}`);
116
- }
117
- else {
118
- logging_1.logger.info(`Config file found, parsing ${dir} using specified include globs`);
119
- }
120
- const absPath = path_1.default.resolve(dir);
121
- const includeGlobs = config?.include
122
- ? mapToAbsolutePaths(config.include, absPath)
123
- : `${absPath}/**/*.{tsx,jsx}`;
124
- const excludeGlobs = [
125
- ...(config?.exclude ? mapToAbsolutePaths(config.exclude, absPath) : []),
126
- `${absPath}/node_modules/**`,
127
- ];
128
- const files = (0, glob_1.globSync)(includeGlobs, {
129
- nodir: true,
130
- ignore: excludeGlobs,
131
- });
132
- const remoteUrl = getGitRemoteURL(absPath);
133
- const compilerOptions = {
134
- // This ensures the compiler can resolve imports such as "ui/button" when a
135
- // baseUrl is configured in the tsconfig of the project. We probably want a more
136
- // sophisticated way to parse the users tsconfig and pass it to the compiler eventually.
137
- baseUrl: absPath,
138
- // TODO: not sure why Node10 is needed her, but otherwise module resolution for
139
- // pnpm workspaces won't work
140
- moduleResolution: typescript_1.default.ModuleResolutionKind.Node10,
141
- paths: config?.react?.paths ?? {},
142
- allowJs: true,
143
- };
144
- const tsProgram = typescript_1.default.createProgram(files, compilerOptions);
145
- return {
146
- absPath,
147
- files,
148
- remoteUrl,
149
- config,
150
- tsProgram,
151
- };
152
- }
153
- exports.getProjectInfo = getProjectInfo;
154
- function resolveImportPath(filePath, config) {
155
- function isMatch(patternParts, pathParts) {
156
- for (let i = 0; i < patternParts.length; i++) {
157
- if (patternParts[i] !== '*' && patternParts[i] !== pathParts[i]) {
158
- return false;
159
- }
160
- }
161
- return true;
162
- }
163
- for (const [key, value] of Object.entries(config.react?.importPaths || {})) {
164
- // Do a partial match from the end of the path
165
- const patternParts = key.split('/').reverse();
166
- const pathParts = filePath.split('/').reverse();
167
- if (pathParts.length < patternParts.length) {
168
- continue;
169
- }
170
- // If the mapped path ends with a wildcard we want to keep the filename in
171
- // the final path (for non-index imports)
172
- if (isMatch(patternParts, pathParts)) {
173
- return value.endsWith('*') ? `${value.slice(0, -1)}${pathParts[0].split('.')[0]}` : value;
174
- }
175
- }
176
- return null;
177
- }
178
- exports.resolveImportPath = resolveImportPath;
179
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/common/project.ts"],"names":[],"mappings":"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"}