@ankhorage/contracts 7.8.0 → 8.0.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 (67) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/appManifest/apis.d.ts +3 -0
  4. package/dist/appManifest/apis.d.ts.map +1 -0
  5. package/dist/appManifest/apis.js +81 -0
  6. package/dist/appManifest/apis.js.map +1 -0
  7. package/dist/appManifest/bindings.js +1 -1
  8. package/dist/appManifest/bindings.js.map +1 -1
  9. package/dist/appManifest/data.d.ts +5 -0
  10. package/dist/appManifest/data.d.ts.map +1 -0
  11. package/dist/appManifest/data.js +140 -0
  12. package/dist/appManifest/data.js.map +1 -0
  13. package/dist/appManifest/dataSources.d.ts.map +1 -1
  14. package/dist/appManifest/dataSources.js +23 -120
  15. package/dist/appManifest/dataSources.js.map +1 -1
  16. package/dist/appManifest/infra.d.ts.map +1 -1
  17. package/dist/appManifest/infra.js +2 -0
  18. package/dist/appManifest/infra.js.map +1 -1
  19. package/dist/appManifest.d.ts.map +1 -1
  20. package/dist/appManifest.js +4 -6
  21. package/dist/appManifest.js.map +1 -1
  22. package/dist/bindings.d.ts +2 -2
  23. package/dist/bindings.d.ts.map +1 -1
  24. package/dist/bindings.js.map +1 -1
  25. package/dist/cli/index.d.ts +6 -1
  26. package/dist/cli/index.d.ts.map +1 -1
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/data/apis.d.ts +42 -38
  29. package/dist/data/apis.d.ts.map +1 -1
  30. package/dist/data/apis.js +1 -7
  31. package/dist/data/apis.js.map +1 -1
  32. package/dist/data/diagnostics.d.ts +3 -2
  33. package/dist/data/diagnostics.d.ts.map +1 -1
  34. package/dist/data/diagnostics.js.map +1 -1
  35. package/dist/data/ids.d.ts +1 -0
  36. package/dist/data/ids.d.ts.map +1 -1
  37. package/dist/data/ids.js.map +1 -1
  38. package/dist/data/sources.d.ts +5 -42
  39. package/dist/data/sources.d.ts.map +1 -1
  40. package/dist/data/sources.js.map +1 -1
  41. package/dist/types.d.ts +2 -3
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/appManifest/apis.ts +98 -0
  46. package/src/appManifest/bindings.ts +1 -1
  47. package/src/appManifest/data.ts +179 -0
  48. package/src/appManifest/dataSources.ts +30 -157
  49. package/src/appManifest/infra.ts +2 -0
  50. package/src/appManifest.test.ts +95 -39
  51. package/src/appManifest.ts +4 -6
  52. package/src/bindings.test.ts +36 -43
  53. package/src/bindings.ts +2 -2
  54. package/src/cli/index.ts +6 -1
  55. package/src/cli.test.ts +20 -0
  56. package/src/data/apis.test.ts +55 -45
  57. package/src/data/apis.ts +49 -46
  58. package/src/data/data.test.ts +19 -160
  59. package/src/data/diagnostics.ts +3 -1
  60. package/src/data/ids.ts +1 -0
  61. package/src/data/sources.ts +5 -53
  62. package/src/types.ts +2 -3
  63. package/dist/appManifest/generatedApis.d.ts +0 -2
  64. package/dist/appManifest/generatedApis.d.ts.map +0 -1
  65. package/dist/appManifest/generatedApis.js +0 -87
  66. package/dist/appManifest/generatedApis.js.map +0 -1
  67. package/src/appManifest/generatedApis.ts +0 -122
