UNPKG

@signatu/policy

Version:
472 lines 16.7 kB
"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