@stilhq/core 0.5.0 → 0.6.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.
- package/README.md +61 -0
- package/dist/core/schema.d.ts +64 -0
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/text.d.ts +45 -0
- package/dist/core/text.d.ts.map +1 -0
- package/dist/core/text.js +189 -0
- package/dist/core/text.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -141,6 +141,67 @@ type ComponentMeta = {
|
|
|
141
141
|
};
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
+
## Text QA
|
|
145
|
+
|
|
146
|
+
### Basic Usage
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
import { buildTextWithMeta, normalizeTextList } from "@stilhq/core";
|
|
150
|
+
|
|
151
|
+
// Load text snapshot from Figma Plugin
|
|
152
|
+
const snapshot = JSON.parse(fs.readFileSync(".stil/text/snapshots/textlist.json"));
|
|
153
|
+
|
|
154
|
+
// Build with QA validation and metadata
|
|
155
|
+
const { text, meta } = buildTextWithMeta(snapshot);
|
|
156
|
+
|
|
157
|
+
// textlist.dist.json - validated text items
|
|
158
|
+
fs.writeFileSync("textlist.dist.json", JSON.stringify(text, null, 2));
|
|
159
|
+
|
|
160
|
+
// textlist.meta.json - QA issues/warnings/stats
|
|
161
|
+
fs.writeFileSync("textlist.meta.json", JSON.stringify(meta, null, 2));
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### QA Rules (v1)
|
|
165
|
+
|
|
166
|
+
Text items are validated with the following rules:
|
|
167
|
+
- **Empty text**: Text is empty or whitespace-only (Error)
|
|
168
|
+
- **Duplicates**: Same text appears in multiple locations (Info)
|
|
169
|
+
- **Too long**: Text exceeds 500 characters (Warning)
|
|
170
|
+
- **Too short**: Single character text (Info)
|
|
171
|
+
- **Invalid characters**: Contains control characters except tab/newline (Warning)
|
|
172
|
+
|
|
173
|
+
**QA issues** are:
|
|
174
|
+
- Recorded in `textlist.meta.json` with details
|
|
175
|
+
- Displayed in Storybook QA report
|
|
176
|
+
- Non-fatal: CI passes even with issues (v1 policy)
|
|
177
|
+
|
|
178
|
+
### Text Metadata
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
type TextMeta = {
|
|
182
|
+
issues: {
|
|
183
|
+
emptyText: Array<{ nodeId: string; nodePath?: string }>;
|
|
184
|
+
duplicates: Array<{
|
|
185
|
+
text: string;
|
|
186
|
+
count: number;
|
|
187
|
+
locations: Array<{ nodeId: string; nodePath?: string }>;
|
|
188
|
+
}>;
|
|
189
|
+
tooLong: Array<{ nodeId: string; text: string; length: number }>;
|
|
190
|
+
tooShort: Array<{ nodeId: string; text: string }>;
|
|
191
|
+
invalidChars: Array<{ nodeId: string; text: string; issue: string }>;
|
|
192
|
+
};
|
|
193
|
+
warnings: string[];
|
|
194
|
+
stats: {
|
|
195
|
+
totalItems: number;
|
|
196
|
+
validItems: number;
|
|
197
|
+
itemsWithIssues: number;
|
|
198
|
+
uniqueTexts: number;
|
|
199
|
+
emptyCount: number;
|
|
200
|
+
duplicateCount: number;
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
```
|
|
204
|
+
|
|
144
205
|
## Status
|
|
145
206
|
|
|
146
207
|
0.x — API is not yet stable. Breaking changes may occur in minor versions.
|
package/dist/core/schema.d.ts
CHANGED
|
@@ -112,6 +112,70 @@ export type ComponentMeta = {
|
|
|
112
112
|
invalidVariants: number;
|
|
113
113
|
};
|
|
114
114
|
};
|
|
115
|
+
export type TextSnapshot = {
|
|
116
|
+
textList: {
|
|
117
|
+
scope: string;
|
|
118
|
+
generatedAt?: string;
|
|
119
|
+
stats?: {
|
|
120
|
+
processedNodes: number;
|
|
121
|
+
foundTextNodes: number;
|
|
122
|
+
elapsedMs?: number;
|
|
123
|
+
};
|
|
124
|
+
items: TextItem[];
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
export type TextItem = {
|
|
128
|
+
nodeId: string;
|
|
129
|
+
pageName?: string;
|
|
130
|
+
nodeName?: string;
|
|
131
|
+
text: string;
|
|
132
|
+
charCount?: number;
|
|
133
|
+
updatedAt?: string;
|
|
134
|
+
scopeKey?: string;
|
|
135
|
+
nodePath?: string;
|
|
136
|
+
};
|
|
137
|
+
export type TextMeta = {
|
|
138
|
+
issues: {
|
|
139
|
+
emptyText: Array<{
|
|
140
|
+
nodeId: string;
|
|
141
|
+
nodePath?: string;
|
|
142
|
+
}>;
|
|
143
|
+
duplicates: Array<{
|
|
144
|
+
text: string;
|
|
145
|
+
count: number;
|
|
146
|
+
locations: Array<{
|
|
147
|
+
nodeId: string;
|
|
148
|
+
nodePath?: string;
|
|
149
|
+
}>;
|
|
150
|
+
}>;
|
|
151
|
+
tooLong: Array<{
|
|
152
|
+
nodeId: string;
|
|
153
|
+
text: string;
|
|
154
|
+
length: number;
|
|
155
|
+
nodePath?: string;
|
|
156
|
+
}>;
|
|
157
|
+
tooShort: Array<{
|
|
158
|
+
nodeId: string;
|
|
159
|
+
text: string;
|
|
160
|
+
nodePath?: string;
|
|
161
|
+
}>;
|
|
162
|
+
invalidChars: Array<{
|
|
163
|
+
nodeId: string;
|
|
164
|
+
text: string;
|
|
165
|
+
issue: string;
|
|
166
|
+
nodePath?: string;
|
|
167
|
+
}>;
|
|
168
|
+
};
|
|
169
|
+
warnings: string[];
|
|
170
|
+
stats: {
|
|
171
|
+
totalItems: number;
|
|
172
|
+
validItems: number;
|
|
173
|
+
itemsWithIssues: number;
|
|
174
|
+
uniqueTexts: number;
|
|
175
|
+
emptyCount: number;
|
|
176
|
+
duplicateCount: number;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
115
179
|
export type Mapping = Record<string, string>;
|
|
116
180
|
export type BuildOptions = {
|
|
117
181
|
/** optional: theme.css を生成するか */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { TextItem, TextMeta } from "./schema";
|
|
2
|
+
export type NormalizedTextItem = TextItem;
|
|
3
|
+
export type NormalizedTextSnapshot = {
|
|
4
|
+
textList: {
|
|
5
|
+
scope: string;
|
|
6
|
+
generatedAt?: string;
|
|
7
|
+
stats?: {
|
|
8
|
+
processedNodes: number;
|
|
9
|
+
foundTextNodes: number;
|
|
10
|
+
elapsedMs?: number;
|
|
11
|
+
};
|
|
12
|
+
items: NormalizedTextItem[];
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Normalize text snapshot from Figma Plugin
|
|
17
|
+
* Currently a pass-through, but reserves room for future transformations
|
|
18
|
+
*/
|
|
19
|
+
export declare function normalizeTextList(snapshot: any): NormalizedTextSnapshot;
|
|
20
|
+
/**
|
|
21
|
+
* Validate text and perform QA checks
|
|
22
|
+
* QA Rules (v1):
|
|
23
|
+
* - Empty text check
|
|
24
|
+
* - Duplicate detection
|
|
25
|
+
* - Length check (too long: >500, too short: 1 char)
|
|
26
|
+
* - Invalid characters (control chars except tab/newline)
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateTextWithWarnings(normalized: NormalizedTextSnapshot): {
|
|
29
|
+
valid: NormalizedTextSnapshot;
|
|
30
|
+
meta: TextMeta;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Build text dist + meta from raw snapshot
|
|
34
|
+
* Returns both the valid text items (dist) and QA metadata (issues/warnings/stats)
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildTextWithMeta(snapshot: any): {
|
|
37
|
+
text: NormalizedTextSnapshot;
|
|
38
|
+
meta: TextMeta;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Simple normalize + validate without meta
|
|
42
|
+
* For cases where QA reports are not needed
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildTextList(snapshot: any): NormalizedTextSnapshot;
|
|
45
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAMjE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE;YACN,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,MAAM,CAAC;YACvB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,KAAK,EAAE,kBAAkB,EAAE,CAAC;KAC7B,CAAC;CACH,CAAC;AAMF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,sBAAsB,CAgBvE;AAMD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,sBAAsB,GACjC;IAAE,KAAK,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAmJnD;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG;IAChD,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,EAAE,QAAQ,CAAC;CAChB,CAWA;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,sBAAsB,CAGnE"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// text.ts - Text QA and validation
|
|
3
|
+
// Follows the same pattern as token/component processing: normalize → validate → build
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.normalizeTextList = normalizeTextList;
|
|
6
|
+
exports.validateTextWithWarnings = validateTextWithWarnings;
|
|
7
|
+
exports.buildTextWithMeta = buildTextWithMeta;
|
|
8
|
+
exports.buildTextList = buildTextList;
|
|
9
|
+
// ========================================
|
|
10
|
+
// Normalize
|
|
11
|
+
// ========================================
|
|
12
|
+
/**
|
|
13
|
+
* Normalize text snapshot from Figma Plugin
|
|
14
|
+
* Currently a pass-through, but reserves room for future transformations
|
|
15
|
+
*/
|
|
16
|
+
function normalizeTextList(snapshot) {
|
|
17
|
+
// Validate input structure
|
|
18
|
+
if (!snapshot || typeof snapshot !== "object") {
|
|
19
|
+
throw new Error("Invalid text snapshot: must be an object");
|
|
20
|
+
}
|
|
21
|
+
if (!snapshot.textList) {
|
|
22
|
+
throw new Error("Invalid text snapshot: missing 'textList' property");
|
|
23
|
+
}
|
|
24
|
+
if (!Array.isArray(snapshot.textList.items)) {
|
|
25
|
+
throw new Error("Invalid text snapshot: textList.items must be an array");
|
|
26
|
+
}
|
|
27
|
+
// For v1, we just validate and pass through
|
|
28
|
+
return snapshot;
|
|
29
|
+
}
|
|
30
|
+
// ========================================
|
|
31
|
+
// QA Validation with Warnings
|
|
32
|
+
// ========================================
|
|
33
|
+
/**
|
|
34
|
+
* Validate text and perform QA checks
|
|
35
|
+
* QA Rules (v1):
|
|
36
|
+
* - Empty text check
|
|
37
|
+
* - Duplicate detection
|
|
38
|
+
* - Length check (too long: >500, too short: 1 char)
|
|
39
|
+
* - Invalid characters (control chars except tab/newline)
|
|
40
|
+
*/
|
|
41
|
+
function validateTextWithWarnings(normalized) {
|
|
42
|
+
const warnings = [];
|
|
43
|
+
const emptyText = [];
|
|
44
|
+
const duplicates = [];
|
|
45
|
+
const tooLong = [];
|
|
46
|
+
const tooShort = [];
|
|
47
|
+
const invalidChars = [];
|
|
48
|
+
let totalItems = 0;
|
|
49
|
+
let validItems = 0;
|
|
50
|
+
let itemsWithIssues = 0;
|
|
51
|
+
// Track text occurrences for duplicate detection
|
|
52
|
+
const textOccurrences = new Map();
|
|
53
|
+
const validItemsList = [];
|
|
54
|
+
for (const item of normalized.textList.items) {
|
|
55
|
+
totalItems++;
|
|
56
|
+
let itemHasIssues = false;
|
|
57
|
+
// QA Check 1: Empty text
|
|
58
|
+
if (!item.text || item.text.trim() === "") {
|
|
59
|
+
itemHasIssues = true;
|
|
60
|
+
emptyText.push({
|
|
61
|
+
nodeId: item.nodeId,
|
|
62
|
+
nodePath: item.nodePath,
|
|
63
|
+
});
|
|
64
|
+
warnings.push(`Empty text found at ${item.nodePath || item.nodeId || "unknown"}`);
|
|
65
|
+
}
|
|
66
|
+
// QA Check 2: Track for duplicate detection (do after empty check)
|
|
67
|
+
if (item.text && item.text.trim() !== "") {
|
|
68
|
+
if (!textOccurrences.has(item.text)) {
|
|
69
|
+
textOccurrences.set(item.text, []);
|
|
70
|
+
}
|
|
71
|
+
textOccurrences.get(item.text).push({
|
|
72
|
+
nodeId: item.nodeId,
|
|
73
|
+
nodePath: item.nodePath,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// QA Check 3: Too long (>500 characters)
|
|
77
|
+
if (item.text && item.text.length > 500) {
|
|
78
|
+
itemHasIssues = true;
|
|
79
|
+
tooLong.push({
|
|
80
|
+
nodeId: item.nodeId,
|
|
81
|
+
text: item.text.substring(0, 100) + "...", // Truncate for display
|
|
82
|
+
length: item.text.length,
|
|
83
|
+
nodePath: item.nodePath,
|
|
84
|
+
});
|
|
85
|
+
warnings.push(`Text exceeds 500 characters (${item.text.length} chars) at ${item.nodePath || item.nodeId || "unknown"}`);
|
|
86
|
+
}
|
|
87
|
+
// QA Check 4: Too short (1 character, excluding intentional spaces)
|
|
88
|
+
if (item.text && item.text.length === 1 && item.text.trim().length === 1) {
|
|
89
|
+
// This is info-level, not an error
|
|
90
|
+
tooShort.push({
|
|
91
|
+
nodeId: item.nodeId,
|
|
92
|
+
text: item.text,
|
|
93
|
+
nodePath: item.nodePath,
|
|
94
|
+
});
|
|
95
|
+
warnings.push(`Single character text "${item.text}" at ${item.nodePath || item.nodeId || "unknown"}`);
|
|
96
|
+
}
|
|
97
|
+
// QA Check 5: Invalid control characters (except \t, \n, \r)
|
|
98
|
+
if (item.text) {
|
|
99
|
+
const invalidControlChars = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/;
|
|
100
|
+
if (invalidControlChars.test(item.text)) {
|
|
101
|
+
itemHasIssues = true;
|
|
102
|
+
invalidChars.push({
|
|
103
|
+
nodeId: item.nodeId,
|
|
104
|
+
text: item.text,
|
|
105
|
+
issue: "Contains invalid control characters (U+0000-U+001F except tab/newline)",
|
|
106
|
+
nodePath: item.nodePath,
|
|
107
|
+
});
|
|
108
|
+
warnings.push(`Invalid control characters in text at ${item.nodePath || item.nodeId || "unknown"}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Count valid vs issues
|
|
112
|
+
if (itemHasIssues) {
|
|
113
|
+
itemsWithIssues++;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
validItems++;
|
|
117
|
+
}
|
|
118
|
+
// Include all items in valid list (v1 policy: warnings only, not filtering)
|
|
119
|
+
validItemsList.push(item);
|
|
120
|
+
}
|
|
121
|
+
// Process duplicates
|
|
122
|
+
let duplicateCount = 0;
|
|
123
|
+
for (const [text, locations] of textOccurrences.entries()) {
|
|
124
|
+
if (locations.length > 1) {
|
|
125
|
+
duplicateCount += locations.length;
|
|
126
|
+
duplicates.push({
|
|
127
|
+
text,
|
|
128
|
+
count: locations.length,
|
|
129
|
+
locations,
|
|
130
|
+
});
|
|
131
|
+
warnings.push(`Duplicate text "${text}" appears ${locations.length} times`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const uniqueTexts = textOccurrences.size;
|
|
135
|
+
const validSnapshot = {
|
|
136
|
+
textList: {
|
|
137
|
+
...normalized.textList,
|
|
138
|
+
items: validItemsList,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
const meta = {
|
|
142
|
+
issues: {
|
|
143
|
+
emptyText,
|
|
144
|
+
duplicates,
|
|
145
|
+
tooLong,
|
|
146
|
+
tooShort,
|
|
147
|
+
invalidChars,
|
|
148
|
+
},
|
|
149
|
+
warnings,
|
|
150
|
+
stats: {
|
|
151
|
+
totalItems,
|
|
152
|
+
validItems,
|
|
153
|
+
itemsWithIssues,
|
|
154
|
+
uniqueTexts,
|
|
155
|
+
emptyCount: emptyText.length,
|
|
156
|
+
duplicateCount,
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
return { valid: validSnapshot, meta };
|
|
160
|
+
}
|
|
161
|
+
// ========================================
|
|
162
|
+
// Build with Meta
|
|
163
|
+
// ========================================
|
|
164
|
+
/**
|
|
165
|
+
* Build text dist + meta from raw snapshot
|
|
166
|
+
* Returns both the valid text items (dist) and QA metadata (issues/warnings/stats)
|
|
167
|
+
*/
|
|
168
|
+
function buildTextWithMeta(snapshot) {
|
|
169
|
+
// Step 1: Normalize
|
|
170
|
+
const normalized = normalizeTextList(snapshot);
|
|
171
|
+
// Step 2: Validate and perform QA checks
|
|
172
|
+
const { valid, meta } = validateTextWithWarnings(normalized);
|
|
173
|
+
return {
|
|
174
|
+
text: valid,
|
|
175
|
+
meta,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
// ========================================
|
|
179
|
+
// Convenience export (without meta)
|
|
180
|
+
// ========================================
|
|
181
|
+
/**
|
|
182
|
+
* Simple normalize + validate without meta
|
|
183
|
+
* For cases where QA reports are not needed
|
|
184
|
+
*/
|
|
185
|
+
function buildTextList(snapshot) {
|
|
186
|
+
const { text } = buildTextWithMeta(snapshot);
|
|
187
|
+
return text;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,11 @@ export { buildThemeTokens, buildThemeTokensWithMeta, writeThemeTokens, } from ".
|
|
|
2
2
|
export { normalize, normalizeWithWarnings, normalizeFromFigmaSemantics, normalizeFromFigmaPlugin, normalizeFromFigmaPluginMulti, detectInputFormat, } from "./core/normalize";
|
|
3
3
|
export { validateMapping, formatValidationErrors, printValidationErrors, } from "./core/validate";
|
|
4
4
|
export { normalizeComponents, validateComponentsWithWarnings, buildComponents, buildComponentsWithMeta, } from "./core/components";
|
|
5
|
+
export { normalizeTextList, validateTextWithWarnings, buildTextList, buildTextWithMeta, } from "./core/text";
|
|
5
6
|
export { loadFigmaVariables, validateFigmaVariables } from "./adapters/figma";
|
|
6
7
|
export type { ThemeTokens, TokenMeta, RawTokenTree, RawTokenNode, RawTokenLeaf, RawTokenType, RawTokenSource, FigmaVariableAlias, FigmaSemanticsJson, FigmaPluginJson, FigmaPluginMultiJson, TokenInputJson, Mapping, BuildOptions, ValidationIssue, ValidationResult, } from "./core/schema";
|
|
7
8
|
export type { ComponentSnapshot, ComponentItem, ComponentVariant, ComponentMeta, } from "./core/schema";
|
|
9
|
+
export type { TextSnapshot, TextItem, TextMeta, } from "./core/schema";
|
|
8
10
|
export type { InputFormat } from "./core/normalize";
|
|
9
11
|
export type { MappingValidationError } from "./core/validate";
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,eAAe,EACf,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,OAAO,EACP,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,eAAe,EACf,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,OAAO,EACP,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// @stilhq/core - Main entry point
|
|
3
3
|
// 公開APIはここからのみ提供(深いパスimport禁止)
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.validateFigmaVariables = exports.loadFigmaVariables = exports.buildComponentsWithMeta = exports.buildComponents = exports.validateComponentsWithWarnings = exports.normalizeComponents = exports.printValidationErrors = exports.formatValidationErrors = exports.validateMapping = exports.detectInputFormat = exports.normalizeFromFigmaPluginMulti = exports.normalizeFromFigmaPlugin = exports.normalizeFromFigmaSemantics = exports.normalizeWithWarnings = exports.normalize = exports.writeThemeTokens = exports.buildThemeTokensWithMeta = exports.buildThemeTokens = void 0;
|
|
5
|
+
exports.validateFigmaVariables = exports.loadFigmaVariables = exports.buildTextWithMeta = exports.buildTextList = exports.validateTextWithWarnings = exports.normalizeTextList = exports.buildComponentsWithMeta = exports.buildComponents = exports.validateComponentsWithWarnings = exports.normalizeComponents = exports.printValidationErrors = exports.formatValidationErrors = exports.validateMapping = exports.detectInputFormat = exports.normalizeFromFigmaPluginMulti = exports.normalizeFromFigmaPlugin = exports.normalizeFromFigmaSemantics = exports.normalizeWithWarnings = exports.normalize = exports.writeThemeTokens = exports.buildThemeTokensWithMeta = exports.buildThemeTokens = void 0;
|
|
6
6
|
// Core functions - Tokens
|
|
7
7
|
var build_1 = require("./core/build");
|
|
8
8
|
Object.defineProperty(exports, "buildThemeTokens", { enumerable: true, get: function () { return build_1.buildThemeTokens; } });
|
|
@@ -25,6 +25,12 @@ Object.defineProperty(exports, "normalizeComponents", { enumerable: true, get: f
|
|
|
25
25
|
Object.defineProperty(exports, "validateComponentsWithWarnings", { enumerable: true, get: function () { return components_1.validateComponentsWithWarnings; } });
|
|
26
26
|
Object.defineProperty(exports, "buildComponents", { enumerable: true, get: function () { return components_1.buildComponents; } });
|
|
27
27
|
Object.defineProperty(exports, "buildComponentsWithMeta", { enumerable: true, get: function () { return components_1.buildComponentsWithMeta; } });
|
|
28
|
+
// Core functions - Text
|
|
29
|
+
var text_1 = require("./core/text");
|
|
30
|
+
Object.defineProperty(exports, "normalizeTextList", { enumerable: true, get: function () { return text_1.normalizeTextList; } });
|
|
31
|
+
Object.defineProperty(exports, "validateTextWithWarnings", { enumerable: true, get: function () { return text_1.validateTextWithWarnings; } });
|
|
32
|
+
Object.defineProperty(exports, "buildTextList", { enumerable: true, get: function () { return text_1.buildTextList; } });
|
|
33
|
+
Object.defineProperty(exports, "buildTextWithMeta", { enumerable: true, get: function () { return text_1.buildTextWithMeta; } });
|
|
28
34
|
// Adapters
|
|
29
35
|
var figma_1 = require("./adapters/figma");
|
|
30
36
|
Object.defineProperty(exports, "loadFigmaVariables", { enumerable: true, get: function () { return figma_1.loadFigmaVariables; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,+BAA+B;;;AAE/B,0BAA0B;AAC1B,sCAIsB;AAHpB,yGAAA,gBAAgB,OAAA;AAChB,iHAAA,wBAAwB,OAAA;AACxB,yGAAA,gBAAgB,OAAA;AAElB,8CAO0B;AANxB,sGAAA,SAAS,OAAA;AACT,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,qHAAA,wBAAwB,OAAA;AACxB,0HAAA,6BAA6B,OAAA;AAC7B,8GAAA,iBAAiB,OAAA;AAEnB,4CAIyB;AAHvB,2GAAA,eAAe,OAAA;AACf,kHAAA,sBAAsB,OAAA;AACtB,iHAAA,qBAAqB,OAAA;AAGvB,8BAA8B;AAC9B,gDAK2B;AAJzB,iHAAA,mBAAmB,OAAA;AACnB,4HAAA,8BAA8B,OAAA;AAC9B,6GAAA,eAAe,OAAA;AACf,qHAAA,uBAAuB,OAAA;AAGzB,WAAW;AACX,0CAA8E;AAArE,2GAAA,kBAAkB,OAAA;AAAE,+GAAA,sBAAsB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,+BAA+B;;;AAE/B,0BAA0B;AAC1B,sCAIsB;AAHpB,yGAAA,gBAAgB,OAAA;AAChB,iHAAA,wBAAwB,OAAA;AACxB,yGAAA,gBAAgB,OAAA;AAElB,8CAO0B;AANxB,sGAAA,SAAS,OAAA;AACT,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,qHAAA,wBAAwB,OAAA;AACxB,0HAAA,6BAA6B,OAAA;AAC7B,8GAAA,iBAAiB,OAAA;AAEnB,4CAIyB;AAHvB,2GAAA,eAAe,OAAA;AACf,kHAAA,sBAAsB,OAAA;AACtB,iHAAA,qBAAqB,OAAA;AAGvB,8BAA8B;AAC9B,gDAK2B;AAJzB,iHAAA,mBAAmB,OAAA;AACnB,4HAAA,8BAA8B,OAAA;AAC9B,6GAAA,eAAe,OAAA;AACf,qHAAA,uBAAuB,OAAA;AAGzB,wBAAwB;AACxB,oCAKqB;AAJnB,yGAAA,iBAAiB,OAAA;AACjB,gHAAA,wBAAwB,OAAA;AACxB,qGAAA,aAAa,OAAA;AACb,yGAAA,iBAAiB,OAAA;AAGnB,WAAW;AACX,0CAA8E;AAArE,2GAAA,kBAAkB,OAAA;AAAE,+GAAA,sBAAsB,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stilhq/core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Design token and
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "Design token, component, and text QA pipeline for Stil",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"keywords": [
|
|
20
20
|
"design-tokens",
|
|
21
21
|
"design-system",
|
|
22
|
-
"components"
|
|
22
|
+
"components",
|
|
23
|
+
"text-qa"
|
|
23
24
|
],
|
|
24
25
|
"author": "Tetsu",
|
|
25
26
|
"license": "BUSL-1.1",
|