@api-client/core 0.19.24 → 0.19.26

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 (102) hide show
  1. package/build/src/index.d.ts +3 -1
  2. package/build/src/index.d.ts.map +1 -1
  3. package/build/src/index.js +3 -1
  4. package/build/src/index.js.map +1 -1
  5. package/build/src/mocking/ModelingMock.d.ts +2 -0
  6. package/build/src/mocking/ModelingMock.d.ts.map +1 -1
  7. package/build/src/mocking/ModelingMock.js +2 -0
  8. package/build/src/mocking/ModelingMock.js.map +1 -1
  9. package/build/src/mocking/lib/Deployment.d.ts +16 -0
  10. package/build/src/mocking/lib/Deployment.d.ts.map +1 -0
  11. package/build/src/mocking/lib/Deployment.js +76 -0
  12. package/build/src/mocking/lib/Deployment.js.map +1 -0
  13. package/build/src/modeling/Bindings.d.ts +4 -0
  14. package/build/src/modeling/Bindings.d.ts.map +1 -1
  15. package/build/src/modeling/Bindings.js.map +1 -1
  16. package/build/src/modeling/DataFormat.d.ts +1 -1
  17. package/build/src/modeling/DataFormat.d.ts.map +1 -1
  18. package/build/src/modeling/DataFormat.js +2 -0
  19. package/build/src/modeling/DataFormat.js.map +1 -1
  20. package/build/src/modeling/DomainAssociation.d.ts +7 -0
  21. package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
  22. package/build/src/modeling/DomainAssociation.js +10 -0
  23. package/build/src/modeling/DomainAssociation.js.map +1 -1
  24. package/build/src/modeling/DomainEntity.d.ts +9 -1
  25. package/build/src/modeling/DomainEntity.d.ts.map +1 -1
  26. package/build/src/modeling/DomainEntity.js +26 -1
  27. package/build/src/modeling/DomainEntity.js.map +1 -1
  28. package/build/src/modeling/ExposedEntity.d.ts +12 -1
  29. package/build/src/modeling/ExposedEntity.d.ts.map +1 -1
  30. package/build/src/modeling/ExposedEntity.js +24 -1
  31. package/build/src/modeling/ExposedEntity.js.map +1 -1
  32. package/build/src/modeling/RuntimeApiModel.d.ts +52 -0
  33. package/build/src/modeling/RuntimeApiModel.d.ts.map +1 -0
  34. package/build/src/modeling/RuntimeApiModel.js +85 -0
  35. package/build/src/modeling/RuntimeApiModel.js.map +1 -0
  36. package/build/src/modeling/actions/index.d.ts +10 -0
  37. package/build/src/modeling/actions/index.d.ts.map +1 -1
  38. package/build/src/modeling/actions/index.js +30 -0
  39. package/build/src/modeling/actions/index.js.map +1 -1
  40. package/build/src/modeling/index.d.ts.map +1 -1
  41. package/build/src/modeling/index.js +1 -0
  42. package/build/src/modeling/index.js.map +1 -1
  43. package/build/src/modeling/types.d.ts +25 -1
  44. package/build/src/modeling/types.d.ts.map +1 -1
  45. package/build/src/modeling/types.js.map +1 -1
  46. package/build/src/models/kinds.d.ts +1 -0
  47. package/build/src/models/kinds.d.ts.map +1 -1
  48. package/build/src/models/kinds.js +1 -0
  49. package/build/src/models/kinds.js.map +1 -1
  50. package/build/src/models/store/Deployment.d.ts +53 -16
  51. package/build/src/models/store/Deployment.d.ts.map +1 -1
  52. package/build/src/models/store/Deployment.js +92 -34
  53. package/build/src/models/store/Deployment.js.map +1 -1
  54. package/build/src/sdk/DataCatalogSdk.d.ts.map +1 -1
  55. package/build/src/sdk/DataCatalogSdk.js +22 -179
  56. package/build/src/sdk/DataCatalogSdk.js.map +1 -1
  57. package/build/src/sdk/DeploymentsSdk.d.ts +48 -0
  58. package/build/src/sdk/DeploymentsSdk.d.ts.map +1 -0
  59. package/build/src/sdk/DeploymentsSdk.js +94 -0
  60. package/build/src/sdk/DeploymentsSdk.js.map +1 -0
  61. package/build/src/sdk/RouteBuilder.d.ts +2 -0
  62. package/build/src/sdk/RouteBuilder.d.ts.map +1 -1
  63. package/build/src/sdk/RouteBuilder.js +6 -0
  64. package/build/src/sdk/RouteBuilder.js.map +1 -1
  65. package/build/src/sdk/Sdk.d.ts +2 -0
  66. package/build/src/sdk/Sdk.d.ts.map +1 -1
  67. package/build/src/sdk/Sdk.js +2 -0
  68. package/build/src/sdk/Sdk.js.map +1 -1
  69. package/build/src/sdk/SdkBase.d.ts +19 -1
  70. package/build/src/sdk/SdkBase.d.ts.map +1 -1
  71. package/build/src/sdk/SdkBase.js +31 -1
  72. package/build/src/sdk/SdkBase.js.map +1 -1
  73. package/build/src/sdk/SdkMock.d.ts +9 -0
  74. package/build/src/sdk/SdkMock.d.ts.map +1 -1
  75. package/build/src/sdk/SdkMock.js +73 -0
  76. package/build/src/sdk/SdkMock.js.map +1 -1
  77. package/build/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +2 -1
  79. package/src/matchit.d.ts +19 -0
  80. package/src/mocking/ModelingMock.ts +2 -0
  81. package/src/mocking/lib/Deployment.ts +88 -0
  82. package/src/modeling/Bindings.ts +4 -0
  83. package/src/modeling/DataFormat.ts +4 -0
  84. package/src/modeling/DomainAssociation.ts +11 -0
  85. package/src/modeling/DomainEntity.ts +30 -1
  86. package/src/modeling/ExposedEntity.ts +26 -1
  87. package/src/modeling/RuntimeApiModel.ts +137 -0
  88. package/src/modeling/types.ts +26 -1
  89. package/src/models/kinds.ts +1 -0
  90. package/src/models/store/Deployment.ts +122 -45
  91. package/src/sdk/DataCatalogSdk.ts +22 -176
  92. package/src/sdk/DeploymentsSdk.ts +123 -0
  93. package/src/sdk/RouteBuilder.ts +8 -0
  94. package/src/sdk/Sdk.ts +3 -0
  95. package/src/sdk/SdkBase.ts +35 -3
  96. package/src/sdk/SdkMock.ts +103 -0
  97. package/tests/unit/modeling/RuntimeApiModel.spec.ts +122 -0
  98. package/tests/unit/modeling/actions/index.spec.ts +113 -0
  99. package/tests/unit/modeling/domain_asociation.spec.ts +28 -0
  100. package/tests/unit/modeling/domain_entity_parents.spec.ts +49 -0
  101. package/tests/unit/modeling/exposed_entity_actions.spec.ts +47 -0
  102. package/tests/unit/models/store/Deployment.spec.ts +108 -44
