@graphprotocol/grc-20 0.21.0 → 0.21.2
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/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -3
- package/dist/constants.js.map +1 -1
- package/dist/convert-ids.d.ts +2 -0
- package/dist/convert-ids.d.ts.map +1 -0
- package/dist/convert-ids.js +42 -0
- package/dist/convert-ids.js.map +1 -0
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -14
- package/dist/index.js.map +1 -1
- package/dist/protov2.d.ts +11 -0
- package/dist/protov2.d.ts.map +1 -0
- package/dist/protov2.js +11 -0
- package/dist/protov2.js.map +1 -0
- package/dist/src/core/blocks/image.d.ts +15 -0
- package/dist/src/core/blocks/image.d.ts.map +1 -0
- package/dist/src/core/blocks/image.js +15 -0
- package/dist/src/core/blocks/image.js.map +1 -0
- package/dist/src/core/idsv2/content.d.ts +59 -0
- package/dist/src/core/idsv2/content.d.ts.map +1 -0
- package/dist/src/core/idsv2/content.js +59 -0
- package/dist/src/core/idsv2/content.js.map +1 -0
- package/dist/src/core/idsv2/network.d.ts +5 -0
- package/dist/src/core/idsv2/network.d.ts.map +1 -0
- package/dist/src/core/idsv2/network.js +5 -0
- package/dist/src/core/idsv2/network.js.map +1 -0
- package/dist/src/core/idsv2/system.d.ts +222 -0
- package/dist/src/core/idsv2/system.d.ts.map +1 -0
- package/dist/src/core/idsv2/system.js +230 -0
- package/dist/src/core/idsv2/system.js.map +1 -0
- package/dist/src/core/image.d.ts +40 -0
- package/dist/src/core/image.d.ts.map +1 -0
- package/dist/src/core/image.js +76 -0
- package/dist/src/core/image.js.map +1 -0
- package/dist/src/core/image.test.d.ts +2 -0
- package/dist/src/core/image.test.d.ts.map +1 -0
- package/dist/src/core/image.test.js +52 -0
- package/dist/src/core/image.test.js.map +1 -0
- package/dist/src/core/position.d.ts +19 -0
- package/dist/src/core/position.d.ts.map +1 -1
- package/dist/src/core/position.js +31 -0
- package/dist/src/core/position.js.map +1 -1
- package/dist/src/core/position.test.d.ts +2 -0
- package/dist/src/core/position.test.d.ts.map +1 -0
- package/dist/src/core/position.test.js +126 -0
- package/dist/src/core/position.test.js.map +1 -0
- package/dist/src/core/relation.d.ts +88 -0
- package/dist/src/core/relation.d.ts.map +1 -0
- package/dist/src/core/relation.js +89 -0
- package/dist/src/core/relation.js.map +1 -0
- package/dist/src/core/relation.test.d.ts +2 -0
- package/dist/src/core/relation.test.d.ts.map +1 -0
- package/dist/src/core/relation.test.js +45 -0
- package/dist/src/core/relation.test.js.map +1 -0
- package/dist/src/core/triple.d.ts +50 -0
- package/dist/src/core/triple.d.ts.map +1 -0
- package/dist/src/core/triple.js +56 -0
- package/dist/src/core/triple.js.map +1 -0
- package/dist/src/core/triple.test.d.ts +2 -0
- package/dist/src/core/triple.test.d.ts.map +1 -0
- package/dist/src/core/triple.test.js +37 -0
- package/dist/src/core/triple.test.js.map +1 -0
- package/dist/src/graph/create-entity.js +1 -1
- package/dist/src/graph/create-entity.js.map +1 -1
- package/dist/src/graph/delete-entity.d.ts +14 -0
- package/dist/src/graph/delete-entity.d.ts.map +1 -0
- package/dist/src/graph/delete-entity.js +21 -0
- package/dist/src/graph/delete-entity.js.map +1 -0
- package/dist/src/graph/delete-entity.test.d.ts +2 -0
- package/dist/src/graph/delete-entity.test.d.ts.map +1 -0
- package/dist/src/graph/delete-entity.test.js +23 -0
- package/dist/src/graph/delete-entity.test.js.map +1 -0
- package/dist/src/graph/graph.test.d.ts +2 -0
- package/dist/src/graph/graph.test.d.ts.map +1 -0
- package/dist/src/graph/graph.test.js +46 -0
- package/dist/src/graph/graph.test.js.map +1 -0
- package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
- package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
- package/dist/src/graph/helpers/create-default-properties.js +44 -0
- package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
- package/dist/src/graph/helpers/create-properties.d.ts +8 -0
- package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
- package/dist/src/graph/helpers/create-properties.js +53 -0
- package/dist/src/graph/helpers/create-properties.js.map +1 -0
- package/dist/src/graphv2/constants.d.ts +2 -0
- package/dist/src/graphv2/constants.d.ts.map +1 -0
- package/dist/src/graphv2/constants.js +2 -0
- package/dist/src/graphv2/constants.js.map +1 -0
- package/dist/src/graphv2/create-entity.d.ts +52 -0
- package/dist/src/graphv2/create-entity.d.ts.map +1 -0
- package/dist/src/graphv2/create-entity.js +140 -0
- package/dist/src/graphv2/create-entity.js.map +1 -0
- package/dist/src/graphv2/create-entity.test.d.ts +2 -0
- package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-entity.test.js +158 -0
- package/dist/src/graphv2/create-entity.test.js.map +1 -0
- package/dist/src/graphv2/create-image.d.ts +28 -0
- package/dist/src/graphv2/create-image.d.ts.map +1 -0
- package/dist/src/graphv2/create-image.js +71 -0
- package/dist/src/graphv2/create-image.js.map +1 -0
- package/dist/src/graphv2/create-image.test.d.ts +2 -0
- package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-image.test.js +142 -0
- package/dist/src/graphv2/create-image.test.js.map +1 -0
- package/dist/src/graphv2/create-property.d.ts +22 -0
- package/dist/src/graphv2/create-property.d.ts.map +1 -0
- package/dist/src/graphv2/create-property.js +129 -0
- package/dist/src/graphv2/create-property.js.map +1 -0
- package/dist/src/graphv2/create-property.test.d.ts +2 -0
- package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-property.test.js +82 -0
- package/dist/src/graphv2/create-property.test.js.map +1 -0
- package/dist/src/graphv2/create-relation.d.ts +33 -0
- package/dist/src/graphv2/create-relation.d.ts.map +1 -0
- package/dist/src/graphv2/create-relation.js +66 -0
- package/dist/src/graphv2/create-relation.js.map +1 -0
- package/dist/src/graphv2/create-relation.test.d.ts +2 -0
- package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-relation.test.js +208 -0
- package/dist/src/graphv2/create-relation.test.js.map +1 -0
- package/dist/src/graphv2/create-space.d.ts +13 -0
- package/dist/src/graphv2/create-space.d.ts.map +1 -0
- package/dist/src/graphv2/create-space.js +21 -0
- package/dist/src/graphv2/create-space.js.map +1 -0
- package/dist/src/graphv2/create-type.d.ts +22 -0
- package/dist/src/graphv2/create-type.d.ts.map +1 -0
- package/dist/src/graphv2/create-type.js +64 -0
- package/dist/src/graphv2/create-type.js.map +1 -0
- package/dist/src/graphv2/create-type.test.d.ts +2 -0
- package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-type.test.js +109 -0
- package/dist/src/graphv2/create-type.test.js.map +1 -0
- package/dist/src/graphv2/delete-entity.d.ts +14 -0
- package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
- package/dist/src/graphv2/delete-entity.js +21 -0
- package/dist/src/graphv2/delete-entity.js.map +1 -0
- package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
- package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
- package/dist/src/graphv2/delete-entity.test.js +24 -0
- package/dist/src/graphv2/delete-entity.test.js.map +1 -0
- package/dist/src/graphv2/delete-relation.d.ts +14 -0
- package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
- package/dist/src/graphv2/delete-relation.js +21 -0
- package/dist/src/graphv2/delete-relation.js.map +1 -0
- package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
- package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
- package/dist/src/graphv2/delete-relation.test.js +24 -0
- package/dist/src/graphv2/delete-relation.test.js.map +1 -0
- package/dist/src/graphv2/index.d.ts +12 -0
- package/dist/src/graphv2/index.d.ts.map +1 -0
- package/dist/src/graphv2/index.js +12 -0
- package/dist/src/graphv2/index.js.map +1 -0
- package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
- package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
- package/dist/src/graphv2/remove-entity-properties.js +24 -0
- package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
- package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
- package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
- package/dist/src/graphv2/unset-entity-values.js +26 -0
- package/dist/src/graphv2/unset-entity-values.js.map +1 -0
- package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
- package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
- package/dist/src/graphv2/unset-entity-values.test.js +40 -0
- package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
- package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.js +34 -0
- package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
- package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
- package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
- package/dist/src/graphv2/update-entity.d.ts +28 -0
- package/dist/src/graphv2/update-entity.d.ts.map +1 -0
- package/dist/src/graphv2/update-entity.js +73 -0
- package/dist/src/graphv2/update-entity.js.map +1 -0
- package/dist/src/graphv2/update-entity.test.d.ts +2 -0
- package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
- package/dist/src/graphv2/update-entity.test.js +116 -0
- package/dist/src/graphv2/update-entity.test.js.map +1 -0
- package/dist/src/graphv2/update-relation.d.ts +21 -0
- package/dist/src/graphv2/update-relation.d.ts.map +1 -0
- package/dist/src/graphv2/update-relation.js +37 -0
- package/dist/src/graphv2/update-relation.js.map +1 -0
- package/dist/src/idv2.d.ts +27 -0
- package/dist/src/idv2.d.ts.map +1 -0
- package/dist/src/idv2.js +88 -0
- package/dist/src/idv2.js.map +1 -0
- package/dist/src/idv2.test.d.ts +2 -0
- package/dist/src/idv2.test.d.ts.map +1 -0
- package/dist/src/idv2.test.js +26 -0
- package/dist/src/idv2.test.js.map +1 -0
- package/dist/src/image.d.ts +8 -0
- package/dist/src/image.d.ts.map +1 -0
- package/dist/src/image.js +8 -0
- package/dist/src/image.js.map +1 -0
- package/dist/src/ipfsv2.d.ts +96 -0
- package/dist/src/ipfsv2.d.ts.map +1 -0
- package/dist/src/ipfsv2.js +163 -0
- package/dist/src/ipfsv2.js.map +1 -0
- package/dist/src/ipfsv2.test.d.ts +2 -0
- package/dist/src/ipfsv2.test.d.ts.map +1 -0
- package/dist/src/ipfsv2.test.js +22 -0
- package/dist/src/ipfsv2.test.js.map +1 -0
- package/dist/src/proto/editv2.d.ts +11 -0
- package/dist/src/proto/editv2.d.ts.map +1 -0
- package/dist/src/proto/editv2.js +81 -0
- package/dist/src/proto/editv2.js.map +1 -0
- package/dist/src/proto/editv2.test.d.ts +2 -0
- package/dist/src/proto/editv2.test.d.ts.map +1 -0
- package/dist/src/proto/editv2.test.js +211 -0
- package/dist/src/proto/editv2.test.js.map +1 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
- package/dist/src/relation.d.ts +7 -0
- package/dist/src/relation.d.ts.map +1 -0
- package/dist/src/relation.js +7 -0
- package/dist/src/relation.js.map +1 -0
- package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
- package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
- package/dist/src/smart-wallet-2.test-invalid.js +49 -0
- package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
- package/dist/src/smart-wallet-2.test.d.ts +2 -0
- package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
- package/dist/src/smart-wallet-2.test.js +49 -0
- package/dist/src/smart-wallet-2.test.js.map +1 -0
- package/dist/src/system-ids-v2.d.ts +7 -0
- package/dist/src/system-ids-v2.d.ts.map +1 -0
- package/dist/src/system-ids-v2.js +7 -0
- package/dist/src/system-ids-v2.js.map +1 -0
- package/dist/src/triple.d.ts +7 -0
- package/dist/src/triple.d.ts.map +1 -0
- package/dist/src/triple.js +7 -0
- package/dist/src/triple.js.map +1 -0
- package/dist/src/types-backup.d.ts +134 -0
- package/dist/src/types-backup.d.ts.map +1 -0
- package/dist/src/types-backup.js +13 -0
- package/dist/src/types-backup.js.map +1 -0
- package/dist/src/typesv2.d.ts +173 -0
- package/dist/src/typesv2.d.ts.map +1 -0
- package/dist/src/typesv2.js +8 -0
- package/dist/src/typesv2.js.map +1 -0
- package/package.json +1 -2
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { INITIAL_RELATION_INDEX_VALUE } from '~/constants.js';
|
|
3
|
+
import { SystemIds } from '../system-ids.js';
|
|
4
|
+
import { make } from './image.js';
|
|
5
|
+
it('should generate ops for an image entity', () => {
|
|
6
|
+
const { id, ops } = make({ cid: 'https://example.com/image.png' });
|
|
7
|
+
// We check each field individually since we don't know the id of the relation
|
|
8
|
+
expect(typeof id).toBe('string');
|
|
9
|
+
expect(ops.length).toBe(2);
|
|
10
|
+
if (ops[0]?.type === 'CREATE_RELATION') {
|
|
11
|
+
expect(ops[0].relation.type).toBe(SystemIds.TYPES_PROPERTY);
|
|
12
|
+
expect(ops[0].relation.fromEntity).toBe(id);
|
|
13
|
+
expect(ops[0].relation.toEntity).toBe(SystemIds.IMAGE_TYPE);
|
|
14
|
+
expect(ops[0].relation.index).toBe(INITIAL_RELATION_INDEX_VALUE);
|
|
15
|
+
}
|
|
16
|
+
if (ops[1]?.type === 'SET_TRIPLE') {
|
|
17
|
+
expect(ops[1].triple.attribute).toBe(SystemIds.IMAGE_URL_PROPERTY);
|
|
18
|
+
expect(ops[1].triple.entity).toBe(id);
|
|
19
|
+
expect(ops[1].triple.value.type).toBe('URL');
|
|
20
|
+
expect(ops[1].triple.value.value).toBe('https://example.com/image.png');
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
it('should generate ops for an image entity with dimensions', () => {
|
|
24
|
+
const { id, ops } = make({ cid: 'https://example.com/image.png', dimensions: { width: 200, height: 100 } });
|
|
25
|
+
expect(typeof id).toBe('string');
|
|
26
|
+
expect(ops.length).toBe(4);
|
|
27
|
+
if (ops[0]?.type === 'CREATE_RELATION') {
|
|
28
|
+
expect(ops[0].relation.type).toBe(SystemIds.TYPES_PROPERTY);
|
|
29
|
+
expect(ops[0].relation.fromEntity).toBe(id);
|
|
30
|
+
expect(ops[0].relation.toEntity).toBe(SystemIds.IMAGE_TYPE);
|
|
31
|
+
expect(ops[0].relation.index).toBe(INITIAL_RELATION_INDEX_VALUE);
|
|
32
|
+
}
|
|
33
|
+
if (ops[1]?.type === 'SET_TRIPLE') {
|
|
34
|
+
expect(ops[1].triple.attribute).toBe(SystemIds.IMAGE_URL_PROPERTY);
|
|
35
|
+
expect(ops[1].triple.entity).toBe(id);
|
|
36
|
+
expect(ops[1].triple.value.type).toBe('URL');
|
|
37
|
+
expect(ops[1].triple.value.value).toBe('https://example.com/image.png');
|
|
38
|
+
}
|
|
39
|
+
if (ops[2]?.type === 'SET_TRIPLE') {
|
|
40
|
+
expect(ops[2].triple.attribute).toBe(SystemIds.IMAGE_HEIGHT_PROPERTY);
|
|
41
|
+
expect(ops[2].triple.entity).toBe(id);
|
|
42
|
+
expect(ops[2].triple.value.type).toBe('NUMBER');
|
|
43
|
+
expect(ops[2].triple.value.value).toBe('100');
|
|
44
|
+
}
|
|
45
|
+
if (ops[3]?.type === 'SET_TRIPLE') {
|
|
46
|
+
expect(ops[3].triple.attribute).toBe(SystemIds.IMAGE_WIDTH_PROPERTY);
|
|
47
|
+
expect(ops[3].triple.entity).toBe(id);
|
|
48
|
+
expect(ops[3].triple.value.type).toBe('NUMBER');
|
|
49
|
+
expect(ops[3].triple.value.value).toBe('200');
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=image.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.test.js","sourceRoot":"","sources":["../../../src/core/image.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACjD,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAEnE,8EAA8E;IAC9E,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACjE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,+BAA+B,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAE5G,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -4,4 +4,23 @@
|
|
|
4
4
|
* @since 0.0.6
|
|
5
5
|
*/
|
|
6
6
|
export declare function generateBetween(first: string | null, second: string | null): string;
|
|
7
|
+
/**
|
|
8
|
+
* Generates a random position with jittering.
|
|
9
|
+
*
|
|
10
|
+
* @returns A random position as a string.
|
|
11
|
+
*/
|
|
12
|
+
export declare function generate(): string;
|
|
13
|
+
type MaybePosition = string | null;
|
|
14
|
+
export declare function compare(a: MaybePosition, b: MaybePosition): number;
|
|
15
|
+
/**
|
|
16
|
+
* Sorts a list of positions in ascending order. In
|
|
17
|
+
* the knowledge graph positions are optional. This
|
|
18
|
+
* function sorts null positions so they are always
|
|
19
|
+
* at the bottom.
|
|
20
|
+
*
|
|
21
|
+
* @param positions - The list of positions to sort.
|
|
22
|
+
* @returns The sorted list of positions.
|
|
23
|
+
*/
|
|
24
|
+
export declare function sort(positions: MaybePosition[]): MaybePosition[];
|
|
25
|
+
export {};
|
|
7
26
|
//# sourceMappingURL=position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,UAE1E"}
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,UAE1E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,KAAK,aAAa,GAAG,MAAM,GAAG,IAAI,CAAA;AAElC,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,UAOzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAEhE"}
|
|
@@ -7,4 +7,35 @@ import { generateJitteredKeyBetween } from "fractional-indexing-jittered";
|
|
|
7
7
|
export function generateBetween(first, second) {
|
|
8
8
|
return generateJitteredKeyBetween(first, second);
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Generates a random position with jittering.
|
|
12
|
+
*
|
|
13
|
+
* @returns A random position as a string.
|
|
14
|
+
*/
|
|
15
|
+
export function generate() {
|
|
16
|
+
return generateBetween(null, null);
|
|
17
|
+
}
|
|
18
|
+
export function compare(a, b) {
|
|
19
|
+
// This ALWAYS puts nulls at the bottom, regardless of what
|
|
20
|
+
// fractional indexes exist
|
|
21
|
+
if (a === null && b === null)
|
|
22
|
+
return 0;
|
|
23
|
+
if (a === null)
|
|
24
|
+
return 1; // a goes to bottom
|
|
25
|
+
if (b === null)
|
|
26
|
+
return -1; // b goes to bottom
|
|
27
|
+
return a.localeCompare(b);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sorts a list of positions in ascending order. In
|
|
31
|
+
* the knowledge graph positions are optional. This
|
|
32
|
+
* function sorts null positions so they are always
|
|
33
|
+
* at the bottom.
|
|
34
|
+
*
|
|
35
|
+
* @param positions - The list of positions to sort.
|
|
36
|
+
* @returns The sorted list of positions.
|
|
37
|
+
*/
|
|
38
|
+
export function sort(positions) {
|
|
39
|
+
return positions.sort(compare);
|
|
40
|
+
}
|
|
10
41
|
//# sourceMappingURL=position.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,MAAqB;IACzE,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,MAAqB;IACzE,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAID,MAAM,UAAU,OAAO,CAAC,CAAgB,EAAE,CAAgB;IACxD,4DAA4D;IAC5D,2BAA2B;IAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAE,mBAAmB;IAC9C,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB;IAC9C,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAAC,SAA0B;IAC7C,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.test.d.ts","sourceRoot":"","sources":["../../../src/core/position.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { generate, sort } from './position.js'; // Adjust import path as needed
|
|
3
|
+
describe('fractional index default generation', () => {
|
|
4
|
+
it('should generate a random position', () => {
|
|
5
|
+
const a = generate();
|
|
6
|
+
const b = generate();
|
|
7
|
+
expect(a).not.toEqual(b);
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe('fractional index sorting', () => {
|
|
11
|
+
describe('sort function', () => {
|
|
12
|
+
it('should handle empty array', () => {
|
|
13
|
+
const result = sort([]);
|
|
14
|
+
expect(result).toEqual([]);
|
|
15
|
+
});
|
|
16
|
+
it('should handle array with only nulls', () => {
|
|
17
|
+
const positions = [null, null, null];
|
|
18
|
+
const result = sort(positions);
|
|
19
|
+
expect(result).toEqual([null, null, null]);
|
|
20
|
+
});
|
|
21
|
+
it('should handle array with only strings', () => {
|
|
22
|
+
const positions = ['c', 'a', 'b'];
|
|
23
|
+
const result = sort(positions);
|
|
24
|
+
expect(result).toEqual(['a', 'b', 'c']);
|
|
25
|
+
});
|
|
26
|
+
it('should put null values at the bottom when mixed with strings', () => {
|
|
27
|
+
const positions = ['b', null, 'a', null, 'c'];
|
|
28
|
+
const result = sort(positions);
|
|
29
|
+
expect(result).toEqual(['a', 'b', 'c', null, null]);
|
|
30
|
+
});
|
|
31
|
+
it('should sort fractional indexes correctly', () => {
|
|
32
|
+
const positions = ['a1', 'a0', 'a2'];
|
|
33
|
+
const result = sort(positions);
|
|
34
|
+
expect(result).toEqual(['a0', 'a1', 'a2']);
|
|
35
|
+
});
|
|
36
|
+
it('should handle complex fractional indexes', () => {
|
|
37
|
+
const positions = ['a0V', 'a0', 'a0G', 'a1'];
|
|
38
|
+
const result = sort(positions);
|
|
39
|
+
expect(result).toEqual(['a0', 'a0G', 'a0V', 'a1']);
|
|
40
|
+
});
|
|
41
|
+
it('should maintain stable sort for identical values', () => {
|
|
42
|
+
const positions = ['a0', 'a0', 'a1'];
|
|
43
|
+
const result = sort(positions);
|
|
44
|
+
expect(result).toEqual(['a0', 'a0', 'a1']);
|
|
45
|
+
});
|
|
46
|
+
it('should handle single null value', () => {
|
|
47
|
+
const positions = [null];
|
|
48
|
+
const result = sort(positions);
|
|
49
|
+
expect(result).toEqual([null]);
|
|
50
|
+
});
|
|
51
|
+
it('should handle single string value', () => {
|
|
52
|
+
const positions = ['a0'];
|
|
53
|
+
const result = sort(positions);
|
|
54
|
+
expect(result).toEqual(['a0']);
|
|
55
|
+
});
|
|
56
|
+
it('should sort with nulls at bottom regardless of position in input', () => {
|
|
57
|
+
const positions1 = [null, 'a', 'b'];
|
|
58
|
+
const positions2 = ['a', null, 'b'];
|
|
59
|
+
const positions3 = ['a', 'b', null];
|
|
60
|
+
const expected = ['a', 'b', null];
|
|
61
|
+
expect(sort(positions1)).toEqual(expected);
|
|
62
|
+
expect(sort(positions2)).toEqual(expected);
|
|
63
|
+
expect(sort(positions3)).toEqual(expected);
|
|
64
|
+
});
|
|
65
|
+
it('should handle very long fractional indexes', () => {
|
|
66
|
+
const positions = [`a0${'x'.repeat(50)}`, 'a0', `a0${'y'.repeat(30)}`];
|
|
67
|
+
const result = sort(positions);
|
|
68
|
+
expect(result).toEqual(['a0', `a0${'x'.repeat(50)}`, `a0${'y'.repeat(30)}`]);
|
|
69
|
+
});
|
|
70
|
+
it('should handle mixed case and special characters', () => {
|
|
71
|
+
const positions = ['Z', 'a', 'A', 'z'];
|
|
72
|
+
const result = sort(positions);
|
|
73
|
+
// JavaScript's localeCompare should handle this correctly
|
|
74
|
+
expect(result).toEqual(['a', 'A', 'z', 'Z']);
|
|
75
|
+
});
|
|
76
|
+
it('should handle large arrays efficiently', () => {
|
|
77
|
+
const positions = [];
|
|
78
|
+
// Create a large array with mixed values
|
|
79
|
+
for (let i = 100; i >= 0; i--) {
|
|
80
|
+
positions.push(`a${i}`);
|
|
81
|
+
if (i % 10 === 0)
|
|
82
|
+
positions.push(null);
|
|
83
|
+
}
|
|
84
|
+
const result = sort(positions);
|
|
85
|
+
// Check that all string values are sorted before nulls
|
|
86
|
+
const stringValues = result.filter(p => p !== null);
|
|
87
|
+
const nullValues = result.filter(p => p === null);
|
|
88
|
+
// String values should be sorted
|
|
89
|
+
for (let i = 1; i < stringValues.length; i++) {
|
|
90
|
+
const left = stringValues[i - 1];
|
|
91
|
+
const right = stringValues[i];
|
|
92
|
+
if (left && right) {
|
|
93
|
+
expect(left.localeCompare(right)).toBeLessThanOrEqual(0);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// All nulls should be at the end
|
|
97
|
+
const firstNullIndex = result.indexOf(null);
|
|
98
|
+
if (firstNullIndex !== -1) {
|
|
99
|
+
expect(result.slice(firstNullIndex)).toEqual(nullValues);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
it('should handle edge case fractional indexes that might cause sorting issues', () => {
|
|
103
|
+
const positions = [
|
|
104
|
+
'z'.repeat(10), // Very "high" value
|
|
105
|
+
'a0',
|
|
106
|
+
null,
|
|
107
|
+
'', // Empty string
|
|
108
|
+
'a',
|
|
109
|
+
];
|
|
110
|
+
const result = sort(positions);
|
|
111
|
+
// Empty string should come first, then sorted strings, then nulls
|
|
112
|
+
expect(result[0]).toBe('');
|
|
113
|
+
expect(result[result.length - 1]).toBe(null);
|
|
114
|
+
// Check that non-null, non-empty strings are sorted
|
|
115
|
+
const nonEmptyStrings = result.filter(p => p !== null && p !== '');
|
|
116
|
+
for (let i = 1; i < nonEmptyStrings.length; i++) {
|
|
117
|
+
const left = nonEmptyStrings[i - 1];
|
|
118
|
+
const right = nonEmptyStrings[i];
|
|
119
|
+
if (left && right) {
|
|
120
|
+
expect(left.localeCompare(right)).toBeLessThanOrEqual(0);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=position.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.test.js","sourceRoot":"","sources":["../../../src/core/position.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides utility functions for working with Relations in TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.0.6
|
|
5
|
+
*/
|
|
6
|
+
import { SystemIds } from '../system-ids.js';
|
|
7
|
+
import type { CreateRelationOp, DeleteRelationOp } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Arguments for creating a new Relation.
|
|
10
|
+
*
|
|
11
|
+
* @param relationId - optional base58 encoded v4 uuid
|
|
12
|
+
* @param fromId - base58 encoded v4 uuid
|
|
13
|
+
* @param toId - base58 encoded v4 uuid
|
|
14
|
+
* @param relationTypeId - base58 encoded v4 uuid
|
|
15
|
+
* @param position - optional fractional index using position-strings
|
|
16
|
+
*/
|
|
17
|
+
type CreateRelationParams = {
|
|
18
|
+
relationId?: string;
|
|
19
|
+
fromId: string;
|
|
20
|
+
toId: string;
|
|
21
|
+
relationTypeId: string;
|
|
22
|
+
position?: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Generates ops for a new Relation.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const ops = Relation.make({
|
|
30
|
+
* fromId: 'from-id',
|
|
31
|
+
* toId: 'to-id',
|
|
32
|
+
* relationTypeId: 'relation-type-id',
|
|
33
|
+
* // optional
|
|
34
|
+
* relationId: 'relation-id',
|
|
35
|
+
* position: 'position-string',
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @param args {@link CreateRelationParams}
|
|
40
|
+
* @returns – {@link CreateRelationOp}
|
|
41
|
+
*/
|
|
42
|
+
export declare function make(args: CreateRelationParams): CreateRelationOp;
|
|
43
|
+
/**
|
|
44
|
+
* Generates ops for deleting a Relation.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const op = Relation.remove('relation-id');
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param relationId – base58 encoded v4 uuid representing the relation's entity id
|
|
52
|
+
* @returns – {@link DeleteRelationOp}
|
|
53
|
+
*/
|
|
54
|
+
export declare function remove(relationId: string): DeleteRelationOp;
|
|
55
|
+
type ReorderRelationParams = {
|
|
56
|
+
relationId: string;
|
|
57
|
+
beforeIndex?: string;
|
|
58
|
+
afterIndex?: string;
|
|
59
|
+
};
|
|
60
|
+
type ReorderRelationOp = {
|
|
61
|
+
type: 'SET_TRIPLE';
|
|
62
|
+
triple: {
|
|
63
|
+
attribute: typeof SystemIds.RELATION_INDEX;
|
|
64
|
+
entity: string;
|
|
65
|
+
value: {
|
|
66
|
+
type: 'TEXT';
|
|
67
|
+
value: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Generates op for reordering a Relation using position-strings
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* const op = Relation.reorder({
|
|
77
|
+
* relationId: 'relation-id',
|
|
78
|
+
* beforeIndex: 'before-position',
|
|
79
|
+
* afterIndex: 'after-position',
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @param args {@link ReorderRelationParams}
|
|
84
|
+
* @returns – {@link ReorderRelationOp}
|
|
85
|
+
*/
|
|
86
|
+
export declare function reorder(args: ReorderRelationParams): ReorderRelationOp;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../../src/core/relation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGtE;;;;;;;;GAQG;AACH,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CAajE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAO3D;AAED,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,SAAS,CAAC,cAAc,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CActE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides utility functions for working with Relations in TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.0.6
|
|
5
|
+
*/
|
|
6
|
+
import { INITIAL_RELATION_INDEX_VALUE } from '../../constants.js';
|
|
7
|
+
import { generate } from '../id.js';
|
|
8
|
+
import { SystemIds } from '../system-ids.js';
|
|
9
|
+
import { Position } from './position.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generates ops for a new Relation.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const ops = Relation.make({
|
|
16
|
+
* fromId: 'from-id',
|
|
17
|
+
* toId: 'to-id',
|
|
18
|
+
* relationTypeId: 'relation-type-id',
|
|
19
|
+
* // optional
|
|
20
|
+
* relationId: 'relation-id',
|
|
21
|
+
* position: 'position-string',
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @param args {@link CreateRelationParams}
|
|
26
|
+
* @returns – {@link CreateRelationOp}
|
|
27
|
+
*/
|
|
28
|
+
export function make(args) {
|
|
29
|
+
const newEntityId = args.relationId ?? generate();
|
|
30
|
+
return {
|
|
31
|
+
type: 'CREATE_RELATION',
|
|
32
|
+
relation: {
|
|
33
|
+
id: newEntityId,
|
|
34
|
+
type: args.relationTypeId,
|
|
35
|
+
fromEntity: args.fromId,
|
|
36
|
+
toEntity: args.toId,
|
|
37
|
+
index: args.position ?? INITIAL_RELATION_INDEX_VALUE,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generates ops for deleting a Relation.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* const op = Relation.remove('relation-id');
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param relationId – base58 encoded v4 uuid representing the relation's entity id
|
|
50
|
+
* @returns – {@link DeleteRelationOp}
|
|
51
|
+
*/
|
|
52
|
+
export function remove(relationId) {
|
|
53
|
+
return {
|
|
54
|
+
type: 'DELETE_RELATION',
|
|
55
|
+
relation: {
|
|
56
|
+
id: relationId,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generates op for reordering a Relation using position-strings
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* const op = Relation.reorder({
|
|
66
|
+
* relationId: 'relation-id',
|
|
67
|
+
* beforeIndex: 'before-position',
|
|
68
|
+
* afterIndex: 'after-position',
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @param args {@link ReorderRelationParams}
|
|
73
|
+
* @returns – {@link ReorderRelationOp}
|
|
74
|
+
*/
|
|
75
|
+
export function reorder(args) {
|
|
76
|
+
const newIndex = Position.createBetween(args.beforeIndex, args.afterIndex);
|
|
77
|
+
return {
|
|
78
|
+
type: 'SET_TRIPLE',
|
|
79
|
+
triple: {
|
|
80
|
+
attribute: SystemIds.RELATION_INDEX,
|
|
81
|
+
entity: args.relationId,
|
|
82
|
+
value: {
|
|
83
|
+
type: 'TEXT',
|
|
84
|
+
value: newIndex,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../../src/core/relation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmBzC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,IAAI,CAAC,IAA0B;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;IAElD,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI,CAAC,cAAc;YACzB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,4BAA4B;SACrD;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkB;IACvC,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,UAAU;SACf;KACF,CAAC;AACJ,CAAC;AAoBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,OAAO,CAAC,IAA2B;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,SAAS,EAAE,SAAS,CAAC,cAAc;YACnC,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,QAAQ;aAChB;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.test.d.ts","sourceRoot":"","sources":["../../../src/core/relation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { RELATION_INDEX } from './ids/system.js';
|
|
3
|
+
import { Position, PositionRange } from './position.js';
|
|
4
|
+
import { make, remove, reorder } from './relation.js';
|
|
5
|
+
it('should generate CreateRelationOp for CREATE_RELATION', () => {
|
|
6
|
+
const op = make({
|
|
7
|
+
relationId: 'test-relation-id',
|
|
8
|
+
fromId: 'test-entity-id',
|
|
9
|
+
relationTypeId: 'test-relation-type-id',
|
|
10
|
+
toId: 'test-entity-id',
|
|
11
|
+
position: 'test-position',
|
|
12
|
+
});
|
|
13
|
+
expect(op).toEqual({
|
|
14
|
+
type: 'CREATE_RELATION',
|
|
15
|
+
relation: {
|
|
16
|
+
id: 'test-relation-id',
|
|
17
|
+
type: 'test-relation-type-id',
|
|
18
|
+
fromEntity: 'test-entity-id',
|
|
19
|
+
toEntity: 'test-entity-id',
|
|
20
|
+
index: 'test-position',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
it('should generate DeleteRelationOp for DELETE_RELATION', () => {
|
|
25
|
+
const op = remove('test-relation-id');
|
|
26
|
+
expect(op).toEqual({
|
|
27
|
+
type: 'DELETE_RELATION',
|
|
28
|
+
relation: {
|
|
29
|
+
id: 'test-relation-id',
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it('should generate Op that places the fractional indexer between the two provided values', () => {
|
|
34
|
+
const op = reorder({
|
|
35
|
+
relationId: 'test-relation-id',
|
|
36
|
+
beforeIndex: PositionRange.FIRST,
|
|
37
|
+
afterIndex: PositionRange.LAST,
|
|
38
|
+
});
|
|
39
|
+
expect(op.type).toBe('SET_TRIPLE');
|
|
40
|
+
expect(op.triple.attribute).toBe(RELATION_INDEX);
|
|
41
|
+
expect(op.triple.entity).toBe('test-relation-id');
|
|
42
|
+
expect(op.triple.value.type).toBe('TEXT');
|
|
43
|
+
// @TODO how do we test that the resulting value is in-between the two indexes?
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=relation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.test.js","sourceRoot":"","sources":["../../../src/core/relation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAC9D,MAAM,EAAE,GAAG,IAAI,CAAC;QACd,UAAU,EAAE,kBAAkB;QAC9B,MAAM,EAAE,gBAAgB;QACxB,cAAc,EAAE,uBAAuB;QACvC,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,kBAAkB;YACtB,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,eAAe;SACvB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAC9D,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEtC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,kBAAkB;SACvB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;IAC/F,MAAM,EAAE,GAAG,OAAO,CAAC;QACjB,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,UAAU,EAAE,aAAa,CAAC,IAAI;KAC/B,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,+EAA+E;AACjF,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides utility functions for working with Triples in TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.0.6
|
|
5
|
+
*/
|
|
6
|
+
import type { DeleteTripleOp, SetTripleOp, Value } from '../types.js';
|
|
7
|
+
type CreateTripleParams = {
|
|
8
|
+
attributeId: string;
|
|
9
|
+
entityId: string;
|
|
10
|
+
value: Value;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Generates op for creating a new Triple.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const op = Triple.make({
|
|
18
|
+
* attributeId: 'attribute-id',
|
|
19
|
+
* entityId: 'entity-id',
|
|
20
|
+
* value: {
|
|
21
|
+
* type: 'TEXT',
|
|
22
|
+
* value: 'value',
|
|
23
|
+
* },
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
* @param args – {@link CreateTripleParams}
|
|
27
|
+
* @returns – {@link SetTripleOp}
|
|
28
|
+
*/
|
|
29
|
+
export declare function make(args: CreateTripleParams): SetTripleOp;
|
|
30
|
+
type DeleteTripleParams = {
|
|
31
|
+
attributeId: string;
|
|
32
|
+
entityId: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Generates op for deleting a Triple.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const op = Triple.remove({
|
|
40
|
+
* attributeId: 'attribute-id',
|
|
41
|
+
* entityId: 'entity-id',
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @param args – {@link DeleteTripleParams}
|
|
46
|
+
* @returns – {@link DeleteTripleOp}
|
|
47
|
+
*/
|
|
48
|
+
export declare function remove(args: DeleteTripleParams): DeleteTripleOp;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=triple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triple.d.ts","sourceRoot":"","sources":["../../../src/core/triple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtE,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAS1D;AAED,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAQ/D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides utility functions for working with Triples in TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.0.6
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generates op for creating a new Triple.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const op = Triple.make({
|
|
12
|
+
* attributeId: 'attribute-id',
|
|
13
|
+
* entityId: 'entity-id',
|
|
14
|
+
* value: {
|
|
15
|
+
* type: 'TEXT',
|
|
16
|
+
* value: 'value',
|
|
17
|
+
* },
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
* @param args – {@link CreateTripleParams}
|
|
21
|
+
* @returns – {@link SetTripleOp}
|
|
22
|
+
*/
|
|
23
|
+
export function make(args) {
|
|
24
|
+
return {
|
|
25
|
+
type: 'SET_TRIPLE',
|
|
26
|
+
triple: {
|
|
27
|
+
attribute: args.attributeId,
|
|
28
|
+
entity: args.entityId,
|
|
29
|
+
value: args.value,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generates op for deleting a Triple.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* const op = Triple.remove({
|
|
39
|
+
* attributeId: 'attribute-id',
|
|
40
|
+
* entityId: 'entity-id',
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @param args – {@link DeleteTripleParams}
|
|
45
|
+
* @returns – {@link DeleteTripleOp}
|
|
46
|
+
*/
|
|
47
|
+
export function remove(args) {
|
|
48
|
+
return {
|
|
49
|
+
type: 'DELETE_TRIPLE',
|
|
50
|
+
triple: {
|
|
51
|
+
attribute: args.attributeId,
|
|
52
|
+
entity: args.entityId,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=triple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triple.js","sourceRoot":"","sources":["../../../src/core/triple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,IAAI,CAAC,IAAwB;IAC3C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;KACF,CAAC;AACJ,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CAAC,IAAwB;IAC7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ;SACtB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triple.test.d.ts","sourceRoot":"","sources":["../../../src/core/triple.test.ts"],"names":[],"mappings":""}
|