提交 b9488b72 编写于 作者: K kieferrm 提交者: Kai Maetzel

remove unused files

上级 c20e7f6b
Snippets defined for GDPR classification:
```json
{
"gdprCommonProperty": {
"prefix": "gdprcommon",
"body": [
"// __GDPR__COMMON__ \"common.${1:propertyName}\" : { \"endPoint\": \"${2|none,SqmUserId,SqmMachineId|}\", \"classification\": \"${3|SystemMetaData,CustomerContent,EndUserPseudonymizedInformation|}\", \"purpose\": \"${4|FeatureInsight,PerformanceAndHealth,BusinessInsight,SecurityAndAuditing|}\" }\n"
],
"description": "GDPR - declare a common property"
},
"gdprProperty": {
"prefix": "gdprproperty",
"body": [
"\"${1:propertyName}\": { \"endPoint\": \"${3|none,SqmUserId,SqmMachineId|}\", \"classification\": \"${4|SystemMetaData,CustomerContent,EndUserPseudonymizedInformation,PublicPersonalData,PublicNonPersonalData|}\", \"purpose\": \"${5|FeatureInsight,PerformanceAndHealth,BusinessInsight,SecurityAndAuditing|}\" }$2$0"
],
"description": "GDPR - declare a property"
},
"gdprInclude": {
"prefix": "gdprinclude",
"body": [
"\"\\${include}\": [",
" \"\\${${1:FragmentName}}\"$0",
"]"
],
"description": "GDPR - include fragments"
},
"gdprIncludeFragment": {
"prefix": "gdprincludefragment",
"body": [
"\"\\${${1:FragmentName}}\"$0"
],
"description": "GDPR - include a fragment"
},
"gdprEvent": {
"prefix": "gdprevent",
"body": [
"/* __GDPR__",
" \"${1:eventName}\" : {",
" \"${2:propertyName}\" : { \"endPoint\": \"${4|none,SqmUserId,SqmMachineId|}\", \"classification\": \"${5|SystemMetaData,CustomerContent,EndUserPseudonymizedInformation,PublicPersonalData,PublicNonPersonalData|}\", \"purpose\": \"${6|FeatureInsight,PerformanceAndHealth,BusinessInsight,SecurityAndAuditing|}\" }$3$0",
" }",
" */\n"
],
"description": "GDPR - declare an event"
},
"gdprFragment": {
"prefix": "gdprinclude",
"body": [
"/* __GDPR__FRAGMENT__",
" \"${1:fragmentName}\" : {",
" \"${2:propertyName}\" : { \"endPoint\": \"${4|none,SqmUserId,SqmMachineId|}\", \"classification\": \"${5|SystemMetaData,CustomerContent,EndUserPseudonymizedInformation,PublicPersonalData,PublicNonPersonalData|}\", \"purpose\": \"${6|FeatureInsight,PerformanceAndHealth,BusinessInsight,SecurityAndAuditing|}\" }$3$0",
" }",
" */\n"
],
"description": "GDPR - declare a fragment"
}
}
```
Keybindings defined for GDPR snippets:
```json
[
{
"key": "ctrl+9",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprCommonProperty"
}
},
{
"key": "ctrl+8 ctrl+8",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprFragment"
}
},
{
"key": "ctrl+0 ctrl+8",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprInclude"
}
},
{
"key": "ctrl+0 ctrl+7",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprIncludeFragment"
}
},
{
"key": "ctrl+0 ctrl+0",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprEvent"
}
},
{
"key": "ctrl+0 ctrl+9",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprProperty"
}
},
{
"key": "ctrl+8 ctrl+9",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "typescript",
"name": "gdprProperty"
}
}
]
```
\ No newline at end of file
'use strict';
const path = require('path');
const cp = require('child_process');
const fs = require('fs');
const WORKSPACE_ROOT = path.join(__dirname, '..');
function getCommonProperties() {
const cmd = `rg --files-with-matches --glob "*.ts" --regexp "//\\s*__GDPR__COMMON__"`;
let filePaths = cp.execSync(cmd, { cwd: WORKSPACE_ROOT, encoding: 'ascii' });
filePaths = filePaths.split(/(?:\r\n|\r|\n)/g);
let commonPropertyDeclarations = [];
filePaths.forEach(filePath => {
if (filePath) {
const cwdRelativePath = path.join(__dirname, `../${filePath}`);
const fileContents = fs.readFileSync(cwdRelativePath, { encoding: 'utf8' });
const commonPropertyMatcher = /\/\/\s*__GDPR__COMMON__(.*)$/mg;
let m;
while (m = commonPropertyMatcher.exec(fileContents)) {
commonPropertyDeclarations.push(m[1]);
}
}
}, this);
const jsonString = `{ ${commonPropertyDeclarations.join(',')} }`;
return JSON.parse(jsonString);
}
function addCommonProperties(events, commonProperties) {
for (let e in events) {
if (events.hasOwnProperty(e)) {
let event = events[e];
for (let p in commonProperties) {
event[p] = commonProperties[p];
}
}
}
return events;
}
function mergeFragment(target, source) {
for (let p in source) {
if (source.hasOwnProperty(p)) {
if (typeof target[p] === 'object' && typeof source[p] === 'object') {
mergeFragment(target[p], source[p]);
} else {
target[p] = source[p];
}
}
}
}
function getFragments() {
const cmd = `rg --files-with-matches --glob "*.ts" --regexp "/\*\\s*__GDPR__FRAGMENT__"`;
let filePaths = cp.execSync(cmd, { cwd: WORKSPACE_ROOT, encoding: 'ascii' });
filePaths = filePaths.split(/(?:\r\n|\r|\n)/g);
let fragmentDeclarations = {};
filePaths.forEach(filePath => {
if (filePath) {
const cwdRelativePath = path.join(__dirname, `../${filePath}`);
const fileContents = fs.readFileSync(cwdRelativePath, { encoding: 'utf8' });
const fragmentMatcher = /\/\*\s*__GDPR__FRAGMENT__([^/]*)*\*\//mg;
let m;
while (m = fragmentMatcher.exec(fileContents)) {
let jsonString = `{ ${m[1]} }`;
let fragment = JSON.parse(jsonString);
mergeFragment(fragmentDeclarations, fragment);
}
}
}, this);
return fragmentDeclarations;
}
function getEvents() {
const cmd = `rg --files-with-matches --glob "*.ts" --regexp "/\*\\s*__GDPR__\\b"`;
let filePaths = cp.execSync(cmd, { cwd: WORKSPACE_ROOT, encoding: 'ascii' });
filePaths = filePaths.split(/(?:\r\n|\r|\n)/g);
let fragmentDeclarations = [];
filePaths.forEach(filePath => {
if (filePath) {
const cwdRelativePath = path.join(__dirname, `../${filePath}`);
const fileContents = fs.readFileSync(cwdRelativePath, { encoding: 'utf8' });
const fragmentMatcher = /\/\*\s*__GDPR__\b([^/]*)*\*\//mg;
let m;
while (m = fragmentMatcher.exec(fileContents)) {
fragmentDeclarations.push(m[1]);
}
}
}, this);
const jsonString = `{ ${fragmentDeclarations.join(',')} }`;
return JSON.parse(jsonString);
}
const referenceMatcher = /\${(.*)}/;
function getReferenceName(reference) {
const match = reference.match(referenceMatcher);
return match ? match[1] : null;
}
function resolveIncludes(target, fragments) {
let includeClause = target['${include}'];
if (includeClause) {
let remainingIncludes = [];
for (let reference of includeClause) {
const referenceName = getReferenceName(reference);
if (referenceName) {
let fragment = fragments[referenceName];
if (fragment) {
mergeFragment(target, fragment);
} else {
remainingIncludes.push(reference);
}
}
}
if (remainingIncludes.length === 0) {
delete target['${include}'];
} else {
target['${include}'] = remainingIncludes;
}
}
for (let p in target) {
if (target.hasOwnProperty(p) && typeof target[p] === 'object') {
resolveIncludes(target[p], fragments);
}
}
return target;
}
let fragments = getFragments();
fragments = resolveIncludes(fragments, fragments);
let commonProperties = getCommonProperties();
let events = resolveIncludes(getEvents(), fragments);
events = addCommonProperties(events, commonProperties);
console.log(events);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册