@ankhorage/contracts 22.6.0 → 22.8.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ankhorage/contracts
2
2
 
3
+ ## 22.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c8c704f: Publish the canonical ThemeConfig structure root for descriptor-driven Theme authoring.
8
+
9
+ ## 22.7.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 37357e8: Publish the canonical auth profile structure root for descriptor-driven Studio authoring.
14
+
3
15
  ## 22.6.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/contracts
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v22.6.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v22.8.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Serializable app, action, theme, auth, and secret-store contracts for Ankhorage.
9
9
 
@@ -1,15 +1,17 @@
1
1
  export declare const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = "6.0.3";
2
- export declare const STRUCTURE_DESCRIPTOR_FINGERPRINT = "sha256:db74dd377c1c232f419635a81953cc2da6da0ddcb96705d9fe0a74e2ba4d2751";
2
+ export declare const STRUCTURE_DESCRIPTOR_FINGERPRINT = "sha256:d2882eabc38f05f7921e781c529032ba3392c2d74ec8e3ce245c275413e7da49";
3
3
  export declare const STRUCTURE_DESCRIPTOR: {
4
4
  readonly protocolVersion: 1;
5
5
  readonly packageName: "@ankhorage/contracts";
6
- readonly packageVersion: "22.5.1";
6
+ readonly packageVersion: "22.7.0";
7
7
  readonly roots: {
8
8
  readonly "auth-flow": "AuthFlowConfig";
9
+ readonly "auth-profile": "AuthProfileSpec";
9
10
  readonly "auth-sign-in": "AuthSignInSpec";
10
11
  readonly "auth-sign-up": "AuthSignUpSpec";
11
12
  readonly "screen-metadata": "ScreenMetadataSpec";
12
13
  readonly "screen-requirements": "ScreenRequirements";
14
+ readonly "theme-config": "ThemeConfig";
13
15
  };
14
16
  readonly descriptors: {
15
17
  readonly AuthFlowConfig: {
@@ -67,6 +69,58 @@ export declare const STRUCTURE_DESCRIPTOR: {
67
69
  };
68
70
  };
69
71
  };
72
+ readonly AuthProfileField: {
73
+ readonly id: "AuthProfileField";
74
+ readonly descriptor: {
75
+ readonly kind: "scalar";
76
+ readonly type: "string";
77
+ };
78
+ };
79
+ readonly AuthProfileSpec: {
80
+ readonly id: "AuthProfileSpec";
81
+ readonly descriptor: {
82
+ readonly kind: "object";
83
+ readonly fields: {
84
+ readonly createStrategy: {
85
+ readonly value: {
86
+ readonly kind: "enum";
87
+ readonly values: readonly ["api", "app", "trigger"];
88
+ };
89
+ readonly optional: true;
90
+ };
91
+ readonly fields: {
92
+ readonly value: {
93
+ readonly kind: "ordered-list";
94
+ readonly item: {
95
+ readonly kind: "ref";
96
+ readonly id: "AuthProfileField";
97
+ };
98
+ };
99
+ };
100
+ readonly primaryKey: {
101
+ readonly value: {
102
+ readonly kind: "enum";
103
+ readonly values: readonly ["authUserId"];
104
+ };
105
+ readonly optional: true;
106
+ };
107
+ readonly table: {
108
+ readonly value: {
109
+ readonly kind: "scalar";
110
+ readonly type: "string";
111
+ };
112
+ readonly optional: true;
113
+ };
114
+ readonly updateStrategy: {
115
+ readonly value: {
116
+ readonly kind: "enum";
117
+ readonly values: readonly ["api", "app"];
118
+ };
119
+ readonly optional: true;
120
+ };
121
+ };
122
+ };
123
+ };
70
124
  readonly AuthSignInSpec: {
71
125
  readonly id: "AuthSignInSpec";
72
126
  readonly descriptor: {
@@ -187,6 +241,246 @@ export declare const STRUCTURE_DESCRIPTOR: {
187
241
  };
188
242
  };
189
243
  };
244
+ readonly ThemeConfig: {
245
+ readonly id: "ThemeConfig";
246
+ readonly descriptor: {
247
+ readonly kind: "object";
248
+ readonly fields: {
249
+ readonly dark: {
250
+ readonly value: {
251
+ readonly kind: "ref";
252
+ readonly id: "ThemeModeConfig";
253
+ };
254
+ };
255
+ readonly id: {
256
+ readonly value: {
257
+ readonly kind: "scalar";
258
+ readonly type: "string";
259
+ };
260
+ };
261
+ readonly light: {
262
+ readonly value: {
263
+ readonly kind: "ref";
264
+ readonly id: "ThemeModeConfig";
265
+ };
266
+ };
267
+ readonly name: {
268
+ readonly value: {
269
+ readonly kind: "scalar";
270
+ readonly type: "string";
271
+ };
272
+ };
273
+ readonly recipes: {
274
+ readonly value: {
275
+ readonly kind: "ref";
276
+ readonly id: "ThemeRecipeOverrides";
277
+ };
278
+ readonly optional: true;
279
+ };
280
+ readonly tokens: {
281
+ readonly value: {
282
+ readonly kind: "ref";
283
+ readonly id: "ThemeGlobalTokenOverrides";
284
+ };
285
+ readonly optional: true;
286
+ };
287
+ };
288
+ };
289
+ };
290
+ readonly ThemeGlobalTokenOverrides: {
291
+ readonly id: "ThemeGlobalTokenOverrides";
292
+ readonly descriptor: {
293
+ readonly kind: "object";
294
+ readonly fields: {
295
+ readonly radii: {
296
+ readonly value: {
297
+ readonly kind: "value-map";
298
+ readonly key: {
299
+ readonly kind: "scalar";
300
+ readonly type: "string";
301
+ };
302
+ readonly value: {
303
+ readonly kind: "scalar";
304
+ readonly type: "number";
305
+ };
306
+ };
307
+ readonly optional: true;
308
+ };
309
+ readonly shadows: {
310
+ readonly value: {
311
+ readonly kind: "value-map";
312
+ readonly key: {
313
+ readonly kind: "scalar";
314
+ readonly type: "string";
315
+ };
316
+ readonly value: {
317
+ readonly kind: "scalar";
318
+ readonly type: "number";
319
+ };
320
+ };
321
+ readonly optional: true;
322
+ };
323
+ readonly spacing: {
324
+ readonly value: {
325
+ readonly kind: "value-map";
326
+ readonly key: {
327
+ readonly kind: "scalar";
328
+ readonly type: "string";
329
+ };
330
+ readonly value: {
331
+ readonly kind: "scalar";
332
+ readonly type: "number";
333
+ };
334
+ };
335
+ readonly optional: true;
336
+ };
337
+ readonly typography: {
338
+ readonly value: {
339
+ readonly kind: "ref";
340
+ readonly id: "ThemeTypographyTokenOverrides";
341
+ };
342
+ readonly optional: true;
343
+ };
344
+ };
345
+ };
346
+ };
347
+ readonly ThemeModeConfig: {
348
+ readonly id: "ThemeModeConfig";
349
+ readonly descriptor: {
350
+ readonly kind: "object";
351
+ readonly fields: {
352
+ readonly harmony: {
353
+ readonly value: {
354
+ readonly kind: "enum";
355
+ readonly values: readonly ["analogous", "complementary", "monochromatic", "splitComplementary", "square", "tetradic", "triadic"];
356
+ };
357
+ };
358
+ readonly primaryColor: {
359
+ readonly value: {
360
+ readonly kind: "scalar";
361
+ readonly type: "string";
362
+ };
363
+ };
364
+ };
365
+ };
366
+ };
367
+ readonly ThemeRecipeOverrides: {
368
+ readonly id: "ThemeRecipeOverrides";
369
+ readonly descriptor: {
370
+ readonly kind: "object";
371
+ readonly fields: {
372
+ readonly components: {
373
+ readonly value: {
374
+ readonly kind: "value-map";
375
+ readonly key: {
376
+ readonly kind: "scalar";
377
+ readonly type: "string";
378
+ };
379
+ readonly value: {
380
+ readonly kind: "ref";
381
+ readonly packageName: "typescript";
382
+ readonly id: "Readonly";
383
+ };
384
+ };
385
+ readonly optional: true;
386
+ };
387
+ readonly patterns: {
388
+ readonly value: {
389
+ readonly kind: "value-map";
390
+ readonly key: {
391
+ readonly kind: "scalar";
392
+ readonly type: "string";
393
+ };
394
+ readonly value: {
395
+ readonly kind: "ref";
396
+ readonly packageName: "typescript";
397
+ readonly id: "Readonly";
398
+ };
399
+ };
400
+ readonly optional: true;
401
+ };
402
+ };
403
+ };
404
+ };
405
+ readonly ThemeTypographyHeadingOverrides: {
406
+ readonly id: "ThemeTypographyHeadingOverrides";
407
+ readonly descriptor: {
408
+ readonly kind: "object";
409
+ readonly fields: {
410
+ readonly lineHeight: {
411
+ readonly value: {
412
+ readonly kind: "scalar";
413
+ readonly type: "number";
414
+ };
415
+ readonly optional: true;
416
+ };
417
+ readonly size: {
418
+ readonly value: {
419
+ readonly kind: "scalar";
420
+ readonly type: "number";
421
+ };
422
+ readonly optional: true;
423
+ };
424
+ readonly weight: {
425
+ readonly value: {
426
+ readonly kind: "scalar";
427
+ readonly type: "string";
428
+ };
429
+ readonly optional: true;
430
+ };
431
+ };
432
+ };
433
+ };
434
+ readonly ThemeTypographyTokenOverrides: {
435
+ readonly id: "ThemeTypographyTokenOverrides";
436
+ readonly descriptor: {
437
+ readonly kind: "object";
438
+ readonly fields: {
439
+ readonly headings: {
440
+ readonly value: {
441
+ readonly kind: "value-map";
442
+ readonly key: {
443
+ readonly kind: "scalar";
444
+ readonly type: "string";
445
+ };
446
+ readonly value: {
447
+ readonly kind: "ref";
448
+ readonly id: "ThemeTypographyHeadingOverrides";
449
+ };
450
+ };
451
+ readonly optional: true;
452
+ };
453
+ readonly sizes: {
454
+ readonly value: {
455
+ readonly kind: "value-map";
456
+ readonly key: {
457
+ readonly kind: "scalar";
458
+ readonly type: "string";
459
+ };
460
+ readonly value: {
461
+ readonly kind: "scalar";
462
+ readonly type: "number";
463
+ };
464
+ };
465
+ readonly optional: true;
466
+ };
467
+ readonly weights: {
468
+ readonly value: {
469
+ readonly kind: "value-map";
470
+ readonly key: {
471
+ readonly kind: "scalar";
472
+ readonly type: "string";
473
+ };
474
+ readonly value: {
475
+ readonly kind: "scalar";
476
+ readonly type: "string";
477
+ };
478
+ };
479
+ readonly optional: true;
480
+ };
481
+ };
482
+ };
483
+ };
190
484
  };
