@o3r/design 9.6.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +51 -0
  3. package/builders/generate-css/index.d.ts +8 -0
  4. package/builders/generate-css/index.d.ts.map +1 -0
  5. package/builders/generate-css/index.js +119 -0
  6. package/builders/generate-css/index.js.map +1 -0
  7. package/builders/generate-css/schema.d.ts +32 -0
  8. package/builders/generate-css/schema.d.ts.map +1 -0
  9. package/builders/generate-css/schema.js +3 -0
  10. package/builders/generate-css/schema.js.map +1 -0
  11. package/builders/generate-css/schema.json +68 -0
  12. package/builders/package.json +3 -0
  13. package/builders.json +10 -0
  14. package/cli/generate-css-from-design-token.cli.cjs +33 -0
  15. package/cli/generate-css-from-design-token.cli.cjs.map +1 -0
  16. package/cli/generate-css-from-design-token.cli.d.cts +3 -0
  17. package/cli/generate-css-from-design-token.cli.d.cts.map +1 -0
  18. package/collection.json +24 -0
  19. package/migration.json +5 -0
  20. package/package.json +206 -0
  21. package/schemas/design-token.schema.json +546 -0
  22. package/schematics/ extract-token/index.d.ts +8 -0
  23. package/schematics/ extract-token/index.d.ts.map +1 -0
  24. package/schematics/ extract-token/index.js +90 -0
  25. package/schematics/ extract-token/index.js.map +1 -0
  26. package/schematics/ extract-token/schema.d.ts +14 -0
  27. package/schematics/ extract-token/schema.d.ts.map +1 -0
  28. package/schematics/ extract-token/schema.js +3 -0
  29. package/schematics/ extract-token/schema.js.map +1 -0
  30. package/schematics/ extract-token/schema.json +43 -0
  31. package/schematics/generate-css/index.d.ts +8 -0
  32. package/schematics/generate-css/index.d.ts.map +1 -0
  33. package/schematics/generate-css/index.js +54 -0
  34. package/schematics/generate-css/index.js.map +1 -0
  35. package/schematics/generate-css/schema.d.ts +17 -0
  36. package/schematics/generate-css/schema.d.ts.map +1 -0
  37. package/schematics/generate-css/schema.js +3 -0
  38. package/schematics/generate-css/schema.js.map +1 -0
  39. package/schematics/generate-css/schema.json +43 -0
  40. package/schematics/ng-add/index.d.ts +7 -0
  41. package/schematics/ng-add/index.d.ts.map +1 -0
  42. package/schematics/ng-add/index.js +19 -0
  43. package/schematics/ng-add/index.js.map +1 -0
  44. package/schematics/ng-add/register-generate-css/index.d.ts +2 -0
  45. package/schematics/ng-add/register-generate-css/index.d.ts.map +1 -0
  46. package/schematics/ng-add/register-generate-css/index.js +5 -0
  47. package/schematics/ng-add/register-generate-css/index.js.map +1 -0
  48. package/schematics/ng-add/register-generate-css/register-task.d.ts +8 -0
  49. package/schematics/ng-add/register-generate-css/register-task.d.ts.map +1 -0
  50. package/schematics/ng-add/register-generate-css/register-task.js +68 -0
  51. package/schematics/ng-add/register-generate-css/register-task.js.map +1 -0
  52. package/schematics/ng-add/register-generate-css/templates/design-token.custom.json.template +3 -0
  53. package/schematics/ng-add/register-generate-css/templates/theme.scss.template +6 -0
  54. package/schematics/ng-add/schema.d.ts +6 -0
  55. package/schematics/ng-add/schema.d.ts.map +1 -0
  56. package/schematics/ng-add/schema.js +3 -0
  57. package/schematics/ng-add/schema.js.map +1 -0
  58. package/schematics/ng-add/schema.json +18 -0
  59. package/schematics/package.json +3 -0
  60. package/src/core/design-token/design-token-specification.interface.d.ts +195 -0
  61. package/src/core/design-token/design-token-specification.interface.d.ts.map +1 -0
  62. package/src/core/design-token/design-token-specification.interface.js +39 -0
  63. package/src/core/design-token/design-token-specification.interface.js.map +1 -0
  64. package/src/core/design-token/index.d.ts +4 -0
  65. package/src/core/design-token/index.d.ts.map +1 -0
  66. package/src/core/design-token/index.js +7 -0
  67. package/src/core/design-token/index.js.map +1 -0
  68. package/src/core/design-token/parsers/design-token-parser.interface.d.ts +70 -0
  69. package/src/core/design-token/parsers/design-token-parser.interface.d.ts.map +1 -0
  70. package/src/core/design-token/parsers/design-token-parser.interface.js +3 -0
  71. package/src/core/design-token/parsers/design-token-parser.interface.js.map +1 -0
  72. package/src/core/design-token/parsers/design-token.parser.d.ts +25 -0
  73. package/src/core/design-token/parsers/design-token.parser.d.ts.map +1 -0
  74. package/src/core/design-token/parsers/design-token.parser.js +143 -0
  75. package/src/core/design-token/parsers/design-token.parser.js.map +1 -0
  76. package/src/core/design-token/parsers/index.d.ts +3 -0
  77. package/src/core/design-token/parsers/index.d.ts.map +1 -0
  78. package/src/core/design-token/parsers/index.js +6 -0
  79. package/src/core/design-token/parsers/index.js.map +1 -0
  80. package/src/core/design-token/renderers/css/design-token-definition.renderers.d.ts +47 -0
  81. package/src/core/design-token/renderers/css/design-token-definition.renderers.d.ts.map +1 -0
  82. package/src/core/design-token/renderers/css/design-token-definition.renderers.js +53 -0
  83. package/src/core/design-token/renderers/css/design-token-definition.renderers.js.map +1 -0
  84. package/src/core/design-token/renderers/css/design-token-updater.renderers.d.ts +24 -0
  85. package/src/core/design-token/renderers/css/design-token-updater.renderers.d.ts.map +1 -0
  86. package/src/core/design-token/renderers/css/design-token-updater.renderers.js +29 -0
  87. package/src/core/design-token/renderers/css/design-token-updater.renderers.js.map +1 -0
  88. package/src/core/design-token/renderers/css/design-token-value.renderers.d.ts +19 -0
  89. package/src/core/design-token/renderers/css/design-token-value.renderers.d.ts.map +1 -0
  90. package/src/core/design-token/renderers/css/design-token-value.renderers.js +29 -0
  91. package/src/core/design-token/renderers/css/design-token-value.renderers.js.map +1 -0
  92. package/src/core/design-token/renderers/css/index.d.ts +4 -0
  93. package/src/core/design-token/renderers/css/index.d.ts.map +1 -0
  94. package/src/core/design-token/renderers/css/index.js +7 -0
  95. package/src/core/design-token/renderers/css/index.js.map +1 -0
  96. package/src/core/design-token/renderers/design-token-style.renderer.d.ts +25 -0
  97. package/src/core/design-token/renderers/design-token-style.renderer.d.ts.map +1 -0
  98. package/src/core/design-token/renderers/design-token-style.renderer.js +58 -0
  99. package/src/core/design-token/renderers/design-token-style.renderer.js.map +1 -0
  100. package/src/core/design-token/renderers/design-token.renderer.helpers.d.ts +8 -0
  101. package/src/core/design-token/renderers/design-token.renderer.helpers.d.ts.map +1 -0
  102. package/src/core/design-token/renderers/design-token.renderer.helpers.js +11 -0
  103. package/src/core/design-token/renderers/design-token.renderer.helpers.js.map +1 -0
  104. package/src/core/design-token/renderers/design-token.renderer.interface.d.ts +56 -0
  105. package/src/core/design-token/renderers/design-token.renderer.interface.d.ts.map +1 -0
  106. package/src/core/design-token/renderers/design-token.renderer.interface.js +3 -0
  107. package/src/core/design-token/renderers/design-token.renderer.interface.js.map +1 -0
  108. package/src/core/design-token/renderers/index.d.ts +7 -0
  109. package/src/core/design-token/renderers/index.d.ts.map +1 -0
  110. package/src/core/design-token/renderers/index.js +10 -0
  111. package/src/core/design-token/renderers/index.js.map +1 -0
  112. package/src/core/design-token/renderers/metadata/design-token-definition.renderers.d.ts +39 -0
  113. package/src/core/design-token/renderers/metadata/design-token-definition.renderers.d.ts.map +1 -0
  114. package/src/core/design-token/renderers/metadata/design-token-definition.renderers.js +41 -0
  115. package/src/core/design-token/renderers/metadata/design-token-definition.renderers.js.map +1 -0
  116. package/src/core/design-token/renderers/metadata/design-token-updater.renderers.d.ts +6 -0
  117. package/src/core/design-token/renderers/metadata/design-token-updater.renderers.d.ts.map +1 -0
  118. package/src/core/design-token/renderers/metadata/design-token-updater.renderers.js +13 -0
  119. package/src/core/design-token/renderers/metadata/design-token-updater.renderers.js.map +1 -0
  120. package/src/core/design-token/renderers/metadata/design-token-value.renderers.d.ts +18 -0
  121. package/src/core/design-token/renderers/metadata/design-token-value.renderers.d.ts.map +1 -0
  122. package/src/core/design-token/renderers/metadata/design-token-value.renderers.js +27 -0
  123. package/src/core/design-token/renderers/metadata/design-token-value.renderers.js.map +1 -0
  124. package/src/core/design-token/renderers/metadata/index.d.ts +4 -0
  125. package/src/core/design-token/renderers/metadata/index.d.ts.map +1 -0
  126. package/src/core/design-token/renderers/metadata/index.js +7 -0
  127. package/src/core/design-token/renderers/metadata/index.js.map +1 -0
  128. package/src/core/design-token/renderers/sass/design-token-definition.renderers.d.ts +23 -0
  129. package/src/core/design-token/renderers/sass/design-token-definition.renderers.d.ts.map +1 -0
  130. package/src/core/design-token/renderers/sass/design-token-definition.renderers.js +28 -0
  131. package/src/core/design-token/renderers/sass/design-token-definition.renderers.js.map +1 -0
  132. package/src/core/design-token/renderers/sass/index.d.ts +2 -0
  133. package/src/core/design-token/renderers/sass/index.d.ts.map +1 -0
  134. package/src/core/design-token/renderers/sass/index.js +5 -0
  135. package/src/core/design-token/renderers/sass/index.js.map +1 -0
  136. package/src/core/index.d.ts +2 -0
  137. package/src/core/index.d.ts.map +1 -0
  138. package/src/core/index.js +5 -0
  139. package/src/core/index.js.map +1 -0
  140. package/src/public_api.d.ts +2 -0
  141. package/src/public_api.d.ts.map +1 -0
  142. package/src/public_api.js +5 -0
  143. package/src/public_api.js.map +1 -0
