@signatu/policy
Version:
signatu policy components
472 lines • 16.7 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var common_lib_1 = require("@signatu/common-lib");
var policyElement_1 = require("./policyElement");
var markdown_1 = require("../content/markdown");
var DataProcessingAction;
(function (DataProcessingAction) {
DataProcessingAction["COLLECT"] = "COLLECT";
DataProcessingAction["STORE"] = "STORE";
DataProcessingAction["USE"] = "USE";
DataProcessingAction["TRANSFER"] = "TRANSFER";
DataProcessingAction["PROCESS"] = "PROCESS";
DataProcessingAction["RECORD"] = "RECORD";
DataProcessingAction["ORGANIZE"] = "ORGANIZE";
DataProcessingAction["STRUCTURE"] = "STRUCTURE";
DataProcessingAction["ADAPT"] = "ADAPT";
DataProcessingAction["ALTER"] = "ALTER";
DataProcessingAction["RETRIEVE"] = "RETRIEVE";
DataProcessingAction["CONSULT"] = "CONSULT";
DataProcessingAction["DISCLOSE"] = "DISCLOSE";
DataProcessingAction["ALIGN"] = "ALIGN";
DataProcessingAction["COMBINE"] = "COMBINE";
DataProcessingAction["RESTRICT"] = "RESTRICT";
DataProcessingAction["ERASE"] = "ERASE";
DataProcessingAction["DESTRUCT"] = "DESTRUCT";
DataProcessingAction["PROFILE"] = "PROFILE";
})(DataProcessingAction = exports.DataProcessingAction || (exports.DataProcessingAction = {}));
var NORWEGIAN = {
controller: "vi",
subject: "din",
to: "for å",
in: "i",
actions: {
COLLECT: 'samler inn',
STORE: 'lagrer',
USE: 'bruker',
TRANSFER: 'overfører',
PROCESS: 'behandler',
RECORD: 'registrerer',
ORGANIZE: 'organiserer',
STRUCTURE: 'strukturerer',
ADAPT: 'tilpasser',
ALTER: 'endrer',
RETRIEVE: 'gjenfinner',
CONSULT: 'konsulterer',
DISCLOSE: 'viser',
ALIGN: 'sammenstiller',
COMBINE: 'kombinerer',
RESTRICT: 'begrenser',
ERASE: 'sletter',
DESTRUCT: 'ødelegger',
PROFILE: 'profilerer'
}
};
var NORWEGIAN_NYNORSK = {
controller: "vi",
subject: "din",
to: "for å",
in: "i",
actions: {
COLLECT: 'samlar inn',
STORE: 'lagrar',
USE: 'brukar',
TRANSFER: 'overfører',
PROCESS: 'behandlar',
RECORD: 'registrerer',
ORGANIZE: 'organiserer',
STRUCTURE: 'strukturerer',
ADAPT: 'tilpassar',
ALTER: 'endrar',
RETRIEVE: 'finn att',
CONSULT: 'konsulterer',
DISCLOSE: 'viser',
ALIGN: 'samanstiller',
COMBINE: 'kombinerer',
RESTRICT: 'avgrensar',
ERASE: 'slettar',
DESTRUCT: 'øydelegg',
PROFILE: 'profilerer'
}
};
exports.TRANSLATIONS = {
en: {
controller: "we",
subject: "your",
in: "in",
to: "to",
actions: {
COLLECT: 'collect',
STORE: 'store',
USE: 'use',
TRANSFER: 'transfer',
PROCESS: 'process',
RECORD: 'record',
ORGANIZE: 'organize',
STRUCTURE: 'structure',
ADAPT: 'adapt',
ALTER: 'alter',
RETRIEVE: 'retrieve',
CONSULT: 'consult',
DISCLOSE: 'disclose',
ALIGN: 'align',
COMBINE: 'combine',
RESTRICT: 'restrict',
ERASE: 'erase',
DESTRUCT: 'destruct',
PROFILE: 'profile'
}
},
de: {
controller: "Wir",
subject: "Ihre",
in: "in",
to: "zu",
actions: {
COLLECT: 'erheben',
STORE: 'speichern',
USE: 'nutzen',
TRANSFER: 'übertragen',
PROCESS: 'verarbeiten',
RECORD: 'erfassen',
ORGANIZE: 'organisieren',
STRUCTURE: 'strukturieren',
ADAPT: 'anpassen',
ALTER: 'verändern',
RETRIEVE: 'wiederherstellen',
CONSULT: 'konsultieren',
DISCLOSE: 'offenlegen',
ALIGN: 'angleichen',
COMBINE: 'verbinden',
RESTRICT: 'beschränken',
ERASE: 'löschen',
DESTRUCT: 'zerstören',
PROFILE: 'analysieren'
}
},
ru: {
controller: "Мы",
subject: "ваш(и)",
to: ", чтобы",
in: "в",
actions: {
COLLECT: 'собираем',
STORE: 'храним',
USE: 'используем',
TRANSFER: 'передаем',
PROCESS: 'обрабатываем',
RECORD: 'записываем',
ORGANIZE: 'организуем',
STRUCTURE: 'структурируем',
ADAPT: 'адаптируем',
ALTER: 'изменяем',
RETRIEVE: 'извлекаем',
CONSULT: 'просматриваем',
DISCLOSE: 'раскрываем',
ALIGN: 'сопоставляем',
COMBINE: 'комбинируем',
RESTRICT: 'сокращаем',
ERASE: 'удаляем',
DESTRUCT: 'уничтожаем',
PROFILE: 'профилируем'
}
},
es: {
controller: "Nosotros",
subject: "sus",
to: "a",
in: "en",
actions: {
COLLECT: 'recoger',
STORE: 'conservar',
USE: 'utilizar',
TRANSFER: 'comunicar por transmisión',
PROCESS: 'tratar',
RECORD: 'registrar',
ORGANIZE: 'organizar',
STRUCTURE: 'estructurar',
ADAPT: 'adaptar',
ALTER: 'modificar',
RETRIEVE: 'extraer',
CONSULT: 'consultar',
DISCLOSE: 'difundir',
ALIGN: 'cotejar',
COMBINE: 'combinar',
RESTRICT: 'limitar',
ERASE: 'sumprimir',
DESTRUCT: 'destruir',
PROFILE: 'elaborar perfiles'
}
},
fr: {
controller: "Nous",
subject: "vos",
in: "pour",
to: "pour",
actions: {
COLLECT: 'collectons',
STORE: 'conservons',
USE: 'utilisons',
TRANSFER: 'transférons',
PROCESS: 'traitons',
RECORD: 'enregistrons',
ORGANIZE: 'organisons',
STRUCTURE: 'structurons',
ADAPT: 'adaptons',
ALTER: 'modifions',
RETRIEVE: 'extrayons',
CONSULT: 'consultons',
DISCLOSE: 'communiquons',
ALIGN: 'rapprochons',
COMBINE: 'interconnectons',
RESTRICT: 'limitons',
ERASE: 'effaçons',
DESTRUCT: 'détruisons',
PROFILE: 'profilons'
}
},
no: NORWEGIAN,
nb: NORWEGIAN,
nn: NORWEGIAN_NYNORSK,
ro: {
controller: "noi",
subject: "dvs.",
to: "pentru",
in: "în",
actions: {
COLLECT: "colectăm",
STORE: "stocăm",
USE: "utilizăm",
TRANSFER: "transferăm",
PROCESS: "procesăm",
RECORD: "înregistrăm",
ORGANIZE: "organizăm",
STRUCTURE: "structurăm",
ADAPT: "adaptăm",
ALTER: "modificăm",
RETRIEVE: "recuperăm",
CONSULT: "consultăm",
DISCLOSE: "dezvăluim",
ALIGN: "aliniem",
COMBINE: "combinăm",
RESTRICT: "restricționăm",
ERASE: "ștergem",
DESTRUCT: "distrugem",
PROFILE: "profilăm",
}
},
it: {
/** TODO: NEED to complete this */
controller: "Noi",
subject: "il",
to: "per",
in: "in",
actions: {
COLLECT: "raccogliamo",
STORE: "conserviamo",
USE: "utilizziamo",
TRANSFER: "trasferiamo",
PROCESS: "trattiamo",
RECORD: "registriamo",
ORGANIZE: "organizziamo",
STRUCTURE: "strutturiamo",
ADAPT: "adattiamo",
ALTER: "modifichiamo",
RETRIEVE: "recuperiamo",
CONSULT: "consultiamo",
DISCLOSE: "divulghiamo",
ALIGN: "allineiamo",
COMBINE: "combiniamo",
RESTRICT: "limitiamo",
ERASE: "eliminiamo",
DESTRUCT: "distruggiamo",
PROFILE: "profiliamo"
}
},
tr: {
/** TODO: NEED to complete this */
controller: "biz",
subject: "için",
to: "kapsamında",
in: "sizin",
actions: {
COLLECT: "NOT_TRANSLATED",
STORE: "NOT_TRANSLATED",
USE: "NOT_TRANSLATED",
TRANSFER: "NOT_TRANSLATED",
PROCESS: "NOT_TRANSLATED",
RECORD: "NOT_TRANSLATED",
ORGANIZE: "NOT_TRANSLATED",
STRUCTURE: "NOT_TRANSLATED",
ADAPT: "NOT_TRANSLATED",
ALTER: "NOT_TRANSLATED",
RETRIEVE: "NOT_TRANSLATED",
CONSULT: "NOT_TRANSLATED",
DISCLOSE: "NOT_TRANSLATED",
ALIGN: "NOT_TRANSLATED",
COMBINE: "NOT_TRANSLATED",
RESTRICT: "NOT_TRANSLATED",
ERASE: "NOT_TRANSLATED",
DESTRUCT: "NOT_TRANSLATED",
PROFILE: "NOT_TRANSLATED"
}
},
pt: {
controller: "Nós",
subject: "teus",
to: "para",
in: "em",
actions: {
COLLECT: "recolher",
STORE: "guardar",
USE: "usar",
TRANSFER: "transferir",
PROCESS: "tratar",
RECORD: "gravar",
ORGANIZE: "organizar",
STRUCTURE: "estruturar",
ADAPT: "adaptar",
ALTER: "alterar",
RETRIEVE: "recuperar",
CONSULT: "consultar",
DISCLOSE: "divulgar",
ALIGN: "alinhar",
COMBINE: "combinar",
RESTRICT: "restringir",
ERASE: "apagar",
DESTRUCT: "destruir",
PROFILE: "perfilar"
}
}
};
var supportsIsoLanguage = function (isoLanguage) {
return typeof exports.TRANSLATIONS[isoLanguage] === 'object';
};
var supportsLanguage = function (language) {
return language ? supportsIsoLanguage(language.isoLanguage) : false;
};
var getTranslation = function (language) {
if (!language) {
throw new Error("DataProcessing: language is not defined");
}
if (!supportsLanguage(language)) {
throw new Error("DataProcessing: language " + language.isoLanguage + " is not supported");
}
return exports.TRANSLATIONS[language.isoLanguage];
};
var PolicyDataProcessing = /** @class */ (function (_super) {
__extends(PolicyDataProcessing, _super);
function PolicyDataProcessing(action, data, purpose, location, sensitive, consentTarget, legalBasis) {
var _this = _super.call(this, policyElement_1.PolicyElementType.PolicyDataProcessing) || this;
_this.action = action;
_this.data = data;
_this.purpose = purpose;
_this.location = location;
_this.sensitive = sensitive;
_this.consentTarget = consentTarget;
_this.legalBasis = legalBasis;
/**
* If the purpose is markdown, we need to clean it up, specifically
* add a newline if it is a bullet list
*/
_this.purpose = markdown_1.MarkdownContent.clean(purpose);
return _this;
}
Object.defineProperty(PolicyDataProcessing, "supportedActions", {
get: function () {
return Object.keys(DataProcessingAction).map(function (key) { return DataProcessingAction[key]; });
},
enumerable: true,
configurable: true
});
Object.defineProperty(PolicyDataProcessing.prototype, "masterText", {
/** masterText is in English */
get: function () {
var locationText = this.location ? "in " + this.location.name + " " : "";
var text = "We " + exports.TRANSLATIONS['en'].actions[this.action] + " " + this.data + " " + locationText + "to " + this.purpose + ".";
return text;
},
enumerable: true,
configurable: true
});
PolicyDataProcessing.supportsLanguage = function (language) {
return language ? PolicyDataProcessing.supportsIsoLanguage(language.isoLanguage) : false;
};
PolicyDataProcessing.supportsIsoLanguage = function (isoLanguage) {
return typeof exports.TRANSLATIONS[isoLanguage] === 'object';
};
PolicyDataProcessing.fromJSON = function (json) {
// We don't need the PolicyDataProcessing
var dp = new PolicyDataProcessing(json.action, json.data, json.purpose, json.location ? common_lib_1.Location.fromJSON(json.location) : undefined, json.sensitive, json.consentTarget, json.legalBasis);
/** @todo this is error prone and cumbersome. */
dp.ref = json.ref;
return dp;
};
PolicyDataProcessing.prototype.controllerText = function (lang) {
var language = this.toLanguage(lang);
var translation = getTranslation(language);
return translation.controller;
};
PolicyDataProcessing.prototype.subjectText = function (lang) {
var language = this.toLanguage(lang);
var translation = getTranslation(language);
return translation.subject;
};
PolicyDataProcessing.prototype.purposeText = function (lang) {
var language = this.toLanguage(lang);
var translation = getTranslation(language);
return translation.to;
};
PolicyDataProcessing.prototype.actionText = function (lang) {
var language = this.toLanguage(lang);
var translation = getTranslation(language);
var action = (this.action || "").toUpperCase();
return translation.actions[action];
};
PolicyDataProcessing.prototype.locationText = function (lang) {
var language = this.toLanguage(lang);
var preposition = exports.TRANSLATIONS[language.isoLanguage].in;
return this.location ? preposition + " " + this.location.localName(language) + " " : "";
};
PolicyDataProcessing.prototype.createText = function (lang) {
var language = this.toLanguage(lang);
var text = getTranslation(language);
var locationText = this.locationText(language);
var sentence = text.controller + " " + text.actions[this.action] + " " + this.data + " " + locationText + text.to + " " + this.purpose;
/** If sentence ends with a newline don't add a period */
sentence = sentence.endsWith("\n") ? sentence : sentence + ".";
return sentence.charAt(0).toUpperCase() + sentence.slice(1);
};
// TODO: This is just the properties - do we need to mirror into a separate interface?
PolicyDataProcessing.prototype.toJSON = function () {
/** Serialize to english verbs */
var json = __assign({}, _super.prototype.toJSON.call(this), { action: this.action, data: this.data, purpose: this.purpose, consentTarget: this.consentTarget, sensitive: this.sensitive, legalBasis: this.legalBasis });
if (this.location) {
json['location'] = this.location.toJSON();
}
return json;
};
PolicyDataProcessing.prototype.toLanguage = function (lang) {
if (typeof lang === 'string') {
return new common_lib_1.Language(lang);
}
return lang;
};
return PolicyDataProcessing;
}(policyElement_1.PolicyElement));
exports.PolicyDataProcessing = PolicyDataProcessing;
//# sourceMappingURL=policyDataProcessing.js.map