191
485
  };
192
486
  //# sourceMappingURL=generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qCAAqC,UAAU,CAAC;AAC7D,eAAO,MAAM,gCAAgC,4EAA4E,CAAC;AAE1H,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqNe,CAAC"}
1
+ {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qCAAqC,UAAU,CAAC;AAC7D,eAAO,MAAM,gCAAgC,4EAA4E,CAAC;AAE1H,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4gBe,CAAC"}
@@ -1,15 +1,17 @@
1
1
  export const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';
2
- export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:db74dd377c1c232f419635a81953cc2da6da0ddcb96705d9fe0a74e2ba4d2751';
2
+ export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:d2882eabc38f05f7921e781c529032ba3392c2d74ec8e3ce245c275413e7da49';
3
3
  export const STRUCTURE_DESCRIPTOR = {
4
4
  "protocolVersion": 1,
5
5
  "packageName": "@ankhorage/contracts",
6
- "packageVersion": "22.5.1",
6
+ "packageVersion": "22.7.0",
7
7
  "roots": {
8
8
  "auth-flow": "AuthFlowConfig",
9
+ "auth-profile": "AuthProfileSpec",
9
10
  "auth-sign-in": "AuthSignInSpec",
10
11
  "auth-sign-up": "AuthSignUpSpec",
11
12
  "screen-metadata": "ScreenMetadataSpec",
12
- "screen-requirements": "ScreenRequirements"
13
+ "screen-requirements": "ScreenRequirements",
14
+ "theme-config": "ThemeConfig"
13
15
  },
14
16
  "descriptors": {
15
17
  "AuthFlowConfig": {
@@ -67,6 +69,67 @@ export const STRUCTURE_DESCRIPTOR = {
67
69
  }
68
70
  }
69
71
  },
72
+ "AuthProfileField": {
73
+ "id": "AuthProfileField",
74
+ "descriptor": {
75
+ "kind": "scalar",
76
+ "type": "string"
77
+ }
78
+ },
79
+ "AuthProfileSpec": {
80
+ "id": "AuthProfileSpec",
81
+ "descriptor": {
82
+ "kind": "object",
83
+ "fields": {
84
+ "createStrategy": {
85
+ "value": {
86
+ "kind": "enum",
87
+ "values": [
88
+ "api",
89
+ "app",
90
+ "trigger"
91
+ ]
92
+ },
93
+ "optional": true
94
+ },
95
+ "fields": {
96
+ "value": {
97
+ "kind": "ordered-list",
98
+ "item": {
99
+ "kind": "ref",
100
+ "id": "AuthProfileField"
101
+ }
102
+ }
103
+ },
104
+ "primaryKey": {
105
+ "value": {
106
+ "kind": "enum",
107
+ "values": [
108
+ "authUserId"
109
+ ]
110
+ },
111
+ "optional": true
112
+ },
113
+ "table": {
114
+ "value": {
115
+ "kind": "scalar",
116
+ "type": "string"
117
+ },
118
+ "optional": true
119
+ },
120
+ "updateStrategy": {
121
+ "value": {
122
+ "kind": "enum",
123
+ "values": [
124
+ "api",
125
+ "app"
126
+ ]
127
+ },
128
+ "optional": true
129
+ }
130
+ }
131
+ }
132
+ },
70
133
  "AuthSignInSpec": {
71
134
  "id": "AuthSignInSpec",
72
135
  "descriptor": {
@@ -211,6 +274,254 @@ export const STRUCTURE_DESCRIPTOR = {
211
274
  }
212
275
  }
213
276
  }
277
+ },
278
+ "ThemeConfig": {
279
+ "id": "ThemeConfig",
280
+ "descriptor": {
281
+ "kind": "object",
282
+ "fields": {
283
+ "dark": {
284
+ "value": {
285
+ "kind": "ref",
286
+ "id": "ThemeModeConfig"
287
+ }
288
+ },
289
+ "id": {
290
+ "value": {
291
+ "kind": "scalar",
292
+ "type": "string"
293
+ }
294
+ },
295
+ "light": {
296
+ "value": {
297
+ "kind": "ref",
298
+ "id": "ThemeModeConfig"
299
+ }
300
+ },
301
+ "name": {
302
+ "value": {
303
+ "kind": "scalar",
304
+ "type": "string"
305
+ }
306
+ },
307
+ "recipes": {
308
+ "value": {
309
+ "kind": "ref",
310
+ "id": "ThemeRecipeOverrides"
311
+ },
312
+ "optional": true
313
+ },
314
+ "tokens": {
315
+ "value": {
316
+ "kind": "ref",
317
+ "id": "ThemeGlobalTokenOverrides"
318
+ },
319
+ "optional": true
320
+ }
321
+ }
322
+ }
323
+ },
324
+ "ThemeGlobalTokenOverrides": {
325
+ "id": "ThemeGlobalTokenOverrides",
326
+ "descriptor": {
327
+ "kind": "object",
328
+ "fields": {
329
+ "radii": {
330
+ "value": {
331
+ "kind": "value-map",
332
+ "key": {
333
+ "kind": "scalar",
334
+ "type": "string"
335
+ },
336
+ "value": {
337
+ "kind": "scalar",
338
+ "type": "number"
339
+ }
340
+ },
341
+ "optional": true
342
+ },
343
+ "shadows": {
344
+ "value": {
345
+ "kind": "value-map",
346
+ "key": {
347
+ "kind": "scalar",
348
+ "type": "string"
349
+ },
350
+ "value": {
351
+ "kind": "scalar",
352
+ "type": "number"
353
+ }
354
+ },
355
+ "optional": true
356
+ },
357
+ "spacing": {
358
+ "value": {
359
+ "kind": "value-map",
360
+ "key": {
361
+ "kind": "scalar",
362
+ "type": "string"
363
+ },
364
+ "value": {
365
+ "kind": "scalar",
366
+ "type": "number"
367
+ }
368
+ },
369
+ "optional": true
370
+ },
371
+ "typography": {
372
+ "value": {
373
+ "kind": "ref",
374
+ "id": "ThemeTypographyTokenOverrides"
375
+ },
376
+ "optional": true
377
+ }
378
+ }
379
+ }
380
+ },
381
+ "ThemeModeConfig": {
382
+ "id": "ThemeModeConfig",
383
+ "descriptor": {
384
+ "kind": "object",
385
+ "fields": {
386
+ "harmony": {
387
+ "value": {
388
+ "kind": "enum",
389
+ "values": [
390
+ "analogous",
391
+ "complementary",
392
+ "monochromatic",
393
+ "splitComplementary",
394
+ "square",
395
+ "tetradic",
396
+ "triadic"
397
+ ]
398
+ }
399
+ },
400
+ "primaryColor": {
401
+ "value": {
402
+ "kind": "scalar",
403
+ "type": "string"
404
+ }
405
+ }
406
+ }
407
+ }
408
+ },
409
+ "ThemeRecipeOverrides": {
410
+ "id": "ThemeRecipeOverrides",
411
+ "descriptor": {
412
+ "kind": "object",
413
+ "fields": {
414
+ "components": {
415
+ "value": {
416
+ "kind": "value-map",
417
+ "key": {
418
+ "kind": "scalar",
419
+ "type": "string"
420
+ },
421
+ "value": {
422
+ "kind": "ref",
423
+ "packageName": "typescript",
424
+ "id": "Readonly"
425
+ }
426
+ },
427
+ "optional": true
428
+ },
429
+ "patterns": {
430
+ "value": {
431
+ "kind": "value-map",
432
+ "key": {
433
+ "kind": "scalar",
434
+ "type": "string"
435
+ },
436
+ "value": {
437
+ "kind": "ref",
438
+ "packageName": "typescript",
439
+ "id": "Readonly"
440
+ }
441
+ },
442
+ "optional": true
443
+ }
444
+ }
445
+ }
446
+ },
447
+ "ThemeTypographyHeadingOverrides": {
448
+ "id": "ThemeTypographyHeadingOverrides",
449
+ "descriptor": {
450
+ "kind": "object",
451
+ "fields": {
452
+ "lineHeight": {
453
+ "value": {
454
+ "kind": "scalar",
455
+ "type": "number"
456
+ },
457
+ "optional": true
458
+ },
459
+ "size": {
460
+ "value": {
461
+ "kind": "scalar",
462
+ "type": "number"
463
+ },
464
+ "optional": true
465
+ },
466
+ "weight": {
467
+ "value": {
468
+ "kind": "scalar",
469
+ "type": "string"
470
+ },
471
+ "optional": true
472
+ }
473
+ }
474
+ }
475
+ },
476
+ "ThemeTypographyTokenOverrides": {
477
+ "id": "ThemeTypographyTokenOverrides",
478
+ "descriptor": {
479
+ "kind": "object",
480
+ "fields": {
481
+ "headings": {
482
+ "value": {
483
+ "kind": "value-map",
484
+ "key": {
485
+ "kind": "scalar",
486
+ "type": "string"
487
+ },
488
+ "value": {
489
+ "kind": "ref",
490
+ "id": "ThemeTypographyHeadingOverrides"
491
+ }
492
+ },
493
+ "optional": true
494
+ },
495
+ "sizes": {
496
+ "value": {
497
+ "kind": "value-map",
498
+ "key": {
499
+ "kind": "scalar",
500
+ "type": "string"
501
+ },
502
+ "value": {
503
+ "kind": "scalar",
504
+ "type": "number"
505
+ }
506
+ },
507
+ "optional": true
508
+ },
509
+ "weights": {
510
+ "value": {
511
+ "kind": "value-map",
512
+ "key": {
513
+ "kind": "scalar",
514
+ "type": "string"
515
+ },
516
+ "value": {
517
+ "kind": "scalar",
518
+ "type": "string"
519
+ }
520
+ },
521
+ "optional": true
522
+ }
523
+ }
524
+ }
214
525
  }
215
526
  }