@@ -1,122 +0,0 @@
1
- import {
2
- isManifestValue,
3
- isOptionalBoolean,
4
- isOptionalString,
5
- isRecord,
6
- isStringArray,
7
- } from './shared';
8
-
9
- export function isGeneratedApiRegistry(value: unknown): boolean {
10
- return isRecord(value) && Object.values(value).every(isGeneratedApiDefinition);
11
- }
12
-
13
- function isGeneratedApiDefinition(value: unknown): boolean {
14
- return (
15
- isRecord(value) &&
16
- typeof value.id === 'string' &&
17
- value.protocol === 'rest' &&
18
- isOptionalString(value.name) &&
19
- isOptionalString(value.description) &&
20
- typeof value.basePath === 'string' &&
21
- isDatabaseAdapterRef(value.database) &&
22
- Array.isArray(value.resources) &&
23
- value.resources.every(isGeneratedApiResourceDefinition) &&
24
- (value.auth === undefined || isGeneratedApiAuthRequirement(value.auth)) &&
25
- (value.metadata === undefined || isManifestValue(value.metadata))
26
- );
27
- }
28
-
29
- function isDatabaseAdapterRef(value: unknown): boolean {
30
- return isRecord(value) && value.kind === 'database' && isAdapterRef(value);
31
- }
32
-
33
- function isGeneratedApiAuthRequirement(value: unknown): boolean {
34
- return (
35
- isRecord(value) &&
36
- isOptionalBoolean(value.required) &&
37
- (value.roles === undefined || isStringArray(value.roles)) &&
38
- (value.permissions === undefined || isStringArray(value.permissions)) &&
39
- isOptionalString(value.policy) &&
40
- (value.metadata === undefined || isManifestValue(value.metadata))
41
- );
42
- }
43
-
44
- function isGeneratedApiResourceDefinition(value: unknown): boolean {
45
- return (
46
- isRecord(value) &&
47
- typeof value.id === 'string' &&
48
- isOptionalString(value.name) &&
49
- isOptionalString(value.description) &&
50
- typeof value.path === 'string' &&
51
- isDbCollectionDefinition(value.collection) &&
52
- Array.isArray(value.operations) &&
53
- value.operations.every(isGeneratedApiCrudOperation) &&
54
- (value.seed === undefined || isSeedRecords(value.seed)) &&
55
- (value.policies === undefined ||
56
- (Array.isArray(value.policies) && value.policies.every(isGeneratedApiPolicyRef))) &&
57
- (value.metadata === undefined || isManifestValue(value.metadata))
58
- );
59
- }
60
-
61
- function isSeedRecords(value: unknown): boolean {
62
- return (
63
- Array.isArray(value) &&
64
- value.every((record) => isRecord(record) && Object.values(record).every(isManifestValue))
65
- );
66
- }
67
-
68
- function isGeneratedApiCrudOperation(value: unknown): boolean {
69
- return ['create', 'delete', 'list', 'read', 'update'].includes(String(value));
70
- }
71
-
72
- function isGeneratedApiPolicyRef(value: unknown): boolean {
73
- return (
74
- isRecord(value) &&
75
- typeof value.id === 'string' &&
76
- (value.operation === undefined || isGeneratedApiCrudOperation(value.operation))
77
- );
78
- }
79
-
80
- function isDbCollectionDefinition(value: unknown): boolean {
81
- return (
82
- isRecord(value) &&
83
- typeof value.name === 'string' &&
84
- isOptionalString(value.schema) &&
85
- Array.isArray(value.fields) &&
86
- value.fields.every(isDbFieldDefinition) &&
87
- isOptionalString(value.primaryKey)
88
- );
89
- }
90
-
91
- function isDbFieldDefinition(value: unknown): boolean {
92
- return (
93
- isRecord(value) &&
94
- typeof value.name === 'string' &&
95
- typeof value.type === 'string' &&
96
- ['text', 'number', 'boolean', 'datetime', 'json', 'uuid'].includes(value.type) &&
97
- isOptionalBoolean(value.required) &&
98
- isOptionalBoolean(value.unique) &&
99
- isDbDefaultValue(value.defaultValue)
100
- );
101
- }
102
-
103
- function isDbDefaultValue(value: unknown): boolean {
104
- return (
105
- value === undefined ||
106
- value === null ||
107
- typeof value === 'boolean' ||
108
- typeof value === 'number' ||
109
- typeof value === 'string'
110
- );
111
- }
112
-
113
- function isAdapterRef(value: unknown): boolean {
114
- return (
115
- isRecord(value) &&
116
- typeof value.id === 'string' &&
117
- typeof value.kind === 'string' &&
118
- isOptionalString(value.packageName) &&
119
- isOptionalString(value.exportName) &&
120
- (value.config === undefined || isManifestValue(value.config))
121
- );
122
- }