sloth-d2c-node 0.0.1-beta100
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 +2 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +76 -0
- package/dist/main.js.map +1 -0
- package/dist/modules/app.controller.d.ts +20 -0
- package/dist/modules/app.controller.js +122 -0
- package/dist/modules/app.controller.js.map +1 -0
- package/dist/modules/app.module.d.ts +2 -0
- package/dist/modules/app.module.js +25 -0
- package/dist/modules/app.module.js.map +1 -0
- package/dist/modules/app.service.d.ts +3 -0
- package/dist/modules/app.service.js +20 -0
- package/dist/modules/app.service.js.map +1 -0
- package/dist/modules/d2c/d2c.controller.d.ts +23 -0
- package/dist/modules/d2c/d2c.controller.js +108 -0
- package/dist/modules/d2c/d2c.controller.js.map +1 -0
- package/dist/modules/d2c/d2c.module.d.ts +2 -0
- package/dist/modules/d2c/d2c.module.js +27 -0
- package/dist/modules/d2c/d2c.module.js.map +1 -0
- package/dist/modules/d2c/d2c.service.d.ts +12 -0
- package/dist/modules/d2c/d2c.service.js +40 -0
- package/dist/modules/d2c/d2c.service.js.map +1 -0
- package/dist/tempCodeRunnerFile.d.ts +1 -0
- package/dist/tempCodeRunnerFile.js +8 -0
- package/dist/tempCodeRunnerFile.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/d2c-convert.d.ts +72 -0
- package/dist/utils/d2c-convert.js +211 -0
- package/dist/utils/d2c-convert.js.map +1 -0
- package/dist/utils/figma.d.ts +7 -0
- package/dist/utils/figma.js +47 -0
- package/dist/utils/figma.js.map +1 -0
- package/dist/utils/index.d.ts +27 -0
- package/dist/utils/index.js +285 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/webpack-substitutions.d.ts +1 -0
- package/dist/utils/webpack-substitutions.js +135 -0
- package/dist/utils/webpack-substitutions.js.map +1 -0
- package/package.json +111 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as slothD2C from 'sloth-d2c-figma-plugin';
|
|
2
|
+
import { getResourceMapAdvanced } from './index';
|
|
3
|
+
export declare function toDegrees(angle: number): number;
|
|
4
|
+
export interface ConvertParams {
|
|
5
|
+
fileKey?: string;
|
|
6
|
+
nodeId?: string;
|
|
7
|
+
depth?: number;
|
|
8
|
+
figmaToken?: string;
|
|
9
|
+
type: string;
|
|
10
|
+
config: any;
|
|
11
|
+
nodeList?: any;
|
|
12
|
+
}
|
|
13
|
+
export interface ConvertResult {
|
|
14
|
+
code?: string;
|
|
15
|
+
nodeList?: any;
|
|
16
|
+
imageMap?: any;
|
|
17
|
+
rootImage?: string;
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
}
|
|
20
|
+
export declare function convertD2C(params: ConvertParams): Promise<ConvertResult>;
|
|
21
|
+
export declare function convertFigmaToD2CNode(params: {
|
|
22
|
+
fileKey: string;
|
|
23
|
+
nodeId?: string;
|
|
24
|
+
depth?: number;
|
|
25
|
+
figmaToken: string;
|
|
26
|
+
config: any;
|
|
27
|
+
}): Promise<{
|
|
28
|
+
d2cNodeList: ID2CNodeList;
|
|
29
|
+
imageMap: any;
|
|
30
|
+
imageNodeList: ID2CNodeList;
|
|
31
|
+
}>;
|
|
32
|
+
export declare function generateAbsoluteHtml(d2cNodeList: ID2CNodeList): Promise<string>;
|
|
33
|
+
export declare function getCode(params: {
|
|
34
|
+
d2cNodeList: ID2CNodeList;
|
|
35
|
+
config: any;
|
|
36
|
+
options?: {
|
|
37
|
+
isLocalMode?: boolean;
|
|
38
|
+
};
|
|
39
|
+
}): Promise<string>;
|
|
40
|
+
export declare const chunkOptimizeCodePrompt: string;
|
|
41
|
+
export declare const aggregationOptimizeCodePrompt: string;
|
|
42
|
+
export declare const finalOptimizeCodePrompt: string;
|
|
43
|
+
export declare const componentAnalysisPrompt: string;
|
|
44
|
+
export declare const chunkOptimizeCodePromptVue: string;
|
|
45
|
+
export declare const aggregationOptimizeCodePromptVue: string;
|
|
46
|
+
export declare const finalOptimizeCodePromptVue: string;
|
|
47
|
+
export declare const componentAnalysisPromptVue: string;
|
|
48
|
+
export declare const noSamplingAggregationPrompt: string;
|
|
49
|
+
export declare const noSamplingAggregationPromptVue: string;
|
|
50
|
+
export declare const chunkOptimizeCodePromptIosOc: string;
|
|
51
|
+
export declare const aggregationOptimizeCodePromptIosOc: string;
|
|
52
|
+
export declare const finalOptimizeCodePromptIosOc: string;
|
|
53
|
+
export declare const noSamplingAggregationPromptIosOc: string;
|
|
54
|
+
export declare const chunkOptimizeCodePromptIosSwift: string;
|
|
55
|
+
export declare const aggregationOptimizeCodePromptIosSwift: string;
|
|
56
|
+
export declare const finalOptimizeCodePromptIosSwift: string;
|
|
57
|
+
export declare const noSamplingAggregationPromptIosSwift: string;
|
|
58
|
+
export declare const frameworkPromptKuikly: string;
|
|
59
|
+
export declare const chunkOptimizeCodePromptKuikly: string;
|
|
60
|
+
export declare const aggregationOptimizeCodePromptKuikly: string;
|
|
61
|
+
export declare const finalOptimizeCodePromptKuikly: string;
|
|
62
|
+
export declare const noSamplingAggregationPromptKuikly: string;
|
|
63
|
+
export declare const chunkOptimizeCodePromptTaro: string;
|
|
64
|
+
export declare const aggregationOptimizeCodePromptTaro: string;
|
|
65
|
+
export declare const finalOptimizeCodePromptTaro: string;
|
|
66
|
+
export declare const noSamplingAggregationPromptTaro: string;
|
|
67
|
+
export declare const chunkOptimizeCodePromptUniapp: string;
|
|
68
|
+
export declare const aggregationOptimizeCodePromptUniapp: string;
|
|
69
|
+
export declare const finalOptimizeCodePromptUniapp: string;
|
|
70
|
+
export declare const noSamplingAggregationPromptUniapp: string;
|
|
71
|
+
export declare const getBoundingBox: typeof slothD2C.getBoundingBox;
|
|
72
|
+
export { getResourceMapAdvanced };
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getResourceMapAdvanced = exports.getBoundingBox = exports.noSamplingAggregationPromptUniapp = exports.finalOptimizeCodePromptUniapp = exports.aggregationOptimizeCodePromptUniapp = exports.chunkOptimizeCodePromptUniapp = exports.noSamplingAggregationPromptTaro = exports.finalOptimizeCodePromptTaro = exports.aggregationOptimizeCodePromptTaro = exports.chunkOptimizeCodePromptTaro = exports.noSamplingAggregationPromptKuikly = exports.finalOptimizeCodePromptKuikly = exports.aggregationOptimizeCodePromptKuikly = exports.chunkOptimizeCodePromptKuikly = exports.frameworkPromptKuikly = exports.noSamplingAggregationPromptIosSwift = exports.finalOptimizeCodePromptIosSwift = exports.aggregationOptimizeCodePromptIosSwift = exports.chunkOptimizeCodePromptIosSwift = exports.noSamplingAggregationPromptIosOc = exports.finalOptimizeCodePromptIosOc = exports.aggregationOptimizeCodePromptIosOc = exports.chunkOptimizeCodePromptIosOc = exports.noSamplingAggregationPromptVue = exports.noSamplingAggregationPrompt = exports.componentAnalysisPromptVue = exports.finalOptimizeCodePromptVue = exports.aggregationOptimizeCodePromptVue = exports.chunkOptimizeCodePromptVue = exports.componentAnalysisPrompt = exports.finalOptimizeCodePrompt = exports.aggregationOptimizeCodePrompt = exports.chunkOptimizeCodePrompt = void 0;
|
|
37
|
+
exports.toDegrees = toDegrees;
|
|
38
|
+
exports.convertD2C = convertD2C;
|
|
39
|
+
exports.convertFigmaToD2CNode = convertFigmaToD2CNode;
|
|
40
|
+
exports.generateAbsoluteHtml = generateAbsoluteHtml;
|
|
41
|
+
exports.getCode = getCode;
|
|
42
|
+
const axios_1 = require("@nestjs/axios");
|
|
43
|
+
const slothD2C = __importStar(require("sloth-d2c-figma-plugin"));
|
|
44
|
+
const figma_1 = require("./figma");
|
|
45
|
+
const index_1 = require("./index");
|
|
46
|
+
Object.defineProperty(exports, "getResourceMapAdvanced", { enumerable: true, get: function () { return index_1.getResourceMapAdvanced; } });
|
|
47
|
+
function toDegrees(angle) {
|
|
48
|
+
return -1 * angle * (180 / Math.PI);
|
|
49
|
+
}
|
|
50
|
+
const figmaService = new figma_1.FigmaService(new axios_1.HttpService());
|
|
51
|
+
async function convertD2C(params) {
|
|
52
|
+
return {
|
|
53
|
+
code: '',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async function convertFigmaToD2CNode(params) {
|
|
57
|
+
const { fileKey, nodeId, depth, figmaToken, config } = params;
|
|
58
|
+
const res = await figmaService.getFigmaData(fileKey, nodeId, depth, figmaToken);
|
|
59
|
+
const figmaData = res;
|
|
60
|
+
const figmaNodeList = [Object.values(figmaData.nodes)[0].document];
|
|
61
|
+
figmaNodeList.forEach((node) => {
|
|
62
|
+
(0, index_1.traverse)(node, (subNode) => {
|
|
63
|
+
subNode.height = subNode.absoluteBoundingBox?.height || 0;
|
|
64
|
+
subNode.width = subNode.absoluteBoundingBox?.width || 0;
|
|
65
|
+
subNode.x = subNode.absoluteBoundingBox?.x || 0;
|
|
66
|
+
subNode.y = subNode.absoluteBoundingBox?.y || 0;
|
|
67
|
+
subNode.rotation = toDegrees(subNode.rotation);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
const { nodeList: nodeListBeforeFilter, next } = await slothD2C.convertFigmaNodeToD2CNode(figmaNodeList);
|
|
71
|
+
const imageNodeList = nodeListBeforeFilter?.filter((node) => ['IMG', 'ICON'].includes(node.type)) || [];
|
|
72
|
+
console.log('imageNodeList', imageNodeList);
|
|
73
|
+
const pngNodeIds = imageNodeList
|
|
74
|
+
.filter((image) => image.srcType === 'PNG' && image.option?.useAbsoluteBounds)
|
|
75
|
+
.map((image) => image.id)
|
|
76
|
+
.join(',');
|
|
77
|
+
const svgNodeIds = imageNodeList
|
|
78
|
+
.filter((image) => image.srcType === 'SVG' && image.option?.useAbsoluteBounds)
|
|
79
|
+
.map((image) => image.id)
|
|
80
|
+
.join(',');
|
|
81
|
+
const pngNodeIdsRenderBounds = imageNodeList
|
|
82
|
+
.filter((image) => image.srcType === 'PNG' && !image.option?.useAbsoluteBounds)
|
|
83
|
+
.map((image) => image.id)
|
|
84
|
+
.join(',');
|
|
85
|
+
const svgNodeIdsRenderBounds = imageNodeList
|
|
86
|
+
.filter((image) => image.srcType === 'SVG' && !image.option?.useAbsoluteBounds)
|
|
87
|
+
.map((image) => image.id)
|
|
88
|
+
.join(',');
|
|
89
|
+
const inheritImageMap = {};
|
|
90
|
+
const pngNodeIdsInheritImage = imageNodeList
|
|
91
|
+
.filter((image) => image.srcType === 'PNG' && image.inheritImage)
|
|
92
|
+
.map((image) => {
|
|
93
|
+
inheritImageMap[image.id] = image.parentId;
|
|
94
|
+
return image.parentId;
|
|
95
|
+
})
|
|
96
|
+
.join(',');
|
|
97
|
+
console.log('pngNodeIds', pngNodeIds);
|
|
98
|
+
console.log('svgNodeIds', svgNodeIds);
|
|
99
|
+
console.log('pngNodeIdsRenderBounds', pngNodeIdsRenderBounds);
|
|
100
|
+
console.log('svgNodeIdsRenderBounds', svgNodeIdsRenderBounds);
|
|
101
|
+
const getPngImage = figmaService.getImage(fileKey, pngNodeIds, figmaToken, {
|
|
102
|
+
format: 'png',
|
|
103
|
+
scale: 2,
|
|
104
|
+
use_absolute_bounds: true,
|
|
105
|
+
});
|
|
106
|
+
const getSvgImage = figmaService.getImage(fileKey, svgNodeIds, figmaToken, {
|
|
107
|
+
format: 'svg',
|
|
108
|
+
scale: 2,
|
|
109
|
+
use_absolute_bounds: true,
|
|
110
|
+
});
|
|
111
|
+
const getPngImageRenderBounds = figmaService.getImage(fileKey, pngNodeIdsRenderBounds, figmaToken, {
|
|
112
|
+
format: 'png',
|
|
113
|
+
scale: 2,
|
|
114
|
+
use_absolute_bounds: false,
|
|
115
|
+
});
|
|
116
|
+
const getSvgImageRenderBounds = figmaService.getImage(fileKey, svgNodeIdsRenderBounds, figmaToken, {
|
|
117
|
+
format: 'svg',
|
|
118
|
+
scale: 2,
|
|
119
|
+
use_absolute_bounds: false,
|
|
120
|
+
});
|
|
121
|
+
const getPngImageInheritImage = figmaService.getImage(fileKey, pngNodeIdsInheritImage, figmaToken, {
|
|
122
|
+
format: 'png',
|
|
123
|
+
scale: 2,
|
|
124
|
+
use_absolute_bounds: false,
|
|
125
|
+
});
|
|
126
|
+
const [pngImage, svgImage, pngImageRenderBounds, svgImageRenderBounds, pngImageInheritImage] = await Promise.allSettled([
|
|
127
|
+
getPngImage,
|
|
128
|
+
getSvgImage,
|
|
129
|
+
getPngImageRenderBounds,
|
|
130
|
+
getSvgImageRenderBounds,
|
|
131
|
+
getPngImageInheritImage,
|
|
132
|
+
]);
|
|
133
|
+
const imageRes = {
|
|
134
|
+
...(pngImage.status === 'fulfilled' ? pngImage.value.images : {}),
|
|
135
|
+
...(svgImage.status === 'fulfilled' ? svgImage.value.images : {}),
|
|
136
|
+
...(pngImageRenderBounds.status === 'fulfilled' ? pngImageRenderBounds.value.images : {}),
|
|
137
|
+
...(svgImageRenderBounds.status === 'fulfilled' ? svgImageRenderBounds.value.images : {}),
|
|
138
|
+
...(pngImageInheritImage.status === 'fulfilled' ? pngImageInheritImage.value.images : {}),
|
|
139
|
+
};
|
|
140
|
+
console.log('imageRes', imageRes);
|
|
141
|
+
console.log('inheritImageMap', inheritImageMap);
|
|
142
|
+
imageNodeList.forEach((node) => {
|
|
143
|
+
if (node.inheritImage) {
|
|
144
|
+
node.src = imageRes[inheritImageMap[node.id]];
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
node.src = imageRes[node.id];
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
let imageMap = {};
|
|
151
|
+
imageMap = await (0, index_1.getResourceMapAdvanced)(imageNodeList, config);
|
|
152
|
+
const d2cNodeList = await next({
|
|
153
|
+
beforeNext: async () => {
|
|
154
|
+
imageNodeList.forEach((node) => {
|
|
155
|
+
node.src = imageMap?.[node.id]?.base64 ? `data:image/${node.srcType === 'PNG' ? 'png' : 'svg+xml'};base64,${imageMap?.[node.id]?.base64}` : '';
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
afterNext: async () => {
|
|
159
|
+
imageNodeList.forEach((node) => {
|
|
160
|
+
node.src = imageMap?.[node.id]?.src;
|
|
161
|
+
});
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
return {
|
|
165
|
+
d2cNodeList,
|
|
166
|
+
imageMap,
|
|
167
|
+
imageNodeList,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
async function generateAbsoluteHtml(d2cNodeList) {
|
|
171
|
+
return await slothD2C.generateAbsoluteHtml(d2cNodeList);
|
|
172
|
+
}
|
|
173
|
+
async function getCode(params) {
|
|
174
|
+
const { d2cNodeList, config, options } = params;
|
|
175
|
+
const code = await slothD2C.getCode(d2cNodeList, config, options);
|
|
176
|
+
const formattedCode = await (0, index_1.formatCode)((0, index_1.replaceCode)(code), 'html');
|
|
177
|
+
return formattedCode;
|
|
178
|
+
}
|
|
179
|
+
exports.chunkOptimizeCodePrompt = slothD2C.chunkOptimizeCodePrompt;
|
|
180
|
+
exports.aggregationOptimizeCodePrompt = slothD2C.aggregationOptimizeCodePrompt;
|
|
181
|
+
exports.finalOptimizeCodePrompt = slothD2C.finalOptimizeCodePrompt;
|
|
182
|
+
exports.componentAnalysisPrompt = slothD2C.componentAnalysisPrompt;
|
|
183
|
+
exports.chunkOptimizeCodePromptVue = slothD2C.chunkOptimizeCodePromptVue;
|
|
184
|
+
exports.aggregationOptimizeCodePromptVue = slothD2C.aggregationOptimizeCodePromptVue;
|
|
185
|
+
exports.finalOptimizeCodePromptVue = slothD2C.finalOptimizeCodePromptVue;
|
|
186
|
+
exports.componentAnalysisPromptVue = slothD2C.componentAnalysisPromptVue;
|
|
187
|
+
exports.noSamplingAggregationPrompt = slothD2C.noSamplingAggregationPrompt;
|
|
188
|
+
exports.noSamplingAggregationPromptVue = slothD2C.noSamplingAggregationPromptVue;
|
|
189
|
+
exports.chunkOptimizeCodePromptIosOc = slothD2C.chunkOptimizeCodePromptIosOc;
|
|
190
|
+
exports.aggregationOptimizeCodePromptIosOc = slothD2C.aggregationOptimizeCodePromptIosOc;
|
|
191
|
+
exports.finalOptimizeCodePromptIosOc = slothD2C.finalOptimizeCodePromptIosOc;
|
|
192
|
+
exports.noSamplingAggregationPromptIosOc = slothD2C.noSamplingAggregationPromptIosOc;
|
|
193
|
+
exports.chunkOptimizeCodePromptIosSwift = slothD2C.chunkOptimizeCodePromptIosSwift;
|
|
194
|
+
exports.aggregationOptimizeCodePromptIosSwift = slothD2C.aggregationOptimizeCodePromptIosSwift;
|
|
195
|
+
exports.finalOptimizeCodePromptIosSwift = slothD2C.finalOptimizeCodePromptIosSwift;
|
|
196
|
+
exports.noSamplingAggregationPromptIosSwift = slothD2C.noSamplingAggregationPromptIosSwift;
|
|
197
|
+
exports.frameworkPromptKuikly = slothD2C.frameworkPromptKuikly;
|
|
198
|
+
exports.chunkOptimizeCodePromptKuikly = slothD2C.chunkOptimizeCodePromptKuikly;
|
|
199
|
+
exports.aggregationOptimizeCodePromptKuikly = slothD2C.aggregationOptimizeCodePromptKuikly;
|
|
200
|
+
exports.finalOptimizeCodePromptKuikly = slothD2C.finalOptimizeCodePromptKuikly;
|
|
201
|
+
exports.noSamplingAggregationPromptKuikly = slothD2C.noSamplingAggregationPromptKuikly;
|
|
202
|
+
exports.chunkOptimizeCodePromptTaro = slothD2C.chunkOptimizeCodePromptTaro;
|
|
203
|
+
exports.aggregationOptimizeCodePromptTaro = slothD2C.aggregationOptimizeCodePromptTaro;
|
|
204
|
+
exports.finalOptimizeCodePromptTaro = slothD2C.finalOptimizeCodePromptTaro;
|
|
205
|
+
exports.noSamplingAggregationPromptTaro = slothD2C.noSamplingAggregationPromptTaro;
|
|
206
|
+
exports.chunkOptimizeCodePromptUniapp = slothD2C.chunkOptimizeCodePromptUniapp;
|
|
207
|
+
exports.aggregationOptimizeCodePromptUniapp = slothD2C.aggregationOptimizeCodePromptUniapp;
|
|
208
|
+
exports.finalOptimizeCodePromptUniapp = slothD2C.finalOptimizeCodePromptUniapp;
|
|
209
|
+
exports.noSamplingAggregationPromptUniapp = slothD2C.noSamplingAggregationPromptUniapp;
|
|
210
|
+
exports.getBoundingBox = slothD2C.getBoundingBox;
|
|
211
|
+
//# sourceMappingURL=d2c-convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d2c-convert.js","sourceRoot":"","sources":["../../src/utils/d2c-convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HttpService } from '@nestjs/axios';
|
|
2
|
+
export declare class FigmaService {
|
|
3
|
+
private readonly httpService;
|
|
4
|
+
constructor(httpService: HttpService);
|
|
5
|
+
getFigmaData(fileKey: string, nodeId: string, depth: number, figmaToken: string): Promise<any>;
|
|
6
|
+
getImage(fileKey: string, nodeId: string, figmaToken: string, options: any): Promise<any>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FigmaService = void 0;
|
|
13
|
+
const axios_1 = require("@nestjs/axios");
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const rxjs_1 = require("rxjs");
|
|
16
|
+
let FigmaService = class FigmaService {
|
|
17
|
+
constructor(httpService) {
|
|
18
|
+
this.httpService = httpService;
|
|
19
|
+
}
|
|
20
|
+
async getFigmaData(fileKey, nodeId, depth, figmaToken) {
|
|
21
|
+
console.log('getFigmaData', { fileKey, nodeId, depth, figmaToken });
|
|
22
|
+
const response = this.httpService.get(`https://api.figma.com/v1/files/${fileKey}/nodes?ids=${nodeId}&geometry=paths`, {
|
|
23
|
+
headers: {
|
|
24
|
+
'X-Figma-Token': figmaToken,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
return (await (0, rxjs_1.lastValueFrom)(response)).data;
|
|
28
|
+
}
|
|
29
|
+
async getImage(fileKey, nodeId, figmaToken, options) {
|
|
30
|
+
const response = this.httpService.get(`https://api.figma.com/v1/images/${fileKey}`, {
|
|
31
|
+
headers: {
|
|
32
|
+
'X-Figma-Token': figmaToken,
|
|
33
|
+
},
|
|
34
|
+
params: {
|
|
35
|
+
...options,
|
|
36
|
+
ids: nodeId,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
return (await (0, rxjs_1.lastValueFrom)(response)).data;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.FigmaService = FigmaService;
|
|
43
|
+
exports.FigmaService = FigmaService = __decorate([
|
|
44
|
+
(0, common_1.Injectable)(),
|
|
45
|
+
__metadata("design:paramtypes", [axios_1.HttpService])
|
|
46
|
+
], FigmaService);
|
|
47
|
+
//# sourceMappingURL=figma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma.js","sourceRoot":"","sources":["../../src/utils/figma.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA2C;AAC3C,2CAA2C;AAC3C,+BAAyC;AAGlC,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEzD,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,MAAc,EAAE,KAAa,EAAE,UAAkB;QACnF,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,kCAAkC,OAAO,cAAc,MAAM,iBAAiB,EAAE;YACpH,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;aAC5B;SACF,CAAC,CAAA;QAKF,OAAO,CAAC,MAAM,IAAA,oBAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,MAAc,EAAE,UAAkB,EAAE,OAAY;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mCAAmC,OAAO,EAAE,EAAE;YAClF,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;aAC5B;YACD,MAAM,EAAE;gBACN,GAAG,OAAO;gBACV,GAAG,EAAE,MAAM;aACZ;SACF,CAAC,CAAA;QACF,OAAO,CAAC,MAAM,IAAA,oBAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7C,CAAC;CACF,CAAA;AA7BY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAE+B,mBAAW;GAD1C,YAAY,CA6BxB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Options } from 'prettier';
|
|
2
|
+
export declare const traverse: (node: any, callback: (node: any) => void) => void;
|
|
3
|
+
export declare const getSystemSupportFileName: (name: string) => string;
|
|
4
|
+
export declare function getBase64(url: string): Promise<string>;
|
|
5
|
+
export declare function getBase64Optimized(url: string, signal?: AbortSignal): Promise<{
|
|
6
|
+
base64: string;
|
|
7
|
+
uint8Array: Uint8Array<any>;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const getResourceMapAdvanced: (nodeList: ID2CNodeList, config: any, options?: {
|
|
10
|
+
concurrency?: number;
|
|
11
|
+
retries?: number;
|
|
12
|
+
cacheSize?: number;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}) => Promise<Record<string, {
|
|
15
|
+
path: string;
|
|
16
|
+
src: string;
|
|
17
|
+
uint8Array?: Uint8Array;
|
|
18
|
+
}>>;
|
|
19
|
+
export declare const getResourceMapLegacy: (nodeList: ID2CNodeList) => Promise<Record<string, {
|
|
20
|
+
path: string;
|
|
21
|
+
src: string;
|
|
22
|
+
}>>;
|
|
23
|
+
export declare const htmlConfig: Options;
|
|
24
|
+
export declare const jsxConfig: Options;
|
|
25
|
+
export declare const tsxConfig: Options;
|
|
26
|
+
export declare const formatCode: (code: string, framework: string) => Promise<string>;
|
|
27
|
+
export declare const replaceCode: (code: string) => string;
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.replaceCode = exports.formatCode = exports.tsxConfig = exports.jsxConfig = exports.htmlConfig = exports.getResourceMapLegacy = exports.getResourceMapAdvanced = exports.getSystemSupportFileName = exports.traverse = void 0;
|
|
40
|
+
exports.getBase64 = getBase64;
|
|
41
|
+
exports.getBase64Optimized = getBase64Optimized;
|
|
42
|
+
const axios_1 = __importDefault(require("axios"));
|
|
43
|
+
const webpack_substitutions_1 = require("./webpack-substitutions");
|
|
44
|
+
const js_sha1_1 = require("js-sha1");
|
|
45
|
+
const prettier = __importStar(require("prettier"));
|
|
46
|
+
const traverse = (node, callback) => {
|
|
47
|
+
callback(node);
|
|
48
|
+
if (node.children) {
|
|
49
|
+
node.children.forEach((child) => (0, exports.traverse)(child, callback));
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.traverse = traverse;
|
|
53
|
+
const getSystemSupportFileName = (name) => {
|
|
54
|
+
return name.replace(/[\\\\/:*?\\"<>|#%]/g, '').replace(/\s+/g, '');
|
|
55
|
+
};
|
|
56
|
+
exports.getSystemSupportFileName = getSystemSupportFileName;
|
|
57
|
+
function getBase64(url) {
|
|
58
|
+
if (!url) {
|
|
59
|
+
return Promise.resolve('');
|
|
60
|
+
}
|
|
61
|
+
return axios_1.default
|
|
62
|
+
.get(url, {
|
|
63
|
+
responseType: 'arraybuffer',
|
|
64
|
+
timeout: 10000,
|
|
65
|
+
maxContentLength: 10 * 1024 * 1024,
|
|
66
|
+
})
|
|
67
|
+
.then((response) => Buffer.from(response.data, 'binary').toString('base64'));
|
|
68
|
+
}
|
|
69
|
+
function getBase64Optimized(url, signal) {
|
|
70
|
+
if (!url) {
|
|
71
|
+
return Promise.resolve({ base64: '', uint8Array: new Uint8Array(0) });
|
|
72
|
+
}
|
|
73
|
+
return axios_1.default
|
|
74
|
+
.get(url, {
|
|
75
|
+
responseType: 'arraybuffer',
|
|
76
|
+
timeout: 20000,
|
|
77
|
+
maxContentLength: 10 * 1024 * 1024,
|
|
78
|
+
signal,
|
|
79
|
+
})
|
|
80
|
+
.then((response) => ({
|
|
81
|
+
base64: Buffer.from(response.data, 'binary').toString('base64'),
|
|
82
|
+
uint8Array: new Uint8Array(response.data),
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
const resourceCache = new Map();
|
|
86
|
+
const getResourceMapAdvanced = async (nodeList, config, options = {}) => {
|
|
87
|
+
const { concurrency = 5, retries = 2, cacheSize = 100, timeout = 10000 } = options;
|
|
88
|
+
const { imageStoragePath, imageStorageNamingRule, imageStorageType } = config.imageSetting;
|
|
89
|
+
let webpackPathRule = imageStorageNamingRule;
|
|
90
|
+
if (!webpackPathRule.endsWith('.[ext]')) {
|
|
91
|
+
webpackPathRule += '.[ext]';
|
|
92
|
+
}
|
|
93
|
+
const imageNodes = nodeList.filter((node) => ['IMG', 'ICON'].includes(node.type) && 'src' in node && imageStorageType === 'local');
|
|
94
|
+
if (imageNodes.length === 0) {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
if (resourceCache.size > cacheSize) {
|
|
98
|
+
const entriesToDelete = resourceCache.size - cacheSize + 10;
|
|
99
|
+
const keys = Array.from(resourceCache.keys());
|
|
100
|
+
for (let i = 0; i < entriesToDelete; i++) {
|
|
101
|
+
resourceCache.delete(keys[i]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const uniqueUrls = [...new Set(imageNodes.map((node) => node.src))];
|
|
105
|
+
const semaphore = new Array(concurrency).fill(null);
|
|
106
|
+
let currentIndex = 0;
|
|
107
|
+
const downloadWithRetry = async (url) => {
|
|
108
|
+
if (resourceCache.has(url)) {
|
|
109
|
+
return { url, base64: resourceCache.get(url).base64, uint8Array: resourceCache.get(url).uint8Array };
|
|
110
|
+
}
|
|
111
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
112
|
+
try {
|
|
113
|
+
const controller = new AbortController();
|
|
114
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
115
|
+
const { base64, uint8Array } = await getBase64Optimized(url, controller.signal);
|
|
116
|
+
clearTimeout(timeoutId);
|
|
117
|
+
resourceCache.set(url, { base64, uint8Array });
|
|
118
|
+
return { url, base64, uint8Array };
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
if (attempt === retries) {
|
|
122
|
+
console.error(`Failed to download ${url} after ${retries + 1} attempts:`, error);
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
await new Promise((resolve) => setTimeout(resolve, Math.pow(2, attempt) * 1000));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
throw new Error(`Failed to download ${url}`);
|
|
129
|
+
};
|
|
130
|
+
const downloadWithConcurrencyControl = () => {
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
const tryDownload = () => {
|
|
133
|
+
if (currentIndex >= uniqueUrls.length) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const url = uniqueUrls[currentIndex++];
|
|
137
|
+
downloadWithRetry(url).then(resolve).catch(reject);
|
|
138
|
+
};
|
|
139
|
+
tryDownload();
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
const downloadPromises = semaphore.map(() => (async () => {
|
|
143
|
+
const results = [];
|
|
144
|
+
while (currentIndex < uniqueUrls.length) {
|
|
145
|
+
try {
|
|
146
|
+
const result = await downloadWithConcurrencyControl();
|
|
147
|
+
results.push(result);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.warn('Download failed:', error);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return results;
|
|
154
|
+
})());
|
|
155
|
+
const allResults = await Promise.all(downloadPromises);
|
|
156
|
+
const flatResults = allResults.flat();
|
|
157
|
+
const urlToBase64Map = new Map();
|
|
158
|
+
flatResults.forEach((result) => {
|
|
159
|
+
urlToBase64Map.set(result.url, { base64: result.base64, uint8Array: result.uint8Array });
|
|
160
|
+
});
|
|
161
|
+
const collection = {};
|
|
162
|
+
for (const node of imageNodes) {
|
|
163
|
+
const url = node.src;
|
|
164
|
+
const { base64, uint8Array } = urlToBase64Map.get(url) || { base64: '', uint8Array: new Uint8Array(0) };
|
|
165
|
+
if (!base64) {
|
|
166
|
+
console.warn(`Skipping node ${node.id} due to failed image download`);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const type = node.srcType === 'PNG' ? 'png' : 'svg';
|
|
170
|
+
const sanitizedName = (0, exports.getSystemSupportFileName)(node.name);
|
|
171
|
+
const name = (0, webpack_substitutions_1.replacePathVariables)(webpackPathRule, {
|
|
172
|
+
filename: [sanitizedName, type].join('.'),
|
|
173
|
+
chunk: {
|
|
174
|
+
id: node.id,
|
|
175
|
+
name: sanitizedName,
|
|
176
|
+
contentHash: {
|
|
177
|
+
[type]: (0, js_sha1_1.sha1)(base64).substring(0, 8),
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
contentHashType: type,
|
|
181
|
+
}, undefined);
|
|
182
|
+
const path = [imageStoragePath, name].join('/');
|
|
183
|
+
const obj = { path, src: url };
|
|
184
|
+
Object.defineProperties(obj, {
|
|
185
|
+
uint8Array: {
|
|
186
|
+
get: () => uint8Array,
|
|
187
|
+
},
|
|
188
|
+
base64: {
|
|
189
|
+
get: () => base64,
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
collection[node.id] = obj;
|
|
193
|
+
}
|
|
194
|
+
return collection;
|
|
195
|
+
};
|
|
196
|
+
exports.getResourceMapAdvanced = getResourceMapAdvanced;
|
|
197
|
+
const getResourceMapLegacy = async (nodeList) => {
|
|
198
|
+
const imageStoragePath = '.';
|
|
199
|
+
const imageStorageType = 'local';
|
|
200
|
+
const imageStorageNamingRule = '[name]_[contenthash:6]';
|
|
201
|
+
const collection = {};
|
|
202
|
+
for (const node of nodeList) {
|
|
203
|
+
if (['IMG', 'ICON'].includes(node.type) && 'src' in node) {
|
|
204
|
+
const type = node.srcType === 'PNG' ? 'png' : 'svg';
|
|
205
|
+
if (imageStorageType === 'local') {
|
|
206
|
+
let webpackPathRule = imageStorageNamingRule;
|
|
207
|
+
if (!webpackPathRule.endsWith('.[ext]')) {
|
|
208
|
+
webpackPathRule += '.[ext]';
|
|
209
|
+
}
|
|
210
|
+
const base64 = await getBase64(node.src);
|
|
211
|
+
const name = (0, webpack_substitutions_1.replacePathVariables)(webpackPathRule, {
|
|
212
|
+
filename: [(0, exports.getSystemSupportFileName)(node.name), type].join('.'),
|
|
213
|
+
chunk: {
|
|
214
|
+
id: node.id,
|
|
215
|
+
name: (0, exports.getSystemSupportFileName)(node.name),
|
|
216
|
+
contentHash: {
|
|
217
|
+
[type]: (0, js_sha1_1.sha1)(base64).substring(0, 8),
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
contentHashType: type,
|
|
221
|
+
}, undefined);
|
|
222
|
+
const path = [imageStoragePath, name].join('/');
|
|
223
|
+
collection[node.id] = { path, src: node.src };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return collection;
|
|
228
|
+
};
|
|
229
|
+
exports.getResourceMapLegacy = getResourceMapLegacy;
|
|
230
|
+
exports.htmlConfig = {
|
|
231
|
+
parser: 'html',
|
|
232
|
+
printWidth: 100,
|
|
233
|
+
tabWidth: 2,
|
|
234
|
+
useTabs: false,
|
|
235
|
+
semi: true,
|
|
236
|
+
singleQuote: false,
|
|
237
|
+
bracketSameLine: false,
|
|
238
|
+
htmlWhitespaceSensitivity: 'css',
|
|
239
|
+
endOfLine: 'lf',
|
|
240
|
+
};
|
|
241
|
+
exports.jsxConfig = {
|
|
242
|
+
parser: 'babel',
|
|
243
|
+
printWidth: 100,
|
|
244
|
+
tabWidth: 2,
|
|
245
|
+
useTabs: false,
|
|
246
|
+
semi: true,
|
|
247
|
+
singleQuote: true,
|
|
248
|
+
jsxSingleQuote: false,
|
|
249
|
+
bracketSameLine: false,
|
|
250
|
+
bracketSpacing: true,
|
|
251
|
+
arrowParens: 'avoid',
|
|
252
|
+
trailingComma: 'es5',
|
|
253
|
+
};
|
|
254
|
+
exports.tsxConfig = {
|
|
255
|
+
parser: 'typescript',
|
|
256
|
+
printWidth: 100,
|
|
257
|
+
tabWidth: 2,
|
|
258
|
+
useTabs: false,
|
|
259
|
+
semi: true,
|
|
260
|
+
singleQuote: true,
|
|
261
|
+
trailingComma: 'all',
|
|
262
|
+
};
|
|
263
|
+
const frameworkConfigMapper = {
|
|
264
|
+
html: exports.htmlConfig,
|
|
265
|
+
react: exports.tsxConfig,
|
|
266
|
+
};
|
|
267
|
+
const formatCode = async (code, framework) => {
|
|
268
|
+
const options = frameworkConfigMapper[framework] || exports.htmlConfig;
|
|
269
|
+
return await prettier.format(code, options);
|
|
270
|
+
};
|
|
271
|
+
exports.formatCode = formatCode;
|
|
272
|
+
const replaceCode = (code) => {
|
|
273
|
+
return code
|
|
274
|
+
?.replace(/"/g, `'`)
|
|
275
|
+
.replace(/&/g, '&')
|
|
276
|
+
.replace(/</g, '<')
|
|
277
|
+
.replace(/>/g, '>')
|
|
278
|
+
.replace(/<[^>]+\s(data-id|data-type|data-name)="[^"]*"/g, (match) => {
|
|
279
|
+
return match.replace(/\s(data-id|data-type|data-name)="[^"]*"/g, '');
|
|
280
|
+
})
|
|
281
|
+
.replace(/^\s+$/gm, '')
|
|
282
|
+
.replace(/\n+/g, '\n');
|
|
283
|
+
};
|
|
284
|
+
exports.replaceCode = replaceCode;
|
|
285
|
+
//# sourceMappingURL=index.js.map
|