@@ -0,0 +1,546 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "DesignTokenSchema",
4
+ "description": "Schema Describing the structure of the Design Token, this Schema is a temporary workaround and should be replaced by the one provided by Community-Group https://github.com/design-tokens/community-group",
5
+ "allOf": [
6
+ {
7
+ "$ref": "#/definitions/tokenNode"
8
+ }
9
+ ],
10
+ "definitions": {
11
+ "tokenNode": {
12
+ "oneOf": [
13
+ {
14
+ "$ref": "#/definitions/tokenGroup"
15
+ },
16
+ {
17
+ "$ref": "#/definitions/token"
18
+ }
19
+ ]
20
+ },
21
+ "otterExtensionMetadata": {
22
+ "type": "object",
23
+ "properties": {
24
+ "tags": {
25
+ "type": "array",
26
+ "items": { "type": "string" }
27
+ },
28
+ "label": {
29
+ "type": "string"
30
+ },
31
+ "category": {
32
+ "type": "string"
33
+ }
34
+ }
35
+ },
36
+ "otterExtension": {
37
+ "type": "object",
38
+ "properties": {
39
+ "o3rTargetFile": {
40
+ "type": "string"
41
+ },
42
+ "o3rPrivate": {
43
+ "type": "boolean"
44
+ },
45
+ "o3rImportant": {
46
+ "type": "boolean"
47
+ },
48
+ "o3rScope": {
49
+ "type": "string"
50
+ },
51
+ "o3rMetadata": {
52
+ "$ref": "#/definitions/otterExtensionMetadata"
53
+ }
54
+ }
55
+ },
56
+ "extensions": {
57
+ "type": "object",
58
+ "allOf": [
59
+ {
60
+ "$ref": "#/definitions/otterExtension"
61
+ }
62
+ ]
63
+ },
64
+ "tokenGroup": {
65
+ "type":"object",
66
+ "properties": {
67
+ "$schema": {
68
+ "type": "string"
69
+ },
70
+ "$description": {
71
+ "type": "string"
72
+ },
73
+ "$extensions": {
74
+ "$ref": "#/definitions/extensions"
75
+ }
76
+ },
77
+ "patternProperties": {
78
+ "^[^$].*$": {
79
+ "$ref": "#/definitions/tokenNode"
80
+ }
81
+ },
82
+ "additionalProperties": false
83
+ },
84
+ "token": {
85
+ "allOf": [
86
+ {
87
+ "oneOf": [
88
+ {"$ref": "#/definitions/tokenTypeImplicit"},
89
+ {"$ref": "#/definitions/tokenTypeColor"},
90
+ {"$ref": "#/definitions/tokenTypeDimension"},
91
+ {"$ref": "#/definitions/tokenTypeFontFamily"},
92
+ {"$ref": "#/definitions/tokenTypeDuration"},
93
+ {"$ref": "#/definitions/tokenTypeCubicBezier"},
94
+ {"$ref": "#/definitions/tokenTypeFontWeight"},
95
+ {"$ref": "#/definitions/tokenTypeNumber"},
96
+
97
+ {"$ref": "#/definitions/tokenTypeStrokeStyle"},
98
+ {"$ref": "#/definitions/tokenTypeBorder"},
99
+ {"$ref": "#/definitions/tokenTypeTransition"},
100
+ {"$ref": "#/definitions/tokenTypeShadow"},
101
+ {"$ref": "#/definitions/tokenTypeGradient"},
102
+ {"$ref": "#/definitions/tokenTypeTypography"}
103
+ ]
104
+ },
105
+ {
106
+ "type": "object",
107
+ "properties": {
108
+ "$extensions": {
109
+ "$ref": "#/definitions/extensions"
110
+ },
111
+ "$description": {
112
+ "type": "string"
113
+ }
114
+ }
115
+ }
116
+ ]
117
+ },
118
+
119
+ "tokenTypeColor": {
120
+ "type": "object",
121
+ "required": [
122
+ "$type",
123
+ "$value"
124
+ ],
125
+ "properties": {
126
+ "$value": {
127
+ "type": "string"
128
+ },
129
+ "$type": {
130
+ "const": "color",
131
+ "type": "string"
132
+ }
133
+ }
134
+ },
135
+ "tokenTypeDimension": {
136
+ "type": "object",
137
+ "required": [
138
+ "$type",
139
+ "$value"
140
+ ],
141
+ "properties": {
142
+ "$value": {
143
+ "type": "string"
144
+ },
145
+ "$type": {
146
+ "const": "dimension",
147
+ "type": "string"
148
+ }
149
+ }
150
+ },
151
+ "tokenTypeFontFamily": {
152
+ "type": "object",
153
+ "required": [
154
+ "$type",
155
+ "primary"
156
+ ],
157
+ "allOf": [
158
+ {
159
+ "oneOf": [
160
+ {
161
+ "type": "object",
162
+ "properties": {
163
+ "$value": {
164
+ "type": "string"
165
+ }
166
+ }
167
+ },
168
+ {
169
+ "type": "object",
170
+ "required": ["primary"],
171
+ "properties": {
172
+ "primary": {
173
+ "type": "object",
174
+ "required": [
175
+ "$value"
176
+ ],
177
+ "properties": {
178
+ "$value": {
179
+ "type": "string"
180
+ }
181
+ }
182
+ },
183
+ "secondary": {
184
+ "type": "object",
185
+ "required": [
186
+ "$type"
187
+ ],
188
+ "properties": {
189
+ "$value": {
190
+ "type": "string"
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ ]
197
+ },
198
+ {
199
+ "type": "object",
200
+ "properties": {
201
+ "$type": {
202
+ "const": "fontFamily",
203
+ "type": "string"
204
+ }
205
+ }
206
+ }
207
+ ]
208
+ },
209
+ "tokenTypeImplicit": {
210
+ "type": "object",
211
+ "required": [
212
+ "$value"
213
+ ],
214
+ "properties": {
215
+ "$value": {
216
+ "type": "string",
217
+ "pattern": "^.*\\{.*\\}.*$"
218
+ },
219
+ "$type": {
220
+ "not": {}
221
+ }
222
+ }
223
+ },
224
+ "tokenTypeDuration": {
225
+ "type": "object",
226
+ "required": [
227
+ "$type",
228
+ "$value"
229
+ ],
230
+ "properties": {
231
+ "$value": {
232
+ "type": "number"
233
+ },
234
+ "$type": {
235
+ "const": "duration",
236
+ "type": "string"
237
+ }
238
+ }
239
+ },
240
+ "tokenTypeCubicBezierValue": {
241
+ "type": "array",
242
+ "minItems": 2,
243
+ "maxItems": 4,
244
+ "items": {
245
+ "type": "number"
246
+ }
247
+ },
248
+ "tokenTypeCubicBezier": {
249
+ "type": "object",
250
+ "required": [
251
+ "$type",
252
+ "$value"
253
+ ],
254
+ "properties": {
255
+ "$value": {
256
+ "$ref": "#/definitions/tokenTypeCubicBezierValue"
257
+ },
258
+ "$type": {
259
+ "const": "cubicBezier",
260
+ "type": "string"
261
+ }
262
+ }
263
+ },
264
+ "tokenTypeFontWeightValue": {
265
+ "oneOf": [
266
+ {
267
+ "type": "number"
268
+ },
269
+ {
270
+ "type": "string"
271
+ }
272
+ ]
273
+ },
274
+ "tokenTypeFontWeight": {
275
+ "type": "object",
276
+ "required": [
277
+ "$type",
278
+ "$value"
279
+ ],
280
+ "properties": {
281
+ "$value": {
282
+ "$ref": "#/definitions/tokenTypeFontWeightValue"
283
+ },
284
+ "$type": {
285
+ "const": "fontWeight",
286
+ "type": "string"
287
+ }
288
+ }
289
+ },
290
+ "tokenTypeNumber": {
291
+ "type": "object",
292
+ "required": [
293
+ "$type",
294
+ "$value"
295
+ ],
296
+ "properties": {
297
+ "$value": {
298
+ "type": "number"
299
+ },
300
+ "$type": {
301
+ "const": "number",
302
+ "type": "string"
303
+ }
304
+ }
305
+ },
306
+
307
+ "tokenTypeStrokeStyleValue": {
308
+ "oneOf": [
309
+ {
310
+ "type": "string",
311
+ "enum": [
312
+ "solid",
313
+ "dashed",
314
+ "dotted",
315
+ "double",
316
+ "groove",
317
+ "ridge",
318
+ "outset",
319
+ "inset"
320
+ ]
321
+ },
322
+ {
323
+ "type": "object",
324
+ "properties": {
325
+ "dashArray": {
326
+ "type": "array",
327
+ "minItems": 1,
328
+ "maxItems": 4,
329
+ "items": {
330
+ "type": "string"
331
+ }
332
+ },
333
+ "lineCap": {
334
+ "type": "string",
335
+ "enum": [
336
+ "round",
337
+ "butt",
338
+ "square"
339
+ ]
340
+ }
341
+ },
342
+ "required": [
343
+ "dashArray",
344
+ "lineCap"
345
+ ]
346
+ }
347
+ ]
348
+ },
349
+ "tokenTypeStrokeStyle": {
350
+ "type": "object",
351
+ "required": [
352
+ "$type",
353
+ "$value"
354
+ ],
355
+ "properties": {
356
+ "$value": {
357
+ "$ref": "#/definitions/tokenTypeStrokeStyleValue"
358
+ },
359
+ "$type": {
360
+ "const": "strokeStyle",
361
+ "type": "string"
362
+ }
363
+ }
364
+ },
365
+ "tokenTypeBorder": {
366
+ "type": "object",
367
+ "required": [
368
+ "$type",
369
+ "$value"
370
+ ],
371
+ "properties": {
372
+ "$value": {
373
+ "type": "object",
374
+ "properties": {
375
+ "color": { "type": "string" },
376
+ "width": { "type": "string" },
377
+ "style": {
378
+ "allOf": [
379
+ { "$ref": "#/definitions/tokenTypeStrokeStyleValue" },
380
+ { "type": "string" }
381
+ ]
382
+ }
383
+ },
384
+ "required": [
385
+ "color",
386
+ "width",
387
+ "style"
388
+ ]
389
+ },
390
+ "$type": {
391
+ "const": "border",
392
+ "type": "string"
393
+ }
394
+ }
395
+ },
396
+ "tokenTypeTransition": {
397
+ "type": "object",
398
+ "required": [
399
+ "$type",
400
+ "$value"
401
+ ],
402
+ "properties": {
403
+ "$value": {
404
+ "type": "object",
405
+ "properties": {
406
+ "duration": {
407
+ "type": "string"
408
+ },
409
+ "delay": {
410
+ "type": "string"
411
+ },
412
+ "timingFunction": {
413
+ "allOf": [
414
+ { "$ref": "#/definitions/tokenTypeCubicBezierValue" },
415
+ { "type": "string" }
416
+ ]
417
+ }
418
+ },
419
+ "required": [
420
+ "duration",
421
+ "delay",
422
+ "timingFunction"
423
+ ]
424
+ },
425
+ "$type": {
426
+ "const": "transition",
427
+ "type": "string"
428
+ }
429
+ }
430
+ },
431
+ "tokenTypeShadow": {
432
+ "type": "object",
433
+ "required": [
434
+ "$type",
435
+ "$value"
436
+ ],
437
+ "properties": {
438
+ "$value": {
439
+ "type": "object",
440
+ "properties": {
441
+ "color": {
442
+ "type": "string"
443
+ },
444
+ "offsetX": {
445
+ "type": "string"
446
+ },
447
+ "offsetY": {
448
+ "type": "string"
449
+ },
450
+ "blur": {
451
+ "type": "string"
452
+ },
453
+ "spread": {
454
+ "type": "string"
455
+ }
456
+ },
457
+ "required": [
458
+ "color",
459
+ "offsetX",
460
+ "offsetY",
461
+ "blur",
462
+ "spread"
463
+ ]
464
+ },
465
+ "$type": {
466
+ "const": "shadow",
467
+ "type": "string"
468
+ }
469
+ }
470
+ },
471
+ "tokenTypeGradient": {
472
+ "type": "object",
473
+ "required": [
474
+ "$type",
475
+ "$value"
476
+ ],
477
+ "properties": {
478
+ "$value": {
479
+ "type": "array",
480
+ "minItems": 1,
481
+ "items": {
482
+ "type": "object",
483
+ "properties": {
484
+ "color": { "type": "string" },
485
+ "position": {
486
+ "oneOf": [
487
+ { "type": "string" },
488
+ {
489
+ "type": "number",
490
+ "maximum": 1,
491
+ "minimum": 0
492
+ }
493
+ ]
494
+ }
495
+ },
496
+ "required": [
497
+ "color",
498
+ "position"
499
+ ]
500
+ }
501
+ },
502
+ "$type": {
503
+ "const": "gradient",
504
+ "type": "string"
505
+ }
506
+ }
507
+ },
508
+ "tokenTypeTypography": {
509
+ "type": "object",
510
+ "required": [
511
+ "$type",
512
+ "$value"
513
+ ],
514
+ "properties": {
515
+ "$value": {
516
+ "type": "object",
517
+ "properties": {
518
+ "fontFamily": { "type": "string" },
519
+ "fontSize": { "type": "string" },
520
+ "letterSpacing": { "type": "string" },
521
+ "fontWeight": {
522
+ "$ref": "#/definitions/tokenTypeFontWeightValue"
523
+ },
524
+ "lineHeight": {
525
+ "oneOf": [
526
+ { "type": "string" },
527
+ { "type": "number" }
528
+ ]
529
+ }
530
+ },
531
+ "required": [
532
+ "fontFamily",
533
+ "fontSize",
534
+ "letterSpacing",
535
+ "fontWeight",
536
+ "lineHeight"
537
+ ]
538
+ },
539
+ "$type": {
540
+ "const": "typography",
541
+ "type": "string"
542
+ }
543
+ }
544
+ }
545
+ }
546
+ }
@@ -0,0 +1,8 @@
1
+ import type { Rule } from '@angular-devkit/schematics';
2
+ import type { ExtractTokenSchematicsSchema } from './schema';
3
+ /**
4
+ * Extract the token from o3r mixin sass file
5
+ * @param options
6
+ */
7
+ export declare function extractToken(options: ExtractTokenSchematicsSchema): Rule;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ extract-token/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAM7D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CA0FxE"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractToken = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const public_api_1 = require("../../src/public_api");
6
+ const patternToDetect = 'o3r.var';
7
+ /**
8
+ * Extract the token from o3r mixin sass file
9
+ * @param options
10
+ */
11
+ function extractToken(options) {
12
+ const updateFileContent = (content) => {
13
+ const start = content.indexOf(patternToDetect);
14
+ const end = content.lastIndexOf(patternToDetect);
15
+ if (start === -1 || !options.includeTags) {
16
+ return content;
17
+ }
18
+ const startTag = typeof options.includeTags === 'boolean' ? public_api_1.AUTO_GENERATED_START : options.includeTags.startTag;
19
+ const endTag = typeof options.includeTags === 'boolean' ? public_api_1.AUTO_GENERATED_END : options.includeTags.endTag;
20
+ const indexToInsertStart = content.substring(0, start).lastIndexOf('\n') + 1;
21
+ const indexToInsertEnd = content.substring(end).indexOf('\n') + end + 1;
22
+ return `${content.substring(0, indexToInsertStart)}${startTag}\n` +
23
+ content.substring(indexToInsertStart, indexToInsertEnd) +
24
+ `${endTag}\n${content.substring(indexToInsertEnd)}`;
25
+ };
26
+ return async (tree, context) => {
27
+ try {
28
+ // eslint-disable-next-line @typescript-eslint/naming-convention
29
+ const { CssVariableExtractor } = await Promise.resolve().then(() => require('@o3r/styling/builders/style-extractor/helpers'));
30
+ const { filter } = await Promise.resolve().then(() => require('minimatch'));
31
+ const filterFunctions = options.componentFilePatterns.map((pattern) => filter('/' + pattern.replace(/[\\/]+/g, '/'), { dot: true }));
32
+ const sassParser = new CssVariableExtractor();
33
+ tree.visit((file) => {
34
+ if (!filterFunctions.some((filterFunction) => filterFunction(file))) {
35
+ return;
36
+ }
37
+ const content = tree.readText(file);
38
+ const variables = sassParser.extractFileContent((0, node_path_1.resolve)(tree.root.path, file), content);
39
+ if (variables.length > 0 && options.includeTags) {
40
+ const newContent = updateFileContent(content);
41
+ tree.overwrite(file, newContent);
42
+ }
43
+ const isPrivate = file.endsWith('theme.scss');
44
+ const tokenSpecification = variables
45
+ .reduce((node, variable) => {
46
+ const namePath = variable.name.split('-');
47
+ let targetNode = node;
48
+ namePath.forEach((name) => {
49
+ targetNode[name] ||= {};
50
+ targetNode = targetNode[name];
51
+ });
52
+ const valueWithVariable = [...variable.defaultValue.matchAll(/var\(--([^)])\)/g)]
53
+ .reduce((acc, [variableString, variableName]) => {
54
+ return acc.replaceAll(variableString, `{${variableName.replaceAll('-', '.')}}`);
55
+ }, variable.defaultValue);
56
+ const targetNodeValue = targetNode;
57
+ targetNodeValue.$description = variable.description;
58
+ targetNodeValue.$type = !variable.type || variable.type === 'string' ?
59
+ (isNaN(+variable.defaultValue) ? undefined : 'number') :
60
+ variable.type;
61
+ targetNodeValue.$value = targetNodeValue.$type === 'number' ?
62
+ +variable.defaultValue :
63
+ valueWithVariable;
64
+ targetNodeValue.$extensions ||= {};
65
+ targetNodeValue.$extensions.o3rMetadata ||= {};
66
+ targetNodeValue.$extensions.o3rMetadata.category = variable.category;
67
+ targetNodeValue.$extensions.o3rMetadata.label = variable.label;
68
+ targetNodeValue.$extensions.o3rMetadata.tags = variable.tags;
69
+ return node;
70
+ }, {});
71
+ Object.values(tokenSpecification)
72
+ .forEach((node) => {
73
+ const designTokenNode = node;
74
+ designTokenNode.$extensions ||= {};
75
+ designTokenNode.$extensions.o3rPrivate = isPrivate;
76
+ designTokenNode.$extensions.o3rTargetFile = node_path_1.posix.join('.', node_path_1.posix.basename(file));
77
+ });
78
+ tree.create(file.replace(/\.scss$/, '.json'), JSON.stringify(tokenSpecification, null, 2));
79
+ });
80
+ return () => tree;
81
+ }
82
+ catch (e) {
83
+ context.logger.warn('The following dependencies should be provided to the extract-token schematics: "@o3r/styling", "minimatch".');
84
+ context.logger.warn('The extraction will stop, it can be re-run with the schematic "@o3r/design:extract-token".');
85
+ context.logger.debug(JSON.stringify(e));
86
+ }
87
+ };
88
+ }
89
+ exports.extractToken = extractToken;
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/ extract-token/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { SchematicOptionObject } from '@o3r/schematics';
2
+ export interface ExtractTokenSchematicsSchema extends SchematicOptionObject {
3
+ /**
4
+ * Include the tags in the original Sass file
5
+ * @default true
6
+ */
7
+ includeTags?: boolean | {
8
+ startTag: string;
9
+ endTag: string;
10
+ };
11
+ /** List of file pattern of component theme files */
12
+ componentFilePatterns: string[];
13
+ }
14
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../schematics/ extract-token/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7D,oDAAoD;IACpD,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../schematics/ extract-token/schema.ts"],"names":[],"mappings":""}