@linkurious/ogma-linkurious-parser 2.10.16 → 3.0.5
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/README.md +1 -1
- package/dist/captions/captions.js +5 -5
- package/dist/captions/captions.js.map +1 -1
- package/dist/filters/filters.js +15 -18
- package/dist/filters/filters.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ogma/features/styles.js +14 -6
- package/dist/ogma/features/styles.js.map +1 -1
- package/dist/ogma/index.d.ts +7 -3
- package/dist/ogma/index.js +16 -16
- package/dist/ogma/index.js.map +1 -1
- package/dist/styles/edgeAttributes.d.ts +2 -2
- package/dist/styles/edgeAttributes.js +20 -26
- package/dist/styles/edgeAttributes.js.map +1 -1
- package/dist/styles/itemAttributes.d.ts +1 -1
- package/dist/styles/itemAttributes.js +2 -2
- package/dist/styles/itemAttributes.js.map +1 -1
- package/dist/styles/styleRule.d.ts +4 -4
- package/dist/styles/styleRule.js +5 -15
- package/dist/styles/styleRule.js.map +1 -1
- package/dist/styles/styleRules.d.ts +1 -1
- package/dist/styles/styleRules.js.map +1 -1
- package/dist/tools/colorPalette.d.ts +5 -0
- package/dist/tools/colorPalette.js +144 -0
- package/dist/tools/colorPalette.js.map +1 -0
- package/dist/tools/ogmaTool.d.ts +1 -6
- package/dist/tools/ogmaTool.js +4 -147
- package/dist/tools/ogmaTool.js.map +1 -1
- package/dist/tools/tools.d.ts +4 -4
- package/dist/tools/tools.js +5 -8
- package/dist/tools/tools.js.map +1 -1
- package/package.json +10 -8
package/dist/tools/tools.js
CHANGED
|
@@ -59,7 +59,7 @@ var Tools = /** @class */ (function () {
|
|
|
59
59
|
* Return a value from a nested object depending on a keyPath
|
|
60
60
|
*/
|
|
61
61
|
Tools.getIn = function (ref, path) {
|
|
62
|
-
return path.reduce(function (p, c) { return (p && p[c] !== undefined ? p[c] : undefined); },
|
|
62
|
+
return path.reduce(function (p, c) { return (p && p[c] !== undefined ? p[c] : undefined); }, ref);
|
|
63
63
|
};
|
|
64
64
|
/**
|
|
65
65
|
* Return a clone of an object
|
|
@@ -100,9 +100,9 @@ var Tools = /** @class */ (function () {
|
|
|
100
100
|
return node.getAdjacentNodes({ policy: 'exclude-sources', filter: 'raw' }).size;
|
|
101
101
|
};
|
|
102
102
|
/**
|
|
103
|
-
* Return a
|
|
103
|
+
* Return a formatted version of a number
|
|
104
104
|
*/
|
|
105
|
-
Tools.
|
|
105
|
+
Tools.formatNumber = function (number) {
|
|
106
106
|
var div = 1;
|
|
107
107
|
var suffix = '';
|
|
108
108
|
var sign = number < 0 ? '-' : '';
|
|
@@ -131,10 +131,7 @@ var Tools = /** @class */ (function () {
|
|
|
131
131
|
* @return {boolean}
|
|
132
132
|
*/
|
|
133
133
|
Tools.isStringFilled = function (value) {
|
|
134
|
-
|
|
135
|
-
return value.trim() !== '';
|
|
136
|
-
}
|
|
137
|
-
return true;
|
|
134
|
+
return value.trim() !== '';
|
|
138
135
|
};
|
|
139
136
|
Tools.getValueFromLkProperty = function (property) {
|
|
140
137
|
if (typeof property === 'object' && 'type' in property) {
|
|
@@ -305,7 +302,7 @@ var Tools = /** @class */ (function () {
|
|
|
305
302
|
* Return true if a value is not undefined, not null and not an empty string
|
|
306
303
|
*/
|
|
307
304
|
Tools.valueExists = function (value) {
|
|
308
|
-
return Tools.isDefined(value) && Tools.isStringFilled(value);
|
|
305
|
+
return Tools.isDefined(value) && (typeof value !== 'string' || Tools.isStringFilled(value));
|
|
309
306
|
};
|
|
310
307
|
/**
|
|
311
308
|
* Return true if `n` is (or can be parsed as) a number
|
package/dist/tools/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport {Node, NodeList} from 'ogma';\nimport {LkNodeData, LkProperty} from '@linkurious/rest-client';\n\nexport {sortBy};\nconst URL_PATTERN = /([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*:\\/\\/[^\\s]+)/i;\nconst IMAGE_PATTERN = /\\S+\\.(gif|jpe?g|tiff|png|bmp|svg)$/i;\nexport const CAPTION_HEURISTIC: string[] = [\n 'label',\n 'Label',\n 'name',\n 'Name',\n 'title',\n 'Title',\n 'rdfs:label'\n];\n\nexport class Tools {\n public static isEqual(v1: unknown, v2: unknown): boolean {\n return isEqual(v1, v2);\n }\n\n /**\n * Check that a value is defined : not null and not undefined\n *\n * @param {any} value\n * @return {boolean}\n */\n public static isDefined(value: unknown): boolean {\n return value !== undefined && value !== null;\n }\n\n /**\n * Truncate a text\n */\n public static truncate(value: unknown, position: 'middle' | 'end', limit = 0): string {\n const suffix = '\\u2026';\n if (!Tools.isDefined(value)) {\n return ``;\n }\n const valueToTruncate = `${value}`;\n if (valueToTruncate.length <= limit + 1) {\n return valueToTruncate;\n }\n const fixedLimit = limit - 1;\n switch (position) {\n case 'middle':\n return (\n valueToTruncate.substring(0, Math.ceil(fixedLimit / 2)) +\n suffix +\n valueToTruncate.substring(valueToTruncate.length - Math.floor(fixedLimit / 2))\n );\n\n case 'end':\n return valueToTruncate.substring(0, fixedLimit) + suffix;\n }\n }\n\n /**\n * Return a value from a nested object depending on a keyPath\n */\n public static getIn(ref: any, path: Array<string | number>): any {\n return path.reduce((p, c) => (p && p[c] !== undefined ? p[c] : undefined), Tools.clone(ref));\n }\n\n /**\n * Return a clone of an object\n */\n public static clone(o: any) {\n return typeof o === 'object'\n ? JSON.parse(\n JSON.stringify(o, (k, v) => {\n return v instanceof Set ? {} : v;\n })\n )\n : o;\n }\n\n /**\n * Get the amount of hidden neighbors from a list of nodes\n *\n * @param nodes\n */\n public static getHiddenNeighbors(nodes: NodeList<LkNodeData>): number {\n return nodes.reduce((result: number, node: Node<LkNodeData>) => {\n const statistics = node.getData('statistics');\n if (statistics !== undefined) {\n const hiddenNeighbors =\n statistics.degree !== undefined && !statistics.supernode\n ? statistics.degree - Tools.getDegreeWithoutSelfConnection(node)\n : statistics.supernodeDegree;\n if (hiddenNeighbors !== undefined && hiddenNeighbors > 0) {\n return (result += hiddenNeighbors);\n }\n }\n return result;\n }, 0);\n }\n\n /**\n * Return the visible degree of a node without self connection (self edge)\n *\n * @param {Node} node\n * @return {number}\n */\n public static getDegreeWithoutSelfConnection(node: Node<LkNodeData>): number {\n return node.getAdjacentNodes({policy: 'exclude-sources', filter: 'raw'}).size;\n }\n\n /**\n * Return a shortened version of a number\n */\n public static shortenNumber(number: number): string {\n let div = 1;\n let suffix = '';\n const sign = number < 0 ? '-' : '';\n number = Math.abs(number);\n\n if (number >= 1000000) {\n div = 1000000;\n suffix = 'M';\n } else if (number >= 1000) {\n div = 1000;\n suffix = 'k';\n }\n const nn = number / div;\n // if there is a decimal value and nn < 10\n if (nn < 10 && nn % 1 !== 0) {\n return sign + nn.toFixed(1) + suffix;\n } else {\n return sign + Math.floor(nn) + suffix;\n }\n }\n\n /**\n * Return true if a string is not composed only by invisible char\n *\n * @param {string} value\n * @return {boolean}\n */\n public static isStringFilled(value: string): boolean {\n if (typeof value === 'string') {\n return value.trim() !== '';\n }\n return true;\n }\n\n public static getValueFromLkProperty(property: LkProperty): null | string | number | boolean {\n if (typeof property === 'object' && 'type' in property) {\n if (!('original' in property) && !('value' in property)) {\n return null;\n }\n if ('original' in property) {\n return `${property.original}`;\n }\n if ('value' in property) {\n return Tools.formatDate(\n new Date(\n new Date(property.value).getTime() + Tools.timezoneToMilliseconds(property.timezone)\n ).toISOString()\n );\n }\n }\n return property;\n }\n\n /**\n * Return a formatted date as a string\n */\n public static formatDate(\n isoString: string,\n isDatetime?: boolean,\n timezone?: number\n ): string | null {\n // The date received from the server will be always in seconds\n let offsetDate: string | number = isoString;\n if (timezone !== undefined) {\n offsetDate = new Date(isoString).getTime() + timezone * 1000;\n }\n const dateObject = new Date(offsetDate);\n\n if (isNaN(dateObject.getUTCFullYear())) {\n return null;\n }\n let formattedDate =\n dateObject.getFullYear() +\n '-' +\n ((dateObject.getUTCMonth() + 1).toString().length === 1\n ? '0' + (dateObject.getUTCMonth() + 1)\n : dateObject.getUTCMonth() + 1) +\n '-' +\n (dateObject.getUTCDate().toString().length === 1\n ? '0' + dateObject.getUTCDate()\n : dateObject.getUTCDate());\n\n if (isDatetime) {\n formattedDate +=\n ' ' +\n (dateObject.getUTCHours().toString().length === 1\n ? '0' + dateObject.getUTCHours()\n : dateObject.getUTCHours()) +\n ':' +\n (dateObject.getUTCMinutes().toString().length === 1\n ? '0' + dateObject.getUTCMinutes()\n : dateObject.getUTCMinutes()) +\n ':' +\n (dateObject.getUTCSeconds().toString().length === 1\n ? '0' + dateObject.getUTCSeconds()\n : dateObject.getUTCSeconds());\n }\n return formattedDate;\n }\n\n /**\n * From \"+03:00\" return the offset in milliseconds\n * @param timezone\n */\n public static timezoneToMilliseconds(timezone: string | undefined): number {\n if (timezone === undefined) {\n return 0;\n }\n if (timezone === 'Z') {\n return 0;\n }\n const sign = timezone[0];\n const [hours, minutes] = timezone.slice(1).split(':');\n return sign === '+'\n ? this.sanitizeFormattedNumber(hours) * 3.6e6 + this.sanitizeFormattedNumber(minutes) * 60000\n : (this.sanitizeFormattedNumber(hours) * 3.6e6 +\n this.sanitizeFormattedNumber(minutes) * 60000) *\n -1;\n }\n\n public static sanitizeFormattedNumber(str: string): number {\n if (str.length === 2 && str.startsWith('0')) {\n return Tools.parseNumber(str[1]);\n }\n return Tools.parseNumber(str);\n }\n\n /**\n * Return true if `n` is (or can be parsed as) a float, but is NOT an integer\n *\n * @param {any} n\n * @return {number} a number (NaN is `n` cannot be parsed as a number)\n */\n public static parseNumber(n: unknown): number {\n // string: try to parse as number (allow ',' as decimal separator)\n if (typeof n === 'string') {\n // prevent the empty string to be parsed as 0\n if (n.trim() === '') {\n return Number.NaN;\n }\n\n n = +n.replace(',', '.').replace(' ', '');\n }\n\n // (the string could not be parsed) OR (it was neither string nor number)\n if (typeof n !== 'number') {\n return Number.NaN;\n }\n\n // false for NaN, +Infinity, -Infinity\n if (!isFinite(n)) {\n return Number.NaN;\n }\n\n return n;\n }\n\n /**\n * Return an Array without duplicated keys\n *\n * @param {Array<any>} arr\n * @param {string} key\n * @return {Array<any>}\n */\n public static uniqBy(arr: Array<any>, key?: string): Array<any> {\n const seen = new Set();\n if (key) {\n const result = [];\n for (let i = 0; i < arr.length; ++i) {\n if (arr[i] && arr[i][key] && !seen.has(arr[i][key])) {\n seen.add(arr[i][key]);\n result.push(arr[i]);\n } else if (!arr[i][key]) {\n result.push(arr[i]);\n }\n }\n return result;\n }\n return typeof arr[0] === 'object'\n ? Array.from(new Set(arr.map((v) => JSON.stringify(v)))).map((v) => JSON.parse(v))\n : Array.from(new Set(arr));\n }\n\n /**\n * Return 'image' or 'url' depending on the given string\n *\n * @param {string} value\n * @return {\"image\" | \"url\"}\n */\n public static getType(value: string): 'image' | 'url' | 'imageUrl' | undefined {\n if (Tools.isImage(value) && Tools.isUrl(value)) {\n return 'imageUrl';\n }\n\n if (Tools.isImage(value)) {\n return 'image';\n }\n\n if (Tools.isUrl(value)) {\n return 'url';\n }\n\n return undefined;\n }\n\n /**\n * Return true if the given string is an url that match the schema handled by LKE\n *\n * @param {string} value\n * @return {boolean}\n */\n private static isUrl(value: string): boolean {\n return URL_PATTERN.test(value);\n }\n\n /**\n * Return true if the given string is an url with an image extension\n *\n * @param {string} value\n * @return {boolean}\n */\n private static isImage(value: string): boolean {\n return IMAGE_PATTERN.test(value);\n }\n\n /**\n * Return true if a value is not undefined, not null and not an empty string\n */\n public static valueExists(value: string): boolean {\n return Tools.isDefined(value) && Tools.isStringFilled(value);\n }\n\n /**\n * Return true if `n` is (or can be parsed as) a number\n */\n public static isNumber(n: unknown): boolean {\n n = Tools.parseNumber(n);\n return Tools.isDefined(n) && n === n;\n }\n\n /**\n * return the correct property value\n */\n public static getPropertyValue(\n property: LkProperty,\n invalidAsString?: boolean,\n formattedDates?: boolean\n ): undefined | null | string | number | boolean | Array<string> {\n if (typeof property === 'object' && !Array.isArray(property)) {\n if (!('status' in property)) {\n if ((property.type === 'date' || property.type === 'datetime') && formattedDates) {\n return Tools.formatDate(property.value, property.type === 'datetime');\n } else if (property.type === 'date' || property.type === 'datetime') {\n return new Date(property.value).getTime();\n }\n } else if (invalidAsString) {\n return 'original' in property ? property.original : undefined;\n } else {\n return undefined;\n }\n }\n return property;\n }\n\n /**\n * Parse the given value and return a float number or NaN\n *\n * @param {any} n\n * @return {number}\n */\n public static parseFloat(n: unknown): number {\n return Tools.parseNumber(n);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport {Node, NodeList} from 'ogma';\nimport {LkNodeData, LkProperty} from '@linkurious/rest-client';\n\nexport {sortBy};\nconst URL_PATTERN = /([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*:\\/\\/[^\\s]+)/i;\nconst IMAGE_PATTERN = /\\S+\\.(gif|jpe?g|tiff|png|bmp|svg)$/i;\nexport const CAPTION_HEURISTIC: string[] = [\n 'label',\n 'Label',\n 'name',\n 'Name',\n 'title',\n 'Title',\n 'rdfs:label'\n];\n\nexport class Tools {\n public static isEqual(v1: unknown, v2: unknown): boolean {\n return isEqual(v1, v2);\n }\n\n /**\n * Check that a value is defined : not null and not undefined\n *\n * @param {any} value\n * @return {boolean}\n */\n public static isDefined<T>(value: T): value is NonNullable<T> {\n return value !== undefined && value !== null;\n }\n\n /**\n * Truncate a text\n */\n public static truncate(value: unknown, position: 'middle' | 'end', limit = 0): string {\n const suffix = '\\u2026';\n if (!Tools.isDefined(value)) {\n return ``;\n }\n const valueToTruncate = `${value}`;\n if (valueToTruncate.length <= limit + 1) {\n return valueToTruncate;\n }\n const fixedLimit = limit - 1;\n switch (position) {\n case 'middle':\n return (\n valueToTruncate.substring(0, Math.ceil(fixedLimit / 2)) +\n suffix +\n valueToTruncate.substring(valueToTruncate.length - Math.floor(fixedLimit / 2))\n );\n\n case 'end':\n return valueToTruncate.substring(0, fixedLimit) + suffix;\n }\n }\n\n /**\n * Return a value from a nested object depending on a keyPath\n */\n public static getIn(ref: any, path: Array<string | number>): any {\n return path.reduce((p, c) => (p && p[c] !== undefined ? p[c] : undefined), ref);\n }\n\n /**\n * Return a clone of an object\n */\n public static clone(o: any) {\n return typeof o === 'object'\n ? JSON.parse(\n JSON.stringify(o, (k, v) => {\n return v instanceof Set ? {} : v;\n })\n )\n : o;\n }\n\n /**\n * Get the amount of hidden neighbors from a list of nodes\n *\n * @param nodes\n */\n public static getHiddenNeighbors(nodes: NodeList<LkNodeData>): number {\n return nodes.reduce((result: number, node: Node<LkNodeData>) => {\n const statistics = node.getData('statistics');\n if (statistics !== undefined) {\n const hiddenNeighbors =\n statistics.degree !== undefined && !statistics.supernode\n ? statistics.degree - Tools.getDegreeWithoutSelfConnection(node)\n : statistics.supernodeDegree;\n if (hiddenNeighbors !== undefined && hiddenNeighbors > 0) {\n return (result += hiddenNeighbors);\n }\n }\n return result;\n }, 0);\n }\n\n /**\n * Return the visible degree of a node without self connection (self edge)\n *\n * @param {Node} node\n * @return {number}\n */\n public static getDegreeWithoutSelfConnection(node: Node<LkNodeData>): number {\n return node.getAdjacentNodes({policy: 'exclude-sources', filter: 'raw'}).size;\n }\n\n /**\n * Return a formatted version of a number\n */\n public static formatNumber(number: number): string {\n let div = 1;\n let suffix = '';\n const sign = number < 0 ? '-' : '';\n number = Math.abs(number);\n\n if (number >= 1000000) {\n div = 1000000;\n suffix = 'M';\n } else if (number >= 1000) {\n div = 1000;\n suffix = 'k';\n }\n const nn = number / div;\n // if there is a decimal value and nn < 10\n if (nn < 10 && nn % 1 !== 0) {\n return sign + nn.toFixed(1) + suffix;\n } else {\n return sign + Math.floor(nn) + suffix;\n }\n }\n\n /**\n * Return true if a string is not composed only by invisible char\n *\n * @param {string} value\n * @return {boolean}\n */\n public static isStringFilled(value: string): boolean {\n return value.trim() !== '';\n }\n\n public static getValueFromLkProperty(property: LkProperty): null | string | number | boolean {\n if (typeof property === 'object' && 'type' in property) {\n if (!('original' in property) && !('value' in property)) {\n return null;\n }\n if ('original' in property) {\n return `${property.original}`;\n }\n if ('value' in property) {\n return Tools.formatDate(\n new Date(\n new Date(property.value).getTime() + Tools.timezoneToMilliseconds(property.timezone)\n ).toISOString()\n );\n }\n }\n return property;\n }\n\n /**\n * Return a formatted date as a string\n */\n public static formatDate(\n isoString: string,\n isDatetime?: boolean,\n timezone?: number\n ): string | null {\n // The date received from the server will be always in seconds\n let offsetDate: string | number = isoString;\n if (timezone !== undefined) {\n offsetDate = new Date(isoString).getTime() + timezone * 1000;\n }\n const dateObject = new Date(offsetDate);\n\n if (isNaN(dateObject.getUTCFullYear())) {\n return null;\n }\n let formattedDate =\n dateObject.getFullYear() +\n '-' +\n ((dateObject.getUTCMonth() + 1).toString().length === 1\n ? '0' + (dateObject.getUTCMonth() + 1)\n : dateObject.getUTCMonth() + 1) +\n '-' +\n (dateObject.getUTCDate().toString().length === 1\n ? '0' + dateObject.getUTCDate()\n : dateObject.getUTCDate());\n\n if (isDatetime) {\n formattedDate +=\n ' ' +\n (dateObject.getUTCHours().toString().length === 1\n ? '0' + dateObject.getUTCHours()\n : dateObject.getUTCHours()) +\n ':' +\n (dateObject.getUTCMinutes().toString().length === 1\n ? '0' + dateObject.getUTCMinutes()\n : dateObject.getUTCMinutes()) +\n ':' +\n (dateObject.getUTCSeconds().toString().length === 1\n ? '0' + dateObject.getUTCSeconds()\n : dateObject.getUTCSeconds());\n }\n return formattedDate;\n }\n\n /**\n * From \"+03:00\" return the offset in milliseconds\n * @param timezone\n */\n public static timezoneToMilliseconds(timezone: string | undefined): number {\n if (timezone === undefined) {\n return 0;\n }\n if (timezone === 'Z') {\n return 0;\n }\n const sign = timezone[0];\n const [hours, minutes] = timezone.slice(1).split(':');\n return sign === '+'\n ? this.sanitizeFormattedNumber(hours) * 3.6e6 + this.sanitizeFormattedNumber(minutes) * 60000\n : (this.sanitizeFormattedNumber(hours) * 3.6e6 +\n this.sanitizeFormattedNumber(minutes) * 60000) *\n -1;\n }\n\n public static sanitizeFormattedNumber(str: string): number {\n if (str.length === 2 && str.startsWith('0')) {\n return Tools.parseNumber(str[1]);\n }\n return Tools.parseNumber(str);\n }\n\n /**\n * Return true if `n` is (or can be parsed as) a float, but is NOT an integer\n *\n * @param {any} n\n * @return {number} a number (NaN is `n` cannot be parsed as a number)\n */\n public static parseNumber(n: unknown): number {\n // string: try to parse as number (allow ',' as decimal separator)\n if (typeof n === 'string') {\n // prevent the empty string to be parsed as 0\n if (n.trim() === '') {\n return Number.NaN;\n }\n\n n = +n.replace(',', '.').replace(' ', '');\n }\n\n // (the string could not be parsed) OR (it was neither string nor number)\n if (typeof n !== 'number') {\n return Number.NaN;\n }\n\n // false for NaN, +Infinity, -Infinity\n if (!isFinite(n)) {\n return Number.NaN;\n }\n\n return n;\n }\n\n /**\n * Return an Array without duplicated keys\n *\n * @param {Array<any>} arr\n * @param {string} key\n * @return {Array<any>}\n */\n public static uniqBy(arr: Array<any>, key?: string): Array<any> {\n const seen = new Set();\n if (key) {\n const result = [];\n for (let i = 0; i < arr.length; ++i) {\n if (arr[i] && arr[i][key] && !seen.has(arr[i][key])) {\n seen.add(arr[i][key]);\n result.push(arr[i]);\n } else if (!arr[i][key]) {\n result.push(arr[i]);\n }\n }\n return result;\n }\n return typeof arr[0] === 'object'\n ? Array.from(new Set(arr.map((v) => JSON.stringify(v)))).map((v) => JSON.parse(v))\n : Array.from(new Set(arr));\n }\n\n /**\n * Return 'image' or 'url' depending on the given string\n *\n * @param {string} value\n * @return {\"image\" | \"url\"}\n */\n public static getType(value: string): 'image' | 'url' | 'imageUrl' | undefined {\n if (Tools.isImage(value) && Tools.isUrl(value)) {\n return 'imageUrl';\n }\n\n if (Tools.isImage(value)) {\n return 'image';\n }\n\n if (Tools.isUrl(value)) {\n return 'url';\n }\n\n return undefined;\n }\n\n /**\n * Return true if the given string is an url that match the schema handled by LKE\n *\n * @param {string} value\n * @return {boolean}\n */\n private static isUrl(value: string): boolean {\n return URL_PATTERN.test(value);\n }\n\n /**\n * Return true if the given string is an url with an image extension\n *\n * @param {string} value\n * @return {boolean}\n */\n private static isImage(value: string): boolean {\n return IMAGE_PATTERN.test(value);\n }\n\n /**\n * Return true if a value is not undefined, not null and not an empty string\n */\n public static valueExists(value: LkProperty): boolean {\n return Tools.isDefined(value) && (typeof value !== 'string' || Tools.isStringFilled(value));\n }\n\n /**\n * Return true if `n` is (or can be parsed as) a number\n */\n public static isNumber(n: unknown): boolean {\n n = Tools.parseNumber(n);\n return Tools.isDefined(n) && n === n;\n }\n\n /**\n * return the correct property value\n */\n public static getPropertyValue(\n property: LkProperty,\n invalidAsString?: boolean,\n formattedDates?: boolean\n ): undefined | null | string | number | boolean | Array<string> {\n if (typeof property === 'object' && !Array.isArray(property)) {\n if (!('status' in property)) {\n if ((property.type === 'date' || property.type === 'datetime') && formattedDates) {\n return Tools.formatDate(property.value, property.type === 'datetime');\n } else if (property.type === 'date' || property.type === 'datetime') {\n return new Date(property.value).getTime();\n }\n } else if (invalidAsString) {\n return 'original' in property ? property.original : undefined;\n } else {\n return undefined;\n }\n }\n return property;\n }\n\n /**\n * Parse the given value and return a float number or NaN\n *\n * @param {any} n\n * @return {number}\n */\n public static parseFloat(n: unknown): number {\n return Tools.parseNumber(n);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@linkurious/ogma-linkurious-parser",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"author": "Linkurious SAS",
|
|
5
5
|
"description": "Parse and load a Linkurious visualization in Ogma with one line of code ",
|
|
6
6
|
"files": [
|
|
@@ -9,11 +9,12 @@
|
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
11
11
|
},
|
|
12
|
+
"private": false,
|
|
12
13
|
"main": "./dist/index.js",
|
|
13
14
|
"types": "./dist/index.d.ts",
|
|
14
15
|
"engines": {
|
|
15
|
-
"node": "
|
|
16
|
-
"npm": "6.14.
|
|
16
|
+
"node": "14.18.1",
|
|
17
|
+
"npm": "6.14.15"
|
|
17
18
|
},
|
|
18
19
|
"scripts": {
|
|
19
20
|
"prepare": "tsc -b",
|
|
@@ -21,15 +22,16 @@
|
|
|
21
22
|
"compile": "tsc -b",
|
|
22
23
|
"tsc": "tsc -b",
|
|
23
24
|
"build:rollup": "rollup -c",
|
|
24
|
-
"test": "
|
|
25
|
+
"test": "mocha -r ts-node/register/transpile-only tests/**/*.spec.ts",
|
|
25
26
|
"test:unit": "nyc --reporter=text-summary --reporter=cobertura --report-dir=reports mocha -r ts-node/register/transpile-only --reporter mocha-multi-reporters --reporter-options configFile=.test-reporters.json tests/**/*.spec.ts",
|
|
26
|
-
"dev": "./node_modules/.bin/tsc && node exemple/test_node.js",
|
|
27
27
|
"clean": "rm -rf node_modules; rm -rf package-lock.json; rm -rf dist",
|
|
28
28
|
"lint": "eslint --fix --ext .ts .",
|
|
29
29
|
"lint:ci": "eslint -f checkstyle -o reports/checkstyle.xml --ext .ts .",
|
|
30
|
+
"latest:develop-maintenance": "npm install --save-exact @linkurious/rest-client@lk-develop-maintenance",
|
|
30
31
|
"latest:develop-stable": "npm install --save-exact @linkurious/rest-client@lk-develop-stable",
|
|
31
32
|
"latest:develop": "npm install --save-exact @linkurious/rest-client@lk-develop",
|
|
32
33
|
"latest:develop-next": "npm install --save-exact @linkurious/rest-client@lk-develop-next",
|
|
34
|
+
"latest:master-maintenance": "npm install --save-exact @linkurious/rest-client@lk-master-maintenance",
|
|
33
35
|
"latest:master-stable": "npm install --save-exact @linkurious/rest-client@lk-master-stable",
|
|
34
36
|
"latest:master": "npm install --save-exact @linkurious/rest-client@lk-master",
|
|
35
37
|
"bump:patch": "bump2version patch && npm version --no-git-tag-version patch",
|
|
@@ -44,14 +46,14 @@
|
|
|
44
46
|
"homepage": "",
|
|
45
47
|
"dependencies": {
|
|
46
48
|
"lodash": "4.17.21",
|
|
47
|
-
"rxjs": "6.
|
|
49
|
+
"rxjs": "6.6.7",
|
|
48
50
|
"sha1": "1.1.1"
|
|
49
51
|
},
|
|
50
52
|
"peerDependencies": {
|
|
51
|
-
"ogma": "3.
|
|
53
|
+
"ogma": "3.4.7"
|
|
52
54
|
},
|
|
53
55
|
"devDependencies": {
|
|
54
|
-
"@linkurious/rest-client": "
|
|
56
|
+
"@linkurious/rest-client": "3.0.5",
|
|
55
57
|
"@rollup/plugin-buble": "0.21.3",
|
|
56
58
|
"@rollup/plugin-commonjs": "17.0.0",
|
|
57
59
|
"@rollup/plugin-json": "4.1.0",
|