@oslo-flanders/core 0.0.1-alpha.0 → 0.0.3-alpha.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/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import 'reflect-metadata';
2
+ export * from './lib/interfaces/AppRunner';
3
+ export * from './lib/interfaces/IConfiguration';
4
+ export * from './lib/interfaces/IConversionService';
5
+ export * from './lib/interfaces/IGenerationService';
6
+ export * from './lib/interfaces/IOutputHandler';
7
+ export * from './lib/utils/fetchFileOrUrl';
8
+ export * from './lib/utils/namespaces';
9
+ export * from './lib/utils/uniqueId';
10
+ export * from './lib/utils/N3StoreFunctions';
11
+ export * from './lib/ServiceIdentifier';
12
+ export * from './lib/enums/Scope';
13
+ export * from './lib/enums/PropertyTypes';
14
+ export * from './lib/logging/LogLevel';
15
+ export * from './lib/logging/Logger';
16
+ export * from './lib/logging/VoidLogger';
17
+ export * from './lib/logging/WinstonLogger';
package/package.json CHANGED
@@ -1,56 +1,69 @@
1
- {
2
- "name": "@oslo-flanders/core",
3
- "version": "0.0.1-alpha.0",
4
- "description": "Core interfaces and utilities",
5
- "author": "Digitaal Vlaanderen <https://data.vlaanderen.be/id/organisatie/OVO002949>",
6
- "homepage": "https://github.com/informatievlaanderen/OSLO-UML-Transformer/tree/main/packages/oslo-core#readme",
7
- "license": "MIT",
8
- "main": "index.js",
9
- "directories": {
10
- "lib": "lib"
11
- },
12
- "files": [
13
- "lib"
14
- ],
15
- "repository": {
16
- "type": "git",
17
- "url": "git+https://github.com/Informatievlaanderen/OSLO-UML-Transformer.git"
18
- },
19
- "jest": {
20
- "runner": "groups",
21
- "transform": {
22
- "^.+\\.ts$": "ts-jest"
23
- },
24
- "testRegex": "/test/.*.test.ts$",
25
- "moduleFileExtensions": [
26
- "ts",
27
- "js"
28
- ],
29
- "collectCoverage": true,
30
- "coveragePathIgnorePatterns": [
31
- "/node_modules/",
32
- "index.js",
33
- "test/data/*",
34
- "lib/utils/namespaces.ts"
35
- ],
36
- "testEnvironment": "node"
37
- },
38
- "scripts": {
39
- "build": "npm run build:ts",
40
- "build:ts": "tsc",
41
- "test:unit": "node \"../../node_modules/jest/bin/jest.js\" --group=unit"
42
- },
43
- "bugs": {
44
- "url": "https://github.com/Informatievlaanderen/OSLO-UML-Transformer/issues"
45
- },
46
- "dependencies": {
47
- "rdf-parse": "^2.1.1",
48
- "streamify-string": "^1.0.1",
49
- "winston": "^3.8.2"
50
- },
51
- "devDependencies": {
52
- "@types/node-fetch": "^2.6.2",
53
- "@types/streamify-string": "^1.0.0",
54
- "@types/tmp": "^0.2.3"
55
- }
56
- }
1
+ {
2
+ "name": "@oslo-flanders/core",
3
+ "version": "0.0.3-alpha.0",
4
+ "description": "Core interfaces and utilities",
5
+ "author": "Digitaal Vlaanderen <https://data.vlaanderen.be/id/organisatie/OVO002949>",
6
+ "homepage": "https://github.com/informatievlaanderen/OSLO-UML-Transformer/tree/main/packages/oslo-core#readme",
7
+ "license": "MIT",
8
+ "main": "index.js",
9
+ "directories": {
10
+ "lib": "lib"
11
+ },
12
+ "files": [
13
+ "lib/**/*.d.ts",
14
+ "lib/**/*.js",
15
+ "bin/**/*.d.ts",
16
+ "bin/**/*.js",
17
+ "index.d.ts",
18
+ "index.js"
19
+ ],
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/Informatievlaanderen/OSLO-UML-Transformer.git"
23
+ },
24
+ "jest": {
25
+ "runner": "groups",
26
+ "transform": {
27
+ "^.+\\.ts$": "ts-jest"
28
+ },
29
+ "testRegex": "/test/.*.test.ts$",
30
+ "moduleFileExtensions": [
31
+ "ts",
32
+ "js"
33
+ ],
34
+ "collectCoverage": true,
35
+ "coveragePathIgnorePatterns": [
36
+ "/node_modules/",
37
+ "index.js",
38
+ "test/data/*",
39
+ "lib/utils/namespaces.ts"
40
+ ],
41
+ "testEnvironment": "node"
42
+ },
43
+ "scripts": {
44
+ "build": "npm run build:ts",
45
+ "build:ts": "tsc",
46
+ "test:unit": "node \"../../node_modules/jest/bin/jest.js\" --group=unit"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/Informatievlaanderen/OSLO-UML-Transformer/issues"
50
+ },
51
+ "dependencies": {
52
+ "crypto-js": "^4.1.1",
53
+ "n3": "^1.16.2",
54
+ "node-fetch": "^2.6.7",
55
+ "rdf-data-factory": "^1.1.1",
56
+ "rdf-parse": "^2.1.1",
57
+ "reflect-metadata": "^0.1.13",
58
+ "streamify-string": "^1.0.1",
59
+ "winston": "^3.8.2"
60
+ },
61
+ "devDependencies": {
62
+ "@rdfjs/types": "^1.1.0",
63
+ "@types/crypto-js": "^4.1.1",
64
+ "@types/node-fetch": "^2.6.2",
65
+ "@types/streamify-string": "^1.0.0",
66
+ "@types/tmp": "^0.2.3"
67
+ },
68
+ "gitHead": "f749c71908781f533e0e35f0e3394ce43a8dd7c0"
69
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceIdentifier.js","sourceRoot":"","sources":["ServiceIdentifier.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,2DAA2D;AAC3D,oFAAoF;AACpF,MAAa,iBAAiB;;AAA9B,8CAMC;AALwB,mCAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACpD,mCAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACpD,+BAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC5C,+BAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC5C,wBAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["/* eslint-disable eslint-comments/disable-enable-pair */\r\n/* eslint-disable @typescript-eslint/no-extraneous-class */\r\n// This must be a class, because it must be possible to extend it in implementations\r\nexport class ServiceIdentifier {\r\n public static readonly ConversionService = Symbol.for('ConversionService');\r\n public static readonly GenerationService = Symbol.for('GenerationService');\r\n public static readonly Configuration = Symbol.for('Configuration');\r\n public static readonly OutputHandler = Symbol.for('OutputHandler');\r\n public static readonly Logger = Symbol.for('Logger');\r\n}\r\n"]}
@@ -1,10 +0,0 @@
1
- /* eslint-disable eslint-comments/disable-enable-pair */
2
- /* eslint-disable @typescript-eslint/no-extraneous-class */
3
- // This must be a class, because it must be possible to extend it in implementations
4
- export class ServiceIdentifier {
5
- public static readonly ConversionService = Symbol.for('ConversionService');
6
- public static readonly GenerationService = Symbol.for('GenerationService');
7
- public static readonly Configuration = Symbol.for('Configuration');
8
- public static readonly OutputHandler = Symbol.for('OutputHandler');
9
- public static readonly Logger = Symbol.for('Logger');
10
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"PropertyTypes.js","sourceRoot":"","sources":["PropertyTypes.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mFAAmE,CAAA;IACnE,+EAA+D,CAAA;IAC/D,gFAAgE,CAAA;AAClE,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB","sourcesContent":["export enum PropertyType {\r\n DataTypeProperty = 'http://www.w3.org/2002/07/owl#DatatypeProperty',\r\n ObjectProperty = 'http://www.w3.org/2002/07/owl#ObjectProperty',\r\n Property = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#Property',\r\n}\r\n"]}
@@ -1,5 +0,0 @@
1
- export enum PropertyType {
2
- DataTypeProperty = 'http://www.w3.org/2002/07/owl#DatatypeProperty',
3
- ObjectProperty = 'http://www.w3.org/2002/07/owl#ObjectProperty',
4
- Property = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#Property',
5
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scope.js","sourceRoot":"","sources":["Scope.ts"],"names":[],"mappings":";;;AAAA,IAAY,KAKX;AALD,WAAY,KAAK;IACf,4EAAmE,CAAA;IACnE,0GAAiG,CAAA;IACjG,0EAAiE,CAAA;IACjE,4EAAmE,CAAA;AACrE,CAAC,EALW,KAAK,GAAL,aAAK,KAAL,aAAK,QAKhB","sourcesContent":["export enum Scope {\r\n InPackage = 'https://data.vlaanderen.be/id/concept/scope/InPackage',\r\n InPublicationEnvironment = 'https://data.vlaanderen.be/id/concept/scope/InPublicationEnvironment',\r\n External = 'https://data.vlaanderen.be/id/concept/scope/External',\r\n Undefined = 'https://data.vlaanderen.be/id/concept/scope/Undefined'\r\n}\r\n"]}
@@ -1,6 +0,0 @@
1
- export enum Scope {
2
- InPackage = 'https://data.vlaanderen.be/id/concept/scope/InPackage',
3
- InPublicationEnvironment = 'https://data.vlaanderen.be/id/concept/scope/InPublicationEnvironment',
4
- External = 'https://data.vlaanderen.be/id/concept/scope/External',
5
- Undefined = 'https://data.vlaanderen.be/id/concept/scope/Undefined'
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppRunner.js","sourceRoot":"","sources":["AppRunner.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAcjC,MAAsB,SAAS;IACtB,UAAU,CAAC,OAAuB;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAS,EAAE;YAC/C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,mDAAmD;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;CAGF;AAVD,8BAUC","sourcesContent":["import { stderr } from 'process';\r\n\r\nexport type CliArgv = string[];\r\n\r\nexport type YargsParams = {\r\n [x: string]: unknown;\r\n _: (string | number)[];\r\n $0: string;\r\n} | {\r\n [x: string]: unknown;\r\n _: (string | number)[];\r\n $0: string;\r\n};\r\n\r\nexport abstract class AppRunner {\r\n public runCliSync(process: NodeJS.Process): void {\r\n this.runCli(process.argv).catch((error): never => {\r\n stderr.write(error.message);\r\n // eslint-disable-next-line unicorn/no-process-exit\r\n process.exit(1);\r\n });\r\n }\r\n\r\n public abstract runCli(argv: CliArgv): Promise<void>;\r\n}\r\n"]}
@@ -1,25 +0,0 @@
1
- import { stderr } from 'process';
2
-
3
- export type CliArgv = string[];
4
-
5
- export type YargsParams = {
6
- [x: string]: unknown;
7
- _: (string | number)[];
8
- $0: string;
9
- } | {
10
- [x: string]: unknown;
11
- _: (string | number)[];
12
- $0: string;
13
- };
14
-
15
- export abstract class AppRunner {
16
- public runCliSync(process: NodeJS.Process): void {
17
- this.runCli(process.argv).catch((error): never => {
18
- stderr.write(error.message);
19
- // eslint-disable-next-line unicorn/no-process-exit
20
- process.exit(1);
21
- });
22
- }
23
-
24
- public abstract runCli(argv: CliArgv): Promise<void>;
25
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"IConfiguration.js","sourceRoot":"","sources":["IConfiguration.ts"],"names":[],"mappings":"","sourcesContent":["import type { YargsParams } from './AppRunner';\r\n\r\n/**\r\n * Interface that must be implemented by classes that contain configuration properties\r\n */\r\nexport interface IConfiguration {\r\n createFromCli: (params: YargsParams) => Promise<void>;\r\n}\r\n"]}
@@ -1,8 +0,0 @@
1
- import type { YargsParams } from './AppRunner';
2
-
3
- /**
4
- * Interface that must be implemented by classes that contain configuration properties
5
- */
6
- export interface IConfiguration {
7
- createFromCli: (params: YargsParams) => Promise<void>;
8
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"IConversionService.js","sourceRoot":"","sources":["IConversionService.ts"],"names":[],"mappings":"","sourcesContent":["import type { Logger } from '../logging/Logger';\r\nimport type { IConfiguration } from './IConfiguration';\r\n\r\n/**\r\n * Interface that must be implemented by classes that convert a UML diagram to an RDF file\r\n */\r\nexport interface IConversionService {\r\n logger: Logger;\r\n configuration: IConfiguration;\r\n run: () => Promise<void>;\r\n}\r\n"]}
@@ -1,11 +0,0 @@
1
- import type { Logger } from '../logging/Logger';
2
- import type { IConfiguration } from './IConfiguration';
3
-
4
- /**
5
- * Interface that must be implemented by classes that convert a UML diagram to an RDF file
6
- */
7
- export interface IConversionService {
8
- logger: Logger;
9
- configuration: IConfiguration;
10
- run: () => Promise<void>;
11
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"IGenerationService.js","sourceRoot":"","sources":["IGenerationService.ts"],"names":[],"mappings":"","sourcesContent":["import type { IConfiguration } from './IConfiguration';\r\n\r\n/**\r\n * Interface that must be implemented by classes that use an RDF file as input and generates an artefact\r\n */\r\nexport interface IGenerationService {\r\n configuration: IConfiguration;\r\n run: () => Promise<void>;\r\n}\r\n"]}
@@ -1,9 +0,0 @@
1
- import type { IConfiguration } from './IConfiguration';
2
-
3
- /**
4
- * Interface that must be implemented by classes that use an RDF file as input and generates an artefact
5
- */
6
- export interface IGenerationService {
7
- configuration: IConfiguration;
8
- run: () => Promise<void>;
9
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"IOutputHandler.js","sourceRoot":"","sources":["IOutputHandler.ts"],"names":[],"mappings":"","sourcesContent":["import type { Quad, Store } from 'n3';\r\n\r\n/**\r\n * Writes the triples in an RDF store to a write stream\r\n */\r\nexport interface IOutputHandler {\r\n write: (store: Store<Quad>, writeStream: any) => Promise<void>;\r\n}\r\n"]}
@@ -1,8 +0,0 @@
1
- import type { Quad, Store } from 'n3';
2
-
3
- /**
4
- * Writes the triples in an RDF store to a write stream
5
- */
6
- export interface IOutputHandler {
7
- write: (store: Store<Quad>, writeStream: any) => Promise<void>;
8
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogLevel.js","sourceRoot":"","sources":["LogLevel.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC","sourcesContent":["export const LOG_LEVELS = <const>['error', 'warn', 'info', 'verbose', 'debug', 'silly'];\r\n\r\n/**\r\n * Different log levels, from most important to least important.\r\n */\r\nexport type LogLevel = typeof LOG_LEVELS[number];\r\n"]}
@@ -1,6 +0,0 @@
1
- export const LOG_LEVELS = <const>['error', 'warn', 'info', 'verbose', 'debug', 'silly'];
2
-
3
- /**
4
- * Different log levels, from most important to least important.
5
- */
6
- export type LogLevel = typeof LOG_LEVELS[number];
@@ -1 +0,0 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["Logger.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AAchC,IAAe,UAAU,GAAzB,MAAe,UAAU;IAGvB,KAAK,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,IAAI,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,IAAI,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AA1BqB,UAAU;IAD/B,IAAA,sBAAU,GAAE;GACS,UAAU,CA0B/B;AA1BqB,gCAAU","sourcesContent":["import { injectable } from 'inversify';\r\nimport type { LogLevel } from './LogLevel';\r\n\r\nexport interface Logger {\r\n log: (level: LogLevel, message: string) => Logger;\r\n error: (message: string) => Logger;\r\n warn: (message: string) => Logger;\r\n info: (message: string) => Logger;\r\n verbose: (message: string) => Logger;\r\n debug: (message: string) => Logger;\r\n silly: (message: string) => Logger;\r\n}\r\n\r\n@injectable()\r\nexport abstract class BaseLogger implements Logger {\r\n public abstract log(level: LogLevel, message: string): Logger;\r\n\r\n public error(message: string): Logger {\r\n return this.log('error', message);\r\n }\r\n\r\n public warn(message: string): Logger {\r\n return this.log('warn', message);\r\n }\r\n\r\n public info(message: string): Logger {\r\n return this.log('info', message);\r\n }\r\n\r\n public verbose(message: string): Logger {\r\n return this.log('verbose', message);\r\n }\r\n\r\n public debug(message: string): Logger {\r\n return this.log('debug', message);\r\n }\r\n\r\n public silly(message: string): Logger {\r\n return this.log('silly', message);\r\n }\r\n}\r\n"]}
@@ -1,41 +0,0 @@
1
- import { injectable } from 'inversify';
2
- import type { LogLevel } from './LogLevel';
3
-
4
- export interface Logger {
5
- log: (level: LogLevel, message: string) => Logger;
6
- error: (message: string) => Logger;
7
- warn: (message: string) => Logger;
8
- info: (message: string) => Logger;
9
- verbose: (message: string) => Logger;
10
- debug: (message: string) => Logger;
11
- silly: (message: string) => Logger;
12
- }
13
-
14
- @injectable()
15
- export abstract class BaseLogger implements Logger {
16
- public abstract log(level: LogLevel, message: string): Logger;
17
-
18
- public error(message: string): Logger {
19
- return this.log('error', message);
20
- }
21
-
22
- public warn(message: string): Logger {
23
- return this.log('warn', message);
24
- }
25
-
26
- public info(message: string): Logger {
27
- return this.log('info', message);
28
- }
29
-
30
- public verbose(message: string): Logger {
31
- return this.log('verbose', message);
32
- }
33
-
34
- public debug(message: string): Logger {
35
- return this.log('debug', message);
36
- }
37
-
38
- public silly(message: string): Logger {
39
- return this.log('silly', message);
40
- }
41
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoidLogger.js","sourceRoot":"","sources":["VoidLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AAEvC,qCAAsC;AAI/B,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,mBAAU;IACxC;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAEM,GAAG,CAAC,KAAe,EAAE,OAAe;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AARY,UAAU;IADtB,IAAA,sBAAU,GAAE;;GACA,UAAU,CAQtB;AARY,gCAAU","sourcesContent":["import { injectable } from 'inversify';\r\nimport type { Logger } from './Logger';\r\nimport { BaseLogger } from './Logger';\r\nimport type { LogLevel } from './LogLevel';\r\n\r\n@injectable()\r\nexport class VoidLogger extends BaseLogger {\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public log(level: LogLevel, message: string): Logger {\r\n return this;\r\n }\r\n}\r\n"]}
@@ -1,15 +0,0 @@
1
- import { injectable } from 'inversify';
2
- import type { Logger } from './Logger';
3
- import { BaseLogger } from './Logger';
4
- import type { LogLevel } from './LogLevel';
5
-
6
- @injectable()
7
- export class VoidLogger extends BaseLogger {
8
- public constructor() {
9
- super();
10
- }
11
-
12
- public log(level: LogLevel, message: string): Logger {
13
- return this;
14
- }
15
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"WinstonLogger.js","sourceRoot":"","sources":["WinstonLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AAEvC,qCAA2D;AAC3D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAM,CAAC;AAE7C,qCAAsC;AAGtC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC;AAG9H,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,mBAAU;IAG3C,YAAmB,QAAkB;QACnC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAY,EAAC;YACzB,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE;gBACV,IAAI,oBAAU,CAAC,OAAO,EAAE;aACzB;YACD,MAAM,EAAE,OAAO,CACb,QAAQ,EAAE,EACV,aAAa,CACd;SACF,CAAC,CAAC;IACL,CAAC;IAEM,GAAG,CAAC,KAAe,EAAE,OAAe;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AArBY,aAAa;IADzB,IAAA,sBAAU,GAAE;;GACA,aAAa,CAqBzB;AArBY,sCAAa","sourcesContent":["import { injectable } from 'inversify';\r\nimport type { Logger as WinstonInnerLogger } from 'winston';\r\nimport { transports, createLogger, format } from 'winston';\r\nconst { combine, colorize, printf } = format;\r\n\r\nimport { BaseLogger } from './Logger';\r\nimport { LogLevel } from './LogLevel';\r\n\r\nconst messageFormat = printf(({ level, message, messageTimestamp }) => `${new Date(Date.now()).toISOString()} ${level}: ${message}`);\r\n\r\n@injectable()\r\nexport class WinstonLogger extends BaseLogger {\r\n private readonly logger: WinstonInnerLogger;\r\n\r\n public constructor(logLevel: LogLevel) {\r\n super();\r\n this.logger = createLogger({\r\n level: logLevel,\r\n transports: [\r\n new transports.Console(),\r\n ],\r\n format: combine(\r\n colorize(),\r\n messageFormat,\r\n ),\r\n });\r\n }\r\n\r\n public log(level: LogLevel, message: string): this {\r\n this.logger.log(level, message);\r\n return this;\r\n }\r\n}\r\n"]}
@@ -1,33 +0,0 @@
1
- import { injectable } from 'inversify';
2
- import type { Logger as WinstonInnerLogger } from 'winston';
3
- import { transports, createLogger, format } from 'winston';
4
- const { combine, colorize, printf } = format;
5
-
6
- import { BaseLogger } from './Logger';
7
- import { LogLevel } from './LogLevel';
8
-
9
- const messageFormat = printf(({ level, message, messageTimestamp }) => `${new Date(Date.now()).toISOString()} ${level}: ${message}`);
10
-
11
- @injectable()
12
- export class WinstonLogger extends BaseLogger {
13
- private readonly logger: WinstonInnerLogger;
14
-
15
- public constructor(logLevel: LogLevel) {
16
- super();
17
- this.logger = createLogger({
18
- level: logLevel,
19
- transports: [
20
- new transports.Console(),
21
- ],
22
- format: combine(
23
- colorize(),
24
- messageFormat,
25
- ),
26
- });
27
- }
28
-
29
- public log(level: LogLevel, message: string): this {
30
- this.logger.log(level, message);
31
- return this;
32
- }
33
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"N3StoreFunctions.js","sourceRoot":"","sources":["N3StoreFunctions.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as RDF from '@rdfjs/types';\r\nimport * as N3 from 'n3';\r\nimport rdfParser from 'rdf-parse';\r\nimport { fetchFileOrUrl } from './fetchFileOrUrl';\r\nimport { ns } from './namespaces';\r\n\r\n/**\r\n * Given a local file, it is parsed and added to an in-memory quad store\r\n * @param fileOrUrl Local path of the input file\r\n * @returns A N3 quad store\r\n */\r\nexport async function createN3Store(file: string): Promise<N3.Store> {\r\n const store = new N3.Store();\r\n const buffer = await fetchFileOrUrl(file);\r\n const textStream = require('streamify-string')(buffer.toString());\r\n\r\n return new Promise<N3.Store>((resolve, reject) => {\r\n rdfParser.parse(textStream, { path: file })\r\n .on('data', (quad: RDF.Quad) => store.addQuad(quad))\r\n .on('error', (error: unknown) => reject(error))\r\n .on('end', () => resolve(store));\r\n });\r\n}\r\n\r\n/**\r\n * Find the subject of the statement that matches the given subject, predicate and object\r\n * @param statementSubject The subject to match the statement subject\r\n * @param statementPredicate The predicate to match the statement predicate\r\n * @param statementObject The object to match the statement object\r\n * @param store An N3 quad store\r\n * @returns an RDF.Term or undefined if none found\r\n */\r\nexport function getTargetStatementId(\r\n statementSubject: RDF.Term,\r\n statementPredicate: RDF.Term,\r\n statementObject: RDF.Term,\r\n store: N3.Store,\r\n): RDF.Term | undefined {\r\n const statementIds = store.getSubjects(ns.rdf('type'), ns.rdf('Statement'), null);\r\n const statementSubjectPredicateSubjects = store.getSubjects(ns.rdf('subject'), statementSubject, null);\r\n const statementPredicatePredicateSubjects = store.getSubjects(ns.rdf('predicate'), statementPredicate, null);\r\n const statementObjectPredicateSubjects = store.getSubjects(ns.rdf('object'), statementObject, null);\r\n\r\n const targetIds = statementIds\r\n .filter(x => statementSubjectPredicateSubjects.some(y => y.value === x.value))\r\n .filter(x => statementPredicatePredicateSubjects.some(y => y.value === x.value))\r\n .filter(x => statementObjectPredicateSubjects.some(y => y.value === x.value));\r\n\r\n if (targetIds.length > 1) {\r\n throw new Error(`Found multiple statements with subject \"${statementSubject.value}\", predicate \"${statementPredicate.value}\" and object \"${statementObject.value}\".`);\r\n }\r\n\r\n return targetIds.shift();\r\n}\r\n\r\n/**\r\n * For a given subject, the quad store is queried to find the assigned URI\r\n * @param subject The subject for which the assigned URI is to be retrieved\r\n * @param store The quad store\r\n * @returns An RDF.NamedNode or undefined if not found\r\n */\r\nexport function getAssignedUri(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {\r\n return store.getObjects(subject, ns.example('assignedUri'), null).shift();\r\n}\r\n\r\n/**\r\n * Finds the assigned URI in rdf:Statements\r\n * @param subject The statement subject\r\n * @param predicate The statement predicate\r\n * @param object The statement object for which the assigned URI must be found\r\n * @param store A N3 quad store\r\n * @returns An RDF.Term or undefined if not found\r\n */\r\nexport function getAssignedUriViaStatements(\r\n subject: RDF.Term,\r\n predicate: RDF.Term,\r\n object: RDF.Term,\r\n store: N3.Store,\r\n): RDF.Term | undefined {\r\n const statementId = getTargetStatementId(subject, predicate, object, store);\r\n\r\n if (!statementId) {\r\n return undefined;\r\n }\r\n\r\n return getAssignedUri(statementId, store);\r\n}\r\n\r\n/**\r\n * Find all rdfs:labels for a given subject\r\n * @param subject The RDF.Term to find the rdfs:labels for\r\n * @param store A N3 quad store\r\n * @returns An array of RDF.Literals\r\n */\r\nexport function getLabels(subject: RDF.Term, store: N3.Store): RDF.Literal[] {\r\n return <RDF.Literal[]>store.getObjects(subject, ns.rdfs('label'), null);\r\n}\r\n\r\n/**\r\n * Finds the rdfs:label whose language tag matches the given language\r\n * @param subject The RDF.Term to find the rdfs:label for\r\n * @param store A N3 quad store\r\n * @param language A language tag\r\n * @returns An RDF.Literal or undefined if not found\r\n */\r\nexport function getLabel(subject: RDF.Term, store: N3.Store, language?: string): RDF.Literal | undefined {\r\n return getLabels(subject, store).find(x => x.language === (language || ''));\r\n}\r\n\r\n/**\r\n * Finds the rdfs:label for an RDF.Term in rdf:Statements\r\n * @param subject The statement subject\r\n * @param predicate The statement predicate\r\n * @param object The statement object for which the label must be found\r\n * @param store A N3 quad store\r\n * @param language A language tag\r\n * @returns An RDF.Literal or undefined if not found\r\n */\r\nexport function getLabelViaStatements(\r\n subject: RDF.Term,\r\n predicate: RDF.Term,\r\n object: RDF.Term,\r\n store: N3.Store,\r\n language: string,\r\n): RDF.Literal | undefined {\r\n const statementId = getTargetStatementId(subject, predicate, object, store);\r\n\r\n if (!statementId) {\r\n return undefined;\r\n }\r\n\r\n const label = getLabel(statementId, store, language);\r\n return label || getLabel(statementId, store);\r\n}\r\n\r\n/**\r\n * Find all rdfs:comments for a given subject\r\n * @param subject The RDF.Term to find the rdfs:comments for\r\n * @param store A N3 quad store\r\n * @returns An array of RDF.Literals\r\n */\r\nexport function getDefinitions(subject: RDF.Term, store: N3.Store): RDF.Literal[] {\r\n return <RDF.Literal[]>store.getObjects(subject, ns.rdfs('comment'), null);\r\n}\r\n\r\n/**\r\n * Finds the rdfs:comment whose language tag matches the given language\r\n * @param subject The RDF.Term to find the rdfs:comment for\r\n * @param store A N3 quad store\r\n * @param language A language tag\r\n * @returns An RDF.Literal or undefined if not found\r\n */\r\nexport function getDefinition(subject: RDF.Term, store: N3.Store, language?: string): RDF.Literal | undefined {\r\n return getDefinitions(subject, store).find(x => x.language === (language || ''));\r\n}\r\n\r\n/**\r\n * Finds the rdfs:comment for an RDF.Term in rdf:Statements\r\n * @param subject The statement subject\r\n * @param predicate The statement predicate\r\n * @param object The statement object for which the definition must be found\r\n * @param store A N3 quad store\r\n * @param language A language tag\r\n * @returns An RDF.Literal or undefined if not found\r\n */\r\nexport function getDefinitionViaStatements(\r\n subject: RDF.Term,\r\n predicate: RDF.Term,\r\n object: RDF.Term,\r\n store: N3.Store,\r\n language: string,\r\n): RDF.Literal | undefined {\r\n const statementId = getTargetStatementId(subject, predicate, object, store);\r\n\r\n if (!statementId) {\r\n return undefined;\r\n }\r\n\r\n const definition = getDefinition(statementId, store, language);\r\n return definition || getDefinition(statementId, store);\r\n}\r\n\r\n/**\r\n * Finds all the rdfs:subClassOf of a given RDF.Term\r\n * @param subject the RDF.Term to find the parents of\r\n * @param store A N3 quad store\r\n * @returns An array of RDF.Terms\r\n */\r\nexport function getParentsOfClass(subject: RDF.Term, store: N3.Store): RDF.Term[] {\r\n return store.getObjects(subject, ns.rdfs('subClassOf'), null);\r\n}\r\n\r\n/**\r\n * Finds the rdfs:subPropertyOf of a given RDF.Term\r\n * @param subject The RDF.Term to find the parent of\r\n * @param store A N3 quad store\r\n * @returns An RDF.Term or undefined if not found\r\n */\r\nexport function getParentOfProperty(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {\r\n return store.getObjects(subject, ns.rdfs('subPropertyOf'), null).shift();\r\n}\r\n\r\n/**\r\n * Finds the rdfs:range of a given RDF.Term\r\n * @param subject The RDF.Term to find the range of\r\n * @param store A N3 quad store\r\n * @returns An RDF.Term or undefined if not found\r\n */\r\nexport function getRange(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {\r\n return store.getObjects(subject, ns.rdfs('range'), null).shift();\r\n}\r\n\r\n/**\r\n * Finds the rdfs:domain of a given RDF.Term\r\n * @param subject The RDF.Term to find the domain of\r\n * @param store A N3 quad store\r\n * @returns An RDF.Term or undefined if not found\r\n */\r\nexport function getDomain(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {\r\n return store.getObjects(subject, ns.rdfs('domain'), null).shift();\r\n}\r\n\r\n/**\r\n * Finds all the vann:usageNotes of a given RDF.Term\r\n * @param subject The RDF.Term to find the usage notes for\r\n * @param store A N3 quad store\r\n * @returns An array of RDF.Literals\r\n */\r\nexport function getUsageNotes(subject: RDF.Term, store: N3.Store): RDF.Literal[] {\r\n return <RDF.Literal[]>store.getObjects(subject, ns.vann('usageNote'), null);\r\n}\r\n\r\n/**\r\n * Finds the vann:usageNote of which the language tag matches the given language\r\n * @param subject The RDF.Term to find the usage note for\r\n * @param store A N3 quad store\r\n * @param language A language tag\r\n * @returns An RDF.Literal or undefined if not found\r\n */\r\nexport function getUsageNote(subject: RDF.Term, store: N3.Store, language?: string): RDF.Literal | undefined {\r\n return getUsageNotes(subject, store).find(x => x.language === (language || ''));\r\n}\r\n\r\n/**\r\n * Finds the vann:usageNote for an RDF.Term in rdf:Statements\r\n * @param subject The statement subject\r\n * @param predicate The statement predicate\r\n * @param object The statement object for which the usage note must be found\r\n * @param store A N3 quad store\r\n * @param language A language tag\r\n * @returns An RDF.Literal or undefined if not found\r\n */\r\nexport function getUsageNoteViaStatements(\r\n subject: RDF.Term,\r\n predicate: RDF.Term,\r\n object: RDF.Term,\r\n store: N3.Store,\r\n language: string,\r\n): RDF.Literal | undefined {\r\n const statementId = getTargetStatementId(subject, predicate, object, store);\r\n\r\n if (!statementId) {\r\n return undefined;\r\n }\r\n\r\n const usageNote = getUsageNote(statementId, store, language);\r\n return usageNote || getUsageNote(statementId, store);\r\n}\r\n"]}
@@ -1,268 +0,0 @@
1
- import type * as RDF from '@rdfjs/types';
2
- import * as N3 from 'n3';
3
- import rdfParser from 'rdf-parse';
4
- import { fetchFileOrUrl } from './fetchFileOrUrl';
5
- import { ns } from './namespaces';
6
-
7
- /**
8
- * Given a local file, it is parsed and added to an in-memory quad store
9
- * @param fileOrUrl Local path of the input file
10
- * @returns A N3 quad store
11
- */
12
- export async function createN3Store(file: string): Promise<N3.Store> {
13
- const store = new N3.Store();
14
- const buffer = await fetchFileOrUrl(file);
15
- const textStream = require('streamify-string')(buffer.toString());
16
-
17
- return new Promise<N3.Store>((resolve, reject) => {
18
- rdfParser.parse(textStream, { path: file })
19
- .on('data', (quad: RDF.Quad) => store.addQuad(quad))
20
- .on('error', (error: unknown) => reject(error))
21
- .on('end', () => resolve(store));
22
- });
23
- }
24
-
25
- /**
26
- * Find the subject of the statement that matches the given subject, predicate and object
27
- * @param statementSubject The subject to match the statement subject
28
- * @param statementPredicate The predicate to match the statement predicate
29
- * @param statementObject The object to match the statement object
30
- * @param store An N3 quad store
31
- * @returns an RDF.Term or undefined if none found
32
- */
33
- export function getTargetStatementId(
34
- statementSubject: RDF.Term,
35
- statementPredicate: RDF.Term,
36
- statementObject: RDF.Term,
37
- store: N3.Store,
38
- ): RDF.Term | undefined {
39
- const statementIds = store.getSubjects(ns.rdf('type'), ns.rdf('Statement'), null);
40
- const statementSubjectPredicateSubjects = store.getSubjects(ns.rdf('subject'), statementSubject, null);
41
- const statementPredicatePredicateSubjects = store.getSubjects(ns.rdf('predicate'), statementPredicate, null);
42
- const statementObjectPredicateSubjects = store.getSubjects(ns.rdf('object'), statementObject, null);
43
-
44
- const targetIds = statementIds
45
- .filter(x => statementSubjectPredicateSubjects.some(y => y.value === x.value))
46
- .filter(x => statementPredicatePredicateSubjects.some(y => y.value === x.value))
47
- .filter(x => statementObjectPredicateSubjects.some(y => y.value === x.value));
48
-
49
- if (targetIds.length > 1) {
50
- throw new Error(`Found multiple statements with subject "${statementSubject.value}", predicate "${statementPredicate.value}" and object "${statementObject.value}".`);
51
- }
52
-
53
- return targetIds.shift();
54
- }
55
-
56
- /**
57
- * For a given subject, the quad store is queried to find the assigned URI
58
- * @param subject The subject for which the assigned URI is to be retrieved
59
- * @param store The quad store
60
- * @returns An RDF.NamedNode or undefined if not found
61
- */
62
- export function getAssignedUri(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {
63
- return store.getObjects(subject, ns.example('assignedUri'), null).shift();
64
- }
65
-
66
- /**
67
- * Finds the assigned URI in rdf:Statements
68
- * @param subject The statement subject
69
- * @param predicate The statement predicate
70
- * @param object The statement object for which the assigned URI must be found
71
- * @param store A N3 quad store
72
- * @returns An RDF.Term or undefined if not found
73
- */
74
- export function getAssignedUriViaStatements(
75
- subject: RDF.Term,
76
- predicate: RDF.Term,
77
- object: RDF.Term,
78
- store: N3.Store,
79
- ): RDF.Term | undefined {
80
- const statementId = getTargetStatementId(subject, predicate, object, store);
81
-
82
- if (!statementId) {
83
- return undefined;
84
- }
85
-
86
- return getAssignedUri(statementId, store);
87
- }
88
-
89
- /**
90
- * Find all rdfs:labels for a given subject
91
- * @param subject The RDF.Term to find the rdfs:labels for
92
- * @param store A N3 quad store
93
- * @returns An array of RDF.Literals
94
- */
95
- export function getLabels(subject: RDF.Term, store: N3.Store): RDF.Literal[] {
96
- return <RDF.Literal[]>store.getObjects(subject, ns.rdfs('label'), null);
97
- }
98
-
99
- /**
100
- * Finds the rdfs:label whose language tag matches the given language
101
- * @param subject The RDF.Term to find the rdfs:label for
102
- * @param store A N3 quad store
103
- * @param language A language tag
104
- * @returns An RDF.Literal or undefined if not found
105
- */
106
- export function getLabel(subject: RDF.Term, store: N3.Store, language?: string): RDF.Literal | undefined {
107
- return getLabels(subject, store).find(x => x.language === (language || ''));
108
- }
109
-
110
- /**
111
- * Finds the rdfs:label for an RDF.Term in rdf:Statements
112
- * @param subject The statement subject
113
- * @param predicate The statement predicate
114
- * @param object The statement object for which the label must be found
115
- * @param store A N3 quad store
116
- * @param language A language tag
117
- * @returns An RDF.Literal or undefined if not found
118
- */
119
- export function getLabelViaStatements(
120
- subject: RDF.Term,
121
- predicate: RDF.Term,
122
- object: RDF.Term,
123
- store: N3.Store,
124
- language: string,
125
- ): RDF.Literal | undefined {
126
- const statementId = getTargetStatementId(subject, predicate, object, store);
127
-
128
- if (!statementId) {
129
- return undefined;
130
- }
131
-
132
- const label = getLabel(statementId, store, language);
133
- return label || getLabel(statementId, store);
134
- }
135
-
136
- /**
137
- * Find all rdfs:comments for a given subject
138
- * @param subject The RDF.Term to find the rdfs:comments for
139
- * @param store A N3 quad store
140
- * @returns An array of RDF.Literals
141
- */
142
- export function getDefinitions(subject: RDF.Term, store: N3.Store): RDF.Literal[] {
143
- return <RDF.Literal[]>store.getObjects(subject, ns.rdfs('comment'), null);
144
- }
145
-
146
- /**
147
- * Finds the rdfs:comment whose language tag matches the given language
148
- * @param subject The RDF.Term to find the rdfs:comment for
149
- * @param store A N3 quad store
150
- * @param language A language tag
151
- * @returns An RDF.Literal or undefined if not found
152
- */
153
- export function getDefinition(subject: RDF.Term, store: N3.Store, language?: string): RDF.Literal | undefined {
154
- return getDefinitions(subject, store).find(x => x.language === (language || ''));
155
- }
156
-
157
- /**
158
- * Finds the rdfs:comment for an RDF.Term in rdf:Statements
159
- * @param subject The statement subject
160
- * @param predicate The statement predicate
161
- * @param object The statement object for which the definition must be found
162
- * @param store A N3 quad store
163
- * @param language A language tag
164
- * @returns An RDF.Literal or undefined if not found
165
- */
166
- export function getDefinitionViaStatements(
167
- subject: RDF.Term,
168
- predicate: RDF.Term,
169
- object: RDF.Term,
170
- store: N3.Store,
171
- language: string,
172
- ): RDF.Literal | undefined {
173
- const statementId = getTargetStatementId(subject, predicate, object, store);
174
-
175
- if (!statementId) {
176
- return undefined;
177
- }
178
-
179
- const definition = getDefinition(statementId, store, language);
180
- return definition || getDefinition(statementId, store);
181
- }
182
-
183
- /**
184
- * Finds all the rdfs:subClassOf of a given RDF.Term
185
- * @param subject the RDF.Term to find the parents of
186
- * @param store A N3 quad store
187
- * @returns An array of RDF.Terms
188
- */
189
- export function getParentsOfClass(subject: RDF.Term, store: N3.Store): RDF.Term[] {
190
- return store.getObjects(subject, ns.rdfs('subClassOf'), null);
191
- }
192
-
193
- /**
194
- * Finds the rdfs:subPropertyOf of a given RDF.Term
195
- * @param subject The RDF.Term to find the parent of
196
- * @param store A N3 quad store
197
- * @returns An RDF.Term or undefined if not found
198
- */
199
- export function getParentOfProperty(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {
200
- return store.getObjects(subject, ns.rdfs('subPropertyOf'), null).shift();
201
- }
202
-
203
- /**
204
- * Finds the rdfs:range of a given RDF.Term
205
- * @param subject The RDF.Term to find the range of
206
- * @param store A N3 quad store
207
- * @returns An RDF.Term or undefined if not found
208
- */
209
- export function getRange(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {
210
- return store.getObjects(subject, ns.rdfs('range'), null).shift();
211
- }
212
-
213
- /**
214
- * Finds the rdfs:domain of a given RDF.Term
215
- * @param subject The RDF.Term to find the domain of
216
- * @param store A N3 quad store
217
- * @returns An RDF.Term or undefined if not found
218
- */
219
- export function getDomain(subject: RDF.Term, store: N3.Store): RDF.Term | undefined {
220
- return store.getObjects(subject, ns.rdfs('domain'), null).shift();
221
- }
222
-
223
- /**
224
- * Finds all the vann:usageNotes of a given RDF.Term
225
- * @param subject The RDF.Term to find the usage notes for
226
- * @param store A N3 quad store
227
- * @returns An array of RDF.Literals
228
- */
229
- export function getUsageNotes(subject: RDF.Term, store: N3.Store): RDF.Literal[] {
230
- return <RDF.Literal[]>store.getObjects(subject, ns.vann('usageNote'), null);
231
- }
232
-
233
- /**
234
- * Finds the vann:usageNote of which the language tag matches the given language
235
- * @param subject The RDF.Term to find the usage note for
236
- * @param store A N3 quad store
237
- * @param language A language tag
238
- * @returns An RDF.Literal or undefined if not found
239
- */
240
- export function getUsageNote(subject: RDF.Term, store: N3.Store, language?: string): RDF.Literal | undefined {
241
- return getUsageNotes(subject, store).find(x => x.language === (language || ''));
242
- }
243
-
244
- /**
245
- * Finds the vann:usageNote for an RDF.Term in rdf:Statements
246
- * @param subject The statement subject
247
- * @param predicate The statement predicate
248
- * @param object The statement object for which the usage note must be found
249
- * @param store A N3 quad store
250
- * @param language A language tag
251
- * @returns An RDF.Literal or undefined if not found
252
- */
253
- export function getUsageNoteViaStatements(
254
- subject: RDF.Term,
255
- predicate: RDF.Term,
256
- object: RDF.Term,
257
- store: N3.Store,
258
- language: string,
259
- ): RDF.Literal | undefined {
260
- const statementId = getTargetStatementId(subject, predicate, object, store);
261
-
262
- if (!statementId) {
263
- return undefined;
264
- }
265
-
266
- const usageNote = getUsageNote(statementId, store, language);
267
- return usageNote || getUsageNote(statementId, store);
268
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetchFileOrUrl.js","sourceRoot":"","sources":["fetchFileOrUrl.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAgC;AAChC,0CAA6C;AAC7C,4DAA+B;AAExB,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC7D,OAAO,CAAC,MAAM,IAAA,oBAAK,EAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACrC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC9B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtB;IAED,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;KACjE;IAED,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAdD,wCAcC","sourcesContent":["import { existsSync } from 'fs';\r\nimport { readFile, stat } from 'fs/promises';\r\nimport fetch from 'node-fetch';\r\n\r\nexport async function fetchFileOrUrl(file: string): Promise<Buffer> {\r\n if (file.startsWith('http://') || file.startsWith('https://')) {\r\n return (await fetch(file)).buffer();\r\n }\r\n\r\n if (file.startsWith('file://')) {\r\n file = file.slice(7);\r\n }\r\n\r\n if (!existsSync(file) || !(await stat(file)).isFile()) {\r\n throw new Error(`Path does not refer to a valid file: ${file}`);\r\n }\r\n\r\n return readFile(file);\r\n}\r\n"]}
@@ -1,19 +0,0 @@
1
- import { existsSync } from 'fs';
2
- import { readFile, stat } from 'fs/promises';
3
- import fetch from 'node-fetch';
4
-
5
- export async function fetchFileOrUrl(file: string): Promise<Buffer> {
6
- if (file.startsWith('http://') || file.startsWith('https://')) {
7
- return (await fetch(file)).buffer();
8
- }
9
-
10
- if (file.startsWith('file://')) {
11
- file = file.slice(7);
12
- }
13
-
14
- if (!existsSync(file) || !(await stat(file)).isFile()) {
15
- throw new Error(`Path does not refer to a valid file: ${file}`);
16
- }
17
-
18
- return readFile(file);
19
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["namespaces.ts"],"names":[],"mappings":";;;AAAA,uDAA+C;AAE/C,MAAM,OAAO,GAAG,IAAI,8BAAW,EAAE,CAAC;AAElC,yCAAyC;AACzC,IAAK,QAkBJ;AAlBD,WAAK,QAAQ;IACX,2CAA+B,CAAA;IAC/B,+CAAmC,CAAA;IACnC,+CAAmC,CAAA;IACnC,iDAAqC,CAAA;IACrC,+CAAmC,CAAA;IACnC,kDAAsC,CAAA;IACtC,yDAA6C,CAAA;IAC7C,6CAAiC,CAAA;IACjC,+DAAmD,CAAA;IACnD,0DAA8C,CAAA;IAC9C,oDAAwC,CAAA;IACxC,yDAA6C,CAAA;IAC7C,qDAAyC,CAAA;IACzC,mDAAuC,CAAA;IACvC,gDAAoC,CAAA;IACpC,6CAAiC,CAAA;IACjC,+CAAmC,CAAA;AACrC,CAAC,EAlBI,QAAQ,KAAR,QAAQ,QAkBZ;AAOD,MAAM,KAAK,GAAG,GAAc,EAAE;IAC5B,MAAM,UAAU,GAAQ,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC7B,MAAM,SAAS,GAAiB,QAAS,CAAC,MAAM,CAAC,CAAC;QAClD,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;KACnF;IAED,OAAkB,UAAU,CAAC;AAC/B,CAAC,CAAC;AAEW,QAAA,EAAE,GAAG,KAAK,EAAE,CAAC","sourcesContent":["import { DataFactory } from 'rdf-data-factory';\r\n\r\nconst factory = new DataFactory();\r\n\r\n// TODO: remove example.org from prefixes\r\nenum Prefixes {\r\n example = 'http://example.org/',\r\n adms = 'http://www.w3.org/ns/adms#',\r\n dcat = 'http://www.w3.org/ns/dcat#',\r\n dcterms = 'http://purl.org/dc/terms/',\r\n foaf = 'http://xmlns.com/foaf/0.1/',\r\n owl = 'http://www.w3.org/2002/07/owl#',\r\n vlaanderen = 'https://data.vlaanderen.be/ns/',\r\n void = 'http://rdfs.org/ns/void#',\r\n rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\r\n rdfs = 'http://www.w3.org/2000/01/rdf-schema#',\r\n qb = 'http://purl.org/linked-data/cube#',\r\n skos = 'http://www.w3.org/2004/02/skos/core#',\r\n xsd = 'http://www.w3.org/2001/XMLSchema#',\r\n person = 'http://www.w3.org/ns/person#',\r\n vann = 'http://purl.org/vocab/vann/',\r\n shacl = 'http://w3.org/ns/shacl#',\r\n prov = 'http://www.w3.org/ns/prov#'\r\n}\r\n\r\nexport type Namespace = {\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n [T in keyof typeof Prefixes]: Function;\r\n};\r\n\r\nconst vocab = (): Namespace => {\r\n const namespaces: any = {};\r\n for (const prefix in Prefixes) {\r\n const expansion = <string>(<any>Prefixes)[prefix];\r\n namespaces[prefix] = (localName = '') => factory.namedNode(expansion + localName);\r\n }\r\n\r\n return <Namespace>namespaces;\r\n};\r\n\r\nexport const ns = vocab();\r\n"]}
@@ -1,41 +0,0 @@
1
- import { DataFactory } from 'rdf-data-factory';
2
-
3
- const factory = new DataFactory();
4
-
5
- // TODO: remove example.org from prefixes
6
- enum Prefixes {
7
- example = 'http://example.org/',
8
- adms = 'http://www.w3.org/ns/adms#',
9
- dcat = 'http://www.w3.org/ns/dcat#',
10
- dcterms = 'http://purl.org/dc/terms/',
11
- foaf = 'http://xmlns.com/foaf/0.1/',
12
- owl = 'http://www.w3.org/2002/07/owl#',
13
- vlaanderen = 'https://data.vlaanderen.be/ns/',
14
- void = 'http://rdfs.org/ns/void#',
15
- rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
16
- rdfs = 'http://www.w3.org/2000/01/rdf-schema#',
17
- qb = 'http://purl.org/linked-data/cube#',
18
- skos = 'http://www.w3.org/2004/02/skos/core#',
19
- xsd = 'http://www.w3.org/2001/XMLSchema#',
20
- person = 'http://www.w3.org/ns/person#',
21
- vann = 'http://purl.org/vocab/vann/',
22
- shacl = 'http://w3.org/ns/shacl#',
23
- prov = 'http://www.w3.org/ns/prov#'
24
- }
25
-
26
- export type Namespace = {
27
- // eslint-disable-next-line @typescript-eslint/ban-types
28
- [T in keyof typeof Prefixes]: Function;
29
- };
30
-
31
- const vocab = (): Namespace => {
32
- const namespaces: any = {};
33
- for (const prefix in Prefixes) {
34
- const expansion = <string>(<any>Prefixes)[prefix];
35
- namespaces[prefix] = (localName = '') => factory.namedNode(expansion + localName);
36
- }
37
-
38
- return <Namespace>namespaces;
39
- };
40
-
41
- export const ns = vocab();
@@ -1 +0,0 @@
1
- {"version":3,"file":"uniqueId.js","sourceRoot":"","sources":["uniqueId.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAEnC,SAAgB,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAE,EAAU;IAC9D,MAAM,MAAM,GAAG;QACb,IAAI;QACJ,KAAK;QACL,EAAE;KACH,CAAC;IAEF,OAAO,IAAA,kBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnD,CAAC;AARD,4BAQC","sourcesContent":["import { SHA256 } from 'crypto-js';\r\n\r\nexport function uniqueId(guid: string, label: string, id: number): string {\r\n const object = {\r\n guid,\r\n label,\r\n id,\r\n };\r\n\r\n return SHA256(JSON.stringify(object)).toString();\r\n}\r\n"]}
@@ -1,11 +0,0 @@
1
- import { SHA256 } from 'crypto-js';
2
-
3
- export function uniqueId(guid: string, label: string, id: number): string {
4
- const object = {
5
- guid,
6
- label,
7
- id,
8
- };
9
-
10
- return SHA256(JSON.stringify(object)).toString();
11
- }