216
527
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* This file is generated by @ankhorage/devtools. Do not edit manually. */\nimport type { StructureDescriptorDocument } from '@ankhorage/contracts/structure';\n\nexport const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';\nexport const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:db74dd377c1c232f419635a81953cc2da6da0ddcb96705d9fe0a74e2ba4d2751';\n\nexport const STRUCTURE_DESCRIPTOR = {\n \"protocolVersion\": 1,\n \"packageName\": \"@ankhorage/contracts\",\n \"packageVersion\": \"22.5.1\",\n \"roots\": {\n \"auth-flow\": \"AuthFlowConfig\",\n \"auth-sign-in\": \"AuthSignInSpec\",\n \"auth-sign-up\": \"AuthSignUpSpec\",\n \"screen-metadata\": \"ScreenMetadataSpec\",\n \"screen-requirements\": \"ScreenRequirements\"\n },\n \"descriptors\": {\n \"AuthFlowConfig\": {\n \"id\": \"AuthFlowConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"forgotPasswordRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"otpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"postSignInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signOutRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"signUpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"unauthorizedRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthSignInSpec\": {\n \"id\": \"AuthSignInSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"identifiers\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"enum\",\n \"values\": [\n \"email\",\n \"phone\",\n \"username\"\n ]\n }\n }\n }\n }\n }\n },\n \"AuthSignUpField\": {\n \"id\": \"AuthSignUpField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthSignUpSpec\": {\n \"id\": \"AuthSignUpSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"optionalFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n },\n \"optional\": true\n },\n \"requiredFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n }\n },\n \"signUpPolicy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"autoSignIn\",\n \"requireVerification\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenMetadataSpec\": {\n \"id\": \"ScreenMetadataSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"description\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"title\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenRequirements\": {\n \"id\": \"ScreenRequirements\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"capabilities\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"barcodeScanner\",\n \"cameraPreview\",\n \"clipboard\",\n \"ebookReader\",\n \"filePicker\",\n \"location\",\n \"mediaPicker\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n },\n \"permissions\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"camera\",\n \"clipboard\",\n \"locationBackground\",\n \"locationForeground\",\n \"mediaLibrary\",\n \"mediaLibraryWrite\",\n \"microphone\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n }\n }\n }\n }\n }\n} as const satisfies StructureDescriptorDocument;\n"]}
1
+ {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* This file is generated by @ankhorage/devtools. Do not edit manually. */\nimport type { StructureDescriptorDocument } from '@ankhorage/contracts/structure';\n\nexport const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';\nexport const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:d2882eabc38f05f7921e781c529032ba3392c2d74ec8e3ce245c275413e7da49';\n\nexport const STRUCTURE_DESCRIPTOR = {\n \"protocolVersion\": 1,\n \"packageName\": \"@ankhorage/contracts\",\n \"packageVersion\": \"22.7.0\",\n \"roots\": {\n \"auth-flow\": \"AuthFlowConfig\",\n \"auth-profile\": \"AuthProfileSpec\",\n \"auth-sign-in\": \"AuthSignInSpec\",\n \"auth-sign-up\": \"AuthSignUpSpec\",\n \"screen-metadata\": \"ScreenMetadataSpec\",\n \"screen-requirements\": \"ScreenRequirements\",\n \"theme-config\": \"ThemeConfig\"\n },\n \"descriptors\": {\n \"AuthFlowConfig\": {\n \"id\": \"AuthFlowConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"forgotPasswordRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"otpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"postSignInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signOutRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"signUpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"unauthorizedRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthProfileField\": {\n \"id\": \"AuthProfileField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthProfileSpec\": {\n \"id\": \"AuthProfileSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"createStrategy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"api\",\n \"app\",\n \"trigger\"\n ]\n },\n \"optional\": true\n },\n \"fields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthProfileField\"\n }\n }\n },\n \"primaryKey\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"authUserId\"\n ]\n },\n \"optional\": true\n },\n \"table\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"updateStrategy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"api\",\n \"app\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthSignInSpec\": {\n \"id\": \"AuthSignInSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"identifiers\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"enum\",\n \"values\": [\n \"email\",\n \"phone\",\n \"username\"\n ]\n }\n }\n }\n }\n }\n },\n \"AuthSignUpField\": {\n \"id\": \"AuthSignUpField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthSignUpSpec\": {\n \"id\": \"AuthSignUpSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"optionalFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n },\n \"optional\": true\n },\n \"requiredFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n }\n },\n \"signUpPolicy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"autoSignIn\",\n \"requireVerification\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenMetadataSpec\": {\n \"id\": \"ScreenMetadataSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"description\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"title\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenRequirements\": {\n \"id\": \"ScreenRequirements\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"capabilities\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"barcodeScanner\",\n \"cameraPreview\",\n \"clipboard\",\n \"ebookReader\",\n \"filePicker\",\n \"location\",\n \"mediaPicker\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n },\n \"permissions\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"camera\",\n \"clipboard\",\n \"locationBackground\",\n \"locationForeground\",\n \"mediaLibrary\",\n \"mediaLibraryWrite\",\n \"microphone\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeConfig\": {\n \"id\": \"ThemeConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"dark\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeModeConfig\"\n }\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"light\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeModeConfig\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"recipes\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeRecipeOverrides\"\n },\n \"optional\": true\n },\n \"tokens\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeGlobalTokenOverrides\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeGlobalTokenOverrides\": {\n \"id\": \"ThemeGlobalTokenOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"radii\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"shadows\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"spacing\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"typography\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeTypographyTokenOverrides\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeModeConfig\": {\n \"id\": \"ThemeModeConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"harmony\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"analogous\",\n \"complementary\",\n \"monochromatic\",\n \"splitComplementary\",\n \"square\",\n \"tetradic\",\n \"triadic\"\n ]\n }\n },\n \"primaryColor\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"ThemeRecipeOverrides\": {\n \"id\": \"ThemeRecipeOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"components\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"packageName\": \"typescript\",\n \"id\": \"Readonly\"\n }\n },\n \"optional\": true\n },\n \"patterns\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"packageName\": \"typescript\",\n \"id\": \"Readonly\"\n }\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeTypographyHeadingOverrides\": {\n \"id\": \"ThemeTypographyHeadingOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"lineHeight\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n },\n \"optional\": true\n },\n \"size\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n },\n \"optional\": true\n },\n \"weight\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeTypographyTokenOverrides\": {\n \"id\": \"ThemeTypographyTokenOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"headings\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeTypographyHeadingOverrides\"\n }\n },\n \"optional\": true\n },\n \"sizes\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"weights\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"optional\": true\n }\n }\n }\n }\n }\n} as const satisfies StructureDescriptorDocument;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/contracts",
3
- "version": "22.6.0",
3
+ "version": "22.8.0",
4
4
  "main": "./dist/index.js",
