@reventlessdev/reventless-core 3.0.0-alpha.277 → 3.0.0-alpha.278
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
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 3.0.0-alpha.278 (2026-09-25)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **core:** an identity is published as a string, not a UUID ([f3781ba](https://github.com/ReventlessDev/reventless-core/commit/f3781ba5cae75f156175f649d51f32c3ca053907))
|
|
11
|
+
|
|
12
|
+
|
|
6
13
|
# 3.0.0-alpha.277 (2026-09-25)
|
|
7
14
|
|
|
8
15
|
**Note:** Version bump only for package @reventlessdev/reventless-core
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/reventless-core",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.278",
|
|
4
4
|
"description": "Core package for Reventless framework",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"jest": {
|
|
@@ -29,16 +29,16 @@
|
|
|
29
29
|
"sury": "11.0.0",
|
|
30
30
|
"uuid": "^13.0.0",
|
|
31
31
|
"@reventlessdev/rescript-effect": "0.1.0-alpha.34",
|
|
32
|
-
"@reventlessdev/rescript-hash-object": "1.2.0-alpha.15",
|
|
33
32
|
"@reventlessdev/rescript-fast-csv": "2.0.0-alpha.15",
|
|
34
33
|
"@reventlessdev/rescript-jest": "1.0.0-alpha.11",
|
|
35
|
-
"@reventlessdev/rescript-
|
|
34
|
+
"@reventlessdev/rescript-hash-object": "1.2.0-alpha.15",
|
|
36
35
|
"@reventlessdev/rescript-node": "2.0.0-alpha.15",
|
|
37
36
|
"@reventlessdev/rescript-ssh2": "2.0.0-alpha.15",
|
|
37
|
+
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.22",
|
|
38
38
|
"@reventlessdev/rescript-uuid": "2.0.0-alpha.1",
|
|
39
|
-
"@reventlessdev/reventless-
|
|
39
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.149",
|
|
40
40
|
"@reventlessdev/reventless-infra": "3.0.0-alpha.177",
|
|
41
|
-
"@reventlessdev/reventless-
|
|
41
|
+
"@reventlessdev/reventless-interop": "3.0.0-alpha.38"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"rescript": "12.3.1",
|
|
@@ -203,7 +203,9 @@ let rec fromSchemaType = (~inputNames: bool=false, st: SchemaType.schemaType): J
|
|
|
203
203
|
| ScalarInt => jsonObject([("type", str("integer"))])
|
|
204
204
|
| ScalarBoolean => jsonObject([("type", str("boolean"))])
|
|
205
205
|
| ScalarBigInt => jsonObject([("type", str("integer"))])
|
|
206
|
-
|
|
206
|
+
// An identity is any string: `Id.Make.makeFromString` takes one, and so does the API.
|
|
207
|
+
// Claiming `format: uuid` made every generated form refuse an id it had not minted.
|
|
208
|
+
| EntityId => jsonObject([("type", str("string"))])
|
|
207
209
|
| DateTime => jsonObject([("type", str("string")), ("format", str("date-time"))])
|
|
208
210
|
| CalendarDate => jsonObject([("type", str("string")), ("format", str("date"))])
|
|
209
211
|
| Nullable(inner) =>
|
|
@@ -193,17 +193,6 @@ function fromSchemaType(_inputNamesOpt, _st) {
|
|
|
193
193
|
"type",
|
|
194
194
|
"integer"
|
|
195
195
|
]]);
|
|
196
|
-
case "EntityId" :
|
|
197
|
-
return Object.fromEntries([
|
|
198
|
-
[
|
|
199
|
-
"type",
|
|
200
|
-
"string"
|
|
201
|
-
],
|
|
202
|
-
[
|
|
203
|
-
"format",
|
|
204
|
-
"uuid"
|
|
205
|
-
]
|
|
206
|
-
]);
|
|
207
196
|
case "DateTime" :
|
|
208
197
|
return Object.fromEntries([
|
|
209
198
|
[
|
|
@@ -227,6 +216,7 @@ function fromSchemaType(_inputNamesOpt, _st) {
|
|
|
227
216
|
]
|
|
228
217
|
]);
|
|
229
218
|
case "ScalarString" :
|
|
219
|
+
case "EntityId" :
|
|
230
220
|
case "Unknown" :
|
|
231
221
|
return Object.fromEntries([[
|
|
232
222
|
"type",
|
|
@@ -1103,7 +1103,15 @@ describe("SuryToJsonSchema:", () => {
|
|
|
1103
1103
|
},
|
|
1104
1104
|
)->S.castToUnknown
|
|
1105
1105
|
let json = SuryToJsonSchema.deriveObjectSchema(schema)
|
|
1106
|
-
expect(
|
|
1106
|
+
expect(
|
|
1107
|
+
SchemaType.fromSury(
|
|
1108
|
+
~parentName="T",
|
|
1109
|
+
~fieldName="orderId",
|
|
1110
|
+
Reventless.DcbTag.string->S.castToUnknown,
|
|
1111
|
+
),
|
|
1112
|
+
)->toEqual(SchemaType.EntityId)
|
|
1113
|
+
// Published as a plain string: an identity is not a UUID.
|
|
1114
|
+
expect(formatOf(json, "orderId"))->toEqual(None)
|
|
1107
1115
|
expect(Reventless.Reference.getTarget(schema))->toBe(None)
|
|
1108
1116
|
},
|
|
1109
1117
|
)
|
|
@@ -1114,7 +1122,10 @@ describe("SuryToJsonSchema:", () => {
|
|
|
1114
1122
|
let field = Reventless.Reference.toWithoutDcbTag("Customer")
|
|
1115
1123
|
let schema = S.schema(s => {"customerId": s.matches(field)})->S.castToUnknown
|
|
1116
1124
|
let json = SuryToJsonSchema.deriveObjectSchema(schema)
|
|
1117
|
-
expect(
|
|
1125
|
+
expect(
|
|
1126
|
+
SchemaType.fromSury(~parentName="T", ~fieldName="customerId", field->S.castToUnknown),
|
|
1127
|
+
)->toEqual(SchemaType.EntityId)
|
|
1128
|
+
expect(formatOf(json, "customerId"))->toEqual(None)
|
|
1118
1129
|
expect(Reventless.DcbTag.isTagged(field->S.castToUnknown))->toBe(false)
|
|
1119
1130
|
},
|
|
1120
1131
|
)
|
|
@@ -21,6 +21,7 @@ import * as Sensitive$Reventless from "@reventlessdev/reventless-spec/src/compon
|
|
|
21
21
|
import * as StorageRef$Reventless from "@reventlessdev/reventless-spec/src/semantic/StorageRef.res.mjs";
|
|
22
22
|
import * as CalendarDate$Reventless from "@reventlessdev/reventless-spec/src/semantic/CalendarDate.res.mjs";
|
|
23
23
|
import * as FieldDefault$Reventless from "@reventlessdev/reventless-spec/src/components/FieldDefault.res.mjs";
|
|
24
|
+
import * as SchemaType$ReventlessCore from "../../src/components/Api/SchemaType.res.mjs";
|
|
24
25
|
import * as StateAnnotations$Reventless from "@reventlessdev/reventless-spec/src/components/StateAnnotations.res.mjs";
|
|
25
26
|
import * as SuryToJsonSchema$ReventlessCore from "../../src/components/Api/SuryToJsonSchema.res.mjs";
|
|
26
27
|
|
|
@@ -859,7 +860,8 @@ globalThis.describe("SuryToJsonSchema:", () => {
|
|
|
859
860
|
orderId: s.m(DcbTag$Reventless.string)
|
|
860
861
|
}));
|
|
861
862
|
let json = SuryToJsonSchema$ReventlessCore.deriveObjectSchema(undefined, undefined, schema);
|
|
862
|
-
globalThis.expect(
|
|
863
|
+
globalThis.expect(SchemaType$ReventlessCore.fromSury("T", "orderId", DcbTag$Reventless.string)).toEqual("EntityId");
|
|
864
|
+
globalThis.expect(formatOf(json, "orderId")).toEqual(undefined);
|
|
863
865
|
globalThis.expect(Reference$Reventless.getTarget(schema)).toBe(undefined);
|
|
864
866
|
});
|
|
865
867
|
globalThis.test("a reference without a DCB tag is still an entity id", () => {
|
|
@@ -868,7 +870,8 @@ globalThis.describe("SuryToJsonSchema:", () => {
|
|
|
868
870
|
customerId: s.m(field)
|
|
869
871
|
}));
|
|
870
872
|
let json = SuryToJsonSchema$ReventlessCore.deriveObjectSchema(undefined, undefined, schema);
|
|
871
|
-
globalThis.expect(
|
|
873
|
+
globalThis.expect(SchemaType$ReventlessCore.fromSury("T", "customerId", field)).toEqual("EntityId");
|
|
874
|
+
globalThis.expect(formatOf(json, "customerId")).toEqual(undefined);
|
|
872
875
|
globalThis.expect(DcbTag$Reventless.isTagged(field)).toBe(false);
|
|
873
876
|
});
|
|
874
877
|
globalThis.test("Reference.to_ carries both facts", () => {
|