@@ -1,58 +1,62 @@
1
1
  import { test } from '@japa/runner'
2
- import { Deployment, DeploymentStatus } from '../../../../src/models/store/Deployment.js'
2
+ import { Deployment, DeploymentEnvironment, DeploymentStatus } from '../../../../src/models/store/Deployment.js'
3
3
  import type { DeploymentSchema } from '../../../../src/models/store/Deployment.js'
4
4
 
5
5
  test.group('Deployment model', () => {
6
6
  test('createSchema() returns default values', ({ assert }) => {
7
7
  const result = Deployment.createSchema()
8
- assert.isString(result.id)
8
+ assert.isString(result.key)
9
9
  assert.equal(result.orgId, '')
10
10
  assert.equal(result.apiId, '')
11
- assert.equal(result.deploymentVersion, 'v0')
12
- assert.equal(result.apiModelVersion, '0.0.0')
11
+ assert.equal(result.orgSlug, '')
12
+ assert.equal(result.apiSlug, '')
13
+ assert.equal(result.env, DeploymentEnvironment.DEV)
14
+ assert.isUndefined(result.version)
15
+ assert.equal(result.modelVersion, '0.0.0')
13
16
  assert.equal(result.status, DeploymentStatus.Pending)
14
- assert.isUndefined(result.stagingPath)
15
- assert.isUndefined(result.mongoModelId)
16
17
  assert.isNumber(result.createdAt)
17
18
  assert.isNumber(result.updatedAt)
18
19
  })
19
20
 
20
21
  test('createSchema(init) assigns values', ({ assert }) => {
21
22
  const init: Partial<DeploymentSchema> = {
22
- id: 'test-id',
23
+ key: 'test-id',
23
24
  orgId: 'org-1',
24
25
  apiId: 'api-1',
25
- deploymentVersion: 'v1',
26
- apiModelVersion: '1.0.0',
26
+ orgSlug: 'org-slug',
27
+ apiSlug: 'api-slug',
28
+ env: DeploymentEnvironment.PROD,
29
+ version: 'v1',
30
+ modelVersion: '1.0.0',
27
31
  status: DeploymentStatus.Active,
28
- stagingPath: '/stage',
29
- mongoModelId: 'mongo-1',
30
32
  createdAt: 12345,
31
33
  updatedAt: 67890,
32
34
  }
33
35
  const result = Deployment.createSchema(init)
34
- assert.equal(result.id, 'test-id')
36
+ assert.equal(result.key, 'test-id')
35
37
  assert.equal(result.orgId, 'org-1')
36
38
  assert.equal(result.apiId, 'api-1')
37
- assert.equal(result.deploymentVersion, 'v1')
38
- assert.equal(result.apiModelVersion, '1.0.0')
39
+ assert.equal(result.orgSlug, 'org-slug')
40
+ assert.equal(result.apiSlug, 'api-slug')
41
+ assert.equal(result.env, DeploymentEnvironment.PROD)
42
+ assert.equal(result.version, 'v1')
43
+ assert.equal(result.modelVersion, '1.0.0')
39
44
  assert.equal(result.status, DeploymentStatus.Active)
40
- assert.equal(result.stagingPath, '/stage')
41
- assert.equal(result.mongoModelId, 'mongo-1')
42
45
  assert.equal(result.createdAt, 12345)
43
46
  assert.equal(result.updatedAt, 67890)
44
47
  })
45
48
 
46
49
  test('constructor() initializes with default values', ({ assert }) => {
47
50
  const deployment = new Deployment()
48
- assert.isString(deployment.id)
51
+ assert.isString(deployment.key)
49
52
  assert.equal(deployment.orgId, '')
50
53
  assert.equal(deployment.apiId, '')
51
- assert.equal(deployment.deploymentVersion, 'v0')
52
- assert.equal(deployment.apiModelVersion, '0.0.0')
54
+ assert.equal(deployment.orgSlug, '')
55
+ assert.equal(deployment.apiSlug, '')
56
+ assert.equal(deployment.env, DeploymentEnvironment.DEV)
57
+ assert.isUndefined(deployment.version)
58
+ assert.equal(deployment.modelVersion, '0.0.0')
53
59
  assert.equal(deployment.status, DeploymentStatus.Pending)
54
- assert.isUndefined(deployment.stagingPath)
55
- assert.isUndefined(deployment.mongoModelId)
56
60
  assert.isNumber(deployment.createdAt)
57
61
  assert.isNumber(deployment.updatedAt)
58
62
  })
@@ -61,38 +65,39 @@ test.group('Deployment model', () => {
61
65
  const init: Partial<DeploymentSchema> = {
62
66
  orgId: 'org-1',
63
67
  apiId: 'api-1',
64
- stagingPath: '/stage',
65
68
  }
66
69
  const deployment = new Deployment(init)
67
70
  assert.equal(deployment.orgId, 'org-1')
68
71
  assert.equal(deployment.apiId, 'api-1')
69
- assert.equal(deployment.stagingPath, '/stage')
70
72
  })
71
73
 
72
74
  test('toJSON() returns the schema representation', ({ assert }) => {
73
75
  const init: Partial<DeploymentSchema> = {
74
- id: 'test-id',
76
+ key: 'test-id',
75
77
  orgId: 'org-1',
76
78
  apiId: 'api-1',
77
- deploymentVersion: 'v1',
78
- apiModelVersion: '1.0.0',
79
+ orgSlug: 'org-slug',
80
+ apiSlug: 'api-slug',
81
+ env: DeploymentEnvironment.PROD,
82
+ version: 'v1',
83
+ modelVersion: '1.0.0',
79
84
  status: DeploymentStatus.Active,
80
- stagingPath: '/stage',
81
- mongoModelId: 'mongo-1',
82
85
  createdAt: 12345,
83
86
  updatedAt: 67890,
84
87
  }
85
88
  const deployment = new Deployment(init)
86
89
  const result = deployment.toJSON()
87
90
  assert.deepEqual(result, {
88
- id: 'test-id',
91
+ kind: 'Core#Deployment',
92
+ key: 'test-id',
89
93
  orgId: 'org-1',
90
94
  apiId: 'api-1',
91
- deploymentVersion: 'v1',
92
- apiModelVersion: '1.0.0',
95
+ orgSlug: 'org-slug',
96
+ apiSlug: 'api-slug',
97
+ env: DeploymentEnvironment.PROD,
98
+ version: 'v1',
99
+ modelVersion: '1.0.0',
93
100
  status: DeploymentStatus.Active,
94
- stagingPath: '/stage',
95
- mongoModelId: 'mongo-1',
96
101
  createdAt: 12345,
97
102
  updatedAt: 67890,
98
103
  })
@@ -102,21 +107,64 @@ test.group('Deployment model', () => {
102
107
  const deployment = new Deployment({
103
108
  orgId: '',
104
109
  apiId: '',
110
+ orgSlug: '',
111
+ apiSlug: '',
112
+ env: '' as any, // Force empty env
105
113
  })
106
- deployment.deploymentVersion = ''
107
- deployment.apiModelVersion = ''
114
+ deployment.version = ''
115
+ deployment.modelVersion = ''
108
116
  const errors = deployment.validate()
109
- assert.lengthOf(errors, 4)
117
+ // It should now return errors for orgId, apiId, orgSlug, apiSlug, env, modelVersion
118
+ // Note: Since env is empty, the version-prod logic won't hit the first branch, but might hit the second branch
119
+ // if version is present. Since version='', neither branch hits.
120
+ assert.lengthOf(errors, 6)
110
121
  assert.deepEqual(errors[0], { field: 'orgId', message: 'Org ID must not be empty', rule: 'notEmpty' })
111
122
  assert.deepEqual(errors[1], { field: 'apiId', message: 'API ID must not be empty', rule: 'notEmpty' })
112
- assert.deepEqual(errors[2], {
113
- field: 'deploymentVersion',
114
- message: 'Deployment version must not be empty',
123
+ assert.deepEqual(errors[2], { field: 'orgSlug', message: 'Org slug must not be empty', rule: 'notEmpty' })
124
+ assert.deepEqual(errors[3], { field: 'apiSlug', message: 'API slug must not be empty', rule: 'notEmpty' })
125
+ assert.deepEqual(errors[4], { field: 'env', message: 'Environment tag must not be empty', rule: 'notEmpty' })
126
+ assert.deepEqual(errors[5], {
127
+ field: 'modelVersion',
128
+ message: 'API model version must not be empty',
115
129
  rule: 'notEmpty',
116
130
  })
117
- assert.deepEqual(errors[3], {
118
- field: 'apiModelVersion',
119
- message: 'API model version must not be empty',
131
+ })
132
+
133
+ test('validate() returns error if version is empty for PROD environment', ({ assert }) => {
134
+ const deployment = new Deployment({
135
+ orgId: 'org-1',
136
+ apiId: 'api-1',
137
+ orgSlug: 'org-slug',
138
+ apiSlug: 'api-slug',
139
+ env: DeploymentEnvironment.PROD,
140
+ modelVersion: '1.0.0',
141
+ })
142
+ // Version is undefined by default, or we can explicitly set it to empty string
143
+ deployment.version = ''
144
+ const errors = deployment.validate()
145
+ assert.lengthOf(errors, 1)
146
+ assert.deepEqual(errors[0], {
147
+ field: 'version',
148
+ message: 'Version must not be empty for production environment',
149
+ rule: 'notEmpty',
150
+ })
151
+ })
152
+
153
+ test('validate() returns error if version is present for non-PROD environment', ({ assert }) => {
154
+ const deployment = new Deployment({
155
+ orgId: 'org-1',
156
+ apiId: 'api-1',
157
+ orgSlug: 'org-slug',
158
+ apiSlug: 'api-slug',
159
+ env: DeploymentEnvironment.DEV,
160
+ version: 'v1',
161
+ modelVersion: '1.0.0',
162
+ })
163
+ const errors = deployment.validate()
164
+ assert.lengthOf(errors, 1)
165
+ assert.deepEqual(errors[0], {
166
+ field: 'version',
167
+ message: 'Version must not be present for non-production environment',
120
168
  rule: 'notEmpty',
121
169
  })
122
170
  })
@@ -125,8 +173,24 @@ test.group('Deployment model', () => {
125
173
  const deployment = new Deployment({
126
174
  orgId: 'org-1',
127
175
  apiId: 'api-1',
128
- deploymentVersion: 'v1',
129
- apiModelVersion: '1.0.0',
176
+ version: 'v1',
177
+ modelVersion: '1.0.0',
178
+ orgSlug: 'org-slug',
179
+ apiSlug: 'api-slug',
180
+ env: DeploymentEnvironment.PROD,
181
+ })
182
+ const errors = deployment.validate()
183
+ assert.lengthOf(errors, 0)
184
+ })
185
+
186
+ test('validate() returns no errors for valid non-PROD model', ({ assert }) => {
187
+ const deployment = new Deployment({
188
+ orgId: 'org-1',
189
+ apiId: 'api-1',
190
+ modelVersion: '1.0.0',
191
+ orgSlug: 'org-slug',
192
+ apiSlug: 'api-slug',
193
+ env: DeploymentEnvironment.DEV,
130
194
  })
131
195
  const errors = deployment.validate()
132
196
  assert.lengthOf(errors, 0)