5
5
  "ankh": {
6
6
  "category": "contracts",
@@ -15,6 +15,10 @@
15
15
  "source": "src/auth.ts",
16
16
  "export": "AuthFlowConfig"
17
17
  },
18
+ "auth-profile": {
19
+ "source": "src/types.ts",
20
+ "export": "AuthProfileSpec"
21
+ },
18
22
  "auth-sign-in": {
19
23
  "source": "src/types.ts",
20
24
  "export": "AuthSignInSpec"
@@ -30,6 +34,10 @@
30
34
  "screen-requirements": {
31
35
  "source": "src/requirements.ts",
32
36
  "export": "ScreenRequirements"
37
+ },
38
+ "theme-config": {
39
+ "source": "src/types.ts",
40
+ "export": "ThemeConfig"
33
41
  }
34
42
  }
35
43
  }
@@ -0,0 +1,50 @@
1
+ import { expect, test } from 'bun:test';
2
+
3
+ import { STRUCTURE_DESCRIPTOR } from './structure';
4
+
5
+ test('publishes AuthProfileSpec open-string field and finite strategy semantics', () => {
6
+ expect(STRUCTURE_DESCRIPTOR.roots['auth-profile']).toBe('AuthProfileSpec');
7
+ expect(STRUCTURE_DESCRIPTOR.descriptors.AuthProfileField.descriptor).toEqual({
8
+ kind: 'scalar',
9
+ type: 'string',
10
+ });
11
+ expect(STRUCTURE_DESCRIPTOR.descriptors.AuthProfileSpec.descriptor).toEqual({
12
+ kind: 'object',
13
+ fields: {
14
+ createStrategy: {
15
+ value: {
16
+ kind: 'enum',
17
+ values: ['api', 'app', 'trigger'],
18
+ },
19
+ optional: true,
20
+ },
21
+ fields: {
22
+ value: {
23
+ kind: 'ordered-list',
24
+ item: { kind: 'ref', id: 'AuthProfileField' },
25
+ },
26
+ },
27
+ primaryKey: {
28
+ value: {
29
+ kind: 'enum',
30
+ values: ['authUserId'],
31
+ },
32
+ optional: true,
33
+ },
34
+ table: {
35
+ value: {
36
+ kind: 'scalar',
37
+ type: 'string',
38
+ },
39
+ optional: true,
40
+ },
41
+ updateStrategy: {
42
+ value: {
43
+ kind: 'enum',
44
+ values: ['api', 'app'],
45
+ },
46
+ optional: true,
47
+ },
48
+ },
49
+ });
50
+ });
@@ -66,6 +66,10 @@ describe('contracts', () => {
66
66
  source: 'src/auth.ts',
67
67
  export: 'AuthFlowConfig',
68
68
  },
69
+ 'auth-profile': {
70
+ source: 'src/types.ts',
71
+ export: 'AuthProfileSpec',
72
+ },
69
73
  'auth-sign-in': {
70
74
  source: 'src/types.ts',
71
75
  export: 'AuthSignInSpec',
@@ -82,6 +86,10 @@ describe('contracts', () => {
82
86
  source: 'src/requirements.ts',
83
87
  export: 'ScreenRequirements',
84
88
  },
89
+ 'theme-config': {
90
+ source: 'src/types.ts',
91
+ export: 'ThemeConfig',
92
+ },
85
93
  },
86
94
  },
87
95
  } as const satisfies AnkhPackageMetadata;
