@ama-styling/figma-extractor 12.5.0-prerelease.51
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/LICENSE +26 -0
- package/README.md +61 -0
- package/cli/figma-extract.d.ts +3 -0
- package/cli/figma-extract.d.ts.map +1 -0
- package/cli/figma-extract.js +115 -0
- package/cli/figma-extract.js.map +1 -0
- package/collection.json +11 -0
- package/core/constants.d.ts +3 -0
- package/core/constants.d.ts.map +1 -0
- package/core/constants.js +6 -0
- package/core/constants.js.map +1 -0
- package/core/generators/generate-manifest.d.ts +38 -0
- package/core/generators/generate-manifest.d.ts.map +1 -0
- package/core/generators/generate-manifest.js +35 -0
- package/core/generators/generate-manifest.js.map +1 -0
- package/core/generators/generate-package.d.ts +19 -0
- package/core/generators/generate-package.d.ts.map +1 -0
- package/core/generators/generate-package.js +42 -0
- package/core/generators/generate-package.js.map +1 -0
- package/core/generators/generate-tokens.d.ts +26 -0
- package/core/generators/generate-tokens.d.ts.map +1 -0
- package/core/generators/generate-tokens.js +31 -0
- package/core/generators/generate-tokens.js.map +1 -0
- package/core/generators/index.d.ts +5 -0
- package/core/generators/index.d.ts.map +1 -0
- package/core/generators/index.js +8 -0
- package/core/generators/index.js.map +1 -0
- package/core/generators/styles/generate-color.d.ts +25 -0
- package/core/generators/styles/generate-color.d.ts.map +1 -0
- package/core/generators/styles/generate-color.js +53 -0
- package/core/generators/styles/generate-color.js.map +1 -0
- package/core/generators/styles/generate-effect.d.ts +26 -0
- package/core/generators/styles/generate-effect.d.ts.map +1 -0
- package/core/generators/styles/generate-effect.js +54 -0
- package/core/generators/styles/generate-effect.js.map +1 -0
- package/core/generators/styles/generate-grid.d.ts +17 -0
- package/core/generators/styles/generate-grid.d.ts.map +1 -0
- package/core/generators/styles/generate-grid.js +41 -0
- package/core/generators/styles/generate-grid.js.map +1 -0
- package/core/generators/styles/generate-text.d.ts +25 -0
- package/core/generators/styles/generate-text.d.ts.map +1 -0
- package/core/generators/styles/generate-text.js +53 -0
- package/core/generators/styles/generate-text.js.map +1 -0
- package/core/generators/styles/index.d.ts +6 -0
- package/core/generators/styles/index.d.ts.map +1 -0
- package/core/generators/styles/index.js +9 -0
- package/core/generators/styles/index.js.map +1 -0
- package/core/generators/styles/interfaces.d.ts +15 -0
- package/core/generators/styles/interfaces.d.ts.map +1 -0
- package/core/generators/styles/interfaces.js +11 -0
- package/core/generators/styles/interfaces.js.map +1 -0
- package/core/generators/tokens/token-from-local-variables.d.ts +19 -0
- package/core/generators/tokens/token-from-local-variables.d.ts.map +1 -0
- package/core/generators/tokens/token-from-local-variables.js +59 -0
- package/core/generators/tokens/token-from-local-variables.js.map +1 -0
- package/core/helpers/color-hex.helpers.d.ts +12 -0
- package/core/helpers/color-hex.helpers.d.ts.map +1 -0
- package/core/helpers/color-hex.helpers.js +22 -0
- package/core/helpers/color-hex.helpers.js.map +1 -0
- package/core/helpers/context.helpers.d.ts +12 -0
- package/core/helpers/context.helpers.d.ts.map +1 -0
- package/core/helpers/context.helpers.js +20 -0
- package/core/helpers/context.helpers.js.map +1 -0
- package/core/helpers/create-output-folder.d.ts +8 -0
- package/core/helpers/create-output-folder.d.ts.map +1 -0
- package/core/helpers/create-output-folder.js +19 -0
- package/core/helpers/create-output-folder.js.map +1 -0
- package/core/helpers/file-names.d.ts +13 -0
- package/core/helpers/file-names.d.ts.map +1 -0
- package/core/helpers/file-names.js +23 -0
- package/core/helpers/file-names.js.map +1 -0
- package/core/helpers/generate-token-tree.helpers.d.ts +11 -0
- package/core/helpers/generate-token-tree.helpers.d.ts.map +1 -0
- package/core/helpers/generate-token-tree.helpers.js +26 -0
- package/core/helpers/generate-token-tree.helpers.js.map +1 -0
- package/core/helpers/name-to-reference.d.ts +6 -0
- package/core/helpers/name-to-reference.d.ts.map +1 -0
- package/core/helpers/name-to-reference.js +13 -0
- package/core/helpers/name-to-reference.js.map +1 -0
- package/core/helpers/variable-formatter.d.ts +7 -0
- package/core/helpers/variable-formatter.d.ts.map +1 -0
- package/core/helpers/variable-formatter.js +21 -0
- package/core/helpers/variable-formatter.js.map +1 -0
- package/core/helpers/vector.d.ts +11 -0
- package/core/helpers/vector.d.ts.map +1 -0
- package/core/helpers/vector.js +16 -0
- package/core/helpers/vector.js.map +1 -0
- package/core/interfaces.d.ts +31 -0
- package/core/interfaces.d.ts.map +1 -0
- package/core/interfaces.js +3 -0
- package/core/interfaces.js.map +1 -0
- package/core/requests/get-file.request.d.ts +12 -0
- package/core/requests/get-file.request.d.ts.map +1 -0
- package/core/requests/get-file.request.js +18 -0
- package/core/requests/get-file.request.js.map +1 -0
- package/core/requests/get-text-weight.request.d.ts +14 -0
- package/core/requests/get-text-weight.request.d.ts.map +1 -0
- package/core/requests/get-text-weight.request.js +31 -0
- package/core/requests/get-text-weight.request.js.map +1 -0
- package/core/requests/get-variable.request.d.ts +14 -0
- package/core/requests/get-variable.request.d.ts.map +1 -0
- package/core/requests/get-variable.request.js +21 -0
- package/core/requests/get-variable.request.js.map +1 -0
- package/core/requests/get-versions.request.d.ts +53 -0
- package/core/requests/get-versions.request.d.ts.map +1 -0
- package/core/requests/get-versions.request.js +95 -0
- package/core/requests/get-versions.request.js.map +1 -0
- package/generate-json.d.ts +22 -0
- package/generate-json.d.ts.map +1 -0
- package/generate-json.js +77 -0
- package/generate-json.js.map +1 -0
- package/package.json +176 -0
- package/public_api.d.ts +4 -0
- package/public_api.d.ts.map +1 -0
- package/public_api.js +7 -0
- package/public_api.js.map +1 -0
- package/schematics/ng-add/index.d.ts +8 -0
- package/schematics/ng-add/index.d.ts.map +1 -0
- package/schematics/ng-add/index.js +44 -0
- package/schematics/ng-add/schema.d.ts +12 -0
- package/schematics/ng-add/schema.d.ts.map +1 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.json +31 -0
- package/schematics/package.json +3 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.convertNameToReference = void 0;
|
4
|
+
const constants_1 = require("../constants");
|
5
|
+
/**
|
6
|
+
* Converts a given name string into a reference
|
7
|
+
* @param name The input name string to be converted into a reference.
|
8
|
+
*/
|
9
|
+
const convertNameToReference = (name) => name.split(constants_1.VARIABLE_NAME_PATH_SEPARATOR)
|
10
|
+
.map((part) => part.replace(/\s/g, '-'))
|
11
|
+
.join('.');
|
12
|
+
exports.convertNameToReference = convertNameToReference;
|
13
|
+
//# sourceMappingURL=name-to-reference.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"name-to-reference.js","sourceRoot":"","sources":["../../../src/core/helpers/name-to-reference.ts"],"names":[],"mappings":";;;AAAA,4CAEsB;AAEtB;;;GAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,wCAA4B,CAAC;KAC7F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACvC,IAAI,CAAC,GAAG,CAAC,CAAC;AAFA,QAAA,sBAAsB,0BAEtB"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { GetLocalVariables200ResponseMeta, VariableAlias } from '@ama-styling/figma-sdk';
|
2
|
+
/**
|
3
|
+
* Retrieve Variable Referrer function
|
4
|
+
* @param localVariablesResponse file variables
|
5
|
+
*/
|
6
|
+
export declare const getVariablesFormatter: (localVariablesResponse: GetLocalVariables200ResponseMeta) => (vars: VariableAlias | VariableAlias[] | undefined) => string | undefined;
|
7
|
+
//# sourceMappingURL=variable-formatter.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"variable-formatter.d.ts","sourceRoot":"","sources":["../../../src/core/helpers/variable-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,aAAa,EACd,MAAM,wBAAwB,CAAC;AAKhC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,wBAAwB,gCAAgC,MAMpF,MAAM,aAAa,GAAG,aAAa,EAAE,GAAG,SAAS,uBAK1D,CAAC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getVariablesFormatter = void 0;
|
4
|
+
const name_to_reference_1 = require("./name-to-reference");
|
5
|
+
/**
|
6
|
+
* Retrieve Variable Referrer function
|
7
|
+
* @param localVariablesResponse file variables
|
8
|
+
*/
|
9
|
+
const getVariablesFormatter = (localVariablesResponse) => {
|
10
|
+
const getVariableRef = (alias) => {
|
11
|
+
const variable = alias?.type === 'VARIABLE_ALIAS' && localVariablesResponse.variables[alias.id];
|
12
|
+
return variable && (0, name_to_reference_1.convertNameToReference)(variable.name);
|
13
|
+
};
|
14
|
+
return (vars) => {
|
15
|
+
return Array.isArray(vars)
|
16
|
+
? vars?.map((variable) => `{${getVariableRef(variable)}}`).join(' ')
|
17
|
+
: vars && `{${getVariableRef(vars)}}`;
|
18
|
+
};
|
19
|
+
};
|
20
|
+
exports.getVariablesFormatter = getVariablesFormatter;
|
21
|
+
//# sourceMappingURL=variable-formatter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"variable-formatter.js","sourceRoot":"","sources":["../../../src/core/helpers/variable-formatter.ts"],"names":[],"mappings":";;;AAIA,2DAE6B;AAE7B;;;GAGG;AACI,MAAM,qBAAqB,GAAG,CAAC,sBAAwD,EAAE,EAAE;IAChG,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAE,EAAE;QAC/C,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,KAAK,gBAAgB,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChG,OAAO,QAAQ,IAAI,IAAA,0CAAsB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CAAC,IAAiD,EAAE,EAAE;QAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,CAAC,CAAC,IAAI,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { Vector } from '@ama-styling/figma-sdk';
|
2
|
+
/**
|
3
|
+
* Return the angle between the vector and the y axis of the screen.
|
4
|
+
* Note that by definition, the axis is directed towards the bottom (position [0,0] is the top left corner of the screen.
|
5
|
+
* This angle can be used for css angles such as gradient definition and transformation rotation.
|
6
|
+
* @param param0 Vector
|
7
|
+
* @param param0.0 Position Vector !
|
8
|
+
* @param param0.1 Position Vector 2
|
9
|
+
*/
|
10
|
+
export declare const getAngleWithScreenYAxis: ([p1, p2]: Vector[]) => number;
|
11
|
+
//# sourceMappingURL=vector.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/core/helpers/vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,EAAE,WAEzD,CAAC"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getAngleWithScreenYAxis = void 0;
|
4
|
+
/**
|
5
|
+
* Return the angle between the vector and the y axis of the screen.
|
6
|
+
* Note that by definition, the axis is directed towards the bottom (position [0,0] is the top left corner of the screen.
|
7
|
+
* This angle can be used for css angles such as gradient definition and transformation rotation.
|
8
|
+
* @param param0 Vector
|
9
|
+
* @param param0.0 Position Vector !
|
10
|
+
* @param param0.1 Position Vector 2
|
11
|
+
*/
|
12
|
+
const getAngleWithScreenYAxis = ([p1, p2]) => {
|
13
|
+
return Math.floor(Math.atan2(p2.y - p1.y, p2.x - p1.x) * 180 / Math.PI) + 90;
|
14
|
+
};
|
15
|
+
exports.getAngleWithScreenYAxis = getAngleWithScreenYAxis;
|
16
|
+
//# sourceMappingURL=vector.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../src/core/helpers/vector.ts"],"names":[],"mappings":";;;AAIA;;;;;;;GAOG;AACI,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAW,EAAE,EAAE;IAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AAC/E,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
export interface ExtractorContext {
|
2
|
+
/** Logger */
|
3
|
+
logger?: Partial<Pick<Console, 'warn' | 'error' | 'info' | 'debug'>>;
|
4
|
+
}
|
5
|
+
/** Context to the Figma file to target */
|
6
|
+
export interface FigmaFileContext extends ExtractorContext {
|
7
|
+
/** ID of the Figma file */
|
8
|
+
fileKey: string;
|
9
|
+
}
|
10
|
+
/** Context to the Figma Project to target */
|
11
|
+
export interface FigmaProjectContext extends ExtractorContext {
|
12
|
+
/**
|
13
|
+
* ID of the Figma Project
|
14
|
+
* Project Name where to look for files
|
15
|
+
*/
|
16
|
+
projectKey: string;
|
17
|
+
}
|
18
|
+
/** Design Token basic interface */
|
19
|
+
export interface DesignToken<T = any> {
|
20
|
+
/** Design Token type */
|
21
|
+
$type?: string;
|
22
|
+
/** Description of the Design Token */
|
23
|
+
$description?: string;
|
24
|
+
/** Value of the Design Token */
|
25
|
+
$value: T;
|
26
|
+
}
|
27
|
+
/** Design Token basic Tree interface */
|
28
|
+
export interface DesignTokenTree<T = any> {
|
29
|
+
[name: string]: DesignToken<T> | DesignTokenTree<T>;
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CACtE;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mCAAmC;AACnC,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,MAAM,EAAE,CAAC,CAAC;CACX;AAED,wCAAwC;AACxC,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;CACrD"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import type { ApiClient } from '@ama-sdk/core';
|
2
|
+
import type { FigmaFileContext } from '../interfaces';
|
3
|
+
/** Options to {@link getFile} */
|
4
|
+
export interface FileOptions extends FigmaFileContext {
|
5
|
+
}
|
6
|
+
/**
|
7
|
+
* Get the Figma file information
|
8
|
+
* @param apiClient SDK Api Client
|
9
|
+
* @param options Options
|
10
|
+
*/
|
11
|
+
export declare const getFile: (apiClient: ApiClient, options: FileOptions) => Promise<import("@ama-styling/figma-sdk").GetFile200Response>;
|
12
|
+
//# sourceMappingURL=get-file.request.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-file.request.d.ts","sourceRoot":"","sources":["../../../src/core/requests/get-file.request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACV,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,iCAAiC;AACjC,MAAM,WAAW,WAAY,SAAQ,gBAAgB;CACpD;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAU,WAAW,SAAS,EAAE,SAAS,WAAW,iEAMvE,CAAC"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getFile = void 0;
|
4
|
+
const figma_sdk_1 = require("@ama-styling/figma-sdk");
|
5
|
+
/**
|
6
|
+
* Get the Figma file information
|
7
|
+
* @param apiClient SDK Api Client
|
8
|
+
* @param options Options
|
9
|
+
*/
|
10
|
+
const getFile = async (apiClient, options) => {
|
11
|
+
const filesApi = new figma_sdk_1.FilesApi(apiClient);
|
12
|
+
options.logger?.debug?.('Initialize request to retrieve Figma file information');
|
13
|
+
const file = await filesApi.getFile({ file_key: options.fileKey });
|
14
|
+
options.logger?.debug?.('Retrieved Figma file information');
|
15
|
+
return file;
|
16
|
+
};
|
17
|
+
exports.getFile = getFile;
|
18
|
+
//# sourceMappingURL=get-file.request.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-file.request.js","sourceRoot":"","sources":["../../../src/core/requests/get-file.request.ts"],"names":[],"mappings":";;;AAGA,sDAEgC;AAShC;;;;GAIG;AACI,MAAM,OAAO,GAAG,KAAK,EAAE,SAAoB,EAAE,OAAoB,EAAE,EAAE;IAC1E,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,uDAAuD,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,kCAAkC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,OAAO,WAMlB"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { ApiClient } from '@ama-sdk/core';
|
2
|
+
import { type GetFile200Response } from '@ama-styling/figma-sdk';
|
3
|
+
import type { FigmaFileContext } from '../interfaces';
|
4
|
+
/** Options to {@link getTextWeightVariableIds} */
|
5
|
+
export interface TextWeightVariablesOptions extends FigmaFileContext {
|
6
|
+
}
|
7
|
+
/**
|
8
|
+
* Get the variables used in text weight where they should be considered as unit-less
|
9
|
+
* @param apiClient SDK Api Client
|
10
|
+
* @param figmaFile Figma information
|
11
|
+
* @param options Options
|
12
|
+
*/
|
13
|
+
export declare const getTextWeightVariableIds: (apiClient: ApiClient, figmaFile: Promise<GetFile200Response>, options: TextWeightVariablesOptions) => Promise<string[]>;
|
14
|
+
//# sourceMappingURL=get-text-weight.request.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-text-weight.request.d.ts","sourceRoot":"","sources":["../../../src/core/requests/get-text-weight.request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,kDAAkD;AAClD,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;CACnE;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAU,WAAW,SAAS,EAAE,WAAW,OAAO,CAAC,kBAAkB,CAAC,EAAE,SAAS,0BAA0B,sBAoB/I,CAAC"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getTextWeightVariableIds = void 0;
|
4
|
+
const figma_sdk_1 = require("@ama-styling/figma-sdk");
|
5
|
+
/**
|
6
|
+
* Get the variables used in text weight where they should be considered as unit-less
|
7
|
+
* @param apiClient SDK Api Client
|
8
|
+
* @param figmaFile Figma information
|
9
|
+
* @param options Options
|
10
|
+
*/
|
11
|
+
const getTextWeightVariableIds = async (apiClient, figmaFile, options) => {
|
12
|
+
const filesApi = new figma_sdk_1.FilesApi(apiClient);
|
13
|
+
const styles = (await figmaFile).styles;
|
14
|
+
const ids = Object.entries(styles)
|
15
|
+
.filter(([, { styleType }]) => styleType === 'TEXT')
|
16
|
+
.map(([id]) => id)
|
17
|
+
.join(',');
|
18
|
+
options.logger?.debug?.('Initialize request to Style Text variables information');
|
19
|
+
const variableIds = Object.entries((await filesApi.getFileNodes({ file_key: options.fileKey, ids })).nodes)
|
20
|
+
.filter(([, node]) => node.document.type === 'TEXT')
|
21
|
+
.map(([, node]) => node.document.boundVariables?.fontWeight)
|
22
|
+
.map((weight) => weight
|
23
|
+
?.filter((w) => w.type === 'VARIABLE_ALIAS')
|
24
|
+
.map((w) => w.id))
|
25
|
+
.filter((varIds) => !!varIds)
|
26
|
+
.flat();
|
27
|
+
options.logger?.debug?.('Listed Style Text variables IDs');
|
28
|
+
return variableIds;
|
29
|
+
};
|
30
|
+
exports.getTextWeightVariableIds = getTextWeightVariableIds;
|
31
|
+
//# sourceMappingURL=get-text-weight.request.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-text-weight.request.js","sourceRoot":"","sources":["../../../src/core/requests/get-text-weight.request.ts"],"names":[],"mappings":";;;AAGA,sDAGgC;AAShC;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,KAAK,EAAE,SAAoB,EAAE,SAAsC,EAAE,OAAmC,EAAE,EAAE;IAClJ,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;SACjB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,wDAAwD,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACxG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;SAC3D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;QACrB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,MAAM,CAAC,CAAC,MAAM,EAAsB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SAChD,IAAI,EAAE,CAAC;IACV,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,iCAAiC,CAAC,CAAC;IAE3D,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AApBW,QAAA,wBAAwB,4BAoBnC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { ApiClient } from '@ama-sdk/core';
|
2
|
+
import type { FigmaFileContext } from '../interfaces';
|
3
|
+
/** Options to {@link getVariables} */
|
4
|
+
export interface VariablesOptions extends FigmaFileContext {
|
5
|
+
/** Is it published variable (or file local ones) */
|
6
|
+
isPublished?: boolean;
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* Get the variables from a Figma file
|
10
|
+
* @param apiClient SDK Api Client
|
11
|
+
* @param options Options
|
12
|
+
*/
|
13
|
+
export declare const getVariables: (apiClient: ApiClient, options: VariablesOptions) => Promise<import("@ama-styling/figma-sdk").GetLocalVariables200ResponseMeta | import("@ama-styling/figma-sdk").GetPublishedVariables200ResponseMeta>;
|
14
|
+
//# sourceMappingURL=get-variable.request.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-variable.request.d.ts","sourceRoot":"","sources":["../../../src/core/requests/get-variable.request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACV,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,sCAAsC;AACtC,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAU,WAAW,SAAS,EAAE,SAAS,gBAAgB,uJAWjF,CAAC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getVariables = void 0;
|
4
|
+
const figma_sdk_1 = require("@ama-styling/figma-sdk");
|
5
|
+
/**
|
6
|
+
* Get the variables from a Figma file
|
7
|
+
* @param apiClient SDK Api Client
|
8
|
+
* @param options Options
|
9
|
+
*/
|
10
|
+
const getVariables = async (apiClient, options) => {
|
11
|
+
const variableApi = new figma_sdk_1.VariablesApi(apiClient);
|
12
|
+
options.logger?.debug?.('Initialize request to retrieve Figma file variables');
|
13
|
+
const variables = options.isPublished
|
14
|
+
? variableApi.getPublishedVariables({ file_key: options.fileKey })
|
15
|
+
: variableApi.getLocalVariables({ file_key: options.fileKey });
|
16
|
+
const result = (await variables).meta;
|
17
|
+
options.logger?.debug?.('Listed Figma file variable');
|
18
|
+
return result;
|
19
|
+
};
|
20
|
+
exports.getVariables = getVariables;
|
21
|
+
//# sourceMappingURL=get-variable.request.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-variable.request.js","sourceRoot":"","sources":["../../../src/core/requests/get-variable.request.ts"],"names":[],"mappings":";;;AAGA,sDAEgC;AAWhC;;;;GAIG;AACI,MAAM,YAAY,GAAG,KAAK,EAAE,SAAoB,EAAE,OAAyB,EAAE,EAAE;IACpF,MAAM,WAAW,GAAG,IAAI,wBAAY,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,qDAAqD,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW;QACnC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClE,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC;IACtC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,4BAA4B,CAAC,CAAC;IAEtD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,YAAY,gBAWvB"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import type { ApiClient } from '@ama-sdk/core';
|
2
|
+
import { type Version } from '@ama-styling/figma-sdk';
|
3
|
+
import type { FigmaFileContext, FigmaProjectContext } from '../interfaces';
|
4
|
+
/** Default of the {@link MajorVersionsOptions.fileNameMatcher | Filename matcher} to retrieve versions */
|
5
|
+
export declare const DEFAULT_FILENAME_MATCHER = "v((?:[0-9]+\\.){0,2}[0-9]+(?:-[^ ]+)?)$";
|
6
|
+
/** Default {@link VersionsOptions.numberOfVersions | number of version} to retrieve */
|
7
|
+
export declare const DEFAULT_VERSION_NUMBER = 1000;
|
8
|
+
/** Options to {@link getVersions} */
|
9
|
+
export interface VersionsOptions extends FigmaFileContext {
|
10
|
+
/**
|
11
|
+
* Number of history to download (default: {@link DEFAULT_VERSION_NUMBER})
|
12
|
+
* @default 1000
|
13
|
+
*/
|
14
|
+
numberOfVersions?: number;
|
15
|
+
/** Range to filter the versions */
|
16
|
+
versionRange?: string;
|
17
|
+
}
|
18
|
+
/** Options to {@link getAvailableMajorVersions} */
|
19
|
+
export interface MajorVersionsOptions extends FigmaProjectContext {
|
20
|
+
/**
|
21
|
+
* Regex to match the file name and capture the version (default: {@link DEFAULT_FILENAME_MATCHER})
|
22
|
+
* @default 'v((?:[0-9]+\\.){0,2}[0-9]+(?:-[^ ]+)?)$'
|
23
|
+
*/
|
24
|
+
fileNameMatcher?: string;
|
25
|
+
/** Range to filter the versions */
|
26
|
+
versionRange?: string;
|
27
|
+
}
|
28
|
+
export type VersionWithFileKey = Version & {
|
29
|
+
fileKey: string;
|
30
|
+
};
|
31
|
+
/**
|
32
|
+
* Get the Version available in the history
|
33
|
+
* @param apiClient SDK Api Client
|
34
|
+
* @param options
|
35
|
+
*/
|
36
|
+
export declare const getFileVersions: (apiClient: ApiClient, options: VersionsOptions) => Promise<VersionWithFileKey[]>;
|
37
|
+
/**
|
38
|
+
* Retrieve the available major versions and the associated file from a Figma project
|
39
|
+
* @param apiClient SDK Api Client
|
40
|
+
* @param options
|
41
|
+
*/
|
42
|
+
export declare const getAvailableMajorVersions: (apiClient: ApiClient, options: MajorVersionsOptions) => Promise<{
|
43
|
+
version: string;
|
44
|
+
range: string;
|
45
|
+
file: import("@ama-styling/figma-sdk").GetProjectFiles200ResponseFilesInner;
|
46
|
+
}[]>;
|
47
|
+
/**
|
48
|
+
* Get all versions from a targeted project
|
49
|
+
* @param apiClient SDK Api Client
|
50
|
+
* @param options
|
51
|
+
*/
|
52
|
+
export declare const getAllVersions: (apiClient: ApiClient, options: MajorVersionsOptions) => Promise<VersionWithFileKey[]>;
|
53
|
+
//# sourceMappingURL=get-versions.request.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-versions.request.d.ts","sourceRoot":"","sources":["../../../src/core/requests/get-versions.request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,wBAAwB,CAAC;AAQhC,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAEvB,2GAA2G;AAC3G,eAAO,MAAM,wBAAwB,4CAA4C,CAAC;AAElF,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,qCAAqC;AACrC,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,mDAAmD;AACnD,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,WAAW,SAAS,EAAE,SAAS,eAAe,KAAG,OAAO,CAAC,kBAAkB,EAAE,CA0BlH,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAU,WAAW,SAAS,EAAE,SAAS,oBAAoB;aAgC3E,MAAM;WAAS,MAAM;;IAE5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,WAAW,SAAS,EAAE,SAAS,oBAAoB,kCAWvF,CAAC"}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getAllVersions = exports.getAvailableMajorVersions = exports.getFileVersions = exports.DEFAULT_VERSION_NUMBER = exports.DEFAULT_FILENAME_MATCHER = void 0;
|
4
|
+
const figma_sdk_1 = require("@ama-styling/figma-sdk");
|
5
|
+
const semver_1 = require("semver");
|
6
|
+
/** Default of the {@link MajorVersionsOptions.fileNameMatcher | Filename matcher} to retrieve versions */
|
7
|
+
exports.DEFAULT_FILENAME_MATCHER = 'v((?:[0-9]+\\.){0,2}[0-9]+(?:-[^ ]+)?)$';
|
8
|
+
/** Default {@link VersionsOptions.numberOfVersions | number of version} to retrieve */
|
9
|
+
exports.DEFAULT_VERSION_NUMBER = 1000;
|
10
|
+
/**
|
11
|
+
* Get the Version available in the history
|
12
|
+
* @param apiClient SDK Api Client
|
13
|
+
* @param options
|
14
|
+
*/
|
15
|
+
const getFileVersions = async (apiClient, options) => {
|
16
|
+
const filesApi = new figma_sdk_1.FilesApi(apiClient);
|
17
|
+
options.logger?.debug?.('Initialize request to retrieve Figma file versions');
|
18
|
+
const versionResponse = await filesApi.getFileVersions({ file_key: options.fileKey, page_size: options.numberOfVersions || exports.DEFAULT_VERSION_NUMBER });
|
19
|
+
options.logger?.debug?.('Listed Figma file versions');
|
20
|
+
return versionResponse.versions
|
21
|
+
.filter((version) => {
|
22
|
+
if (version.label && !(0, semver_1.valid)(version.label)) {
|
23
|
+
options.logger?.warn?.(`Invalid version label: "${version.label}"`);
|
24
|
+
return false;
|
25
|
+
}
|
26
|
+
if (version.label && options.versionRange && !(0, semver_1.satisfies)(version.label, options.versionRange)) {
|
27
|
+
options.logger?.debug?.(`The version "${version.label}" does not matching the given range: "${options.versionRange}"`);
|
28
|
+
return false;
|
29
|
+
}
|
30
|
+
return !!version.label;
|
31
|
+
})
|
32
|
+
.map((version) => ({
|
33
|
+
...version,
|
34
|
+
label: (0, semver_1.coerce)(version.label).toString(),
|
35
|
+
fileKey: options.fileKey
|
36
|
+
}))
|
37
|
+
.sort((a, b) => -(0, semver_1.compare)(a.label, b.label));
|
38
|
+
};
|
39
|
+
exports.getFileVersions = getFileVersions;
|
40
|
+
/**
|
41
|
+
* Retrieve the available major versions and the associated file from a Figma project
|
42
|
+
* @param apiClient SDK Api Client
|
43
|
+
* @param options
|
44
|
+
*/
|
45
|
+
const getAvailableMajorVersions = async (apiClient, options) => {
|
46
|
+
const fileNameMatcher = new RegExp(options.fileNameMatcher || exports.DEFAULT_FILENAME_MATCHER);
|
47
|
+
const projectsApi = new figma_sdk_1.ProjectsApi(apiClient);
|
48
|
+
options.logger?.debug?.('Initialize request to retrieve Figma files from project');
|
49
|
+
const filesResponse = await projectsApi.getProjectFiles({ project_id: options.projectKey });
|
50
|
+
options.logger?.debug?.('Listed Figma files from project');
|
51
|
+
return filesResponse.files
|
52
|
+
.reduce((acc, file) => {
|
53
|
+
const fileMatch = fileNameMatcher.exec(file.name);
|
54
|
+
if (!fileMatch) {
|
55
|
+
options.logger?.debug?.(`File "${file.name}" does not match the file name matcher "${fileNameMatcher}"`);
|
56
|
+
return acc;
|
57
|
+
}
|
58
|
+
const version = (0, semver_1.coerce)(fileMatch[1])?.version;
|
59
|
+
if (!version || !(0, semver_1.valid)(version)) {
|
60
|
+
options.logger?.warn?.(`File "${file.name}" does not have a valid version: "${fileMatch[1]}"`);
|
61
|
+
return acc;
|
62
|
+
}
|
63
|
+
const range = version.replaceAll(/\.0/g, '.*');
|
64
|
+
if (options.versionRange && !(0, semver_1.intersects)(`${range}`, options.versionRange)) {
|
65
|
+
options.logger?.info?.(`File "${file.name}" does not matching the given range: "${options.versionRange}"`);
|
66
|
+
return acc;
|
67
|
+
}
|
68
|
+
acc.push({
|
69
|
+
range,
|
70
|
+
version,
|
71
|
+
file
|
72
|
+
});
|
73
|
+
return acc;
|
74
|
+
}, [])
|
75
|
+
.sort((a, b) => -(0, semver_1.compare)(a.version, b.version));
|
76
|
+
};
|
77
|
+
exports.getAvailableMajorVersions = getAvailableMajorVersions;
|
78
|
+
/**
|
79
|
+
* Get all versions from a targeted project
|
80
|
+
* @param apiClient SDK Api Client
|
81
|
+
* @param options
|
82
|
+
*/
|
83
|
+
const getAllVersions = async (apiClient, options) => {
|
84
|
+
const versions = await (0, exports.getAvailableMajorVersions)(apiClient, options);
|
85
|
+
const fullVersionsMap = versions.map((version) => (0, exports.getFileVersions)(apiClient, {
|
86
|
+
...options,
|
87
|
+
versionRange: version.range,
|
88
|
+
fileKey: version.file.key
|
89
|
+
}));
|
90
|
+
return (await Promise.all(fullVersionsMap))
|
91
|
+
.flat()
|
92
|
+
.sort((a, b) => -(0, semver_1.compare)(a.label, b.label));
|
93
|
+
};
|
94
|
+
exports.getAllVersions = getAllVersions;
|
95
|
+
//# sourceMappingURL=get-versions.request.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-versions.request.js","sourceRoot":"","sources":["../../../src/core/requests/get-versions.request.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import type { ExtractorContext, FigmaFileContext, FigmaProjectContext } from './core/interfaces';
|
2
|
+
interface GenerateJsonFile extends ExtractorContext, Partial<FigmaFileContext>, Partial<FigmaProjectContext> {
|
3
|
+
/** Access Token with Variables read permission */
|
4
|
+
accessToken: string;
|
5
|
+
/** Folder where generating the Design Token */
|
6
|
+
output: string;
|
7
|
+
/** Name of the Design Token collection */
|
8
|
+
name?: string;
|
9
|
+
/** Name of the NPM Package. The field {@link GenerateJsonFile.name} will be used if not provided */
|
10
|
+
packageName?: string;
|
11
|
+
/** Request the generation of the NPM Package */
|
12
|
+
generatePackage?: boolean;
|
13
|
+
/** Range to filter the versions */
|
14
|
+
versionRange?: string;
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* Generate the JSON files part of the Design Token specification
|
18
|
+
* @param options
|
19
|
+
*/
|
20
|
+
export declare const generateJsonFiles: (options: GenerateJsonFile) => Promise<void>;
|
21
|
+
export {};
|
22
|
+
//# sourceMappingURL=generate-json.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"generate-json.d.ts","sourceRoot":"","sources":["../src/generate-json.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAa3B,UAAU,gBAAiB,SAAQ,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAC1G,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS,gBAAgB,kBAmDhE,CAAC"}
|
package/generate-json.js
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.generateJsonFiles = void 0;
|
4
|
+
const promises_1 = require("node:fs/promises");
|
5
|
+
const node_path_1 = require("node:path");
|
6
|
+
const client_fetch_1 = require("@ama-sdk/client-fetch");
|
7
|
+
const core_1 = require("@ama-sdk/core");
|
8
|
+
const generate_manifest_1 = require("./core/generators/generate-manifest");
|
9
|
+
const generate_package_1 = require("./core/generators/generate-package");
|
10
|
+
const generate_tokens_1 = require("./core/generators/generate-tokens");
|
11
|
+
const generate_color_1 = require("./core/generators/styles/generate-color");
|
12
|
+
const generate_effect_1 = require("./core/generators/styles/generate-effect");
|
13
|
+
const generate_grid_1 = require("./core/generators/styles/generate-grid");
|
14
|
+
const generate_text_1 = require("./core/generators/styles/generate-text");
|
15
|
+
const context_helpers_1 = require("./core/helpers/context.helpers");
|
16
|
+
const create_output_folder_1 = require("./core/helpers/create-output-folder");
|
17
|
+
const file_names_1 = require("./core/helpers/file-names");
|
18
|
+
const get_file_request_1 = require("./core/requests/get-file.request");
|
19
|
+
const get_variable_request_1 = require("./core/requests/get-variable.request");
|
20
|
+
const get_versions_request_1 = require("./core/requests/get-versions.request");
|
21
|
+
const BASE_PATH = 'https://api.figma.com';
|
22
|
+
const MANIFEST_FILE = 'manifest.json';
|
23
|
+
const DEFAULT_NAME = 'Design Tokens';
|
24
|
+
const DEFAULT_VERSION = '0.0.0';
|
25
|
+
/**
|
26
|
+
* Generate the JSON files part of the Design Token specification
|
27
|
+
* @param options
|
28
|
+
*/
|
29
|
+
const generateJsonFiles = async (options) => {
|
30
|
+
const basePath = BASE_PATH;
|
31
|
+
const manifestFile = MANIFEST_FILE;
|
32
|
+
const apiClient = new client_fetch_1.ApiFetchClient({
|
33
|
+
basePath,
|
34
|
+
requestPlugins: [new core_1.AdditionalParamsRequest({ headers: { 'X-Figma-Token': options.accessToken } })]
|
35
|
+
});
|
36
|
+
// load version and determine the Figma file to target in Project support mode
|
37
|
+
let versions;
|
38
|
+
if ((0, context_helpers_1.isFigmaFileContext)(options)) {
|
39
|
+
versions = (0, get_versions_request_1.getFileVersions)(apiClient, options);
|
40
|
+
}
|
41
|
+
else if ((0, context_helpers_1.isFigmaProjectContext)(options)) {
|
42
|
+
versions = (0, get_versions_request_1.getAllVersions)(apiClient, options);
|
43
|
+
options.fileKey = (await versions).at(0)?.fileKey;
|
44
|
+
if (!(0, context_helpers_1.isFigmaFileContext)(options)) {
|
45
|
+
throw new Error('Fail to determine the Figma File base on the given Figma Project');
|
46
|
+
}
|
47
|
+
}
|
48
|
+
else {
|
49
|
+
throw new Error('Fail to determine the Figma File to extract the data from The token Generation will stop');
|
50
|
+
}
|
51
|
+
const variableResponse = (0, get_variable_request_1.getVariables)(apiClient, { ...options, isPublished: false });
|
52
|
+
const fileResponse = (0, get_file_request_1.getFile)(apiClient, options);
|
53
|
+
const npmPackageName = options.packageName || options.name || DEFAULT_NAME;
|
54
|
+
const manifest = (0, generate_manifest_1.generateManifest)(variableResponse, fileResponse, { name: DEFAULT_NAME, ...options });
|
55
|
+
const textStyles = (0, generate_text_1.generateTextStyles)(apiClient, fileResponse, variableResponse, options);
|
56
|
+
const colorStyles = (0, generate_color_1.generateColorStyles)(apiClient, fileResponse, variableResponse, options);
|
57
|
+
const gridStyles = (0, generate_grid_1.generateGridStyles)(apiClient, fileResponse, variableResponse, options);
|
58
|
+
const effectStyles = (0, generate_effect_1.generateEffectStyles)(apiClient, fileResponse, variableResponse, options);
|
59
|
+
const tokensVariables = (0, generate_tokens_1.getTokensVariables)(apiClient, fileResponse, variableResponse, options);
|
60
|
+
await (0, create_output_folder_1.createOutputFolder)(options.output, options);
|
61
|
+
await Promise.all([
|
62
|
+
(async () => {
|
63
|
+
if (options.generatePackage) {
|
64
|
+
return (0, promises_1.writeFile)((0, node_path_1.join)(options.output, 'package.json'), JSON.stringify(await (0, generate_package_1.generatePackage)({ manifestFile, name: npmPackageName, version: (await versions).at(0)?.label || DEFAULT_VERSION }), null, 2));
|
65
|
+
}
|
66
|
+
})(),
|
67
|
+
(async () => (0, promises_1.writeFile)((0, node_path_1.join)(options.output, manifestFile), JSON.stringify(await manifest, null, 2)))(),
|
68
|
+
(async () => (0, promises_1.writeFile)((0, node_path_1.join)(options.output, (0, file_names_1.getStyleFileName)('TEXT')), JSON.stringify(await textStyles, null, 2)))(),
|
69
|
+
(async () => (0, promises_1.writeFile)((0, node_path_1.join)(options.output, (0, file_names_1.getStyleFileName)('FILL')), JSON.stringify(await colorStyles, null, 2)))(),
|
70
|
+
(async () => (0, promises_1.writeFile)((0, node_path_1.join)(options.output, (0, file_names_1.getStyleFileName)('GRID')), JSON.stringify(await gridStyles, null, 2)))(),
|
71
|
+
(async () => (0, promises_1.writeFile)((0, node_path_1.join)(options.output, (0, file_names_1.getStyleFileName)('EFFECT')), JSON.stringify(await effectStyles, null, 2)))(),
|
72
|
+
...(await tokensVariables)
|
73
|
+
.map((tokensVariable) => (0, promises_1.writeFile)((0, node_path_1.join)(options.output, (0, file_names_1.getCollectionFileName)(tokensVariable.collection, tokensVariable.mode)), JSON.stringify(tokensVariable.tokens, null, 2)))
|
74
|
+
]);
|
75
|
+
};
|
76
|
+
exports.generateJsonFiles = generateJsonFiles;
|
77
|
+
//# sourceMappingURL=generate-json.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"generate-json.js","sourceRoot":"","sources":["../src/generate-json.ts"],"names":[],"mappings":"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"}
|