@imbricate/core 3.28.0 → 3.30.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.
- package/database/schema.d.ts +9 -1
- 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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @namespace Database
|
|
4
4
|
* @description Schema
|
|
5
5
|
*/
|
|
6
|
+
import { ImbricatePropertyVariant } from "../property/definition";
|
|
6
7
|
import { IMBRICATE_PROPERTY_TYPE } from "../property/type";
|
|
7
8
|
export type ImbricateDatabaseSchemaProperty<T extends IMBRICATE_PROPERTY_TYPE> = {
|
|
8
9
|
readonly propertyIdentifier: string;
|
|
@@ -16,6 +17,12 @@ export type ImbricateDatabaseSchemaPropertyOptionsLabelOption = {
|
|
|
16
17
|
readonly labelName: string;
|
|
17
18
|
readonly labelColor: string;
|
|
18
19
|
};
|
|
20
|
+
export type ImbricateDatabaseSchemaPropertyOptionsBinary = {
|
|
21
|
+
/**
|
|
22
|
+
* Allow multiple binary files
|
|
23
|
+
*/
|
|
24
|
+
readonly allowMultiple: boolean;
|
|
25
|
+
};
|
|
19
26
|
export type ImbricateDatabaseSchemaPropertyOptionsLabel = {
|
|
20
27
|
/**
|
|
21
28
|
* Allow multiple labels
|
|
@@ -37,10 +44,11 @@ export type ImbricateDatabaseSchemaPropertyOptionsReference = {
|
|
|
37
44
|
*/
|
|
38
45
|
readonly databases: ImbricateDatabaseSchemaPropertyOptionsReferenceDatabase[];
|
|
39
46
|
};
|
|
40
|
-
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;
|
|
41
48
|
export type ImbricateDatabaseSchemaPropertyForCreation<T extends IMBRICATE_PROPERTY_TYPE> = {
|
|
42
49
|
readonly propertyName: string;
|
|
43
50
|
readonly propertyType: T;
|
|
51
|
+
readonly propertyVariant: ImbricatePropertyVariant;
|
|
44
52
|
readonly propertyOptions: ImbricateDatabaseSchemaPropertyOptions<T>;
|
|
45
53
|
readonly isPrimaryKey?: boolean;
|
|
46
54
|
};
|
|
@@ -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`;
|