@@ -2,18 +2,20 @@
2
2
  import type { StructureDescriptorDocument } from '@ankhorage/contracts/structure';
3
3
 
4
4
  export const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';
5
- export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:d920a086df0dc4710b27ee43b2a82967ea332de32d1ef5f4ebda1010f5f9e027';
5
+ export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:8541faa101015b7d9896bb0ebb3d0818e9fe7add2fd253bf12bfc23b6ea0e0f4';
6
6
 
7
7
  export const STRUCTURE_DESCRIPTOR = {
8
8
  "protocolVersion": 1,
9
9
  "packageName": "@ankhorage/contracts",
10
- "packageVersion": "22.6.0",
10
+ "packageVersion": "22.8.0",
11
11
  "roots": {
12
12
  "auth-flow": "AuthFlowConfig",
13
+ "auth-profile": "AuthProfileSpec",
13
14
  "auth-sign-in": "AuthSignInSpec",
14
15
  "auth-sign-up": "AuthSignUpSpec",
15
16
  "screen-metadata": "ScreenMetadataSpec",
16
- "screen-requirements": "ScreenRequirements"
17
+ "screen-requirements": "ScreenRequirements",
18
+ "theme-config": "ThemeConfig"
17
19
  },
18
20
  "descriptors": {
19
21
  "AuthFlowConfig": {
@@ -71,6 +73,67 @@ export const STRUCTURE_DESCRIPTOR = {
71
73
  }
72
74
  }
73
75
  },
76
+ "AuthProfileField": {
77
+ "id": "AuthProfileField",
78
+ "descriptor": {
79
+ "kind": "scalar",
80
+ "type": "string"
81
+ }
82
+ },
83
+ "AuthProfileSpec": {
84
+ "id": "AuthProfileSpec",
85
+ "descriptor": {
86
+ "kind": "object",
87
+ "fields": {
88
+ "createStrategy": {
89
+ "value": {
90
+ "kind": "enum",
91
+ "values": [
92
+ "api",
93
+ "app",
94
+ "trigger"
95
+ ]
96
+ },
97
+ "optional": true
98
+ },
99
+ "fields": {
100
+ "value": {
101
+ "kind": "ordered-list",
102
+ "item": {
103
+ "kind": "ref",
104
+ "id": "AuthProfileField"
105
+ }
106
+ }
107
+ },
108
+ "primaryKey": {
109
+ "value": {
110
+ "kind": "enum",
111
+ "values": [
112
+ "authUserId"
113
+ ]
114
+ },
115
+ "optional": true
116
+ },
117
+ "table": {
118
+ "value": {
119
+ "kind": "scalar",
120
+ "type": "string"
121
+ },
122
+ "optional": true
123
+ },
124
+ "updateStrategy": {
125
+ "value": {
126
+ "kind": "enum",
127
+ "values": [
128
+ "api",
129
+ "app"
130
+ ]
131
+ },
132
+ "optional": true
133
+ }
134
+ }
135
+ }
136
+ },
74
137
  "AuthSignInSpec": {
75
138
  "id": "AuthSignInSpec",
76
139
  "descriptor": {
@@ -215,6 +278,254 @@ export const STRUCTURE_DESCRIPTOR = {
215
278
  }
216
279
  }
217
280
  }
281
+ },
282
+ "ThemeConfig": {
283
+ "id": "ThemeConfig",
284
+ "descriptor": {
285
+ "kind": "object",
286
+ "fields": {
287
+ "dark": {
288
+ "value": {
289
+ "kind": "ref",
290
+ "id": "ThemeModeConfig"
291
+ }
292
+ },
293
+ "id": {
294
+ "value": {
295
+ "kind": "scalar",
296
+ "type": "string"
297
+ }
298
+ },
299
+ "light": {
300
+ "value": {
301
+ "kind": "ref",
302
+ "id": "ThemeModeConfig"
303
+ }
304
+ },
305
+ "name": {
306
+ "value": {
307
+ "kind": "scalar",
308
+ "type": "string"
309
+ }
310
+ },
311
+ "recipes": {
312
+ "value": {
313
+ "kind": "ref",
314
+ "id": "ThemeRecipeOverrides"
315
+ },
316
+ "optional": true
317
+ },
318
+ "tokens": {
319
+ "value": {
320
+ "kind": "ref",
321
+ "id": "ThemeGlobalTokenOverrides"
322
+ },
323
+ "optional": true
324
+ }
325
+ }
326
+ }
327
+ },
328
+ "ThemeGlobalTokenOverrides": {
329
+ "id": "ThemeGlobalTokenOverrides",
330
+ "descriptor": {
331
+ "kind": "object",
332
+ "fields": {
333
+ "radii": {
334
+ "value": {
335
+ "kind": "value-map",
336
+ "key": {
337
+ "kind": "scalar",
338
+ "type": "string"
339
+ },
340
+ "value": {
341
+ "kind": "scalar",
342
+ "type": "number"
343
+ }
344
+ },
345
+ "optional": true
346
+ },
347
+ "shadows": {
348
+ "value": {
349
+ "kind": "value-map",
350
+ "key": {
351
+ "kind": "scalar",
352
+ "type": "string"
353
+ },
354
+ "value": {
355
+ "kind": "scalar",
356
+ "type": "number"
357
+ }
358
+ },
359
+ "optional": true
360
+ },
361
+ "spacing": {
362
+ "value": {
363
+ "kind": "value-map",
364
+ "key": {
365
+ "kind": "scalar",
366
+ "type": "string"
367
+ },
368
+ "value": {
369
+ "kind": "scalar",
370
+ "type": "number"
371
+ }
372
+ },
373
+ "optional": true
374
+ },
375
+ "typography": {
376
+ "value": {
377
+ "kind": "ref",
378
+ "id": "ThemeTypographyTokenOverrides"
379
+ },
380
+ "optional": true
381
+ }
382
+ }
383
+ }
384
+ },
385
+ "ThemeModeConfig": {
386
+ "id": "ThemeModeConfig",
387
+ "descriptor": {
388
+ "kind": "object",
389
+ "fields": {
390
+ "harmony": {
391
+ "value": {
392
+ "kind": "enum",
393
+ "values": [
394
+ "analogous",
395
+ "complementary",
396
+ "monochromatic",
397
+ "splitComplementary",
398
+ "square",
399
+ "tetradic",
400
+ "triadic"
401
+ ]
402
+ }
403
+ },
404
+ "primaryColor": {
405
+ "value": {
406
+ "kind": "scalar",
407
+ "type": "string"
408
+ }
409
+ }
410
+ }
411
+ }
412
+ },
413
+ "ThemeRecipeOverrides": {
414
+ "id": "ThemeRecipeOverrides",
415
+ "descriptor": {
416
+ "kind": "object",
417
+ "fields": {
418
+ "components": {
419
+ "value": {
420
+ "kind": "value-map",
421
+ "key": {
422
+ "kind": "scalar",
423
+ "type": "string"
424
+ },
425
+ "value": {
426
+ "kind": "ref",
427
+ "packageName": "typescript",
428
+ "id": "Readonly"
429
+ }
430
+ },
431
+ "optional": true
432
+ },
433
+ "patterns": {
434
+ "value": {
435
+ "kind": "value-map",
436
+ "key": {
437
+ "kind": "scalar",
438
+ "type": "string"
439
+ },
440
+ "value": {
441
+ "kind": "ref",
442
+ "packageName": "typescript",
443
+ "id": "Readonly"
444
+ }
445
+ },
446
+ "optional": true
447
+ }
448
+ }
449
+ }
450
+ },
451
+ "ThemeTypographyHeadingOverrides": {
452
+ "id": "ThemeTypographyHeadingOverrides",
453
+ "descriptor": {
454
+ "kind": "object",
455
+ "fields": {
456
+ "lineHeight": {
457
+ "value": {
458
+ "kind": "scalar",
459
+ "type": "number"
460
+ },
461
+ "optional": true
462
+ },
463
+ "size": {
464
+ "value": {
465
+ "kind": "scalar",
466
+ "type": "number"
467
+ },
468
+ "optional": true
469
+ },
470
+ "weight": {
471
+ "value": {
472
+ "kind": "scalar",
473
+ "type": "string"
474
+ },
475
+ "optional": true
476
+ }
477
+ }
478
+ }
479
+ },
480
+ "ThemeTypographyTokenOverrides": {
481
+ "id": "ThemeTypographyTokenOverrides",
482
+ "descriptor": {
483
+ "kind": "object",
484
+ "fields": {
485
+ "headings": {
486
+ "value": {
487
+ "kind": "value-map",
488
+ "key": {
489
+ "kind": "scalar",
490
+ "type": "string"
491
+ },
492
+ "value": {
493
+ "kind": "ref",
494
+ "id": "ThemeTypographyHeadingOverrides"
495
+ }
496
+ },
497
+ "optional": true
498
+ },
499
+ "sizes": {
500
+ "value": {
501
+ "kind": "value-map",
502
+ "key": {
503
+ "kind": "scalar",
504
+ "type": "string"
505
+ },
506
+ "value": {
507
+ "kind": "scalar",
508
+ "type": "number"
509
+ }
510
+ },
511
+ "optional": true
512
+ },
513
+ "weights": {
514
+ "value": {
515
+ "kind": "value-map",
516
+ "key": {
517
+ "kind": "scalar",
518
+ "type": "string"
519
+ },
520
+ "value": {
521
+ "kind": "scalar",
522
+ "type": "string"
523
+ }
524
+ },
525
+ "optional": true
526
+ }
527
+ }
528
+ }
218
529
  }
