@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.
@@ -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;
@@ -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
- if (typeof property.propertyOptions.allowMultiple !== "boolean") {
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(property.propertyOptions.databases)) {
66
+ if (!Array.isArray(propertyOptions.databases)) {
37
67
  return "Property options databases must be an array";
38
68
  }
39
- for (const database of property.propertyOptions.databases) {
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@imbricate/core",
3
3
  "main": "index.js",
4
- "version": "3.29.0",
4
+ "version": "3.30.1",
5
5
  "description": "Imbricate Core, Notebook for Engineers",
6
6
  "repository": {
7
7
  "type": "git",
@@ -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
  */
@@ -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`;