@ankhorage/contracts 1.7.0 → 1.9.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/bindings.d.ts +38 -0
  3. package/dist/bindings.d.ts.map +1 -0
  4. package/dist/bindings.js +2 -0
  5. package/dist/bindings.js.map +1 -0
  6. package/dist/data/diagnostics.d.ts +22 -0
  7. package/dist/data/diagnostics.d.ts.map +1 -0
  8. package/dist/data/diagnostics.js +2 -0
  9. package/dist/data/diagnostics.js.map +1 -0
  10. package/dist/data/endpoints.d.ts +18 -0
  11. package/dist/data/endpoints.d.ts.map +1 -0
  12. package/dist/data/endpoints.js +2 -0
  13. package/dist/data/endpoints.js.map +1 -0
  14. package/dist/data/ids.d.ts +7 -0
  15. package/dist/data/ids.d.ts.map +1 -0
  16. package/dist/data/ids.js +2 -0
  17. package/dist/data/ids.js.map +1 -0
  18. package/dist/data/index.d.ts +9 -0
  19. package/dist/data/index.d.ts.map +1 -0
  20. package/dist/data/index.js +9 -0
  21. package/dist/data/index.js.map +1 -0
  22. package/dist/data/operations.d.ts +49 -0
  23. package/dist/data/operations.d.ts.map +1 -0
  24. package/dist/data/operations.js +2 -0
  25. package/dist/data/operations.js.map +1 -0
  26. package/dist/data/refs.d.ts +18 -0
  27. package/dist/data/refs.d.ts.map +1 -0
  28. package/dist/data/refs.js +2 -0
  29. package/dist/data/refs.js.map +1 -0
  30. package/dist/data/schemas.d.ts +34 -0
  31. package/dist/data/schemas.d.ts.map +1 -0
  32. package/dist/data/schemas.js +2 -0
  33. package/dist/data/schemas.js.map +1 -0
  34. package/dist/data/sources.d.ts +57 -0
  35. package/dist/data/sources.d.ts.map +1 -0
  36. package/dist/data/sources.js +2 -0
  37. package/dist/data/sources.js.map +1 -0
  38. package/dist/data/values.d.ts +5 -0
  39. package/dist/data/values.d.ts.map +1 -0
  40. package/dist/data/values.js +2 -0
  41. package/dist/data/values.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +2 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/types.d.ts +2 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js.map +1 -1
  49. package/package.json +9 -1
  50. package/src/bindings.test.ts +96 -0
  51. package/src/bindings.ts +54 -0
  52. package/src/data/data.test.ts +305 -0
  53. package/src/data/diagnostics.ts +41 -0
  54. package/src/data/endpoints.ts +20 -0
  55. package/src/data/ids.ts +6 -0
  56. package/src/data/index.ts +8 -0
  57. package/src/data/operations.ts +66 -0
  58. package/src/data/refs.ts +21 -0
  59. package/src/data/schemas.ts +46 -0
  60. package/src/data/sources.ts +72 -0
  61. package/src/data/values.ts +11 -0
  62. package/src/index.ts +2 -0
  63. package/src/types.ts +2 -0
@@ -0,0 +1,72 @@
1
+ import type { DbCollectionDefinition } from '../db';
2
+ import type { DataEndpointRegistry } from './endpoints';
3
+ import type { DataSourceId } from './ids';
4
+ import type { AdapterRef, CredentialRef } from './refs';
5
+ import type { DataSchemaRegistry } from './schemas';
6
+ import type { DataContractValue } from './values';
7
+
8
+ export type DataSourceKind = 'database' | 'graphql' | 'managed-api' | 'openapi' | 'rest';
9
+
10
+ export interface DataSourceBaseConfig {
11
+ readonly id: DataSourceId;
12
+ readonly kind: DataSourceKind;
13
+ readonly name?: string;
14
+ readonly description?: string;
15
+ readonly credential?: CredentialRef;
16
+ readonly endpoints: DataEndpointRegistry;
17
+ readonly schemas?: DataSchemaRegistry;
18
+ readonly metadata?: DataContractValue;
19
+ }
20
+
21
+ export interface RestDataSourceConfig extends DataSourceBaseConfig {
22
+ readonly kind: 'rest';
23
+ readonly baseUrl: string;
24
+ }
25
+
26
+ export interface OpenApiImportRef {
27
+ readonly url?: string;
28
+ readonly documentId?: string;
29
+ readonly version?: string;
30
+ }
31
+
32
+ export interface OpenApiDataSourceConfig extends DataSourceBaseConfig {
33
+ readonly kind: 'openapi';
34
+ readonly baseUrl?: string;
35
+ readonly import?: OpenApiImportRef;
36
+ }
37
+
38
+ export interface GraphQlDataSourceConfig extends DataSourceBaseConfig {
39
+ readonly kind: 'graphql';
40
+ readonly endpointUrl: string;
41
+ readonly introspection?: {
42
+ readonly enabled: boolean;
43
+ readonly schemaVersion?: string;
44
+ };
45
+ }
46
+
47
+ export interface DatabaseDataSourceConfig extends DataSourceBaseConfig {
48
+ readonly kind: 'database';
49
+ readonly adapter: AdapterRef;
50
+ }
51
+
52
+ export interface ManagedApiResourceConfig {
53
+ readonly name: string;
54
+ readonly collection: DbCollectionDefinition;
55
+ readonly operations?: readonly ('create' | 'delete' | 'list' | 'read' | 'update')[];
56
+ readonly metadata?: DataContractValue;
57
+ }
58
+
59
+ export interface ManagedApiDataSourceConfig extends DataSourceBaseConfig {
60
+ readonly kind: 'managed-api';
61
+ readonly adapter: AdapterRef;
62
+ readonly resources: readonly ManagedApiResourceConfig[];
63
+ }
64
+
65
+ export type DataSourceConfig =
66
+ | DatabaseDataSourceConfig
67
+ | GraphQlDataSourceConfig
68
+ | ManagedApiDataSourceConfig
69
+ | OpenApiDataSourceConfig
70
+ | RestDataSourceConfig;
71
+
72
+ export type DataSourceRegistry = Readonly<Record<DataSourceId, DataSourceConfig>>;
@@ -0,0 +1,11 @@
1
+ export type DataContractValue =
2
+ | string
3
+ | number
4
+ | boolean
5
+ | null
6
+ | readonly DataContractValue[]
7
+ | {
8
+ readonly [key: string]: DataContractValue;
9
+ };
10
+
11
+ export type DataPath = string;
package/src/index.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './auth';
2
+ export * from './bindings';
3
+ export * from './data';
2
4
  export * from './db';
3
5
  export * from './state';
4
6
  export * from './storage';
package/src/types.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { ColorHarmony } from '@ankhorage/color-theory';
2
2
 
3
3
  import type { AuthFlowConfig, AuthIdentifierKind, AuthSignUpField } from './auth';
4
+ import type { NodePropBinding } from './bindings';
4
5
 
5
6
  export interface ThemeModeConfig {
6
7
  primaryColor: string;
@@ -330,6 +331,7 @@ export interface UiNode {
330
331
  type: string;
331
332
  alias?: string;
332
333
  props?: Record<string, unknown>;
334
+ bindings?: readonly NodePropBinding[];
333
335
  children?: UiNode[];
334
336
  style?: Record<string, number | string>;
335
337
  events?: UiNodeEventBindings;