219
530
  }
220
531
  } as const satisfies StructureDescriptorDocument;
@@ -0,0 +1,45 @@
1
+ import { COLOR_HARMONIES } from '@ankhorage/color-theory';
2
+ import { expect, test } from 'bun:test';
3
+
4
+ import { STRUCTURE_DESCRIPTOR } from './structure';
5
+
6
+ test('publishes ThemeConfig and canonical Theme authoring semantics', () => {
7
+ expect(STRUCTURE_DESCRIPTOR.roots['theme-config']).toBe('ThemeConfig');
8
+
9
+ expect(STRUCTURE_DESCRIPTOR.descriptors.ThemeModeConfig.descriptor.fields).toEqual({
10
+ harmony: {
11
+ value: {
12
+ kind: 'enum',
13
+ values: [...COLOR_HARMONIES].sort(),
14
+ },
15
+ },
16
+ primaryColor: {
17
+ value: { kind: 'scalar', type: 'string' },
18
+ },
19
+ });
20
+
21
+ const numericMap = {
22
+ kind: 'value-map',
23
+ key: { kind: 'scalar', type: 'string' },
24
+ value: { kind: 'scalar', type: 'number' },
25
+ } as const;
26
+ const globalTokens = STRUCTURE_DESCRIPTOR.descriptors.ThemeGlobalTokenOverrides.descriptor.fields;
27
+
28
+ expect(globalTokens.spacing.value).toEqual(numericMap);
29
+ expect(globalTokens.radii.value).toEqual(numericMap);
30
+ expect(globalTokens.shadows.value).toEqual(numericMap);
31
+
32
+ const typography =
33
+ STRUCTURE_DESCRIPTOR.descriptors.ThemeTypographyTokenOverrides.descriptor.fields;
34
+ expect(typography.sizes.value).toEqual(numericMap);
35
+ expect(typography.weights.value).toEqual({
36
+ kind: 'value-map',
37
+ key: { kind: 'scalar', type: 'string' },
38
+ value: { kind: 'scalar', type: 'string' },
39
+ });
40
+ expect(typography.headings.value).toEqual({
41
+ kind: 'value-map',
42
+ key: { kind: 'scalar', type: 'string' },
43
+ value: { kind: 'ref', id: 'ThemeTypographyHeadingOverrides' },
44
+ });
45
+ });