@imbricate/core 3.29.0 → 3.30.1
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/database/schema.d.ts +7 -1
- package/database/schema.js +33 -3
- package/document/property/default-value.js +1 -0
- package/document/property/triage-base.d.ts +1 -0
- package/document/property/triage-base.js +4 -0
- package/package.json +1 -1
- package/property/type.d.ts +6 -1
- package/property/type.js +5 -0
- package/property/validate.js +6 -0
package/database/schema.d.ts
CHANGED
|
@@ -17,6 +17,12 @@ export type ImbricateDatabaseSchemaPropertyOptionsLabelOption = {
|
|
|
17
17
|
readonly labelName: string;
|
|
18
18
|
readonly labelColor: string;
|
|
19
19
|
};
|
|
20
|
+
export type ImbricateDatabaseSchemaPropertyOptionsBinary = {
|
|
21
|
+
/**
|
|
22
|
+
* Allow multiple binary files
|
|
23
|
+
*/
|
|
24
|
+
readonly allowMultiple: boolean;
|
|
25
|
+
};
|
|
20
26
|
export type ImbricateDatabaseSchemaPropertyOptionsLabel = {
|
|
21
27
|
/**
|
|
22
28
|
* Allow multiple labels
|
|
@@ -38,7 +44,7 @@ export type ImbricateDatabaseSchemaPropertyOptionsReference = {
|
|
|
38
44
|
*/
|
|
39
45
|
readonly databases: ImbricateDatabaseSchemaPropertyOptionsReferenceDatabase[];
|
|
40
46
|
};
|
|
41
|
-
export type ImbricateDatabaseSchemaPropertyOptions<T extends IMBRICATE_PROPERTY_TYPE> = T extends IMBRICATE_PROPERTY_TYPE.BOOLEAN ? {} : T extends IMBRICATE_PROPERTY_TYPE.STRING ? {} : T extends IMBRICATE_PROPERTY_TYPE.NUMBER ? {} : T extends IMBRICATE_PROPERTY_TYPE.MARKDOWN ? {} : T extends IMBRICATE_PROPERTY_TYPE.JSON ? {} : T extends IMBRICATE_PROPERTY_TYPE.IMBRISCRIPT ? {} : T extends IMBRICATE_PROPERTY_TYPE.DATE ? {} : T extends IMBRICATE_PROPERTY_TYPE.LABEL ? ImbricateDatabaseSchemaPropertyOptionsLabel : T extends IMBRICATE_PROPERTY_TYPE.REFERENCE ? ImbricateDatabaseSchemaPropertyOptionsReference : never;
|
|
47
|
+
export type ImbricateDatabaseSchemaPropertyOptions<T extends IMBRICATE_PROPERTY_TYPE> = T extends IMBRICATE_PROPERTY_TYPE.BINARY ? ImbricateDatabaseSchemaPropertyOptionsBinary : T extends IMBRICATE_PROPERTY_TYPE.BOOLEAN ? {} : T extends IMBRICATE_PROPERTY_TYPE.STRING ? {} : T extends IMBRICATE_PROPERTY_TYPE.NUMBER ? {} : T extends IMBRICATE_PROPERTY_TYPE.MARKDOWN ? {} : T extends IMBRICATE_PROPERTY_TYPE.JSON ? {} : T extends IMBRICATE_PROPERTY_TYPE.IMBRISCRIPT ? {} : T extends IMBRICATE_PROPERTY_TYPE.DATE ? {} : T extends IMBRICATE_PROPERTY_TYPE.LABEL ? ImbricateDatabaseSchemaPropertyOptionsLabel : T extends IMBRICATE_PROPERTY_TYPE.REFERENCE ? ImbricateDatabaseSchemaPropertyOptionsReference : never;
|
|
42
48
|
export type ImbricateDatabaseSchemaPropertyForCreation<T extends IMBRICATE_PROPERTY_TYPE> = {
|
|
43
49
|
readonly propertyName: string;
|
|
44
50
|
readonly propertyType: T;
|
package/database/schema.js
CHANGED
|
@@ -25,18 +25,48 @@ const validateImbricateSchemaProperty = (property) => {
|
|
|
25
25
|
if (!Object.values(type_1.IMBRICATE_PROPERTY_TYPE).includes(property.propertyType)) {
|
|
26
26
|
return "Property type must be a valid type";
|
|
27
27
|
}
|
|
28
|
+
// IMBRICATE_PROPERTY_TYPE SWITCH
|
|
28
29
|
switch (property.propertyType) {
|
|
30
|
+
case type_1.IMBRICATE_PROPERTY_TYPE.BINARY: {
|
|
31
|
+
if (typeof property.propertyOptions !== "object") {
|
|
32
|
+
return "Property options must be an object";
|
|
33
|
+
}
|
|
34
|
+
const propertyOptions = property.propertyOptions;
|
|
35
|
+
if (typeof propertyOptions.allowMultiple !== "boolean") {
|
|
36
|
+
return "Property options allowMultiple must be a boolean";
|
|
37
|
+
}
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case type_1.IMBRICATE_PROPERTY_TYPE.LABEL: {
|
|
41
|
+
if (typeof property.propertyOptions !== "object") {
|
|
42
|
+
return "Property options must be an object";
|
|
43
|
+
}
|
|
44
|
+
const propertyOptions = property.propertyOptions;
|
|
45
|
+
if (typeof propertyOptions.allowMultiple !== "boolean") {
|
|
46
|
+
return "Property options allowMultiple must be a boolean";
|
|
47
|
+
}
|
|
48
|
+
if (!Array.isArray(propertyOptions.labelOptions)) {
|
|
49
|
+
return "Property options labelOptions must be an array";
|
|
50
|
+
}
|
|
51
|
+
for (const labelOption of propertyOptions.labelOptions) {
|
|
52
|
+
if (typeof labelOption.labelIdentifier !== "string") {
|
|
53
|
+
return "Property options labelOptions labelIdentifier must be a string";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
29
58
|
case type_1.IMBRICATE_PROPERTY_TYPE.REFERENCE: {
|
|
30
59
|
if (typeof property.propertyOptions !== "object") {
|
|
31
60
|
return "Property options must be an object";
|
|
32
61
|
}
|
|
33
|
-
|
|
62
|
+
const propertyOptions = property.propertyOptions;
|
|
63
|
+
if (typeof propertyOptions.allowMultiple !== "boolean") {
|
|
34
64
|
return "Property options allowMultiple must be a boolean";
|
|
35
65
|
}
|
|
36
|
-
if (!Array.isArray(
|
|
66
|
+
if (!Array.isArray(propertyOptions.databases)) {
|
|
37
67
|
return "Property options databases must be an array";
|
|
38
68
|
}
|
|
39
|
-
for (const database of
|
|
69
|
+
for (const database of propertyOptions.databases) {
|
|
40
70
|
if (typeof database.originUniqueIdentifier !== "string") {
|
|
41
71
|
return "Database originUniqueIdentifier must be a string";
|
|
42
72
|
}
|
|
@@ -10,6 +10,7 @@ const type_1 = require("../../property/type");
|
|
|
10
10
|
// IMBRICATE_PROPERTY_TYPE SWITCH
|
|
11
11
|
const getImbricateDefaultValueOfProperty = (type) => {
|
|
12
12
|
switch (type) {
|
|
13
|
+
case type_1.IMBRICATE_PROPERTY_TYPE.BINARY: return [];
|
|
13
14
|
case type_1.IMBRICATE_PROPERTY_TYPE.BOOLEAN: return false;
|
|
14
15
|
case type_1.IMBRICATE_PROPERTY_TYPE.STRING: return "";
|
|
15
16
|
case type_1.IMBRICATE_PROPERTY_TYPE.NUMBER: return 0;
|
|
@@ -20,6 +20,7 @@ export declare class ImbricateDocumentPropertyTriageBase<Result> {
|
|
|
20
20
|
* @returns triage manager
|
|
21
21
|
*/
|
|
22
22
|
forPropertyKey<T extends IMBRICATE_PROPERTY_TYPE>(propertyKey: ImbricatePropertyKey, triageFunction: ImbricatePropertyTriageFunction<T, Result>): this;
|
|
23
|
+
forBinary(triageFunction: ImbricatePropertyTriageFunction<IMBRICATE_PROPERTY_TYPE.BINARY, Result>): this;
|
|
23
24
|
forBoolean(triageFunction: ImbricatePropertyTriageFunction<IMBRICATE_PROPERTY_TYPE.BOOLEAN, Result>): this;
|
|
24
25
|
forString(triageFunction: ImbricatePropertyTriageFunction<IMBRICATE_PROPERTY_TYPE.STRING, Result>): this;
|
|
25
26
|
forNumber(triageFunction: ImbricatePropertyTriageFunction<IMBRICATE_PROPERTY_TYPE.NUMBER, Result>): this;
|
|
@@ -25,6 +25,10 @@ class ImbricateDocumentPropertyTriageBase {
|
|
|
25
25
|
this._triageFunctionsByKey.set(propertyKey, triageFunction);
|
|
26
26
|
return this;
|
|
27
27
|
}
|
|
28
|
+
forBinary(triageFunction) {
|
|
29
|
+
this._triageFunctionsByType.set(type_1.IMBRICATE_PROPERTY_TYPE.BINARY, triageFunction);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
28
32
|
forBoolean(triageFunction) {
|
|
29
33
|
this._triageFunctionsByType.set(type_1.IMBRICATE_PROPERTY_TYPE.BOOLEAN, triageFunction);
|
|
30
34
|
return this;
|
package/package.json
CHANGED
package/property/type.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ export declare enum IMBRICATE_PROPERTY_TYPE {
|
|
|
11
11
|
* BOOLEAN - boolean, store as boolean
|
|
12
12
|
*/
|
|
13
13
|
BOOLEAN = "BOOLEAN",
|
|
14
|
+
/**
|
|
15
|
+
* BINARY - binary, store as a list of static object unique identifier
|
|
16
|
+
* Note: Binary is always stored as an array, even if it is a single static object identifier
|
|
17
|
+
*/
|
|
18
|
+
BINARY = "BINARY",
|
|
14
19
|
/**
|
|
15
20
|
* STRING - string, store as plain text
|
|
16
21
|
*/
|
|
@@ -53,4 +58,4 @@ export type ImbricatePropertyValueObjectReference = {
|
|
|
53
58
|
readonly databaseUniqueIdentifier: string;
|
|
54
59
|
readonly documentUniqueIdentifier: string;
|
|
55
60
|
};
|
|
56
|
-
export type ImbricatePropertyValueObject<T extends IMBRICATE_PROPERTY_TYPE> = T extends IMBRICATE_PROPERTY_TYPE.BOOLEAN ? boolean : T extends IMBRICATE_PROPERTY_TYPE.STRING ? string : T extends IMBRICATE_PROPERTY_TYPE.NUMBER ? number : T extends IMBRICATE_PROPERTY_TYPE.MARKDOWN ? string : T extends IMBRICATE_PROPERTY_TYPE.JSON ? string : T extends IMBRICATE_PROPERTY_TYPE.IMBRISCRIPT ? string : T extends IMBRICATE_PROPERTY_TYPE.DATE ? string : T extends IMBRICATE_PROPERTY_TYPE.LABEL ? string[] : T extends IMBRICATE_PROPERTY_TYPE.REFERENCE ? ImbricatePropertyValueObjectReference[] : never;
|
|
61
|
+
export type ImbricatePropertyValueObject<T extends IMBRICATE_PROPERTY_TYPE> = T extends IMBRICATE_PROPERTY_TYPE.BINARY ? string[] : T extends IMBRICATE_PROPERTY_TYPE.BOOLEAN ? boolean : T extends IMBRICATE_PROPERTY_TYPE.STRING ? string : T extends IMBRICATE_PROPERTY_TYPE.NUMBER ? number : T extends IMBRICATE_PROPERTY_TYPE.MARKDOWN ? string : T extends IMBRICATE_PROPERTY_TYPE.JSON ? string : T extends IMBRICATE_PROPERTY_TYPE.IMBRISCRIPT ? string : T extends IMBRICATE_PROPERTY_TYPE.DATE ? string : T extends IMBRICATE_PROPERTY_TYPE.LABEL ? string[] : T extends IMBRICATE_PROPERTY_TYPE.REFERENCE ? ImbricatePropertyValueObjectReference[] : never;
|
package/property/type.js
CHANGED
|
@@ -15,6 +15,11 @@ var IMBRICATE_PROPERTY_TYPE;
|
|
|
15
15
|
* BOOLEAN - boolean, store as boolean
|
|
16
16
|
*/
|
|
17
17
|
IMBRICATE_PROPERTY_TYPE["BOOLEAN"] = "BOOLEAN";
|
|
18
|
+
/**
|
|
19
|
+
* BINARY - binary, store as a list of static object unique identifier
|
|
20
|
+
* Note: Binary is always stored as an array, even if it is a single static object identifier
|
|
21
|
+
*/
|
|
22
|
+
IMBRICATE_PROPERTY_TYPE["BINARY"] = "BINARY";
|
|
18
23
|
/**
|
|
19
24
|
* STRING - string, store as plain text
|
|
20
25
|
*/
|
package/property/validate.js
CHANGED
|
@@ -41,6 +41,12 @@ const validateImbricateProperties = (properties, schema, allowExtraProperties =
|
|
|
41
41
|
}
|
|
42
42
|
// IMBRICATE_PROPERTY_TYPE SWITCH
|
|
43
43
|
switch (property.propertyType) {
|
|
44
|
+
case type_1.IMBRICATE_PROPERTY_TYPE.BINARY: {
|
|
45
|
+
if (!Array.isArray(property.propertyValue)) {
|
|
46
|
+
return `Property ${key} value must be an array of string`;
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
44
50
|
case type_1.IMBRICATE_PROPERTY_TYPE.BOOLEAN: {
|
|
45
51
|
if (typeof property.propertyValue !== "boolean") {
|
|
46
52
|
return `Property ${key} value must be a boolean`;
|