Skip to content

Commit 3f33481

Browse files
committed
feat: reworked ts package
1 parent 7ad6839 commit 3f33481

File tree

8 files changed

+66
-183
lines changed

8 files changed

+66
-183
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
*.DS_Store
33
**/node_modules
44
.idea
5-
reader/ts/src/*.js
5+
reader/ts/src/*.js
6+
reader/ts/build

reader/ts/index.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

reader/ts/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { Definition } from './src/parser.js';
2+
export type { Feature, MetaType, Meta } from './src/types.js';

reader/ts/package.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22
"name": "@code0-tech/definition-reader",
33
"version": "0.0.0",
44
"description": "Reader for Code0-Definitions",
5-
"main": "index.js",
6-
"types": "index.d.ts",
5+
"main": "./build/index.js",
6+
"types": "./build/index.d.ts",
7+
"exports": {
8+
".": {
9+
"import": "./build/index.js",
10+
"types": "./build/index.d.ts"
11+
}
12+
},
713
"type": "module",
814
"scripts": {
915
"build": "tsc"
@@ -20,10 +26,7 @@
2026
"url": "git+https://github.com/code0-tech/code0-definitions.git"
2127
},
2228
"files": [
23-
"src",
24-
"index.d.ts",
25-
"index.js",
26-
"package.json"
29+
"build"
2730
],
2831
"publishConfig": {
2932
"access": "public"

reader/ts/src/parser.ts

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import {Reader} from './reader';
1+
import {Reader} from './reader.js';
22
import {DataType, FlowType, RuntimeFunctionDefinition} from "@code0-tech/sagittarius-graphql-types";
3-
import {Feature, Meta, MetaType} from "../index";
3+
import {Feature, Meta, MetaType} from "./types.js";
44

55
export const Definition = (rootPath: string): Feature[] => {
66
const meta = Reader(rootPath);
@@ -28,27 +28,26 @@ export const Definition = (rootPath: string): Feature[] => {
2828
}
2929

3030
function appendMeta(feature: Feature, meta: Meta): void {
31-
for (const definition of meta.data) {
32-
try {
33-
switch (meta.type) {
34-
case MetaType.DataType: {
35-
const parsed = JSON.parse(definition) as DataType;
36-
feature.dataTypes.push(parsed);
37-
break;
38-
}
39-
case MetaType.FlowType: {
40-
const parsed = JSON.parse(definition) as FlowType;
41-
feature.flowTypes.push(parsed);
42-
break;
43-
}
44-
case MetaType.RuntimeFunction: {
45-
const parsed = JSON.parse(definition) as RuntimeFunctionDefinition;
46-
feature.runtimeFunctions.push(parsed);
47-
break;
48-
}
31+
const definition = meta.data;
32+
try {
33+
switch (meta.type) {
34+
case MetaType.DataType: {
35+
const parsed = JSON.parse(definition) as DataType;
36+
feature.dataTypes.push(parsed);
37+
break;
38+
}
39+
case MetaType.FlowType: {
40+
const parsed = JSON.parse(definition) as FlowType;
41+
feature.flowTypes.push(parsed);
42+
break;
43+
}
44+
case MetaType.RuntimeFunction: {
45+
const parsed = JSON.parse(definition) as RuntimeFunctionDefinition;
46+
feature.runtimeFunctions.push(parsed);
47+
break;
4948
}
50-
} catch (err: any) {
51-
console.error(`Error parsing ${meta.type} ${meta.name}:`, err);
5249
}
50+
} catch (err: any) {
51+
console.error(`Error parsing ${meta.type} ${meta.name} ${definition}:`, err);
5352
}
5453
}

reader/ts/src/reader.ts

Lines changed: 20 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as fs from 'fs';
22
import * as path from 'path';
3-
import {Meta, MetaType} from "../index";
3+
import {Meta, MetaType} from "./types.js";
44

55
export const Reader = (rootPath: string): Meta[] => {
66
const result: Meta[] = [];
@@ -29,17 +29,30 @@ export const Reader = (rootPath: string): Meta[] => {
2929
const defPath = path.join(typePath, def.name);
3030

3131
if (def.isFile()) {
32-
const meta = MetaReader(featureName, metaType, defPath);
33-
if (meta) result.push(meta);
32+
if (!defPath.endsWith('.json')) continue;
33+
try {
34+
const content = fs.readFileSync(defPath, 'utf-8');
35+
const meta: Meta = {name: featureName, type: metaType, data: content};
36+
result.push(meta);
37+
} catch (err) {
38+
console.error(`Error reading file: ${defPath}`, err);
39+
}
3440
} else if (def.isDirectory()) {
35-
const subDefinitions = fs.readdirSync(defPath, { withFileTypes: true });
41+
const subDefinitions = fs.readdirSync(defPath, { withFileTypes: true });
3642

3743
for (const subDef of subDefinitions) {
3844
const subPath = path.join(defPath, subDef.name);
39-
if (!subDef.isFile()) continue;
4045

41-
const meta = MetaReader(featureName, metaType, subPath);
42-
if (meta) result.push(meta);
46+
if (!subPath.endsWith('.json')) continue;
47+
if (!subDef.isFile()) continue;
48+
49+
try {
50+
const content = fs.readFileSync(subPath, 'utf-8');
51+
const meta: Meta = {name: featureName, type: metaType, data: content};
52+
result.push(meta);
53+
} catch (err) {
54+
console.error(`Error reading file: ${subPath}`, err);
55+
}
4356
}
4457
}
4558
}
@@ -53,40 +66,6 @@ export const Reader = (rootPath: string): Meta[] => {
5366
}
5467
}
5568

56-
const MetaReader = (name: string, type: MetaType, filePath: string): Meta | null => {
57-
let content: string;
58-
59-
try {
60-
content = fs.readFileSync(filePath, 'utf-8');
61-
} catch (err) {
62-
console.error(`Error reading file: ${filePath}`, err);
63-
return null;
64-
}
65-
66-
const lines = content.split('\n');
67-
let insideCode = false;
68-
const currentBlock: string[] = [];
69-
const codeSnippets: string[] = [];
70-
71-
for (const line of lines) {
72-
if (line.includes('```')) {
73-
insideCode = !insideCode;
74-
75-
if (!insideCode) {
76-
codeSnippets.push(currentBlock.join(' '));
77-
currentBlock.length = 0;
78-
}
79-
continue;
80-
}
81-
82-
if (insideCode) {
83-
currentBlock.push(line);
84-
}
85-
}
86-
87-
return { name, type, data: codeSnippets };
88-
}
89-
9069
function matchMetaType(name: string): MetaType | null {
9170
switch (name) {
9271
case 'flow_type':

reader/ts/index.d.ts renamed to reader/ts/src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export enum MetaType {
99
export interface Meta {
1010
name: string;
1111
type: MetaType;
12-
data: string[];
12+
data: string;
1313
}
1414

1515
export interface Feature {

reader/ts/tsconfig.json

Lines changed: 11 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,15 @@
11
{
2+
"exclude": ["node_modules", "build"],
23
"compilerOptions": {
3-
/* Visit https://aka.ms/tsconfig to read more about this file */
4-
5-
/* Projects */
6-
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7-
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8-
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9-
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10-
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11-
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12-
13-
/* Language and Environment */
14-
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15-
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16-
// "jsx": "preserve", /* Specify what JSX code is generated. */
17-
// "libReplacement": true, /* Enable lib replacement. */
18-
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
19-
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
20-
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
21-
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
22-
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
23-
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
24-
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
25-
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
26-
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
27-
28-
/* Modules */
29-
"module": "commonjs", /* Specify what module code is generated. */
30-
// "rootDir": "./", /* Specify the root folder within your source files. */
31-
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
32-
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
33-
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
34-
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
35-
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
36-
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
37-
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
38-
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
39-
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
40-
// "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */
41-
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
42-
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
43-
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
44-
// "noUncheckedSideEffectImports": true, /* Check side effect imports. */
45-
// "resolveJsonModule": true, /* Enable importing .json files. */
46-
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
47-
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
48-
49-
/* JavaScript Support */
50-
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
51-
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
52-
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
53-
54-
/* Emit */
55-
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
56-
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
57-
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
58-
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
59-
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
60-
// "noEmit": true, /* Disable emitting files from a compilation. */
61-
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
62-
// "outDir": "./", /* Specify an output folder for all emitted files. */
63-
// "removeComments": true, /* Disable emitting comments. */
64-
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
65-
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
66-
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
67-
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
68-
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
69-
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
70-
// "newLine": "crlf", /* Set the newline character for emitting files. */
71-
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
72-
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
73-
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
74-
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
75-
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
76-
77-
/* Interop Constraints */
78-
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
79-
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
80-
// "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */
81-
// "erasableSyntaxOnly": true, /* Do not allow runtime constructs that are not part of ECMAScript. */
82-
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
83-
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
84-
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
85-
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
86-
87-
/* Type Checking */
88-
"strict": true, /* Enable all strict type-checking options. */
89-
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
90-
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
91-
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
92-
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
93-
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
94-
// "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */
95-
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
96-
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
97-
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
98-
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
99-
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
100-
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
101-
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
102-
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
103-
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
104-
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
105-
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
106-
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
107-
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
108-
109-
/* Completeness */
110-
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
111-
"skipLibCheck": true /* Skip type checking all .d.ts files. */
4+
"lib": ["ESNext"],
5+
"module": "NodeNext",
6+
"target": "ESNext",
7+
"moduleDetection": "force",
8+
"outDir": "build",
9+
"skipLibCheck": true,
10+
"strict": true,
11+
"moduleResolution": "nodenext",
12+
"declaration": true,
13+
"emitDeclarationOnly": false
11214
}
11315
}

0 commit comments

Comments
 (0)